CSDN副總裁孟巖:區塊鏈智能資產的“硬鏈接”思考

財經 孟巖 責任編輯:Leo 2018-07-24

比特幣網絡把比特幣管理得如此之好,能否用類似的機制來管理其他資產呢?CSDN副總裁孟巖從比特幣的設計中吸取靈感,提出瞭解決硬鏈接問題的可行性思路。

最近,區塊鏈概念得到政府、行業的高度關注和支持,但在現實世界的資產管理中,其還鮮有亮點的項目。本文作者從智能資產流通、管理的角度,解釋了數字資產與區塊鏈外的實物資產之間的聯繫問題。區塊鏈想要落地到現實世界,“硬鏈接”的問題肯定繞不過去。

比特幣網絡是一個去中心化的數字資產管理平臺,它管理的數字資產就是比特幣本身。因為比特幣網絡把比特幣管理得如此之好,很多人就想到,能否用類似的機制來管理其他的資產呢?

這個想法,幾乎是每個學習區塊鏈的人能夠想到的第一類應用場景。不需要中介,不需要複雜的智能合約,也不需要更多的技術創新,只需要將比特幣已經驗證的成熟技術搬到其他領域,就可以立刻打造一個去中心化、安全、防篡改、可追溯的智能資產管理平臺,這太具誘惑力了。

在這裡就不列舉什麼食品藥品防偽溯源之類人人都可以想到的場景,就說現在非常火的共享車。如果使用區塊鏈來管理共享車,將車的使用權作為一種智能資產管理起來,立刻就可以激發出一大堆新的應用模式。

比如長租某一輛車,可以在自己不使用的時候作為“二車主”把使用權短租給同事。也可以在指定時間和地點預訂車,而上一個使用者可以通過區塊鏈上的交易將車的使用權賣給你。這種新的應用模式可以想到很多,整個共享車甚至出行市場的業態都可以圍繞區塊鏈重構。

如果再想得遠一點,未來自動駕駛汽車普遍應用之後,區塊鏈將成為全自動出行和物流體系的一個重要維度,支持非常活躍和複雜的交易行為,甚至可以在上面衍生出一系列的金融產品,想象空間無限。

理想很豐滿,現實很骨感。區塊鏈火起來也有一兩年時間了,除了一個又一個花樣迭出的數字貨幣平臺,我們並沒有看到區塊鏈在現實世界的資產管理中有什麼亮目的表演。

唯一值得一提的大概就是Everledger,這是一個以鑽石防偽追蹤為起點,雄心勃勃的鏈外資產管理平臺。但正如我下面將會介紹的,Everledger在實踐中還有繞不過去的一些問題。而在Everledger之外,人們設想的其他資產和物流管理類應用,目前為止還沒有一個能夠引起普遍關注的。到底是什麼原因呢?

硬鏈接難題

一個核心的問題是區塊鏈的“硬鏈接”難題尚未破解。所謂“硬鏈接”,就是在區塊鏈內的數字資產與區塊鏈外的實物或虛擬資產之間建立起來的牢固的、可信任的鏈接綁定關係。

舉一個例子來說明。我們考慮Everledger這一類實物防偽追蹤區塊鏈平臺。無論平臺管理的是一顆鑽石,還是一瓶波爾多紅酒,對應於這個現實世界實物資產(real asset,下文簡稱RA),必在區塊鏈內存在一個代表該RA的數字資產表示(digital asset representation,下文稱為DAR)。

DAR的形式,可以是簡單的一個位串,也可以是類似UTXO那樣更高級的數據結構,總之是一個數字對象。問題在於,如何確保這個DAR與現實世界中它所代表的那RA成一對一關係呢?如果你能做到,並且讓這個對應關係牢固、可信、難以偽造和打斷,我們就可以說鏈內的數字資產表示與鏈外實體資產之間建立了硬鏈接。

一個立即就能想到的方式,就是把DAR信息印成二維碼標籤,或者寫入只讀的IC芯片,稱為智能標籤(Smart Tag,下文稱為sTAG),貼到或者印到RA上。現在絕大多數的區塊鏈防偽類項目就想到這一步。比如給在鑽石的盒子上印個標籤啊,給葡萄酒蓋子上打一個激光二維碼啊,假裝這就把問題解決了。

遺憾的是,這種方法可以說都是不堪一擊。為了說明這一點,下面我們用“攻擊者”的邏輯來分析一下,這是一種在密碼學的研究中經常使用的方式,就是假設我們自己是破壞者,考慮攻破這個系統的幾個主要方式。

第一,“空鏈接”攻擊,或稱為“一對空”攻擊,也就是把貼在RA上的sTAG毀壞掉。毀壞sTAG 之後, 區塊鏈中的DAR就不再對應現實世界中的任何RA,成為“空懸鏈接”,區塊鏈也失去了對這個RA的追蹤和管理能力,這個RA就成了無主的孤兒,任人擺佈 。

第二,“偽鏈接”攻擊,或稱為“一對假”攻擊,也就是讓DAR的記錄與 sTAG 所標示的 RA的記錄不符合。比如區塊鏈內的記錄明明說這個數字資產代表唐伯虎的《雄鷹展翅氣吞天下圖》,但你可以把這個實物標籤揭下來,轉身貼到祝枝山的《小雞吃米圖》上。這跟今天超市換標籤出售過期食品,或者用真的茅臺酒瓶裝假酒,本質都是一樣的——用真標籤綁定假物件。出現這種情況,區塊鏈就面臨非常尷尬的局面。

第三,“一對多” 攻擊,也就是讓區塊鏈中DAR 同時對應多個RA。實施這種攻擊的方法是想辦法複製多個一模一樣的sTAG,貼到不同的實體上,也就是偽造標籤。

第四,“多對一”攻擊,與一對多攻擊正好相反,就是讓把多個sTAG貼到一個RA上,一個物件多個身份證,這樣就可以在交貨之前想辦法把一個RA進行多次銷售。

在以上四種基本攻擊方式還可以任意組合,形成豐富多彩的攻擊模式。簡而言之,如果不能實現一對一的、可靠的、難以破壞、複製和挪動的硬鏈接,那麼用區塊鏈來管理實物資產就是一個笑話。

遺憾的是,據我瞭解,目前大多數區塊鏈防偽追蹤系統的設計,就只達到了這個層面。可以這麼說,這樣的區塊鏈系統,在現實世界中只能是防君子不防小人,實際意義非常有限。

中本聰的啟示

怎麼解決這些問題呢?一個直覺的想法是讓 sTAG唯一、不可偽造且與RA無法分割。那麼我們就從確保sTAG的唯一性出發來思考。首先,sTAG中所含的ID信息,一經產生就必須是獨一無二的,我們永遠無法從區塊鏈中產生出兩個內容相同的標籤。

初看這個要求並不難達到,使用密碼學標準的SHA-256、SHA-512或者其他密碼產生器產生的位串,從概率上講在人類文明存續期間不會出現第二次。

但想要真的實現唯一性並不是那麼簡單。強有力的攻擊者不會規規矩矩的去找區塊鏈重新生成一個新標籤,而是會通過讀取一個標籤中的ID信息,用自家的黑設備複製一個標籤,其中包含一個與原標籤內容一模一樣的ID信息,從而就可以實現上面所列舉的一對多攻擊。

這個問題當然不是區塊鏈首先遇到的。現實世界中防偽,特別是紙鈔、藝術品、珠寶、名酒等物品的防偽,已經有了很豐富的經驗。但一方面,效果其實並不那麼好,另一方面, 這些防偽機制都依賴於一個權威的中心化機構。想要在現實世界解決唯一標籤問題,又不引入中心化機構,這恰恰就是區塊鏈試圖解決的問題之一,因此如果在這個環節當中重新引入權威的中心化機構,那麼整個區塊鏈系統的價值和意義就大打折扣了。

那麼比特幣是怎麼解決這個問題的呢?中本聰沒有費力防範比特幣數據被複制,而是允許任何人都可以隨意複製,但複製是隨意的,操作則要憑私鑰才能進行。

具體來說,中本聰設計了一個“鎖定腳本(locking script)”機制來保護UTXO資產。這個鎖定腳本也叫“負載(encumbrance)”。也就是說,任何人想要動用這個UTXO資產,必須執行這個腳本,過得了關才能動用,過不了關你就別想。

詳細的機制限於篇幅在這裡不詳述,感興趣的讀者可以參考我的另一篇文章《智能資產:概念、動機和技術思路》,該文從代碼層面詳細分析了鎖定腳本的機制。我們在這裡只需要注意以下幾點:

比特幣沒有使用靜態的標籤,而是用執行鎖定腳本的方式來實現所有權的轉換。鎖定腳本的執行,需要“開鎖人”,也就是收款人提供一些“證據”作為參數,才能夠執行成功,從而也才能開鎖。

UTXO 自身包含了鎖定腳本,從而使鎖定腳本成為區塊鏈數字資產(UTXO)不可分割的一部分。這就一舉消除了一對空、一對假、一對多攻擊的可能性。但是比特幣能夠這麼做是有條件的,那就是它管理的智能資產UTXO本身就是數字資產。因此有人評論說,比特幣是使用特定方案解決了一個特定問題,不能把它的解決方案直接照搬到其他領域去,而是必須做一些修改。

每一次交易,原UTXO被消耗,產生新的 UTXO,包含新的鎖定腳本。

任何人都可以複製UTXO,但這並不構成攻擊,因為鎖定腳本保護的是內容,不是UTXO 那幾個字節。比特幣的本質是一個賬簿,只要賬簿內容是一致的,不管有幾個賬簿副本實體,本質上都只有一個賬簿。這就解決了唯一性問題, 並消除了多對一攻擊。

以上是比特幣的設計。需要指出的是,在區塊鏈世界裡,比特幣的思路並不是唯一可行的路徑。比如以太坊就有另一套思路,簡單的說就是一切交給智能合約的思路。在我看來,如果僅僅是進行智能資產的防偽與追蹤,以太坊的做法實在太 大材小用了。因此我還是主張以比特幣的思路為主來解決硬鏈接的問題。

我們能不能從比特幣的設計中吸取靈感,來解決前述的硬鏈接問題呢?

建議方案及討論

一個可能的思路是這樣的:

首先,在現實世界當中sTAG決不能只是一個靜態的標籤,必須是一個可編程嵌入式智能鎖(smart lock,一下簡稱sLOCK)。這個智能鎖其實是一個嵌入式的計算機。比如說,汽車和房屋的sLOCK 可以直接從現有的電子鎖升級而成,而其他物品,則需要創造一種新的發明,就是由sLOCK鎖閉的容器。你把鑽石或者葡萄酒放進這個容器,然後鎖上,規定只有其所有人才能打開,這樣就實現了sLOCK/sTAG與RA的不可分割性。開鎖的過程與比特幣類似,sLOCK 內置了一個腳本,開鎖人需要提供一些只有用自己的私鑰才能生成的信息參數,才能使腳本順利執行,sLOCK開鎖。

我們來看看這樣的sLOCK如何應對上面提出的幾類攻擊。

首先,多對一攻擊不攻自破。原來在使用sTAG的時候,你可以把多枚不同的sTAG貼到一個商品上,然後一物多賣,等到幾位買家上門提貨的時候,發現他們買的竟然是同一個東西,這樣所有權歸屬就混亂了。但是如果採用sLOCK,你不可能把同一塊鑽石放在兩個不同的盒子裡,因此多對一攻擊就無法實施了。

其次,配合一點點制度安排,這個sLOCK就可以抵抗一對空攻擊。前面介紹過,一對空攻擊是通過損毀標籤實現的。但是我們可以逐漸建立這樣一種規範,即世界上任何一顆鑽石的銷售都必須是否放在完好的sLOCK盒子裡進行的,沒有盒子或者盒子有破壞痕跡的鑽石的銷售不受法律保護。這樣一來,你把sLOC 毀掉,拿著鑽石出來,就只能自己用而不能銷售。請注意,區塊鏈保護的是流通中的真實性,物品如果不流通,區塊鏈並不關心其真偽。在某些情況下,甚至可以讓sLOCK帶有特殊機制,一旦自己被破壞,就銷燬其中的物品,那就大大提升了一對空攻擊的實施難度。

但是我仍然可以偷樑換柱,把一塊玻璃碴子放進這個sLOCK容器中,完成一對假攻擊。如果我有技術的話,可以複製幾個一模一樣的sLOCK容器,連其中的信息都完整複製過來,形成一對多攻擊。這個問題怎麼解決呢?

要讓sLOCK對於其鎖定的RA具備描述性。比如,一幅書法繪畫作品,盛放它的sLOCK中必須存有該作品的高清圖片和重要特徵信息,這樣只要用戶願意,就可以讀出這些信息,並且鑑定實物是否與標籤內的信息吻合。這樣以來,如果你偷樑換柱,那麼交易中對方用sLOCK中存儲的信息與實體進行比較,就可以發現問題。當然,你可能會指出,這裡存在一個關鍵的薄弱環節。如果贗品與真品極其相似,以至於買家對著sLOCK中的信息都無法看出真假,那豈不是仍然可以偷樑換柱?確實如此,這樣是有可能騙過買家。但問題在於,我們分辨兩件東西的真偽,歸根結底也只能從能觀察到的特徵來判斷。如果兩者在可觀察的特徵上沒有差別,那在這種情況下談論真假,本身就是沒有意義的。只要兩件物品是有差別的,通過使用一些密碼學中的協議,還是可以大大增加贗品以假亂真的難度的。在這裡就不展開了。

這裡還有最後一個漏洞。如果攻擊者能夠讀取sLOCK中的信息,並且對其加以修改,寫入另一個 sLOCK,那麼就可以實施欺詐。比如我從一個裝有鑽石的sLOCK中讀取全部信息,然後修改其中的物品描述信息,把我手裡的一塊碎玻璃描述成鑽石,再把編輯後的信息寫到一個新買的sLOCK容器中,怎麼辦?這個問題其實是不存在的。因為我們判斷一個盒子裡的鑽石是否為真,除了描述信息跟實物要對的上之外,更重要的是檢查這個鑽石的交易記錄,沿著這個交易記錄上溯,看看最初將鑽石放到盒子裡人,是否是可被信賴的鑽石銷售廠商。這個交易記錄鏈是你無法偽造的。如果我追溯交易記錄,發現第一個鑽石放進sLOCK容器的是某不靠譜青年,你認為我會掏錢去買這個鑽石嗎?

這種思路已經有人在嘗試。德國企業slock.it就是一家做區塊鏈實物鎖的創業公司。但我認為這個領域可以創新的空間還很大。以上的討論對於這樣一個重大話題來說,既不夠嚴謹,也不夠充分。

事實上,硬鏈接這個話題值得從密碼學和智能鎖代碼的層面進行細緻的分析,因為它是用區塊鏈管理實物資產的關鍵技術。但限於本人的水平和文章的篇幅,對此話題僅能進行浮光掠影的討論,以拋磚引玉,引起更多的研究和探討。


文章原標題:區塊鏈智能資產的“硬鏈接”思考  作者:孟巖

相關推薦

推薦中...