論文
Massimo Bartoletti and Livio Pompianu. An empirical analysis of smart contracts: platforms, applications, and design patterns. WTSC 2017, arXiv:1703.06322 [cs.CR]
https://arxiv.org/abs/1703.06322
論文摘要
智能合約是一種計算機程序,不需要可信機構仲裁,可以由相互不信任節點組成的網絡一致地執行。由於智能合約具有抗篡改的能力,在許多情況下都很適用,特別是在需要轉賬以遵守某些商定規則的情況下(如在金融服務和遊戲中)。在過去的幾年中,許多智能合約平臺已經被提出,其中一些已經實際實施和使用。本文研究了在這些平臺中如何解釋智能合約的概念,並將重點放在比特幣和以太坊這兩種最廣泛的貨幣上,量化智能合約在應用領域的使用情況。本文還分析了以太坊中最常見的編程模式,其中提供了智能合約的源代碼。
論文介紹:
1、平臺分析
本文首先選擇6個平臺的樣本:比特幣(Bitcoin)、以太坊(Ethereum)、合約幣(Counterparty)、恆星幣(Stellar)、Monax和應用鏈(Lisk)進行討論。
比特幣是一個轉移數字貨幣比特幣(BTC)的平臺,它是第一個被創建的分散加密貨幣,現在是市值最大的加密貨幣。在比特幣之後,以太坊是市值第二的市場平臺,與比特幣類似依賴於公共區塊鏈,其共識算法類似於比特幣。合約幣是一個沒有自己的區塊鏈的平臺; 相反,它將其數據嵌入比特幣交易中。恆星幣以一個擁有自己加密貨幣的公共區塊鏈為特色,由一個受聯邦拜占庭協議啟發的共識算法控制。Monax支持執行以太坊合約,但沒有自己的貨幣。Monax允許用戶創建私有區塊鏈,並定義訪問它們的授權策略。應用鏈有自己的貨幣和一個公共區塊鏈,具有授權的股權證明共識機制。
表1總結了分析平臺的主要特點。一些單元格中的問號表明無法檢索信息(例如,Monax區塊鏈是私有的,無法確定它們的大小)。平臺名稱旁邊的前三列描述了區塊鏈的特徵:是否公開;其大小;兩個連續區塊之間的平均時間。合約幣由於使用比特幣區塊鏈和比特幣共享同一個單元。衡量以太坊區塊鏈的大小取決於使用的客戶端和修剪模式。例如,使用Geth客戶機,我們在“快速同步”模式下獲得17GB,在“存檔”模式下獲得60GB。在具有私有區塊鏈的平臺中,它們的區塊間隔是自定義的。第五列描述了對編寫合約的支持。第六列顯示事務總數。最後兩列顯示了貨幣兌換商的日交易量和貨幣的市場資本化。
2、智能合約的使用
本文提出了一種智能合約分類法,分為金融、公證、遊戲、錢包、圖書館五類,描述了它們的預期應用領域。
在金融類中,合約將管理、收集或分發資金作為最重要的功能。在公證類中,合約利用區塊鏈的不變性來持久地存儲一些數據,在某些情況下還可以證明它們的所有權和出處。遊戲類別收集了執行機會遊戲及技能遊戲的合約。錢包類合約處理密鑰、發送交易、管理資金、部署和監視,以簡化與區塊鏈的交互。圖書館類合約實現了其他合約使用的通用操作(例如,計算和字符串轉換)。
如表二所示,雖然比特幣和以太坊主要關注金融合約,但我們觀察到其他類別的主要差異。例如,與以太坊不同,公證類別中的比特幣合約具有類似於金融類別的交易量。以太坊第二大使用類別是遊戲。雖然在過去幾年裡已經提出了一些使用比特幣的遊戲,但對它們的興趣仍然主要是學術性的,而且我們沒有實驗證據證明這些合約在實踐中被使用。相反,以太坊編程語言的更大靈活性簡化了此類合約的開發。
3、智能合約的設計模式
本文提出了一些智能合約設計模式,分別為代幣、授權、預言、隨機性、輪詢、時間限制、終止、數學以及分支檢查。
代幣模式用於將一些可互換商品(由代幣表示)分發給用戶。代幣可以代表各種各樣的商品,例如硬幣、股票、結果或門票,或其他可轉讓和可數的東西。授權模式用於根據調用者地址限制代碼的執行。有些合約可能需要從區塊鏈外部獲取數據,預言模式的合約是合約與外部之間的接口。隨機性模式用來處理隨機事件。輪詢模式允許用戶對某些問題進行投票。時間限制合約用來規範合約使用時間。終止模式用來禁用合約。數學模式的合約對保護某些關鍵操作執行的邏輯進行編碼。分支檢查模式用來監測合約是在主鏈上運行還是在分支上運行。
表3顯示了設計模式的使用與合約類別之間的相關性。第i行和第j列的一個單元格顯示一對值:第一個值是使用j列模式的第一類合約的百分比;第二個值是使用j模式的合約的百分比,屬於i類。例如,金融類別中24%的合約使用代幣模式,而所有具有代幣模式的合約中有51%是金融合約。
我們觀察到代幣、授權、時間限制和終止通常是最常用的模式。有些模式分佈在幾個類別中(例如,終止和時間限制),而另一些模式主要在一個類別中採用。例如,預言和隨機性模式是遊戲合約的特有模式,而代幣模式主要用於金融合約。雖然數學使用較少,但它出現在每個類別中。有些合約不使用任何模式(29%的金融和30%的公證);幾乎所有遊戲和錢包類合約都至少使用一個。此外,只有15%的非保密合約根本不使用任何模式。
金融合約中最常見的模式是代幣(24%)、授權(51%)和時間限制(23%)。由於存在實施資產和眾籌服務的合約,我們有一半使用代幣和數學模式的合約屬於金融類別。例如,這些服務使用代幣來表示商品或開發投票。此外,69%的使用分支檢查模式的合約都是金融合約。這是因為在決定轉移資金之前必須先了解分支機構。最後,幾個金融應用程序(29%)執行簡單操作(例如發送付款),而不使用我們描述的任何模式。
在許多公證合約中使用授權模式來確保只有文檔的所有者才能添加或修改其數據,以避免篡改。大多數賭博遊戲都是由玩家付費加入遊戲,並由遊戲的勝利者收取獎勵。授權模式是讓所有人成為唯一能夠兌現參與者費用或執行行政操作的人,並讓獲勝者撤回獎勵。時間約束模式用於區分遊戲的不同階段。
值得注意的是,100%的錢包合約都採用授權和終止模式。高達94%還使用了時間限制模式。相反,在開發錢包時,語言、輪詢和隨機性模式用處不大,而數學有時用於確保操作的安全。
論文貢獻:
本文從不同的角度分析了智能合約的使用。研究了6個智能合約平臺的樣本,指出了它們之間的一些關鍵技術差異。對於比特幣和以太坊這兩個最著名的平臺,本文研究了834個領域的樣本,按照各自的應用領域對其進行分類,並測量了這些類別的相關性。根據以太坊合約源代碼的可用性,本文分析編寫了智能合約時採用的最常見的設計方案。
致謝
本文由南京大學軟件學院2018級碩士生劉子寒翻譯轉述
閱讀更多 慕測科技 的文章