如果我的区块链上有ERC20合约,并且用户想要购买代币,请参阅以下情况:
要获得令牌,我必须在智能合约中调用一个方法,如下所示。 obtainTok(BigInteger weiValue)
使用web3j计算此场景中weiValue的公式是什么?
修改 由于库中没有Javadoc,因此作为初学者,参数对我来说并不是很清楚。
ethGetBalance(String address, DefaultBlockParameter defaultBlockParameter)
此处的地址是否代表钱包地址或用户地址?
答案 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);
valueInEther
为String
或BigDecimal
。
要扩展答案,您通常不会将以太币作为obtainTok()
的参数发送给您的智能合约。您可以将其作为交易对象的一部分发送,并在msg.value
(位于Wei)的智能合约中阅读。