我正在建立一个共享钱包合同作为一个项目。当我开始在react应用程序的前端工作时,我遇到了javascript无法存储大量数字的问题。当调用我的实体函数时,我想不出如何将大的数字作为输入传递,所以我决定简单地将我的值存储在以太中,并在solidity中进行转换。
例:( toWei设置为1e18)
function UpdateAllowance(address _user, uint _amount) internal onlyOwner Permissions(_amount) {
_amount = _amount*toWei; //SEE HERE
emit AllowanceChange(_user, msg.sender, allowance[_user]._allowance - _amount, allowance[_user]._allowance, _x - int(_amount));
allowance[_user]._allowance -= _amount;
}现在的问题是,我不知道如何将它应用于我的接收函数:
receive() external payable {
emit BalanceChange(msg.sender, int(msg.value), address(this).balance);
emit PaymentIn(msg.sender, msg.value);
}是否有方法修改此函数以以太作为输入,或应用类似的转换?
或者,我在js中将数字转换成大数字没有问题,但当使用BN作为输入时,当我从web应用程序调用我的可靠函数时,我无法让它工作。如果你能给我建议,如何去做,这也将作为一个解决方案。任何帮助都是非常感谢的!
发布于 2021-12-01 20:50:48
在前端,您可以使用ethers.js库将表示数字的字符串转换为BigNumber,然后将其传递给契约。在这种情况下,您将使用ethers.utils.parseUnits来将用户输入(例如,ETH )转换为Wei,尽管您也可以对任意数量的数字使用它。
下面是解释该函数的醚类文献页面。
https://ethereum.stackexchange.com/questions/114758
复制相似问题