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