原文地址:https://www.researchgate.net/publication/344501038_Smart_Contract_Languages_A_Thorough_Comparison
年中時,?IOSG博文有提到過,將會在形式化驗證(Formal?Verification)方向做一些布局。形式化驗證是什么?
而前不久,Algorand發布的?smart?contract?language?不是圖靈完備的。智能合約開發語言圖靈完備重不重要?
突然,我發現不僅要對Solidity智能合約開發語言里函數有所了解,更需要了解整個智能合約開發語言生態全景。
本文就智能合約語言作一個比較,除了Solidity外,還有很多其它不為我們所熟知的智能合約語言?如Vyper、Mandala和Obsidian等在不同方向改善智能合約的編寫。
然而,就像我們通常只記得第一名一樣,目前開發者主要也是集中于使用Solidity進行開發,雖然可能不會是最好的.?
智能合約語言,還是一個很早階段,未來會是一個什么樣的情況呢?值得我們暢想。
智能合約語言:一個徹底的比較
近年來,智能合約的發展越來越受歡迎。然而,這導致它成了惡意勢力的新攻擊對象。最近對智能合約的一些攻擊已造成數千萬美元的損失。由于智能合約本質上是不可變的,因此需要考慮新的方法來緩解這些攻擊。檢測軟件缺陷的一種方法是使用靜態代碼分析工具。另一種方法是開發新的智能合約特定編程語言,通過設計,抑制已部署代碼中某些類別的漏洞。像Solidity和Vyper這樣的流行的智能合約語言正在迅速發展,但是研究人員也在用一些不太知名的語言來尋找新奇的改善靈感。
本文,我們將探討智能合約語言設計的現狀,并比較這些語言及其對智能合約發展的適用性。將特別關注這些語言如何解決智能合約開發中固有的安全問題。
歐洲央行管委:預計還將有4次50個基點的加息:3月6日,歐洲央行管委霍爾茨曼發言表示,其認為4%的利率才開始具有限制性,預計還將有4次50個基點的加息,應該在3月、5月、6月、7月各加息50個基點。[2023/3/6 12:45:15]
一、?簡介
智能合約的想法從上世紀90年代就已經出現了,但直到2009年區塊鏈的出現,它們才得以實現。智能合約可以在不信任的環境中執行可信任的代碼。這意味著參與者可以確保智能合約已經執行,結果是合約執行情況的準確表示,而無需信任執行者或智能合約開發者。這完全是通過在分布式去中心化、全局和透明的區塊鏈上托管智能合約來實現的。這種新的開發環境支持一種全新的應用程序,即去中心化應用程序,但給智能合約的開發者帶來了一系列新的挑戰。
因為智能合約部署在區塊鏈上,所以每個人都可以查看它們的源代碼。區塊鏈也是不可變的,智能合約的含義是,一旦智能合約被部署,就不能在更改。開發人員必須確保他們正在部署的代碼是正確的并且沒有bug。因此,需要新的語言來滿足這種新環境的具體需求。智能合約中的漏洞可能代價高昂,不僅是在安全漏洞方面,而且在實際資金方面也是如此,因為智能合約通常管理加密貨幣的持有和分發。
本文的其余部分安排如下:在第二節中,我們將介紹智能合約的背景和一些安全問題,在第三節中我們將討論相關的工作,在第四節中我們將回顧當前的智能合約開發語言,在第五節中我們將討論和比較這些語言,在第六節我們總結。
二、背景
智能合約的概念最早由Nick?Szabo在1996年提出。直到2015年開發以太坊平臺,開發真正的智能合約才變得可行。智能合約是一種自動執行的計算機應用程序,它執行合約時不需要來自第三方的驗證。這意味著交易雙方不需要相互信任就能進行交易。
以太坊是最受歡迎的智能合約平臺。它提供了一個稱為以太坊虛擬機的執行環境,它是一種基于堆棧的、圖靈完備的語言。它類似于匯編,為離散操作提供操作碼。因為它是圖靈完備停止問題適用和執行可以永遠運行。為了防止這種情況,為了執行智能合約,調用者向礦工支付費用。這被稱為氣體,以以太坊網絡的貨幣支付,稱為以太。每筆交易都有一個最大的天然氣成本。因此,如果一個事務試圖執行比gas所允許的更多的操作,則拋出異常并回滾事務。
彭博社:幣安在2020年及2021年沒有遵循BUSD儲備程序:金色財經報道,據彭博社報道,幣安承認其與幣安掛鉤的穩定幣并不總是得到儲備的充分支持,但表示現在已經解決了這個問題。彭博社援引區塊鏈分析公司 ChainArgos 的 Jonathan Reiter 的分析報告稱,該代幣在 2020 年和 2021 年存在抵押不足的問題。該發言人指出,用戶贖回從未受到該問題的影響,但沒有詳細說明與幣安掛鉤的 BUSD 抵押不足多長時間,也沒有詳細說明幣安何時發現并修復了該問題。
根據該報告,與幣安掛鉤的 BUSD 穩定幣與 Paxos 發行的 BUSD 的價值相關聯,并被創建為具有可以在以太坊以外的區塊鏈上運行的 BUSD 版本。它由 BUSD 的鎖定儲備以 1:1 的比例支持。穩定幣的彈性以及它們是否有可靠的資金支持在加密貨幣行業是一個有爭議的問題。穩定幣旨在密切跟蹤其他東西的價值,通常是美元。因此,如果投資者將 100 億美元投入穩定幣,理論上應該有 100 億美元用于支持它。最大的穩定幣,Tether 的 USDT,多年來一直擔心它沒有得到充分支持。2021 年,在紐約州發現其謊稱其穩定幣完全由美元 1 比 1 支持后,Tether被迫支付 1850 萬美元的罰款。[2023/1/11 11:05:06]
智能合約容易受到傳統軟件部署不易受到的特定安全漏洞類別的攻擊。其中包括重入、鎖定以太、未處理的異常和事務順序依賴。以太坊網絡上最臭名昭著的安全漏洞之一是利用名為TheDAO的智能合約的重入漏洞。攻擊者使用另一個智能合約對DAO智能合約進行遞歸調用,捐失金額為5000萬美元的ETH。
研究人員開發了多種方法來減輕這些漏洞。一種方法是使用靜態分析工具,如Oyente,在編譯字節碼之后對其進行分析,以確定它是否包含任何缺陷。Perez等人回顧了分析智能合約的現有工具,發現這些工具檢測特定漏洞的能力存在較低的重疊率。例如,在分析774份合同中的重入缺陷時,Oyente和Securify只有23.9%的合約重疊。在實踐中,這意味著開發人員將無法依賴單一工具來一致地發現其應用程序中的漏洞實例。
阿根廷圣路易斯省將發行與美元掛鉤的穩定幣:12月20日消息,阿根廷圣路易斯省批準一項立法,允許發行與美元掛鉤的穩定幣。該代幣被稱為“Activo Digital San Luis de Ahorro”,將提供給該省所有18歲以上的公民,并100%以該省的流動金融資產作為抵押。該法案授權該省發行最多占其年度預算2%的穩定幣。它還規定資產可以在各方之間轉移,但沒有指定將使用哪個鏈進行交易。目前,圣路易斯省擁有超過430,000人。
發行穩定幣只是名為“投資和社會經濟發展的金融創新”法案中描述的舉措之一,該法案旨在通過區塊鏈技術促進該省多個行業的發展,包括創造價值和改進審計程序。除了穩定幣,該法案還允許當地藝術家發行NFT,以促進金融和文化包容性。[2022/12/20 21:56:18]
另一種方法是開發新的智能合約語言,使編寫具有已知漏洞的代碼變得困難或不可能。除了solidity,還有其他智能合約編程語言,其中包括?Vyper、Mandala和Obsidian。每種語言都采用不同的方法來改進現有的工具。在本文的其余部分,我們將分析智能合約語言,并比較它們減輕漏洞的方法。
三、?相關工作
Parizi等人分析和比較三種不同區塊鏈的三種不同語言。它們包括以太坊的Solidity,Kadena區塊鏈的Pact,以及Tezos區塊鏈的Liquidity。然后,他們進行了一個實驗,招募開發人員學習這些語言,并實施了三個智能合約,以確定這些語言在新開發人員的可用性方面如何疊加。Solidity被認為是最容易學習的語言。另一方面,他們在以Pact和Liquidity編寫的智能合約中沒有發現已知的安全漏洞,而在以Solidity編寫的智能合約中卻發現了重入和拒絕服務漏洞。
Harz和Knottenbelt研究智能合約語言和形式化驗證方法。它們考慮每種語言的范式、語義、安全關注點、指令集和度量屬性。他們還回顧了其中一些語言的形式化驗證工具,并描述了這些工具如何很好地檢測智能合約中的漏洞。他們指出,語言的設計會對驗證工具的有效性產生影響。
數據:一巨鯨地址疑似正在做空CRV,CRV 24小時跌超13%:11月22日消息,數據分析機構Lookonchain發推稱:“某巨鯨地址從Aave借出了2000萬枚CRV(約990萬美元) 并將其中1000萬枚CRV(約490萬美元)轉入了OKX,而在過去的七天內,該地址已從Aave借出了3700萬枚CRV,與此同時CRV價格已從0.625美元跌至0.464美元。看起來該地址正在通過做空并拋售借來的CRV獲利。”
截至發文,CRV暫報0.434美元,24小時跌幅13.92%。[2022/11/22 7:56:54]
Jansen等人?問了一個問題,智能合約語言是否需要圖靈完備。他們分析了以太坊區塊鏈上部署的智能合約,發現只有35.3%的合約使用while循環、for循環或遞歸。他們的結論是,非圖靈完備語言對于智能合約開發的大多數場景都是有效的。
四、?智能合約語言
智能合約語言的開發仍處于早期研究階段。少數語言已經很少被使用了。其他的,如Mandala和Obsidian,仍處于概念化和實現階段。在這項研究中,我們考慮了可以被視為死亡了的語言、正在被開發的語言和正在被創造的語言。表中我展示了這里考慮的所有語言和一些相關的細節。?
A、?Solidity
Solidity是大多數開發人員在以太坊網絡上創建智能合約時的默認語言。它是為編寫智能合約而設計的。圖1顯示了2016年1月至2020年1月期間使用Solidity和Vyper?on?Stack?Overflow標簽的問題數量。此處討論的其他語言的標記未顯示在搜索結果中。
它的主要結構是合約,它是面向對象語言中類的分析。Solidity合約具有可見性modifiers的函數,可以通過網絡將值返回給調用者。Solidity的一個新特性是modifiers,它本質上是一個封裝另一個函數的函數,但通過將modifiers名稱添加到函數簽名中來調用。雖然在很多情況下都很有用,但是這個特性混淆了開發人員的意圖,并且常常被忽略。由于以太坊上的智能合約無法調試以遵循其執行流程,因此盡可能明確地設置函數非常重要。圖2示出了簡單錢包合約的實現以及稱為onlyOwner的modifiers的使用,其目的是將公共功能限制為合約的所有者。可以看出,modifiers就像函數簽名本身的語言級關鍵字一樣使用。開發人員很容易忽略是否對函數應用了modifiers,這會導致錯誤的安全感。此外,它混淆了代碼執行流程。?
三星Next高管:Web3項目必須面對實用性的挑戰:8月15日消息,三星Next公司的總經理Raymond Liao在一次采訪中表示,雖然Web3從誕生至今已經顯現出很大的潛力,但該領域的參與者必須面對一個挑戰,那就是效用。Liao談到了該公司通過投資MachineFi潛入Web3領域的舉動,MachineFi是IoTeX項目創造的一個術語,用來描述一個未來的范式,即機器成為Web3技術驅動的主要勞動力。
根據Liao的說法,SamsungNext專注于投資區塊鏈、人工智能和元宇宙。除了MachineFi,這位三星高管還表示,Web3以及加密貨幣的冬天對投資者來說是一個機會。此外,這位高管還強調,與其關注10倍的回報,不如專注于實施,面對實用性的挑戰,擴大Web3生態系統。Liao還贊揚了NFT的效用。今年1月,三星宣布將創建一個NFT聚合器,并將其整合到智能電視中,如MicroLED、NeoQLED和TheFrame。在內置的NFT平臺內,用戶將能夠發現和交易NFT。(Cointelegraph)[2022/8/15 12:26:54]
?B、?Vyper
以太坊網絡上第二種最流行的語言是Vyper,它是一種智能合約語言,其語法受Python啟發。它避免了圖靈的完備性,禁止在數據結構上循環,并且不允許遞歸。循環仍然是允許的,但前提是迭代計數可以在編譯時確定。它使用注釋來修改以太坊虛擬機的功能可見性和特性,例如應付款。
圖3顯示了Vyper中的一個示例合約。合約是一個簡單的銀行。它接受存款,并允許來電者一次取款。這里需要注意的是@nonreprent注釋。在同一個函數中調用另一個函數的鎖。如果沒有這樣的功能,調用者可以在同一事務中重新輸入此函數,并在調用者余額設置為零之前提取該合同的所有資金。
C.?Obsidian
Obsidian,是一種與區塊鏈無關的編程語言。它用類型引入狀態信息,稱為Typestate。所有對象引用可以是擁有的,也可以是無主的。一個對象只能有一個擁有的引用,但可以有多個無主引用。實際上,這意味著在給定的事務期間只有一個調用函數可以改變對象的狀態。Obsidian的另一個新特點是它的客體狀態機制。對象的每個狀態定義都可以定義一組字段,這些字段只有在對象處于給定狀態時才有效。
圖4顯示了用Obsidian編寫的智能合約示例。使用存款功能,來電者將錢存入錢包,錢包的狀態從空轉滿。當調用方退出時,首先需要獲得對貨幣的引用,因為一旦狀態轉換回空,字段貨幣就不再可用。?
D、?Flint
Flint不再處于積極開發階段,但它為智能合約專用編程語言的開發引入了一些新穎的思想。這三個關鍵思想是:
1)?調用者功能。每個公共函數必須包含外部調用方可以訪問此函數的聲明。此外,編譯器將分析這些函數以查找對內部函數的引用,以確保調用方可以訪問內部函數。
2)?資產。這些是特殊類型,例如Ether,不能被復制、銷毀或錯誤地創建。
3)?限制寫入狀態。每個對智能合約的內部狀態進行變異的函數都必須顯式地使用mutating關鍵字進行注釋。
在圖5中,有一個用Flint編寫的智能合約示例。聲明智能合約有多個步驟。首先是合約的定義和字段的聲明。接下來聲明函數。它們按調用方功能分組。如圖所示,存款和取款功能只能由已經在資金圖中的調用者訪問。?
E、?LLL
LLL是以太坊虛擬機的匯編程序之后開發的第一種語言,它只是圍繞著匯編程序本身的一個薄薄的包裝器。它有一個受Lisp啟發的語法,每個智能合約都是一個s表達式。它提供對執行環境內存的直接訪問,并且可以針對速度和更小的二進制大小進行優化。它是圖靈完備的,允許程序員訪問EVM中可用的任何功能。?
?F、?Bamboo
Bamboo是一種面向以太坊虛擬機的智能合約語言。它的語法有點類似于Solidity的語法,并且支持所有相同的默認類型。該語言的目標是顯式地建模狀態轉換。函數返回時必須顯式聲明當前協定的狀態。狀態被建模為具有一組離散函數的多個合約,這些函數僅在合約處于給定狀態時可用。
圖7中的列表展示了另一個示例錢包智能合約。有三種狀態:錢包,空墻,滿墻。錢包狀態是在合約部署期間執行的初始狀態。如果我們需要更多的初始化,我們將在默認塊中進行初始化,而不是立即將合約轉換為空wallet狀態。在合約中,它有一個映射狀態的訪問權。調用方將資金存入錢包后,它將轉換為FullWallet狀態,現在只能調用取款函數。
G、?Mandala
Mandala是一種在研究發展階段提出的語言。它的定義特征是使用代數數據類型。這些類型有多個構造函數,每個構造函數都有多個字段。它支持Java等泛型類型。該語言的主要設計目標是安全性和可審計性,因此它不是圖靈完備的,不允許在編譯時上線未知的循環。
圖8顯示了另一個錢包示例。每個Mandala智能合約由多個模塊組成,這些模塊限制功能和對狀態的訪問,這與Bamboo使用契約管理狀態的方式非常相似。在這種情況下,合同很簡單,沒有必要。Drop關鍵字意味著任何調用方都可以刪除此值而不使用它,Persist關鍵字表示可以持久化該值。類型也被參數化,因此可以想象出多種錢包類型,例如Wallet、Wallet。在取款功能中,金額值是通過參數分解從錢包對象中提取出來的,而不是直接引用。
五、?討論
目前,Solidity是開發新型智能合約項目的最佳選擇。它提供了一個強大的工具、文檔和示例生態系統。許多智能合約和去中心化的應用程序都是用Solidity構建的,并部署了以太坊區塊鏈,每天處理大量交易。它正在積極的開發中,語言設計者正在添加新的功能,迫使開發人員明確他們的意圖,避免簡單的錯誤。
第二個不錯的選擇是Vyper,但它遠不及文檔和開發人員工具那樣可靠。盡管如此,它的設計更注重安全性,并提供了很好的保護措施來防止容易被利用的漏洞。它類似于Python的語法使許多開發人員熟悉它。
這里討論的其他語言還不夠成熟或開發不夠活躍,不足以在新的開發項目中認真考慮。LLL實際上是由Ethereum基金會使用的一些早期智能合同,但是它的語法和對低級別內存管理的要求使得它很難重新命名。Mandala還沒有編譯器。雖然它顯示了安全管理狀態的希望,但它處理類型的方式與已建立的語言大不相同,因此呈現出陡峭的學習曲線。Bamboo有一種管理狀態的新方法,它迫使開發人員明確意識到在智能合約的整個生命周期中,哪些功能和應用程序狀態是可用的。然而,這個項目已經兩年沒有新的提交了,并且缺少編譯器之外的任何工具。Flint是一種死氣沉沉的語言,除了最初描述其設計的研究論文外,我們無法找到任何信息。因此,盡管它引入了許多有助于編寫更安全的智能合約的功能,但對于開發來說,這是一個不可能的選擇。Obsidian仍處于早期發展階段。它顯示了它的前景,因為它專注于開發人員的人機工程學和安全性,但是它的所有權概念加上TypeState,使得開發人員可以一下子記住很多可移動的部分。
六、?結論
目前,智能合約開發語言的前景相對較小,但對新方法的研究很多,現有的語言也在頻繁地變化。當前尋求圖靈完備并提供面向對象特性的語言,雖然功能強大,但已經表明用它們編寫的智能合約容易受到嚴重錯誤的影響。將一種語言的特性限制到不再圖靈完備的程度,這種方法有助于消除某些類的錯誤,但要求開發人員以根本不同的方式編寫代碼,而不需要使用循環或遞歸。令人驚訝的是,最適合智能合約編程的函數式編程范式只有兩種死的語言來表示。由于一個可利用的bug的成本如此之高,因此需要對智能合約編程語言的開發進行更多的研究,這種語言限制了副作用,并且仍然具有良好的開發人員工效學。?
Tags:DITLIDSOLIDSOLCreditcoinLido Staked ETHSOLID價格sol幣還有希望嗎
IPFS/Filecoin,在2020年10月15號主網成功上線。根據Filecoin的官方愿景,是要把數據存儲落實到分布式架構存儲上,并且存到Filecoin的網絡上.
1900/1/1 0:00:00東哥論幣晚間比特幣行情分析與操作策略 一小時圖上看,幣價保持在均線下方走動,五日均線與十日線呈下探趨勢,布林線呈開口狀態短期應該會有很大波動,KDJ先三線交叉形成金叉.
1900/1/1 0:00:0011月3日,閃電網絡的開發公司閃電實驗室宣布推出LightningPool,節點運營商可以在其中購買運行網絡所需的流動性,這也意味著閃電網絡將允許比特幣用戶直接參與DeFi.
1900/1/1 0:00:00抬頭需要底氣,低頭需要勇氣。只有勇于低頭并能清醒地評估自己的人,腳踏實地,才能在人生的波峰浪谷間笑傲風云!只有敢于抬頭并能遇挫而永不服輸的人,下馬看花,方能在生活的挫折坎坷中修成正果.
1900/1/1 0:00:00作者:資深撰稿人,行業研究專家,眾邦社區創始人,官微:btshijie 觀點一: Forsage全球超過30個國家參與布道推廣,真正的國家大盤,國際共識,才能安全持久穩定,賺多少你自己說了算.
1900/1/1 0:00:00出來社會打拼了幾年時間,銭沒掙到,倒是欠了網貸二十多萬。愧對家人,愧對自己。這都是碰上了那個賽車游戲而導致的。我會接觸到這個是因為有好幾個同事都在玩,我因為好奇也參與了進去.
1900/1/1 0:00:00