區(qū)塊鏈?zhǔn)且粋€(gè)去中心化的賬本,它以一連串的加密區(qū)塊記錄交易和屎,這些區(qū)塊是不可改變的,并分布在一個(gè)連接的計(jì)算機(jī)網(wǎng)絡(luò)中春瞬。
在區(qū)塊鏈網(wǎng)絡(luò)中柴信,各個(gè)計(jì)算機(jī)--即節(jié)點(diǎn)--相互溝通,形成一個(gè)去中心化的點(diǎn)對點(diǎn)(P2P)網(wǎng)絡(luò)宽气。沒有控制網(wǎng)絡(luò)的中央機(jī)構(gòu)随常,每個(gè)節(jié)點(diǎn)都存儲(chǔ)了一份構(gòu)成典范鏈的區(qū)塊的副本。
在大多數(shù)情況下萄涯,用戶通過發(fā)起交易請求與區(qū)塊鏈互動(dòng)线罕。交易被八卦到網(wǎng)絡(luò)上的其他節(jié)點(diǎn),并由區(qū)塊作者組裝成一個(gè)區(qū)塊窃判。為了確保鏈上數(shù)據(jù)的安全和鏈的持續(xù)進(jìn)展钞楼,節(jié)點(diǎn)使用某種形式的共識(shí)來商定每個(gè)區(qū)塊中的數(shù)據(jù)狀態(tài)和交易處理的順序。
什么是區(qū)塊鏈節(jié)點(diǎn)袄琳?
在高層次上询件,所有區(qū)塊鏈節(jié)點(diǎn)都需要以下核心組件。
數(shù)據(jù)存儲(chǔ)唆樊,用于記錄作為交易結(jié)果的狀態(tài)變化宛琅。
點(diǎn)對點(diǎn)網(wǎng)絡(luò),用于節(jié)點(diǎn)之間的分散通信逗旁。
共識(shí)方法嘿辟,以防止惡意活動(dòng),確保鏈的持續(xù)進(jìn)展片效。
用于排序和處理傳入交易的邏輯红伦。
用于簽署和驗(yàn)證與交易相關(guān)的簽名的密碼學(xué)。
用于編寫和最終確定區(qū)塊的執(zhí)行環(huán)境淀衣。
由于構(gòu)建區(qū)塊鏈所需的核心組件的復(fù)雜性昙读,大多數(shù)區(qū)塊鏈從現(xiàn)有區(qū)塊鏈資源庫的完整副本開始--分叉--以便開發(fā)人員可以修改現(xiàn)有代碼以添加新功能,而不是從頭開始編寫一切膨桥。例如蛮浑,比特幣存儲(chǔ)庫被分叉以創(chuàng)建Litecoin、ZCash只嚣、Namecoin和Bitcoin Cash沮稚。同樣,以太坊存儲(chǔ)庫也被分叉以創(chuàng)建Quorum册舞、POA Network蕴掏、KodakCoin和Musicoin。
然而,大多數(shù)區(qū)塊鏈平臺(tái)的設(shè)計(jì)都不允許修改或定制囚似。因此剩拢,通過分叉構(gòu)建一個(gè)新的區(qū)塊鏈有嚴(yán)重的局限性,包括原區(qū)塊鏈代碼中固有的可擴(kuò)展性等限制饶唤。在探索Substrate如何減輕與其他區(qū)塊鏈項(xiàng)目相關(guān)的許多限制之前徐伐,了解所有區(qū)塊鏈共享的一些共同屬性是很重要的。通過了解大多數(shù)區(qū)塊鏈的運(yùn)作方式募狂,將會(huì)更好地了解Substrate如何為構(gòu)建最適合需求的區(qū)塊鏈提供替代方案和能力办素。
狀態(tài)轉(zhuǎn)換和沖突
區(qū)塊鏈本質(zhì)上是一個(gè)狀態(tài)機(jī)。在任何時(shí)間點(diǎn)上祸穷,區(qū)塊鏈都有一個(gè)當(dāng)前的內(nèi)部狀態(tài)性穿。隨著入站交易的執(zhí)行,它們會(huì)導(dǎo)致狀態(tài)的改變雷滚,所以區(qū)塊鏈必須從其當(dāng)前狀態(tài)過渡到新的狀態(tài)需曾。然而,可能有多個(gè)有效的過渡會(huì)導(dǎo)致不同的未來狀態(tài)祈远,區(qū)塊鏈必須選擇一個(gè)可以被同意的單一狀態(tài)過渡呆万。為了就過渡后的狀態(tài)達(dá)成一致,區(qū)塊鏈內(nèi)的所有操作必須是確定的车份。為了使鏈的進(jìn)展成功谋减,大多數(shù)節(jié)點(diǎn)必須就所有的狀態(tài)轉(zhuǎn)換達(dá)成一致,包括扫沼。
- 鏈的初始狀態(tài)出爹,稱為創(chuàng)世狀態(tài)或創(chuàng)世塊。
- 由執(zhí)行的交易產(chǎn)生的一系列狀態(tài)轉(zhuǎn)換缎除,記錄在每個(gè)區(qū)塊中严就。
- 將被納入鏈中的區(qū)塊的最終狀態(tài)。
在集中式網(wǎng)絡(luò)中伴找,中央機(jī)構(gòu)可以在相互排斥的狀態(tài)轉(zhuǎn)換中進(jìn)行選擇盈蛮,方法是按照它看到的順序記錄狀態(tài)轉(zhuǎn)換的變化,并在出現(xiàn)沖突時(shí)選擇相互競爭的選項(xiàng)中的第一個(gè)技矮。在一個(gè)去中心化的網(wǎng)絡(luò)中,節(jié)點(diǎn)看到的交易順序不同殊轴,所以它們必須使用更復(fù)雜的方法來選擇交易衰倦,并在沖突的狀態(tài)轉(zhuǎn)換之間做出選擇。
區(qū)塊鏈用來將交易批量化為區(qū)塊并選擇哪個(gè)節(jié)點(diǎn)可以向鏈上提交區(qū)塊的方法旁理,被稱為區(qū)塊鏈的共識(shí)模型或共識(shí)算法樊零。最常用的共識(shí)模型被稱為工作證明共識(shí)模型(POW)。在工作證明共識(shí)模式下,首先完成一個(gè)計(jì)算問題的節(jié)點(diǎn)有權(quán)向鏈上提交一個(gè)區(qū)塊驻襟。
為了使區(qū)塊鏈具有容錯(cuò)性夺艰,并提供一致的狀態(tài)視圖,即使一些節(jié)點(diǎn)被惡意行為者破壞或網(wǎng)絡(luò)中斷沉衣,大多數(shù)共識(shí)模型要求至少三分之二的節(jié)點(diǎn)在任何時(shí)候都同意狀態(tài)郁副。這個(gè)三分之二的多數(shù)確保了網(wǎng)絡(luò)的容錯(cuò)性,并能承受一些網(wǎng)絡(luò)參與者的不良行為豌习,無論該行為是故意的還是意外的存谎。
區(qū)塊鏈經(jīng)濟(jì)
所有區(qū)塊鏈都需要資源(處理器、內(nèi)存肥隆、存儲(chǔ)和網(wǎng)絡(luò)帶寬)來執(zhí)行操作既荚。參與網(wǎng)絡(luò)的計(jì)算機(jī)(生成塊的節(jié)點(diǎn))將這些資源提供給區(qū)塊鏈用戶。這些節(jié)點(diǎn)創(chuàng)建一個(gè)分布式的栋艳,分散的網(wǎng)絡(luò)恰聘,以滿足參與者社區(qū)的需求。
為了支持社區(qū)并使區(qū)塊鏈可持續(xù)吸占,大多數(shù)區(qū)塊鏈要求用戶以交易費(fèi)用的形式為他們使用的網(wǎng)絡(luò)資源付費(fèi)晴叨。支付交易費(fèi)用要求用戶身份與持有某種類型資產(chǎn)的賬戶相關(guān)聯(lián)。區(qū)塊鏈通常使用代幣來表示賬戶中資產(chǎn)的價(jià)值旬昭,網(wǎng)絡(luò)參與者通過交易所在鏈外購買代幣篙螟。然后,網(wǎng)絡(luò)參與者可以存入代幣以創(chuàng)建資金的抵押问拘,使他們能夠支付交易費(fèi)用遍略。
區(qū)塊鏈治理
大多數(shù)區(qū)塊鏈還使網(wǎng)絡(luò)參與者能夠提交影響網(wǎng)絡(luò)運(yùn)營或區(qū)塊鏈社區(qū)的提案并進(jìn)行投票。通過提交提案并投票 - 公投 - 區(qū)塊鏈社區(qū)可以確定區(qū)塊鏈如何在一個(gè)本質(zhì)上民主的過程中發(fā)展骤坐。然而绪杏,為了參與治理,大多數(shù)區(qū)塊鏈要求用戶在賬戶中維護(hù)大量的代幣纽绍。
在區(qū)塊鏈上運(yùn)行的應(yīng)用程序
在區(qū)塊鏈上運(yùn)行的應(yīng)用程序--通常被稱為去中心化的應(yīng)用程序或dApps--通常被寫成智能合約蕾久。
智能合約是一個(gè)在區(qū)塊鏈上運(yùn)行的程序,在特定條件下代表用戶執(zhí)行交易拌夏。開發(fā)者可以編寫智能合約僧著,以確保以程序執(zhí)行的交易結(jié)果被記錄下來,并且永遠(yuǎn)不能被改變障簿。然而盹愚,僅憑智能合約,開發(fā)者無法使用一些底層區(qū)塊鏈功能--如共識(shí)站故、存儲(chǔ)或交易層--而是要遵守一條鏈的固定規(guī)則和限制皆怕。智能合約的開發(fā)者通常接受這些限制,作為一種權(quán)衡,以較少的核心設(shè)計(jì)決策來實(shí)現(xiàn)更快的開發(fā)時(shí)間愈腾。
所有區(qū)塊鏈都有一些共同的特點(diǎn)憋活。Substrate(雖然不是區(qū)塊鏈本身)是一個(gè)區(qū)塊鏈開發(fā)者的工具包,有一個(gè)模塊化的組件框架來創(chuàng)建一個(gè)自定義的區(qū)塊鏈虱黄。通過Substrate悦即,可以采用常見的區(qū)塊鏈組件,如存儲(chǔ)礁鲁、共識(shí)和密碼學(xué)盐欺,并將它們組合起來,按原樣使用它們提供的功能仅醇,或修改它們以適應(yīng)你項(xiàng)目的目的冗美。