以太坊中代币数量的计量单位说明
Unit | Wei Value | Wei |
---|---|---|
wei | 1 | 1 wei |
Kwei (babbage) | 1e3 wei | 1,000 |
Mwei (lovelace) | 1e6 wei | 1,000,000 |
Gwei (shannon) | 1e9 wei | 1,000,000,000 |
microether (szabo) | 1e12 wei | 1,000,000,000,000 |
milliether (finney) | 1e15 wei | 1,000,000,000,000,000 |
ether | 1e18 wei | 1,000,000,000,000,000,000 |
geth js 方法
web3.toDecimal
十六进制字符串转为十进制数字web3.toDecimal(hexString) var number = web3.toDecimal('0x15'); console.log(number); // 21
web3.fromDecimal
十进制数字或者十进制字符串转为十六进制var value = web3.fromDecimal('21'); console.log(value); // "0x15"
web3.fromWei
把 wei 转为如下种类的以太坊单位(还有其他代币token单位)- kwei/ada
- mwei/babbage
- gwei/shannon
- szabo
- finney
- ether
- kether/grand/einstein
- mether
- gether
- tether
var value = web3.fromWei('21000000000000', 'ether'); console.log(value); //0.000021
web3.toWei
把以太坊单位(包含代币单位)转为 weivar value = web3.toWei('1', 'ether'); console.log(value); // "1000000000000000000"
web3.toBigNumber(numberOrHexString)
把给定数字或十六进制字符串转为 BigNumber 类型的实例。var value = web3.toBigNumber('200000000000000000000001'); console.log(value); // instanceOf BigNumber console.log(value.toNumber()); // 2.0000000000000002e+23 console.log(value.toString(10)); // '200000000000000000000001'
关于 BigNumber 需要注意点请看 note on BigNumber
例子
举个交易的例子
>eth.sendTransaction({from:eth.coinbase,to:"0x2bda4364bb076187f0ef0067a61ccb95d636e383",value:web3.toWei(1,"ether")})
转账的数量是1个 ether(以太币)web3.toWei(1,"ether")
把以太币转为 wei
再来通过获取以太坊账户的余额看看在区块链中这些代币数量的存储方式。
> web3.eth.getBalance(eth.coinbase)
267999999999999999999
> web3.fromWei(web3.eth.getBalance(eth.coinbase),"ether")
267.999999999999999999
可以看出,在交易过程中,无论交易的代币是什么,都需要把这些代币转为 wei 存储在以太坊区块链中。
上面获取账户余额例子中,就是获取钱包中 coinbase 账户的余额,得到的结果单位是 wei ,我们通过 fromWei 把wei转为了ether(以太币)