引子:“真行者珞珈山訴苦,假猴王水簾洞謄文。”——《西游記·第五十八回》在《西游記》中,六耳獼猴冒充猴王孫悟空,以假亂真,騙過了唐僧,騙過了眾神,縱使是照妖鏡也分不出真假。現在,智能合約遇上了“六耳獼猴”,又會擦出怎樣的火花?
在智能合約中,構造函數負責一些數據的初始化工作,owner值一般也會放在構造函數中進行初始化。owner是智能合約擁有者的稱呼,也常被用來作為該合約的超級管理員。對代幣合約來說,owner可能被分配的權限有:鑄造/銷毀代幣、凍結代幣等。如果開發者以錯誤的語法創建“構造函數”,造成構造函數缺失,致使“六耳獼猴”以假亂真,瞞過了開發者,最后使得攻擊者成為合約的擁有者,那么攻擊者便可依賴owner的權限,對代幣進行增發或銷毀等操作,進而可能造成整個代幣的崩盤。一、構造函數簡介
UENC公鏈3月上旬部署智能合約測試網,將兼容雙智能合約:據官方數據,UENC于3月上旬部署智能合約測試網,完成整條公鏈的生態圖靈完備。
UENC所支持的智能合約虛擬機為WASM,其擴展性可以讓開發者更輕松的進入DAPP的開發,智能合約測試穩定部署主網后UENC將繼續按其路線圖持續發展。
據悉UENC全球實驗室有計劃在后期將EVM部署至UENC主網實現更寬泛的合約開發生態,目前其合約的部署激勵區別于其他主流公鏈,開發者可以通過部署具備潛力的DAPP應用,獲得長期穩定的調用紅利。
UENC是一個無限可拓展TPS支持任何計算機并入的去中心化網絡。[2022/3/2 13:32:36]
在Solidity語言中,當函數名和合約名相同時,此函數就是合約的構造函數,在合約對象創建時,會先調用構造函數對相關的數據進行初始化。以太坊Solidity0.4.22版本中引入了關鍵字constructor,新的構造函數聲明形式:constructor()public{},引入的目的是用以替代低版本中將合約名作為構造函數名的語法形式,從而避免開發者筆誤造成構造函數命名錯誤的問題。引入的這個關鍵字看似平淡無奇,實則意蘊深刻,且聽我慢慢道來。
以太坊智能合約自動執行工具Gelato發布V2版本:4月19日消息,以太坊智能合約自動執行工具Gelato Network發布 V2 版本。Gelato Network V2 采用鉆石標準(EIP-2535),新功能包括:每個 DApp 都可以定義自己的自定義界面、無需代理合同、數據鏈下生成節省 Gas、無需預存款支持任何代幣支付交易費用、能通過脫機簽名完成交易、協調機器人以免彼此爭搶。
Gelato Network 表示,作為一個經過審核的智能合約協議,支持開發人員無需運行任何底層服務器基礎架構,自動執行用戶交易。Gelato 的設計目標是激勵中繼器的開放和去中心化,以使智能合約自動化執行并使其不受審查。[2021/4/19 20:36:36]
動態 | 以太坊智能合約數量已超過20萬:根據Etherscan的最新數據顯示,以太坊區塊鏈網絡上發布的智能合約總量已經超過了20萬份,以太坊智能合約正在主導DeFi生態系統,目前鎖定在以太坊DeFi生態系統中的價值規模已經超過5億美元,如Maker、Compound、Dharma和Uniswap,均提供基于以太坊的P2P借貸解決方案。迄今為止,以太坊網絡上已經推出了超過2500個dApp.[2019/8/7]
二、Fal1out“以假亂真?”
–漏洞分析下面以ethernaut靶場的Fallout題目為例進行分析。一眼看去,這似乎是一個正常沒有漏洞的合約代碼,但經過仔細觀察發現,該合約存在一個致命錯誤——構造函數名稱與合約名稱不一致,Fallout合約的構造函數被寫錯成了Fal1out。這樣的錯誤使其成為了一個被public修飾的普通函數,失去了構造函數僅在合約部署時被調用的特性,使得任何人都可以調用。該題目源碼如下圖所示:
動態 | EOS原力主網重大升級已經生效 支持智能合約部署:EOS原力核心開發者fanyang表示:經過23個超級節點10小時協同工作,于北京時間2018年10月18日24時完成主網升級;在塊高度3385100時,EOS原力主網最新版本v1.1.0升級生效。本次升級后EOS原力主網支持智能合約部署,新版本采用了與EOSIO不同的資源模型,用戶無需采用復雜的抵押,只需支付手續費就可以進行操作,開發者也無需擔心資源暴漲暴跌對應用開發的影響。同時更新社區投票通過的新分紅合約,允許備選節點獲取分紅。[2018/10/19]
圖1在Fal1out函數中直接指定了函數調用者的地址即為owner,所以只需要調用Fal1out函數即可實現對合約owner的更改。如下圖所示:
聲音 | BM:區塊鏈的意義在于誠實 正直和智能合約的客觀理性:據 IMEOS 報道,BM 剛剛在 URI 電報群發表了幾段消息,他表示,URI 是志愿社區的和平條約,每個社區都有它自己極力捍衛的價值觀。那些不以這些價值觀并破壞和平條約的人將沒有資格獲得 URI。
如果人們不明白其道德準則,任何和平條約都不成立。不接受和平條約準則的人會拿著不勞而獲的錢去資助戰爭或者其他東西。我們需要記載和明確最低可行道德準則,不容質疑的,落地實行的。
區塊鏈的意義在于誠實,正直和智能合約的客觀理性。讓人們信守他們的加密諾言和明白客觀歷史。[2018/9/29]
圖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、在合約正式上線前一定要找專業可信的機構做好合約代碼的審計工作。
Odaily星球日報譯者|AzumaCoinMarketCap數據顯示,去中心化借貸平臺Compound的治理代幣COMP在上個月觸及381.89美元的歷史高點后已經歷大幅下行.
1900/1/1 0:00:00作為IPFS技術派別的明星項目,Filecoin時隔2年重拾熱度。隨著測試網上線后400萬代幣礦工激勵計劃發布,Filecoin成為全球加密投資者眼中的香餑餑,被看作是一場即將到來的“礦業盛宴”.
1900/1/1 0:00:00BTC/USDT永續合約 各級別性質:日線-盤整,4小時-盤整,1小時-盤整截圖來自OKEXBTC/USDT永續合約1小時圖:對于行情從兩個角度來說.
1900/1/1 0:00:006月初到7月初,不少國家有關央行數字貨幣的消息不斷,大家趕緊隨52cbdc一起來看吧~#各國央行數字貨幣最新動態#中國據財新網7月8日報道.
1900/1/1 0:00:00編者按:本文來自Cointelegraph中文,作者:FELIPEERAZO,Odaily星球日報經授權轉載。韓國國會將于7月10日舉辦一場題為“如何提高加密貨幣交易的透明度”的演講.
1900/1/1 0:00:00編者按:本文來自巴比特資訊,作者:MichaeldelCastillo,編譯:隔夜的粥,星球日報經授權發布.
1900/1/1 0:00:00