以太坊交易所 以太坊交易所
Ctrl+D 以太坊交易所
ads
首頁 > DYDX > Info

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

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

JPEG'd正在就如何分配Curve漏洞資金進行投票:金色財經報道,NFT支持的貸款協議JPEG'd 在最近的Curve漏洞中損失了近1200萬美元的加密貨幣,然后支付了100萬美元的賞金以收回90%的資金(5,495.4 WETH),用于將恢復的WETH支付到所有因Curve漏洞而遭受損失的地址,現在其DAO正在就如何分配漏洞資金進行投票,共六項提案,投票截至日期為周六。解決這種情況需要發行新的pETH代幣,該代幣將以1 pETH : 1 ETH的價格空投到漏洞利用前持有pETH的錢包。[2023/8/19 18:09:44]

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

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

觀點:目前行業內是一個沉淀期,builders應該更多去focus在如何解決問題:近日,BeWater DevCon 2022 全球開發者大會在硅谷灣區成功舉辦,來自Polychain Capital, Uphonest Capital, DFG Capital, Foresight Ventures的嘉賓進行了圓桌討論,圍繞“VC如何在熊市中投資和支持Builders”。Polychain Capital的Jacob Philips表示,目前行業內是一個沉淀期,builders 應該更多去focus在如何解決問題。Uphonest Capital的KJ表示,VC應該作為共同創業的伙伴,而不僅僅是投資就不管事兒了。DFG Capital的Joanna表示,這個熊市的基本面已經和18年19年的熊市大不一樣,基礎設施得到大量發展,讓大家多多探索

Foresight Ventures的Suning表示,builder可以在熊市多做一些新嘗試,比如在開發語言方面,嘗試Move或Cairo,探索全新生態的可能性。同時作為Foresight Ventures也會更多關注真正顛覆性的創新,以及圍繞DAO或者NFT等的crypto-native的文化發展。[2022/6/24 1:29:46]

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

直播|KIKI >教你如何選擇比特算力:金色財經 · 直播主辦的《 幣圈 “后浪” 仙女直播周》第10期,本期由58COIN TOP天團組成,20:00正在直播中,本期“后浪”仙女58TOP女團甜美擔當 KIKI在直播間分享“教你如何選擇比特算力”,請掃碼移步收聽。[2020/7/31]

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

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

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

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

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

美國貨幣監理署新署長:期望進一步了解銀行與加密貨幣機構如何相互作用:美國貨幣監理署(OCC)新署長Brian Brooks表示,OCC正尋求與銀行和加密貨幣機構的行業領袖進行更多的對話,期望了解如何進一步促進雙方相互作用。他表示加密貨幣機構需要銀行服務,他們需要跨銀行通道進行交易的。他期望進一步了解有關加密貨幣對銀行的需求以及銀行對加密貨幣的需求,因為他們確實想在這方面有所作為。OCC是美國財政部的主要銀行監管機構,Brooks于3月份離開Coinbase,加入OCC并擔任首席法律官。(Cointelegraph)[2020/6/5]

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

0x01:使用asset;

0x11:SafeMath的溢出。

0x12:除以0。

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

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

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

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

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:LIDSOLSOLIDDITethylidenesol幣價格走勢圖SolidexUSDFreeLiquidity

DYDX
專訪 HBTC 巨建華:合規和安全將會是突破口_TOKEN:TOK

前言 TokenInsight采訪了HBTC的創始人巨建華先生。巨建華先生技術背景出身,曾擔任Huobi首席技術官,同時連續兩屆擔任區塊鏈社區全球架構師峰會聯名主席,擁有扎實的區塊鏈技術基礎.

1900/1/1 0:00:00
Hotbit 定于2021年2月9日上線 POLS (Polkastarter)_HOT:TBI

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

1900/1/1 0:00:00
辰逸解幣2021.2.5比特幣以太坊操作建議_ETH:比特幣那么貴賣給誰啊

和辰逸一樣實時關注國際國內財經消息的朋友應該都知道,比特幣昨日消息面本來利好的局面紐約數字投資集團(NYDIG)創辦人將在今年年底前大量購買比特幣.

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

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

1900/1/1 0:00:00
StarkNet:基于 STARK 的免許可型 ZK-Rollup_STAR:ARK

我們的StarkNet開發分為4個階段: 筑基 行星:只支持單一App的Rollup星群:支持多App的Rollup宇宙:去中心化的Rollup我們預計在幾個月內部署好“行星”.

1900/1/1 0:00:00
幣印礦池收購 Novablock 礦池,算力切換將于 2 月 8 日生效_BLO:BLO

鏈聞消息,據Novablock官方公告,Poolin礦池已收購了位于北美的NovaBlock礦池,旨在將業務擴展到北美等增長中的地區.

1900/1/1 0:00:00
ads