我們離 Solidity 1.0 的發布越來越近了(當然除非 0.9 之后是 0.10)。Solidity0.8在0.7 發布之后僅 5 個月就發布了!
登鏈社區正在同步翻譯 Solidity 0.8 的文檔
今天我們就來探討一下如何把合約遷移升級到 0.8 版本... ...
我們來看看兩個大的新功能:集成的 SafeMath 和新的錯誤處理。
沒錯,你不需要再導入 Openzeppelin SafeMath了。最重要的是,你不需要做任何事情就可以激活 Solidity 集成的 SafeMath。只要寫上a+b,就會在溢出時自動回退交易。
你可能會在 Remix 等工具中看到如下錯誤提示,因為 0.8 還沒有完全支持。比如溢出還沒有給出確切的原因。
transact to Solidity08.test errored: VM error: revert. revert但這種情況在未來應該會有所改變。
如果你確實就希望代碼能夠溢出呢?還是非常在意 Gas 費了?
Terra生態行情網站Coinhall:無論Terra2.0最終結果如何,將繼續支持以完成集成:5月18日消息,Terra生態行情網站Coinhall發推稱,不知道Terra2.0的結果是什么,也無法評論最好的提案會是什么樣子,但將在繼續支持Terra1.0的基礎上完成集成,以便Terra用戶仍然可以在任一鏈上使用這個熟悉的平臺。[2022/5/18 3:25:02]
則通過 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. 無效的操作碼被還原取代到目前為止,某些操作會導致 INVALID操作碼的執行。這個操作碼的問題是,它消耗掉所有剩余的 Gas。這顯然是不好的且沒必要。為什么要浪費 Gas,把它捐給礦工?
“如何看待比特幣大跳水?”登上知乎熱榜:金色財經報道,根據知乎首頁,提問“如何看待比特幣大跳水?”登上知乎熱榜,現排名第3位,熱度686萬。[2021/1/12 15:57:18]
更多細節,在這里查看 revert和 assert的區別。
現在 Solidity 使用revert操作碼。為了區分常規 revert 和系統內部錯誤(panic),Solidity 在返回數據前加上一個標識符:
常規 Revert 錯誤以keccak256(Error(string))的前四個字節開始,等于0x08c379a0。
**系統內部錯誤(Panic)**以keccak256(Panic(uint256))的前四個字節開始,等于0x4e487b71。
Panic 有一個額外的錯誤標識。目前可用的 Panic 有:
0x01: 使用 asset;
0x11: SafeMath 的溢出。
0x12: 除以 0。
0x21: 轉換為不存在的枚舉類型。
直播 | 九妹 > 如何促進區塊鏈產業良性發展:金色財經 · 直播主辦的《 幣圈 “后浪” 仙女直播周》第4期今晚20:00準時開始,本期“后浪”仙女OKEx大客戶商戶總監將在直播間聊聊 “如何促進區塊鏈產業良性發展”,感興趣的朋友掃碼移步收聽![2020/6/12]
0x22: 存儲字節數組編碼錯誤。
0x31: 在一個空數組上pop()。
0x32: 索引超長度異常。
0x41: 分配過多的內存或創建過大的數組。
0x51: 調用未初始化的內部函數類型的變量。
更多細節請參見文檔中新的錯誤處理部分這里。
在大多數情況下,遷移應該是非常直接的。只有在一些情況下,你做奇怪的類型轉換可能會變得更加困難。
你必須為遷移做出的改變包括:
ABIEncoderV2現在是默認自動激活。從 0.6 開始,Encoder 就不再是實驗性的了,只是因為遺留的原因,保留了 pragma experimental這個名字。現在你不需要再加這行了。
聲音 | 中金公司:66家公司有區塊鏈相關業務 未來如何受益有待進一步研究???:中金公司發布相關研究報告指出,根據不完全整理,A股、H股和中概股中66家公司有區塊鏈相關業務,其中市值較大的企業包括阿里巴巴、騰訊、平安、恒生電子、航天信息、眾安在線等,未來如何受益有待進一步研究。中金公司分析師黃樂平、楊俊杰研究認為,區塊鏈的一個優勢是通過數字簽名等密碼學技術,在保證數據唯一性和所有權不可篡改的前提下,實現多方之間的信息共享。這適合需要“多方共享”“高頻重復”“交易鏈條長”的許多金融場景。過去幾年,區塊鏈主要應用案例包括:在跨境匯款領域,螞蟻金服利用區塊鏈技術為菲律賓、巴基斯坦、馬來西亞等“一帶一路”沿線國家提供低費率、高速的跨境匯款服務;在清結算領域,港交所計劃利用區塊鏈結算系統簡化互聯互通下內地股票的北向交易流程,方便歐美投資者投資A股;在貿易融資領域,香港金管局和平安合作推出區塊鏈貿易融資技術平臺“貿易聯動”,增加貿易參與者之間的信任,降低風險,提高貿易流程中獲得融資的機會。?[2019/10/28]
移除任何 Openzeppelin SafeMath,你不再需要它了。
可能需要進行一些類型轉換。
動態 | ITAM Network發文 “DApps如何優化RAM使用率”:據IMEOS報道,ITAM Network在Medium上發表文章“DApps如何優化RAM使用率”。文中介紹DApps主要是在上傳智能合約還有在使用智能合約Table保存數據的情況下使用RAM,并介紹如何通過在區塊上運行數據達到RAM使用率最小化,還有DApps開發者應當考慮和準備的工作。文章最后ITAM Network表示這只是一種可供替代的方法,并不是唯一正確的途徑。[2018/8/2]
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: 1 ether }()改為:
myContract.functionCall{gas: 10000, value: 1 ether }()。
將 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/
Solidity 0.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
Cell Network: https://www.cellnetwork.io/?utm_souce=learnblockchain
譯文出自:登鏈翻譯計劃
譯者:翻譯小組
校對:Tiny 熊
摘要:本周,汽車制造商特斯拉宣布購入15億美元的比特幣,并可能會很快接受比特幣作為支付方式。路透社發文稱,支持比特幣的耗能巨大的礦工網絡可能會成為倡導可持續能源的特斯拉的“臟”包袱.
1900/1/1 0:00:00原文標題:《NFTs and the On-Chain Spectrum》當我們談到 NFT 時,對于 NFT 的鏈上及鏈下的存儲是十分重要的.
1900/1/1 0:00:00泰國一家主要金融監管機構正在尋求確定加密貨幣交易員的資格,以確保對投資者的保護。據當地媒體《曼谷郵報》周一報道,泰國證券交易委員會(泰國SEC)計劃本月舉行公開聽證會,以滿足想開加密貨幣交易賬戶.
1900/1/1 0:00:00如今,許多領域都在研究非同質化代幣的應用,代幣化現實世界資產的趨勢逐漸開始流行起來。本文將全面分析十三個 NFT 的使用場景,一同探索 NFT 未來發展.
1900/1/1 0:00:00原文標題:《情人節看展|快帶你的 TA 一起云欣賞 SR 上價值最高的 15 件數字藝術品吧》隨著比特幣近日突破新高,在 2021 牛年伊始,牛市便開始蓬勃發展.
1900/1/1 0:00:00在過去的幾個月,有報道稱主要機構投資者紛紛涌入比特幣(BTC),這加劇了自2017年以來最大的加密貨幣牛市.
1900/1/1 0:00:00