最初的標(biāo)題是 《計算Ethereum的流通量》
流通量感覺不太準(zhǔn)確餐蔬,按照本人的理解 流通量 是指在這個網(wǎng)絡(luò)中里能用于交換的數(shù)量搜囱。 而Ethereum網(wǎng)絡(luò)中绍赛,存在著大量的丟失的 /鎖定的幣淫半,這些是不用于流通的钾菊,
但是很難統(tǒng)計帅矗,很多網(wǎng)站都用流通量。所以混用了這個說法煞烫,流通量即發(fā)行量浑此。
計算bitcoin的發(fā)行量
先普及下bitcoin的發(fā)行量,是很容易計算的滞详,bitcoin只有一種方式可以增發(fā)凛俱,那就是挖礦獎勵紊馏。
btc遵循這種規(guī)律,第一次的21w (210000)
高度的時候蒲犬,每挖出一個塊獎勵50個btc朱监。
下一次的21w
,也就是 21w~42w
高度原叮。每挖出一個塊獎勵25個btc赫编。每21w個高度就是一個減半周期,挖出的獎勵減半了奋隶。
btc的發(fā)行量 跟塊高度緊密相關(guān)
咋計算42w個塊發(fā)行了多少btc呢? 21w * 50 + 21w*25
如果是50w呢? 21w * 50 + 21w*25 + (50w-42w)*12.5
現(xiàn)在高度是[532223 ]現(xiàn)在高度是532223 擂送,發(fā)行量是多少呢? 大家感興趣的話,可以計算下哈
bitcoin總量還有個上限唯欣,就是不超過2100w個嘹吨。
計算ethereum的發(fā)行量
ethereum的發(fā)行量比較麻煩了,有四種增發(fā)方式
- Pre-mine(挖礦前)
- Block rewards(區(qū)塊獎勵)
- Uncle rewards(叔塊獎勵)
- Uncle referencing rewards(叔塊引用獎勵)
挖礦前: 72 009 990.50 Eth
區(qū)塊獎勵:
區(qū)塊獎勵在4370000高度前都是 5Eth
4370000后境氢,eth啟動大都會后獎勵變成3Eth
叔塊獎勵:
計算公式 (uncle_num + 8 - block_num) * R / 8
R是定值蟀拷,在4370000高度前都是 5Eth,4370000高度后變成3Eth
叔塊引用獎勵:
如果block 不單有父塊产还,還引用叔塊匹厘,block有額外的獎勵
計算公式 1/32*R*uncle_count (0 ≤ uncle_count ≤ 2)
R是定值,在4370000高度前都是 5Eth脐区,4370000高度后變成3Eth
這需要找出所有引用的叔塊愈诚,并計算每個叔塊的獎勵
eth 總量目前沒有上限
數(shù)據(jù)庫記錄了這些數(shù)據(jù)
select count(*) from block_rewards;
count
---------
5903060
select count(*) from uncle_rewards;
count
--------
657883
select sum(reward) from block_rewards;
sum
----------------
26532159.15625
select sum(reward) from uncle_rewards;
sum
-------------
1933525.625
select 26532159.15625 + 1933525.625 + 72009990.50 as total;
total
-----------------
100475675.28125
目前遍歷了 5903055
區(qū)塊高度的eth塊數(shù)據(jù)以及叔塊數(shù)據(jù),計算出的發(fā)行量是 100 475 675.28125
牛隅,有一定的誤差炕柔。
參考:
https://etherscan.io/stat/supply
https://ethereum.stackexchange.com/questions/27172/different-uncles-reward