“真行者珞珈山訴苦,假猴王水簾洞謄文。” ——《西游記·第五十八回》
在《西游記》中,六耳獼猴冒充猴王孫悟空,以假亂真,騙過了唐僧,騙過了眾神,縱使是照妖鏡也分不出真假。現在,智能合約遇上了“六耳獼猴”,又會擦出怎樣的火花?
在智能合約中,構造函數負責一些數據的初始化工作,owner值一般也會放在構造函數中進行初始化。owner是智能合約擁有者的稱呼,也常被用來作為該合約的超級管理員。對代幣合約來說,owner可能被分配的權限有:鑄造/銷毀代幣、凍結代幣等。如果開發者以錯誤的語法創建“構造函數”,造成構造函數缺失,致使“六耳獼猴”以假亂真,瞞過了開發者,最后使得攻擊者成為合約的擁有者(owner),那么攻擊者便可依賴owner的權限,對代幣進行增發或銷毀等操作,進而可能造成整個代幣的崩盤。
VentureFlow宣布支持波卡智能合約平臺Moonbeam:5月24日消息,VentureFlow宣布將為Moonbeam提供一站式Web3 Saas服務工具和解決方案,幫助其更高效地管理生態項目和融資需求,提高生態項目曝光度并加速生態發展。VentureFlow是專為Web3 VC 設計的SaaS工具平臺,包含提供項目融資信息、投前投后管理,到可視化投資回報分析的一站式服務,旨在為投資人提供更便捷的投資管理及團隊協作工具。
Moonbeam是一個智能合約平臺,用于構建跨鏈互連應用程序,能夠訪問任何鏈上的用戶、服務等。通過將來自以太坊、Cosmos、波卡等功能整合到一個平臺中,Moonbeam解決了當今用戶體驗碎片化的問題,解鎖了互操作性。[2023/5/24 15:23:07]
在Solidity語言中,當函數名和合約名相同時,此函數就是合約的構造函數,在合約對象創建時,會先調用構造函數對相關的數據進行初始化。
Layer1區塊鏈項目LUKSO將于21日啟動Genesis Validator存款智能合約:4月18日消息,以太坊ERC-20標準提出者之一Fabian Vogelstelle等擬推出的Layer1區塊鏈項目LUKSO宣布,將于4月21日00:20啟動Genesis Validator存款智能合約。只要持有至少32個LYXe,任何人都可以成為Genesis Validator。[2023/4/18 14:11:28]
以太坊Solidity 0.4.22版本中引入了關鍵字constructor,新的構造函數聲明形式:constructor() public { },引入的目的是用以替代低版本中將合約名作為構造函數名的語法形式,從而避免開發者筆誤造成構造函數命名錯誤的問題。引入的這個關鍵字看似平淡無奇,實則意蘊深刻,且聽我慢慢道來。
zkSync發布新的支持智能合約驗證的插件:金色財經報道,基于ZK Rollup的以太坊二層網絡zkSync宣布發布了一個新的支持智能合約驗證的插件。hardhat-zksync-verify插件允許開發人員從終端和編程方式驗證部署在 zkSync 2.0 上的智能合約。[2023/1/4 9:50:49]
下面以ethernaut靶場的Fallout題目為例進行分析。一眼看去,這似乎是一個正常沒有漏洞的合約代碼,但經過仔細觀察發現,該合約存在一個致命錯誤——構造函數名稱與合約名稱不一致,Fallout合約的構造函數被寫錯成了Fal1out(字母l和數字1的差異),這樣的錯誤使其成為了一個被public修飾的普通函數,失去了構造函數僅在合約部署時被調用的特性,使得任何人都可以調用。該題目源碼如下圖所示:
深圳:鼓勵智能合約技術在數字人民幣領域的融合應用:金色財經報道,深圳市地方金融監督管理局4月7日印發《深圳市扶持金融科技發展若干措施》,《措施》指出將推動中國人民銀行數字貨幣研究所貿易金融區塊鏈平臺和境外貿易金融平臺的聯動合作,鼓勵優質外貿企業積極參與,豐富應用場景,探索人民幣國際化和貿易便利化的落地場景。支持供應鏈金融企業運用隱私計算、區塊鏈等前沿技術探索數據融合共享應用。支持科研院所和金融科技機構持續推動區塊鏈、隱私計算等關鍵基礎技術的研發與金融應用,提升金融產品、金融服務、金融監管的基礎技術支撐能力。
深圳還將積極對接中國人民銀行,深化數字人民幣的研發應用與國際合作。吸引數字人民幣相關的重大基礎設施落地深圳,培育數字人民幣產業生態。積極鼓勵智能合約技術在數字人民幣領域的融合應用,率先建設基于數字人民幣的智能合約公共平臺,服務數字人民幣的全場景應用,打造新型商貿流通形態。[2022/4/7 14:11:08]
DFINITY創始人兼首席科學家:相信十年后會看到在互聯網計算機上部署超過10億個開放式應用及智能合約:10月26日消息,DFINITY創始人兼首席科學家Dominic Williams演講表示,互聯網計算機是基于ICP(互聯網計算機協議)的,ICP協議使用了非常新的加密算法,所以能夠使得互聯網計算機實現世界計算機的功能。通過互聯網計算機區塊鏈,可以存儲所有軟件,包括分布式應用、DeFi、Web3游戲等等。在互聯網計算機中,在許多方面都是去中心化的。首先,它的容器Canister上所有的去中心化應用、智能合約都是去中心化的。另外是沒有主網,只有子網的區塊鏈。相信十年后會看到在互聯網計算機上部署超過10億個開放式應用及智能合約,同時也相信未來十年在互聯網計算機上會出現呈百萬的節點計算機。[2021/10/26 20:57:11]
圖 1
在Fal1out函數中直接指定了函數調用者的地址即為owner,所以只需要調用Fal1out函數即可實現對合約owner的更改。如下圖所示:
圖 2
“假猴王”Fal1out想借著一些字體類型的相似字符的視覺差異混淆視聽,可最終還是沒能逃過我們的“火眼金睛”。
在過去也曾發生過類似的安全事件,包含著假構造函數的合約被成功發布到主鏈上,其中比較出名的是“MorphToken事件”,其因為一個看似很小的問題而造成了數千萬市值的代幣被增發。合約代碼地址:https://etherscan.io/address/0x2ef27bf41236bd859a95209e17a43fbd26851f92#code
在Owned合約中,由于首字母大小寫的錯誤,導致本該成為構造函數的Owned成為了普通函數owned,且被public修飾,可供任何人調用。如下圖所示:
圖 3
MorphToken合約繼承了Owned合約,并在自己的構造函數內進行了owner的初始化,但是父合約Owned的owned函數是可供任何人調用的,攻擊者便可通過調用owned函數更改合約的所有者owner。owner的初始化代碼如下圖所示:
圖 4
由上述可知,任何人都可以通過調用合約的owned函數,成為合約的擁有者(owner)。如下圖所示:
圖 5
失之毫厘,差之千里,一個小小的字母錯誤,卻導致了合約的代幣的崩盤。代幣也被惡意增發。如下圖所示:
圖 6
建議更換Solidity 0.4.22及以上版本,并使用正確的constructor()語法。如下圖所示:
圖 7
切記: constructor()前并無function,function constructor() public { }為錯誤的構造函數形式。
如果要使用低于0.4.22的版本,則一定要著重檢查函數名是否和合約名一致。如下圖所示:
圖 8
在智能合約中因開發者粗心,而造成安全漏洞的事件層出不窮,“千里之堤,潰于蟻穴”,成都鏈安-安全實驗室在此給出如下建議:
1、 開發者在編寫智能合約敏感函數(如構造函數、回退函數fallback)時,應嚴格按照官方要求的代碼書寫規范,注意不要出現字符錯誤等情況。
2、 在某些情況下,編譯器會對constructor的錯誤使用發出警告,開發者應予以正確對待,不可認為其只是警告信息而忽略不處理。
3、 在合約正式上線前一定要找專業可信的機構做好合約代碼的審計工作。
加密貨幣交易平臺Coinbase開始籌備最早今年上市,或將成為美國首家上市的主要加密貨幣交易所。據路透社援引消息人士稱,加密貨幣平臺Coinbase開始股票上市準備工作.
1900/1/1 0:00:00文章系金色財經專欄作者幣圈北冥供稿,發表言論僅代表其個人觀點,僅供學習交流!金色盤面不會主動提供任何交易指導,亦不會收取任何費用指導交易,請讀者仔細甄別,謹防上當.
1900/1/1 0:00:00文章系金色財經專欄作者幣圈北冥供稿,發表言論僅代表其個人觀點,僅供學習交流!金色盤面不會主動提供任何交易指導,亦不會收取任何費用指導交易,請讀者仔細甄別,謹防上當.
1900/1/1 0:00:001. 以太坊鏈上資源緊張 牛市未到“大擁堵”已在途?區塊鏈世界的頭號公鏈以太坊,近期交易手續費再次暴漲.
1900/1/1 0:00:00清澄君對區塊鏈上的通證——原先我把它稱為虛擬貨幣——一直有所關注,雖然談不上持續,斷斷續續地也沒停止。以一個法學者的視角,從前主要從證券監管方面入手,今天還想談點治理問題.
1900/1/1 0:00:00盡管3月的黑色星期四因為市場崩潰造成了重大挫折,但加密貨幣市場和比特幣的收盤強勁。按市值計算的領先加密資產BTC也比表現最佳的股票市場指數高出近一倍,那么這樣的實力會持續到下半年嗎?第一季度結束.
1900/1/1 0:00:00