比特幣價格 比特幣價格
Ctrl+D 比特幣價格
ads

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

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

Terra 2.0 社區已啟動就有關如何分配 0.5% 應急資金提案的投票:6月9日消息,Terra 2.0 社區已啟動就有關如何分配 0.5% 應急資金提案的投票,該提案建議將這部分資金分配給在 Terra Classic 上推出過符合市場需求的產品,包括產生了一定量的 TVL 和沒有產生 TVL 的項目以及尚未推出過符合市場需求產品的項目,并提議向以上三類項目分別分配 250 萬枚 LUNA、100 萬枚 LUNA 和 150 萬枚 LUNA。此外,該提案建議組件一個由部分 Terra 社區的長期成員組成的理事會監督分配工作。[2022/6/9 4:13:09]

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

如果你確實就希望代碼能夠溢出呢?還是非常在意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;????}}

馬斯克回應查理芒格關于加密貨幣言論的推文:我們可能會死,但無論如何都值得一試:2月17日消息,馬斯克回應一條關于芒格最新的批評加密貨幣言論的推文,加密貨幣應該被禁止,并稱加密貨幣就像“性病”一樣令人不齒。馬斯克評論稱,“2009年,我曾和芒格共進午餐,他向整個餐桌的人說特斯拉將如何失敗。這讓我很難過,但我告訴他,我同意所有這些理由,我們可能會死,但無論如何都值得一試。[2022/2/17 9:57:26]

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

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

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

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

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

直播|“后浪”仙女58Coin-小貝如何乘風破浪:金色財經 · 直播主辦的《 幣圈 “后浪” 仙女直播周》第7期20:00 58COIN|市場總監小貝將在直播間聊聊“幣圈‘后浪’仙女如何乘風破浪”,感興趣的朋友掃碼移步收聽![2020/7/1]

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

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

0x01:使用asset;

0x11:SafeMath的溢出。

0x12:除以0。

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

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

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

0x32:索引超長度異常。

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

大咖零距離 | BTC價格劇烈波動 如何保持長期盈利:4月1日16:00,金色盤面邀請撈針選手泰迪幫主做客金色財經《大咖零距離》直播間,將分享《BTC價格劇烈波動,如何保持長期盈利》,敬請關注,欲進群觀看直播掃描海報二維碼報名即可。[2020/4/1]

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

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

如何遷移到Solidity0.8

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

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

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

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

阿里巴巴集團首席人力官:區塊鏈能帶來無限可能 未來如何與產業結合還是未知 :在今日舉行的2018中國綠公司年會上,阿里巴巴集團首席人力官(CPO)童文紅表示,阿里巴巴與想做的百年企業來比還只是一個19歲的孩子,其實面臨著非常非常多的困難。區塊鏈、量子等技術創新帶來無限可能,未來怎樣跟產業結合,會帶來什么樣的變化,誰都無法預測,阿里也面臨著從平臺到生態的挑戰。[2018/4/23]

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

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:LIDSOLSOLIDDITBolideSOL幣未來能夠漲到多少Solidblockwesendit幣gate

比特幣行情
SAN:XT關于舉辦“SAND交易大賽”的公告_newland

尊敬的XT用戶: 為慶祝SAND上線XT,XT交易所將于2021月2月8日16:16聯合SAND舉辦為期兩周的交易大賽.

1900/1/1 0:00:00
OIN:暴漲的狗狗幣:因為沒價值 所以有價值_coinweb交易所合法嗎

從無意義之中,如何誕生有意義?*如無特殊說明,本文中的時間均為北京時間。Dogecoin,狗狗幣,這是過去一周以來,成名速度最快的加密貨幣。它暴得大名的直接原因是暴漲.

1900/1/1 0:00:00
USD:庫幣上線Dogecoin (DOGE)!_Defi Factory

親愛的庫幣用戶: 我們很高興的宣布,庫幣將上線Dogecoin(DOGE)項目并支持交易對DOGE/USDT和DOGE/USDC.

1900/1/1 0:00:00
數字貨幣:趣味:印度應該用黃金支持數字盧比嗎?_加密貨幣

自2019年以來,人們對比特幣和加密貨幣的興趣不斷增加,但世界各地政府仍對此持謹慎態度。一些地區出臺法令以不同的方式約束這項技術,還有一些地區公開禁止使用這種技術.

1900/1/1 0:00:00
以太坊:幣姥爺:CME 以太坊期貨即將推出_filecoin幣的投資價值

今天的封面是《圣旺的小島》,皮埃爾·伊曼紐爾·達莫耶昨天39400高位,雨神給出止盈信號。隨后市場立刻回落,最大跌幅2000美金,成功幫助圈友保住利潤.

1900/1/1 0:00:00
BTC:霍比特關于2月8日上線NU、MIR、XVS聚合交易幣對的公告_SDT

尊敬的社區用戶: 霍比特交易所將于2021年2月8日14:00上線NU/USDT、MIR/USDT、XVS/USDT聚合交易對.

1900/1/1 0:00:00
ads