Smart contract निर्माण की लागत $10 से लेकर $2,000 तक हो सकती है, यह मानकर कि ETH की कीमत $1,500 से $2,000 के बीच है। इसके सबसे बड़े कारक (factors) हैं: 1) Ethereum की कीमत, 2) संकलित (compiled) contract का आकार (bytes में), 3) Ethereum नेटवर्क पर वर्तमान gas की कीमत।
कुल छह घटक (components) हैं जो contract को deploy करने के लिए आवश्यक gas की मात्रा निर्धारित करते हैं। डॉलर के संदर्भ में gas की लागत बाजार की स्थितियों और नेटवर्क की स्थितियों पर निर्भर करती है। हम इस लेख में इन सभी आंकड़ों की गणना करेंगे।
Smart contract deployment की लागत
- 21,000 gas जिसका भुगतान सभी Ethereum transactions को करना होता है
- एक नया contract बनाने के लिए 32,000 gas की निश्चित लागत
- प्रत्येक सेट किए गए storage variable के लिए 22,100
- transaction data में प्रत्येक zero byte के लिए 4 gas, और transaction में प्रत्येक non-zero byte के लिए 16 gas।
- initialization के दौरान प्रत्येक bytecode को execute करने की लागत
- deploy किए गए bytecode के प्रति byte के लिए 200 gas
आइए Remix में एक न्यूनतम Solidity contract deploy करने के उदाहरण का उपयोग करें
pragma solidity 0.8.7;
contract Minimal {
constructor() payable {
}
}

smart contract creation gas की लागत
ध्यान दें कि remix के अनुसार deployment की लागत 66,862 थी। हम इस लेख में इस लागत का विवरण देंगे।
हमने constructor को payable बनाया है और optimizer को 200 runs पर सेट किया है। इसका प्रभाव smart contract को छोटा बनाने में होता है।
आइए इसे जोड़ते हैं
21,000 gas | deployment
32,000 gas | creation
Total: 53,000
हमें अभी भी 13,862 gas का हिसाब देना है
Transaction bytecode gas की लागत (tx.data)
Transaction bytecode था
0x6080604052603f8060116000396000f3fe6080604052600080fdfea2646970667358221220c5cad0aa1e64e2ca6a6cdf28a25255a8ebbf3cdd5ea0b8e4129a3c83c4fbb72a64736f6c63430008070033
प्रत्येक hex जोड़ा (pair) एक byte है, तो आइए इसे अधिक पठनीय बनाने के लिए इसमें रिक्त स्थान (spaces) जोड़ें।
इसे इस तरह विभाजित करने के लिए, हम निम्नलिखित python code का उपयोग कर सकते हैं
import itertools
# note that we manually removed the "0x" at the beginning
s = "6080604052603f8060116000396000f3fe6080604052600080fdfea2646970667358221220c5cad0aa1e64e2ca6a6cdf28a25255a8ebbf3cdd5ea0b8e4129a3c83c4fbb72a64736f6c63430008070033"
s = " ".join(["".join(group) for group in itertools.zip_longest(s[::2], s[1::2])])
print(s)
हमें मिलता है
60 80 60 40 52 60 3f 80 60 11 60 00 39 60 00 f3 fe 60 80 60 40 52 60 00 80 fd fe a2 64 69 70 66 73 58 22 12 20 c5 ca d0 aa 1e 64 e2 ca 6a 6c df 28 a2 52 55 a8 eb bf 3c dd 5e a0 b8 e4 12 9a 3c 83 c4 fb b7 2a 64 73 6f 6c 63 43 00 08 07 00 33
प्रत्येक non-zero byte की लागत 16 gas होती है, और प्रत्येक zero byte (00) की लागत 4 gas होती है। इन्हें गिनने के लिए, हम इस python one-liner का उपयोग कर सकते हैं:
s = "60 80 60 40 52 60 3f 80 60 11 60 00 39 60 00 f3 fe 60 80 60 40 52 60 00 80 fd fe a2 64 69 70 66 73 58 22 12 20 c5 ca d0 aa 1e 64 e2 ca 6a 6c df 28 a2 52 55 a8 eb bf 3c dd 5e a0 b8 e4 12 9a 3c 83 c4 fb b7 2a 64 73 6f 6c 63 43 00 08 07 00 33"
# non-zero bytes
print(len(list(filter(lambda x: x != '00', s.split(' ')))))
# zero bytes
print(len(list(filter(lambda x: x == '00', s.split(' ')))))
हमारे पास 75 non-zero bytes और 5 zero bytes हैं। इसका गणित gas बनता है
21,000 gas | deployment
32,000 gas | creation
1,220 gas | bytecode cost
Total: 54,220 gas.
कुल लागत को 66,862 तक लाने के लिए हमें अभी 12,642 gas का हिसाब देना है।
Deployment code
आइए bytecode को फिर से देखें
60 80 60 40 52 60 3f 80 60 11 60 00 39 60 00 f3 fe 60 80 60 40 52 60 00 80 fd fe a2 64 69 70 66 73 58 22 12 20 c5 ca d0 aa 1e 64 e2 ca 6a 6c df 28 a2 52 55 a8 eb bf 3c dd 5e a0 b8 e4 12 9a 3c 83 c4 fb b7 2a 64 73 6f 6c 63 43 00 08 07 00 33
बोल्ड किए गए भाग deployment code हैं। पहला भाग initialization code है। लागत प्राप्त करने के लिए हमें deployment code के प्रत्येक byte को 200 gas से गुणा करना होगा। इसकी लागत ऊपर दी गई bytecode लागत से अधिक होती है क्योंकि इसे Ethereum state में स्टोर किया जाता है।
आइए इसे फिर से python में करें
deployment_code = '60 80 60 40 52 60 00 80 fd fe a2 64 69 70 66 73 58 22 12 20 c5 ca d0 aa 1e 64 e2 ca 6a 6c df 28 a2 52 55 a8 eb bf 3c dd 5e a0 b8 e4 12 9a 3c 83 c4 fb b7 2a 64 73 6f 6c 63 43 00 08 07 00 33'
print(len(deployment_code.split(' ')))
# 63
gas
तो अब तक का विवरण यहाँ दिया गया है
21,000 gas | deployment
32,000 gas | creation
1,220 gas | bytecode cost
12,600 gas | deployed bytecode
Total: 66,820
लगभग पूरा हो गया! हम अपने 66,862 के लक्ष्य से 42 gas पीछे हैं।
Bytecode execution gas की लागत
हमें initialization bytecode के वास्तविक execution को भी ध्यान में रखना होगा।
60 80 60 40 52 60 3f 80 60 11 60 00 39 60 00 f3 fe
हम evm playground tool का उपयोग करके इसे अधिक सुविधाजनक प्रारूप (format) में अनुवादित कर सकते हैं।
PUSH1 0x80 | 3 gas
PUSH1 0x40 | 3 gas
MSTORE | 12 gas
PUSH1 0x3f | 3 gas
DUP1 | 3 gas
PUSH1 0x11 | 3 gas
PUSH1 0x00 | 3 gas
CODECOPY | 9 gas
PUSH1 0x00 | 3 gas
RETURN | 0 gas
INVALID | not executed
और कुल 42 है, जैसा कि अपेक्षित था। ये gas लागतें remix debugger को चलाकर प्राप्त की गई थीं।

smart contract deployment gas debugging
और हमारा काम हो गया, हमने smart contract के deployment के प्रत्येक घटक (component) का हिसाब लगा लिया है।
तो यहाँ अंतिम विवरण है
21,000 gas | deployment
32,000 gas | creation
1,220 gas | bytecode cost
12,600 gas | deployed bytecode
42 gas | deployment execution cost
Total: 66,862 gas
ध्यान दें कि यदि हम constructor में storage variables सेट करते हैं, तो लागत अधिक होगी। हमें प्रत्येक variable सेट के लिए 22,100 gas का भुगतान करना होगा। लेकिन इस वॉकथ्रू (walkthrough) को प्रबंधनीय बनाए रखने के लिए, हमने उस मामले को छोड़ दिया है।
Deployment लागतों को कम करने का तरीका जानने के लिए solidity gas optimization पर हमारा लेख देखें। यहाँ प्राप्त gas लागत के सभी आंकड़े Ethereum Yellow Paper से लिए गए हैं।
डॉलर में बदलना
“gas” की इकाइयों को डॉलर में बदलने का सूत्र यह है
Gas per gwei को ethgasstation या etherscan जैसी साइटों से प्राप्त किया जा सकता है। हमारे उदाहरण में, यह मानकर कि Eth की कीमत $1,000 है और gas की कीमत 20 gwei है, डॉलर में लागत होगी
मूल रूप से 31 दिसंबर, 2022 को प्रकाशित