1

如果我的区块链上有 ERC20 合约,并且用户想要购买代币,如下所示:

  1. 用户给出他们想要购买的代币数量
  2. 将弹出一个信息框,向用户显示他们将支付多少以太币以及剩余余额
  3. 确认后,应显示余额中的代币数量

要获得代币,我必须调用智能合约中的一个方法,如下所示。obtainTok(BigInteger weiValue)

在这种情况下使用 web3j 计算 weiValue 的公式是什么?

编辑 由于该库没有Javadocs,因此对于初学者来说,参数并不是很清楚。

ethGetBalance(String address, DefaultBlockParameter defaultBlockParameter)

这里的地址是代表钱包地址还是用户地址?

4

2 回答 2

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

于 2018-04-03T14:47:04.937 回答
1

@ReyHaynes 的答案对于 web3js 是正确的。如果您尝试在 web3j 中执行此操作,您将使用org.web3j.utils.toWei(valueInEther, Unit.ETHER);where valueInEtheris aStringBigDecimal

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

于 2018-04-03T17:00:13.657 回答