Web3j:购买代币

Web3j: buying a token

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

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

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

这个场景下使用web3j计算weiValue的公式是什么?

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

ethGetBalance(String address, DefaultBlockParameter defaultBlockParameter)

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

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

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

你的情况:

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

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

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

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