如果我的区块链上有ERC20合同,并且用户希望像以下情况一样购买令牌:
- 用户给他们要购买的令牌数量
- 将弹出一个信息框,以显示用户将支付多少以太和剩余的余额
- 一旦确认,应显示平衡的令牌量
要获得令牌,我必须在看起来像这样的智能合约中调用一种方法。obtainTok(BigInteger weiValue)
使用Web3J?
在这种情况下计算Weivalue的公式是什么编辑由于没有用于库的Javadocs,因此作为初学者,参数并不清楚。
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答案对Web3J是正确的。如果您尝试在Web3J中执行此操作,则将使用org.web3j.utils.toWei(valueInEther, Unit.ETHER);
,其中valueInEther
是String
或BigDecimal
。
为了扩展答案,您通常不会将以太作为智能合约作为obtainTok()
参数。您将作为事务对象的一部分发送进来,并在与msg.value
(在WEI中(中读取它。