ট্রানজ্যাকশন
ট্রানজ্যাকশন হলো অ্যাকাউন্ট থেকে আসা ক্রিপ্টোগ্রাফিকভাবে স্বাক্ষরিত নির্দেশ। ইথেরিয়াম নেটওয়ার্কের স্টেট আপডেট করার জন্য একটি অ্যাকাউন্ট ট্রানজ্যাকশন শুরু করবে। সবচেয়ে সহজ ট্রানজ্যাকশন হলো এক অ্যাকাউন্ট থেকে অন্য অ্যাকাউন্টে ETH হস্তান্তর করা।
পূর্বশর্ত
এই পৃষ্ঠাটি আরও ভালোভাবে বোঝার জন্য, আমরা সুপারিশ করছি যে আপনি প্রথমে অ্যাকাউন্ট এবং আমাদের ইথেরিয়াম পরিচিতি পড়ে নিন।
ট্রানজ্যাকশন কী?
একটি ইথেরিয়াম ট্রানজ্যাকশন বলতে এক্সটার্নালি-ওনড অ্যাকাউন্ট (externally-owned account) দ্বারা শুরু করা একটি কাজকে বোঝায়, অন্য কথায় এটি এমন একটি অ্যাকাউন্ট যা কোনো মানুষ পরিচালনা করে, কোনো কন্ট্রাক্ট নয়। উদাহরণস্বরূপ, যদি বব অ্যালিসকে 1 ETH পাঠায়, তবে ববের অ্যাকাউন্ট থেকে ডেবিট করতে হবে এবং অ্যালিসের অ্যাকাউন্টে ক্রেডিট করতে হবে। স্টেট পরিবর্তনকারী এই কাজটি একটি ট্রানজ্যাকশনের মধ্যেই ঘটে।
Ethereum EVM illustrated (opens in a new tab) থেকে গৃহীত ডায়াগ্রাম
ট্রানজ্যাকশন, যা EVM-এর স্টেট পরিবর্তন করে, তা পুরো নেটওয়ার্কে সম্প্রচার করতে হয়। যেকোনো নোড EVM-এ একটি ট্রানজ্যাকশন কার্যকর করার জন্য অনুরোধ সম্প্রচার করতে পারে; এটি হওয়ার পর, একজন ভ্যালিডেটর ট্রানজ্যাকশনটি কার্যকর করবে এবং এর ফলে হওয়া স্টেট পরিবর্তনটি নেটওয়ার্কের বাকি অংশে ছড়িয়ে দেবে।
ট্রানজ্যাকশনের জন্য একটি ফি প্রয়োজন এবং এটি অবশ্যই একটি যাচাইকৃত ব্লকে অন্তর্ভুক্ত হতে হবে। এই ওভারভিউটিকে আরও সহজ করার জন্য আমরা গ্যাস ফি এবং ভ্যালিডেশন অন্য কোথাও আলোচনা করব।
একটি জমা দেওয়া ট্রানজ্যাকশনে নিচের তথ্যগুলো থাকে:
from– প্রেরকের ঠিকানা, যিনি ট্রানজ্যাকশনে স্বাক্ষর করবেন। এটি একটি এক্সটার্নালি-ওনড অ্যাকাউন্ট হবে কারণ চুক্তি অ্যাকাউন্টগুলো ট্রানজ্যাকশন পাঠাতে পারে নাto– প্রাপকের ঠিকানা (যদি এটি এক্সটার্নালি-ওনড অ্যাকাউন্ট হয়, তবে ট্রানজ্যাকশনটি ভ্যালু হস্তান্তর করবে। যদি এটি চুক্তি অ্যাকাউন্ট হয়, তবে ট্রানজ্যাকশনটি কন্ট্রাক্ট কোড কার্যকর করবে)signature– প্রেরকের আইডেন্টিফায়ার। প্রেরকের প্রাইভেট কী যখন ট্রানজ্যাকশনে স্বাক্ষর করে তখন এটি তৈরি হয় এবং নিশ্চিত করে যে প্রেরক এই ট্রানজ্যাকশনটি অনুমোদন করেছেনnonce- একটি ক্রমান্বয়ে বৃদ্ধি পাওয়া কাউন্টার যা অ্যাকাউন্ট থেকে ট্রানজ্যাকশন নম্বর নির্দেশ করেvalue– প্রেরক থেকে প্রাপকের কাছে হস্তান্তর করার জন্য ETH-এর পরিমাণ (WEI-তে হিসাব করা হয়, যেখানে 1ETH সমান 1e+18wei)input data– যেকোনো ডেটা অন্তর্ভুক্ত করার জন্য ঐচ্ছিক ফিল্ডgasLimit– ট্রানজ্যাকশন দ্বারা ব্যবহার করা যেতে পারে এমন গ্যাস ইউনিটের সর্বোচ্চ পরিমাণ। EVM প্রতিটি গণনামূলক ধাপের জন্য প্রয়োজনীয় গ্যাস ইউনিট নির্দিষ্ট করেmaxPriorityFeePerGas- ভ্যালিডেটরকে টিপ হিসেবে দেওয়ার জন্য ব্যবহৃত গ্যাসের সর্বোচ্চ মূল্যmaxFeePerGas- ট্রানজ্যাকশনের জন্য প্রতি ইউনিট গ্যাসে সর্বোচ্চ যে ফি দিতে ইচ্ছুক (baseFeePerGasএবংmaxPriorityFeePerGasসহ)
গ্যাস হলো একজন ভ্যালিডেটর দ্বারা ট্রানজ্যাকশন প্রক্রিয়া করার জন্য প্রয়োজনীয় গণনার একটি রেফারেন্স। ব্যবহারকারীদের এই গণনার জন্য একটি ফি দিতে হয়। gasLimit এবং maxPriorityFeePerGas ভ্যালিডেটরকে দেওয়া সর্বোচ্চ লেনদেন ফি নির্ধারণ করে। গ্যাস সম্পর্কে আরও জানুন।
ট্রানজ্যাকশন অবজেক্টটি দেখতে অনেকটা এরকম হবে:
{
from: "0xEA674fdDe714fd979de3EdF0F56AA9716B898ec8",
to: "0xac03bb73b6a9e108530aff4df5077c2b3d481e5a",
gasLimit: "21000",
maxFeePerGas: "300",
maxPriorityFeePerGas: "10",
nonce: "0",
value: "10000000000"
}
তবে একটি ট্রানজ্যাকশন অবজেক্টে প্রেরকের প্রাইভেট কী ব্যবহার করে স্বাক্ষর করতে হবে। এটি প্রমাণ করে যে ট্রানজ্যাকশনটি কেবল প্রেরকের কাছ থেকেই আসতে পারে এবং এটি প্রতারণামূলকভাবে পাঠানো হয়নি।
Geth-এর মতো একটি ইথেরিয়াম ক্লায়েন্ট এই স্বাক্ষরকরণ প্রক্রিয়াটি পরিচালনা করবে।
উদাহরণস্বরূপ জেসন-আরপিসি কল:
{
"id": 2,
"jsonrpc": "2.0",
"method": "account_signTransaction",
"params": [
{
"from": "0x1923f626bb8dc025849e00f99c25fe2b2f7fb0db",
"gas": "0x55555",
"maxFeePerGas": "0x1234",
"maxPriorityFeePerGas": "0x1234",
"input": "0xabcd",
"nonce": "0x0",
"to": "0x07a565b7ed7d7a678680a4c162885bedbb695fe0",
"value": "0x1234"
}
]
}
উদাহরণস্বরূপ রেসপন্স:
{
"jsonrpc": "2.0",
"id": 2,
"result": {
"raw": "0xf88380018203339407a565b7ed7d7a678680a4c162885bedbb695fe080a44401a6e4000000000000000000000000000000000000000000000000000000000000001226a0223a7c9bcf5531c99be5ea7082183816eb20cfe0bbc322e97cc5c7f71ab8b20ea02aadee6b34b45bb15bc42d9c09de4a6754e7000908da72d48cc7704971491663",
"tx": {
"nonce": "0x0",
"maxFeePerGas": "0x1234",
"maxPriorityFeePerGas": "0x1234",
"gas": "0x55555",
"to": "0x07a565b7ed7d7a678680a4c162885bedbb695fe0",
"value": "0x1234",
"input": "0xabcd",
"v": "0x26",
"r": "0x223a7c9bcf5531c99be5ea7082183816eb20cfe0bbc322e97cc5c7f71ab8b20e",
"s": "0x2aadee6b34b45bb15bc42d9c09de4a6754e7000908da72d48cc7704971491663",
"hash": "0xeba2df809e7a612a0a0d444ccfa5c839624bdc00dd29e3340d46df3870f8a30e"
}
}
}
rawহলো রিকার্সিভ লেংথ প্রিফিক্স (RLP) এনকোড করা ফর্মে স্বাক্ষরিত ট্রানজ্যাকশনtxহলো JSON ফর্মে স্বাক্ষরিত ট্রানজ্যাকশন
স্বাক্ষর হ্যাশ দিয়ে, ট্রানজ্যাকশনটি ক্রিপ্টোগ্রাফিকভাবে প্রমাণ করা যেতে পারে যে এটি প্রেরকের কাছ থেকে এসেছে এবং নেটওয়ার্কে জমা দেওয়া হয়েছে।
ডেটা ফিল্ড
বেশিরভাগ ট্রানজ্যাকশন একটি এক্সটার্নালি-ওনড অ্যাকাউন্ট থেকে একটি কন্ট্রাক্ট অ্যাক্সেস করে। বেশিরভাগ কন্ট্রাক্ট Solidity-তে লেখা হয় এবং অনুযায়ী তাদের ডেটা ফিল্ড ব্যাখ্যা করে।
প্রথম চারটি বাইট ফাংশনের নাম এবং আর্গুমেন্টের হ্যাশ ব্যবহার করে কোন ফাংশনটি কল করতে হবে তা নির্দিষ্ট করে। আপনি মাঝে মাঝে এই ডেটাবেস (opens in a new tab) ব্যবহার করে সিলেক্টর থেকে ফাংশনটি শনাক্ত করতে পারেন।
কল ডেটার বাকি অংশ হলো আর্গুমেন্ট, যা ABI স্পেসিফিকেশনে নির্দিষ্ট করা অনুযায়ী এনকোড করা (opens in a new tab) থাকে।
উদাহরণস্বরূপ, চলুন এই ট্রানজ্যাকশনটি (opens in a new tab) দেখি। কল ডেটা দেখতে Click to see More ব্যবহার করুন।
ফাংশন সিলেক্টর হলো 0xa9059cbb। এই স্বাক্ষরের সাথে পরিচিত বেশ কয়েকটি ফাংশন (opens in a new tab) রয়েছে।
এই ক্ষেত্রে কন্ট্রাক্ট সোর্স কোড (opens in a new tab) Etherscan-এ আপলোড করা হয়েছে, তাই আমরা জানি ফাংশনটি হলো transfer(address,uint256)।
বাকি ডেটা হলো:
0000000000000000000000004f6742badb049791cd9a37ea913f2bac38d01279
000000000000000000000000000000000000000000000000000000003b0559f4
ABI স্পেসিফিকেশন অনুযায়ী, ইন্টিজার ভ্যালুগুলো (যেমন ঠিকানা, যা 20-বাইট ইন্টিজার) ABI-তে 32-বাইট শব্দ হিসেবে উপস্থিত হয়, যার সামনে শূন্য দিয়ে প্যাড করা থাকে।
তাই আমরা জানি যে to ঠিকানাটি হলো 4f6742badb049791cd9a37ea913f2bac38d01279 (opens in a new tab)।
value হলো 0x3b0559f4 = 990206452।
ট্রানজ্যাকশন ডেসক্রিপ্টর
যেহেতু ডেটা ফিল্ডে অস্পষ্ট হেক্সাডেসিমেল বাইট থাকে, তাই একটি ট্রানজ্যাকশন আসলে কী কাজ করবে তা যাচাই করা অত্যন্ত কঠিন হতে পারে। এই "ব্লাইন্ড সাইনিং" দুর্বলতাটি ট্রানজ্যাকশন ডেসক্রিপ্টর (opens in a new tab) (ERC-7730 দ্বারা সংজ্ঞায়িত) ব্যবহারের মাধ্যমে ক্লিয়ার সাইনিং (opens in a new tab) দ্বারা সমাধান করা হয়।
ERC-7730 স্পেসিফিকেশন ABI এবং স্ট্রাকচার্ড মেসেজ, যেমন EVM ট্রানজ্যাকশন কল ডেটা, EIP-712 মেসেজ এবং EIP-4337 ইউজার অপারেশনগুলোতে পাওয়া ডেটাকে সমৃদ্ধ করতে ট্রানজ্যাকশন ডেসক্রিপ্টর (প্রায়শই JSON ফাইল হিসেবে গঠিত) ব্যবহার করে। ডেভেলপাররা নির্দিষ্ট ট্রানজ্যাকশন ভেরিয়েবলগুলোকে সরাসরি ফরম্যাটিং টেমপ্লেটে ম্যাপ করতে এই ডেসক্রিপ্টরগুলো ব্যবহার করে, যা নিশ্চিত করে যে অন্তর্নিহিত ডেটা অ্যাপ্লিকেশনগুলোর জন্য মেশিন-রিডেবল থাকে।
ফ্রন্টএন্ডে, ওয়ালেটগুলো অস্পষ্ট বাইটকোডকে পরিষ্কার, মানুষের পড়ার যোগ্য তথ্যে অনুবাদ করতে এই ফরম্যাটিং কনটেক্সট ব্যবহার করে। টোকেন ঠিকানার মতো ভ্যালুগুলোকে পরিচিত টিকারে বা পরিমাণকে ডেসিমালে স্বয়ংক্রিয়ভাবে সমাধান করার মাধ্যমে, ব্যবহারকারীদের স্বাক্ষর করার আগে ট্রানজ্যাকশনের সঠিক উদ্দেশ্যের একটি সহজ ভাষার সারাংশ (যেমন, 'অন্তত 0.25 WETH-এর জন্য 1000 USDC সোয়াপ করুন') উপস্থাপন করা হয়।
ট্রানজ্যাকশনের ধরন
ইথেরিয়ামে কয়েক ধরনের ট্রানজ্যাকশন রয়েছে:
- সাধারণ ট্রানজ্যাকশন: এক অ্যাকাউন্ট থেকে অন্য অ্যাকাউন্টে একটি ট্রানজ্যাকশন।
- কন্ট্রাক্ট ডিপ্লয়মেন্ট ট্রানজ্যাকশন: 'to' ঠিকানা ছাড়া একটি ট্রানজ্যাকশন, যেখানে ডেটা ফিল্ডটি কন্ট্রাক্ট কোডের জন্য ব্যবহৃত হয়।
- কন্ট্রাক্ট কার্যকর করা: একটি ট্রানজ্যাকশন যা ডিপ্লয় করা স্মার্ট কন্ট্রাক্টের সাথে ইন্টারঅ্যাক্ট করে। এই ক্ষেত্রে, 'to' ঠিকানা হলো স্মার্ট কন্ট্রাক্টের ঠিকানা।
গ্যাস প্রসঙ্গে
যেমনটি উল্লেখ করা হয়েছে, ট্রানজ্যাকশন কার্যকর করতে গ্যাস খরচ হয়। সাধারণ হস্তান্তর ট্রানজ্যাকশনের জন্য 21000 ইউনিট গ্যাস প্রয়োজন।
তাই বব যদি অ্যালিসকে 190 gwei-এর baseFeePerGas এবং 10 gwei-এর maxPriorityFeePerGas-তে 1 ETH পাঠাতে চায়, তবে ববকে নিচের ফি দিতে হবে:
(190 + 10) * 21000 = 4,200,000 gwei
--or--
0.0042 ETH
ববের অ্যাকাউন্ট থেকে -1.0042 ETH ডেবিট করা হবে (অ্যালিসের জন্য 1 ETH + গ্যাস ফি হিসেবে 0.0042 ETH)
অ্যালিসের অ্যাকাউন্টে +1.0 ETH ক্রেডিট করা হবে
ভিত্তি ফি পুড়িয়ে ফেলা হবে -0.00399 ETH
ভ্যালিডেটর টিপ রেখে দেবে +0.000210 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 ফাংশনগুলো সাধারণত অভ্যন্তরীণভাবেও কল করা হয় (অর্থাৎ, কন্ট্রাক্ট থেকে বা অন্য কোনো কন্ট্রাক্ট থেকে) যার জন্য গ্যাস খরচ হয়।
ট্রানজ্যাকশন লাইফসাইকেল
ট্রানজ্যাকশন জমা দেওয়ার পর নিচের ঘটনাগুলো ঘটে:
- একটি ট্রানজ্যাকশন হ্যাশ ক্রিপ্টোগ্রাফিকভাবে তৈরি হয়:
0x97d99bc7729211111a21b12c933c949d4f31684f1d6954ff477d0477538ff017 - এরপর ট্রানজ্যাকশনটি নেটওয়ার্কে সম্প্রচার করা হয় এবং অন্যান্য সমস্ত পেন্ডিং নেটওয়ার্ক ট্রানজ্যাকশন নিয়ে গঠিত একটি লেনদেন পুলে যোগ করা হয়।
- ট্রানজ্যাকশনটি যাচাই করতে এবং এটিকে "সফল" হিসেবে বিবেচনা করার জন্য একজন ভ্যালিডেটরকে অবশ্যই আপনার ট্রানজ্যাকশনটি বেছে নিতে হবে এবং এটিকে একটি ব্লকে অন্তর্ভুক্ত করতে হবে।
- সময় যাওয়ার সাথে সাথে আপনার ট্রানজ্যাকশন থাকা ব্লকটি "জাস্টিফাইড" এবং তারপর "চূড়ান্তকৃত" হিসেবে আপগ্রেড হবে। এই আপগ্রেডগুলো আরও বেশি নিশ্চিত করে যে আপনার ট্রানজ্যাকশনটি সফল হয়েছে এবং এটি আর কখনো পরিবর্তন করা হবে না। একবার একটি ব্লক "চূড়ান্তকৃত" হয়ে গেলে, এটি কেবল একটি নেটওয়ার্ক স্তরের আক্রমণের মাধ্যমেই পরিবর্তন করা যেতে পারে যার জন্য বিলিয়ন বিলিয়ন ডলার খরচ হবে।
একটি ভিজ্যুয়াল ডেমো
অস্টিনকে ট্রানজ্যাকশন, গ্যাস এবং মাইনিং সম্পর্কে বুঝিয়ে বলতে দেখুন।
টাইপড ট্রানজ্যাকশন এনভেলপ
ইথেরিয়ামে প্রাথমিকভাবে ট্রানজ্যাকশনের জন্য একটি ফরম্যাট ছিল। প্রতিটি ট্রানজ্যাকশনে একটি নন্স, গ্যাস প্রাইস, গ্যাস লিমিট, to ঠিকানা, ভ্যালু, ডেটা, v, r এবং s থাকত। এই ফিল্ডগুলো RLP-এনকোড করা থাকে, যা দেখতে অনেকটা এরকম:
RLP([nonce, gasPrice, gasLimit, to, value, data, v, r, s])
লিগ্যাসি ট্রানজ্যাকশন ফরম্যাটগুলোকে প্রভাবিত না করে অ্যাক্সেস লিস্ট এবং EIP-1559 (opens in a new tab)-এর মতো নতুন বৈশিষ্ট্যগুলো বাস্তবায়নের অনুমতি দেওয়ার জন্য ইথেরিয়াম একাধিক ধরনের ট্রানজ্যাকশন সমর্থন করার জন্য বিবর্তিত হয়েছে।
EIP-2718 (opens in a new tab) এই আচরণের অনুমতি দেয়। ট্রানজ্যাকশনগুলোকে এভাবে ব্যাখ্যা করা হয়:
TransactionType || TransactionPayload
যেখানে ফিল্ডগুলোকে এভাবে সংজ্ঞায়িত করা হয়েছে:
TransactionType- 0 এবং 0x7f-এর মধ্যে একটি সংখ্যা, মোট 128টি সম্ভাব্য ট্রানজ্যাকশন ধরনের জন্য।TransactionPayload- ট্রানজ্যাকশনের ধরন দ্বারা সংজ্ঞায়িত একটি আরবিট্রারি বাইট অ্যারে।
TransactionType ভ্যালুর ওপর ভিত্তি করে, একটি ট্রানজ্যাকশনকে এভাবে শ্রেণিবদ্ধ করা যেতে পারে:
-
টাইপ 0 (লিগ্যাসি) ট্রানজ্যাকশন: ইথেরিয়াম চালু হওয়ার পর থেকে ব্যবহৃত মূল ট্রানজ্যাকশন ফরম্যাট। এগুলোতে EIP-1559 (opens in a new tab) থেকে আসা বৈশিষ্ট্যগুলো অন্তর্ভুক্ত নেই, যেমন ডায়নামিক গ্যাস ফি গণনা বা স্মার্ট কন্ট্রাক্টের জন্য অ্যাক্সেস লিস্ট। লিগ্যাসি ট্রানজ্যাকশনগুলোর সিরিয়ালাইজড ফর্মে তাদের ধরন নির্দেশকারী কোনো নির্দিষ্ট প্রিফিক্স থাকে না, রিকার্সিভ লেংথ প্রিফিক্স (RLP) এনকোডিং ব্যবহার করার সময় এগুলো
0xf8বাইট দিয়ে শুরু হয়। এই ট্রানজ্যাকশনগুলোর জন্য TransactionType ভ্যালু হলো0x0। -
টাইপ 1 ট্রানজ্যাকশন: ইথেরিয়ামের বার্লিন আপগ্রেড-এর অংশ হিসেবে EIP-2930 (opens in a new tab)-এ চালু করা এই ট্রানজ্যাকশনগুলোতে একটি
accessListপ্যারামিটার অন্তর্ভুক্ত থাকে। এই তালিকাটি ট্রানজ্যাকশনটি যে ঠিকানা এবং স্টোরেজ কীগুলো অ্যাক্সেস করবে বলে আশা করে তা নির্দিষ্ট করে, যা স্মার্ট কন্ট্রাক্ট জড়িত জটিল ট্রানজ্যাকশনগুলোর জন্য সম্ভাব্যভাবে গ্যাস খরচ কমাতে সাহায্য করে। EIP-1559 ফি মার্কেট পরিবর্তনগুলো টাইপ 1 ট্রানজ্যাকশনে অন্তর্ভুক্ত নয়। টাইপ 1 ট্রানজ্যাকশনে একটিyParityপ্যারামিটারও অন্তর্ভুক্ত থাকে, যা0x0বা0x1হতে পারে, যা secp256k1 স্বাক্ষরের y-ভ্যালুর প্যারিটি নির্দেশ করে। এগুলো0x01বাইট দিয়ে শুরু হওয়ার মাধ্যমে শনাক্ত করা হয় এবং এদের TransactionType ভ্যালু হলো0x1। -
টাইপ 2 ট্রানজ্যাকশন, যা সাধারণত EIP-1559 ট্রানজ্যাকশন হিসেবে পরিচিত, এগুলো ইথেরিয়ামের লন্ডন আপগ্রেড-এ EIP-1559 (opens in a new tab)-এ চালু করা ট্রানজ্যাকশন। এগুলো ইথেরিয়াম নেটওয়ার্কে স্ট্যান্ডার্ড ট্রানজ্যাকশন ধরনে পরিণত হয়েছে। এই ট্রানজ্যাকশনগুলো একটি নতুন ফি মার্কেট মেকানিজম চালু করে যা লেনদেন ফি-কে একটি ভিত্তি ফি এবং একটি প্রায়োরিটি ফি-তে আলাদা করে পূর্বাভাসযোগ্যতা উন্নত করে। এগুলো
0x02বাইট দিয়ে শুরু হয় এবং এগুলোতেmaxPriorityFeePerGasএবংmaxFeePerGas-এর মতো ফিল্ড অন্তর্ভুক্ত থাকে। টাইপ 2 ট্রানজ্যাকশনগুলো এখন তাদের নমনীয়তা এবং দক্ষতার কারণে ডিফল্ট, বিশেষ করে উচ্চ নেটওয়ার্ক কনজেশনের সময় ব্যবহারকারীদের লেনদেন ফি আরও পূর্বাভাসযোগ্যভাবে পরিচালনা করতে সাহায্য করার ক্ষমতার জন্য এগুলো পছন্দ করা হয়। এই ট্রানজ্যাকশনগুলোর জন্য TransactionType ভ্যালু হলো0x2। -
টাইপ 3 (ব্লব) ট্রানজ্যাকশন ইথেরিয়ামের ডেনকুন আপগ্রেড-এর অংশ হিসেবে EIP-4844 (opens in a new tab)-এ চালু করা হয়েছিল। এই ট্রানজ্যাকশনগুলো "ব্লব" ডেটা (বাইনারি লার্জ অবজেক্ট) আরও দক্ষতার সাথে পরিচালনা করার জন্য ডিজাইন করা হয়েছে, যা বিশেষ করে কম খরচে ইথেরিয়াম নেটওয়ার্কে ডেটা পোস্ট করার একটি উপায় প্রদান করে লেয়ার ২ (l2) রোলআপগুলোকে উপকৃত করে। ব্লব ট্রানজ্যাকশনে
blobVersionedHashes,maxFeePerBlobGasএবংblobGasPrice-এর মতো অতিরিক্ত ফিল্ড অন্তর্ভুক্ত থাকে। এগুলো0x03বাইট দিয়ে শুরু হয় এবং এদের TransactionType ভ্যালু হলো0x3। ব্লব ট্রানজ্যাকশন ইথেরিয়ামের ডেটা অ্যাভেইলেবিলিটি এবং স্কেলিং ক্ষমতার একটি উল্লেখযোগ্য উন্নতির প্রতিনিধিত্ব করে। -
টাইপ 4 ট্রানজ্যাকশন ইথেরিয়ামের পেকট্রা আপগ্রেড-এর অংশ হিসেবে EIP-7702 (opens in a new tab)-এ চালু করা হয়েছিল। এই ট্রানজ্যাকশনগুলো অ্যাকাউন্ট বিমূর্তকরণের সাথে ফরোয়ার্ড-কম্প্যাটিবল হওয়ার জন্য ডিজাইন করা হয়েছে। এগুলো EOA-গুলোকে তাদের মূল কার্যকারিতার সাথে আপস না করে সাময়িকভাবে চুক্তি অ্যাকাউন্টগুলোর মতো আচরণ করার অনুমতি দেয়। এগুলোতে একটি
authorization_listপ্যারামিটার অন্তর্ভুক্ত থাকে, যা নির্দিষ্ট করে যে EOA কোন স্মার্ট কন্ট্রাক্টকে তার কর্তৃত্ব অর্পণ করে। ট্রানজ্যাকশনের পরে, EOA-এর কোড ফিল্ডে অর্পিত স্মার্ট কন্ট্রাক্টের ঠিকানা থাকবে।
আরও পড়ুন
আপনাকে সাহায্য করেছে এমন কোনো কমিউনিটি রিসোর্স সম্পর্কে জানেন? এই পৃষ্ঠাটি সম্পাদনা করুন এবং এটি যোগ করুন!