Web3j:购买代币

时间:2018-04-03 13:39:19

标签: blockchain ethereum web3-java

如果我的区块链上有ERC20合约,并且用户想要购买代币,请参阅以下情况:

  1. 用户提供他们想要购买的代币数量
  2. 将弹出一个信息框,向用户显示他们将支付多少以太费和剩余余额
  3. 确认后,应显示余额中的代币数量
  4. 要获得令牌,我必须在智能合约中调用一个方法,如下所示。 obtainTok(BigInteger weiValue)

    使用web3j计算此场景中weiValue的公式是什么?

    修改 由于库中没有Javadoc,因此作为初学者,参数对我来说并不是很清楚。

    ethGetBalance(String address, DefaultBlockParameter defaultBlockParameter)
    

    此处的地址是否代表钱包地址或用户地址?

2 个答案:

答案 0 :(得分:2)

Web3有一个名为toWei()的实用程序函数,您可以使用它来转换任何单位。

web3.utils.toWei(number [, unit])

在你的情况下:

web3.utils.toWei(ETHER_VALUE, 'ether')

文档中的更多信息:https://web3js.readthedocs.io/en/1.0/web3-utils.html#towei

答案 1 :(得分:1)

@ReyHaynes对web3js的回答是正确的。如果您尝试在web3j中执行此操作,则可以使用org.web3j.utils.toWei(valueInEther, Unit.ETHER); valueInEtherStringBigDecimal

要扩展答案,您通常不会将以太币作为obtainTok()的参数发送给您的智能合约。您可以将其作为交易对象的一部分发送,并在msg.value(位于Wei)的智能合约中阅读。