阅读(4216) (1)

Moralis Units

2022-05-12 09:26:29 更新

介绍

所有加密交易均以最小值 - Wei 进行。 但为了改善用户体验,在前端通常以 ETH 格式输入转账金额。 用户希望输入值 ​0.0001 TokenA​ 而不是 ​100000000000000 Wei TokenA​。 标准的 web3 方法不方便转换。 最方便的转换方法是使用 ​Moralis.Units​ 辅助函数。

Wei 是以太的最小面额,你应该始终以 Wei 进行计算,并且仅出于显示原因进行转换。

将 ERC20 代币转换为 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 上找到。

将原生资产(ETH/BNB/MATIC 等)转换为 Wei

要将原生资产转换为 Wei,您需要指定原生加密货币的数量。

//Example: We want to convert 0.5 ETH to Wei
const ethInWei = Moralis.Units.ETH("0.5")
// expected output: 500000000000000000 Wei

从 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 进行计算,并且仅出于显示原因进行转换。