在我介紹「零信任」的文章中,我提到了「所有涉及現實中實物的交易都無法在維持「零信任」的條件下移植到區塊鏈上」這個觀點。本文我想延伸探討一下虛擬商品是否能在維持「零信任」的條件下在區塊鏈上進行「零信任」的公平交易(Fair Exchange)。這裏我們說虛擬商品,嚴格來說是可以由算法進行驗證的電子數據或知識:比如特定文件的數據(可由哈希值進行驗證)、一份數獨問題的解答(可由數獨規則進行驗證)、一個大數的質因數分解式(可由質數測試和乘法進行驗證)等等。
首先我們要定義一下這個命題的一些條件:假設 A 和 B 要進行一項交易,A 想從 B 處購買一份數據 。使得驗證算法 的輸出爲 1。如果 是某個特定的文件的數據,則驗證算法可以使用哈希函數實現,比如 A 知道 的某種哈希值 ,則可以得到算法 。A 需要向 B 支付 單位的某種虛擬貨幣來購買 。同時 A 和 B 並不信任對方,但他們都願意相信區塊鏈的「零信任」基礎,也就是「確定性透明可信第三方預言機」的特性。另外他們希望交易能有保密性,也就是沒有外人能取得 ,甚至不能從算法 的執行過程中得到任何中間值,比方說哈希值 。而且他們還要考慮區塊鏈的效率問題,也就是區塊鏈不能存儲和計算大量的數據。這個命題就是在這些條件下設計一種協議,使得 A 與 B 在任何狀態下:要麼 A 取得 使得 ,同時 B 取得 A 答應的 單位的虛擬貨幣;要麼 A 不能獲悉關於 的任何信息,同時 B 無法從 A 處取得答應的 單位的虛擬貨幣。簡單來說,就是要麼交易成功,要麼交易失敗,不得出現一方佔另一方便宜的情況。或者再通俗一點,我們要在區塊鏈上實現「一手交錢、一手交貨」。
我們先忽略所有的上述條件,簡單地看一下一個沒有任何安全保障的交易協議是怎樣的:
- B 發送 給 A
- A 驗證 ,如爲 1 則 A 支付 單位的虛擬貨幣給 B,如爲 0 則協議終止
我們可以看到 的驗證是完全在鏈下完成的,且這種情況下 A 佔到了絕對的好處:即使 A 驗證成功了,他也可以終止協議,這樣 B 就損失了 單位的虛擬貨幣。
相對應的,我們可以給出 B 佔到絕對好處的協議:
- A 支付 單位的虛擬貨幣給 B
- B 確認收到錢後再將 發送給 A,否則協議終止
- A 驗證
這個協議問題更多了。首先就算 A 驗證不成功也沒有任何終止協議的手段,畢竟錢已經給 B 了。另外 B 拿到錢可以直接終止協議而不發送任何數據,A 也沒有任何辦法。
事實上 Delgado et al.(2017)[1]提出的協議就是用的 A 佔好處的協議的變種,只不過他們將 拆分成很多個小的文件,加密發送給 A ,A 選擇一部分要求 B 解密,B 解密這些部分由 A 來驗證,A 驗證成功後才給 B 付款。這種變種需要做很多進一步假設:A 得到部分 的數據不算得到好處,但是熟悉密碼學的同學肯定都會對這種主觀的假設嗤之以鼻。我們即使不要效率也不能不要安全性。而且有一定概率 A 抽查的部分剛好都是真貨,而沒有抽到的部分存在部分「水貨」,這種情況 B 也有可能佔 A 的便宜。總之這種協議問題頗多的。
接下來我們看看如何使用智能合約設計一種協議,使得 A 和 B 沒有一方能佔到好處。
- A 創建一個智能合約:包含一個驗證算法 ,只有當 時才將合約賬戶里的錢轉給 B。如果區塊長度超過 則 A 可以提回合約賬戶里的錢(超時情況)
- A 廣播這項合約,並向合約賬戶中打入 單位的虛擬貨幣
- B 確認合約的合法性,然後向合約輸入
因爲區塊鏈的確定性,只要 則 B 一定能拿到 單位的虛擬貨幣。因爲區塊鏈的透明性,A 可以從網絡中獲知 的值;相反如果 ,則 B 拿不到錢,且等超時後 A 可以提回錢,然後 A 也沒有得到一個合法的 值,所以交易正常失敗。
如此我們便解決了公平交易(Fair Exchange)的條件。但是區塊鏈的透明性使得這種解決方案仍然不適合實際應用:如果我們使用哈希值驗證算法 來交易一份文件數據,那文件的哈希值 是寫在合約中的,所以任何人都可以知道交易的文件的哈希特徵。而且因爲 B 輸入的 值也是向全
注册有任何问题请添加 微信:MVIP619 拉你进入群
打开微信扫一扫
添加客服
进入交流群
发表评论