我們離Solidity1.0的發布越來越近了。Solidity0.8在0.7發布之后僅5個月就發布了!
登鏈社區正在同步翻譯Solidity0.8的文檔
今天我們就來探討一下如何把合約遷移升級到0.8版本......
尤達寶寶發布0.8新功能和如何使用
我們來看看兩個大的新功能:集成的SafeMath和新的錯誤處理。
1.集成SafeMath
SafeMathMeme沒錯,你不需要再導入OpenzeppelinSafeMath了。最重要的是,你不需要做任何事情就可以激活Solidity集成的SafeMath。只要寫上ab,就會在溢出時自動回退交易。
你可能會在Remix等工具中看到如下錯誤提示,因為0.8還沒有完全支持。比如溢出還沒有給出確切的原因。
?transact?to?Solidity08.test?errored:?VM?error:?revert.?revert
PeckShield征求建議以確定如何發出黑客攻擊警報,大多數用戶支持其標記受影響的協議和交易:8月10日消息,PeckShield稱其檢測到黑客攻擊時發布警報可能會引起人們對黑客的關注并暴露受影響的協議,因此可能會引起爭議,發布投票向社區征求建議,以確定檢測到黑客攻擊時應如何發出警報。當前投票已結束,66.8%的用戶選擇“標記受影響的協議+tx”、18.4%的用戶選擇“Alert TG seal 911 bot”、9.9%的用戶選擇“公開黑客+tx”、4.9%的用戶選擇“僅Xeet匿名黑客”。[2023/8/10 16:18:10]
但這種情況在未來應該會有所改變。
如果你確實就希望代碼能夠溢出呢?還是非常在意Gas費了?
則通過unchecked形式包裝語句來停用SafeMath:
contract?Solidity08?{????function?test()?external?pure?returns(uint256)?{????????//?默認使用?SafeMath?,此時會回退????????uint256?x?=?0;????????x--;????????return?x;????}}contract?Solidity08?{????function?test()?external?pure?returns(uint256)?{????????//?不使用SafeMath,返回?type(uint256).max????????uint256?x?=?0;????????unchecked?{?x--;?}????????return?x;????}}
美國FDA政策藍圖:應研究如何利用區塊鏈跟蹤產品:金色財經報道,美國食品藥品監督管理局(FDA)周一公布了一項針對食品安全的新計劃,在發布的一份政策藍圖中引用了區塊鏈技術在跟蹤產品中的潛在作用。根據該藍圖文件,總體計劃的主要組成部分是使用新興技術來增強現有系統并構建新系統。文件稱,當研究行業如何通過數字方式跟蹤飛機、行程共享和包裝貨物的實時移動,或者企業如何利用大數據來識別趨勢時,很明顯,FDA和利益相關者應該研究如何利用新技術,包括但不限于人工智能、物聯網、傳感器技術和區塊鏈。[2020/7/15]
2.無效的操作碼被還原取代
到目前為止,某些操作會導致INVALID操作碼的執行。這個操作碼的問題是,它消耗掉所有剩余的Gas。這顯然是不好的且沒必要。為什么要浪費Gas,把它捐給礦工?
更多細節,在這里查看revert和assert的區別。
現在Solidity使用revert操作碼。為了區分常規revert和系統內部錯誤,Solidity在返回數據前加上一個標識符:
聲音 | Circle首席執行官:加密和區塊鏈產業是對公民社會最終如何運作基礎的再設計:據Cointelegraph消息,Circle首席執行官Jeremy Allaire在世界銀行集團和國際貨幣基金組織(IMF)2019年春季會議上表示,加密和區塊鏈產業是對公民社會最終如何運作的基礎根本性的重新設計。Allaire認為,加密和區塊鏈產業不僅關乎數字支付,還關乎一種新的基礎設施,用于記錄重要信息,并為構建解決方案提供一個更加去中心化、更具彈性的基礎。[2019/4/12]
常規Revert錯誤以keccak256(Error(string))的前四個字節開始,等于0x08c379a0。
**系統內部錯誤**以keccak256(Panic(uint256))的前四個字節開始,等于0x4e487b71。
Panic有一個額外的錯誤標識。目前可用的Panic有:
0x01:使用asset;
0x11:SafeMath的溢出。
行情 | 救贖說幣:WFEE最好不要買入,不管外界如何利好:據救贖分析,WFEE走勢圖可以看出,下跌之后,一直橫在那里,然后后面一波上漲漲幅1.3倍左右,接著再高點跌下來7倍。無論官方怎么發文也好,外界怎么利好也好,這幣沒有做市值管理,如果有,就不會跌那么慘,也不會橫盤那么久。所以這個幣種堅決不能買入。幣圈沒有底線,更沒有下限。技術分析來說,買盤不強,但是賣盤也幾乎沒有。但是賣盤只是暫時沒有,項目方還是手里有幣的。但是買盤沒有就真的沒有了。[2018/7/16]
0x12:除以0。
0x21:轉換為不存在的枚舉類型。
0x22:存儲字節數組編碼錯誤。
0x31:在一個空數組上pop()。
0x32:索引超長度異常。
0x41:分配過多的內存或創建過大的數組。
0x51:調用未初始化的內部函數類型的變量。
更多細節請參見文檔中新的錯誤處理部分這里。
普京:俄羅斯不能有自己的加密貨幣 但必須研??究如何使用加密貨幣:據cointelegraph消息,俄羅斯總統普京6月7日在與俄羅斯公眾的年度現場問答會議上表示,俄羅斯不能有自己的加密貨幣,這是因為加密貨幣超越了國界。對于所謂加密貨幣挖礦,普京指出俄羅斯確實沒有對此進行規范,但態度“非常謹慎”。關于加密貨幣作為支付方式,普京指出,雖然專家說日本已經部分采用加密貨幣作為支付,但這“在其他國家并不適用”。俄羅斯聯邦中央銀行認為加密貨幣既不是支付手段,也不是價值儲備手段。加密貨幣不受任何支持,人們應該小心謹慎地對待它。俄羅斯必須密切關注這一現象,以確定俄羅斯如何參與其進程。此外普京還補充說明,俄羅斯必須研??究如何使用加密貨幣,以避免在國際金融領域的任何限制。據cointelegraph分析,普京或許在暗示可以通過使用加密貨幣避免目前西方國家對俄羅斯的制裁。[2018/6/8]
如何遷移到Solidity0.8
在大多數情況下,遷移應該是非常直接的。只有在一些情況下,你做奇怪的類型轉換可能會變得更加困難。
你必須為遷移做出的改變包括:
ABIEncoderV2現在是默認自動激活。從0.6開始,Encoder就不再是實驗性的了,只是因為遺留的原因,保留了pragmaexperimental這個名字。現在你不需要再加這行了。
移除任何OpenzeppelinSafeMath,你不再需要它了。
可能需要進行一些類型轉換。
msg.sender和tx.origin默認不屬于payable類型。將msg.sender.transfer改為payable(msg.sender).transfer。
只有在符合給定類型的情況下,才允許類型轉換,所以uint256(-1)將不再工作。使用type(uint256).max代替。
當多次改變符號時,類型轉換在某些情況下會受到限制,因為類型轉換的順序可能會對結果產生影響。你現在會看到一個類似TypeError的錯誤。不允許從int256到bytes32進行顯示的類型轉換,得先手動轉換為uint256。
修飾組合
myContract.functionCall{gas:10000}{value:1ether}()改為:
myContract.functionCall{gas:10000,value:1ether}()。
將x**y**z改為(x**y)**z,因為默認的執行順序改變了。
將byte類型改為byte1。
我省略了一些細節,關于完整的變更日志和所有變更的細節,請查看文檔這里。
來源:https://soliditydeveloper.com/solidity-0.8
參考資料
登鏈翻譯計劃:https://github.com/lbc-team/Pioneer
翻譯小組:https://learnblockchain.cn/people/412
Tiny熊:https://learnblockchain.cn/people/15
Solidity0.8:https://blog.soliditylang.org/2020/12/16/solidity-v0.8.0-release-announcement/
0.7發布:https://blog.soliditylang.org/2020/07/28/solidity-v0.7.0-release-announcement/
Solidity0.8的文檔:https://learnblockchain.cn/docs/solidity/
SafeMath:https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/math/SafeMath.sol
這里:https://medium.com/blockchannel/the-use-of-revert-assert-and-require-in-solidity-and-the-new-revert-opcode-in-the-evm-1a3a7990e06e
這里:https://docs.soliditylang.org/en/latest/control-structures.html#panic-via-assert-and-error-via-require
這里:https://docs.soliditylang.org/en/latest/080-breaking-changes.html
CellNetwork:https://www.cellnetwork.io/?utm_souce=learnblockchain
譯文出自:登鏈翻譯計劃
譯者:翻譯小組
校對:Tiny熊
自比特幣的價值開始為世人所認識到之后,就已經開始有不斷的基于比特幣產品的系列的創新。以太坊是比特幣之后的下一個里程碑式的產品.
1900/1/1 0:00:00尊敬的中幣用戶: 中幣現已上線網格交易功能公測,支持網格策略的交易對有:USDT/QC和PAX/USDT。公測期間,USDT/QC和PAX/USDT交易0手續費.
1900/1/1 0:00:002020年,DeFi迅速崛起,成為區塊鏈行業最前沿的新風口之一。盡管目前回落,但其仍表現出強勁的持續增長趨勢,其未來應用價值已經愈加清晰.
1900/1/1 0:00:00親愛的用戶: BigONE已開啟MaticNetwork交易,上線MATIC/USDT?交易對,充值與提現服務同步開放.
1900/1/1 0:00:00鏈聞消息,愛沙尼亞財政部正尋求制定更嚴格的加密許可證制度。愛沙尼亞財政部早在1月份就發布了立法草案,收緊了該國加密行業監管力度.
1900/1/1 0:00:00世界已經習慣了與疫情共處,縱使中國管控有力,國際上疫情人數在近日已經破億,無論是實體經濟還是數字經濟,都是沉重打擊,但疫情期間對遠程辦公、教學、商務、交易需求的大幅提升.
1900/1/1 0:00:00