我們離Solidity1.0的發布越來越近了。Solidity0.8在0.7發布之后僅5個月就發布了!
登鏈社區正在同步翻譯Solidity0.8的文檔
今天我們就來探討一下如何把合約遷移升級到0.8版本......
尤達寶寶發布
0.8新功能和如何使用
我們來看看兩個大的新功能:集成的SafeMath和新的錯誤處理。
1.集成SafeMath
SafeMathMeme
沒錯,你不需要再導入OpenzeppelinSafeMath了。最重要的是,你不需要做任何事情就可以激活Solidity集成的SafeMath。只要寫上a+b,就會在溢出時自動回退交易。
陳茂波:如何將虛擬資產服務提供者納入合適規管是特區政府的重點所在:金色財經報道,香港財政司司長陳茂波接受《大公報》最新訪問時提到虛擬資產發展,特區政府去年發表有關虛擬資產在港發展的政策宣言,闡明政府為在香港發展具活力的虛擬資產行業和生態系統而訂定的政策立場和方針,近期亦積極推動Web3生態圈發展。陳茂波表示,如何將虛擬資產服務提供者納入合適規管,保護投資者利益,同時又保持金融穩定和安全,是特區政府的重點所在。[2023/6/23 21:56:03]
你可能會在Remix等工具中看到如下錯誤提示,因為0.8還沒有完全支持。比如溢出還沒有給出確切的原因。
?transact?to?Solidity08.test?errored:?VM?error:?revert.?revert
但這種情況在未來應該會有所改變。
如果你確實就希望代碼能夠溢出呢?還是非常在意Gas費了?
則通過unchecked形式包裝語句來停用SafeMath:
觀點:目前行業內是一個沉淀期,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]
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;????}}
大咖零距離 | 行情巨震 如何合理配置幣圈資產:3月30日16:00,由金色盤面主辦、BTSE交易所獨家贊助的《大咖零距離》正式開播。屆時BTSE聯合創始人/CPO BrianWong,將在《大咖零距離》直播間分享《行情巨震,如何合理配置幣圈資產》,敬請關注,欲進群觀看直播掃描海報二維碼報名即可![2020/3/30]
2.無效的操作碼被還原取代
到目前為止,某些操作會導致INVALID操作碼的執行。這個操作碼的問題是,它消耗掉所有剩余的Gas。這顯然是不好的且沒必要。為什么要浪費Gas,把它捐給礦工?
更多細節,在這里查看revert和assert的區別。
現在Solidity使用revert操作碼。為了區分常規revert和系統內部錯誤,Solidity在返回數據前加上一個標識符:
常規Revert錯誤以keccak256(Error(string))的前四個字節開始,等于0x08c379a0。
**系統內部錯誤**以keccak256(Panic(uint256))的前四個字節開始,等于0x4e487b71。
BM:對代理如何運作和“dApp開發者”如何計費的理解可能需要調整:北京時間今日凌晨,BM在開發者群發表對代理如何運作和“dApp開發者”如何計費的理解:
??1)所有CPU/帶寬都是“執行操作的用戶”;
??2)所有存儲都按照dApp的選擇向用戶或dApp付費;
??3)dApp開發人員希望授權用戶將帶寬委托給用戶;
??4)授權帶寬理論上可以用于任何dApp。
現在想象一下,你是一個社交媒體公司,希望為用戶提供免費賬戶。用戶在您的網站上注冊,您為他們創建一個區塊鏈賬戶,然后將一些帶寬委托給他們。您的應用可以選擇為每個授權用戶支付有限的存儲空間,這使他們能夠在他們需要攜帶自己的存儲空間之前,擁有N份杰出的帖子和V張投票。如果您的應用不想為用戶支付存儲費用,則該應用可能完全是BYOS(注:Bring your own storage,使用你自己的存儲)和BYOB(注:Bring your own Bandwith,使用你自己的帶寬)應用。如果用戶不繼續他們的訂閱或停止使用您的服務,那么您可以將帶寬重新分配給其他用戶。[2018/4/30]
Panic有一個額外的錯誤標識。目前可用的Panic有:
美國證券交易所:加密貨幣交易所沒有透露是否對一些用戶提供了優先服務 以及平臺如何挑選加密貨幣:據華爾街日報,美國證券交易所今天發布了有關加密貨幣交易所存在不規范問題的公告。SEC在公告中表明,加密貨幣交易所存在非法運營的風險,這是因為他們沒有透露如何優先考慮投資者的訂單或如何選擇在其平臺交易何種加密貨幣。前SEC官員,現任由投資者支持的健康市場協會的執行董事Tyler Gellasch透露:“SEC不僅要管理產品,還要管理他們交易和交易的地點。”SEC沒有在其聲明中提及具體的加密貨幣交易所,但提醒投資者,監管機構對交易所的實際運作方式知之甚少,不知道它們是否為其中一些交易者提供了優先于其他交易者的服務。SEC表示,雖然其中一些平臺聲稱采用嚴格的標準來挑選高質量的加密貨幣資產進行交易,但SEC并沒有審查過這些標準。[2018/3/8]
0x01:使用asset;
0x11:SafeMath的溢出。
0x12:除以0。
0x21:轉換為不存在的枚舉類型。
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熊
隨著機構持有3%的BTC流通供應比特幣繼續邁向主流Cointelegraph中文 剛剛 10 機構投資者正在迅速買入比特幣,在撰寫本文時,將近3%流通中的比特幣被這些投資者長期持有.
1900/1/1 0:00:00作者:深鏈六六 “人類誕生以來的第一件事情就是收藏。”2018年12月,在世界TED演講大會上,DapperLabs創始人RohamGharegozlou侃侃而談.
1900/1/1 0:00:00DeFi狂暴的拉盤,拉服了很多人,也讓人開始Fomo。Aave市值馬上沖進前10,UNI市值馬上追趕幣安,2021年是DeFi的市場。因為Aave和UNI在不斷抬高DeFi的估值空間.
1900/1/1 0:00:00據外媒Thedefiant2月3日報道,有史以來第一筆打通現實世界的DeFi抵押貸款剛剛完成。 一名要求匿名的工程師使用了一項頂級的DeFi協議,他在1月22日還清了他在澳洲聯邦銀行的抵押貸款.
1900/1/1 0:00:00據TheBlock2月4日報道,非同質化代幣市場Rarible在一輪種子融資中融資175萬美元.
1900/1/1 0:00:00一筆5億美元的貸款已經結清,但多起訴訟案件仍在繼續。在一份簡短聲明中,中心化穩定幣Tether的姊妹公司Bitfinex宣布,它已經償還了Tether5.5億美元未結貸款余額.
1900/1/1 0:00:00