比特幣交易所 比特幣交易所
Ctrl+D 比特幣交易所
ads

知道創宇周啟鵬:未來智能合約涉及行業會更廣、邏輯復雜度更高、非開發者也能輕松編寫 | 區塊鏈P.O.D大會_GAS

Author:

Time:1900/1/1 0:00:00

9月5日,由Odaily星球日報主辦、36Kr集團戰略協辦的P.O.D大會在北京舉行。知道創宇解決方案部負責人周啟鵬應邀在大會安全論壇上發表題為《智能合約安全現狀與未來》的演講。

在分享中,周啟鵬較為系統的介紹了智能合約的產生及應用,安全事件以及安全風險分析,并提出隨著智能合約在社會化大規模應用中應對智能合約安全的策略。周啟鵬表示,未來智能合約社會化應用的難點主要有三個:一是隨著“區塊鏈+”浪潮的到來,涉及的行業將越來越廣;二是行業應用所需的合約復雜度越來越高;三是未來的智能合約,除開發者外非開發者也可以編寫,這將給智能合約的安全帶來很大挑戰。對此,知道創宇“404”安全實驗室研發了一套智能合約驗證系統“昊天塔”。該系統和公鏈、聯盟鏈等團隊深入合作,以提供應用層的安全防護能力,支撐智能合約數量和邏輯復雜度不斷增加的應用場景。以下為演講全文,enjoy:我今天的演講分為四個部分,第一個是探討一下智能合約發生了哪些引發我們思考的安全事件,為什么我們要開始討論智能合約的安全。第二部分會對智能合約的安全風險做一個簡單總結,把這個問題向大家做一個描述。第三部分是區塊鏈+應用的情況下智能合約安全又是怎樣的。最后一個是未來的智能合約要如何做,我們也提出了自己的想法和建議。首先是看智能合約安全的現狀。在此之前我想先解釋一個名詞——智能合約。智能合約是區塊鏈的核心技術之一。之所以稱作智能合約,是因為智能合約在區塊鏈當中是一段能夠自動化執行的程序代碼,嵌在區塊鏈的頂層架構上。所以我們可以簡單的理解為,如果把區塊鏈技術比作現在大家都用智能手機操作系統,或者說區塊鏈底層的技術可以認為是一個網絡分布式的操作系統,智能合約就可以理解為是這個網絡分布式操作系統中所運行的程序。所以智能合約是一個以信息化的方式傳播,驗證和執行合同的協議。智能合約基于區塊鏈去中心化的特性,允許在沒有第三方的情況下進行可信的交易,同時這些交易是可以追溯、不可逆的,這些因素促進了智能合約技術的發展。智能合約的最終目的是提供比原來紙質合同,或者說合同文本更優的安全方案,同時減少雙方毀約和因此產生的糾紛,可大大提高交易的效率。要追溯歷史的話,這個概念是1994年的時候由科學家尼克·薩博提出來的。當時互聯網還是一個雛形,只是提出智能合約這樣一個設想。2008年區塊鏈1.0版本誕生,提供一個天然可信環境,但是這個環境缺失一些東西,沒有能夠對外提供更多可以被第三方執行和調用的接口,所以可以說區塊鏈1.0只支持一些簡單的指令,到2014年區塊鏈2.0版本發布,這個時候就在具備區塊鏈1.0可信環境屬性同時,開始支持圖靈完備,設計了可供開發者調用和執行的接口,提供了與應用場景解決的可能性。接下來我們可以回顧下智能合約真正被運行起來后,產生的對整個歷史進程影響比較大的安全事件,這就是發生在2016年,以太坊中的DAO事件。2016年6月15日,攻擊合約被創立。6月17日,攻擊開始,VitalikButerin得知攻擊消息后立刻通知了中國社區。theDAO監護人提議社區發送垃圾交易阻塞以太坊網絡,以減緩DAO資產被轉移的速度。隨后V神在官方博客發布公告。解釋了被攻擊的一些細節以及提出軟分叉解決方案,不會有回滾。不會有交易和區塊被撤銷。軟分叉將從塊高度1760000開始把任何與theDAO和childDAO相關的交易認做無效交易,以此阻止攻擊者在27天之后提走被盜的資產。這之后會有一次硬分叉將資產找回。我們看一下合約的本身是怎么被攻擊的。首先左邊是DAO智能合約的代碼片斷,這里邊寫了一個withdraw函數,右邊是黑客攻擊合約的代碼片段,這個攻擊合約在執行的時候,可以通過外部直接調用的方式調用DAO智能合約的withdraw函數,一層一層不斷執行不斷遞歸調用,使得黑客可以通過合約外部調用方式用攻擊合約把原合約很多數字資產做了轉移,由此引發DAO事件。最大的影響莫過于對以太坊這條公鏈,因為產生了一個硬分叉。接下來分析一些智能合約的安全風險。先跟大家交流一下智能合約代碼方面的特性,我總結了四類:第一個是賬戶的設計,智能合約一共設計了兩種賬戶,一種是外部賬戶,由公私鑰體系做控制,另一種叫做合約賬戶,是由代碼本身控制。第二個是在區塊鏈2.0上還有個叫gas的東西。合約代碼越復雜的時候,我在執行這個合約過程中所需要花費的gas越多。這就產生一個問題,如果調用者提供的gas不足,這個合約里面已經執行的代碼是會被回滾的,這個合約調用者也可以設計自己本身的gasPrice,礦工優先處置gasPrice較高的交易,所以gasPrice如果設計的比較低,或者設計的太高了等等這樣一些方式,都是不合理的。接下來是函數,一共涉及幾種函數,第一個是fallback函數,同時設計transfer、send、call.value等等這樣接收資金的函數,同時還有一個selfdestruct這樣一個函數去做合約。最后是函數調用方面,類似于傳統的調用方式。接著我們來看智能合約語言的特性。

韓國“區塊鏈城市”中的大多數公司都不知道什么是區塊鏈:釜山研究所最近的一份報告顯示:在韓國釜山的區塊鏈沙盒城市中,有62%的公司顯然對這項技術一無所知。

自去年以來,釜山被韓國聯邦政府視為區塊鏈開發的“無監管”區域。該市在區塊鏈領域開展了許多項目,包括基于區塊鏈的虛擬電廠的計劃,甚至是其自己的市政加密貨幣的計劃。

來自各行各業的100家接受調查的公司中,有91%的人表示他們沒有計劃采用區塊鏈技術。在對26家與區塊鏈相關的公司的另一項調查中,有23%的人抱怨最近面臨的監管障礙。此外,有19%的區塊鏈企業還表示他們對發展感到孤獨,指責政府缺乏對區塊鏈采用的支持,而15.4%的企業則擔心缺乏技術和人力資源來開發該技術。[2020/9/19]

這個語言當中本身涉及的函數默認可見性是public,只要寫出一個合約,函數如果沒有設計權限,對于用戶來說都是公開的public。第二個里面涉及大量數值運算內容。第三個是設計三種異常處理方式,require、assert或者revert這三種。它們各有區別,require一般是寫在函數前面,用來檢查輸入的變量和合作狀態變量是否滿足條件,如果滿足條件的話才會去執行。assert這個函數,從開發者角度會寫在函數的尾部,用來檢查函數的內部錯誤,如果出現錯誤就會強制停止。revert函數更特殊一些,遇到一些無效代碼,會回滾之前所有的狀態。這三個函數還有一個區別,revert可以返回,合約如果沒有執行的話,這個gas是不需要付的。剛才講到了,合約本身是有一個外部賬戶和合約賬戶的區分,所以智能合約風險第一個也是我們認為比較常見的問題,叫做訪問控制的問題。訪問控制函數應該設定成只有特定的用戶才能夠調用這樣一個情況。我是合約的用戶者才能夠調用一些挖礦函數,但是我們在代碼過程當中能夠看到,黑客這邊可以通過寫惡意合約或者寫攻擊合約來提升自己權限,使人人都可以成為一個合約擁有者,這樣無形當中把整個合約內容函數,或者叫做合約賬戶函數暴露在外面,就產生后面一系列問題。下面舉一個Owner構造函數的錯誤例子。

SBF:人們知道如何計算年收益,只是有時不理會:FTX首席執行官SBF今日發推稱:“嘿兄弟,我認為每個人都忘記如何計算年收益。對此,他在最新的推特中補充說明:可以明確地說,人們知道如何計算年收益,但他們只是有時候不理會。”[2020/9/18]

構造函數在部署合約的時候才調用,并且本身不上鏈。普通函數則是能夠被任意調用,同時代碼也寫在區塊鏈當中。大家應該理解一個情況,數據也好,合約也好,一旦上鏈,都是被允許查看的,所以普通函數寫在鏈上之后可以被任意的團隊,可以被惡意黑客或者被白帽子參考和研究。下面做一個簡單的代碼梳理,這邊寫了一個構造函數Owner,下面這個函數定義的function中,大家能夠看到這個Owner函數的大小寫變了,由于大小寫原因書寫錯誤,導致了這樣一個構造函數變成了一個普通的公有函數。接下來我們整理了一下智能合約中我們認為目前出現安全風險比較大的四個原因。首先第一個是智能合約在整個區塊鏈的架構當中,屬于中間協議層的最上層,在上面是我們所謂的分布式應用,所以出現的位置是位于上層應用,上層應用本身出現安全問題的概率,按照以往基于windows操作系統的應用出現問題概率相對會高一些。第二個是語言的發展時間很短,語言本身不夠完善。到目前為止,這個語言版本大概在0.4.24,一般能夠公開發布的開發語言版本可都是在V1.0或者V1.1等等,所以說從版本本身發展來說還需要一個很長階段。第三個問題屬于國內項目方這邊,目前經驗不是很充足,語言本身發展時間又很短,基于solidity這個語言產生的示例或范示標準文件比較少,包括官方發布的也存在問題,所以導致開發人員經驗更少,又不熟悉語言特性,會拿傳統開發互聯網的軟件開發區塊鏈,缺乏安全經驗導致問題出現。最后就是目前并沒有一個智能合約代碼審核的完善標準,這個標準沒有的話,實際上其實還有很多事情大家都是不清楚的,就會產生更多的奇奇怪怪的問題。接下來一個是展示一下開源項目DAPS統計以及公布的分布式應用的安全問題。有遞歸調用漏洞,訪問控制,整數溢出,未檢查底層調用,錯誤隨機等等這樣十個類。最后一個原因是智能合約本身也是頂層應用,包括本身的安全問題都還有很多未知未覺的領域存在,需要更多項目方,更多的白帽子,更多安全廠商一起努力,不斷使技術,還有上層應用更加健壯,為更多社會化應用服務。接下來想把我們智能合約未來應用的場景做一個大的猜想,或者做一個預期。首先現在結合我們社會化的應用來說,區塊鏈也好,智能合約也好,其實已經和我們生活當中一部分事情結合在一起了。首先第一個金融屬性,像之前螞蟻金服在香港的新聞,利用區塊鏈技術做跨境匯款,包括現在保險、證券、股權登記這樣一些原有金融領域的應用,現在已經慢慢出現雛形了。第二個物聯網應用,現在基于區塊鏈的物聯網、汽車租賃應用也逐漸出現。第三個供應鏈,上午百度介紹的時候,針對百度百科的文件編輯溯源也在落地建設過程當中。能源領域點對點的便利共享的領域,包括公共服務領域,針對我們文化、教育、產權、醫療等等這樣一些領域逐漸出現了。下面做幾張圖的展示,首先介紹一下傳統匯款和區塊鏈匯款的差別。在傳統匯款當中,境內都還好,速度很快,但是一旦涉及到境外的跨境匯款效率非常低,這里面涉及到一個問題,叫做中間銀行和清算網絡,作為一個中心化機構解決信任問題,導致效率會有所降低。如果把這個場景放到區塊鏈上,用智能合約實現的話,通過鏈本身的去中心化信任的機制,資產轉移的就可以用智能合約實現,從資產結算任何時間結算,包括資產轉移,上次螞蟻金服那邊在做的時候,從菲律賓匯款到香港大概用了幾十秒時間。第二個應用在傳統供應鏈金融,我們已經看到國內有一些機構大膽用區塊鏈技術嘗試物品溯源,比如之前曝光的疫苗事件。雖然疫苗生產廠商作為源頭無法通過區塊鏈技術進行控制,但是疫苗整個在冷鏈運輸,在各個監督站各個醫院的數據都可以上傳,防止中間有一些個人的惡意行為,導致在傳播當中數據的丟失和篡改。第三個針對傳統物流,原來傳統物流有很多痛點,互相不信任,之前用淘寶的時候最大的問題到底是買方先付錢還是賣方先發貨,后來出現了支付寶為來解決第三方信任問題,買房把錢給中間平臺。如果有區塊鏈能夠和網購支付場景結合的話,互不信任這個問題可以解決,買方可以在收到貨的這一刻,訂單信息就會在鏈上做數據提交,這個時候買方賬戶里面的錢就可以通過智能合約方式直接打到賣方賬戶上面去,包括訂單被篡改風險,還有隱私信息,包括現在大家遇到快遞信息泄露個人隱私,將來都可以上鏈的話,大家面對的都是在鏈上隱藏數據的信息身份。還有針對疫苗,針對醫院,針對醫療體系,從每一個藥廠藥品信息上鏈,藥房售賣藥片都是可以在鏈上確認的,患者也可以和醫生做關聯,甚至可以用一個APP知道這個人的健康信息,包括歷史服藥信息,在哪些醫院檢查,都是能夠被查到的。前面做了一些大膽的幻想,下面看一下未來智能合約會是一個什么狀態。第一個是區塊鏈+應用,在未來可能涉及的行業特別廣泛,剛才上午百度區塊鏈的平臺介紹了幾個特點,第一個和版權結合,我們現在很多商用圖片都會上鏈,包括未來可能會有數字音樂版權,數字電影版權都會上鏈,包括像郵政、游戲等等,和我們生活的結合越來越深,涉及的行業也越來越廣。第二個是隨著行業越來越多,每個行業都有每個行業的特點,所以行業應用復雜度越來越高,現在智能合約的代碼是300行到500行,將來智能合約應用,一個合約可能有幾千或者上萬行代碼,代碼邏輯越復雜,產生的邏輯漏洞,安全威脅肯定會越多。最后一個場景是開發者現在還比較少,未來的開發者越來越多,越來越成熟,將來提供很多智能合約的應用,不僅僅是對開發者,也可能對更多普通的民眾開放。我們的民眾就可以像現在用APP一樣,簡單輸入一些數據,輸入一些數量或者輸入一些價格,就可以自發產生智能合約,后面其實是公鏈方針對智能合約、對自己項目所起的標準,這樣的人越來越多。所以他們所產生的問題越來越多,通過目前的使用方式就不現實了。我們知道創宇404實驗室也是結合之前介紹的,未來預計會有更廣泛更復雜的應用,還有更多的智能合約的場景,我們設計研發了一套智能合約智能驗證的系統,能夠在結合人工審計情況下,更多通過自動化智能化,通過AI方式和很多的公鏈項目方一起深入的結合,通過深度結合方式,對整個鏈產生的智能合約標準,和未來所產生智能合約使用的應用,讓他們更健康更健壯一些,減少所出現的安全漏洞,讓這些智能合約能夠給我們生活帶來便利性的同時,減少經濟上的損失。后面這兩個是我們現在目前內部版本的截圖,把名字定義為叫做昊天塔,通過這樣一個產品,或者這樣一個系統,來為更多智能合約開發者和使用者提供安全的服務和保障。今天介紹暫時到這里,希望后續有關心的技術方面的同學或者是項目方,如果有興趣大家在一起多多交流,謝謝大家。

聲音 | Wei Liu:注冊比特幣白皮書是為了讓人們知道任何人都可以注冊版權:據coindesk報道,上周注冊了比特幣白皮書(比特幣:點對點電子現金系統)版權的“Wei Liu”是加密基金MarvelousPeach Capital的首席執行官。Liu表示,提交只是為了讓人們知道任何人都可以注冊版權。每個人都可以是中本聰。并且他想給所謂“澳本聰邪教分子”開個玩笑。對此,澳本聰(Craig Wright)評論稱:“現在我們都可以展示我們的憑據,看看誰最終穿著橙色西裝(囚衣)”。據悉,Liu是F2Pool的前首席運營官,于2011年開始進行比特幣挖礦。他還曾在Cobo Wallet工作過。[2019/5/31]

Shapeshift CEO:比特幣與央行一樣少有人知道其如何運作 卻一直在被使用:Shapeshift的首席執行官Erik Voorhees在其社交媒體發文稱:“現在有許多人質疑比特幣是如何運作的,并且因為比特幣的不確定性而遠離它。然而與此同時,這些人中沒有一個人知道中央銀行的業務是如何運作的,但卻毫無疑問地一直在使用它。[2018/3/22]

用戶提交的韓幣退款申請一周還未到賬,Bithumb表示由于內部問題,但不知道什么時候處理:1月11日,一韓國用戶向韓國最大的虛擬貨幣交易所Bithumb提交韓幣退款申請,但是已經過了1周都未到賬。對于這個問題Bithumb交易所表示 :“是由于內部問題導致延遲,但是什么時候會處理還不知道”。 現在有很多用戶都提交了韓幣退款申請,但都得不到處理。[2018/1/17]

Tags:區塊鏈DAO比特幣GAS有人靠區塊鏈4天就掙了30萬MakerDAO杭州女子花300萬買比特幣VEGAS幣

火幣下載
星球日報 |消息人士稱李林或將借殼上市; 百度回應“區塊鏈業務涉幣”傳聞_CEO

頭條 媒體:消息人士稱李林或將借殼上市,火幣對此不承認也不否認火幣中國9月28日公布其業務架構,但最核心的數字貨幣交易所業務并不在架構里.

1900/1/1 0:00:00
美國國會暫停審查恐怖主義加密融資的法案,加密貨幣是恐怖融資邊緣形式,法幣仍是主流_加密貨幣

據coindesk9月27日報道,美國國會已經暫停組建調查數字貨幣工作組的法案,即眾議院第5036號決議.

1900/1/1 0:00:00
大眾將發布基于IOTA的區塊鏈應用,以后我的汽車數據要上鏈了?_區塊鏈

據EthereumWorldNews報道,大眾汽車與IOTA合作區塊鏈項目DigitalCarPass即將完成并發布.

1900/1/1 0:00:00
趙長鵬舌戰 V 神,究竟加密幣市值還能不能再翻 1000 倍?_RAM

挑頭的是趙長鵬。9月11日早上,趙長鵬推特的晨醒一更帶著些“火藥味”。推特內容是回應9月8日V神在接受彭博采訪時說的一個觀點——“區塊鏈行業爆炸式增長將難以為繼”.

1900/1/1 0:00:00
Mimble-Wimble:區塊鏈的黑魔法_MIM

編者按:本文來自哈希未來,作者:陳致佳、蒙繹澤、江澤武,星球日報經授權發布。報告摘要:Mimble-Wimble提供了一種對比特幣進行顯著優化的方法.

1900/1/1 0:00:00
區塊鏈與傳銷不得不說的故事_ILY

文|Odaily星球日報盧曉明郝方舟“金融就是龐氏騙局。”“黃金就是龐氏騙局。”曾經接觸過資金盤的韓城對金融的感覺過于負面.

1900/1/1 0:00:00
ads