比特幣交易所 比特幣交易所
Ctrl+D 比特幣交易所
ads
首頁 > SHIB > Info

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

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。只要寫上a+b,就會在溢出時自動回退交易。

MicroStrategy將在明年指導企業如何采用Bitcoin:金色財經報道,MicroStrategy將在明年5月的活動中指導企業如何采用Bitcoin。[2022/12/8 21:31:03]

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

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

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

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

“如何看待比特幣凌晨突發大跳水”相關討論上知乎熱榜前三:根據知乎首頁,一條提問“如何看待比特幣凌晨突發大跳水,24小時近20萬人爆倉,一度跌破5.5萬美元,112億資金灰飛煙滅?”登上知乎熱榜,現排名第三位,熱度2375萬。[2021/5/13 21:59:09]

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

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

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

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

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

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

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

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

0x01:使用asset;

0x11:SafeMath的溢出。

0x12:除以0。

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

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

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

0x32:索引超長度異常。

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

聲音 | 肖磊:區塊鏈監管如何“去糟粕而留精華”存在挑戰:據騰訊科技報道,肖磊發表專欄文章稱,虛擬幣市場有其特殊性,這可能會給監管帶來一定的挑戰和困擾。由于虛擬幣這個概念,實際上來自于其底層技術“區塊鏈”,如果站在監管層的角度,其中一個考慮是,去糟粕而留精華,把炒作虛擬幣這個糟粕去掉,而留下“區塊鏈”這個精華,這個可能會存在很大的挑戰。[2018/8/23]

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

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

如何遷移到Solidity0.8

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

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

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

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

金色財經獨家分析 比特幣期貨市場空倉降低 對現貨價格的影響如何?:報道稱大型投機客在芝加哥期權交易所的比特幣期貨凈空倉降至1370張合約,為該產品12月上線以來最低的凈空水平,顯示市場情緒好轉。 金色財經獨家解讀,與其他期貨一樣,比特幣期貨同樣具有價值發現和套期保值(礦工的最愛)的作用,期貨價格與現貨價格走勢相似,臨近合約日期貨與現貨價格趨同,期貨價格帶動現貨價格的走勢,讓套利空間逐漸收窄。

期貨等金融衍生品爭相上線,一方面使得數字貨幣的定價權爭奪趨于激烈,另一方面也吸引更多的專業傳統金融投資者加入,兩者共同促進幣價趨于理性。隨著更多保值需求者和更多投機套利者的加入,流動性將增強,對現貨市場的引領能力會更強,也反映出人們更愿意在監管下開展交易。需要說明的是,由于比特幣本身價格的波動劇烈,期貨交易又加杠桿,所以一定警惕爆倉風險。[2018/3/26]

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

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:LIDSOLDITSOLIDBolidesol幣有價值嗎SMARTCREDIT幣MOSOLID

SHIB
首發 | 火幣研究院:全球區塊鏈產業全景與趨勢(下)_區塊鏈

本文由火幣研究院原創,授權金色財經首發。因篇幅較長特分為上、中、下三部分。火幣研究院:全球區塊鏈產業全景與趨勢火幣研究院:全球區塊鏈產業全景與趨勢 第五章監管政策回顧 2020年全球區塊鏈得到了.

1900/1/1 0:00:00
2020年度數字錢包行業研究報告:方便DeFi交易、支持多公鏈_TOKE

要點總結 1.錢包作為數字資產存儲的第一渠道,市場活躍度與數字資產市場表現息息相關。自2020年第四季度牛市的到來,數字資產市場活躍度和比特幣價格都相繼達到新高,錢包市場也由于資產存儲、交易需求.

1900/1/1 0:00:00
Bitfinex宣布已償還Tether貸款余額 但法律訴訟仍在繼續_FINE

一筆5億美元的貸款已經結清,但多起訴訟案件仍在繼續。在一份簡短聲明中,中心化穩定幣Tether的姊妹公司Bitfinex宣布,它已經償還了Tether5.5億美元未結貸款余額.

1900/1/1 0:00:00
一卡難求,什么時候才能買到原價顯卡?_元宇宙

2020年9月2日凌晨,英偉達創始人兼CEO黃仁勛從背后的廚房拿出了RTX3080,并正式宣布推出基于安培架構的「GeForceRTX30系列」顯卡.

1900/1/1 0:00:00
灰度如何為 ETH 估值?_THE

僅今年年初以來,以太坊價格幾乎翻番。以太坊價格的強勁表現有諸多推動因素,這些因素相互依存,DeFi熱點不斷,機構資金入場,整體加密市場的回暖等不一而足.

1900/1/1 0:00:00
Alpha Finance被盜3750萬美元事件回顧,黑客掌握了內部信息_ETH

注:原文來自rekt DeFi的黑暗藝術仍然是最有利可圖的。下面是我們至今遇到過最具戲劇性的故事之一。一個虛假魔術,混亂及指控的故事,導致了迄今為止最大的DeFi黑客事件.

1900/1/1 0:00:00
ads