比特幣行情 比特幣行情
Ctrl+D 比特幣行情
ads

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

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,就會在溢出時自動回退交易。

調查:大部分數字資產持有者擔心死后資產如何被處理:2019年10月到2020年6月的調查顯示,大部分數字資產持有者擔心死后如何處理資產,但是其中很大一部分不會使用遺囑、信托或者其它工具。89%的受訪者不同程度上表示他們很擔憂數字資產在他們死后能否傳遞給家人或者朋友,沒有人說完全不擔心。(Cointelegraph)[2020/7/8]

你可能會在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;????}}

動態 | 200余名全球執法人員參加國際犯罪會議,探討如何制止加密犯罪:據TheNextWeb報道,本周,根據澳大利亞聯邦警察(AFP)的聲明,超過200名來自世界各地的執法人員將出席在布里斯班舉行的國際犯罪會議,共同探討尋找加密犯罪的方法。AFP代理局長Justine Gough表示,加密貨幣和加密通信等技術的進步已經改變了罪犯獲取和隱藏資產的方式,抓住并消除犯罪阻止他們獲利,是打擊有組織的犯罪網絡最有效的方法之一。[2019/11/14]

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

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

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

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

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

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

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

動態 | 馬耳他研討會探討如何改進涉及區塊鏈的反洗錢法:據Times of Malta消息,馬耳他區塊鏈協會主席Patrick Young和管理者Max Ganado發文稱,近日在由馬耳他區塊鏈協會和馬耳他財政部共同組織的Blockfinance研討會中,包括馬耳他金融服務管理局(MFSA)、馬耳他金融情報分析部門(FIAU)和在內的利益相關者參與了活動。發言者初步進行了差距分析,使行業參與者可以就涉及區塊鏈的反洗錢法(AML)的進一步發展提出具體建議。 文章指出,這個新興產業需要表現出高標準的誠信以及合規性。此外,區塊鏈行業參與者需要為AML-CFT戰略做出貢獻。[2019/4/7]

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

0x01:使用asset;

0x11:SafeMath的溢出。

0x12:除以0。

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

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

陳偉星再次回懟朱嘯虎,ofo最大的機會是如何區塊鏈化:今日,陳偉星再次針對朱嘯虎的言論進行回應:金融是一個系統工程,全世界的資產泡沫促使了貧富懸殊。任何新技術的發展,都需要一個完善的過程,每一個問題,都是創造者為世界做出貢獻的大機會。優秀的方案是競爭出來的,從劣質到優質,走向美好的結果。ofo最大的機會是如何區塊鏈化,而不是朱嘯虎以為的賠錢還虛報的訂單,我們要的是解決世界重大問題的機會,去揮灑我們激情的青春。[2018/2/24]

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:LIDSOLSOLIDDITMOSOLIDSOLAPEWeSendit

歐易okex官網
SWAP:Sushiswap正在超越 Uniswap?

當我們談論去中心化交易所(DEX)時,我們無法避免SushiSwap和UniSwap。這兩個非常相似并且相互競爭。這種相似性不是巧合。畢竟SushiSwap是UniSwap的一個模仿者.

1900/1/1 0:00:00
DEF:OKLink鏈上周報:DeFi延續火熱 以太坊礦工收益超過比特幣

OKLink鏈上周報:DeFi延續火熱以太坊礦工收益超過比特幣 OKLink 2分鐘前 586 比特幣市場 本周比特幣走出了前周的低迷態勢.

1900/1/1 0:00:00
PAY:PayPal CEO:PayPal將成為“全球CBDC的數字錢包”

要點: PayPal首席執行官丹·舒爾曼重申了PayPal打算在今天的投資者電話會議上更深入地研究加密貨幣。PayPal的錢包將定位為“全球CBDC的數字錢包”.

1900/1/1 0:00:00
區塊鏈:區塊財經滿爺:比特幣傾向反轉 大級別上攻即將到來

滿爺說幣 今天分享幾條對交易市場的感悟吧。耐心是第一位的,如果你沒有耐心,那還是別做了,因為很多交易信號都是我們的耐心等待出來的.

1900/1/1 0:00:00
DAO:風險可控型創投平臺DAO Maker 將風險投資推向大眾

不管是在加密行業還是傳統金融領域,風險投資一直是機構或高凈值投資者的專屬,而DAOMaker致力于將風險投資帶向普通大眾。并創新性地開發了風險可控的融資模式.

1900/1/1 0:00:00
GME:觀察:狗狗幣風波后,DeFi將接棒構建金融新生態?

上周,美股上演了一出荒誕又熱血的“華爾街激戰”。一邊是華爾街巨頭、一邊是上萬散戶,在這樣一場大象和螞蟻的戰斗中——華爾街被撂翻,Robinhood成幫兇,民粹主義涌進金融市場,散戶慘遭團滅,整個.

1900/1/1 0:00:00
ads