以太坊交易所 以太坊交易所
Ctrl+D 以太坊交易所
ads
首頁 > MANA > Info

如何將你的合約升級到Solidity 0.8?_BSP:BLID

Author:

Time:1900/1/1 0:00:00

我們離 Solidity 1.0 的發布越來越近了(當然除非 0.9 之后是 0.10)。Solidity0.8在0.7 發布之后僅 5 個月就發布了!

登鏈社區正在同步翻譯 Solidity 0.8 的文檔

今天我們就來探討一下如何把合約遷移升級到 0.8 版本... ...

我們來看看兩個大的新功能:集成的 SafeMath 和新的錯誤處理。

沒錯,你不需要再導入 Openzeppelin SafeMath了。最重要的是,你不需要做任何事情就可以激活 Solidity 集成的 SafeMath。只要寫上a+b,就會在溢出時自動回退交易。

你可能會在 Remix 等工具中看到如下錯誤提示,因為 0.8 還沒有完全支持。比如溢出還沒有給出確切的原因。

 transact to Solidity08.test errored: VM error: revert. revert但這種情況在未來應該會有所改變。

如果你確實就希望代碼能夠溢出呢?還是非常在意 Gas 費了?

亞馬遜推出類似元宇宙游戲指導用戶如何運用AWS:3月16日消息,亞馬遜發布了一款類似元宇宙的在線角色扮演游戲。在這款名為“AWS Cloud Quest”的游戲中,用戶可以創建自己的虛擬角色,在虛擬城市中穿梭,幫助居民解決與云相關的技術問題。亞馬遜表示,推出Cloud Quest是為了幫助解釋亞馬遜云服務(AWS)核心服務和類別,包括計算、存儲、數據庫和安全服務,以及指導基本云解決方案的構建。(CNBC)[2022/3/16 13:59:49]

則通過 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;    }}2. 無效的操作碼被還原取代到目前為止,某些操作會導致 INVALID操作碼的執行。這個操作碼的問題是,它消耗掉所有剩余的 Gas。這顯然是不好的且沒必要。為什么要浪費 Gas,把它捐給礦工?

美國議員要求孫宇晨解釋如何防止極端內容在DLive平臺上播出:2月10日消息,Reps. Raja Krishnamoorthi和Jackie Speier兩位美國議員寫信要求波場創始人孫宇晨和DLive首席執行官Charles Wayn解釋,繼上月華盛頓特區企圖叛亂后,他們計劃如何防止極端內容在BitTorrent旗下流媒體平臺DLive上播出。這封信與上個月國會的叛亂有關。幾名極右極端分子在美國國會大廈被攻破時通過DLive進行直播,其中一些人后來被捕。(CoinDesk)[2021/2/10 19:23:04]

更多細節,在這里查看 revert和 assert的區別。

現在 Solidity 使用revert操作碼。為了區分常規 revert 和系統內部錯誤(panic),Solidity 在返回數據前加上一個標識符:

常規 Revert 錯誤以keccak256(Error(string))的前四個字節開始,等于0x08c379a0。

**系統內部錯誤(Panic)**以keccak256(Panic(uint256))的前四個字節開始,等于0x4e487b71。

金色財經現場報道 360官方人員現場展示如何攻擊EOS漏洞:金色財經現場報道,EOS區塊鏈平臺漏洞媒體溝通會上,360官方人員現場展示了是如何攻擊的,攻擊展示圖片見下圖。[2018/5/29]

Panic 有一個額外的錯誤標識。目前可用的 Panic 有:

0x01: 使用 asset;

0x11: SafeMath 的溢出。

0x12: 除以 0。

0x21: 轉換為不存在的枚舉類型。

0x22: 存儲字節數組編碼錯誤。

0x31: 在一個空數組上pop()。

0x32: 索引超長度異常。

0x41: 分配過多的內存或創建過大的數組。

0x51: 調用未初始化的內部函數類型的變量。

更多細節請參見文檔中新的錯誤處理部分這里。

在大多數情況下,遷移應該是非常直接的。只有在一些情況下,你做奇怪的類型轉換可能會變得更加困難。

你必須為遷移做出的改變包括:

阿里巴巴集團首席人力官:區塊鏈能帶來無限可能 未來如何與產業結合還是未知 :在今日舉行的2018中國綠公司年會上,阿里巴巴集團首席人力官(CPO)童文紅表示,阿里巴巴與想做的百年企業來比還只是一個19歲的孩子,其實面臨著非常非常多的困難。區塊鏈、量子等技術創新帶來無限可能,未來怎樣跟產業結合,會帶來什么樣的變化,誰都無法預測,阿里也面臨著從平臺到生態的挑戰。[2018/4/23]

ABIEncoderV2現在是默認自動激活。從 0.6 開始,Encoder 就不再是實驗性的了,只是因為遺留的原因,保留了 pragma experimental這個名字。現在你不需要再加這行了。

移除任何 Openzeppelin SafeMath,你不再需要它了。

可能需要進行一些類型轉換。

msg.sender和 tx.origin默認不屬于 payable 類型。將 msg.sender.transfer改為 payable(msg.sender).transfer。

只有在符合給定類型的情況下,才允許類型轉換,所以uint256(-1)將不再工作。使用type(uint256).max代替。

如何讓比特幣的尸體飄過:財新專欄作家王立仁今日發文,盡快讓比特幣的尸體飄過來的方法核心點就在于影響其交易過程和記賬過程,從而破壞對比特幣系統的信任。他還論述了7大攻擊比特幣的方法:花錢硬碰硬的算力攻擊(Brute Attack)、巧取通訊環節(SmartAttack)、攻擊記賬系統、攻擊代碼、攻擊法幣與數字貨幣的通道、路由分割(RoutingSplitting)攻擊和直接硬分叉。[2017/12/4]

當多次改變符號時,類型轉換在某些情況下會受到限制,因為類型轉換的順序可能會對結果產生影響。你現在會看到一個類似 TypeError 的錯誤。不允許從 int256到 bytes32進行顯示的類型轉換,得先手動轉換為 uint256。

修飾組合

myContract.functionCall{gas: 10000}{value: 1 ether }()改為:

myContract.functionCall{gas: 10000, value: 1 ether }()。

將 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/

Solidity 0.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

Cell Network: https://www.cellnetwork.io/?utm_souce=learnblockchain

譯文出自:登鏈翻譯計劃

譯者:翻譯小組

校對:Tiny 熊

Tags:NBSBSPLIDSOLnbs幣未來價格BSPNetworkBLIDsolana幣下半年會漲到多少價格

MANA
首發 | 歐易OKEx Researsh:比特幣市值破萬億吊打騰訊特斯拉 距離超越黃金還遠嗎?_比特幣:pols幣最新消息

本文由歐易OKEx Researsh原創,授權金色財經首發。一夜之間,比特幣突破5.5萬美金,躋身萬億美元市值俱樂部.

1900/1/1 0:00:00
從dYdX、1inch看DEX賽道隱藏的市場機會_UNI:Dextro

從產品類別上看,DEX賽道里還有很多潛藏的巨大機會。 DEX正紅。 進入2021年來,DEX賽道的代幣漲幅劇烈,例如UNI、SUSHI已經漲幅超過4倍,但仍有投資者表示UniSwap、Sushi.

1900/1/1 0:00:00
我是如何在Twitter上買特斯拉股票的?_TOK:itoken錢包怎么提現人民幣

上周五凌晨2點半,舍友上廁所見我在電腦前守著,“你不睡覺干啥呢”“今兒有9折特斯拉股票”這就是我倆昨晚的“肝人”對話,我從未想過我的第一次買美股竟是在 Twitter上.

1900/1/1 0:00:00
幣圈線上銷售有法律風險?_比特幣:BABYCEO價格

伴隨去年某資金盤線下開會被一鍋端以及疫情的到來,線上銷售虛擬貨幣的場景愈發常見。概括性的代幣發行融資涉嫌違法犯罪已是老生常談,颯姐團隊希望通過本文對代幣發行融資的幾種常見運營模式進行刑事法律分析.

1900/1/1 0:00:00
了解DeFi清算人的經濟理論 拒絕清算_PNL:BTCDEFI

原標題:DeFi清算人的經濟理論清算人在 DeFi 之中經常受到「差評」。那些默默無聞坐在后臺的機器人隨時準備撲向你的賬戶,一旦抵押不足導致清算的情況發生,它偷走你用自己的「血汗」挖的代幣.

1900/1/1 0:00:00
突破區塊鏈核心技術 區塊鏈走向遠方_BFT:bft幣賣多少錢一個

區塊鏈作為數字時代的底層技術,具有去中心化、開放性、自治性、匿名性、可編程和可追溯的六大特征,正是這六大技術特征使得區塊鏈具備了革命性顛覆性技術的特質.

1900/1/1 0:00:00
ads