我們離Solidity1.0的發布越來越近了。Solidity0.8在0.7發布之后僅5個月就發布了!
登鏈社區正在同步翻譯Solidity0.8的文檔
今天我們就來探討一下如何把合約遷移升級到0.8版本......
尤達寶寶發布
0.8新功能和如何使用
我們來看看兩個大的新功能:集成的SafeMath和新的錯誤處理。
1.集成SafeMath
SafeMathMeme
沒錯,你不需要再導入OpenzeppelinSafeMath了。最重要的是,你不需要做任何事情就可以激活Solidity集成的SafeMath。只要寫上a+b,就會在溢出時自動回退交易。
國際刑警組織正在調查如何監督元宇宙犯罪:金色財經報道,國際刑警組織(INTERPOL)正在調查如何在元宇宙中監督犯罪。然而,國際刑警組織的一名高級官員認為,定義“元宇宙犯罪”存在一些問題。據BBC報道,國際刑警組織秘書長Jurgen Stock透露,該組織打算監督元宇宙中的犯罪活動。Stock強調了“老練和專業”的罪犯適應新技術工具進行犯罪的能力。
此前2022年10月消息,國際刑警組織推出專門為全球執法部門設計的元宇宙INTERPOL Metaverse,該元宇宙允許注冊用戶參觀法國里昂的國際刑警組織總秘書處總部的虛擬場景,甚至可以通過其Avatar與其他官員進行互動以及為全球執法部門提供沉浸式培訓課程。(Cointelegraph)[2023/2/6 11:50:10]
你可能會在Remix等工具中看到如下錯誤提示,因為0.8還沒有完全支持。比如溢出還沒有給出確切的原因。
?transact?to?Solidity08.test?errored:?VM?error:?revert.?revert
OKEx金融市場總監:加密貨幣的未來取決于CBDC在未來如何發展:5月24日消息,OKEx金融市場總監Lennix Lai表示,適應中國的CBDC并不是那么困難,因為現金的使用已經有所下降,這要歸功于支付寶和微信支付等電子支付系統的進入。Lai指出,鑒于中國一直在使用需要KYC和其他安全流程的電子支付的事實,中國的金融隱私概念早已不復存在,但當其他國家中央銀行在發行CBDC時,這可能會成為一個問題。另一方面,中國CBDC直接在中央銀行的權力之下并且不提供任何金融隱私這一事實可能會促使人們開始轉向加密貨幣。因此,中國CBDC的啟動確實可以促進并使人們意識到主流加密貨幣的用例和重要性。此外,他表示,比特幣、Ripple和其他加密貨幣的未來取決于CBDC在未來如何發展。如果人們意識到金融隱私的需要,他們可能會涌向比特幣,但在那些金融隱私存在已久的國家,這種去中心化的貨幣可能會被邊緣化。(AMBcrypto)[2020/5/24]
但這種情況在未來應該會有所改變。
如果你確實就希望代碼能夠溢出呢?還是非常在意Gas費了?
亞馬遜Prime播放的新紀錄片展示比特幣如何改變非洲:關于南非比特幣先驅的新紀錄片《非洲銀行業:比特幣革命》正在亞馬遜Prime上推出。一同發布的還有一份研究報告,該報告介紹了有關非洲加密貨幣的全面和最新信息。(Decrypt)[2020/5/20]
則通過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;????}}
聲音 | Galaxy Digital創始人:山寨幣需要向比特幣學習如何逐步吸引用戶建立生態系統:加密公司Galaxy Digital創始人Mike Novogratz認為,并不是所有的山寨幣都會成功,但是一些具有潛力和價值的必須尋求建立渠道,以使人們和機構更容易購買它們。他表示:”有很多垃圾籌集了很多資金,但沒有可持續性。他們承諾要建立許多協議和生態系統,然后吸引用戶使用該生態系統,使之成為投機資產。為了保持投機市場的活力,需要時不時以新聞和更新的形式加油。我們必須將這些代幣視為風險投資。”同時他補充說,這些山寨幣之所以失敗,是因為它們在如何將人們引入其生態系統方面沒有發揮作用。他強調這樣的山寨幣必須仰賴比特幣,并觀察該生態系統如何為逐步采用奠定基礎。(AMBCrypto)[2019/10/7]
2.無效的操作碼被還原取代
到目前為止,某些操作會導致INVALID操作碼的執行。這個操作碼的問題是,它消耗掉所有剩余的Gas。這顯然是不好的且沒必要。為什么要浪費Gas,把它捐給礦工?
聲音 | 推特CEO:推特正在“考慮”如何應用區塊鏈技術:據coindesk報道,推特CEO Jack Dorsey今日向美國國會委員會表示,該社交媒體公司正在為其平臺探索區塊鏈解決方案。Dorsey表示,區塊鏈具有很多未開發的潛力,特別是圍繞分布式信任和分布式執行。推特目前沒有在區塊鏈上研究得那么深入,但Dorsey愿意了解應怎樣把區塊鏈應用到推特,該公司現在確實有員工在“考慮”此事。[2018/9/6]
更多細節,在這里查看revert和assert的區別。
現在Solidity使用revert操作碼。為了區分常規revert和系統內部錯誤,Solidity在返回數據前加上一個標識符:
常規Revert錯誤以keccak256(Error(string))的前四個字節開始,等于0x08c379a0。
**系統內部錯誤**以keccak256(Panic(uint256))的前四個字節開始,等于0x4e487b71。
Panic有一個額外的錯誤標識。目前可用的Panic有:
0x01:使用asset;
0x11:SafeMath的溢出。
0x12:除以0。
0x21:轉換為不存在的枚舉類型。
0x22:存儲字節數組編碼錯誤。
0x31:在一個空數組上pop()。
0x32:索引超長度異常。
0x41:分配過多的內存或創建過大的數組。
0x51:調用未初始化的內部函數類型的變量。
更多細節請參見文檔中新的錯誤處理部分這里。
如何遷移到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熊
參與者 以太坊客戶端開發者-任何維護以太坊客戶端的人。這包括Geth、OpenEthereum、Nethermind開發者以及Besu開發者和維護這些客戶端的EthereumClassic分叉的.
1900/1/1 0:00:00本文來自U.Today,作者:YuriMolchanOdaily星球日報譯者|余順遂Ripple發布2020年第四季度?XRP?市場季度報告.
1900/1/1 0:00:00近日,下一代游戲數字經濟平臺Cocos-BCX與DeFi世界中的LEGO——DEGO達成合作,Cocos-BCX新年NFT盲盒與五福NFT上線TreasurelandNFT商城.
1900/1/1 0:00:00Aave到底是什么呢?它的鎖倉金額是如何在不到一年的時間里從0升到30億美元的呢?AAVE代幣到底有什么用?你將在本文中找到這些問題的答案。 讓我們從頭開始.
1900/1/1 0:00:00原標題:數字人民幣優化我國貨幣支付體系從2014年著手研發工作到2020年進行公開測試,中國版的法定數字貨幣即數字人民幣漸行漸近。這既是貨幣形態演變的必然趨勢,也是數字經濟發展的內在需求.
1900/1/1 0:00:00DeFi數據 1.DeFi總市值:664.72億美元 市值前十幣種漲跌幅,金色財經制圖,數據來源Coingecko2.過去24小時去中心化交易所的交易量:21.2億美元 交易量排名前十的DEX數.
1900/1/1 0:00:00