如何在區(qū)塊鏈上構(gòu)建實(shí)際的東西
使用分布式賬本技術(shù)(DLT)與“事物”進(jìn)行交互得到了廣泛的關(guān)注。用例吸引了媒體和企業(yè)客戶的大量關(guān)注,并且我們中的許多人被吸引到DLT平臺(tái)上開(kāi)發(fā)應(yīng)用程序,因?yàn)樗兄Z提供一個(gè)全局信任層。事實(shí)證明,對(duì)于我們中的許多人來(lái)說(shuō),用現(xiàn)有的技術(shù)構(gòu)建生產(chǎn)級(jí)應(yīng)用程序幾乎是不可能的。
實(shí)際應(yīng)用程序開(kāi)發(fā)需要三個(gè)支柱:可伸縮性、私密性和簡(jiǎn)單性。如果沒(méi)有任何單獨(dú)的支柱,應(yīng)用程序開(kāi)發(fā)就會(huì)變得更加困難,從而迫使人們沿著提供所有這三個(gè)支柱的道路前進(jìn)(例如傳統(tǒng)的計(jì)算或私有DLT系統(tǒng))。然而,這三個(gè)支柱確實(shí)構(gòu)成了一個(gè)頻譜,每個(gè)應(yīng)用程序在這些梯度上都有不同的需求。
首先,讓我們定義這些術(shù)語(yǔ)。
可伸縮性
可伸縮性是一個(gè)模糊的術(shù)語(yǔ)。一般來(lái)說(shuō),你的應(yīng)用程序必須在用戶認(rèn)為可以接受的時(shí)間范圍內(nèi)滿足他們的需求。對(duì)于大多數(shù)實(shí)際應(yīng)用程序,這意味著用戶不能等待5到60分鐘才能完成操作。
隱私性
我將其定義為僅對(duì)打算擁有它的人可用的信息。大多數(shù)真實(shí)世界的應(yīng)用程序都需要一些隱私。例如,您不希望向所有競(jìng)爭(zhēng)對(duì)手傳播您的整個(gè)供應(yīng)鏈的購(gòu)買(mǎi)。也就是說(shuō),在實(shí)際應(yīng)用程序中通常也需要某種形式的公共數(shù)據(jù)。例如,能夠向購(gòu)買(mǎi)者證明你的整個(gè)供應(yīng)鏈?zhǔn)强沙掷m(xù)的。
簡(jiǎn)單性
這可能是列表中最模糊的術(shù)語(yǔ)。但是,這里我將重點(diǎn)介紹開(kāi)發(fā)人員的簡(jiǎn)單性。從概念上講,簡(jiǎn)單地構(gòu)建供應(yīng)鏈?zhǔn)呛苋菀椎?,但是深入到?xì)節(jié)中,實(shí)現(xiàn)就變得復(fù)雜了。我將在這里集中討論實(shí)際的開(kāi)發(fā),并討論構(gòu)建者如何實(shí)際構(gòu)建某些東西。
我將以供應(yīng)鏈為例,因?yàn)樗荄LT系統(tǒng)最常被談?wù)摰膽?yīng)用之一。概念已經(jīng)在這個(gè)領(lǐng)域得到了很好的定義,許多企業(yè)已經(jīng)在構(gòu)建PoC,甚至進(jìn)入有限的生產(chǎn)模式。
Strawmen:
我將介紹hyperledger和ethereum,并通過(guò)實(shí)現(xiàn)一個(gè)供應(yīng)鏈應(yīng)用程序進(jìn)行討論。 該供應(yīng)鏈跟蹤來(lái)自奶牛場(chǎng)-》工廠-》批發(fā)商-》零售商-》客戶的冰淇淋。
這個(gè)高度簡(jiǎn)化的供應(yīng)鏈可以很好地說(shuō)明構(gòu)建真實(shí)跟蹤的復(fù)雜性。
在供應(yīng)鏈中的任何位置,每個(gè)參與者(如零售商、批發(fā)商)都關(guān)心導(dǎo)致其所在供應(yīng)鏈部分的歷史。例如,工廠關(guān)心牛奶的來(lái)源,以及在去工廠的路上是否保持在一定的溫度下。批發(fā)商關(guān)心的是工廠和冰淇淋的處理,以及所使用的奶制品的產(chǎn)地。
在最邊緣的地方,顧客關(guān)心的是所有這些數(shù)據(jù)的匯總視圖,以表明她的冰淇淋是否保持在適當(dāng)?shù)臏囟龋橹破肥欠窈虾醯赖聛?lái)源,等等。
以太坊
一般來(lái)說(shuō),現(xiàn)實(shí)世界的應(yīng)用程序是關(guān)注以太坊的兩個(gè)方向之一。交易要么發(fā)生在鏈外(側(cè)鏈、加蓋印花服務(wù)等),要么使用新興的ERC721標(biāo)準(zhǔn)來(lái)表示不可替代的代幣(NFT)。
從概念上講,表示供應(yīng)鏈的最簡(jiǎn)單方法是為鏈中的每個(gè)項(xiàng)目使用不同的不可替換代幣。這是說(shuō)每個(gè)乳制品公司將創(chuàng)建一個(gè)代幣為每個(gè)乳,然后將其聚合成一個(gè)新的代幣或簡(jiǎn)單地從所有這些代幣中選一個(gè)交給工廠。
或者,我們可以在卡車(chē)上啟動(dòng)代幣,并為一卡車(chē)的乳品提供一個(gè)ERC721代幣,其中包含關(guān)于哪些農(nóng)場(chǎng)對(duì)罐車(chē)中的牛奶作出了貢獻(xiàn)。
在以太坊上,一個(gè)代幣來(lái)自一個(gè)智能合約。每個(gè)貨運(yùn)公司要么必須部署自己的智能合約,要么必須依賴(lài)第三方部署智能合約。這個(gè)智能合約需要表示關(guān)于牛奶的一組數(shù)據(jù),因此它將使用ERC721的“tokenMetadata”字段并鏈接到信息。ERC721本身并不以任何方式公開(kāi)更新元數(shù)據(jù)。你需要把它添加到你自己的智能合約中。
確認(rèn)時(shí)間超過(guò)6分鐘,每個(gè)ERC721代幣的部署成本至少為0.20美元,目前的最低成本為100美元/ETH(對(duì)于以太坊來(lái)說(shuō)這是一個(gè)慷慨的數(shù)字)。對(duì)合約的任何更新都需要額外的6分鐘,花費(fèi)在0.01美元到1美元之間(很有可能,在正常情況下)。此外,為了生成或確認(rèn)交易、所有權(quán)等,任何生成或消費(fèi)客戶端都需要聯(lián)機(jī),理想情況下,每個(gè)單獨(dú)的方都有一個(gè)受信任的完整節(jié)點(diǎn)。
這不是一篇關(guān)于完全部署以太坊解決方案的文章,所以我將在這里停止描述。希望這足以說(shuō)明這個(gè)過(guò)程、成本和復(fù)雜性。在這種情況下,可以保持某些數(shù)據(jù)的私有,因?yàn)樵獢?shù)據(jù)鏈接自ERC721代幣,并且可以保存在私有存儲(chǔ)中。漫長(zhǎng)的等待時(shí)間和高昂的價(jià)格使得該系統(tǒng)在現(xiàn)實(shí)世界中難以實(shí)現(xiàn),部署智能合約的復(fù)雜性使得在所有相關(guān)方之間很難達(dá)成一致。
Hyperledger
Hyperledger更類(lèi)似于帶有定制代碼的共享數(shù)據(jù)庫(kù),而不是通用的DLT系統(tǒng)。下面是對(duì)移動(dòng)部分的一個(gè)很好的概述:https://hyperledgerfabric.readthedocs.io/en/release -1.4 network/network.html。從最高級(jí)的意義上說(shuō),Hyperledger是一種各方都同意他們將成為網(wǎng)絡(luò)的一部分的系統(tǒng)。然后,網(wǎng)絡(luò)使用可保存歷史記錄和更改的自定義代碼跟蹤一般的“業(yè)務(wù)對(duì)象”。系統(tǒng)的每個(gè)部分都需要被參與者定義為Hyperledger,它對(duì)數(shù)據(jù)的存儲(chǔ)方式或交易的發(fā)生方式?jīng)]有任何意見(jiàn)。
一個(gè)比我聰明的人曾經(jīng)說(shuō)過(guò):“如果你能讓所有相關(guān)各方都同意使用Hyperledger,你可能不需要一個(gè)區(qū)塊鏈?!睆谋砻嫔峡矗糠衷蚩赡懿⒉幻黠@:供應(yīng)鏈不是從源頭到目的地的單一路徑。今天的公司在各種供應(yīng)鏈中進(jìn)行交互,因此必須參與許多不同的聯(lián)盟鏈,或者開(kāi)發(fā)一個(gè)幾乎所有人都參與的總體系統(tǒng)(很像一個(gè)公共的區(qū)塊鏈)。在我們的冰淇淋示例中,奶牛場(chǎng)將與許多不同的工廠交互,等等,因此與這些系統(tǒng)交互的需求也不同。如果一個(gè)共同制度實(shí)際上并不普遍,那么它最終會(huì)失去很多好處。
讓供應(yīng)鏈上的每個(gè)人都在一起,并同意交互數(shù)據(jù)格式和代碼,讓一個(gè)值得信賴(lài)的人運(yùn)行節(jié)點(diǎn)系統(tǒng)驗(yàn)證交易和分類(lèi)帳。
Tupelo
Tupelo是為單個(gè)對(duì)象構(gòu)建的公共DLT系統(tǒng)。Tupelo引入了鏈樹(shù)的概念,鏈樹(shù)是具有所有權(quán)、所有權(quán)歷史和與該對(duì)象關(guān)聯(lián)的任意數(shù)據(jù)的單個(gè)對(duì)象。Tupelo是從頭開(kāi)始構(gòu)建的,用于處理這種場(chǎng)景。它的特點(diǎn)是更簡(jiǎn)單,因此更便宜,具有低交易成本的共識(shí)算法(目前建模為每筆交易0.0008美元)。它是快速的,并支持離線功能。
ChainTrees在概念上類(lèi)似于以太坊上的NFTs,但是定義了數(shù)據(jù)與對(duì)象關(guān)聯(lián)和更新的方式。此外,鏈樹(shù)內(nèi)置在Tupelo中,不需要智能合約進(jìn)行部署。
在冰淇淋的場(chǎng)景中,每個(gè)單獨(dú)的團(tuán)隊(duì)將在供應(yīng)鏈中移動(dòng)時(shí)控制ChainTrees,并建立一個(gè)歷史記錄,最終為客戶描述,可以根據(jù)需要進(jìn)行總結(jié)。雙方唯一需要達(dá)成共識(shí)的是在他們之間轉(zhuǎn)移鏈樹(shù)的私有部分。 Quorum Control正在為私有數(shù)據(jù)交換構(gòu)建一個(gè)這樣的服務(wù),我們希望還會(huì)有很多其他服務(wù)。
所以奶制品公司會(huì)生產(chǎn)一棵鏈樹(shù)來(lái)生產(chǎn)一定量的牛奶。奶制品公司將把鏈樹(shù)的所有權(quán)轉(zhuǎn)讓給卡車(chē)公司。每輛卡車(chē)都有自己的鏈樹(shù),它將嵌入每個(gè)奶牛場(chǎng)的鏈樹(shù),生成一個(gè)包含所有奶牛場(chǎng)信息的鏈樹(shù)。當(dāng)乳制品進(jìn)入工廠時(shí),卡車(chē)將鏈樹(shù)的所有權(quán)轉(zhuǎn)移到工廠。這家工廠每一桶冰淇淋生產(chǎn)一棵鏈樹(shù),并將所有權(quán)轉(zhuǎn)移給運(yùn)送給批發(fā)商的卡車(chē),后者可以在運(yùn)送給零售商時(shí)添加有關(guān)冷鏈(卡車(chē)的溫度)的信息。在零售商處,每個(gè)桶的鏈樹(shù)都將其所有權(quán)更改為零售商,然后零售商可以將其出售給客戶。顧客在每個(gè)浴盆里都有完整的歷史,一直可以追溯到各個(gè)奶牛場(chǎng)。
可以訪問(wèn)鏈樹(shù)的用戶可以決定公開(kāi)(或不公開(kāi))哪些信息,但是他們不能修改或添加額外的數(shù)據(jù),除非他們是所有者。即使鏈樹(shù)的所有者也不能從對(duì)象中刪除歷史(盡管他們可以決定提供多少可用歷史)。通過(guò)這種方式,供應(yīng)鏈可以呈現(xiàn)一個(gè)供消費(fèi)者、審計(jì)人員等使用的公共端,同時(shí)保持一個(gè)他們可以用來(lái)彼此進(jìn)行交易的私有端(例如,用于海關(guān)文件、法律合同、發(fā)票等)。這些信息是防篡改的,但最終并不一定要對(duì)用戶可用。在任何一個(gè)步驟中,都可以證明沒(méi)有可用的信息。通過(guò)這種簡(jiǎn)單的方式,可以圍繞可見(jiàn)性、可接受性等創(chuàng)建復(fù)雜的規(guī)則。
圖形表示:
Tupelo客戶端非常簡(jiǎn)單,使用Tupelo感覺(jué)更像是使用API,而不是與智能合約交互。您只需在鏈樹(shù)上運(yùn)行一個(gè)交易。交易列表非常小。此外,雖然定義了與元數(shù)據(jù)交互的方法,但是數(shù)據(jù)是任意的,不需要各方之間的協(xié)議就可以開(kāi)始使用非常真實(shí)的生產(chǎn)應(yīng)用程序。
結(jié)論
我們做了大量的用戶研究,不斷發(fā)現(xiàn)幾乎所有涉及交易的項(xiàng)目,從加密貨幣(數(shù)字資產(chǎn))到房地產(chǎn)投資信托(REIT)管理,都遵循類(lèi)似于供應(yīng)鏈的模式。任何時(shí)候都有關(guān)于對(duì)象的所有者和數(shù)據(jù)。對(duì)象從一個(gè)所有者移動(dòng)到另一個(gè)所有者,并在整個(gè)生命周期中積累數(shù)據(jù)。有時(shí)對(duì)象想要完全公共化,有時(shí)他們?nèi)韵胍絻?yōu)化,但在此基礎(chǔ)上我們能夠相信信息沒(méi)有被篡改,即使是添加了適當(dāng)?shù)臇|西,也并不能修改為新一代的應(yīng)用程序。這類(lèi)應(yīng)用程序一直被炒作,并很有前途。