IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 区块链 -> ERC20的精度换算(ETH转WEI WEI转ETH) -> 正文阅读

[区块链]ERC20的精度换算(ETH转WEI WEI转ETH)

? ? ERC20的Token精度字段为decimals,取值范围为1~18,decimals默认为18。不同的Token,其decimals也是不同的,具体要根据Token合约代码里的deicmals来进行判断。在ethers.js里有个非常好的的库utils,使用utils.formatUnits()、utils.parseUnits()可以非常方便的进行精度换算。

1 ETH --> WEI

  • 若decimals=18,则
    ? ? y = utils.parseUnits(x,18)
  • 若decimals=6,则
    ? ? y = utils.parseUnits(x,6)

2 WEI --> ETH

  • 若decimals=18,则
    ? ? y = utils.formatUnits(x,18)

  • 若decimals=6,则
    ? ? y = utils.formatUnits(x,6)

案例代码

? ? //change.js

const { utils, BigNumber } = require("ethers")

function eth2Wei(x,decimals) {
    return utils.parseUnits(x,decimals).toString()
}

function wei2Eth(x,decimals) {
    return utils.formatUnits(x,decimals).toString()
}

async function doMain() {
    //1) 已知 100 ethers X (100枚X), decimals = 18
    //   求它可以转化为多少wei?
    let x1 = "100"
    let decimals1 = 18
    let y1 = eth2Wei(x1,decimals1)
    console.log("wei: y1=",y1)

    //2) 已知 100 ethers X (100枚X), decimals = 6
    //   求它可以转化为多少wei?
    let x2 = "100"
    let decimals2 = 6
    let y2 = eth2Wei(x2,decimals2)
    console.log("wei: y2=",y2)

    //3) 在Solidity中,uint = wei
    // 已知 500000000000000000000 uint X(用最小单位表示),decimals = 18
    // 求它可以转化为多少ethers?
    let x3 = BigNumber.from("500000000000000000000")
    let decimals3 = 18
    let y3 = wei2Eth(x3,decimals3)
    console.log("ethers: y3=",y3)

    //4) 在Solidity中,uint = wei
    // 已知 500000000000000000000 uint X(用最小单位表示),decimals = 6
    // 求它可以转化为多少ethers?
    let x4 = BigNumber.from("500000000000000000000")
    let decimals4 = 6
    let y4 = wei2Eth(x4,decimals4)
    console.log("ethers: y4=",y4)

}

doMain()

? ? 效果如下:

图(1) 使用utils库进行精度换算

附录

? ? 在黑框框命令行里,输入如下命令即可安装ethers.js

npm init -y
npm install ethers
  区块链 最新文章
盘点具备盈利潜力的几大加密板块,以及潜在
阅读笔记|让区块空间成为商品,打造Web3云
区块链1.0-比特币的数据结构
Team Finance被黑分析|黑客自建Token“瞒天
区块链≠绿色?波卡或成 Web3“生态环保”标
期货从入门到高深之手动交易系列D1课
以太坊基础---区块验证
进入以太坊合并的五个数字
经典同态加密算法Paillier解读 - 原理、实现
IPFS/Filecoin学习知识科普(四)
上一篇文章      下一篇文章      查看所有文章
加:2022-01-08 14:03:06  更:2022-01-08 14:05:32 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 1:51:46-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码