我对如何在web3应用程序中使用WEI管理/计算感到困惑。
到目前为止我发现:
BigInt
:这是JS本机的,它的工作量很大(例如10000000000000000000000
)。但它没有开箱即用的实用工具,例如转换为十六进制。BigNumber
:这是醚类提供的:values中的许多操作都是针对在JavaScript中使用的安全值范围之外的数字进行的。BigNumber是一个安全地允许对任意大小的数字进行数学运算的对象。
考虑到这个描述,并且它是专门为Ethereum服务的,我认为这一定是它,但它实际上并不适用于大量的数据:
// Numbers outside the safe range fail:
BigNumber.from(Number.MAX_SAFE_INTEGER);
// Error: overflow (fault="overflow", operation="BigNumber.from", value=9007199254740991, code=NUMERIC_FAULT, version=bignumber/5.0.8)
除此之外,对于魏,我可能需要整数,而不是浮点数。
那么对魏的建议是什么呢?
在理想的情况下,我想要的不仅仅是代表大数的东西,还有实际的WEIs,并且内置了一些功能,可以安全地转换为GWEI或ETH,并在开箱即用的情况下进行计算,但这并不是必须的。
使用打字本,但可能与此无关。
编辑:我找到了另一个库:BigNumber.js。这似乎是我所期望的。它可以转换为字符串来与web3.js交互。
发布于 2020-11-22 17:59:09
BigNumber是推荐的方法。可能它比各种BigInt库有更好的支持。
有很多BigNumber库,我猜它们中的大多数都提供了非常相似的功能。所以他们中的任何一个对你来说都会很好。
至少ethers.js有内置的BigNumber支持,所以如果您碰巧使用了该库,就不需要进一步查看了。
当您拥有您的BigNumber库时,您可以使用这样的方法获得常规令牌数量(取自我的ERC20令牌部署脚本之一):
var exp = ethers.BigNumber.from("10").pow(18);
const supply = ethers.BigNumber.from("50").mul(exp);
https://ethereum.stackexchange.com/questions/90403
复制相似问题