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這樣一個函數去做合約。最后是函數調用方面,類似于傳統的調用方式。接著我們來看智能合約語言的特性。
BlockBank運營主管:沒人知道誰在控制薩爾瓦多的BTC密鑰:9月28日消息,薩爾瓦多本月早些時候正式承認比特幣為法定貨幣,但許多問題仍未得到解答,其中包括一個出于安全目的的重要問題:誰控制著該國比特幣存儲的私鑰?加密錢包提供商 BlockBank 運營主管 Nolvia Serrano 在接受采訪時提出了這個問題,她表示:今天我們的標準是什么?薩爾瓦多會購買更多比特幣嗎?是不是要等到下個月?我們不知道。他們是否打算購買更多比特幣?購買過程是什么?誰在控制BTC密鑰?誰在監督這些過程?此外,Nolvia Serrano還成薩爾瓦多政府尚未披露為 Chivo 錢包選擇供應商的標準,并認為比特幣對透明度的承諾與薩爾瓦多缺乏公開信息的比特幣政策存在明顯差異。根據弗朗西斯科加維迪亞大學公民研究中心委托今年 7 月進行的一項調查發現,77% 的薩爾瓦多人認為該國總統的比特幣法案不是明智之舉,今年 9 月進行的第二項調查發現,超過三分之二 (67%) 的受訪者不同意或強烈反對比特幣成為薩爾瓦多的法定貨幣。[2021/9/28 17:11:28]
這個語言當中本身涉及的函數默認可見性是public,只要寫出一個合約,函數如果沒有設計權限,對于用戶來說都是公開的public。第二個里面涉及大量數值運算內容。第三個是設計三種異常處理方式,require、assert或者revert這三種。它們各有區別,require一般是寫在函數前面,用來檢查輸入的變量和合作狀態變量是否滿足條件,如果滿足條件的話才會去執行。assert這個函數,從開發者角度會寫在函數的尾部,用來檢查函數的內部錯誤,如果出現錯誤就會強制停止。revert函數更特殊一些,遇到一些無效代碼,會回滾之前所有的狀態。這三個函數還有一個區別,revert可以返回,合約如果沒有執行的話,這個gas是不需要付的。剛才講到了,合約本身是有一個外部賬戶和合約賬戶的區分,所以智能合約風險第一個也是我們認為比較常見的問題,叫做訪問控制的問題。訪問控制函數應該設定成只有特定的用戶才能夠調用這樣一個情況。我是合約的用戶者才能夠調用一些挖礦函數,但是我們在代碼過程當中能夠看到,黑客這邊可以通過寫惡意合約或者寫攻擊合約來提升自己權限,使人人都可以成為一個合約擁有者,這樣無形當中把整個合約內容函數,或者叫做合約賬戶函數暴露在外面,就產生后面一系列問題。下面舉一個Owner構造函數的錯誤例子。
Cocos-BCX 生態 DeFi+NFT 項目 CROSWAP 已通過知道創宇安全審計:據官方消息,9月26日,Cocos-BCX 生態首個 DeFi+NFT 項目 CROSWAP 智能合約通過知道創宇安全審計,安全狀態為五星安全。
CROSWAP 是 Cocos-BCX 生態投資的首款 DeFi+NFT 的去中心化 AMM 代幣兌換協議 ,于9月22日上線,CROSWAP.COM 首創 LP NFT 分解合成模式。用戶獲得的 LP Token 將從 FT 升級為基于 COCOS-1808 非同質數字資產標準的 LP NFT,LP NFT 支持分解與合成,更可與 DApp 產生聯動,賦予 DeFi 與 NFT 更多使用場景與想象空間。
知道創宇創立于2007年,并于2015年獲得騰訊大范圍戰略投資,擁有近百位國內一線安全人才,比特大陸、火幣網等皆是知道創宇的客戶。[2020/9/28]
構造函數在部署合約的時候才調用,并且本身不上鏈。普通函數則是能夠被任意調用,同時代碼也寫在區塊鏈當中。大家應該理解一個情況,數據也好,合約也好,一旦上鏈,都是被允許查看的,所以普通函數寫在鏈上之后可以被任意的團隊,可以被惡意黑客或者被白帽子參考和研究。下面做一個簡單的代碼梳理,這邊寫了一個構造函數Owner,下面這個函數定義的function中,大家能夠看到這個Owner函數的大小寫變了,由于大小寫原因書寫錯誤,導致了這樣一個構造函數變成了一個普通的公有函數。接下來我們整理了一下智能合約中我們認為目前出現安全風險比較大的四個原因。首先第一個是智能合約在整個區塊鏈的架構當中,屬于中間協議層的最上層,在上面是我們所謂的分布式應用,所以出現的位置是位于上層應用,上層應用本身出現安全問題的概率,按照以往基于windows操作系統的應用出現問題概率相對會高一些。第二個是語言的發展時間很短,語言本身不夠完善。到目前為止,這個語言版本大概在0.4.24,一般能夠公開發布的開發語言版本可都是在V1.0或者V1.1等等,所以說從版本本身發展來說還需要一個很長階段。第三個問題屬于國內項目方這邊,目前經驗不是很充足,語言本身發展時間又很短,基于solidity這個語言產生的示例或范示標準文件比較少,包括官方發布的也存在問題,所以導致開發人員經驗更少,又不熟悉語言特性,會拿傳統開發互聯網的軟件開發區塊鏈,缺乏安全經驗導致問題出現。最后就是目前并沒有一個智能合約代碼審核的完善標準,這個標準沒有的話,實際上其實還有很多事情大家都是不清楚的,就會產生更多的奇奇怪怪的問題。接下來一個是展示一下開源項目DAPS統計以及公布的分布式應用的安全問題。有遞歸調用漏洞,訪問控制,整數溢出,未檢查底層調用,錯誤隨機等等這樣十個類。最后一個原因是智能合約本身也是頂層應用,包括本身的安全問題都還有很多未知未覺的領域存在,需要更多項目方,更多的白帽子,更多安全廠商一起努力,不斷使技術,還有上層應用更加健壯,為更多社會化應用服務。接下來想把我們智能合約未來應用的場景做一個大的猜想,或者做一個預期。首先現在結合我們社會化的應用來說,區塊鏈也好,智能合約也好,其實已經和我們生活當中一部分事情結合在一起了。首先第一個金融屬性,像之前螞蟻金服在香港的新聞,利用區塊鏈技術做跨境匯款,包括現在保險、證券、股權登記這樣一些原有金融領域的應用,現在已經慢慢出現雛形了。第二個物聯網應用,現在基于區塊鏈的物聯網、汽車租賃應用也逐漸出現。第三個供應鏈,上午百度介紹的時候,針對百度百科的文件編輯溯源也在落地建設過程當中。能源領域點對點的便利共享的領域,包括公共服務領域,針對我們文化、教育、產權、醫療等等這樣一些領域逐漸出現了。下面做幾張圖的展示,首先介紹一下傳統匯款和區塊鏈匯款的差別。在傳統匯款當中,境內都還好,速度很快,但是一旦涉及到境外的跨境匯款效率非常低,這里面涉及到一個問題,叫做中間銀行和清算網絡,作為一個中心化機構解決信任問題,導致效率會有所降低。如果把這個場景放到區塊鏈上,用智能合約實現的話,通過鏈本身的去中心化信任的機制,資產轉移的就可以用智能合約實現,從資產結算任何時間結算,包括資產轉移,上次螞蟻金服那邊在做的時候,從菲律賓匯款到香港大概用了幾十秒時間。第二個應用在傳統供應鏈金融,我們已經看到國內有一些機構大膽用區塊鏈技術嘗試物品溯源,比如之前曝光的疫苗事件。雖然疫苗生產廠商作為源頭無法通過區塊鏈技術進行控制,但是疫苗整個在冷鏈運輸,在各個監督站各個醫院的數據都可以上傳,防止中間有一些個人的惡意行為,導致在傳播當中數據的丟失和篡改。第三個針對傳統物流,原來傳統物流有很多痛點,互相不信任,之前用淘寶的時候最大的問題到底是買方先付錢還是賣方先發貨,后來出現了支付寶為來解決第三方信任問題,買房把錢給中間平臺。如果有區塊鏈能夠和網購支付場景結合的話,互不信任這個問題可以解決,買方可以在收到貨的這一刻,訂單信息就會在鏈上做數據提交,這個時候買方賬戶里面的錢就可以通過智能合約方式直接打到賣方賬戶上面去,包括訂單被篡改風險,還有隱私信息,包括現在大家遇到快遞信息泄露個人隱私,將來都可以上鏈的話,大家面對的都是在鏈上隱藏數據的信息身份。還有針對疫苗,針對醫院,針對醫療體系,從每一個藥廠藥品信息上鏈,藥房售賣藥片都是可以在鏈上確認的,患者也可以和醫生做關聯,甚至可以用一個APP知道這個人的健康信息,包括歷史服藥信息,在哪些醫院檢查,都是能夠被查到的。前面做了一些大膽的幻想,下面看一下未來智能合約會是一個什么狀態。第一個是區塊鏈+應用,在未來可能涉及的行業特別廣泛,剛才上午百度區塊鏈的平臺介紹了幾個特點,第一個和版權結合,我們現在很多商用圖片都會上鏈,包括未來可能會有數字音樂版權,數字電影版權都會上鏈,包括像郵政、游戲等等,和我們生活的結合越來越深,涉及的行業也越來越廣。第二個是隨著行業越來越多,每個行業都有每個行業的特點,所以行業應用復雜度越來越高,現在智能合約的代碼是300行到500行,將來智能合約應用,一個合約可能有幾千或者上萬行代碼,代碼邏輯越復雜,產生的邏輯漏洞,安全威脅肯定會越多。最后一個場景是開發者現在還比較少,未來的開發者越來越多,越來越成熟,將來提供很多智能合約的應用,不僅僅是對開發者,也可能對更多普通的民眾開放。我們的民眾就可以像現在用APP一樣,簡單輸入一些數據,輸入一些數量或者輸入一些價格,就可以自發產生智能合約,后面其實是公鏈方針對智能合約、對自己項目所起的標準,這樣的人越來越多。所以他們所產生的問題越來越多,通過目前的使用方式就不現實了。我們知道創宇404實驗室也是結合之前介紹的,未來預計會有更廣泛更復雜的應用,還有更多的智能合約的場景,我們設計研發了一套智能合約智能驗證的系統,能夠在結合人工審計情況下,更多通過自動化智能化,通過AI方式和很多的公鏈項目方一起深入的結合,通過深度結合方式,對整個鏈產生的智能合約標準,和未來所產生智能合約使用的應用,讓他們更健康更健壯一些,減少所出現的安全漏洞,讓這些智能合約能夠給我們生活帶來便利性的同時,減少經濟上的損失。后面這兩個是我們現在目前內部版本的截圖,把名字定義為叫做昊天塔,通過這樣一個產品,或者這樣一個系統,來為更多智能合約開發者和使用者提供安全的服務和保障。今天介紹暫時到這里,希望后續有關心的技術方面的同學或者是項目方,如果有興趣大家在一起多多交流,謝謝大家。
摩根溪創始人:沒人知道美聯儲何時印鈔 但我們知道比特幣會做什么:摩根溪創始人Anthony?Pompliano發推稱,沒人知道美聯儲是下周、下個月還是今年晚些時候印更多的美元。不過,我們知道比特幣到底會做什么。[2020/7/21]
聲音 | Wei Liu:注冊比特幣白皮書是為了讓人們知道任何人都可以注冊版權:據coindesk報道,上周注冊了比特幣白皮書(比特幣:點對點電子現金系統)版權的“Wei Liu”是加密基金MarvelousPeach Capital的首席執行官。Liu表示,提交只是為了讓人們知道任何人都可以注冊版權。每個人都可以是中本聰。并且他想給所謂“澳本聰邪教分子”開個玩笑。對此,澳本聰(Craig Wright)評論稱:“現在我們都可以展示我們的憑據,看看誰最終穿著橙色西裝(囚衣)”。據悉,Liu是F2Pool的前首席運營官,于2011年開始進行比特幣挖礦。他還曾在Cobo Wallet工作過。[2019/5/31]
聲音 | 吳忌寒:想知道什么時候可以將BSV存入交易所并出售:吳忌寒發推文稱,想知道什么時候可以將其BSV存入交易所并出售。[2018/11/18]
去年,美國麻省理工學院(MIT)爆出一樁丑聞——該校招生部主任竟持假文憑,而且一瞞就是28年。這件事對MIT甚至教育系統帶來了不小的信任危機.
1900/1/1 0:00:00編者按:本文來自哈希派,作者:LucyCheng,星球日報經授權轉載。智能合約是跨領域法律學者NickSzabo提出的術語,其定義是“一套以數字形式定義的承諾,包括合約參與方可在其上面執行這些承.
1900/1/1 0:00:00據Cointelegraph報道,俄羅斯幾家大型銀行欲將與加密行業合作。該網站稱,俄羅斯對加密貨幣的需求非常高,但由于缺乏明確的規定,銀行無法實現這一需求.
1900/1/1 0:00:00編者按:本文來自哈希派,作者:不碎,星球日報經授權轉載。區塊鏈屬于分布式賬本技術的一種,每一條區塊鏈都相當于一個獨立的賬本,通常情況下不同賬本之間是無法實現價值轉移的.
1900/1/1 0:00:00編者按:本文來自哈希未來,作者:曹黎軍、謝冬、江澤武,星球日報經授權發布。報告摘要:資產上鏈帶來的優勢是顯然和肯定的,但是怎樣根據資產的特有屬性去實現相應的解決方案是之后需要著重考慮.
1900/1/1 0:00:00編者按:本文來自TritonPartners,作者:TritonPartners,星球日報經授權發布.
1900/1/1 0:00:00