我們離 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 費了?
Stargate DAO成員在社區會議上討論如何處理即將收到的160萬枚ARB:3月30日消息,Stargate DAO成員在周三社區電話會議上討論如何處理160萬枚Arbitrum(ARB)代幣的預期分配,這些代幣價值不到200萬美元。LayerZero Labs的員工MaxPower表示,這些代幣尚未收到,但當收到時將必須決定是否持有、出售、部署或委托這些代幣。
一些與會者建議,DAO應該將ARB代幣分發給用戶,或將其部署為流動性激勵。與此同時,其他治理代幣持有者建議委托ARB代幣,以便Stargate DAO可以參與Arbitrum治理。
據DeFiLlama的數據,Stargate的總鎖定價值(TVL)為3.64億美元,其中近22%來自Arbitrum平臺。(CoinDesk)[2023/3/30 13:34:35]
則通過 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,把它捐給礦工?
中央紀委國家監委網站發文《元宇宙如何改寫人類社會生活》:12月23日消息,中央紀委國家監委網站于今日發文《元宇宙如何改寫人類社會生活》,文中解釋了什么是元宇宙,元宇宙為什么能出圈,并且提到要“理性看待元宇宙帶來的新一輪技術革命和對社會的影響,不低估5-10年的機會,也不高估1-2年的演進變化”。[2021/12/23 7:59:46]
更多細節,在這里查看 revert和 assert的區別。
現在 Solidity 使用revert操作碼。為了區分常規 revert 和系統內部錯誤(panic),Solidity 在返回數據前加上一個標識符:
常規 Revert 錯誤以keccak256(Error(string))的前四個字節開始,等于0x08c379a0。
**系統內部錯誤(Panic)**以keccak256(Panic(uint256))的前四個字節開始,等于0x4e487b71。
Panic 有一個額外的錯誤標識。目前可用的 Panic 有:
0x01: 使用 asset;
0x11: SafeMath 的溢出。
直播|清水 > 交易所新秀WEX,如何憑借IVO突出重圍:金色財經 · 直播主辦的《 幣圈 “后浪” 仙女直播周》第13期15:00準時開始,本期“后浪”仙女WEX的CMO 清水將在直播間聊聊“交易所新秀WEX,如何憑借IVO突出重圍”,請掃碼移步收聽![2020/8/21]
0x12: 除以 0。
0x21: 轉換為不存在的枚舉類型。
0x22: 存儲字節數組編碼錯誤。
0x31: 在一個空數組上pop()。
0x32: 索引超長度異常。
0x41: 分配過多的內存或創建過大的數組。
0x51: 調用未初始化的內部函數類型的變量。
更多細節請參見文檔中新的錯誤處理部分這里。
在大多數情況下,遷移應該是非常直接的。只有在一些情況下,你做奇怪的類型轉換可能會變得更加困難。
你必須為遷移做出的改變包括:
ABIEncoderV2現在是默認自動激活。從 0.6 開始,Encoder 就不再是實驗性的了,只是因為遺留的原因,保留了 pragma experimental這個名字。現在你不需要再加這行了。
直播|Higer :DeFi與ETH2.0如何引領下一個區塊鏈時代?:金色財經 · 直播主辦的金點Trend《2020 DeFi Dai飛嗎?》馬上開始!DeFi生態里,我們還應該狙擊哪些項目?成長空間是多少?應該關注哪些風險?16:00準時開播!本場嘉賓來自區塊鏈研習社的創始人Higer分享“DeFi與ETH2.0如何引領下一個區塊鏈時代”,請掃碼移步收聽。[2020/7/31]
移除任何 Openzeppelin SafeMath,你不再需要它了。
可能需要進行一些類型轉換。
msg.sender和 tx.origin默認不屬于 payable 類型。將 msg.sender.transfer改為 payable(msg.sender).transfer。
只有在符合給定類型的情況下,才允許類型轉換,所以uint256(-1)將不再工作。使用type(uint256).max代替。
當多次改變符號時,類型轉換在某些情況下會受到限制,因為類型轉換的順序可能會對結果產生影響。你現在會看到一個類似 TypeError 的錯誤。不允許從 int256到 bytes32進行顯示的類型轉換,得先手動轉換為 uint256。
現場 | 降維安全CTO:交易所應該如何保護數字資產:12月16日,由ChainUP主辦,節點資本等聯合主辦的“Future BlockChain”全球行活動在韓國舉辦。降維安全CTO在會議中表示,交易所主要面臨Hacker、惡意量化團隊、惡意用戶、惡意項目方這些外部攻擊。具體到黑客攻擊有以下四點:DoS勒索、Web滲透/APT社會工程學攻擊以及利用區塊鏈項目自身的漏洞進行攻擊。據降維安全統計,交易所應用(不涉及期貨合約)風險,共有5大類,14個子類,68個風險點。他表示:專業的事情應該交給專業的人做,選擇專業的交易所系統和專業的安全服務商,非常重要。[2018/12/16]
修飾組合
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 熊
證監會科技監管局局長姚前表示,隨著現代信息技術革命的興起,技術對貨幣的影響正達到前所未有的狀態,比特幣已經引發了全球大規模的數字貨幣實驗。數字時代已然來臨,數字貨幣時代也必將來臨.
1900/1/1 0:00:00「我不擁有比特幣,也不看空比特幣。」「我已經對比特幣持中立態度。」 截圖來源:Twitter時隔三年后,微軟聯合創始人比爾·蓋茨 (Bill Gates) 在 CNBC 的 Squawk Box.
1900/1/1 0:00:00CRV 最近迭代堆積木很快,經濟模型牛逼 1inch 改善dex流動性分散的情況,有需求。產品技術能力可以 Uni和sushi 一個團隊吊,一個社區吊,到底誰吊,看L2上決戰 aave defi.
1900/1/1 0:00:002020年是不平凡的一年。疫情肆虐的背景下,我們見證了股票市場、數字貨幣市場的大幅震蕩,也見證了區塊鏈領域快速的更新迭代,風起云涌,一年中,整個區塊鏈世界發生了翻天覆地的變化.
1900/1/1 0:00:00本周,特斯拉購入15億美元比特幣,數字資產管理公司Grayscale認為這可能會引發其他大公司紛紛效仿,不過摩根大通卻并不認同這一觀點.
1900/1/1 0:00:00在新冠肺炎疫情下,多國央行相繼推出量化寬松政策,再加上上市公司、機構投資者的入場,在過去的一年中,虛擬貨幣迎來暴漲行情,部分幣種一年間累計漲幅超過500%.
1900/1/1 0:00:00