區(qū)塊鏈運(yùn)作的7個(gè)核心技術(shù),你知道幾個(gè)?
1.區(qū)塊鏈的鏈接
顧名思義,區(qū)塊鏈即由一個(gè)個(gè)區(qū)塊組成的鏈。每個(gè)區(qū)塊分為區(qū)塊頭和區(qū)塊體(含交易數(shù)據(jù))兩個(gè)部分。區(qū)塊頭包括用來實(shí)現(xiàn)區(qū)塊鏈接的前一區(qū)塊的哈希(PrevHash)值(又稱散列值)和用于計(jì)算挖礦難度的隨機(jī)數(shù)(nonce)。前一區(qū)塊的哈希值實(shí)際是上一個(gè)區(qū)塊頭部的哈希值,而計(jì)算隨機(jī)數(shù)規(guī)則決定了哪個(gè)礦工可以獲得記錄區(qū)塊的權(quán)力。
2.共識(shí)機(jī)制
區(qū)塊鏈?zhǔn)前殡S比特幣誕生的,是比特幣的基礎(chǔ)技術(shù)架構(gòu)。可以將區(qū)塊鏈理解為一個(gè)基于互聯(lián)網(wǎng)的去中心化記賬系統(tǒng)。類似比特幣這樣的去中心化數(shù)字貨幣系統(tǒng),要求在沒有中心節(jié)點(diǎn)的情況下保證各個(gè)誠(chéng)實(shí)節(jié)點(diǎn)記賬的一致性,就需要區(qū)塊鏈來完成。所以區(qū)塊鏈技術(shù)的核心是在沒有中心控制的情況下,在互相沒有信任基礎(chǔ)的個(gè)體之間就交易的合法性等達(dá)成共識(shí)的共識(shí)機(jī)制。
區(qū)塊鏈的共識(shí)機(jī)制目前主要有4類:PoW、PoS、DPoS、分布式一致性算法。
3.解鎖腳本
腳本是區(qū)塊鏈上實(shí)現(xiàn)自動(dòng)驗(yàn)證、自動(dòng)執(zhí)行合約的重要技術(shù)。每一筆交易的每一項(xiàng)輸出嚴(yán)格意義上并不是指向一個(gè)地址,而是指向一個(gè)腳本。腳本類似一套規(guī)則,它約束著接收方怎樣才能花掉這個(gè)輸出上鎖定的資產(chǎn)。
交易的合法性驗(yàn)證也依賴于腳本。目前它依賴于兩類腳本:鎖定腳本與解鎖腳本。鎖定腳本是在輸出交易上加上的條件,通過一段腳本語言來實(shí)現(xiàn),位于交易的輸出。解鎖腳本與鎖定腳本相對(duì)應(yīng),只有滿足鎖定腳本要求的條件,才能花掉這個(gè)腳本上對(duì)應(yīng)的資產(chǎn),位于交易的輸入。通過腳本語言可以表達(dá)很多靈活的條件。解釋腳本是通過類似我們編程領(lǐng)域里的“虛擬機(jī)”,它分布式運(yùn)行在區(qū)塊鏈網(wǎng)絡(luò)里的每一個(gè)節(jié)點(diǎn)。
4.交易規(guī)則
區(qū)塊鏈的交易就是構(gòu)成區(qū)塊的基本單位,也是區(qū)塊鏈負(fù)責(zé)記錄的實(shí)際有效內(nèi)容。一個(gè)區(qū)塊鏈交易可以是一次轉(zhuǎn)賬,也可以是智能合約的部署等其他事務(wù)。
就比特幣而言,交易即指一次支付轉(zhuǎn)賬。其交易規(guī)則如下:
1)交易的輸入和輸出不能為空。
2)對(duì)交易的每個(gè)輸入,如果其對(duì)應(yīng)的UTXO輸出能在當(dāng)前交易池中找到,則拒絕該交易。因?yàn)楫?dāng)前交
易池是未被記錄在區(qū)塊鏈中的交易,而交易的每個(gè)輸入,應(yīng)該來自確認(rèn)的UTXO。如果在當(dāng)前交易池中找到,那就是雙花交易。
3)交易中的每個(gè)輸入,其對(duì)應(yīng)的輸出必須是UTXO。
4)每個(gè)輸入的解鎖腳本(unlocking script)必須和相應(yīng)輸出的鎖定腳本(locking script)共同驗(yàn)證交易的合規(guī)性。
5.交易優(yōu)先級(jí)
區(qū)塊鏈交易的優(yōu)先級(jí)由區(qū)塊鏈協(xié)議規(guī)則決定。對(duì)于比特幣而言,交易被區(qū)塊包含的優(yōu)先次序由交易廣播到網(wǎng)絡(luò)上的時(shí)間和交易額的大小決定。隨著交易廣播到網(wǎng)絡(luò)上的時(shí)間的增長(zhǎng),交易的鏈齡增加,交易的優(yōu)先級(jí)就被提高,最終會(huì)被區(qū)塊包含。對(duì)于以太坊而言,交易的優(yōu)先級(jí)還與交易的發(fā)布者愿意支付的交易費(fèi)用有關(guān),發(fā)布者愿意支付的交易費(fèi)用越高,交易被包含進(jìn)區(qū)塊的優(yōu)先級(jí)就越高。
6.Merkle證明
Merkle證明的原始應(yīng)用是比特幣系統(tǒng)(Bitcoin),它是由中本聰(Satoshi Nakamoto)在2009年描述并且創(chuàng)造的。比特幣區(qū)塊鏈?zhǔn)褂昧薓erkle證明,為的是將交易存儲(chǔ)在每一個(gè)區(qū)塊中。使得交易不能被篡改,同時(shí)也容易驗(yàn)證交易是否包含在一個(gè)特定區(qū)塊中。
7.RLP
RLP(Recursive Length Prefix,遞歸長(zhǎng)度前綴編碼)是Ethereum中對(duì)象序列化的一個(gè)主要編碼方式,其目的是對(duì)任意嵌套的二進(jìn)制數(shù)據(jù)的序列進(jìn)行編碼。
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
您可能感興趣的文章:- 用不到50行的Python代碼構(gòu)建最小的區(qū)塊鏈
- Python學(xué)習(xí)入門之區(qū)塊鏈詳解
- 14張圖看懂什么是區(qū)塊鏈技術(shù)
- 200行代碼輕松實(shí)現(xiàn)一個(gè)簡(jiǎn)單的區(qū)塊鏈
- 利用swoole+redis實(shí)現(xiàn)股票和區(qū)塊鏈服務(wù)
- Python從零開始創(chuàng)建區(qū)塊鏈