摘要:智能合約最大字節(jié)數(shù)在中,將的最大大小限制為。定義常量比如像這樣的數(shù)值,多處使用,一定要定義常量,直接寫會(huì)導(dǎo)致編譯后的字節(jié)碼變長(zhǎng),通過此方式可有效減少字節(jié)碼數(shù)量。
智能合約最大字節(jié)數(shù)
在Solidity中,EIP 170將contract的最大大小限制為24 KB 。因此,如果智能合約內(nèi)容過多,會(huì)導(dǎo)致無法進(jìn)行發(fā)布操作。
減少壓縮字節(jié)數(shù)方法 方法及變量命名在一定程度上,方法或變量的長(zhǎng)短會(huì)影響字節(jié)數(shù)的多少,因此可通過減少方法名或變量名來對(duì)內(nèi)容進(jìn)行壓縮,但一般情況下效果很小,畢竟方法和變量名本身所占空間有限。
減少成員變量定義如果某個(gè)值只使用一次或兩次,那么就盡量減少再獨(dú)立創(chuàng)建一個(gè)變量,變量越多,編譯后所占字節(jié)數(shù)越多,此項(xiàng)能減少不少編譯后的大小。
變量初始化變量顯式的初始化不僅會(huì)消耗gas,還會(huì)增加編譯后的字節(jié)碼,因此能使用默認(rèn)值即使用默認(rèn)值。
避免重復(fù)檢查有些值在業(yè)務(wù)前后以及做相應(yīng)的檢查了,就沒有必要重復(fù)檢查,減少此類代碼,有效縮減編譯后的字節(jié)數(shù)。
定義常量比如像1e18這樣的數(shù)值,多處使用,一定要定義常量,直接寫會(huì)導(dǎo)致編譯后的字節(jié)碼變長(zhǎng),通過此方式可有效減少字節(jié)碼數(shù)量。
減少public屬性默認(rèn)public的屬性編譯之后會(huì)提供對(duì)應(yīng)的調(diào)用方法,因此將不必要的public屬性設(shè)置為內(nèi)部的,則可減少對(duì)應(yīng)的方法字節(jié)。
使用簡(jiǎn)短的原因字符串require或revert等原因字符串描述簡(jiǎn)單化。
單線交換Solidity可以在單個(gè)語句中交換變量值。從而避免定義臨時(shí)的中間變量。
(result[i], result[j]) = (result[j], result[i])
以上的寫法典型的應(yīng)用場(chǎng)景就是冒泡排序,當(dāng)需要交換數(shù)組中兩個(gè)值的位置時(shí),可通過上面的寫法,減少定義中間變量。
使用事件帶提存儲(chǔ)有些數(shù)據(jù)沒必要存儲(chǔ)在區(qū)塊鏈上,浪費(fèi)資源,可通過事件將信息記錄在日志中。
使用庫(kù)來保存一些字節(jié)碼公共庫(kù)的函數(shù)不會(huì)成為智能合約的一部分,因此可以將一些計(jì)算操作寫入公共庫(kù)里面,然后通過授權(quán)進(jìn)行相應(yīng)的訪問。
原文鏈接:https://www.choupangxia.com/2...
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/75890.html
摘要:本文首發(fā)于深入淺出區(qū)塊鏈社區(qū)原文鏈接智能合約語言教程系列地址類型介紹原文已更新,請(qǐng)讀者前往原文閱讀現(xiàn)在的中文文檔,要么翻譯的太爛,要么太舊,決定重新翻譯下。枚舉類型應(yīng)至少有一名成員。 本文首發(fā)于深入淺出區(qū)塊鏈社區(qū)原文鏈接:智能合約語言 Solidity 教程系列2 - 地址類型介紹原文已更新,請(qǐng)讀者前往原文閱讀 現(xiàn)在的Solidity中文文檔,要么翻譯的太爛,要么太舊,決定重新翻譯下。...
摘要:地址類型的成員屬性及函數(shù)這里是地址類型相關(guān)成員的快速索引用來查詢賬戶余額,用來發(fā)送以太幣以為單位。因此,為了保證安全,必須檢查的返回值,如果交易失敗,會(huì)回退以太幣。 本文首發(fā)于深入淺出區(qū)塊鏈社區(qū)原文鏈接:智能合約語言 Solidity 教程系列2 - 地址類型介紹原文已更新,請(qǐng)讀者前往原文閱讀 Solidity教程系列第二篇 - Solidity地址類型介紹. Solidity 系列完...
摘要:以太坊是什么以太坊是一個(gè)建立在區(qū)塊鏈技術(shù)之上,去中心化應(yīng)用平臺(tái)。運(yùn)行環(huán)境以太坊虛擬機(jī)是以太坊中智能合約的運(yùn)行環(huán)境。是由以太坊客戶端提供的是典型的開發(fā)以太坊時(shí)使用的客戶端,基于語言開發(fā)。 本文首發(fā)于深入淺出區(qū)塊鏈社區(qū)原文鏈接:以太坊是什么 - 以太坊開發(fā)入門指南原文已更新,請(qǐng)讀者前往原文閱讀 很多同學(xué)已經(jīng)躍躍欲試投入到區(qū)塊鏈開發(fā)隊(duì)伍當(dāng)中來,可是又感覺無從下手,本文將基于以太坊平臺(tái),以通俗...
摘要:狀態(tài)變量合約內(nèi)聲明的公有變量還有一個(gè)存儲(chǔ)位置是,用來存儲(chǔ)函數(shù)參數(shù),是只讀的,不會(huì)永久存儲(chǔ)的一個(gè)數(shù)據(jù)位置。稱這個(gè)為狀態(tài)改變,這也是合約級(jí)變量稱為狀態(tài)變量的原因。 本文首發(fā)于深入淺出區(qū)塊鏈社區(qū)原文鏈接:智能合約語言 Solidity 教程系列4 - 數(shù)據(jù)存儲(chǔ)位置分析原文已更新,請(qǐng)讀者前往原文閱讀 Solidity教程系列第4篇 - Solidity數(shù)據(jù)位置分析。 寫在前面 Solidity...
摘要:目前通常指代基于以太坊或者上的智能合約開發(fā)的相關(guān)應(yīng)用。引入以太坊通過的交互流程大致如下總結(jié)隨著區(qū)塊鏈近些年的大紅大紫,被推上了風(fēng)口浪尖,本文從技術(shù)的角度大致介紹了一下所涉及的技術(shù)要點(diǎn)。 當(dāng)你開始探索區(qū)塊鏈開發(fā),需要了解到這些。 showImg(https://segmentfault.com/img/remote/1460000016608233?w=1370&h=389); 一、DA...
閱讀 1776·2021-11-11 11:02
閱讀 1679·2021-09-22 15:55
閱讀 2484·2021-09-22 15:18
閱讀 3488·2019-08-29 11:26
閱讀 3743·2019-08-26 13:43
閱讀 2646·2019-08-26 13:32
閱讀 897·2019-08-26 10:55
閱讀 965·2019-08-26 10:27