在交易过程中,无论交易的代币是什么,都需要把这些代币转为 wei 存储在以太坊区块链中。
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'
例子
举个交易的例子
>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
上面获取账户余额例子中,就是获取钱包中 coinbase 账户的余额,得到的结果单位是 wei ,我们通过 fromWei 把wei转为了ether(以太币)