ব্লকচেইন ডাটা স্টোরেজ কৌশল
পেজ সর্বশেষ আপডেট: ২৬ ফেব্রুয়ারী, ২০২৬
সরাসরি ব্লকচেইনে বা ব্লকচেইন দ্বারা সুরক্ষিত এমন পদ্ধতিতে তথ্য স্টোর করার একাধিক উপায় রয়েছে:
- EIP-4844 ব্লবস (blobs)
- কলডাটা (Calldata)
- L1 মেকানিজমের সাথে অফচেইন
- কন্ট্রাক্ট "কোড"
- ইভেন্টস (Events)
- EVM স্টোরেজ
কোন পদ্ধতিটি ব্যবহার করতে হবে তা বেছে নেওয়া বেশ কয়েকটি মানদণ্ডের উপর ভিত্তি করে:
- তথ্যের উৎস। কলডাটার তথ্য সরাসরি ব্লকচেইন থেকে আসতে পারে না।
- তথ্যের গন্তব্য। কলডাটা শুধুমাত্র সেই লেনদেনে উপলব্ধ থাকে যা এটিকে অন্তর্ভুক্ত করে। ইভেন্টগুলো অনচেইন এ একেবারেই অ্যাক্সেসযোগ্য নয়।
- কতটা ঝামেলা গ্রহণযোগ্য? যেসব কম্পিউটার একটি পূর্ণাঙ্গ নোড চালায়, তারা ব্রাউজারে চলা অ্যাপ্লিকেশনের লাইট ক্লায়েন্টের চেয়ে বেশি প্রসেসিং করতে পারে।
- প্রতিটি নোড থেকে তথ্যে সহজে অ্যাক্সেস সহজতর করা কি প্রয়োজনীয়?
- নিরাপত্তার প্রয়োজনীয়তা।
নিরাপত্তার প্রয়োজনীয়তা
সাধারণত, তথ্য নিরাপত্তার তিনটি বৈশিষ্ট্য থাকে:
-
গোপনীয়তা (Confidentiality), অননুমোদিত সত্তাগুলোকে তথ্য পড়ার অনুমতি দেওয়া হয় না। এটি অনেক ক্ষেত্রে গুরুত্বপূর্ণ, তবে এখানে নয়। ব্লকচেইনে কোনো গোপনীয়তা নেই। ব্লকচেইন কাজ করে কারণ যে কেউ স্টেট ট্রানজিশন যাচাই করতে পারে, তাই সরাসরি গোপনীয়তা স্টোর করতে এগুলো ব্যবহার করা অসম্ভব। ব্লকচেইনে গোপনীয় তথ্য স্টোর করার উপায় রয়েছে, তবে সেগুলো অন্তত একটি কি (key) স্টোর করার জন্য কোনো অফচেইন উপাদানের ওপর নির্ভর করে।
-
অখণ্ডতা (Integrity), তথ্যটি সঠিক, এটি অননুমোদিত সত্তা দ্বারা বা অননুমোদিত উপায়ে পরিবর্তন করা যায় না (উদাহরণস্বরূপ, একটি
Transferইভেন্ট ছাড়া ERC-20 টোকেন (opens in a new tab) স্থানান্তর করা)। ব্লকচেইনে, প্রতিটি নোড প্রতিটি স্টেট পরিবর্তন যাচাই করে, যা অখণ্ডতা নিশ্চিত করে। -
প্রাপ্যতা (Availability), তথ্যটি যেকোনো অনুমোদিত সত্তার কাছে উপলব্ধ। ব্লকচেইনে, এটি সাধারণত প্রতিটি ফুল নোড (opens in a new tab)-এ তথ্য উপলব্ধ রাখার মাধ্যমে অর্জিত হয়।
এখানকার বিভিন্ন সমাধানের সবগুলোরই চমৎকার অখণ্ডতা রয়েছে, কারণ হ্যাসগুলো L1-এ পোস্ট করা হয়। তবে, তাদের প্রাপ্যতার গ্যারান্টি ভিন্ন ভিন্ন।
পূর্বশর্ত
আপনার ব্লকচেইন মৌলিক বিষয়গুলো সম্পর্কে ভালো ধারণা থাকা উচিত। এই পৃষ্ঠাটি ধরে নেয় যে পাঠক ব্লকস, লেনদেন এবং অন্যান্য প্রাসঙ্গিক বিষয়গুলোর সাথে পরিচিত।
EIP-4844 ব্লবস
ডেনকুন হার্ড ফর্ক (Dencun hardfork) (opens in a new tab) থেকে শুরু করে ইথিরিয়াম ব্লকচেইনে EIP-4844 (opens in a new tab) অন্তর্ভুক্ত করা হয়েছে, যা ইথিরিয়ামে সীমিত জীবনকালের (প্রাথমিকভাবে প্রায় 18 দিন (opens in a new tab)) ডাটা ব্লব যোগ করে। এই ব্লবগুলোর মূল্য এক্সিকিউশন গ্যাস থেকে আলাদাভাবে নির্ধারণ করা হয়, যদিও একটি অনুরূপ মেকানিজম ব্যবহার করা হয়। এগুলো অস্থায়ী ডাটা পোস্ট করার একটি সস্তা উপায়।
EIP-4844 ব্লবগুলোর প্রধান ব্যবহার হলো রোলআপগুলোর জন্য তাদের লেনদেন প্রকাশ করা। অপ্টিমেস্টিক রোলআপ-গুলোর তাদের ব্লকচেইনে লেনদেন প্রকাশ করা প্রয়োজন। রোলআপের সিকোয়েন্সার (opens in a new tab) যদি একটি ভুল স্টেট রুট পোস্ট করে, তবে ভ্যালিডেটরস (opens in a new tab)-দের ভুল সংশোধনের সুযোগ দিতে চ্যালেঞ্জ পিরিয়ড (opens in a new tab)-এর সময় সেই লেনদেনগুলো সবার জন্য উপলব্ধ থাকতে হবে।
তবে, একবার চ্যালেঞ্জ পিরিয়ড পার হয়ে গেলে এবং স্টেট রুট চূড়ান্ত হয়ে গেলে, এই লেনদেনগুলো জানার অবশিষ্ট উদ্দেশ্য হলো চেইনের বর্তমান স্টেট প্রতিলিপি করা। এই স্টেটটি চেইন নোডগুলো থেকেও পাওয়া যায়, যার জন্য অনেক কম প্রসেসিং প্রয়োজন। তাই লেনদেনের তথ্য এখনও কিছু জায়গায় সংরক্ষণ করা উচিত, যেমন ব্লক এক্সপ্লোরার, তবে ইথিরিয়াম যে স্তরের সেন্সরশিপ প্রতিরোধের সুবিধা দেয় তার জন্য অর্থ প্রদানের কোনো প্রয়োজন নেই।
জিরো-নলেজ রোলআপ-গুলোও তাদের লেনদেনের ডাটা পোস্ট করে যাতে অন্যান্য নোডগুলো বিদ্যমান স্টেট প্রতিলিপি করতে পারে এবং ভ্যালিডিটি প্রুফ যাচাই করতে পারে, তবে এটিও একটি স্বল্পমেয়াদী প্রয়োজনীয়তা।
লেখার সময় EIP-4844-এ পোস্ট করার খরচ প্রতি বাইটে এক ওয়েই (10-18 ETH), যা যেকোনো লেনদেনের 21,000 এক্সিকিউশন গ্যাস খরচের তুলনায় নগণ্য, যার মধ্যে ব্লব পোস্ট করা লেনদেনও অন্তর্ভুক্ত (opens in a new tab)। আপনি blobscan.com (opens in a new tab)-এ বর্তমান EIP-4844 মূল্য দেখতে পারেন।
এখানে কিছু বিখ্যাত রোলআপ দ্বারা পোস্ট করা ব্লবগুলো দেখার এডড্রেস দেওয়া হলো।
কলডাটা
কলডাটা বলতে লেনদেনের অংশ হিসেবে পাঠানো বাইটগুলোকে বোঝায়। এটি ব্লকচেইনের স্থায়ী রেকর্ডের অংশ হিসেবে সেই ব্লকে সংরক্ষিত থাকে যা ওই লেনদেনটিকে অন্তর্ভুক্ত করে।
ব্লকচেইনে স্থায়ীভাবে ডাটা রাখার এটি সবচেয়ে সস্তা পদ্ধতি। প্রতি বাইটের খরচ হয় 4 এক্সিকিউশন গ্যাস (যদি বাইটটি শূন্য হয়) অথবা 16 গ্যাস (অন্য কোনো মান হলে)। যদি ডাটা সংকুচিত (compressed) করা হয়, যা একটি আদর্শ অনুশীলন, তবে প্রতিটি বাইটের মান সমানভাবে সম্ভাব্য, তাই গড় খরচ প্রতি বাইটে প্রায় 15.95 গ্যাস।
লেখার সময়, দামগুলো হলো 12 gwei/গ্যাস এবং 2300 $/ETH, যার মানে খরচ প্রতি কিলোবাইটে প্রায় 45 সেন্ট। যেহেতু EIP-4844 এর আগে এটি সবচেয়ে সস্তা পদ্ধতি ছিল, তাই রোলআপগুলো লেনদেনের তথ্য স্টোর করতে এই পদ্ধতিটি ব্যবহার করত, যা ফল্ট চ্যালেঞ্জ (opens in a new tab)-এর জন্য উপলব্ধ থাকা প্রয়োজন, তবে সরাসরি অনচেইন এ অ্যাক্সেসযোগ্য হওয়ার প্রয়োজন নেই।
এখানে কিছু বিখ্যাত রোলআপ দ্বারা পোস্ট করা লেনদেনগুলো দেখার এডড্রেস দেওয়া হলো।
L1 মেকানিজমের সাথে অফচেইন
আপনার নিরাপত্তা ট্রেডঅফের ওপর নির্ভর করে, তথ্য অন্য কোথাও রাখা এবং প্রয়োজনের সময় ডাটা উপলব্ধ থাকে তা নিশ্চিত করে এমন একটি মেকানিজম ব্যবহার করা গ্রহণযোগ্য হতে পারে। এটি কাজ করার জন্য দুটি প্রয়োজনীয়তা রয়েছে:
-
ব্লকচেইনে ডাটার একটি হ্যাস (opens in a new tab) পোস্ট করুন, যাকে ইনপুট কমিটমেন্ট (input commitment) বলা হয়। এটি একটি একক 32-বাইট শব্দ হতে পারে, তাই এটি ব্যয়বহুল নয়। যতক্ষণ ইনপুট কমিটমেন্ট উপলব্ধ থাকে, অখণ্ডতা নিশ্চিত করা হয় কারণ একই মানের হ্যাস তৈরি করবে এমন অন্য কোনো ডাটা খুঁজে পাওয়া সম্ভব নয়। তাই যদি ভুল ডাটা প্রদান করা হয়, তবে তা শনাক্ত করা যেতে পারে।
-
এমন একটি মেকানিজম রাখুন যা প্রাপ্যতা নিশ্চিত করে। উদাহরণস্বরূপ, Redstone (opens in a new tab)-এ যেকোনো নোড একটি প্রাপ্যতা চ্যালেঞ্জ জমা দিতে পারে। যদি সিকোয়েন্সার সময়সীমার মধ্যে অনচেইন এ সাড়া না দেয়, তবে ইনপুট কমিটমেন্ট বাতিল করা হয়, তাই তথ্যটি কখনোই পোস্ট করা হয়নি বলে ধরে নেওয়া হয়।
এটি একটি অপ্টিমেস্টিক রোলআপ এর জন্য গ্রহণযোগ্য কারণ আমরা ইতিমধ্যেই স্টেট রুটের জন্য অন্তত একজন সৎ যাচাইকারীর ওপর নির্ভর করছি। এমন একজন সৎ যাচাইকারী ব্লক প্রসেস করার জন্য তার কাছে ডাটা আছে কিনা তাও নিশ্চিত করবে এবং যদি তথ্য অফচেইন এ উপলব্ধ না থাকে তবে একটি প্রাপ্যতা চ্যালেঞ্জ জারি করবে। এই ধরনের অপ্টিমেস্টিক রোলআপ কে প্লাজমা (plasma) বলা হয়।
কন্ট্রাক্ট কোড
যে তথ্য শুধুমাত্র একবার লিখতে হয়, কখনোই ওভাররাইট করা হয় না এবং অনচেইন এ উপলব্ধ থাকা প্রয়োজন, তা কন্ট্রাক্ট কোড হিসেবে স্টোর করা যেতে পারে। এর মানে হলো আমরা ডাটা দিয়ে একটি "স্মার্ট কন্ট্রাক্ট" তৈরি করি এবং তারপর তথ্য পড়তে EXTCODECOPY (opens in a new tab) ব্যবহার করি। এর সুবিধা হলো কোড কপি করা তুলনামূলকভাবে সস্তা।
মেমরি সম্প্রসারণের খরচ ছাড়াও, একটি কন্ট্রাক্টে প্রথম অ্যাক্সেসের জন্য (যখন এটি "কোল্ড" থাকে) EXTCODECOPY-এর খরচ 2600 গ্যাস এবং একই কন্ট্রাক্ট থেকে পরবর্তী কপিগুলোর জন্য 100 গ্যাস এবং প্রতি 32 বাইট শব্দের জন্য 3 গ্যাস খরচ হয়। কলডাটার তুলনায়, যার খরচ প্রতি বাইটে 15.95, এটি প্রায় 200 বাইট থেকে শুরু করে সস্তা। মেমরি সম্প্রসারণ খরচের সূত্র (opens in a new tab)-এর ওপর ভিত্তি করে, যতক্ষণ আপনার 4MB-এর বেশি মেমরির প্রয়োজন না হয়, মেমরি সম্প্রসারণের খরচ কলডাটা যোগ করার খরচের চেয়ে কম।
অবশ্যই, এটি শুধুমাত্র ডাটা পড়ার খরচ। কন্ট্রাক্ট তৈরি করতে প্রায় 32,000 গ্যাস + 200 গ্যাস/বাইট খরচ হয়। এই পদ্ধতিটি তখনই লাভজনক যখন একই তথ্য বিভিন্ন লেনদেনে অনেকবার পড়ার প্রয়োজন হয়।
কন্ট্রাক্ট কোড অর্থহীন হতে পারে, যতক্ষণ না এটি 0xEF দিয়ে শুরু হয়। 0xEF দিয়ে শুরু হওয়া কন্ট্রাক্টগুলোকে ইথিরিয়াম অবজেক্ট ফরম্যাট (ethereum object format) (opens in a new tab) হিসেবে ব্যাখ্যা করা হয়, যার প্রয়োজনীয়তা অনেক বেশি কঠোর।
ইভেন্টস
ইভেন্টস (opens in a new tab) স্মার্ট কন্ট্রাক্ট দ্বারা নির্গত হয় এবং অফচেইন সফটওয়্যার দ্বারা পড়া হয়। এদের সুবিধা হলো অফচেইন কোড ইভেন্টগুলোর জন্য অপেক্ষা করতে পারে। এর খরচ হলো গ্যাস (opens in a new tab), 375 এবং ডাটার প্রতি বাইটের জন্য 8 গ্যাস। 12 gwei/গ্যাস এবং 2300 $/ETH-এ, এটি এক সেন্ট এবং প্রতি কিলোবাইটে 22 সেন্টে রূপান্তরিত হয়।
স্টোরেজ
স্মার্ট কন্ট্রাক্টগুলোর স্থায়ী স্টোরেজ (persistent storage) (opens in a new tab)-এ অ্যাক্সেস রয়েছে। তবে, এটি খুব ব্যয়বহুল। একটি পূর্বে খালি থাকা স্টোরেজ স্লটে একটি 32 বাইট শব্দ লিখতে 22,100 গ্যাস খরচ হতে পারে (opens in a new tab)। 12 gwei/গ্যাস এবং 2300 $/ETH-এ, এটি প্রতি রাইট অপারেশনে প্রায় 61 সেন্ট বা প্রতি কিলোবাইটে $19.5।
এটি ইথিরিয়ামে স্টোরেজের সবচেয়ে ব্যয়বহুল রূপ।
সারসংক্ষেপ
এই টেবিলটি বিভিন্ন বিকল্প, তাদের সুবিধা এবং অসুবিধাগুলোর সারসংক্ষেপ প্রদান করে।
| স্টোরেজের ধরন | ডাটার উৎস | প্রাপ্যতার গ্যারান্টি | অনচেইন প্রাপ্যতা | অতিরিক্ত সীমাবদ্ধতা |
|---|---|---|---|---|
| EIP-4844 ব্লবস | অফচেইন | ~18 দিনের (opens in a new tab) জন্য ইথিরিয়াম গ্যারান্টি | শুধুমাত্র হ্যাস উপলব্ধ | |
| কলডাটা | অফচেইন | চিরকালের জন্য ইথিরিয়াম গ্যারান্টি (ব্লকচেইনের অংশ) | শুধুমাত্র যদি একটি কন্ট্রাক্টে লেখা হয় এবং সেই লেনদেনে উপলব্ধ থাকে | |
| L1 মেকানিজমের সাথে অফচেইন | অফচেইন | চ্যালেঞ্জ পিরিয়ডের সময় "একজন সৎ যাচাইকারী" গ্যারান্টি | শুধুমাত্র হ্যাস | চ্যালেঞ্জ মেকানিজম দ্বারা গ্যারান্টিযুক্ত, শুধুমাত্র চ্যালেঞ্জ পিরিয়ডের সময় |
| কন্ট্রাক্ট কোড | অনচেইন বা অফচেইন | চিরকালের জন্য ইথিরিয়াম গ্যারান্টি (ব্লকচেইনের অংশ) | হ্যাঁ | একটি "র্যান্ডম" এডড্রেস এ লেখা হয়, 0xEF দিয়ে শুরু হতে পারে না |
| ইভেন্টস | অনচেইন | চিরকালের জন্য ইথিরিয়াম গ্যারান্টি (ব্লকচেইনের অংশ) | না | |
| স্টোরেজ | অনচেইন | চিরকালের জন্য ইথিরিয়াম গ্যারান্টি (ব্লকচেইনের অংশ এবং ওভাররাইট না হওয়া পর্যন্ত বর্তমান স্টেট) | হ্যাঁ |