比特幣交易所 比特幣交易所
Ctrl+D 比特幣交易所
ads

如何將你的合約升級到Solidity 0.8?_SOL

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 費了?

墨西哥官員會見Samson Mow討論墨西哥如何采用Bitcoin:金色財經報道,Bitcoin Magazine在社交媒體上發文表示,墨西哥參議員兼財政部委員會主席會見Samson Mow討論墨西哥如何采用Bitcoin。[2023/4/30 14:35:25]

則通過 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,把它捐給礦工?

幣安正組建團隊研究區塊鏈和加密貨幣如何對Twitter有所幫助:10月28日消息,幣安正在組建一個團隊致力于研究區塊鏈和加密貨幣如何對 Twitter 有所幫助,該團隊將探索如何構建鏈上解決方案來解決 Twitter 的機器人賬戶等問題。此前在馬斯克與 Twitter 的訴訟中公布的短信也顯示,馬斯克討論了將 Twitter 置于區塊鏈上的可能性,但后來又認為該舉措無法實現。

此前,特斯拉CEO埃隆·馬斯克已正式完成以每股54.2美元(約合440億美元)的價格收購推特公司的交易,馬斯克還罷免了首席執行官Parag Agrawal和首席財務官Ned Segal。(路透社)[2022/10/29 11:54:05]

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

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

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

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

SWIFT探索如何支持代幣化資產市場發展中的互操作性:金色財經報道,銀行合作機構SWIFT將與 Clearstream、Northern Trust、SETL 和其他市場參與者合作,探索如何支持代幣化資產市場發展中的互操作性。相對于加密貨幣和穩定幣,目前代幣化資產的市值很小,但預計到 2027 年,交易量可能會達到約 24 萬億美元。銀行和證券公司正競相通過開發數字資產服務能力來進入這個新興市場,例如私鑰保管和對數字證券全生命周期的支持。Swift 正在探索如何在代幣化資產的交易生命周期中提高參與者和系統之間的互操作性。

Swift 首席創新官 Thomas Zschach 表示,這些實驗將使用既定的支付形式和中央銀行數字貨幣 (CBDC)。“作為一個中立的合作機構,覆蓋 200 多個國家/地區的 11,000 家機構,并受到全球中央銀行的監督,Swift 處于獨特的位置,可以密切參與證券的未來”。(finextra)[2021/12/23 7:59:31]

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

0x01: 使用 asset;

0x11: SafeMath 的溢出。

大咖零距離 | 寶二爺,李笑來的成功我們能復制嗎?該如何抓住減半行情?:3月3日18:00,金色盤面邀請幣圈KOL老俞說幣做客金色財經《大咖零距離》直播間,將分享《寶二爺,李笑來的成功我們能復制嗎?該如何抓住減半行情?》,敬請關注,欲進群觀看直播掃描海報二維碼報名即可![2020/3/3]

0x12: 除以 0。

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

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

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

0x32: 索引超長度異常。

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

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

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

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

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

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

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

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

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

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: 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幣發行量bspt幣未來前景SOLID幣SOLX幣

比特幣價格今日行情
礦業迎大變局:比特富富將成為比特大陸官方合作算力平臺_區塊鏈

2月22日,全球創新算力標準化挖礦平臺比特富富(BitFuFu.com)宣布和礦機巨頭比特大陸達成戰略合作,雙方將在礦機、礦場、礦池等多方面展開深度合作.

1900/1/1 0:00:00
以太坊狀態規模管理諸提議(下)_ROLL

觀點 | 以太坊狀態規模管理諸提議(上)從狀態樹上移除 vs. 給狀態樹安排一個 “退休” 部分另一個區分不同狀態過期提議的技術角度是 “一樹流” 和 “二樹流”.

1900/1/1 0:00:00
2.8午間行情: 拋壓雖重 承接盤也不弱_BTC

據OKEx的數據顯示,當前BTC/USDT現貨報價為38600美元,24小時振幅為0.3%。OKEx交易大數據:BTC合約多空持倉人數比1.14,合約持倉總量為21.8億美元截至2月8日11:3.

1900/1/1 0:00:00
比特幣突破5萬美元 對比郁金香 比特幣是最大金融泡沫?_比特幣價格

疫情之后,金融市場上很多事情,都在不停的刷新認知!比特幣是什么?最直觀表現就是,一串數字。一串數字有價值么?很難回答。但是有一點不可否認,它有價格,而且漲勢兇猛.

1900/1/1 0:00:00
金色早報 | 新華網:專家提醒投資比特幣可能面臨高風險_比特幣

頭條 ▌新華網:專家提醒投資比特幣可能面臨高風險新華網刊發報道《專家提醒投資比特幣可能面臨高風險》.

1900/1/1 0:00:00
2.17晚間行情:合約多單吃肉 現貨中線買什么_BTC

文章系金色財經專欄作者幣圈北冥供稿,發表言論僅代表其個人觀點,僅供學習交流!金色盤面不會主動提供任何交易指導,亦不會收取任何費用指導交易,請讀者仔細甄別防上當.

1900/1/1 0:00:00
ads