1、數(shù)據(jù)庫database我們來說第一個(gè)準(zhǔn)則。區(qū)塊鏈?zhǔn)菫楣蚕頂?shù)據(jù)庫服務(wù)的技術(shù)。所以你一開始就需要知道為什么你用數(shù)據(jù)庫,這一種結(jié)構(gòu)性的信息。
1、數(shù)據(jù)庫database
我們來說第一個(gè)準(zhǔn)則。區(qū)塊鏈?zhǔn)菫楣蚕頂?shù)據(jù)庫服務(wù)的技術(shù)。所以你一開始就需要知道為什么你用數(shù)據(jù)庫,這一種結(jié)構(gòu)性的信息??梢允莻鹘y(tǒng)的關(guān)系型數(shù)據(jù)庫,包括一個(gè)或幾個(gè)表格一樣的數(shù)據(jù)庫表?;蛘呖梢允亲罱餍械腘oSQL,更像文件系統(tǒng)或者字典(理論上講,NoSQL是關(guān)系型數(shù)據(jù)庫的子集)。
金融資產(chǎn)的總賬可以被自然地表達(dá)成一個(gè)數(shù)據(jù)庫表,其中每行表示一個(gè)被某個(gè)特定的實(shí)體擁有的一種資產(chǎn)類型。每行又有三列:(1)擁有者的個(gè)人標(biāo)識(shí)比如賬號(hào)(2)資產(chǎn)類別的標(biāo)識(shí)比如“USD”或者”AAPL” (3)被擁有的資產(chǎn)的數(shù)量。
2、多個(gè)輸入者 multiple writers
這個(gè)比較簡單。區(qū)塊鏈?zhǔn)且粋€(gè)支持多個(gè)輸入者的技術(shù)。換句話說,必須有多于一個(gè)實(shí)體來產(chǎn)生更改數(shù)據(jù)庫的交易。你知道這些輸入者是誰嗎?
3、信任的缺失 absence of trusts
第三個(gè)準(zhǔn)則。如果多于一個(gè)實(shí)體對數(shù)據(jù)庫輸入,那么在這些實(shí)體間需要某種程度的不信任。換句話講,區(qū)塊鏈?zhǔn)且粋€(gè)基于數(shù)據(jù)庫和多個(gè)不信任的輸入者的技術(shù)。
說到不信任的時(shí)候我在說什么?我指的是一個(gè)用戶不愿意別人修改自己“擁有”的數(shù)據(jù)庫。類似的,當(dāng)讀取數(shù)據(jù)庫的內(nèi)容時(shí),一個(gè)用戶不會(huì)像接受“真理”一樣接受另一個(gè)用戶報(bào)告的數(shù)據(jù),因?yàn)槊總€(gè)用戶有自己的經(jīng)濟(jì)或政治的動(dòng)機(jī)。
4、去掉中介
所以這個(gè)問題,像之前定義的,是使一個(gè)數(shù)據(jù)庫和多個(gè)不信任的輸入者成為可能。已經(jīng)有一個(gè)眾所周知的解決方案:一個(gè)廣受信任的中間人。這是一個(gè)每個(gè)輸入者都相信的人,雖然他們不見得互相信任。其實(shí),這個(gè)數(shù)據(jù)充滿了這種性質(zhì)的數(shù)據(jù)庫,比如在銀行里賬戶的總賬。你的銀行控制著數(shù)據(jù)庫,保證每筆交易都是有效的,是被參與交易的客戶授權(quán)了的。無論你費(fèi)多大勁的請求,你的銀行也永遠(yuǎn)不會(huì)讓你直接更改數(shù)據(jù)庫。
區(qū)塊鏈取消了可信任的中間人,通過使得數(shù)據(jù)庫可以被多個(gè)不可信任的輸入者直接更改。沒有一個(gè)中心的守門人需要校驗(yàn)交易和認(rèn)證他們的來源。然而,交易的定義延伸包含了授權(quán)和可靠的證據(jù)。交易可以被每個(gè)節(jié)點(diǎn)單獨(dú)的驗(yàn)證和處理,每個(gè)節(jié)點(diǎn)可以保存一份數(shù)據(jù)庫。
但是你需要問的問題是:你是想要還是真的需要去掉中間人?根據(jù)你的使用場景,有一個(gè)中間實(shí)體維護(hù)授信的數(shù)據(jù)庫和作為交易看門人真的有錯(cuò)嗎?傾向于一個(gè)基于區(qū)塊鏈的數(shù)據(jù)庫而不是可信任的中間人的合理理由可能包括:成本更低,交易更快,自動(dòng)調(diào)和,新的監(jiān)管條例或者簡單的找不到合適的中間人。
5、交易互動(dòng) Transaction interaction
所以區(qū)塊鏈對有多個(gè)互不信任的輸入者直接修改共享的數(shù)據(jù)庫是適用的。但這還不夠。區(qū)塊鏈真正的閃光點(diǎn)在當(dāng)被多個(gè)輸入者創(chuàng)造出來的交易有交互的時(shí)候。
我說交互的時(shí)候指的是什么?往全了說,這指被不同的輸入者創(chuàng)造的交易是互相關(guān)聯(lián)的。比方說,小紅給了小明一筆錢,小明給了小李一筆錢。這種情況下,小明的交易取決于小紅的交易,同時(shí)我們無法驗(yàn)證小明的交易除非先查看小紅的。正因?yàn)檫@種關(guān)聯(lián)性,這些交易自然的屬于同一個(gè)共享的數(shù)據(jù)庫。
再往深一層說,區(qū)塊鏈一個(gè)不錯(cuò)的特征是多個(gè)輸入者可以互相協(xié)作的創(chuàng)造交易,每一方都沒有風(fēng)險(xiǎn)。這就使得區(qū)塊鏈不需要中間人,來打到每方必須實(shí)現(xiàn)自己的義務(wù)交易才能發(fā)生的情形。
還有一個(gè)弱一點(diǎn)的應(yīng)用是不同獨(dú)立的輸入者互相有關(guān)系的情形。一個(gè)例子是一個(gè)不同實(shí)體驗(yàn)證客戶不同方面的個(gè)人身份的身份數(shù)據(jù)庫。雖然每一個(gè)驗(yàn)證證書是單獨(dú)的,但是區(qū)塊鏈提供了一個(gè)把所有東西整合在一起的方法。
6、制定規(guī)則
這不是一個(gè)獨(dú)立的條件,但是是之前論證的自然結(jié)果。如果數(shù)據(jù)庫可以被多個(gè)輸入者同時(shí)修改,這些輸入者并不全部互相相信,那么這個(gè)數(shù)據(jù)庫必須有內(nèi)置的規(guī)則限定交易的運(yùn)行。
這些規(guī)則從根本上講不同于傳統(tǒng)數(shù)據(jù)庫的約束,因?yàn)樗麄兒妥儞Q的合法性有關(guān),而不是與數(shù)據(jù)庫某個(gè)特定時(shí)間的狀態(tài)有關(guān)。每筆交易都會(huì)被網(wǎng)絡(luò)里的每個(gè)節(jié)點(diǎn)用這些規(guī)則檢查,檢查失敗的將會(huì)被拒絕,不會(huì)傳下去。
資產(chǎn)總賬包括了這種規(guī)則的簡單例子,來避免交易無中生有的創(chuàng)造資產(chǎn)。這個(gè)規(guī)則說總賬里各種資產(chǎn)的數(shù)量必須在交易前和交易后保持一致。
7、選擇你的驗(yàn)證者
到現(xiàn)在我們描述了一個(gè)交易可以在多個(gè)地方發(fā)起的分布式數(shù)據(jù)庫,在節(jié)點(diǎn)中用點(diǎn)對點(diǎn)的方式傳播,被每個(gè)節(jié)點(diǎn)單獨(dú)驗(yàn)證。那么區(qū)塊鏈從何而來?嗯,區(qū)塊鏈的任務(wù)是有權(quán)威的最終的交易日志,這個(gè)日志的內(nèi)容所有的節(jié)點(diǎn)都可證明的認(rèn)同。
我們?yōu)槭裁葱枰@個(gè)日志?首先,它使得新添加的節(jié)點(diǎn)可以從零開始計(jì)算這個(gè)數(shù)據(jù)庫的內(nèi)容,而不需要信任其他節(jié)點(diǎn)。其次,它解決了一些節(jié)點(diǎn)丟失掉交易的可能性,因?yàn)橄到y(tǒng)的癱瘓或者信息交流的短路。如果沒有交易日志,這會(huì)導(dǎo)致一個(gè)節(jié)點(diǎn)的數(shù)據(jù)庫和其他節(jié)點(diǎn)的有出入,這就有損共享數(shù)據(jù)庫的意義。第三,兩個(gè)交易是有可能有沖突的,導(dǎo)致只有一個(gè)可以被接受。經(jīng)典案例是”一個(gè)資產(chǎn)兩次成功消費(fèi)”,這種情況下同一個(gè)資產(chǎn)發(fā)給了兩個(gè)不同的接受者。在沒有中央權(quán)威的點(diǎn)對點(diǎn)數(shù)據(jù)庫中,節(jié)點(diǎn)對接受哪個(gè)交易是有不同意見的,因?yàn)闆]有客觀的正確答案。通過交易在區(qū)塊鏈中被“確認(rèn)”,我們保證了所有的節(jié)點(diǎn)達(dá)成一致的選擇。最后,在以太坊類型的區(qū)塊鏈中,精確的交易順序是非常關(guān)鍵的,因?yàn)槊恳还P交易都會(huì)影響到接下來的交易會(huì)發(fā)生什么。這種情形區(qū)塊鏈將定義權(quán)威的事情發(fā)生的順序,沒有這個(gè)交易不能被處理。
區(qū)塊鏈從字面上看就是一個(gè)區(qū)塊的鏈條,在這個(gè)鏈條里每一個(gè)區(qū)塊包括了一群被確認(rèn)的交易的集合。但誰負(fù)責(zé)選擇進(jìn)入每個(gè)區(qū)塊的交易呢?在適合企業(yè)應(yīng)用的“私有鏈”中,答案是一群固定的驗(yàn)證者( “礦工” )來把它們創(chuàng)造出的區(qū)塊進(jìn)行數(shù)字簽名。這個(gè)白名單將和某種形式的分布式可達(dá)成一致的方案結(jié)合起來,避免少數(shù)的驗(yàn)證者控制這個(gè)區(qū)塊鏈。比如說,多鏈用了一種叫做“采礦多樣性”的方案,這個(gè)方案里被允許的礦工將循環(huán)的工作,同時(shí)對不行使職責(zé)的節(jié)點(diǎn)給予一定程度的容忍。
不管使用哪種達(dá)成一致的方案,負(fù)責(zé)檢驗(yàn)的節(jié)點(diǎn)都比傳統(tǒng)中心化數(shù)據(jù)庫的擁有者有少太多的權(quán)利。檢驗(yàn)者不能偽造交易,也不能違背規(guī)則修改數(shù)據(jù)庫。在資產(chǎn)總賬中,這意味著他們不能花別人的錢,也不能改變資產(chǎn)的總量。但是即使如此檢驗(yàn)者還是有兩種方法來影響數(shù)據(jù)庫的內(nèi)容:一是交易審查。如果足夠多的驗(yàn)證者惡意串通,他們可以阻止特定的交易在區(qū)塊鏈中被確認(rèn),使得這個(gè)交易永遠(yuǎn)的打入冷宮。二是偏好性。如果兩個(gè)交易起了沖突,創(chuàng)造下一個(gè)區(qū)塊的檢驗(yàn)者將決定哪個(gè)交易被確認(rèn),另一個(gè)就被拒絕。公平的選擇是第一個(gè)被看到的交易,但是檢驗(yàn)者可以根據(jù)其他因素做選擇,而不顯露出誰先來后到這一點(diǎn)。
因?yàn)檫@些問題,在部署一個(gè)基于區(qū)塊鏈的數(shù)據(jù)庫時(shí),你需要清醒的認(rèn)識(shí)到誰是你的驗(yàn)證者和你為什么相信他們。根據(jù)場景的不同,驗(yàn)證者可以被選擇成為:(1)一個(gè)或多個(gè)被一個(gè)組織控制的節(jié)點(diǎn)(2)一個(gè)維護(hù)區(qū)塊鏈的一群核心組織(3)網(wǎng)絡(luò)上的每個(gè)節(jié)點(diǎn)
8、為你的資產(chǎn)背書
如果你已經(jīng)看到這了,你們會(huì)注意到我傾向于將描述為共享的數(shù)據(jù)庫,而不是通常上講的”共享的總賬”。為什么呢?因?yàn)閰^(qū)塊鏈作為一個(gè)技術(shù),可以被用于解決比追蹤資產(chǎn)所有權(quán)更廣闊的問題。任何一個(gè)有多個(gè)互不信任的輸入者的數(shù)據(jù)庫都可以基于區(qū)塊鏈搭建,而不需要一個(gè)中心化的中間人。例子有共享的日歷,維基百科形式的合作和討論論壇。
話說回來,目前似乎主要是那些追蹤金融資產(chǎn)的流動(dòng)和交易的人對區(qū)塊鏈感興趣。我能想到兩個(gè)原因:(1)金融業(yè)在回應(yīng)(回想起來,非常小的)類似比特幣這樣的虛擬貨幣的威脅。(2)一個(gè)資產(chǎn)總賬是一個(gè)被多個(gè)互不信任的實(shí)體創(chuàng)造的互相影響的交易共享數(shù)據(jù)庫,這是區(qū)塊鏈技術(shù)是最簡單和自然的應(yīng)用。如果你確實(shí)想用區(qū)塊鏈作為資產(chǎn)總賬,你需要回答下一個(gè)更重要的問題:流動(dòng)中的資產(chǎn)的本性是什么?我這么說不是表示現(xiàn)金啊債券啊提貨單啊,雖然這些也很重要。問題卻是:誰是在區(qū)塊鏈上代表資產(chǎn)背后的人?如果數(shù)據(jù)庫上說我有十個(gè)單位的什么東西,誰將允許我在現(xiàn)實(shí)世界中對那十個(gè)單位的東西宣示主權(quán)?我應(yīng)該把誰告上法庭如果我不能將在區(qū)塊鏈上聲明的資產(chǎn)轉(zhuǎn)換成傳統(tǒng)的可見的資產(chǎn)?
當(dāng)然,這個(gè)答案對不同的場景將不同。對貨幣資產(chǎn)來說,你可以想象監(jiān)管的銀行接受現(xiàn)金,然后為存款人在一個(gè)區(qū)塊鏈技術(shù)下的分布式總賬里面加錢。在貿(mào)易金融中,信用證和提貨單將會(huì)被相應(yīng)的進(jìn)口商的銀行和船運(yùn)公司來背書。未來,我們可以想象一個(gè)一級市場的公司債券直接在區(qū)塊鏈上發(fā)現(xiàn)來融資的時(shí)代的到來。
關(guān)鍵詞: 區(qū)塊鏈