引子:“真行者珞珈山訴苦,假猴王水簾洞謄文。”——《西游記·第五十八回》在《西游記》中,六耳獼猴冒充猴王孫悟空,以假亂真,騙過了唐僧,騙過了眾神,縱使是照妖鏡也分不出真假。現在,智能合約遇上了“六耳獼猴”,又會擦出怎樣的火花?
在智能合約中,構造函數負責一些數據的初始化工作,owner值一般也會放在構造函數中進行初始化。owner是智能合約擁有者的稱呼,也常被用來作為該合約的超級管理員。對代幣合約來說,owner可能被分配的權限有:鑄造/銷毀代幣、凍結代幣等。如果開發者以錯誤的語法創建“構造函數”,造成構造函數缺失,致使“六耳獼猴”以假亂真,瞞過了開發者,最后使得攻擊者成為合約的擁有者,那么攻擊者便可依賴owner的權限,對代幣進行增發或銷毀等操作,進而可能造成整個代幣的崩盤。一、構造函數簡介
Cardano錢包將與以太坊智能合約無縫集成:金色財經報道,Milkomeda首席技術官兼聯合創始人Sebastien Guillemot公布了區塊鏈互操作性協議的一項新功能:包裝智能合約(wrapped smart contracts)。該功能將允許開發人員直接從任何Cardano錢包(例如Flint錢包)調用以太坊智能合約編程語言Solidity,不需要用戶了解Metamask或其他EVM錢包,實現無縫集成。[2023/2/17 12:12:04]
在Solidity語言中,當函數名和合約名相同時,此函數就是合約的構造函數,在合約對象創建時,會先調用構造函數對相關的數據進行初始化。以太坊Solidity0.4.22版本中引入了關鍵字constructor,新的構造函數聲明形式:constructor()public{},引入的目的是用以替代低版本中將合約名作為構造函數名的語法形式,從而避免開發者筆誤造成構造函數命名錯誤的問題。引入的這個關鍵字看似平淡無奇,實則意蘊深刻,且聽我慢慢道來。
USDC在智能合約中的供應量占比達4個月高點:金色財經報道,Glassnode數據顯示,目前USDC在智能合約中的供應量占比為42.230%,達4個月高點。此前監測到的高點為9月14日的42.222% 。[2022/9/16 7:00:44]
二、Fal1out“以假亂真?”
–漏洞分析下面以ethernaut靶場的Fallout題目為例進行分析。一眼看去,這似乎是一個正常沒有漏洞的合約代碼,但經過仔細觀察發現,該合約存在一個致命錯誤——構造函數名稱與合約名稱不一致,Fallout合約的構造函數被寫錯成了Fal1out。這樣的錯誤使其成為了一個被public修飾的普通函數,失去了構造函數僅在合約部署時被調用的特性,使得任何人都可以調用。該題目源碼如下圖所示:
Delta匿名開發人員發布智能合約以擾亂Uniswap交易量:金色財經報道,此前由于Delta協議問題,去中心化交易所Uniswap的24小時交易量增長了450%,達到71.7億美元,因此Uniswap決定不將DELTA累積的統計數據計入Uniswap的全球交易量。對此,建立Delta的CORE團隊的匿名開發人員“0xRevert”入侵了其系統,并允許任何人擾亂Uniswap的統計數據。據悉,該開發人員發布了一份智能合約,允許任何人利用自定義代幣在24小時內創建200億美元的交易量。0xRevert表示,攻擊會一直持續到恢復DELTA的交易歷史為止。對此,Uniswap創始人Hayden Adams將此威脅稱為“我見過的最愚蠢的事情之一”,并捍衛了Uniswap的做法。[2021/3/31 19:31:27]
智能合約平臺Fantom啟動Uniswap克隆版fUNI.Uniswap:基于DAG的智能合約平臺Fantom宣布啟動fUNI.Uniswap,fUNI是部署在Fantom上的Uniswap克隆項目,目前已發布應用版和錢包集成版。公告稱,在Fantom上啟動Uniswap將擁有較低的費用和更快速的交易:費用低于一美分,確認交易的速度在2秒內。Uniswap的所有其他特征保持不變。用戶可在fUNI上交易fUSD和wFTM,開發人員可以像在以太坊上一樣部署代幣。[2020/10/16]
圖1在Fal1out函數中直接指定了函數調用者的地址即為owner,所以只需要調用Fal1out函數即可實現對合約owner的更改。如下圖所示:
動態 | 騰訊《區塊鏈智能合約安全技術要求》標準獲CCSA TC8立項:11月22日,由中國通信標準化協會主辦、深圳市騰訊計算機系統有限公司承辦的網絡與信息安全技術工作委員會(CCSA TC8)第二十六次全會在廣州市順利落幕。騰訊公司在云服務和區塊鏈兩大領域提出的《云客戶信息安全管理體系評估指南》和《區塊鏈智能合約安全技術要求》兩項標準在會上成功立項,助力互聯網信息安全標準化體系的建立健全,為產業互聯網的安全發展提供新的保障。[2019/11/23]
圖2“假猴王”Fal1out想借著一些字體類型的相似字符的視覺差異混淆視聽,可最終還是沒能逃過我們的“火眼金睛”。三、前車之覆:
MorphToken事件分析在過去也曾發生過類似的安全事件,包含著假構造函數的合約被成功發布到主鏈上,其中比較出名的是“MorphToken事件”,其因為一個看似很小的問題而造成了數千萬市值的代幣被增發。合約代碼地址:https://etherscan.io/address/0x2ef27bf41236bd859a95209e17a43fbd26851f92#code在Owned合約中,由于首字母大小寫的錯誤,導致本該成為構造函數的Owned成為了普通函數owned,且被public修飾,可供任何人調用。如下圖所示:
圖3MorphToken合約繼承了Owned合約,并在自己的構造函數內進行了owner的初始化,但是父合約Owned的owned函數是可供任何人調用的,攻擊者便可通過調用owned函數更改合約的所有者owner。owner的初始化代碼如下圖所示:
圖4由上述可知,任何人都可以通過調用合約的owned函數,成為合約的擁有者(owner)。如下圖所示:
圖5失之毫厘,差之千里,一個小小的字母錯誤,卻導致了合約的代幣的崩盤。代幣也被惡意增發。如下圖所示:
圖6四、后車之鑒:
開發者應如何正確使用構造函數建議更換Solidity0.4.22及以上版本,并使用正確的constructor()語法。如下圖所示:
圖7切記:constructor()前并無function,functionconstructor()public{}為錯誤的構造函數形式。如果要使用低于0.4.22的版本,則一定要著重檢查函數名是否和合約名一致。如下圖所示:
圖8五、安全建議
在智能合約中因開發者粗心,而造成安全漏洞的事件層出不窮,“千里之堤,潰于蟻穴”,成都鏈安-安全實驗室在此給出如下建議:1、開發者在編寫智能合約敏感函數時,應嚴格按照官方要求的代碼書寫規范,注意不要出現字符錯誤等情況。2、在某些情況下,編譯器會對constructor的錯誤使用發出警告,開發者應予以正確對待,不可認為其只是警告信息而忽略不處理。3、在合約正式上線前一定要找專業可信的機構做好合約代碼的審計工作。
在近期的播報中提到過,周四周五出現IV下跌同時成交量放大,周末IV小幅上升同時成交量下降,已經成為一種規律性的現象。從本周的數據看,這樣的現象同預測一致.
1900/1/1 0:00:00編者按:本文來自加密谷Live,作者:MarketResearch,翻譯:Liam,Odaily星球日報經授權轉載。我們最近一直在思考DeFi領域如何發展,以及如何跟隨更廣泛的科技行業趨勢.
1900/1/1 0:00:00編者按:本文來自頭等倉區塊鏈研究院,Odaily星球日報經授權轉載。比特幣問世10多年來,隨著第三次“減半”的完成,通脹這一詞在數字資產社區中頻繁出現。確切來說,無通脹被視為穩定性的保證.
1900/1/1 0:00:00編者按:本文來自鏈聞ChainNews,星球日報經授權發布。7月11日,CFTC公布了最新一期的CME比特幣期貨周報,統計周期中BTC行情一波三折,周內一度出現近300美元級別急跌跳水過后又很快.
1900/1/1 0:00:00編者按:本文來自以太坊愛好者,作者:LaiJack賴彥廷,Odaily星球日報經授權轉載。 本篇文章將剖析eth1.0存在的各項問題,并介紹EthereumFoundation提出的eth1.x.
1900/1/1 0:00:00想要在區塊鏈領域投資布局,當然一定要關注互聯網科技巨頭公司的動態走向,52cbdc為大家整理和解讀2020年上半年各大科技互聯網巨頭公司在區塊鏈領域方面的布局和動態.
1900/1/1 0:00:00