प्रमुख मजकुराकडे जा
Change page

व्यवहार

पृष्ठ अखेरचे अद्यतन: २३ फेब्रुवारी, २०२६

व्यवहार हे खात्यांमधून क्रिप्टोग्राफिकली स्वाक्षरी केलेल्या सूचना आहेत. एक खाते Ethereum नेटवर्कची स्थिती अद्ययावत करण्यासाठी व्यवहार सुरू करेल. सर्वात सोपा व्यवहार म्हणजे एका खात्यातून दुसऱ्या खात्यात ETH हस्तांतरित करणे.

पूर्वतयारी

हे पान तुम्हाला अधिक चांगल्या प्रकारे समजण्यास मदत करण्यासाठी, आम्ही शिफारस करतो की तुम्ही प्रथम खाती आणि आमचा Ethereum चा परिचय वाचा.

व्यवहार म्हणजे काय?

Ethereum व्यवहार म्हणजे बाह्य-मालकीच्या खात्याद्वारे सुरू केलेली क्रिया, दुसऱ्या शब्दांत, मानवाद्वारे व्यवस्थापित केलेले खाते, कराराद्वारे नाही. उदाहरणार्थ, जर बॉबने ॲलिसला १ ETH पाठवले, तर बॉबच्या खात्यातून पैसे वजा केले पाहिजेत आणि ॲलिसच्या खात्यात जमा केले पाहिजेत. ही स्थिती-बदलणारी क्रिया एका व्यवहारामध्ये होते.

व्यवहारामुळे स्थितीतील बदल दर्शवणारे रेखाचित्र Ethereum EVM illustrated (opens in a new tab) वरून रुपांतरित रेखाचित्र

व्यवहार, जे EVM ची स्थिती बदलतात, ते संपूर्ण नेटवर्कवर प्रसारित करणे आवश्यक आहे. कोणताही नोड EVM वर व्यवहार कार्यान्वित करण्याची विनंती प्रसारित करू शकतो; हे घडल्यानंतर, एक व्हॅलिडेटर तो व्यवहार कार्यान्वित करेल आणि परिणामी स्थितीतील बदल उर्वरित नेटवर्कमध्ये प्रसारित करेल.

व्यवहारांसाठी शुल्क आवश्यक आहे आणि त्यांना प्रमाणित ब्लॉकमध्ये समाविष्ट करणे आवश्यक आहे. हे विहंगावलोकन सोपे करण्यासाठी आम्ही गॅस शुल्क आणि प्रमाणीकरण यावर इतरत्र चर्चा करू.

सादर केलेल्या व्यवहारामध्ये खालील माहिती समाविष्ट असते:

  • from – प्रेषकाचा पत्ता, जो व्यवहारावर स्वाक्षरी करेल. हे बाह्य-मालकीचे खाते असेल कारण करार खाती व्यवहार पाठवू शकत नाहीत
  • to – प्राप्तकर्त्याचा पत्ता (जर बाह्य-मालकीचे खाते असेल, तर व्यवहार मूल्य हस्तांतरित करेल. जर करार खाते असेल तर, व्यवहार करार कोड कार्यान्वित करेल)
  • signature – प्रेषकाचा ओळखकर्ता. जेव्हा प्रेषकाची खाजगी की व्यवहारावर स्वाक्षरी करते तेव्हा हे तयार केले जाते आणि पुष्टी करते की प्रेषकाने या व्यवहारास अधिकृत केले आहे
  • nonce - एक क्रमशः वाढणारा काउंटर जो खात्यामधील व्यवहार क्रमांक दर्शवतो
  • value – प्रेषकाकडून प्राप्तकर्त्याकडे हस्तांतरित करायची ETH ची रक्कम (WEI मध्ये दर्शवलेले, जिथे १ ETH = १e+१८ wei)
  • input data – ऐच्छिक डेटा समाविष्ट करण्यासाठी वैकल्पिक फील्ड
  • gasLimit – व्यवहारामुळे वापरल्या जाऊ शकणाऱ्या गॅस युनिट्सची कमाल रक्कम. EVM प्रत्येक संगणकीय पायरीसाठी आवश्यक असलेल्या गॅसच्या युनिट्सची माहिती देते
  • maxPriorityFeePerGas - व्हॅलिडेटरला टीप म्हणून समाविष्ट करण्यासाठी वापरलेल्या गॅसची कमाल किंमत
  • maxFeePerGas - व्यवहारासाठी प्रति युनिट गॅससाठी देण्यास तयार असलेले कमाल शुल्क (baseFeePerGas आणि maxPriorityFeePerGas सह)

गॅस म्हणजे व्हॅलिडेटरद्वारे व्यवहार प्रक्रिया करण्यासाठी आवश्यक असलेल्या गणनेचा संदर्भ. वापरकर्त्यांना या गणनेसाठी शुल्क भरावे लागते. gasLimit, आणि maxPriorityFeePerGas व्हॅलिडेटरला दिले जाणारे कमाल व्यवहार शुल्क निश्चित करतात. गॅसवर अधिक.

व्यवहार ऑब्जेक्ट काहीसा असा दिसेल:

1{
2 from: "0xEA674fdDe714fd979de3EdF0F56AA9716B898ec8",
3 to: "0xac03bb73b6a9e108530aff4df5077c2b3d481e5a",
4 gasLimit: "21000",
5 maxFeePerGas: "300",
6 maxPriorityFeePerGas: "10",
7 nonce: "0",
8 value: "10000000000"
9}
सर्व दाखवा

परंतु व्यवहार ऑब्जेक्टवर प्रेषकाच्या खाजगी की वापरून स्वाक्षरी करणे आवश्यक आहे. हे सिद्ध करते की व्यवहार केवळ प्रेषकाकडूनच आला आहे आणि तो फसवणुकीने पाठवला गेला नाही.

Geth सारखा Ethereum क्लायंट ही स्वाक्षरी प्रक्रिया हाताळेल.

उदाहरण JSON-RPC कॉल:

1{
2 "id": 2,
3 "jsonrpc": "2.0",
4 "method": "account_signTransaction",
5 "params": [
6 {
7 "from": "0x1923f626bb8dc025849e00f99c25fe2b2f7fb0db",
8 "gas": "0x55555",
9 "maxFeePerGas": "0x1234",
10 "maxPriorityFeePerGas": "0x1234",
11 "input": "0xabcd",
12 "nonce": "0x0",
13 "to": "0x07a565b7ed7d7a678680a4c162885bedbb695fe0",
14 "value": "0x1234"
15 }
16 ]
17}
सर्व दाखवा

उदाहरण प्रतिसाद:

1{
2 "jsonrpc": "2.0",
3 "id": 2,
4 "result": {
5 "raw": "0xf88380018203339407a565b7ed7d7a678680a4c162885bedbb695fe080a44401a6e4000000000000000000000000000000000000000000000000000000000000001226a0223a7c9bcf5531c99be5ea7082183816eb20cfe0bbc322e97cc5c7f71ab8b20ea02aadee6b34b45bb15bc42d9c09de4a6754e7000908da72d48cc7704971491663",
6 "tx": {
7 "nonce": "0x0",
8 "maxFeePerGas": "0x1234",
9 "maxPriorityFeePerGas": "0x1234",
10 "gas": "0x55555",
11 "to": "0x07a565b7ed7d7a678680a4c162885bedbb695fe0",
12 "value": "0x1234",
13 "input": "0xabcd",
14 "v": "0x26",
15 "r": "0x223a7c9bcf5531c99be5ea7082183816eb20cfe0bbc322e97cc5c7f71ab8b20e",
16 "s": "0x2aadee6b34b45bb15bc42d9c09de4a6754e7000908da72d48cc7704971491663",
17 "hash": "0xeba2df809e7a612a0a0d444ccfa5c839624bdc00dd29e3340d46df3870f8a30e"
18 }
19 }
20}
सर्व दाखवा

स्वाक्षरी हॅशसह, व्यवहार क्रिप्टोग्राफिकली सिद्ध केला जाऊ शकतो की तो प्रेषकाकडून आला आहे आणि नेटवर्कवर सादर केला गेला आहे.

डेटा फील्ड

बहुतेक व्यवहार बाह्य-मालकीच्या खात्यातून करारावर प्रवेश करतात. बहुतेक करार Solidity मध्ये लिहिलेले आहेत आणि ते त्यांच्या डेटा फील्डचा अर्थ नुसार लावतात.

पहिले चार बाइट्स फंक्शनच्या नावाचा आणि वितर्कांचा हॅश वापरून कोणते फंक्शन कॉल करायचे हे निर्दिष्ट करतात. या डेटाबेस (opens in a new tab) चा वापर करून तुम्ही सिलेक्टरमधून फंक्शन ओळखू शकता.

उर्वरित कॉलगडाटा वितर्क आहेत, जे ABI स्पेसिफिकेशन्समध्ये निर्दिष्ट केल्याप्रमाणे एन्कोड केलेले आहेत (opens in a new tab).

उदाहरणार्थ, या व्यवहारावर (opens in a new tab) एक नजर टाकूया. कॉलडाटा पाहण्यासाठी अधिक पाहण्यासाठी क्लिक करा वापरा.

फंक्शन सिलेक्टर 0xa9059cbb आहे. या स्वाक्षरीसह अनेक ज्ञात फंक्शन्स (opens in a new tab) आहेत. या प्रकरणात, करार स्रोत कोड (opens in a new tab) Etherscan वर अपलोड केला आहे, म्हणून आम्हाला माहित आहे की फंक्शन transfer(address,uint256) आहे.

उर्वरित डेटा आहे:

10000000000000000000000004f6742badb049791cd9a37ea913f2bac38d01279
2000000000000000000000000000000000000000000000000000000003b0559f4

ABI स्पेसिफिकेशन्सनुसार, पूर्णांक मूल्ये (जसे की पत्ते, जे २०-बाइट पूर्णांक आहेत) ABI मध्ये ३२-बाइट शब्दांच्या रूपात दिसतात, ज्यांच्या समोर शून्यांनी पॅडिंग केलेले असते. म्हणून आम्हाला माहित आहे की to पत्ता 4f6742badb049791cd9a37ea913f2bac38d01279 (opens in a new tab) आहे. value 0x3b0559f4 = ९९०२०६४५२ आहे.

व्यवहारांचे प्रकार

Ethereum वर काही वेगवेगळ्या प्रकारचे व्यवहार आहेत:

  • नियमित व्यवहार: एका खात्यातून दुसऱ्या खात्यात केलेला व्यवहार.
  • करार उपयोजन व्यवहार: 'to' पत्त्याशिवाय केलेला व्यवहार, जिथे डेटा फील्ड करार कोडसाठी वापरले जाते.
  • कराराची अंमलबजावणी: उपयोजित स्मार्ट कराराशी संवाद साधणारा व्यवहार. या प्रकरणात, 'to' पत्ता स्मार्ट करार पत्ता आहे.

गॅसवर

नमूद केल्याप्रमाणे, व्यवहार कार्यान्वित करण्यासाठी गॅस खर्च येतो. साध्या हस्तांतरण व्यवहारांना २१००० युनिट्स गॅसची आवश्यकता असते.

म्हणून बॉबला ॲलिसला १ ETH पाठवण्यासाठी १९० gwei च्या baseFeePerGas आणि १० gwei च्या maxPriorityFeePerGas वर, बॉबला खालील शुल्क भरावे लागेल:

1(190 + 10) * 21000 = 4,200,000 gwei
2--or--
30.0042 ETH

बॉबच्या खात्यातून -१.००४२ ETH डेबिट केले जातील (ॲलिससाठी १ ETH + गॅस शुल्कात ०.००४२ ETH)

ॲलिसच्या खात्यात +१.० ETH जमा केले जातील

आधार शुल्क -०.००३९९ ETH बर्न केले जाईल

व्हॅलिडेटर +०.०००२१० ETH टीप ठेवतो

न वापरलेला गॅस कसा परत केला जातो हे दर्शवणारे रेखाचित्र Ethereum EVM illustrated (opens in a new tab) वरून रुपांतरित रेखाचित्र

व्यवहारात न वापरलेला कोणताही गॅस वापरकर्त्याच्या खात्यात परत केला जातो.

स्मार्ट करार संवाद

स्मार्ट कराराचा समावेश असलेल्या कोणत्याही व्यवहारासाठी गॅस आवश्यक आहे.

स्मार्ट करारांमध्ये view (opens in a new tab) किंवा pure (opens in a new tab) म्हणून ओळखले जाणारे फंक्शन्स देखील असू शकतात, जे कराराची स्थिती बदलत नाहीत. त्यामुळे, EOA मधून या फंक्शन्सना कॉल करण्यासाठी कोणत्याही गॅसची आवश्यकता नसते. या परिस्थितीसाठी अंतर्निहित RPC कॉल eth_call आहे.

eth_call वापरून प्रवेश करण्याच्या विपरीत, हे view किंवा pure फंक्शन्स सामान्यतः अंतर्गतपणे (म्हणजे, करारातूनच किंवा दुसऱ्या करारातून) कॉल केले जातात, ज्यासाठी गॅस खर्च येतो.

व्यवहार जीवनचक्र

एकदा व्यवहार सादर केल्यावर खालील गोष्टी घडतात:

  1. एक व्यवहार हॅश क्रिप्टोग्राफिकली तयार केला जातो: 0x97d99bc7729211111a21b12c933c949d4f31684f1d6954ff477d0477538ff017
  2. त्यानंतर व्यवहार नेटवर्कवर प्रसारित केला जातो आणि इतर सर्व प्रलंबित नेटवर्क व्यवहारांचा समावेश असलेल्या व्यवहार पूलमध्ये जोडला जातो.
  3. एका व्हॅलिडेटरने तुमचा व्यवहार निवडून तो ब्लॉकमध्ये समाविष्ट करणे आवश्यक आहे जेणेकरून व्यवहार सत्यापित होईल आणि तो "यशस्वी" मानला जाईल.
  4. जसजसा वेळ जाईल तसतसे तुमच्या व्यवहाराचा समावेश असलेला ब्लॉक "न्याय्य" आणि नंतर "अंतिम" म्हणून अपग्रेड केला जाईल. हे अपग्रेड्स तुमचा व्यवहार यशस्वी झाल्याची आणि तो कधीही बदलला जाणार नाही याची अधिक खात्री देतात. एकदा एखादा ब्लॉक "अंतिम" झाला की तो फक्त नेटवर्क स्तरावरील हल्ल्यानेच बदलला जाऊ शकतो ज्यासाठी अब्जावधी डॉलर्स खर्च येऊ शकतो.

एक दृश्यात्मक डेमो

ऑस्टिनला व्यवहार, गॅस आणि मायनिंगमधून तुम्हाला मार्गदर्शन करताना पहा.

टाइप्ड ट्रान्झॅक्शन एनव्हेलप

Ethereum मध्ये मूळतः व्यवहारांसाठी एकच स्वरूप होते. प्रत्येक व्यवहारामध्ये नॉन्स, गॅस प्राइस, गॅस लिमिट, टू ॲड्रेस, व्हॅल्यू, डेटा, v, r आणि s यांचा समावेश होता. हे फील्ड्स RLP-एन्कोडेड आहेत, जे असे दिसतात:

RLP([nonce, gasPrice, gasLimit, to, value, data, v, r, s])

ॲक्सेस लिस्ट्स आणि EIP-1559 (opens in a new tab) सारख्या नवीन वैशिष्ट्यांची अंमलबजावणी करण्यासाठी, जुन्या व्यवहार स्वरूपांवर परिणाम न करता, Ethereum आता अनेक प्रकारच्या व्यवहारांना समर्थन देण्यासाठी विकसित झाले आहे.

EIP-2718 (opens in a new tab) हे या वर्तनास परवानगी देते. व्यवहारांचा अर्थ असा लावला जातो:

TransactionType || TransactionPayload

जिथे फील्ड्स खालीलप्रमाणे परिभाषित आहेत:

  • TransactionType - ० ते ०x७f मधील एक संख्या, एकूण १२८ संभाव्य व्यवहार प्रकारांसाठी.
  • TransactionPayload - व्यवहार प्रकाराने परिभाषित केलेली एक अनियंत्रित बाइट ॲरे.

TransactionType मूल्यावर आधारित, व्यवहार खालीलप्रमाणे वर्गीकृत केला जाऊ शकतो:

  1. प्रकार ० (लेगसी) व्यवहार: Ethereum च्या लाँचपासून वापरले जाणारे मूळ व्यवहार स्वरूप. त्यामध्ये EIP-1559 (opens in a new tab) मधील वैशिष्ट्ये जसे की डायनॅमिक गॅस शुल्क गणना किंवा स्मार्ट करारांसाठी ॲक्सेस लिस्ट्स यांचा समावेश नाही. लेगसी व्यवहारांमध्ये त्यांच्या सिरियलाइज्ड स्वरूपात त्यांचा प्रकार दर्शविणारा विशिष्ट उपसर्ग नसतो, रिकर्सिव्ह लेंथ प्रिफिक्स (RLP) एन्कोडिंग वापरताना ते 0xf8 बाइटने सुरू होतात. या व्यवहारांसाठी TransactionType मूल्य 0x0 आहे.

  2. प्रकार १ व्यवहार: Ethereum च्या बर्लिन अपग्रेड चा भाग म्हणून EIP-2930 (opens in a new tab) मध्ये सादर केलेले, या व्यवहारांमध्ये accessList पॅरामीटरचा समावेश आहे. ही यादी पत्ते आणि स्टोरेज की निर्दिष्ट करते ज्यावर व्यवहार प्रवेश करण्याची अपेक्षा करतो, ज्यामुळे स्मार्ट करारांचा समावेश असलेल्या जटिल व्यवहारांसाठी गॅस खर्च कमी होण्यास मदत होते. EIP-1559 शुल्क बाजारातील बदल प्रकार १ व्यवहारांमध्ये समाविष्ट नाहीत. प्रकार १ व्यवहारांमध्ये yParity पॅरामीटरचा देखील समावेश असतो, जो 0x0 किंवा 0x1 असू शकतो, जो secp256k1 स्वाक्षरीच्या y-मूल्याची समानता दर्शवतो. ते 0x01 बाइटने सुरू झाल्यामुळे ओळखले जातात आणि त्यांचे TransactionType मूल्य 0x1 आहे.

  3. प्रकार २ व्यवहार, सामान्यतः EIP-1559 व्यवहार म्हणून ओळखले जातात, हे Ethereum च्या लंडन अपग्रेड मध्ये, EIP-1559 (opens in a new tab) मध्ये सादर केलेले व्यवहार आहेत. ते Ethereum नेटवर्कवर मानक व्यवहार प्रकार बनले आहेत. हे व्यवहार एक नवीन शुल्क बाजार यंत्रणा सादर करतात जी व्यवहार शुल्काचे आधार शुल्क आणि प्राधान्य शुल्कामध्ये विभाजन करून अंदाजक्षमता सुधारते. ते 0x02 बाइटने सुरू होतात आणि त्यात maxPriorityFeePerGas आणि maxFeePerGas सारख्या फील्ड्सचा समावेश असतो. प्रकार २ व्यवहार आता त्यांच्या लवचिकता आणि कार्यक्षमतेमुळे डिफॉल्ट आहेत, विशेषतः उच्च नेटवर्क गर्दीच्या काळात वापरकर्त्यांना व्यवहार शुल्क अधिक अंदाजे व्यवस्थापित करण्यात मदत करण्याच्या त्यांच्या क्षमतेमुळे पसंत केले जातात. या व्यवहारांसाठी TransactionType मूल्य 0x2 आहे.

  4. प्रकार ३ (ब्लॉब) व्यवहार Ethereum च्या डेनकून अपग्रेड चा भाग म्हणून EIP-4844 (opens in a new tab) मध्ये सादर करण्यात आले. हे व्यवहार "ब्लॉब" डेटा (बायनरी लार्ज ऑब्जेक्ट्स) अधिक कार्यक्षमतेने हाताळण्यासाठी डिझाइन केलेले आहेत, विशेषतः लेयर २ रोलअप्सना कमी खर्चात Ethereum नेटवर्कवर डेटा पोस्ट करण्याचा मार्ग प्रदान करून फायदा देतात. ब्लॉब व्यवहारांमध्ये blobVersionedHashes, maxFeePerBlobGas, आणि blobGasPrice सारख्या अतिरिक्त फील्ड्सचा समावेश असतो. ते 0x03 बाइटने सुरू होतात आणि त्यांचे TransactionType मूल्य 0x3 आहे. ब्लॉब व्यवहार Ethereum च्या डेटा उपलब्धता आणि स्केलिंग क्षमतांमध्ये एक महत्त्वपूर्ण सुधारणा दर्शवतात.

  5. प्रकार ४ व्यवहार Ethereum च्या पेक्ट्रा अपग्रेड चा भाग म्हणून EIP-7702 (opens in a new tab) मध्ये सादर करण्यात आले. हे व्यवहार खाते अमूर्ततेसह फॉरवर्ड-कंपॅटिबल होण्यासाठी डिझाइन केलेले आहेत. ते EOAs ला त्यांची मूळ कार्यक्षमता धोक्यात न घालता तात्पुरते स्मार्ट करार खात्यांसारखे वागण्याची परवानगी देतात. त्यामध्ये authorization_list पॅरामीटरचा समावेश आहे, जो EOA आपला अधिकार कोणत्या स्मार्ट कराराला सोपवतो हे निर्दिष्ट करतो. व्यवहारानंतर, EOA च्या कोड फील्डमध्ये सोपवलेल्या स्मार्ट कराराचा पत्ता असेल.

पुढील वाचन

तुम्हाला मदत केलेल्या सामुदायिक संसाधनाबद्दल माहिती आहे का? हे पृष्ठ संपादित करा आणि ते जोडा!_

हा लेख उपयुक्त होता का?