以太幣交易所 以太幣交易所
Ctrl+D 以太幣交易所
ads
首頁 > TUSD > Info

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

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

現場丨中央美術學院副教授陳卓:我們該思考如何讓加密藝術品擁有傳統藝術品特性:金色財經現場報道,10月17日,BCA NFT藝術沙龍于京舉辦,在圓桌討論環節,中央美術學院副教授陳卓表示,如今在藝術領域,用媒介去區分藝術,邊界越發模糊,藝術正在向經典形態向新形態轉變的趨勢,媒介的轉變和社會的變化會推動一波變遷。傳統的藝術品有神秘感,但區塊鏈是透明的,藝術展有儀式感,但線上藝術品會缺少儀式感。我們該思考如何讓加密藝術具備傳統藝術特性。例如藝術收藏的儀式感、藝術品生產過程的創造藝術。[2020/10/17]

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

動態 | 各國代表在FATF開會討論如何監管虛擬資產和虛擬資產服務提供商:金色財經報道,據FATF官網消息,1月9日,各國主管開會討論了如何監督和管理虛擬資產和虛擬資產服務提供商(VASP)。自金融行動特別工作組(FATF)在2019年6月敲定這些新措施以來,這次會議是主管們首次有機會討論如何實施這些新措施。 論壇討論了三個主要領域:1.迄今為止,從那些已經建立VASP監督制度并已經開始監督VASP的國家吸取的經驗教訓。2.起草VASP法律法規時的常見問題。3.管理者有效監管VASP所需的工具、技能、程序和技術。這次會議確定了需要采取進一步行動的若干領域。這些問題將在FATF全體會議和將于2020年5月舉行的監督機構論壇的會議上進一步討論。據此前報道,2019年6月22日,FATF官網發布《基于風險的角度:監管數字資產和數字資產服務商的章程指南》,該指南將幫助各國和虛擬資產服務提供商了解其反洗錢和反恐融資義務,并有效實施FATF適用于該行業的要求。[2020/1/11]

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

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

動態 | 火幣中國CEO與馬來西亞總理討論區塊鏈將如何在馬來西亞落地:據雅虎財經消息,近日,火幣中國CEO袁煜明與馬來西亞總理馬哈蒂爾(Mahathir Mohamad)就“如何在制造業和能源行業中應用區塊鏈”以及“區塊鏈將如何在馬來西亞落地”進行了討論。[2019/5/29]

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

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

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

0x01: 使用 asset;

0x11: SafeMath 的溢出。

0x12: 除以 0。

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

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

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

0x32: 索引超長度異常。

動態 | 社科院法學所刊文《對“去中心化”的區塊鏈如何監管》:中國社科院法學所趙磊在《經濟參考報》發表題為《對“去中心化”的區塊鏈如何監管》的文章。文章指出,對區塊鏈技術的監管,應該分為兩個層面:一是結合區塊鏈技術的具體應用場景,分行業進行監管;另一是針對區塊鏈,制定專門的技術標準,以實現區塊鏈技術的規范、統一。而判斷某種商業活動或者社會管理活動是否可以應用區塊鏈,至少應該從以下兩方面進行衡量:一方面是區塊鏈技術只能在虛擬空間中應用;另一方面是區塊鏈技術無論在何種場景中應用,必須符合其去中心化、共識機制與分布式記賬等技術特征。[2019/1/10]

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

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

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

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

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

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

動態 | 印度官員赴日本等國學習監管機構如何處理加密貨幣問題:據bitcoin 9月3日消息,印度證券交易委員會(SEBI)在其2017 – 18年度報告中透露,它已派出一些官員前往日本、英國、瑞士三個國家,研究監管機構如何處理加密貨幣問題。印度證券監管機構此次行動旨在與國際監管機構合作,深入了解其加密機制和系統,以改善其自身管理流程。[2018/9/3]

移除任何 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:BSPNBSSOLLIDBSPAY幣nbs幣官網2023年sol幣最新消息BLID幣

TUSD
金色前哨丨上海地鐵站現支持數字人民幣支付的售貨機 可二維碼支付_數字人

數字人民幣正在全國各地擴大試點。據財聯社消息,支持數字人民幣支付的自動售貨機2月22日在上海地鐵站亮相.

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

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

1900/1/1 0:00:00
各類流行的DeFi衍生品 你用過幾種?_DEF

那么什么是衍生品?它們為什么重要?在DeFi中最流行的衍生品協議有哪些?您將在本文中找到這些問題的答案。衍生品是所有成熟的金融系統的關鍵要素之一。顧名思義,衍生品是從某種東西中獲取價值的.

1900/1/1 0:00:00
快過年了 請捂緊你的錢包 防騙口訣要記牢_區塊鏈

這些年「比特幣」的話題熱度不減,區塊鏈技術也慢慢走進了人們的視野中,越來越多的人知道數字貨幣,吸引了大批創業者和投資者進入這個行業。然而,騙子們可能會遲到,但從不缺席.

1900/1/1 0:00:00
春節薦讀丨比特幣更道德_比特幣

法幣沒有道德,比特幣更道德。從道德角度認識比特幣,對比特幣的論證會更牢固且持久。讓比特幣占領道德高地。比特幣發展歷程中一個很重要的部分是,怎么認識比特幣來把人們鏈接起來.

1900/1/1 0:00:00
金色說明書 | SuperNova.Cash無損挖礦教程_區塊鏈

SuperNova.Cash將在2月24日8點正式開啟頭礦旅程。DeFi流動性挖礦火爆一時,吸引了大量投資者參與.

1900/1/1 0:00:00
ads