以太坊中以太幣及代幣計量單位

無論是構建交易進行以太幣的轉賬或是呼叫智慧合約進行代幣的發放,單位都是不可或缺的。今天就帶大家詳細瞭解一下以太坊中以太幣和代幣的單位,以及如何通過web3的方式進行操作。

以太幣單位轉換

首先我們來看一下以太幣單位之間的轉換,以太幣的最小單位為wei,1個eth相當於10的8次方wei。通常,大家也使用Gwei作為展示單位。比較常用的就是eth,Gwei和wei。

單位wei值Wei
wei11 wei
Kwei (babbage)1e3 wei1,000
Mwei (lovelace)1e6 wei1,000,000
Gwei (shannon)1e9 wei1,000,000,000
microether (szabo)1e12 wei1,000,000,000,000
milliether (finney)1e15 wei1,000,000,000,000,000
ether1e18 wei1,000,000,000,000,000,000

進位制轉換

為了使用和驗證web3的操作命令,我們先進入geth的console控制檯,在這裡對具體的單位或進位制轉換進行詳細的例項演示。

啟動geth,進入控制檯命令:

/Users/zzs/develop/eth/geth/geth attach rpc:/Users/zzs/Library/Ethereum/geth.ipc

可根據自己的具體情況調整geth路徑和ipc路徑。

十六進位制轉十進位制

此轉換方法為web3.toDecimal(hexString)。直接在控制檯輸入一下命令進行使用此函式進行轉換。

> web3.toDecimal('0x16');
22

通過此函式將十六進位制的0x16轉換為十進位制的22。

十進位制轉十六進位制

轉換函式:web3.fromDecimal(number)。

控制檯命令及結果如下:

> web3.fromDecimal('22');
"0x16"

轉換為BigNumber型別

把給定數字或十六進位制字串轉為 BigNumber 型別的例項。

> web3.toBigNumber('200000000000000000000001');
2.00000000000000000000001e 23

此處轉換需要注意的是BigNumber只會保留小數點後20位,超過20位的部分將會被擷取掉。

以太幣單位轉換

上面表格中列出了以太幣之間的單位進位制,同樣可以使用web3進行相應的轉換,基本函式為web3.fromWei和web3.toWei(number, unit)。

具體例項如下:

// wei轉換為ether
> web3.fromWei('22000000000000', 'ether');
"0.000022"
// wei轉換為kwei
> web3.fromWei('1000','kwei')
"1"
// wei轉換為gwei
> web3.fromWei('1000000000','gwei')
"1"
// ether轉換為wei
> web3.toWei('1','ether')
"1000000000000000000"

其他的相關轉換大家可自行嘗試,下面列出相應的轉換種類:
– kwei/ada
– mwei/babbage
– gwei/shannon
– szabo
– finney
– ether
– kether/grand/einstein
– mether
– gether
– tether

通過上面的函式,在交易的過程中我們就可以隨意的單位進行傳送交易,而不必使用最小單位wei。

>eth.sendTransaction({from:eth.coinbase,to:"0x2bda4364bb076187f0ef0067a61ccb95d636e383",value:web3.toWei(1,"ether")})

通過查詢餘額的方法,我們也可以看出區塊鏈中儲存這些資料的單位為wei。

> web3.eth.getBalance(eth.coinbase)
267999999999999999999

代幣中的單位

在編寫ERC-20的代幣合約時我們可以指定代幣的單位,比如:

uint8 public decimals;

這裡就指定了代幣單位精確到小數點後幾位。比如精確到小數點後3位,那麼1個代幣儲存時就是1000個最小單位的值。

更多資訊

**獲取更多資訊,請關注微信公眾號:程式新視界。或加入QQ技術交流群:659809063。
本人誠接以太坊相關研發及技術支援,如有需要請聯絡QQ:541075754。非誠勿擾。**
這裡寫圖片描述

更多交流技術資訊請掃碼加入知識星球(小密圈)
這裡寫圖片描述