加密貨幣交易所 加密貨幣交易所
Ctrl+D 加密貨幣交易所
ads
首頁 > 屎幣 > Info

如何將你的合約升級到Solidity 0.8?_NBS: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 費了?

Curve社區討論如何分配Synthetix跨資產交易費:根據YFI創始人Andre Cronje此前發布的鏈接,在Curve用900萬USDT兌換895.3萬枚sUSD,隨后利用這些sUSD在Synthetix交易所完成交易,獲得6689.94枚sETH。有社區成員指出,26859美元的費用收入將分配給Synthetix(SNX)質押者。

Curve團隊成員向社區征求意見,Curve跨資產互換將Synthetix作為橋梁,Synthetix將小部分交易費返給Curve,如何分配這些費用?其中列出四個選項:veCRV持有者、LP、兩者都分配、兩者都不分配。[2021/1/21 16:41:10]

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

大咖零距離 | 開倉到平倉:合約趨勢交易的幾個關鍵環節如何把握?:2月6日18:00,金色盤面邀請實盤大V Homily做客金色財經《大咖零距離》直播間,將分享《開倉到平倉:合約趨勢交易的幾個關鍵環節如何把握》,敬請關注,欲進群觀看直播掃描海報二維碼報名即可![2020/2/6]

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

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

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

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

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

0x01: 使用 asset;

0x11: SafeMath 的溢出。

聲音 | 中金公司:66家公司有區塊鏈相關業務 未來如何受益有待進一步研究???:中金公司發布相關研究報告指出,根據不完全整理,A股、H股和中概股中66家公司有區塊鏈相關業務,其中市值較大的企業包括阿里巴巴、騰訊、平安、恒生電子、航天信息、眾安在線等,未來如何受益有待進一步研究。中金公司分析師黃樂平、楊俊杰研究認為,區塊鏈的一個優勢是通過數字簽名等密碼學技術,在保證數據唯一性和所有權不可篡改的前提下,實現多方之間的信息共享。這適合需要“多方共享”“高頻重復”“交易鏈條長”的許多金融場景。過去幾年,區塊鏈主要應用案例包括:在跨境匯款領域,螞蟻金服利用區塊鏈技術為菲律賓、巴基斯坦、馬來西亞等“一帶一路”沿線國家提供低費率、高速的跨境匯款服務;在清結算領域,港交所計劃利用區塊鏈結算系統簡化互聯互通下內地股票的北向交易流程,方便歐美投資者投資A股;在貿易融資領域,香港金管局和平安合作推出區塊鏈貿易融資技術平臺“貿易聯動”,增加貿易參與者之間的信任,降低風險,提高貿易流程中獲得融資的機會。?[2019/10/28]

0x12: 除以 0。

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

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

聲音 | 礦海學院創始人Andy:如何利用金融工具鎖定利潤是新時代礦工必須補的一門課:在今日TokenInsight對話首席第20期《比特幣挖礦,你真的懂嗎?》的直播中,針對“是否在未來會出現更加智能的豐枯水期預測工具以輔助礦工進行決策?的提問,礦海學院創始人Andy指出:枯水期來臨,電力資源減少,勢必會淘汰小算力的機器,受影響的將是這部分礦工群體。2019年四川灃水期延遲,這讓很多礦工機器停放在礦場無電可挖,如果有準確的灃枯水期預測工具,相信會為礦工提供更好的決策參考。現在大部分礦工考慮的是如何能夠找到低價合規穩定的電力資源,然后大部分礦工應該都希望比特幣的價格可以漲起來,早期礦工依靠囤幣就可以賺錢,這在幣價上漲行情下可行,可是2018年持續下行,如何利用金融工具鎖定利潤是新時代礦工必須補的一門課。[2019/9/6]

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

0x32: 索引超長度異常。

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

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

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

環球銀行金融電信協會與七家中央證券存管機構簽署一項協議備忘錄,以研究區塊鏈如何用于交易后流程:環球銀行金融電信協會(SWIFT)與七家中央證券存管機構簽署了一項協議備忘錄,以研究區塊鏈如何用于交易后流程,如代理投票等。這七家機構分別是美國納斯達克 Nasdaq Market Technology、俄羅斯國家結算存管公司(National Settlement Depository)、瑞士SIX Securities Services,南非Strate,阿布扎比證券交易所,阿根廷的Caja de Valores和智利的Depores de Central Valores。[2018/1/16]

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

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

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

當多次改變符號時,類型轉換在某些情況下會受到限制,因為類型轉換的順序可能會對結果產生影響。你現在會看到一個類似 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:NBSBSPSOLLIDNBS價格BSPAY價格Global Innovative SolutionsSOLID

屎幣
金色百家談 | 將低費率進行到底 火幣合約要做最強讓利平臺?_VIP:MAKEUP價格

2月5日16:00,火幣合約COO Tom做客「金色百家談」直播間,本次直播由金色財經內容總監王瑜琨主持,直播主題“將低費率進行到底 火幣合約要做最強讓利平臺?”直播過程中.

1900/1/1 0:00:00
特斯拉月賺8億美元 那些投資比特幣的機構都賺了多少錢?_比特幣:BTC

2021 年 2 月 8 日,特斯拉在提交給美國證券交易委員會(SEC)的文件中表示,特斯拉已經購買了價值 15 億美元的比特幣。此舉令特斯拉成為持有比特幣數量第二大的上市公司.

1900/1/1 0:00:00
他們到底在說什么?“幣圈”黑話全解析_加密貨幣:區塊鏈

俗話說行有行規,道有道義,不同的人群中就連說話都有專門的方式,而他們之間也有同類人才懂得暗號,而有一句經典的暗號不知道大家聽過沒有?“天王蓋地虎!寶塔鎮河妖!”這句取自《智取威虎山》的名句算是江.

1900/1/1 0:00:00
金色觀察 | 時隔一年“3·12”復現?_比特幣:比特幣價格

加密貨幣再遭血洗。 2月22日至23日,加密貨幣市場連續下跌。在這場大清洗中,“古典”加密貨幣的代表BTC最低跌至45000美元,ETH最低至1351.10美元,LTC最低至157.09美元,B.

1900/1/1 0:00:00
以太七日談:ETH1+ETH2、EIP-1559、Layer2、DeFi等_ETH:以太坊最新價格行情分析美元

2.19 的AllCoreDev對目前Eth1與Eth2的重要議題做了深入討論并決定出了一些關鍵時間點.

1900/1/1 0:00:00
經濟參考報:通脹預期對比特幣暴漲起助推作用_區塊鏈:比特幣

原文標題:上半年全球通脹風險有限但需未雨綢繆近來,國際金融市場上對通貨膨脹的關注再度升溫。與此同時,通脹預期也對比特幣等數字貨幣的暴漲起到助推作用.

1900/1/1 0:00:00
ads