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

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

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

Digital Insights Ventures 創始人:為了使Web3成功,人們需要了解輔助系統將如何蓬勃發展:金色財經現場報道,在Coinlive舉辦的峰會上,新加坡區塊鏈協會 (BAS) 可持續發展與影響小組委員會創始主席兼Digital Insights Ventures 創始人 Krishna Ramachandra 以主題演講“Web3 和人工智能 (AI):助力去中心化技術的代幣化和可持續性。”他分享了 Digital Insights 采用的核心見解:交互、互操作性、集成和互連。

此外,他還談到了網絡的語義,并解釋說Web3,當你分解它時,它只是指你對數據使用方式的控制。他解釋說,為了使Web3成功,人們需要了解輔助系統將如何蓬勃發展。他在演講結束時說,如果有影響力或權力的人不幫助可持續發展的敘述,我們將永遠不會看到Web3的全部力量。[2022/12/22 22:00:35]

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

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

掌柜調查署 | 疫情之下,區塊鏈企業該如何應對?:修我甲兵,與子偕行。疫情之下,區塊鏈企業該如何應對?

今天下午15:00,金色財經掌柜調查署,由金色財經合伙人佟揚對話WBF交易所創始人Bella Fang,一起聊聊此次“新冠”疫情期間WBF的應對舉措。

更多詳情請點擊原文鏈接或掃碼進群查看。[2020/2/13]

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

大咖零距離 | 勝率高達85%的趨勢交易大神告訴您如何用趨勢交易捕捉大行情:11月22日18:00,金色盤面邀請實盤大V J神做客金色財經《大咖零距離》直播間,將分享《勝率高達85%的趨勢交易大神告訴您如何用趨勢交易捕捉大行情》,敬請關注,欲進群觀看直播掃描海報二維碼報名即可![2019/11/22]

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

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

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

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

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

雕爺:區塊鏈將如何改變世界:在幣圈近期比較火的陳偉星和朱嘯虎的口水戰中,雕爺被一些人當成了“導火索”。雕爺對此作出了回應,他對于區塊鏈的態度十分中立,同時他也承認,自己在2014年就擁有比特幣。雕爺在自己的公眾號中闡明了自己的看法:區塊鏈可以傳遞原本無法分割的價值,區塊鏈創造價值必須依附于已經能夠真實創造價值且可以被驗證的商業場景。雕爺還稱,現在有大量資金涌入區塊鏈行業,一年后則會留下一些認真辦事的人。所以現在是投身區塊鏈行業的好時機,一年后也是。[2018/2/25]

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

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

0x01:使用asset;

0x11:SafeMath的溢出。

0x12:除以0。

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

芬蘭政府因不知如何存放沒收的比特幣犯難:芬蘭政府正為如何存放沒收來的2000余個比特幣而犯難。根據該國政府周二發布的指導方針,執法機構和人員不得持有沒收的加密貨幣,執法人員不得將沒收的加密貨幣存儲在交易所里,必須要保持它們處于離線狀態且不能在互聯網上被訪問。此外,該文件還指出,當局不能將比特幣等加密貨幣視為貨幣,也不能作為支付手段。[2018/2/21]

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

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

0x32:索引超長度異常。

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

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

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

如何遷移到Solidity0.8

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

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

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

移除任何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:LIDSOLDITSOLIDSOLID價格sol幣最新消息分析Ripio Credit NetworkSOLID幣

KuCoin
USDT場外價格暫報6.36元,當前溢價率為-1.58%_NAM

QKL123數據顯示,USDT場外價格暫報6.36元,美元對人民幣匯率為6.47,USDT當前溢價率為-1.58%.

1900/1/1 0:00:00
2.08以太坊行情走勢分析_ETH

行情觀點:午夜以太插針探底跌破1500一線關口,觸底1491一線反彈,昨日午間給出的行情分析,建議反彈保持看空思路不變,建議1650-1660附近空單入場,目標1580-1570,止損1680.

1900/1/1 0:00:00
邁阿密市長致力于制定 “最先進的加密貨幣法律”_區塊鏈

自2017年以來一直擔任邁阿密市長的FrancisSuarez希望讓邁阿密成為美國對加密貨幣和區塊鏈行業人士最具吸引力的城市.

1900/1/1 0:00:00
Hotbit 定于2021年2月8日上線 DEV(Dev Protocol)_BIT

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

1900/1/1 0:00:00
比特幣價格重新站上40000美元_比特幣

昨日,比特幣價格重回40000美元上方,為1月14日以來的首次。根據中幣官方行情數據,比特幣現報39552美元,24小時漲幅2.16%,24小時價格范圍為38314美元至40940美元.

1900/1/1 0:00:00
新手如何靠區塊鏈賺錢?比特兒交易所平臺交易虛擬幣怎么樣?_BCH

區塊鏈技術本身是為了落地線下而服務的,但是呢,我們也是完全可以靠區塊鏈獲得可觀的回報的,有人手動進行交易炒代幣,也有人通過工具掛機進行炒作獲得差額,不論哪種方式或者同時去做.

1900/1/1 0:00:00
ads