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