1. 程式人生 > >挖礦與共識

挖礦與共識

show creat pre urn 隨著 數據結構 包含 scrip 總量

挖礦與共識

  每10分鐘就會有?個新的區塊被“挖掘”出來,每個區塊?包含著從上?個區塊產?到?前這段時間內發?的所有交易,這些交易被依次添加到區塊鏈中。我們把包含在區塊內且被添加到區塊鏈上的交易稱為“確認”交易,交易經過“確認”之後,新的擁有者才能夠花費他在交易中得到的?特幣。

  礦?們在挖礦過程中會得到兩種類型的獎勵:創建新區塊的新幣獎勵,以及區塊中所含交易的交易費

  換句話說在2140年之後,不會再有新的?特幣產?。

  ?約每?分鐘產??個新區塊,每開采 210,000(21W) 個塊(1年5.25W個區塊),?約耗時4年

,貨幣發?速率降低50%。在?特幣運?的第?個四年中,每個區塊創造出50個新?特幣。

  到2140年左右,會存在接近2,100萬?特幣。

  比特幣發行量腳本:

技術分享圖片
# 初始的塊獎勵為50BTC
start_block_reward = 50

# 以10分鐘為?個區塊的間隔,210000個塊共約4年時間
reward_interval = 210000

def max_money():
    # 50 BTC = 50 0000 0000 Satoshis
    current_reward = 50 * 10**8
    total = 0
    while current_reward > 0:
        total 
+= reward_interval * current_reward current_reward /= 2 return total print "Total BTC to ever be created:", max_money(), "Satoshis"
View Code

    技術分享圖片

  總量有限並且發?速度遞減創造了?種抗通脹的貨幣供應模式。法幣可被中央銀??限制地印刷出來,??特幣永遠不會因超額印發?出現通脹。

  許多經濟學家提出通縮經濟是?種?論如何都要避免的災難型經濟。因為在快速通縮時期,?們預期著商品價格會下通貨緊縮貨幣跌,?們將會儲存貨幣,避免花掉它

。這種現象充斥了?本經濟“失去的?年”,就是因為在需求坍塌之後導致了滯漲狀態。

去中心化共識

1、交易的獨立校驗。

  每?個節點在校驗每?筆交易時,都需要對照?個??的標準列表:  

    1)交易的語法和數據結構必須正確。  

    2)輸?與輸出列表都不能為空。

    3)交易的字節??是?於 MAX_BLOCK_SIZE 的。

    4)解鎖腳本( scriptSig )只能夠將數字壓?棧中,並且鎖定腳本( scriptPubkey )必須要符合 isStandard 的格式 (該格式將會拒絕?標準交易)。

    5)對於每?個輸?,如果引?的輸出存在於池中任何的交易,該交易將被拒絕。

2、整合交易至區塊。

  交易的優先級是由交易輸?所花費的UTXO的“塊齡”決定,交易輸?值?、“塊齡”?的交易?那些新的、輸?值?的交易擁有更?的優先級。

  交易的優先級是通過輸?值和輸?的“塊齡”乘積之和除以交易的總?度得到的。交易輸?的值是由?特幣單位“聰”(1億分之1個?特幣)來表?的。

    技術分享圖片

  UTXO的“塊齡”是?該UTXO被記錄到區塊鏈為?所經歷過的區塊數,即這個UTXO在區塊鏈中的深度。交易記錄的??由字節來表?。

  

  ?個交易想要成為“較?優先級”,需滿?的條件:優先值?於57,600,000,相當於?個?特幣(即1億聰),年齡為?天(144個區塊),交易的??為250個字節:

    技術分享圖片

  1)區塊中?來存儲交易的前50K字節是保留給較?優先級交易的。Jing的節點在填充這50K字節的時候,會優先考慮這些最?優先級的交易,不管它們是否包含了礦?費。這種機制使得?優先級交易即便是零礦?費,也可以優先被處理。

  2)然後,Jing的挖礦節點會選出那些包含最?礦?費的交易,並按照“每千字節礦?費”進?排序,優先選擇礦?費?的交易來填充剩下的區塊,區塊??上限為 MAX_BLOCK_SIZE

  3)如區塊中仍有剩余空間,Jing的挖礦節點可以選擇那些不含礦?費的交易。有些礦?會竭盡全?將那些不含礦?費的交易整合到區塊中,?其他礦?也許會選擇忽略這些交易。

  4)在區塊被填滿後,內存池中的剩余交易會成為下?個區塊的候選交易。因為這些交易還留在內存池中,所以隨著新的區塊被加到鏈上,這些交易輸?時所引?UTXO的深度(即交易“塊齡”)也會隨著變?

挖礦與共識