挖礦與共識
【挖礦與共識】
每10分鐘就會有?個新的區塊被“挖掘”出來,每個區塊?包含著從上?個區塊產?到?前這段時間內發?的所有交易,這些交易被依次添加到區塊鏈中。我們把包含在區塊內且被添加到區塊鏈上的交易稱為“確認”交易,交易經過“確認”之後,新的擁有者才能夠花費他在交易中得到的?特幣。
礦?們在挖礦過程中會得到兩種類型的獎勵:創建新區塊的新幣獎勵,以及區塊中所含交易的交易費。
換句話說在2140年之後,不會再有新的?特幣產?。
?約每?分鐘產??個新區塊,每開采 210,000(21W) 個塊(1年5.25W個區塊),?約耗時4年
到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: totalView Code+= reward_interval * current_reward current_reward /= 2 return total print "Total BTC to ever be created:", max_money(), "Satoshis"
總量有限並且發?速度遞減創造了?種抗通脹的貨幣供應模式。法幣可被中央銀??限制地印刷出來,??特幣永遠不會因超額印發?出現通脹。
許多經濟學家提出通縮經濟是?種?論如何都要避免的災難型經濟。因為在快速通縮時期,?們預期著商品價格會下通貨緊縮貨幣跌,?們將會儲存貨幣,避免花掉它
【去中心化共識】
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的深度(即交易“塊齡”)也會隨著變?。
挖礦與共識