摘要:區(qū)塊鏈技術(shù)基礎(chǔ)什么是區(qū)塊鏈技術(shù)運(yùn)行區(qū)塊鏈客戶端的計(jì)算節(jié)點(diǎn)彼此可以相互通信。區(qū)塊鏈的組成模塊區(qū)塊鏈賬本。區(qū)塊鏈技術(shù)的意義數(shù)據(jù)不可篡改。區(qū)塊鏈中會(huì)對區(qū)塊頭進(jìn)行哈希計(jì)算,得出該區(qū)塊的哈希值。這保證了每個(gè)區(qū)塊被加入鏈后不可被修改。
區(qū)塊鏈技術(shù)基礎(chǔ) 什么是區(qū)塊鏈技術(shù)?
運(yùn)行區(qū)塊鏈客戶端的計(jì)算節(jié)點(diǎn)彼此可以相互通信。
每個(gè)節(jié)點(diǎn)維護(hù)一個(gè)賬本。
每個(gè)節(jié)點(diǎn)的收支記錄都會(huì)廣播給其他節(jié)點(diǎn)。
篩選出一個(gè)節(jié)點(diǎn)作為一段時(shí)間的總記錄。
其它節(jié)點(diǎn)接收該被選中的節(jié)點(diǎn)的記錄,和自己賬本對照后,沒有問題則進(jìn)行存儲(chǔ)。
被選中的節(jié)點(diǎn)會(huì)因?yàn)檫@段時(shí)間付出的勞動(dòng)而獲得一定的報(bào)酬。
節(jié)點(diǎn)通過非對稱加密的公鑰來表示身份,通過加密來傳遞數(shù)據(jù)。
區(qū)塊鏈的組成模塊區(qū)塊鏈賬本。區(qū)塊鏈賬本用來記錄數(shù)據(jù),區(qū)塊分為區(qū)塊頭和區(qū)塊體,區(qū)塊頭會(huì)存儲(chǔ)上一個(gè)區(qū)塊的哈希值,這樣各個(gè)區(qū)塊就串聯(lián)起來,區(qū)塊頭通過梅克爾根關(guān)聯(lián)記錄的交易事務(wù)。如果修改鏈中的某個(gè)數(shù)據(jù)塊,則會(huì)導(dǎo)致該數(shù)據(jù)塊無法鏈入?yún)^(qū)塊鏈賬本,在其它節(jié)點(diǎn)中驗(yàn)證時(shí)會(huì)被發(fā)現(xiàn),所以區(qū)塊鏈賬本可以防止對數(shù)據(jù)的篡改。
共識(shí)機(jī)制。一種篩選算法,可以選出特定的節(jié)點(diǎn),該節(jié)點(diǎn)會(huì)作為大家對賬的參考。
密碼算法。其中包括,計(jì)算區(qū)塊hash值得算法,計(jì)算區(qū)塊中交易事務(wù)的hash值和梅克爾根的算法,創(chuàng)建賬戶、簽名交易的算法等。
腳本系統(tǒng)。腳本系統(tǒng)驅(qū)動(dòng)著節(jié)點(diǎn)收發(fā)數(shù)據(jù),通過實(shí)現(xiàn)不同功能的腳本來實(shí)現(xiàn)不同的業(yè)務(wù)。
網(wǎng)絡(luò)路由。在由這些節(jié)點(diǎn)組成的網(wǎng)絡(luò)中,沒有固定節(jié)點(diǎn)路由服務(wù)器,所以每個(gè)節(jié)點(diǎn)都起到了路由服務(wù)者和使用者的角色,通過路由進(jìn)行數(shù)據(jù)的交換。
什么是挖礦挖礦就是競爭獲得區(qū)塊的打包權(quán),通過計(jì)算打包獲得報(bào)酬。
什么是難度值?
難度值描述了獲得打包權(quán)的門檻,計(jì)算所得結(jié)果要小于該難度值才有機(jī)會(huì)獲得打包權(quán),每段時(shí)間整個(gè)系統(tǒng)會(huì)更新難度值,保持10分鐘就能計(jì)算出一個(gè)區(qū)塊的速度。
初始難度值很大,很容易競爭獲得,如下是0號(hào)區(qū)塊鏈的難度值:
0x00000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
值越大越容易滿足,隨著計(jì)算能力提升,為了保持每10分鐘創(chuàng)建一個(gè)區(qū)塊的速度,值會(huì)逐漸減小,也越來越難滿足。初始難度值表述信息如下,bits是上述值的壓縮值,可以通過0x00FFFF*2^(8*(0x1D-3)恢復(fù)上述值(近似值)。將0號(hào)區(qū)塊的難度作為1,當(dāng)前difficulty為初始難度值除以當(dāng)前難度值:
"nonce": 2083236893, "bits": "1d00ffff", "difficulty": 1
如何獲得打包權(quán)?
每筆交易都會(huì)通過廣播的形式發(fā)送給其它節(jié)點(diǎn),所以計(jì)算節(jié)點(diǎn)會(huì)拉取一段時(shí)間內(nèi)緩存的交易記錄,然后采用如下公式計(jì)算:
SHA256(SHA256(version + prev_ hash + merkle_ root + ntime + nbits + nonce)) < TARGET
如果計(jì)算出的值小于TARGET,也就是目標(biāo)難度值,就算成功了。參數(shù)解釋如下:
名稱 | 含義 | 描述 |
---|---|---|
version | 區(qū)塊的版本號(hào) | 固定值 |
prev_hash | 前一個(gè)區(qū)塊的hash值 | 固定值 |
merkle_root | 準(zhǔn)備打包的交易事務(wù)hash樹的根值,也就是梅克爾根值 | 可變的,由獲取的交易事務(wù)決定的,獲取交易事務(wù)也是有一定優(yōu)先級規(guī)則的,比如根據(jù)手續(xù)費(fèi)大小 |
ntime | 區(qū)塊時(shí)間戳 | 要大于前11個(gè)區(qū)塊的平均時(shí)間戳,不得超過當(dāng)前網(wǎng)絡(luò)時(shí)間2個(gè)小時(shí),可能小于前一個(gè)區(qū)塊的時(shí)間戳 |
nbits | 當(dāng)前難度值 | 固定值 |
nonce | 隨機(jī)數(shù) | 0~2^32的數(shù)值 |
想要小于目標(biāo)難度值,需要不斷的嘗試各種參數(shù)組合,這個(gè)過程消耗大量計(jì)算資源。一旦計(jì)算成功,就會(huì)廣播新的區(qū)塊,其它客戶端驗(yàn)證通過后會(huì)寫到自己的區(qū)塊鏈賬本中。
什么是挖礦?
當(dāng)獲得打包權(quán)后,整個(gè)區(qū)塊鏈系統(tǒng)會(huì)給予該客戶端賬戶一定的獎(jiǎng)勵(lì),這個(gè)獎(jiǎng)勵(lì)就是打包的交易事務(wù)的第一條記錄,這個(gè)獎(jiǎng)勵(lì)相當(dāng)于發(fā)行新的貨幣。整個(gè)比特幣的數(shù)目是有限的,每隔4年獎(jiǎng)勵(lì)的比特幣減半,真到2140年所有的比特幣將被挖完,到時(shí)挖礦的收入來源為交易的手續(xù)費(fèi)。
多個(gè)節(jié)點(diǎn)符合條件這么辦?
如果同時(shí)多個(gè)節(jié)點(diǎn)計(jì)算出符合條件的區(qū)塊,則會(huì)一起廣播,最后傳播最廣,處于最長鏈中的區(qū)塊將會(huì)被保留。
比特幣地址如何生成隨機(jī)數(shù)生成器產(chǎn)生一個(gè)隨機(jī)數(shù)作為私鑰。
私鑰作為參數(shù),用SECP256K1算法生成公鑰,SECP256K1算法是一種橢圓曲線算法。但是無法從公鑰計(jì)算出私鑰。
計(jì)算公鑰哈希值。通過SHA256和RIPEMD160計(jì)算公鑰的哈希值,確保數(shù)值的唯一性。
將地址版本號(hào)連接到公鑰哈希值,比特網(wǎng)主版本號(hào)為0x00,然后兩次SHA256取得前四個(gè)字節(jié)作為校驗(yàn)值。
將版本號(hào)+公鑰哈希值+校驗(yàn)值連接起來,進(jìn)行BASE58編碼,最后得到比特幣地址。
比特幣如何驗(yàn)證一個(gè)交易SPV錢包的驗(yàn)證過程:
下載完整的區(qū)塊鏈頭數(shù)據(jù),頭數(shù)據(jù)中包含梅克爾根。
計(jì)算出想要驗(yàn)證交易的哈希值。
根據(jù)哈希值找到對應(yīng)的區(qū)塊頭。
獲取計(jì)算梅克爾根所需要的哈希值。
計(jì)算梅克爾根。
對照梅克爾根是否正確。
根據(jù)所在區(qū)塊高度位置,可以確定該交易得到了多少確認(rèn)。
比特幣如何管理交易記錄比特幣中交易事務(wù)的模型為UTXO(Unspent Transaction Output),未花費(fèi)事務(wù)輸出。用戶擁有的UTXO相當(dāng)于他的資產(chǎn),UTXO只記錄用戶獲得的比特幣,一個(gè)未花費(fèi)事務(wù)輸出只能被使用一次。
一筆交易分為輸入和輸出。在A轉(zhuǎn)10個(gè)比特幣給B的事務(wù)中,整個(gè)模型運(yùn)轉(zhuǎn)如下:
A賬戶有兩個(gè)UTXO,分別是5個(gè)比特幣和6個(gè)比特幣。
A找出自己名下滿足10個(gè)比特幣的UTXO,可以由多個(gè)未花費(fèi)事務(wù)組成(5+6),這些UTXO作為輸入。
輸出則是B獲得10個(gè)比特幣的UTXO,A獲得1個(gè)比特幣(找零)的UTXO。
區(qū)塊鏈技術(shù)的意義數(shù)據(jù)不可篡改。
分布式存儲(chǔ),數(shù)據(jù)在多地存有備份。
匿名性。通過地址來標(biāo)識(shí)用戶,而地址是通過公鑰生成,所以僅僅通過該地址無法獲取其背后的真實(shí)用戶。
價(jià)值專遞。自成體系的信任機(jī)制,工作量表明比特幣是有價(jià)值的,比特幣可以在任何比特幣節(jié)點(diǎn)傳遞。
自動(dòng)網(wǎng)絡(luò)共識(shí)。一個(gè)交易被其它所有節(jié)點(diǎn)見證,自動(dòng)的達(dá)成了共識(shí)。
區(qū)塊鏈的發(fā)展 什么是合約?合約是大家行為的共同準(zhǔn)則,少數(shù)人的不守約對整個(gè)系統(tǒng)不造成影響。
在比特幣中,所有節(jié)點(diǎn)都遵循合約來處理每筆轉(zhuǎn)賬交易。比如A將100比特幣轉(zhuǎn)賬給B,則A所在節(jié)點(diǎn)需要驗(yàn)證使用的UTXO是否屬于A,并且保證里面有足夠的錢給B,然后將該交易記錄廣播給其它所有節(jié)點(diǎn),其它節(jié)點(diǎn)會(huì)驗(yàn)證A用作輸入的UTXO是屬于A的,且真實(shí)存在的(查看交易記錄簽名),并且這筆轉(zhuǎn)賬輸入和輸出是持平的,驗(yàn)證成功后才將該交易記錄進(jìn)區(qū)塊鏈。如果部分節(jié)點(diǎn)沒有按照上述過程轉(zhuǎn)賬和驗(yàn)證,但是整個(gè)系統(tǒng)最終會(huì)保證結(jié)果的正確。
密碼算法 哈希計(jì)算哈希計(jì)算的特性:
輸入長度是任意長度
輸出是固定長度
計(jì)算過程是有效率的
哈希函數(shù)為了滿足密碼學(xué)上的安全性,需要滿足如下條件:
抗沖突。兩個(gè)不同的輸入產(chǎn)生了相同的輸出,這就產(chǎn)生了沖突。為了滿足安全性,哈希函數(shù)需要保證找出兩個(gè)輸出相同的輸入是很困難的,需要付出很大的時(shí)間代價(jià)。
信息隱藏。獲得了哈希函數(shù)的輸出,不能倒推出輸入。
難題友好性。在已知結(jié)果需要滿足的條件下,很難找出輸入滿足該條件。
常見的哈希算法:MD5,SHA1,SHA2,SHA3。
區(qū)塊鏈中用到的哈希計(jì)算:
區(qū)塊鏈哈希。區(qū)塊鏈中會(huì)對區(qū)塊頭進(jìn)行哈希計(jì)算,得出該區(qū)塊的哈希值。該哈希值會(huì)作為下一個(gè)區(qū)塊的一部分被保存,所以該哈希值起到了一個(gè)指針的作用,將各個(gè)區(qū)塊鏈接起來。這保證了每個(gè)區(qū)塊被加入鏈后不可被修改。
梅克爾樹。梅克爾根用來驗(yàn)證區(qū)塊中交易記錄是否正確。比特幣中的梅克爾根是一個(gè)二叉梅克爾樹,首先對交易事務(wù)的哈希值兩兩結(jié)對計(jì)算出新的哈希值,然后將新的哈希值兩兩結(jié)對計(jì)算出下一個(gè)哈希值,依次遞歸,只到算出最后一個(gè)哈希值,從而構(gòu)成了一個(gè)哈希樹。梅克爾樹可以驗(yàn)證交易記錄的完整性。
非對稱加密算法常用的非對稱加密算法:
RSA。RSA算法的公鑰和私鑰是一對大質(zhì)數(shù),從公鑰和密文恢復(fù)明文的難度等價(jià)于分解兩個(gè)大質(zhì)數(shù)之積,質(zhì)數(shù)越大破解難度越大。但是計(jì)算速度較慢。
橢圓曲線密碼算法。安全性高、生成公鑰方便,存儲(chǔ)空間小。比特幣中使用的是SECP256k1算法。
編碼解碼算法ASCII編碼。常用的字節(jié)編碼。
Base64編碼。用64個(gè)字符來表示二進(jìn)制文件,所以每3個(gè)字節(jié)被表示為4個(gè)字符,不足3個(gè)字節(jié)的補(bǔ)x00。
Base58編碼。去掉了Base64中一些容易混淆,如0,O,I,1和容易轉(zhuǎn)義的+、/。
Base58Check。在Base58的基礎(chǔ)上加上了校驗(yàn)碼,比特幣在生成地址時(shí)最后就采用了Base58check,可以在接收到地址時(shí)進(jìn)行校驗(yàn),如果計(jì)算出的校驗(yàn)值和接收到的校驗(yàn)值不同,則認(rèn)為數(shù)據(jù)無效。
密碼算法具體的應(yīng)用生成賬戶地址。利用公鑰生成地址和作為賬號(hào),用私鑰驗(yàn)證賬號(hào)。
價(jià)值轉(zhuǎn)移保衛(wèi)。用私鑰簽名交易,他人用公鑰驗(yàn)證交易是本人發(fā)出。用他人公鑰加密交易數(shù)據(jù),只有接受者才能解密數(shù)據(jù)。
完整性證明。通過哈系數(shù)來校驗(yàn)區(qū)塊數(shù)據(jù)。
零知識(shí)證明。為了證明自己對某筆交易的所有權(quán),只需要解碼交易中部分內(nèi)容,就能證明所有權(quán),而不需要提交自己的密碼來驗(yàn)證。
共識(shí)算法 FLP定理(信道可靠,節(jié)點(diǎn)失效)在網(wǎng)絡(luò)可靠,存在節(jié)點(diǎn)失敗的最小化異步模型中,不存在可以解決一致性問題的確定算法。
CAP定理分布式計(jì)算不可能同時(shí)保證一致性、可用性和分區(qū)容錯(cuò)性。
一致性。所有節(jié)點(diǎn)在同一時(shí)刻,所處狀態(tài)相同。
可用性。系統(tǒng)可以正常被訪問。
分區(qū)容錯(cuò)性。因?yàn)榫W(wǎng)絡(luò)故障導(dǎo)致節(jié)點(diǎn)被劃分為不可聯(lián)通的幾塊,但系統(tǒng)仍能正常使用。
兩軍問題(信道不可靠)A->B<-CA和C需要聯(lián)合攻擊B才能取得勝利,所以雙方需要約定一個(gè)確定的時(shí)間發(fā)起進(jìn)攻,兩方的信使都需要經(jīng)過B,所以信使可能被B截獲。A發(fā)送消息給C,C需要發(fā)送確認(rèn)告訴A消息到達(dá),如果不發(fā)送確認(rèn),A同樣會(huì)認(rèn)為消息被B截獲;同樣,A收到C的確認(rèn)后,同樣需要發(fā)送確認(rèn)消息給C,否則C會(huì)認(rèn)為消息被B截獲。如此往復(fù),導(dǎo)致A和C無法達(dá)到最終的一致。
兩軍問題的關(guān)鍵點(diǎn)在于兩點(diǎn)之間的信道傳輸不可靠。
拜占庭將軍問題(信道可靠,節(jié)點(diǎn)不失效,節(jié)點(diǎn)產(chǎn)生錯(cuò)誤數(shù)據(jù))N個(gè)將軍通過傳令兵傳遞消息,并且需要達(dá)成一致的計(jì)劃,但是這N個(gè)將軍中存在叛徒,會(huì)故意發(fā)送假的消息來擾亂計(jì)劃。已經(jīng)證明,如果背叛的將軍超過了1/3,則不可能達(dá)成一致的計(jì)劃。
如何實(shí)現(xiàn)共識(shí)既然保證一致性存在上述問題,那么如何實(shí)現(xiàn)一套實(shí)際可用的的共識(shí)算法?
激勵(lì)機(jī)制:采用一定的激勵(lì)機(jī)制,依據(jù)博弈論,每個(gè)節(jié)點(diǎn)會(huì)最大化自己的利益,最后大部分節(jié)點(diǎn)會(huì)依照規(guī)則行事。
隨機(jī)性:拜占庭問題是每個(gè)將軍通過協(xié)調(diào)達(dá)到一致,如果有一個(gè)大將軍做出最后決定,那么問題就會(huì)簡單很多。在去中心化的系統(tǒng)中,如何選出這個(gè)“大將軍”呢?
根據(jù)計(jì)算力,PoW共識(shí)。
根據(jù)資源,PoS共識(shí)。
常用的共識(shí)算法:
PoW。如,比特幣。
PoS。如,PeerCoin。
DPoS。
Paxos。如,ZooKeeper。
PBFT。
Raft。如,etcd。
以下是對部分共識(shí)算法的簡單介紹。
Paxos算法Paxos算法解決的是非拜占庭問題,存在失敗節(jié)點(diǎn),但沒有惡意節(jié)點(diǎn)。
算法分為提案者、接收者。提案者發(fā)出提案,由接收者投票,超過半數(shù)則認(rèn)為提案通過。
在處理多個(gè)提案者、多個(gè)接收者場景的時(shí)候,采用了“兩階段提交”的方案:準(zhǔn)備階段解決對哪個(gè)提案做出表決,提交階段確認(rèn)提案是否通過。
Raft算法該算法通過選出一個(gè)“大將軍”角色的方式來解決一致性問題。容錯(cuò)數(shù)目為(n-1)/2。
沒有“大將軍”時(shí)會(huì)發(fā)起選舉,每個(gè)人進(jìn)行投票,票數(shù)居多的成為“大將軍”。
出現(xiàn)平票時(shí)選舉失敗,每人被分配一個(gè)隨機(jī)的睡眠時(shí)間,睡眠者只能投票,無法被選舉。第一個(gè)醒的人會(huì)發(fā)起新一輪的選舉。
被選出的“大將軍”和每個(gè)人保持心跳,一旦“大將軍”失效,則需要進(jìn)行新的選舉。
由“大將軍”負(fù)責(zé)下發(fā)指令,村長收到上級指令后會(huì)向所有人發(fā)送指令,等接收到超過半數(shù)的反饋后,“大將軍”向上級確認(rèn)數(shù)據(jù)已經(jīng)接收?!按髮④姟苯邮盏缴霞壍捻憫?yīng)后,會(huì)通知所有人數(shù)據(jù)已提交。
PBFT算法Pbft算法的基本流程主要有以下四步,f表示錯(cuò)誤節(jié)點(diǎn)數(shù)目。容錯(cuò)數(shù)目為n/3。
客戶端發(fā)送請求給主節(jié)點(diǎn)。主節(jié)點(diǎn)為隨機(jī)挑選出來的。
主節(jié)點(diǎn)廣播請求給其它節(jié)點(diǎn),節(jié)點(diǎn)執(zhí)行 pbft 算法的三階段共識(shí)流程。
節(jié)點(diǎn)處理完三階段流程后,返回消息給客戶端。
客戶端收到來自f+1個(gè)節(jié)點(diǎn)的相同消息后,代表共識(shí)已經(jīng)正確完成。
PBFT算法多應(yīng)用于聯(lián)盟鏈中,它達(dá)成共識(shí)的延時(shí)為秒級,基本滿足商業(yè)要求。
PoW工作量證明算法算法流程:
向所有節(jié)點(diǎn)廣播交易;
每個(gè)節(jié)點(diǎn)收到交易信息并放入塊中;
每一輪,獲得打包權(quán)的節(jié)點(diǎn)廣播它保留的塊;
其它節(jié)點(diǎn)驗(yàn)證塊中的交易無誤后接收該區(qū)塊;
其它節(jié)點(diǎn)將接收的區(qū)塊的哈希值放入他們創(chuàng)建的區(qū)塊中,以表示承認(rèn)該區(qū)塊的正確性。
節(jié)點(diǎn)以最長的鏈為合法的鏈。節(jié)點(diǎn)在收到一個(gè)他人的區(qū)塊后可以選擇拒絕,或者基于該區(qū)塊繼續(xù)挖礦。如果選擇拒絕,則不得不自己計(jì)算出一個(gè)正確的區(qū)塊,但是會(huì)導(dǎo)致該自己另起爐灶的鏈不會(huì)長于主流的鏈,所以自己構(gòu)造的鏈不會(huì)得到承認(rèn);根據(jù)“不利原理”,節(jié)點(diǎn)會(huì)積極的接收其他人廣播的區(qū)塊,并且基于該區(qū)塊接著挖礦。
PoW的特點(diǎn):
完全去中心化;
性能消耗高,效率低;
達(dá)成共識(shí)的周期較長;
1/2的容錯(cuò)率。
PoS股權(quán)權(quán)益證明PoS不像PoW,任何人都可以參與產(chǎn)生區(qū)塊,而是事前需要投入一些利益在區(qū)塊鏈中,投入越多則越被信任。整個(gè)流程如下:
加入PoS機(jī)制的成為持幣人,成為驗(yàn)證者validator;
根據(jù)持幣的多少挑選一個(gè)給予打包區(qū)塊的權(quán)利;
如果沒有在規(guī)定時(shí)間內(nèi)計(jì)算出新的區(qū)塊,則選擇下一個(gè)節(jié)點(diǎn)給予打包權(quán);
打包成功后進(jìn)行廣播,被大家接受后可以獲得一定的利息,這個(gè)利息通過持幣數(shù)量和幣齡決定,每次打包成功后,會(huì)清零幣齡。
DPoS委托權(quán)益人證明機(jī)制(Delegated Proof of Stake),在PoS的基礎(chǔ)上進(jìn)行了改造,每個(gè)持幣人可以選出代表來代替自己計(jì)算、驗(yàn)證區(qū)塊鏈,代表因此會(huì)收到一定的酬勞,代表可以主動(dòng)退出、或被淘汰。該算法減少了參與節(jié)點(diǎn)的數(shù)量,減少了節(jié)點(diǎn)響應(yīng)的時(shí)間,提高了交易效率。
區(qū)塊鏈遇到的問題 區(qū)塊擴(kuò)容比特幣的區(qū)塊限制在1M,導(dǎo)致記錄的交易數(shù)量很少,限制了比特幣在大規(guī)模快速交易中的應(yīng)用,所以提出了兩種方案來解決這個(gè)問題:
區(qū)塊擴(kuò)容。將區(qū)塊大小設(shè)置的大一些。
隔離見證。從區(qū)塊中去掉見證交易合法性的簽名。
由于比特幣是無中心化的,讓所有節(jié)點(diǎn)進(jìn)行改造是不可能的,并且這些節(jié)點(diǎn)的擁有者對改造的意見也不相同。所以節(jié)點(diǎn)的不同選擇會(huì)導(dǎo)致整個(gè)鏈分叉,從而形成兩種區(qū)塊鏈。
側(cè)鏈為了讓資產(chǎn)可以在不同區(qū)塊鏈之間轉(zhuǎn)移而提出了側(cè)鏈的概念,主、側(cè)鏈之間的轉(zhuǎn)移步驟如下:
在比特幣主鏈上鎖定一定的比特幣,在側(cè)鏈上激活對等的資產(chǎn);
側(cè)鏈按照自己的游戲規(guī)則交易這些資產(chǎn);
相應(yīng)的,側(cè)鏈可以凍結(jié)相應(yīng)的資產(chǎn),將比特幣歸還到主鏈。
閃電鏈為了加快交易速度,減少對主鏈的壓力,提出了閃電網(wǎng)的概念。閃電網(wǎng)是在主鏈外開辟快速交易通道,臨時(shí)記錄一段時(shí)間的頻繁交易,定期將最后結(jié)果提交到主鏈。
區(qū)塊鏈存在的問題 分叉由于部分節(jié)點(diǎn)采用新版本的合約,而導(dǎo)致和老版本的節(jié)點(diǎn)不兼容,導(dǎo)致區(qū)塊鏈分叉為老節(jié)點(diǎn)產(chǎn)生的區(qū)塊鏈和新節(jié)點(diǎn)產(chǎn)生的區(qū)塊鏈,如果一直保持這種狀況,則會(huì)導(dǎo)致整個(gè)區(qū)塊鏈分裂為兩個(gè)系統(tǒng),形成“各玩各的”局面。
除了版本差異導(dǎo)致的分叉,還有可能是網(wǎng)絡(luò)問題導(dǎo)致部分節(jié)點(diǎn)被孤立起來,從而這些被割裂的節(jié)點(diǎn)組成一個(gè)小的區(qū)塊鏈系統(tǒng),產(chǎn)生的區(qū)塊鏈和主鏈也會(huì)產(chǎn)生較大差異。在某個(gè)時(shí)刻這部分節(jié)點(diǎn)重新加入主鏈,則整個(gè)系統(tǒng)需要耗費(fèi)一些代價(jià)來彌合原來產(chǎn)生的分歧。
51%算力如果一個(gè)人擁有了區(qū)塊鏈超過一半的算力,他就擁有了大多數(shù)的打包權(quán),那么他就可以在對交易打包時(shí)進(jìn)行作弊,從而從中牟利。
擁有算力優(yōu)勢的人還可以拒絕一些交易記錄,使得一些交易長時(shí)間無法完成。
如果擁有算力優(yōu)勢的人采用一些手段違反當(dāng)初的約定,這會(huì)打擊其他人挖礦的積極性,對整個(gè)區(qū)塊鏈產(chǎn)生負(fù)面的影響。
私鑰丟失私鑰丟失代表著在整個(gè)區(qū)塊鏈中所擁有的財(cái)富丟失,目前還沒有辦法找回。
交易確認(rèn)延遲非所有的交易會(huì)被立刻打包進(jìn)區(qū)塊,一筆交易需要耗費(fèi)一定的時(shí)間才能被計(jì)入?yún)^(qū)塊鏈。交易被確認(rèn)前是緩存在內(nèi)存中的,打包區(qū)塊需要時(shí)間進(jìn)行計(jì)算,并且區(qū)塊有大小限制,即使被打包進(jìn)區(qū)塊還要被大多數(shù)節(jié)點(diǎn)接受,所以一筆交易本最終確認(rèn)周期較長。
有的節(jié)點(diǎn)會(huì)根據(jù)手續(xù)費(fèi)來控制打包的順序,所以普通的交易更難被打包進(jìn)區(qū)塊了。
不斷膨脹的區(qū)塊鏈隨著交易數(shù)量的日積月累,承載記賬功能的區(qū)塊鏈數(shù)據(jù)會(huì)越來越多,對這些數(shù)據(jù)的查詢和存儲(chǔ)會(huì)越來越困難。
內(nèi)容參考《白話區(qū)塊鏈》
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://m.hztianpu.com/yun/24548.html
摘要:螞蟻區(qū)塊鏈技術(shù)能力的輸出目前主要在兩個(gè)方面,一方面是存證平臺(tái),針對區(qū)塊鏈的存證場景實(shí)現(xiàn)一個(gè)在性能上的優(yōu)化的區(qū)塊鏈平臺(tái)。聯(lián)盟成員可以申請加入?yún)^(qū)塊鏈,從平臺(tái)獲取身份和認(rèn)證的證書。 摘要: 以數(shù)字金融新原力(The New Force of Digital Finance)為主題,螞蟻金服ATEC城市峰會(huì)于2019年1月4日在上海如期舉辦。在ATEC區(qū)塊鏈行業(yè)研討會(huì)分論壇上,螞蟻金服區(qū)塊鏈B...
摘要:銀行業(yè)不是唯一可能受到區(qū)塊鏈技術(shù)影響的行業(yè)。這是屬于區(qū)塊鏈的一刻。由于金融機(jī)構(gòu)承認(rèn)區(qū)塊鏈的破壞性,預(yù)測區(qū)塊鏈將在年左右達(dá)到臨界值。 學(xué)習(xí)區(qū)塊鏈的十大理由 技術(shù)發(fā)展迅速!如果你仍然在你的多維數(shù)據(jù)集中編輯Java代碼或只是搞PowerBuilder,那么你可能只生活在過去、少數(shù)雇主的地方。現(xiàn)在的情況發(fā)生了很大變化。你需要領(lǐng)先一步,采用先進(jìn)技術(shù),區(qū)塊鏈?zhǔn)穷I(lǐng)導(dǎo)者的革命性技術(shù)中的一個(gè)。學(xué)習(xí)區(qū)塊鏈...
摘要:銀行業(yè)不是唯一可能受到區(qū)塊鏈技術(shù)影響的行業(yè)。這是屬于區(qū)塊鏈的一刻。由于金融機(jī)構(gòu)承認(rèn)區(qū)塊鏈的破壞性,預(yù)測區(qū)塊鏈將在年左右達(dá)到臨界值。 學(xué)習(xí)區(qū)塊鏈的十大理由 技術(shù)發(fā)展迅速!如果你仍然在你的多維數(shù)據(jù)集中編輯Java代碼或只是搞PowerBuilder,那么你可能只生活在過去、少數(shù)雇主的地方?,F(xiàn)在的情況發(fā)生了很大變化。你需要領(lǐng)先一步,采用先進(jìn)技術(shù),區(qū)塊鏈?zhǔn)穷I(lǐng)導(dǎo)者的革命性技術(shù)中的一個(gè)。學(xué)習(xí)區(qū)塊鏈...
摘要:銀行業(yè)不是唯一可能受到區(qū)塊鏈技術(shù)影響的行業(yè)。這是屬于區(qū)塊鏈的一刻。由于金融機(jī)構(gòu)承認(rèn)區(qū)塊鏈的破壞性,預(yù)測區(qū)塊鏈將在年左右達(dá)到臨界值。 學(xué)習(xí)區(qū)塊鏈的十大理由 技術(shù)發(fā)展迅速!如果你仍然在你的多維數(shù)據(jù)集中編輯Java代碼或只是搞PowerBuilder,那么你可能只生活在過去、少數(shù)雇主的地方?,F(xiàn)在的情況發(fā)生了很大變化。你需要領(lǐng)先一步,采用先進(jìn)技術(shù),區(qū)塊鏈?zhǔn)穷I(lǐng)導(dǎo)者的革命性技術(shù)中的一個(gè)。學(xué)習(xí)區(qū)塊鏈...
摘要:萬云專注于將區(qū)塊鏈技術(shù)應(yīng)用于各個(gè)行業(yè),促進(jìn)區(qū)塊鏈在業(yè)務(wù)中的真正落地。共識(shí)算法是區(qū)塊鏈比較核心的技術(shù)之一,保證區(qū)塊一致性是其主要作用。 作者:萬云首席架構(gòu)師兼產(chǎn)品總監(jiān)李晨原文鏈接:http://mp.weixin.qq.com/s/snl...如需轉(zhuǎn)載請聯(lián)系萬云官方微信:萬云Wancloud 2018年開始,好像所有的人都在談?wù)搮^(qū)塊鏈,資本、精英、草根不斷進(jìn)場投身到區(qū)塊鏈的浪潮之中。在外...
摘要:維度公有鏈聯(lián)盟鏈私有鏈讓我們換一個(gè)維度,按照區(qū)塊鏈的服務(wù)對象來分公有鏈為公眾提供服務(wù)的區(qū)塊鏈。聯(lián)盟鏈私有鏈在具體實(shí)施上有不同的許可鏈選項(xiàng)可以是節(jié)點(diǎn)許可鏈出塊許可鏈或者完全許可鏈,由此也會(huì)有相應(yīng)的優(yōu)缺點(diǎn),在此不再重復(fù)。 在我們討論區(qū)塊鏈時(shí),分類是不可避免的一件事情。想必大家都聽說過「公有鏈、聯(lián)盟鏈、私有鏈、許可鏈、無需許可鏈」這些詞匯,雖然我們已經(jīng)耳熟能詳,然而這些名詞并沒有公認(rèn)的定義。...
閱讀 2050·2023-04-26 01:59
閱讀 3334·2021-10-11 11:07
閱讀 3371·2021-09-22 15:43
閱讀 3457·2021-09-02 15:21
閱讀 2660·2021-09-01 10:49
閱讀 956·2019-08-29 15:15
閱讀 3168·2019-08-29 13:59
閱讀 2891·2019-08-26 13:36