深入淺出:從一筆比特幣交易的生命周期看懂區(qū)塊鏈技術(shù)

最近看了許多解釋區(qū)塊鏈的文章春瞬,發(fā)現(xiàn)很多文章要么

過于概念化或談及一些應(yīng)用前景和行業(yè)判斷,要么又過于專業(yè)晦澀憔恳,使得很多

沒有技術(shù)底子的小伙伴難以真正理解區(qū)塊鏈技術(shù)烁挟。由于以上的原因吩翻,我希望通

過一筆比特幣交易的完整生命周期來解釋比特幣中的區(qū)塊鏈技術(shù)兜看。在這樣具體?

流程的場景下,我相信會(huì)更容易理解區(qū)塊鏈狭瞎。

基本常識(shí):

區(qū)塊鏈不等于比特幣细移,區(qū)塊鏈只是比特幣系統(tǒng)用來記錄交易信息的賬

簿;

比特幣沒有賬戶余額的概念熊锭,所有的交易只記錄資金的來源和去向弧轧,所

謂賬戶余額是區(qū)塊鏈中計(jì)算出來的結(jié)果;

挖礦獎(jiǎng)勵(lì)是為了維護(hù)整個(gè)系統(tǒng)鼓勵(lì)人們利用自己設(shè)備的算力資源來共同

驗(yàn)證每筆交易的有效性而給予的獎(jiǎng)勵(lì)碗殷;

假設(shè)一筆比特幣交易 A 一旦被創(chuàng)建精绎,它的生命周期就開始了。隨后锌妻,交易 A 會(huì)

被一個(gè)或者多個(gè)簽名加密(這些簽名用來說明交易 A 的資金流向是被資金的擁有

者所許可的)代乃。而后,交易 A 被廣播到比特幣網(wǎng)絡(luò)中仿粹,最快收到廣播信息的是相

鄰的2-3個(gè)節(jié)點(diǎn)搁吓,這些節(jié)點(diǎn)都會(huì)參與驗(yàn)證這筆交易,于此同時(shí)將交易在網(wǎng)絡(luò)中再次

進(jìn)行廣播吭历,直到這筆交易 A 被網(wǎng)絡(luò)中大多數(shù)節(jié)點(diǎn)(所有下載比特幣客戶端的設(shè)備

都有可能成為這樣的節(jié)點(diǎn))接收擎浴。

最終,交易 A 被一個(gè)正在參與挖礦的節(jié)點(diǎn)驗(yàn)證毒涧,交易 A 連同其它一些近期被創(chuàng)

建的交易一起被打包到一個(gè)區(qū)塊 B 中,并被添加到區(qū)塊鏈上,這時(shí)整個(gè)區(qū)塊鏈就

被延長并新增了一個(gè)區(qū)塊 B 契讲。區(qū)塊 B 獲得 6 次以上的“確認(rèn)”時(shí)就被認(rèn)為是不

可撤銷的仿吞,因?yàn)橐蜂N和重建六個(gè)區(qū)塊需要巨量的計(jì)算,交易被打包在一起放進(jìn)

區(qū)塊中時(shí)需要極大的計(jì)算量來證明捡偏,但只需少量計(jì)算就能驗(yàn)證它們已被證明唤冈。

我們將上面的交易過程描述簡單細(xì)分為以下 6 個(gè)步驟:

1. 產(chǎn)生新交易

2. 簽名加密

3. 交易在比特幣網(wǎng)絡(luò)中傳播

4. 整合交易&構(gòu)建新區(qū)塊

5. 挖礦

6. 新區(qū)塊連接到區(qū)塊鏈

接下來,我們將詳細(xì)分析 6 個(gè)交易步驟中的具體細(xì)節(jié)和所采用到的底層技術(shù)银伟,在

解釋每個(gè)步驟和具體的概念時(shí)你虹,我都將舉出適當(dāng)?shù)睦觼韼椭斫猓绻廊粵]

有讀懂彤避,那肯定是你看的太快了……

當(dāng)隔壁老王想要將自己錢包中的一個(gè)比特幣轉(zhuǎn)賬給老張時(shí)傅物,這個(gè)交易就被老王的

錢包所構(gòu)建了。

將一筆比特幣交易理解成紙質(zhì)支票有助于我們的理解琉预,一筆比特幣交易是一個(gè)有

著貨幣轉(zhuǎn)移目的工具董饰, 如同當(dāng)收款人或持票人拿著支票到銀行時(shí),銀行會(huì)無條件

支付其規(guī)定數(shù)量的金額圆米。并且交易發(fā)起人并不一定是簽署該筆交易的人卒暂。

比特幣交易可以被任何人在線上或線下創(chuàng)建,即便創(chuàng)建這筆交易的人不是這個(gè)賬

戶的授權(quán)簽字人娄帖。就像一家企業(yè)中秘書開出的這張支票(發(fā)起交易)也祠,需要等待

Boss簽署該筆交易(數(shù)字簽名)。

有以下 4 個(gè)概念需要展開理解近速,用以更加深入地理解“新交易構(gòu)建”的一些細(xì)

節(jié):

UTXO

交易輸出

交易輸入

交易費(fèi)

UTXO易于理解的說就像是賬戶的余額诈嘿。它是比特幣交易的基本單位,是未經(jīng)使用

的一個(gè)交易輸出数焊,Unspent Transaction Output永淌,簡稱UTXO,“未花費(fèi)的交易輸

出”佩耳。UTXO不能再分割遂蛀,1 個(gè)UTXO可以是 1“聰” 的任意倍,就像美元可以被分

割成“美分”一樣干厚,“分”就不可以再分割了李滴。UTXO被記錄于區(qū)塊鏈中,比特幣

網(wǎng)絡(luò)監(jiān)測著以百萬為單位的所有可用的UTXO蛮瞄。

假設(shè)隔壁老王此時(shí)擁有 1.9 比特幣所坯,當(dāng)隔壁老王接收到 0.1 比特幣時(shí),這個(gè)金

額被當(dāng)作UTXO記錄到區(qū)塊鏈里挂捅,現(xiàn)在老王一共擁有的 2 比特幣芹助,同樣都被當(dāng)作

UTXO分散到數(shù)百個(gè)交易和數(shù)百個(gè)區(qū)塊中。實(shí)際上,并不存在一個(gè)儲(chǔ)存比特幣的地

址或賬戶余額的地方状土,只有被老王(所有者)鎖住的无蜂、分散的UTXO。

因此蒙谓,

?

這個(gè)概念斥季,是通過掃描區(qū)塊鏈并聚合所有屬于

該用戶的UTXO來計(jì)算該用戶的余額。

一筆比特幣交易是一個(gè)含有輸入值和輸出值的數(shù)據(jù)結(jié)構(gòu)累驮,其中包含了將一筆資金

從初始地址(輸入)轉(zhuǎn)移至目標(biāo)地址(輸出)的代碼信息:

酣倾。

每一筆比特幣交易創(chuàng)造輸出,輸出都會(huì)被比特幣賬簿記錄下來谤专。所有的輸出都能

創(chuàng)造一定數(shù)量的可用于支付的比特幣(也就是UTXO)躁锡。這些UTXO會(huì)被整個(gè)網(wǎng)絡(luò)所

識(shí)別記錄,其所有者可在未來的交易中使用它們毒租。給隔壁老王發(fā)送比特幣實(shí)際上

是創(chuàng)造新的UTXO稚铣,并且能被他用于新的支付。

交易輸入是指向UTXO的指針墅垮,當(dāng)用戶付款時(shí)惕医,他的錢包通過選擇可用的UTXO來構(gòu)

造一筆交易。

隔壁老王想要支付0.015比特幣算色,他的錢包應(yīng)用會(huì)選擇一個(gè) 0.01 UTXO和一

個(gè) 0.005 UTXO抬伺,使用它們加在一起來得到想要的付款金額。

大多數(shù)交易包含交易費(fèi)灾梦,這是為了在網(wǎng)絡(luò)安全方面給比特幣礦工一種補(bǔ)償峡钓。大多

數(shù)錢包自動(dòng)計(jì)算并計(jì)入交易費(fèi),交易費(fèi)被挖出這個(gè)區(qū)塊的礦工得到若河,并且記錄在

這個(gè)交易的區(qū)塊鏈中能岩。交易的數(shù)據(jù)結(jié)構(gòu)沒有交易費(fèi)的字段,意味著你無法從交易

信息中直接看到交易費(fèi)的金額萧福。

隔壁老王想要消費(fèi)支付0.015比特幣拉鹃,為了自己的交易被礦工優(yōu)先處理,他

愿意支付0.001比特幣作為交易費(fèi)鲫忍,那么老王的錢包至少需要從區(qū)塊鏈記錄中整合

至少0.016比特幣的UTXO膏燕。假設(shè)他的錢包有一個(gè)0.2比特幣的UTXO可用,那么這筆

新的交易就會(huì)產(chǎn)生一個(gè)0.2比特幣的輸入悟民,和兩個(gè)輸出:一個(gè)是0.015比特幣的消

費(fèi)金額被支付給目標(biāo)地址坝辫,另一個(gè)0.184比特幣的輸出作為找零支付給老王的錢包

地址,其中有0.001比特幣未分配射亏,就是“隱藏的”交易費(fèi)用近忙。

一定要定義清楚0.184比特幣是一個(gè)指向老王自己錢包的輸出竭业,

這樣找零才會(huì)有效“退回”給老王的錢包,否則0.184比特幣也都將成為交易費(fèi)银锻,

被礦工挖到這份驚喜的“紅包”永品。

一筆比特幣交易一旦被創(chuàng)建,它就會(huì)被資金所有者(可能存在多位所有者)簽名击纬。

如果它是合法創(chuàng)建并簽名的,則該筆交易現(xiàn)在就是有效的钾麸。它包含資金轉(zhuǎn)移時(shí)所

需要的所有信息更振。用戶的私鑰用于生成支付比特幣所必需的簽名,來證明資金的

所有權(quán)饭尝,這樣的簽名加密是為了確保交易內(nèi)容不被篡改肯腕。

網(wǎng)絡(luò)中節(jié)點(diǎn)收到交易信息后,會(huì)對交易的合法性進(jìn)行檢查钥平,資金所有者的簽名加

密是重要的驗(yàn)證依據(jù)实撒,檢查都通過后,則將交易標(biāo)記為合法的未確認(rèn)交易涉瘾,才會(huì)

在網(wǎng)絡(luò)中進(jìn)行廣播知态。

有以下 4 個(gè)概念需要展開理解,用以更加深入的理解“簽名加密”的一些細(xì)節(jié):

私鑰

公鑰

錢包

交易腳本

一個(gè)比特幣錢包中包含一系列的密鑰對立叛,每個(gè)密鑰對包括一個(gè)私鑰和一個(gè)公鑰负敏。

私鑰是一個(gè)數(shù)字,通常是隨機(jī)產(chǎn)生的秘蛇。一個(gè)比特幣地址中的所有資金的控制取決

于相應(yīng)私鑰的所有權(quán)和控制權(quán)其做。私鑰必須保密,因?yàn)橐坏┍恍孤读藁梗喈?dāng)于該私鑰

保護(hù)下比特幣也就丟失了妖泄。

通過在一個(gè)密碼學(xué)安全的隨機(jī)源中取出一串隨機(jī)字節(jié),對其使用SHA256哈希算法

進(jìn)行運(yùn)算艘策,生成了一個(gè)256位的數(shù)字蹈胡,這樣的一個(gè)數(shù)字就可以作為私鑰。以十六進(jìn)

制格式表示一個(gè)隨機(jī)生成的私鑰柬焕,即:

通過橢圓曲線算法可以從私鑰計(jì)算得到公鑰审残,這是不可逆轉(zhuǎn)的過程。由公鑰經(jīng)過

單向的加密哈希算法生成的比特幣地址以數(shù)字“1”開頭斑举,在交易中比特幣地址就

是收款人的地址搅轿。

比特幣錢包是私鑰的容器,錢包只包含私鑰而不是比特幣富玷,每一個(gè)用戶有一個(gè)包

含多個(gè)私鑰的錢包璧坟。錢包中包含成對的私鑰和公鑰既穆,用戶用這些私鑰來簽名交

易。

其中一種常見且典型的錢包就是使用“助記碼詞匯”做為種子雀鹃,而生成私鑰的錢

包幻工。這樣的單詞的序列可以重新創(chuàng)建種子,并重新創(chuàng)造錢包以及所有私鑰黎茎。在首

次創(chuàng)建錢包時(shí)囊颅,帶有助記碼的錢包應(yīng)用程序?qū)?huì)向使用者生成一個(gè)12至24個(gè)單

詞,單詞的順序就是錢包的備份傅瞻。

一般每個(gè)交易都會(huì)包括兩個(gè)腳本:

輸出腳本踢代,scriptPubKey和輸入腳本,scriptSig嗅骄。

輸出腳本一般由付款方對交易設(shè)置鎖定胳挎,用來對收款方進(jìn)行權(quán)限控制,例如限制

必須是某個(gè)公鑰 (比特幣地址) 的擁有者才能花費(fèi)這筆交易溺森。

輸入腳本 (簽名腳本) 常常含有一個(gè)被用戶的私鑰生成的數(shù)字簽名慕爬,用來證明自

己可以滿足交易輸出腳本的鎖定條件,即對某筆交易中比特幣資金的擁有權(quán)屏积。

比特幣交易的輸入和輸出并非只是簡單對應(yīng)了付款人的私鑰和收

款人的公鑰地址医窿,而是還包含了更多的內(nèi)容,通過腳本可以直接驗(yàn)證交易的有效

性肾请,并且實(shí)現(xiàn)了更多復(fù)雜的交易方式留搔,比如“多重簽名腳本”,保證只有自己和

第三方錢包共同簽名后才可動(dòng)用輸出铛铁,這樣保證了黑客在攻擊了第三方錢包后也

無法花掉用戶的比特幣隔显。

一筆交易需要傳遞至比特幣網(wǎng)絡(luò),才能被傳播饵逐,也才能加入?yún)^(qū)塊鏈中括眠。一筆比特

幣交易只是300到400字節(jié)的數(shù)據(jù),一旦交易被發(fā)送到任意一個(gè)連接至比特幣網(wǎng)絡(luò)

的節(jié)點(diǎn)倍权,這筆交易將會(huì)被該節(jié)點(diǎn)驗(yàn)證掷豺。如果交易被驗(yàn)證有效,該節(jié)點(diǎn)將會(huì)將這筆

交易傳播到這個(gè)節(jié)點(diǎn)所連接的其他節(jié)點(diǎn)薄声。

無論交易是否被節(jié)點(diǎn)驗(yàn)證有效当船,交易發(fā)起者會(huì)收到一條回執(zhí)消息,包含了此筆交

易是否被接受的返回信息默辨。在幾秒鐘之內(nèi)德频,一筆有效的交易就會(huì)呈指數(shù)級(jí)擴(kuò)散的

效率在網(wǎng)絡(luò)中傳播,直到所有連接到網(wǎng)絡(luò)的節(jié)點(diǎn)都接收到它缩幸。

每一個(gè)節(jié)點(diǎn)在傳播每一筆交易之前均進(jìn)行獨(dú)立驗(yàn)證壹置。因此竞思,一個(gè)

異常交易所能到達(dá)的節(jié)點(diǎn)不會(huì)超過一個(gè)。所以钞护,比特幣網(wǎng)絡(luò)能有效抵御入侵盖喷,避

免垃圾信息的濫發(fā)和有效拒絕服務(wù)攻擊。

有以下 4 個(gè)概念需要展開理解难咕,用以更加深入的理解“交易傳播”的一些細(xì)節(jié):

客戶端

完整節(jié)點(diǎn)

輕量節(jié)點(diǎn) (SPV) 節(jié)點(diǎn)

挖礦節(jié)點(diǎn)

bitcoin.org可以下載標(biāo)準(zhǔn)客戶端课梳,即比特幣核心,也叫“中本聰客戶

端”(satoshi client)余佃。它包括了比特幣系統(tǒng)的所有內(nèi)容:錢包功能惦界、整個(gè)交

易賬簿(區(qū)塊鏈)的完整拷貝、交易確認(rèn)引擎咙冗,P2P比特幣網(wǎng)絡(luò)中的一個(gè)完整網(wǎng)絡(luò)

節(jié)點(diǎn)。

保有一份完整的漂彤、最新的區(qū)塊鏈拷貝的節(jié)點(diǎn)被稱為“完整節(jié)點(diǎn)”雾消。完整節(jié)點(diǎn)能夠

獨(dú)立自主地校驗(yàn)所有交易, 而不需借由任何外部參照挫望。

只保留了區(qū)塊鏈的一部分立润,通過一種名為“簡易支付驗(yàn)證(SPV)”的方式來完成

交易驗(yàn)證的節(jié)點(diǎn)被稱為“SPV節(jié)點(diǎn)”, 又叫“輕量節(jié)點(diǎn)”媳板。越來越多的用戶錢包

都是SPV節(jié)點(diǎn)桑腮,尤其是運(yùn)行于智能手機(jī)等資源受限設(shè)備上,這些設(shè)備沒有空間存儲(chǔ)

完整的 150G 大小的區(qū)塊鏈蛉幸。

挖礦節(jié)點(diǎn)通過運(yùn)行在特殊硬件設(shè)備上的工作量證明算法破讨,以相互競爭的方式創(chuàng)建

新的區(qū)塊。一些挖礦節(jié)點(diǎn)同時(shí)也是全節(jié)點(diǎn)奕纫,保有區(qū)塊鏈的完整拷貝提陶;還有一些參

與礦池挖礦的節(jié)點(diǎn)是輕量級(jí)節(jié)點(diǎn),它們必須依賴礦池服務(wù)器維護(hù)的全節(jié)點(diǎn)進(jìn)行工

作匹层。

驗(yàn)證交易后隙笆,每個(gè)比特幣網(wǎng)絡(luò)節(jié)點(diǎn)會(huì)將這些交易添加到自己的內(nèi)存池中,內(nèi)存池

也稱作交易池升筏,用來暫存尚未被加入到區(qū)塊的交易記錄撑柔。而挖礦節(jié)點(diǎn)除了收集和

驗(yàn)證交易以外,還會(huì)將這些交易打包到一個(gè)候選的區(qū)塊中您访。

挖礦節(jié)點(diǎn)需要為內(nèi)存池中的每筆交易分配一個(gè)優(yōu)先級(jí)铅忿,并選擇較高優(yōu)先級(jí)的交易

記錄來構(gòu)建候選區(qū)塊,在區(qū)塊被填滿后洋只,內(nèi)存池中的剩余交易會(huì)成為下一個(gè)區(qū)塊

的候選交易辆沦。例如昼捍,一個(gè)挖礦節(jié)點(diǎn)從內(nèi)存池中整合到了全部的交易,新的候選區(qū)

塊包含有418筆交易肢扯,總的礦工費(fèi)為0.09094925個(gè)比特幣妒茬。

現(xiàn)在既然創(chuàng)建好了一個(gè)包含418筆交易的候選區(qū)塊,挖礦節(jié)點(diǎn)就準(zhǔn)備拿它來挖礦蔚晨。

臨時(shí)未驗(yàn)證的交易池

交易優(yōu)先級(jí)

區(qū)塊結(jié)構(gòu)

礦池

比特幣網(wǎng)絡(luò)中幾乎每個(gè)節(jié)點(diǎn)都會(huì)維護(hù)一份未確認(rèn)交易的臨時(shí)列表乍钻,被稱為內(nèi)存池

或交易池。節(jié)點(diǎn)們利用這個(gè)池來追蹤記錄那些被網(wǎng)絡(luò)所知曉但還未被區(qū)塊鏈所包

含的交易铭腕。交易池是存儲(chǔ)在本地內(nèi)存中银择,并不是存儲(chǔ)在硬盤里,因此不同節(jié)點(diǎn)的

兩池內(nèi)容可能有很大差別累舷。

交易優(yōu)先級(jí)

挖礦節(jié)點(diǎn)需要為內(nèi)存池中的每筆交易分配一個(gè)優(yōu)先級(jí)浩考,并選擇較高優(yōu)先級(jí)的交易

記錄來構(gòu)建候選區(qū)塊。交易的優(yōu)先級(jí)是由交易輸入所花費(fèi)的UTXO的交易創(chuàng)建時(shí)間

決定被盈,交易輸入值高且創(chuàng)建時(shí)間較早的交易比那些較新且輸入值小的交易擁有更

高的優(yōu)先級(jí)析孽。

區(qū)塊中用來存儲(chǔ)交易的前50K字節(jié)是保留給較高優(yōu)先級(jí)交易的,如果區(qū)塊中有足夠

的空間只怎,高優(yōu)先級(jí)的交易行為將不需要礦工費(fèi)袜瞬。礦工費(fèi)越高,交易被處理的優(yōu)先

級(jí)也越高身堡。

區(qū)塊是一種聚合了交易信息容器的數(shù)據(jù)結(jié)構(gòu)邓尤。由區(qū)塊頭和區(qū)塊主體組成,區(qū)塊頭

是80字節(jié)贴谎,而平均每個(gè)交易至少是250字節(jié)汞扎,而且平均每個(gè)區(qū)塊至少包含超過500

個(gè)交易。

1. 用于連接前面的區(qū)塊赴精、索引自父區(qū)塊哈希值的數(shù)據(jù)佩捞;

2. 挖礦難度、Nonce(用于工作量證明算法的計(jì)數(shù)器)蕾哟、時(shí)間戳一忱;

3. 能夠總結(jié)并快速歸納校驗(yàn)區(qū)塊中所有交易數(shù)據(jù)的Merkle(默克爾)樹根

數(shù)據(jù)。

改變了原來挖礦獎(jiǎng)勵(lì)由一個(gè)勝出礦工獨(dú)自獲得的狀態(tài)谭确,采用團(tuán)隊(duì)協(xié)作方式來集中

算力進(jìn)行挖礦帘营,對產(chǎn)出的數(shù)字貨幣按照算力進(jìn)行分配。

采礦成為一項(xiàng)團(tuán)隊(duì)運(yùn)動(dòng)逐哈,一群礦工于2010年12月16日一起在slush礦池挖出了它的

第一個(gè)區(qū)塊芬迄。根據(jù)其所貢獻(xiàn)的工作量,每位礦工都獲得了相應(yīng)的報(bào)酬昂秃。此后的兩

個(gè)月間禀梳,slush礦池的算力從1 400Mhash/s增長到了60Ghash/s杜窄。

現(xiàn)在既然已經(jīng)創(chuàng)建好了一個(gè)候選區(qū)塊,挖礦節(jié)點(diǎn)就準(zhǔn)備拿它來挖礦算途。礦工們爭相

完成一種基于加密哈希算法的數(shù)學(xué)難題塞耕,獲勝者有權(quán)在區(qū)塊鏈上進(jìn)行交易記錄并

得到獎(jiǎng)勵(lì)。每 10 分鐘左右生成一個(gè)不超過 1 MB 大小的新區(qū)塊嘴瓤,這個(gè)區(qū)塊記錄

了這 10 分鐘內(nèi)發(fā)生并驗(yàn)證過的交易內(nèi)容扫外。礦工們在挖礦過程中會(huì)得到兩種類型

的獎(jiǎng)勵(lì):創(chuàng)建新區(qū)塊的新幣獎(jiǎng)勵(lì),以及區(qū)塊中所含交易的交易費(fèi)廓脆。

一旦某一個(gè)挖礦節(jié)點(diǎn)在算力競爭中勝出筛谚,優(yōu)先得到了數(shù)學(xué)難題的答案,會(huì)立刻將

這個(gè)區(qū)塊發(fā)給它的所有相鄰節(jié)點(diǎn)停忿,這些節(jié)點(diǎn)在接收并

?

這個(gè)新區(qū)塊后驾讲,也

會(huì)繼續(xù)傳播此區(qū)塊,每個(gè)節(jié)點(diǎn)都會(huì)將它作為新區(qū)塊加到自身節(jié)點(diǎn)的區(qū)塊鏈副本

中席赂。

工作量證明

創(chuàng)幣交易

Coinbase獎(jiǎng)勵(lì)和礦工費(fèi)

Proof of Work蝎毡,通過計(jì)算來猜測一個(gè)數(shù)值(nonce)。具體到比特幣氧枣,礦工必須

要在滿足全網(wǎng)目標(biāo)難度的情況下求解SHA256算法。優(yōu)先完成工作量證明的礦工可

以獲得比特幣獎(jiǎng)勵(lì)别垮。保證在一段時(shí)間內(nèi)便监,系統(tǒng)中只能出現(xiàn)少數(shù)合法提案。

哈希問題具有不可逆的特點(diǎn)碳想,只有通過暴力計(jì)算找到問題的答案烧董。一旦獲得符合

要求的nonce,說明在概率上是付出了對應(yīng)的算力胧奔。誰的算力多逊移,誰最先解決問題

的概率就越大。

區(qū)塊中的第一筆交易是筆特殊交易龙填,稱為創(chuàng)幣交易或者Coinbase交易胳泉,這個(gè)交易

是挖礦節(jié)點(diǎn)構(gòu)造并用來獎(jiǎng)勵(lì)礦工們所做的貢獻(xiàn)的。

創(chuàng)幣交易的輸入:創(chuàng)幣交易于其他交易的不同點(diǎn)在于其交易輸入沒有

UTXO岩遗,也沒有“輸入腳本”扇商。這個(gè)字段被Coinbase數(shù)據(jù)替代,除開始的

幾個(gè)字節(jié)外宿礁,礦工可以任意使用Coinbase的其他部分案铺,隨意填充任何數(shù)

據(jù)。因此梆靖,中本聰在創(chuàng)世區(qū)塊的Coinbase中填入了這樣的數(shù)據(jù) “The

Times 03/Jan/ 2009 Chancellor on brink of secondbailout for

banks”控汉。

創(chuàng)幣交易的輸出:由挖礦勝出的礦工構(gòu)建并將創(chuàng)幣獎(jiǎng)勵(lì)和礦工費(fèi)一起支

付給了自己的比特幣錢包地址笔诵。

礦工們在挖礦過程中會(huì)得到兩種類型的獎(jiǎng)勵(lì):創(chuàng)建新區(qū)塊的新幣獎(jiǎng)勵(lì),以及區(qū)塊

中所含交易的交易費(fèi)姑子。比特幣的貨幣是通過挖礦發(fā)行的乎婿,大約每四年減少一半。

2009年1月每個(gè)區(qū)塊獎(jiǎng)勵(lì)50個(gè)比特幣壁酬,到2012年11月減半為每個(gè)區(qū)塊獎(jiǎng)勵(lì)25個(gè)比特

幣次酌,現(xiàn)在每個(gè)新區(qū)塊獎(jiǎng)勵(lì)12.5個(gè)比特幣。比特幣挖礦獎(jiǎng)勵(lì)以指數(shù)方式遞減舆乔,直到

2140年所有的比特幣全部發(fā)行完畢岳服,不會(huì)再有新的比特幣產(chǎn)生。

例如:隔壁老王的挖礦節(jié)點(diǎn)構(gòu)造了一個(gè)創(chuàng)幣交易希俩,支付給自己12.59094928枚比特

幣吊宋,其中12.5個(gè)比特幣是Coinbase獎(jiǎng)勵(lì),0.09094928比特幣是礦工費(fèi)颜武。

比特幣交易生命周期的最后一步是將新區(qū)塊連接至有最大工作量證明的鏈中璃搜。一

個(gè)節(jié)點(diǎn)一旦驗(yàn)證了一個(gè)新的區(qū)塊,它將嘗試將新的區(qū)塊連接到到現(xiàn)存的區(qū)塊鏈組

裝起來鳞上。

節(jié)點(diǎn)維護(hù)三種區(qū)塊:第一種是連接到主鏈上的區(qū)塊这吻,第二種是從主鏈上產(chǎn)生分支

的(備用鏈)區(qū)塊 ,最后一種是在已知鏈中沒有找到已知父區(qū)塊的篙议。在驗(yàn)證過程

中唾糯,一旦發(fā)現(xiàn)有不符合標(biāo)準(zhǔn)的地方,驗(yàn)證就會(huì)失敗鬼贱,區(qū)塊會(huì)被節(jié)點(diǎn)拒絕并不會(huì)加

入到任何一條鏈中移怯。

如果節(jié)點(diǎn)收到了一個(gè)有效的區(qū)塊,而在現(xiàn)有的區(qū)塊鏈中卻未找到它的父區(qū)塊这难,那

么這個(gè)區(qū)塊被認(rèn)為是“孤塊”舟误。孤塊會(huì)被保存在孤塊池中,直到它們的父區(qū)塊被

節(jié)點(diǎn)收到姻乓。

每一個(gè)節(jié)點(diǎn)總是選擇并嘗試延長代表累計(jì)了最大工作量證明的區(qū)塊鏈嵌溢,也就是

最長的或最大累計(jì)難度的鏈,只要所有的節(jié)點(diǎn)選擇最長累計(jì)難度的區(qū)塊鏈蹋岩,整

個(gè)比特幣網(wǎng)絡(luò)最終會(huì)收斂到一致的狀態(tài)堵腹。

創(chuàng)世區(qū)塊

難度目標(biāo)與難度調(diào)整

區(qū)塊鏈的分叉

區(qū)塊瀏覽器

區(qū)塊鏈里的第一個(gè)區(qū)塊創(chuàng)建于2009年,被稱為創(chuàng)世區(qū)塊星澳。它是區(qū)塊鏈里面所有區(qū)

塊的共同祖先疚顷,這意味著你從任一區(qū)塊,循鏈向后回溯,最終都將到達(dá)創(chuàng)世區(qū)

塊腿堤。

創(chuàng)世區(qū)塊的哈希值為:

000000000019d6689c085ae165831e934ff763ae46a2a6c172b3f1b60a8ce26f

在區(qū)塊瀏覽網(wǎng)站 (blockchain.info) 搜索這個(gè)區(qū)塊哈希值阀坏,你會(huì)發(fā)現(xiàn)這個(gè)哈希值

來描述這一區(qū)塊內(nèi)容的頁面:

比特幣的區(qū)塊平均每10分鐘生成一個(gè)。這就是比特幣貨幣發(fā)行速率和交易達(dá)成速

度的基礎(chǔ)笆檀,必須始終保持恒定忌堂。隨著技術(shù)發(fā)展,計(jì)算機(jī)性能將飛速提升酗洒。此外士修,

參與挖礦的人和計(jì)算機(jī)也會(huì)不斷變化。為了能讓新區(qū)塊的保持10分鐘一個(gè)的產(chǎn)生

速率樱衷,挖礦的難度必須根據(jù)這些變化進(jìn)行調(diào)整棋嘲。

2009年12月30日,比特幣挖礦難度首次增長矩桂。尋找一個(gè)比特幣區(qū)塊需要整個(gè)網(wǎng)絡(luò)

花費(fèi)10分鐘來處理沸移,每發(fā)現(xiàn)2,016個(gè)區(qū)塊時(shí)會(huì)根據(jù)前2,016個(gè)區(qū)塊完成的時(shí)間對難

度進(jìn)行調(diào)整。

New Difficulty = Old Difficulty * (Actual Time of Last 2016 Blocks /

20160 minutes)

分叉發(fā)生在兩名礦工在較短的時(shí)間內(nèi)侄榴,各自都算得了工作量證明解的時(shí)候雹锣。兩個(gè)

礦工在各自的候選區(qū)塊一發(fā)現(xiàn)解,便立即傳播自己的“獲勝”區(qū)塊到網(wǎng)絡(luò)中癞蚕,先

是傳播給鄰近的節(jié)點(diǎn)而后傳播到整個(gè)網(wǎng)絡(luò)蕊爵。

由于每個(gè)礦工的區(qū)塊數(shù)據(jù)都不一樣,所以他們解題得出的結(jié)果也是不一樣的桦山,都

是正確答案在辆,只是區(qū)塊不同。區(qū)塊鏈在這個(gè)時(shí)刻度苔,出現(xiàn)了兩個(gè)都滿足要求的不同

區(qū)塊。不同的礦工看到這兩個(gè)區(qū)塊是有先后順序的浑度,通常情況下寇窑,礦工們會(huì)把自

己先看到的區(qū)塊復(fù)制過來,然后接著在這個(gè)區(qū)塊開始新的挖礦工作箩张。這時(shí)分叉就

產(chǎn)生了甩骏。

從分叉的區(qū)塊起,由于分叉的鏈上礦工的數(shù)量不同先慷,因此算力也有差別饮笛,兩條鏈

的增長速度也是不一樣的,總有一條鏈的長度要超過另一條论熙。當(dāng)?shù)V工發(fā)現(xiàn)全網(wǎng)有

一條更長的鏈時(shí)福青,他就會(huì)拋棄他當(dāng)前分叉的鏈,而繼續(xù)在更長的主鏈上進(jìn)行挖礦

工作。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末无午,一起剝皮案震驚了整個(gè)濱河市媒役,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌宪迟,老刑警劉巖酣衷,帶你破解...
    沈念sama閱讀 216,651評論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異次泽,居然都是意外死亡穿仪,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,468評論 3 392
  • 文/潘曉璐 我一進(jìn)店門意荤,熙熙樓的掌柜王于貴愁眉苦臉地迎上來啊片,“玉大人,你說我怎么就攤上這事袭异∧屏” “怎么了?”我有些...
    開封第一講書人閱讀 162,931評論 0 353
  • 文/不壞的土叔 我叫張陵御铃,是天一觀的道長碴里。 經(jīng)常有香客問我,道長上真,這世上最難降的妖魔是什么咬腋? 我笑而不...
    開封第一講書人閱讀 58,218評論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮睡互,結(jié)果婚禮上根竿,老公的妹妹穿的比我還像新娘。我一直安慰自己就珠,他們只是感情好寇壳,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,234評論 6 388
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著妻怎,像睡著了一般壳炎。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上逼侦,一...
    開封第一講書人閱讀 51,198評論 1 299
  • 那天匿辩,我揣著相機(jī)與錄音,去河邊找鬼榛丢。 笑死铲球,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的晰赞。 我是一名探鬼主播稼病,決...
    沈念sama閱讀 40,084評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼选侨,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了溯饵?” 一聲冷哼從身側(cè)響起侵俗,我...
    開封第一講書人閱讀 38,926評論 0 274
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎丰刊,沒想到半個(gè)月后隘谣,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,341評論 1 311
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡啄巧,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,563評論 2 333
  • 正文 我和宋清朗相戀三年寻歧,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片秩仆。...
    茶點(diǎn)故事閱讀 39,731評論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡码泛,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出澄耍,到底是詐尸還是另有隱情噪珊,我是刑警寧澤,帶...
    沈念sama閱讀 35,430評論 5 343
  • 正文 年R本政府宣布齐莲,位于F島的核電站痢站,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏选酗。R本人自食惡果不足惜阵难,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,036評論 3 326
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望芒填。 院中可真熱鬧呜叫,春花似錦、人聲如沸殿衰。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,676評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽闷祥。三九已至娱颊,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間蜀踏,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,829評論 1 269
  • 我被黑心中介騙來泰國打工掰吕, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留果覆,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 47,743評論 2 368
  • 正文 我出身青樓殖熟,卻偏偏與公主長得像局待,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,629評論 2 354

推薦閱讀更多精彩內(nèi)容