比特幣價格 比特幣價格
Ctrl+D 比特幣價格
ads
首頁 > FTT > Info

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

Author:

Time:1900/1/1 0:00:00

我們離 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 費了?

墨西哥官員會見Samson Mow討論墨西哥如何采用Bitcoin:金色財經報道,Bitcoin Magazine在社交媒體上發文表示,墨西哥參議員兼財政部委員會主席會見Samson Mow討論墨西哥如何采用Bitcoin。[2023/4/30 14:35:25]

則通過 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,把它捐給礦工?

Circle首席財務官:無論市場如何,公司計劃于今年四季度上市:7月19日消息,據Circle首席財務官JeremyFox-Geen透露,無論市場狀況如何,預計Circle將于2022年底通過SPAC(SpecialPurposeAcquisitionCompany,即特殊目的收購公司)上市。

JeremyFox-Geen表示,Circle是一家注冊的金融服務公司,就像PayPal或Apple一樣,與ApplePay產品、移動支付服務Venmo運營商PayPal等支付公司一樣,在相同的監管框架下運營。根據Circle公司發布的最新報告顯示,USDC儲備金現在完全以現金和三個月期美國國債的形式持有,與公司的運營完全分開。截至6月30日,流通中的USDC總量為55,569,519,982枚,支持USDC的儲備資產總額為557億美元。(decrypt)[2022/7/19 2:22:20]

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

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

韓國信用金融協會前官員金柱賢被任命為金融委員會委員長,將研究如何監管加密貨幣:金色財經報道,韓國信用金融協會前官員金柱賢被任命為尹錫烈政府的首任金融委員會委員長。他是金融服務委員會主席高升范的繼任者,擔任金融服務委員會主席的候選人金柱賢將承擔重大責任,例如新政府下的家庭貸款法規的合理化以及基于金融穩定對小企業的金融支持。他的任務還有如何監管仍處于法律盲區的虛擬資產(加密貨幣)的。

6月7日,韓國總統尹錫烈提名韓國信用金融協會前官員金柱賢為部長級金融委員會主席人選。[2022/6/7 4:08:00]

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

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

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

0x01: 使用 asset;

0x11: SafeMath 的溢出。

0x12: 除以 0。

直播 |“后浪”仙女力場-大丹如何乘風破浪:金色財經 · 直播主辦的《 幣圈 “后浪” 仙女直播周》第7期20:00 力場|大丹將在直播間聊聊“幣圈‘后浪’仙女如何乘風破浪”,感興趣的朋友掃碼移步收聽![2020/7/6]

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

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

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

0x32: 索引超長度異常。

0x41: 分配過多的內存或創建過大的數組。

0x51: 調用未初始化的內部函數類型的變量。

更多細節請參見文檔中新的錯誤處理部分這里。

在大多數情況下,遷移應該是非常直接的。只有在一些情況下,你做奇怪的類型轉換可能會變得更加困難。

你必須為遷移做出的改變包括:

ABIEncoderV2現在是默認自動激活。從 0.6 開始,Encoder 就不再是實驗性的了,只是因為遺留的原因,保留了 pragma experimental這個名字。現在你不需要再加這行了。

現場 | 以太坊行業峰會第一場圓桌 如何應對智能合約安全問題:金色財經9月8日現場報道,Loi Luu (KyberNetwork 創始人)、Shawn Douglass

(Amberdata 聯合創始人兼CEO)、Jay Zhou (Loopring Protocol 聯合創始人)、Alan Li (FBG X 研發部負責人)、Antoine Cote (Enuma Technologies 聯合創始人兼CEO) 參與了討論,嘉賓們一致認為,由于智能合約涉及資產交易且不可篡改,一旦發生安全問題將引起資產嚴重受損,關注智能合約安全是必要的。Loi Luu指出,區塊鏈行業項目方,需要為開發者設立預警機制。開源代碼要引入第三方檢測,避免犯一些顯而易見的錯誤。

Jay zhou認為,需要更有經驗的開發者去開發用戶易用、以人為本的合約,同時也有必要引入交叉審計。

Shawn Douglass說:“因為智能合約的不可篡改性,在程序員開發前,就必須告知開發者未來可能造成的后果,特別是在涉及資產的領域必須確保事前萬無一失甚至考慮保險。”

Antoine Cote表示,可以在早期時候引入懸賞機制讓黑客或者社區成員共同發現漏洞。大家討論后得出共識,每一個開發者都必須在開發速度和安全性之間做一個平衡。在區塊鏈領域,注重安全和責任心是必須的。[2018/9/8]

移除任何 Openzeppelin SafeMath,你不再需要它了。

可能需要進行一些類型轉換。

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 熊

Tags:BSPNBSLIDSOLBSPT幣nbs幣最新消息VSolidusSolar Energy

FTT
PAY:數字支付鴻溝:央行數字貨幣走向大眾的機遇與挑戰_BSPAY幣

知識鴻溝(Knowledge Gap)理論是美國明尼蘇達州立大學的菲利普·蒂奇納等人在1970年提出并經過一系列實證研究建立的一種理論假設,其主要推斷是.

1900/1/1 0:00:00
HYDRA:2020年暗網交易了創紀錄的價值17億美元的加密貨幣_BABYDRIP

加密數據公司Chainalysis昨日發布的一份即將發布的報告摘錄顯示,在2020年期間,暗網市場總計創造了創紀錄的價值17億美元的加密貨幣交易.

1900/1/1 0:00:00
EFI:IOSG年度深度研究與2021年堅定看好的方向_99DEFI幣

2020年是不平凡的一年。疫情肆虐的背景下,我們見證了股票市場、數字貨幣市場的大幅震蕩,也見證了區塊鏈領域快速的更新迭代,風起云涌,一年中,整個區塊鏈世界發生了翻天覆地的變化.

1900/1/1 0:00:00
BTC:2.13午間行情:交投活躍 有望繼續上沖目標位_IBTC價格

據OKEx的數據顯示,當前BTC/USDT現貨報價為47700美元,24小時振幅為1%。比特幣突破前高后,最高沖到了48970美金,越臨近五萬美金阻力越大,畢竟五萬關口是很多資金的小目標,價格在.

1900/1/1 0:00:00
BTC:火幣行情分析周報:USDT持續增發 但溢價率由正轉負_USD

本文為火幣行情分析周報,時間為2021.02.13-2021.02.20。 相距甚遠,取得“實質性”進展可能需要“一段時間”,在那之前,需要保持寬松政策.

1900/1/1 0:00:00
NFT:如何創作屬于自己的NFT?_safemoon幣合約地址

隨著NFT的財富效應顯現,越來越多人開始關注 NFT 與加密藝術領域。有傳統領域的藝術家們開始詢問,如何將自己的作品做成一個 NFT 展示給加密愛好者們.

1900/1/1 0:00:00
ads