買以太坊 買以太坊
Ctrl+D 買以太坊
ads
首頁 > 世界幣 > Info

DIT:如何將你的合約升級到Solidity 0.8?_Liquidity Network

Author:

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

我們離Solidity1.0的發布越來越近了。Solidity0.8在0.7發布之后僅5個月就發布了!

登鏈社區正在同步翻譯Solidity0.8的文檔

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

尤達寶寶發布0.8新功能和如何使用

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

1.集成SafeMath

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

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

?transact?to?Solidity08.test?errored:?VM?error:?revert.?revert

摩根溪聯合創始人:真正考驗是如何在未來10年持有BTC并保護其安全:摩根溪聯合創始人Jason Williams剛剛發推稱:“如果你現在有了比特幣,你已經完成了簡單的部分。真正的考驗是如何在未來10年持有和保護它的安全。比特幣將重塑我們所知道的一切。我真的不認為我夸大了這句話。”[2020/11/7 11:57:03]

但這種情況在未來應該會有所改變。

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

則通過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;????}}

日本金融廳長官:日本要密切關注如何克服發行CBDC的挑戰:日本金融廳長官HIMINO表示,日本不僅需要對央行數字貨幣(CBDC)進行學術研究,要更密切地關注如何克服發行央行數字貨幣可能帶來的挑戰。如果只是解除對比特幣和其他加密貨幣的管制,這可能只會增加投機交易,并不一定會促進技術創新。不考慮推動加密貨幣交易的新舉措,希望更多地關注如何將區塊鏈技術與增強公共福利的政策結合起來。[2020/8/5]

2.無效的操作碼被還原取代

到目前為止,某些操作會導致INVALID操作碼的執行。這個操作碼的問題是,它消耗掉所有剩余的Gas。這顯然是不好的且沒必要。為什么要浪費Gas,把它捐給礦工?

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

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

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

聲音 | BB:一直在研究如何為受到武漢疫情影響的人們提供幫助:2月16日,Block.one首席執行官BB發推文稱,一直在研究如何以一種還尚未被使用的方式提供最好的幫助,且一直非常謹慎地保護Block.one的員工。我們的許多組織都在中國香港運營,我們的心與受影響的人息息相關。武漢加油。而此前EOS創始人BM在推文發布的有關武漢疫情的相關言論引起爭議,甚至有社區成員要求中國交易所下架EOS,隨后BM刪除相關推文并道歉。[2020/2/16]

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

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

0x01:使用asset;

0x11:SafeMath的溢出。

0x12:除以0。

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

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

大咖零距離 | 交易心理重塑:如何在爆倉后調整交易心態:10月22日19:30,由金色盤面主辦、UP交易所獨家贊助的《大咖零距離》正式開播。屆時實盤大V鐵頭0707,將在《大咖零距離》直播間分享《交易心理重塑:如何在爆倉后調整交易心態》。敬請關注,欲進群觀看直播掃描海報二維碼報名即可![2019/10/22]

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

0x32:索引超長度異常。

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

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

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

如何遷移到Solidity0.8

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

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

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

聲音 | 蟲哥:不管市場如何 兩個原因讓我對比特幣的信仰不會變:今天江西世星科技在江西撫州才都電子科技產業園舉行廠區開業典禮。原壹比特創始人、億算科技創始人蟲哥分享稱,半導體芯片在人才集中的大城市完成研發,然后在內地城市落地更劃算。而其目前關注兩塊業務。第一是從近閾值技術研發高算力低功耗制定芯片。第二,研發 POC容量證明這類新型的綠色環保節能 POW挖礦共識機制。2018年數字貨幣進入寒冬,但他依然擁有堅定信念,理由有兩個。其一,比特幣第一次用密碼學確保了個人數字資產不可侵犯。第二,比特幣基于去中心化、數量有限、不可偽造等特點,是極具流動性的、可抵御通貨膨脹的收藏品。[2019/1/11]

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

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

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:1ether}()改為:

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

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

Solidity0.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

CellNetwork:https://www.cellnetwork.io/?utm_souce=learnblockchain

譯文出自:登鏈翻譯計劃

譯者:翻譯小組

校對:Tiny熊

Tags:LIDSOLSOLIDDITSolidexSSOLSOLID幣Liquidity Network

世界幣
ETH:易富IFSWAP推出以太坊2.0流動性挖礦獎勵,三重收益疊加_SWAP

鯨交所將于2021年2月6日15:00在跨鏈DEFI協議易富IFSWAP上首次投放以太坊2.0產品的流動性挖礦激勵,激勵對象為80:20的iETH/ETH流動池的流動性貢獻者.

1900/1/1 0:00:00
元宇宙:詳解去中心化代幣發行機制IDO:七大平臺的特性與現狀_eidos幣最新消息

得益于DeFi基礎設施的優化,以及DeFi用戶大規模增加,越來越多項目選擇IDO的方式進行募資,UMA、MTA、API3、PREP等知名代幣都是如此,帶來顯著的財富效應.

1900/1/1 0:00:00
OTB:Hotbit 定于2021年2月9日上線 DG(Decentral Gamesl)_BIT

尊敬的用戶: Hotbit即將在開啟DG(DecentralGamesl)數字資產服務,并開放DG理財產品。預計年化收益:10%;計息:T1.

1900/1/1 0:00:00
USD:成都鏈安:DeFi項目Yearn Finance閃電貸攻擊事件分析_ETH/USDT

一、事件概覽 北京時間2021年2月5日,輿情監測到,DeFi知名項目YearnFinance發生閃電貸攻擊事件.

1900/1/1 0:00:00
GLO:BKEX Global 關于ETP交易專區部分幣種進行份額合并的公告_KEX

親愛的BKEXer:?? ??? 由于ETP產品DOGE5S、DOGE3S、AVAX3S、ZRX3S、CVC3S、ADA3S、MKR3S、KAVA3S、BNB3S、SXP3S、NEAR3S、BE.

1900/1/1 0:00:00
區塊鏈:機構散戶集體「踏空」 大漲前夕市場再現減倉熱潮_Exosama Network

2月6日,CFTC公布了最新一期CME?比特幣期貨周報,最新統計周期內BTC反彈了近4000美元,并且曾在統計周期內出現短短數小時內超6000美元的驚人上漲.

1900/1/1 0:00:00
ads