所有加密交易均以最小值 - Wei 进行。 但为了改善用户体验,在前端通常以 ETH 格式输入转账金额。 用户希望输入值 0.0001 TokenA
而不是 100000000000000 Wei TokenA
。 标准的 web3 方法不方便转换。 最方便的转换方法是使用 Moralis.Units
辅助函数。
Wei 是以太的最小面额,你应该始终以 Wei 进行计算,并且仅出于显示原因进行转换。
要将 ERC20 代币转换为 Wei,您需要指定代币数量和小数位数。
//Example: We want to convert 0.5 BUSD. It has 18 decimals
const busdInWei = Moralis.Units.Token("0.5", "18")
// expected output: 500000000000000000 Wei
代币的小数位数通常可以在 Etherscan、项目网站或 Moralis API 上找到。
要将原生资产转换为 Wei,您需要指定原生加密货币的数量。
//Example: We want to convert 0.5 ETH to Wei
const ethInWei = Moralis.Units.ETH("0.5")
// expected output: 500000000000000000 Wei
所有代币值均以 Wei 显示。 如果要以“Eth”样式显示令牌值,可以使用:
//Convert token value to ETH style with 6 decimals
const tokenValue = Moralis.Units.FromWei("2000000000000000000", 6)
//Convert token value to ETH style with 18 decimals
//If you do not specify decimals, 18 decimals will be automatically used
const tokenValue = Moralis.Units.FromWei("2000000000000000000")
请注意,此功能在云代码中尚不可用。 您只能在 SDK 中使用它。 我们很快就会将其添加到云代码中。
代币余额的 Web3 API 响应在 Wei 字段中有小数和余额:
{
"token_address": "0x...b0",
"name": "name",
"symbol": "NAME",
"logo": null,
"thumbnail": null,
"decimals": "18",
"balance": "2000000000000000000"
},
Wei 是以太的最小面额,你应该始终以 Wei 进行计算,并且仅出于显示原因进行转换。