學(xué)習(xí)區(qū)塊鏈的第一步首先是要搞清楚區(qū)塊鏈相關(guān)的一些概念,只有對(duì)概念有了基本的認(rèn)識(shí),才能在后續(xù)的學(xué)習(xí)中事半功倍。
如果你讀懂了我下面分類的邏輯,說明你已經(jīng)理解了區(qū)塊鏈的原理。
中本聰
中本聰有可能是一個(gè)人或一群人的名字。中本聰是比特幣的設(shè)計(jì)者,同時(shí)也創(chuàng)建了比特幣的最初實(shí)現(xiàn),比特幣核心。作為實(shí)現(xiàn)的一部分,他們還發(fā)明了第一個(gè)區(qū)塊鏈數(shù)據(jù)庫(kù)。在這個(gè)過程中,他們是第一個(gè)為數(shù)字貨幣解決了雙花問題的人或組織。但他們的真實(shí)身份仍然未知。雙重支付
雙重支付是成功支付了1次以上的情況。比特幣通過對(duì)添加到區(qū)塊中的每筆交易進(jìn)行驗(yàn)證來防止雙重支付,確保交易的輸入沒有被支付過。
SHA256
安全哈希是有NIST(國(guó)家標(biāo)準(zhǔn)技術(shù)研究所)發(fā)布的加密哈希函數(shù)族。BASE58
默克爾根
默克爾樹的根是樹的根節(jié)點(diǎn),該節(jié)點(diǎn)為樹中所有節(jié)點(diǎn)對(duì)的多次哈希計(jì)算結(jié)果。區(qū)塊頭必須包括區(qū)塊中所有交易哈希計(jì)算得到的有效默克爾根。默克爾樹
生成一棵完整的Merkle樹需要遞歸地對(duì)哈希節(jié)點(diǎn)對(duì)進(jìn)行哈希,并將新生成的哈希節(jié)點(diǎn)插入到Merkle 樹中,直到只剩一個(gè)哈希節(jié)點(diǎn),該節(jié)點(diǎn)就是Merkle 樹的根。在比特幣中,葉子節(jié)點(diǎn)來自于單個(gè)區(qū)塊中的交易。橢圓曲線算法ECDSA
橢圓曲線數(shù)字簽名算法(ECDSA)是比特幣使用的加密算法,以確保資金只能被其正確擁有者支付。RIPEMD-160
RIPEMD-160是一個(gè)160位的加密哈希函數(shù)。RIPEMD-160是RIPEMD的加強(qiáng)版,其哈希計(jì)算后的結(jié)果是160位哈希值。通過RIPEMD-160加密期望能實(shí)現(xiàn)在未來的10年或更長(zhǎng)時(shí)間都是安全的。LevelDB
LevelDB是一個(gè)開源的硬盤鍵值對(duì)數(shù)據(jù)庫(kù)。LevelDB是一個(gè)用于持久性綁定多個(gè)平臺(tái)的輕量級(jí)、單用途的庫(kù)。布隆過濾器
比特幣
“比特幣”既可以指這種虛擬貨幣單位,也指比特幣網(wǎng)絡(luò)或者網(wǎng)絡(luò)節(jié)點(diǎn)使用的比特幣軟件。地址
比特幣地址(例如:1DSrfJdB2AnWaFNgSbv3MZC2m74996JafV)由一串字符和數(shù)字組成。它其實(shí)是通過對(duì)160位二進(jìn)制公鑰哈希值進(jìn)行base58check編碼后的信息。就像別人向你的email地址發(fā)送電子郵件一樣,他可以通過你的比特幣地址向你發(fā)送比特幣。coinbase
一個(gè)用于為創(chuàng)幣交易提供專門輸入的特殊字段。coinbase允許聲明區(qū)塊獎(jiǎng)勵(lì),并為任意數(shù)據(jù)提供多大100字節(jié)。不要與創(chuàng)幣交易混淆。
錢包
錢包指保存比特幣地址和私鑰的軟件,可以用它來接受、發(fā)送、儲(chǔ)存你的比特幣。冷錢包
- 熱錢包
硬錢包
硬件錢包是一種特殊的比特幣錢包,硬件錢包可以將用戶的私鑰存儲(chǔ)在安全的硬件設(shè)備中。紙錢包
SPV
簡(jiǎn)化支付驗(yàn)證是在無需下載所有區(qū)塊的情況對(duì)特定交易進(jìn)行驗(yàn)證的方法。該方法被用在一些比特幣輕量級(jí)客戶端中。WIF(錢包導(dǎo)入格式)
錢包導(dǎo)入格式是一個(gè)數(shù)據(jù)交換格式,設(shè)計(jì)用于允許導(dǎo)出和導(dǎo)入單個(gè)私鑰,該私鑰通過標(biāo)志標(biāo)明是否使用壓縮公鑰。密鑰(私鑰)
用來解鎖對(duì)應(yīng)(錢包)地址的一串字符,例如5J76sF8L5jTtzE96r66Sf8cka9y44wdpJjMwCxR3tzLh3ibVPxh+。HD協(xié)議
層級(jí)確定性(HD)密鑰創(chuàng)建和傳輸協(xié)議(BIP32),該協(xié)議允許按層級(jí)方式從父密鑰創(chuàng)建子密鑰。HD錢包
使用創(chuàng)建層次確定的鑰匙和BIP32傳輸協(xié)議的錢包。.HD錢包種子
HD錢包種子或根種子是一個(gè)用于為HD錢包生成主私鑰和主鏈碼所需種子的潛在簡(jiǎn)短數(shù)值。
交易(轉(zhuǎn)賬)
coinbase交易
區(qū)塊中的第一個(gè)交易。該交易是由礦工創(chuàng)建的,它包含單個(gè)coinbase。不要與Coinbase混淆。
孤立交易
孤立交易是指那些因?yàn)槿鄙僖粋€(gè)或多個(gè)輸入交易而無法進(jìn)入交易池的交易。交易輸出
交易輸出(TxOut)是交易中的輸出,交易輸出中包含兩個(gè)字段:1.輸出值字段:用于傳輸0或更多聰;2.公鑰腳本:用于確定這些聰需在滿足什么條件的情況下才可花費(fèi)。交易池
比特幣內(nèi)存池是區(qū)塊中所有交易數(shù)據(jù)的集合,這些交易已經(jīng)被比特幣節(jié)點(diǎn)驗(yàn)證,但為被確認(rèn)。UTXO
UTXO是未花費(fèi)交易輸出,UTXO可以作為新交易的輸入。
OP_RETURN交易
OP_RETURN在比特幣核心0.9.0中默認(rèn)的一種被傳播和挖出的交易類型,在隨后的版本中添加任意數(shù)據(jù)至可證明的未花費(fèi)公鑰腳本中,全節(jié)點(diǎn)中無需將該腳本存儲(chǔ)至他們的UTXO數(shù)據(jù)庫(kù)中。不要與OP_RETURN操作碼混淆。多重簽名
多重簽名指的是需要多于一個(gè)密鑰來驗(yàn)證一個(gè)比特幣交易。鎖定時(shí)間
鎖定時(shí)間(技術(shù)上來說是nLockTime)是交易的一部分,其表明該交易被添加至區(qū)塊鏈中的最早時(shí)間或區(qū)塊。哈希時(shí)間鎖定合約
哈希時(shí)間鎖定合約(HTLC)是一類支付方式,其使用哈希鎖和時(shí)間鎖來鎖定交易。解鎖需要接收方提供通過加密支付證明承認(rèn)在截止日期之前收到了支付,或者接收方喪失了認(rèn)領(lǐng)支付的能力,此時(shí)支付金額將返回給支付方。
區(qū)塊
一個(gè)區(qū)塊就是若干交易數(shù)據(jù)的集合,它會(huì)被標(biāo)記上時(shí)間戳和之前一個(gè)區(qū)塊的獨(dú)特標(biāo)記。區(qū)塊頭經(jīng)過哈希運(yùn)算后會(huì)生成一份工作量證明,從而驗(yàn)證區(qū)塊中的交易。有效的區(qū)塊經(jīng)過全網(wǎng)絡(luò)的共識(shí)后會(huì)被追加到主區(qū)塊鏈中。創(chuàng)始?jí)K
舊塊
舊塊是那些被成功挖出,但是沒有包含在當(dāng)前主鏈上的區(qū)塊,很有可能是同一高度的其他區(qū)塊優(yōu)先擴(kuò)展了區(qū)塊鏈長(zhǎng)度導(dǎo)致的。孤塊
孤塊由于父區(qū)塊未被本地節(jié)點(diǎn)處理的區(qū)塊,所以他們還不能被完全驗(yàn)證。區(qū)塊鏈
區(qū)塊鏈?zhǔn)且淮ㄟ^驗(yàn)證的區(qū)塊,當(dāng)中的每一個(gè)區(qū)塊都與上一個(gè)相連,一直連到創(chuàng)世區(qū)塊。
挖礦
礦工費(fèi)
交易的發(fā)起者通常會(huì)向網(wǎng)絡(luò)繳納一筆礦工費(fèi),用以處理這筆交易。大多數(shù)的交易需要0.5毫比特幣的礦工費(fèi)。獎(jiǎng)勵(lì)
每一個(gè)新區(qū)塊中都有一定量新創(chuàng)造的比特幣用來獎(jiǎng)勵(lì)算出工作量證明的礦工。現(xiàn)階段每一區(qū)塊有12.5比特幣的獎(jiǎng)勵(lì)。共識(shí)
當(dāng)網(wǎng)絡(luò)中的許多節(jié)點(diǎn),通常是大部分節(jié)點(diǎn),都擁有相同的本地驗(yàn)證的最長(zhǎng)區(qū)塊時(shí),稱為共識(shí)。不要與共識(shí)規(guī)則混淆。共識(shí)規(guī)則
全節(jié)點(diǎn)與其他節(jié)點(diǎn)保持共識(shí)的區(qū)塊驗(yàn)證規(guī)則。不要與共識(shí)混淆。工作量證明(PoW)
工作量證明指通過有效計(jì)算得到的一小塊數(shù)據(jù)。具體到比特幣,礦工必須要在滿足全網(wǎng)目標(biāo)難度的情況下求解SHA256算法。權(quán)益證明
權(quán)益證明(POS)是一種方法,加密貨幣區(qū)塊鏈網(wǎng)絡(luò)獲得分發(fā)共識(shí)。POS會(huì)讓用戶證明其擁有的資產(chǎn)總量(他們?cè)跀?shù)字貨幣中的權(quán)益)。隨機(jī)數(shù)
隨機(jī)數(shù)是比特幣區(qū)塊中一個(gè)32位(4字節(jié))的字段,在設(shè)定了該值后,才能計(jì)算區(qū)塊的哈希值,其哈希值是以多個(gè)0開頭的。區(qū)塊中的其他字段值是不變的,因?yàn)樗麄冇写_定的含義。難度
整個(gè)網(wǎng)絡(luò)會(huì)通過調(diào)整“難度”這個(gè)變量來控制生成工作量證明所需要的計(jì)算力。難度重定
全網(wǎng)中每新增2016個(gè)區(qū)塊,全網(wǎng)難度將重新計(jì)算,該新難度值將依據(jù)前2016個(gè)區(qū)塊的哈希算力而定。難度目標(biāo)
使整個(gè)網(wǎng)絡(luò)的計(jì)算力大致每10分鐘產(chǎn)生一個(gè)區(qū)塊所需要的難度數(shù)值即為難度目標(biāo)。超額隨機(jī)數(shù)
隨著難度增加,礦工通常在循環(huán)便利4億次隨機(jī)數(shù)值后仍未找到區(qū)塊。因?yàn)閏oinbase腳本可以存儲(chǔ)2到100字節(jié)的數(shù)據(jù),礦工開始使用這個(gè)存儲(chǔ)空間作為超額nonce空間,允許他們利用一個(gè)更大范圍的區(qū)塊頭哈希值來尋找有效的區(qū)塊。
- 分叉
分叉也被稱為意外分叉,是在兩個(gè)或多個(gè)區(qū)塊擁有同一區(qū)塊高度時(shí)發(fā)生的,此時(shí)使區(qū)塊鏈產(chǎn)生了分叉。典型情況是兩個(gè)或多個(gè)區(qū)塊礦工幾乎在同一時(shí)刻發(fā)現(xiàn)了區(qū)塊。共識(shí)攻擊的情況下也會(huì)出現(xiàn)分叉。
硬分叉
硬分叉,也叫硬分叉改變,是區(qū)塊鏈中一個(gè)永久分歧。通常在已按照新的共識(shí)規(guī)則進(jìn)行了版本升級(jí)的節(jié)點(diǎn)產(chǎn)生了新區(qū)塊時(shí),那些未升級(jí)節(jié)點(diǎn)無法驗(yàn)證這些新區(qū)塊時(shí)產(chǎn)生硬分叉。不要與分叉、軟分叉或者Git分叉混淆。軟分叉
軟分叉是區(qū)塊鏈中的一個(gè)短暫分叉,通常是由于礦工在不知道新共識(shí)規(guī)則的情況下,未對(duì)其使用節(jié)點(diǎn)進(jìn)行升級(jí)而產(chǎn)生的。不要與分叉、硬分叉、軟分叉或者Git分叉混淆。
- 礦池
礦池一種挖礦方式,在礦池中多個(gè)客戶端共同貢獻(xiàn)算力來產(chǎn)生區(qū)塊,然后根據(jù)貢獻(xiàn)算力大小來分配區(qū)塊獎(jiǎng)勵(lì)。
腳本
比特幣使用腳本系統(tǒng)來處理交易。腳本有著類Forth語(yǔ)言、簡(jiǎn)單、基于堆棧以及從左向右處理的特點(diǎn)。腳本故意限定為非圖靈完備的,沒有循環(huán)計(jì)算功能。ScriptPubKey (公鑰腳本)
腳本公鑰或者公鑰腳本是包含在交易輸出中的腳本。該腳本設(shè)置了比特幣花費(fèi)需滿足的條件。滿足條件的數(shù)據(jù)可以由簽名腳本提供。ScriptSig (簽名腳本)
簽名腳本是由支付端生成的數(shù)據(jù),該數(shù)據(jù)幾乎總是被用作滿足公鑰腳本的變量。P2PKH
支付到比特幣地址的交易包含支付公鑰哈希腳本(P2PKH)。由P2PKH腳本鎖定的交易輸出可以通過給出由相應(yīng)私鑰創(chuàng)建的公鑰和數(shù)字簽名來解鎖(消費(fèi))。P2SH
P2SH是一種強(qiáng)大的、新型的、且能大大簡(jiǎn)化復(fù)雜交易腳本的交易類型而引入。通過使用P2SH,詳細(xì)描述花費(fèi)輸出條件的復(fù)雜腳本(贖回腳本)將不會(huì)出現(xiàn)在鎖定腳本中。相反,只有贖回腳本哈希包含在鎖定腳本中。P2SH地址
P2SH地址是基于Base58 編碼的一個(gè)含有20 個(gè)字節(jié)哈希的腳本。P2SH地址采用“5”前綴。這導(dǎo)致基于Base58 編碼的地址以“3”開頭。P2SH 地址隱藏了所有的復(fù)雜性,因此,運(yùn)用其進(jìn)行支付的人將不會(huì)看到腳本。P2WPKH
P2WPKH簽名包含了與P2PKH花費(fèi)相同的信息。但是簽名信息放置于見證字段,而不是簽名腳本字段中。公鑰腳本也被修改了。P2WSH
P2WSH與P2SH的不同之處在于加密證據(jù)存放位置從腳本簽名字段轉(zhuǎn)變至見證字段,公鑰腳本字段也被改變。
BIP
比特幣改進(jìn)提議 (Bitcoin Improvement Proposals的縮寫),指比特幣社區(qū)成員所提交的一系列改進(jìn)比特幣的提議。例如,BIP0021是一項(xiàng)改進(jìn)比特幣統(tǒng)一資源標(biāo)識(shí)符(URI)計(jì)劃的提議。隔離見證
隔離見證是比特幣協(xié)議的一個(gè)升級(jí)建議,該建議技術(shù)創(chuàng)新性地將簽名數(shù)據(jù)從比特幣交易中分離出來。隔離見證是一個(gè)推薦的軟分叉方案;該變化將從技術(shù)上使得比特幣協(xié)議規(guī)則更嚴(yán)謹(jǐn)。染色幣
比特幣2.0開源協(xié)議允許開發(fā)者在比特幣區(qū)塊鏈之上,利用它的超越貨幣的功能創(chuàng)建數(shù)字資產(chǎn)。閃電網(wǎng)絡(luò)
閃電網(wǎng)絡(luò)是哈希時(shí)間鎖定合約(HTLCs)的一種建議實(shí)現(xiàn)方式。閃電網(wǎng)絡(luò)通過雙向支付通道方式允許支付方通過多個(gè)點(diǎn)對(duì)點(diǎn)支付通道安全地完成支付。這將允許一種支付網(wǎng)絡(luò)的構(gòu)建,該網(wǎng)絡(luò)中的一方可以支付給其他任何一方,即使在他們雙方?jīng)]有直接建立支付通道的情況。