以太坊價格 以太坊價格
Ctrl+D 以太坊價格
ads

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

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

Robinhood因未恰當披露如何應對高頻交易機構而遭到調查:金色財經報道,股票與加密貨幣投資平臺Robinhood因未能恰當地披露如何將客戶訂單發送給高頻交易機構而受到民事欺詐調查。根據報告,這項由美國證券交易委員會(SEC)進行的調查已進入“高級階段”,可能導致其遭到1000萬美元的罰款。[2020/9/3]

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

Roger Ver將與國家元首探討如何使比特幣現金成為主權國家的官方貨幣:5月31日消息,Roger Ver聲稱,將與國家元首見面討論如何使比特幣現金成為主權國家的官方貨幣。 有分析師發布了來自Discord頻道的帖子屏幕截圖,該帖子的用戶名作者為“ rogerver”。隨后比特幣現金聯盟的subreddit / r / BTC的成員聲稱已確認該作者即是Roger Ver,即“比特幣耶穌”(Beincrypto)[2020/5/31]

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

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

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

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

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

聲音 | 日本金融廳長官:針對區塊鏈等分布式金融系統,如何確保公眾利益已成為新課題:據日經新聞消息,今日在日本福岡舉行的G20峰會上,日本金融廳長官遠藤俊英發表演講指出“監管規則可能抑制創新,監管規則也會跟不上技術變革”。此外,以區塊鏈技術為首的分布式金融系統在沒有金融機構充當中介的情況下,可能實現顧客和市場參與者之間的直接交易,因此金融機構的地位存在下降的可能性,在這種情況下,如何確保公眾利益已成為新的課題。[2019/6/8]

0x01: 使用 asset;

0x11: SafeMath 的溢出。

0x12: 除以 0。

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

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

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

0x32: 索引超長度異常。

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

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

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

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

英國央行:正在研究如何維護區塊鏈網絡的隱私以及對數據進行監管:本周三,英國中央銀行英格蘭銀行(Bank of England)發布文件顯示,該行正在與區塊鏈創業公司Chain合作開發一種概念驗證,研究如何在基于區塊鏈(或分布式賬本)的網絡上維護隱私,同時仍允許對數據進行監管。[2018/4/11]

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

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代替。

美國證券交易所:加密貨幣交易所沒有透露是否對一些用戶提供了優先服務 以及平臺如何挑選加密貨幣:據華爾街日報,美國證券交易所今天發布了有關加密貨幣交易所存在不規范問題的公告。SEC在公告中表明,加密貨幣交易所存在非法運營的風險,這是因為他們沒有透露如何優先考慮投資者的訂單或如何選擇在其平臺交易何種加密貨幣。前SEC官員,現任由投資者支持的健康市場協會的執行董事Tyler Gellasch透露:“SEC不僅要管理產品,還要管理他們交易和交易的地點。”SEC沒有在其聲明中提及具體的加密貨幣交易所,但提醒投資者,監管機構對交易所的實際運作方式知之甚少,不知道它們是否為其中一些交易者提供了優先于其他交易者的服務。SEC表示,雖然其中一些平臺聲稱采用嚴格的標準來挑選高質量的加密貨幣資產進行交易,但SEC并沒有審查過這些標準。[2018/3/8]

當多次改變符號時,類型轉換在某些情況下會受到限制,因為類型轉換的順序可能會對結果產生影響。你現在會看到一個類似 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:BSPNBSDITLIDBSP幣nbs幣前景Liquidity Networkethylidene

幣安app官方下載最新版
TOL:盤點:各地布局區塊鏈 四十余個產業園為創業者提供紅利期

公開資料顯示,截至 2020 年 12 月末,全國各類區塊鏈產業園區已有四十余個。其中,近一半是由政府或有政府背景的社會組織主導或引導開發建設的區塊鏈產業園區或區塊鏈產業集聚載體,建立時間集中于.

1900/1/1 0:00:00
區塊鏈:NFT 如何賦能音樂行業?解讀加密音樂發展趨勢

原文標題:《深度解析:NFT 如何賦能音樂家?一文讀懂數字音樂行業的四個未來趨勢》NFT 與音樂的結合是目前一大趨勢,本文將詳述 NFT 如何賦能音樂藝術家,NFT 與音樂的結合擁有怎樣的優勢.

1900/1/1 0:00:00
KEX:2.4晚間行情:行情平穩運行 留意補漲機會

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

1900/1/1 0:00:00
DEF:金色DeFi日報 | DeFi總鎖倉量突破600億美元

DeFi數據 1.DeFi總市值:842.5億美元 市值前十幣種漲跌幅,金色財經制圖,數據來源Coingecko2.過去24小時去中心化交易所的交易量:23.7億美元 交易量排名前十的DEX 數.

1900/1/1 0:00:00
DEF:Defi趨勢下機遇:DEX與CEX是互相對立 還是共融發展?

昨天ETH爆發,不斷上漲刷新歷史最高紀錄,創下了1698美金的歷史新高。在ETH再創新高的同時,Uniswap、Aave、Synthetix、MakerDAO等以太坊上的DeFi龍頭項目,也都不.

1900/1/1 0:00:00
比特幣交易:仲裁裁決支持比特幣交易真的違反公共利益嗎?

最近,一份廣東省深圳市中級人民法院的(2018)粵03民特719號民事裁定書(下稱裁定書)在朋友圈流傳,掀起了不小波瀾.

1900/1/1 0:00:00
ads