天天看點

區塊鍊應用錯誤案例指南

區塊鍊現在是熱門的技術,每個人都在尋求用區塊鍊解決各種各樣的問題。自2017年我開始從事智能合約的安全審計以來,已經看到了太多錯誤的區塊鍊用例。有些錯誤的區塊鍊用例看起來符合邏輯并且也有益處,但是實際上其中存在着問題。本文将介紹存在8種典型的基于區塊鍊的錯誤的解決方案,以期幫助開發者/投資者/客戶更深刻地了解區塊鍊技術的邊界。

相關教程推薦: Hyperledger Fabric | Ethereum Tendermint Bitcoin EOS

1、基于區塊鍊的供應鍊管理

假設你訂購了一批貨物,承運人承諾了運輸條件,例如保持你的貨物處于冷藏狀态。一種區塊鍊應用解決方案是在貨車上安裝可以監視冷櫃溫度的傳感器并定期将溫度資料寫入區塊鍊,這樣你就可以确信承運人所承諾的運輸條件在整個過程中都得到滿足。

這個區塊鍊應用案例的問題不在區塊鍊,而在于傳感器。作為現實世界的一部分,傳感器很容易被愚弄。例如,一個惡意的承運人可能隻會啟動貨車中的一個小冷櫃然後把傳感器放進這個小冷櫃,而把你的貨物放在貨車的沒有冷藏環境的空間以節省成本。

區塊鍊應用錯誤案例指南

我将這種問題定義為:區塊鍊不是物聯網。

在文本中我們将多次重溫這一定義。雖然區塊鍊不允許修改資料,但是它并不能保證資料是正确的。唯一的例外是鍊上交易,當系統不需要與現實世界互動時,才能保證基于區塊鍊的系統能夠驗證資料,例如一個位址是否有足夠的資金來處理交易。

從區塊鍊外部向區塊鍊送出資訊的應用被稱為預言機/Oracles。在預言機的解決方案完善之前,任何基于區塊鍊的供應鍊管理,就像上面這樣的冷鮮物流跟蹤區塊鍊應用,都是毫無意義的,就像沒有可靠的引擎就去設計飛機一樣徒勞。

我從這篇文章

你是否需要區塊鍊?

借用了物流冷櫃的區塊鍊應用案例,也推薦你閱讀該文并對下圖深入思考區塊鍊應用的合理性:

區塊鍊應用錯誤案例指南

2、基于區塊鍊的真品驗證

雖然這個區塊鍊應用案例類似于上面的供應鍊用例,但是我還是想單獨列出來,因為它以一種不同的形式出現。

假設我們生的是産昂貴并且獨一無二的商品,例如進階手表、葡萄酒或汽車。我們希望客戶确信他們買到的東西确實是我們造的,是以我們将葡萄酒瓶關聯到一個基于區塊鍊的通證,并在瓶上印一個二維碼。現在從我們的工廠到消費者的每一個環節(工廠、物流商、商店、消費者)都通過一個單獨的區塊鍊交易進行确認,是以消費者可以線上檢視一瓶葡萄酒的曆史軌迹。

然而,這個聽起來相當不錯的區塊鍊應用案例卻無法抵禦非常簡單的攻擊:一個不良商人可以複制一個帶通證的正品的酒瓶,然後用劣質葡萄酒罐裝,或者換掉你的進階葡萄酒,賣給不關心是不是有通證驗證的人。為什麼會這麼簡單就被破解?是的,就是因為:區塊鍊不是物聯網。

酒瓶是現實世界中的實體對象,是以酒瓶可以被僞造,這一點和數字簽名是不同的。

3、基于區塊鍊的聲明驗證

讓我們以大學畢業證書的驗證為例來介紹這個區塊鍊應用案例的背景。在這種區塊鍊應用案例中,我們需要驗證一個聲明的真實性,例如:彼得是大學畢業生,而不是要驗證一個實體對象的真實性。要確定文憑合規并且簽發日期正确,我們需要檢查數字簽名和時間戳。

數字簽名很好,有些人甚至将數字簽名的基礎 —— 非對稱密碼學 —— 稱為20世紀最偉大的發明。但是我們不要将其與區塊鍊混淆。實際上,數字簽名在區塊鍊之前很早就已經得以廣泛應用了。要注意的是,現在數字簽名常常與區塊鍊捆綁在一起作為賣點。可能你需要的隻是數字簽名,一個區塊鍊應用并不符合你的需求。

時間戳和區塊鍊更接近一些。實際上,區塊鍊本身就是最可靠的打時間戳的方法。你不需要發明任何新東西,隻需要将資料的哈希寫入比特币區塊鍊。

将學生的畢業文憑數字化,然後由幾個教授簽名,最後将哈希寫入比特币區塊鍊,這是一個好的區塊鍊應用案例嗎?是的。不過,重要的是不要用中心化的驗證手段,例如網站或手機app,因為那将會是這個區塊鍊應用的一個緻命故障點。

4、基于區塊鍊的投票

投票也是一個流行的區塊鍊應用案例。當談到利用區塊鍊投票時,我們需要首先清楚地了解這個區塊鍊應用要解決的問題是什麼。

投票作弊/投票人驗證

要解決這個問題,我們需要的是數字簽名而不是區塊鍊。這裡主要的問題與私鑰有關:從哪裡得到私鑰以及如何存儲私鑰。相信不用我解釋為什麼不能由使用者在自己裝置生成私鑰的系統是錯誤的,然而除此之外,代碼開源以及正确地審計密鑰生成軟體、第三方硬體也同樣重要,以確定使用者可以正确處理私鑰問題。

雖然一個區塊鍊應用系統的開發者可以解決前兩個問題,第三個則要難的多。比特币可以幫助我們學習如何使用密鑰。實際上,丢失你的社交媒體賬号的密碼是一回事,但是丢失你的資産的私鑰則要嚴重的多了。

再一次,是預言機/oracle将公鑰與特定的個人關聯起來,如果我們需要利用它投票的話。

公開計票

基本可以說以太坊智能合約可以很好地解決這個問題,因為它可以讓每個人都看到某個候選人得到多少投票。不過在這個區塊鍊應用案例中,開放程度有點過了,因為我們可以看到每個人地投票,是以可以影響他們。雖然系統可以設計成每個人隻能看到自己的投票,但是這又有另一個更複雜的問題:隻要投票人了解别人可以知道他的投票情況,投票人就會有壓力。

這裡還要重申,在這個區塊鍊應用中,我們需要預言機來檢查是否存在虛假的投票人的投票。

5、基于區塊鍊的著作權驗證

假設藝術家A希望利用區塊鍊來注冊他的一個作品。該藝術家拍攝了畫作的照片,然後将照片哈希上傳到區塊鍊,然後他可以将照片貼到自己的部落格裡現在,如果藝術家B宣稱這副作品是他創作的,藝術家A可以利用區塊鍊上的哈希輕松地證明其著作權。

這個聽起來蠻不錯的區塊鍊應用案例中存在兩個潛在的問題:

  • 首先,藝術家B可以說他不了解區塊鍊,是以沒有用區塊鍊來登記其著作權。是以,隻有當區塊鍊著作權普及後這一流程才有益。
  • 其次,藝術家B可以闖入藝術家A的工作室,拍攝作品的照片,然後在藝術家B

    之前先将 照片的哈希傳上區塊鍊

原因在于:區塊鍊不是物聯網

是的,總的來說,這個區塊鍊應用案例是有價值的,然而,除了比特币區塊鍊也不需要别的什麼東西了。

注意,我說的隻是著作權的證明,在我的了解中知識産權沒有意義。

6、基于區塊鍊的土地所有權登記

另一個常見的區塊鍊應用案例是将基于區塊鍊的通證與土地所有權關聯,這裡面至少有兩個問題:

權威機構修改

雖然一個酒瓶/手表/汽車可以在個人之間轉讓,土地所有權和轉讓必須由監管機構登記,這通常需要實地走訪你的土地。如果監管機構堅持你已經轉讓了土地,那麼區塊鍊記錄會怎麼樣?第一個選項是:區塊鍊記錄依然表明你是土地的所有人,雖然這已經不符合實際情況了。第二個選項:權威機構生成自己的記錄,是以覆寫了你之前的記錄,這意味着區塊鍊也沒有起作用。這是一個非常重要的問題,因為區塊鍊被宣稱的一大優點就是保護你免于這種修改行為。

中心化的開發與支援

誰負責開發這樣一個系統并提供支援?如果是監管機構自己或其合作夥伴負責,那麼這樣一個系統不是去中心化的。一個去中心化的協定再加上中心化的開發等同于中心化的協定。

此外,每次當有人向你推銷區塊鍊應用案例時,問問自己:是不是用分布式資料庫就夠了?

如果答案是 YES ,那麼為什麼還要用區塊鍊呢?實際上,區塊鍊要慢的多,而且會消耗更多的資源。另外資料庫開發和內建方面的專家成本要低的多,也更容易找到。

考慮到所有這些問題,我相信對于土地登記而言,一個分布式資料庫是更好的選擇,即使該系統的确需要更加可靠和開放。

實際上,看起來這個區塊鍊應用案例已經成為了現實。Bitfury最近宣布其基于Exonum架構開發的區塊鍊土地登記系統已經上線,并計劃拓展到烏克蘭和摩爾多瓦。非常奇怪的是,我沒有找到該項目的任何技術資料,這表明出于某種原因Bitfury并不急于鼓吹這一項目。

7、基于區塊鍊的銀行間轉賬

根據之前的一些研究,這個應該算是一個好的區塊鍊應用案例。銀行間轉賬涉及到一組彼此并不信任的機構,利用區塊鍊可以無需第三方可信機構的介入。雖然在這裡可以使用比特币,銀行也不會将其互相之間的支付活動公開化。是以我們需要一個私有的區塊鍊,隻有參與跨行轉賬的銀行可以輸入資料、運作節點并驗證交易。

在功能方面,這樣一個系統和具有通路控制的分布式資料庫有差別嗎?是的,的确有一些差別,但是隻有當機構之前有分歧時才能看到差別之處。這裡的問題在于:銀行是認同系統提供的共識,還是更願意訴諸法庭?如果銀行可以選擇第二個選項,那麼這個系統就沒有什麼意義。

另外,如果立法機構禁止或限制這樣的系統,或者要求法院不承認該系統的資料,那麼這整個區塊鍊應用案例也沒有什麼意義了。

8、為了代币而代币

是的,我要說的就是2019年的ICO。為了證明這種行為還在繼續,提醒你别忘了在2019年1月28号,BitTorrent成功ICO。

我的意思是,有些創業公司通過發行代币給你分紅權這種行為。問題還是在于:__區塊鍊不是物聯網__

和風險投資或監管機構不同,區塊鍊并不為投資者負責。代币形式的承諾并不能強制企業的創始人做任何事情。在這方面,ICO更像是衆籌而非IPO。

雖然喜歡去中心化機構這個概念,我必須承認在這一領域幾乎不存在這樣的系統,這意味着你要麼選擇現有的工具,要麼信任公司的創始人。

原文連結:

錯誤的區塊鍊應用案例 — 彙智網

繼續閱讀