আমার মধ্যে
Sui এর MoveVM আসলটি অনুসরণ করে
একটি প্রোটোকল যা খুব সহজ এবং অসংগঠিত, যদিও, উল্লেখযোগ্য আপস তৈরি করে। উদাহরণস্বরূপ, অনুমোদনের মতো সাধারণ সিস্টেম বৈশিষ্ট্যগুলির জন্য অ্যাপ্লিকেশন স্পেসে একটি জটিল বাস্তবায়নের প্রয়োজন হবে, স্ট্যান্ডার্ড ইন্টারফেসগুলি আরও খণ্ডিত হয়ে উঠতে পারে এবং কর্মক্ষমতা অপ্টিমাইজেশন আরও কঠিন হয়ে পড়ে।
অন্যদিকে, রেডিক্স ইঞ্জিন একটি মূল প্রযুক্তিগত লক্ষ্য হিসাবে নন-জেনারিক, সিস্টেম-ওয়াইড লজিক চালানোর জন্য ডিজাইন করা হয়েছে, কারণ এটি আমাদের নিম্নলিখিতগুলি করতে দেয়:
ভিটালিক সম্প্রতি এই ধারণাটিকে "শব্দ দিয়ে স্পর্শ করেছেন
পারফরম্যান্স/নিরাপত্তা/ব্যবহারযোগ্যতা (অর্থাৎ, এনশ্রাইনমেন্ট) বজায় রাখার সময় বিমূর্ততাকে সমর্থন করার এই ভারসাম্য (অর্থাৎ, ভবিষ্যত/বিভিন্ন ব্যবহারকারীর প্রয়োজন) আসলে একটি খুব পুরানো কম্পিউটার বিজ্ঞান সমস্যা। অপারেটিং সিস্টেমের নকশা বিশেষভাবে গত কয়েক দশক ধরে একই ধরনের সমস্যা সমাধানের চেষ্টা করছে: একটি দ্রুত, নিরাপদ, ব্যবহারযোগ্য সিস্টেম বজায় রেখে আমরা কীভাবে বিমূর্ত অ্যাপ্লিকেশনের একটি পরিসীমা সমর্থন করব?
এই প্রবন্ধে, আমি দেখব যে কীভাবে রেডিক্স ইঞ্জিন অপারেটিং সিস্টেম মডেল ব্যবহার করে এমন একটি কাঠামো তৈরি করে যা প্রোটোকল জটিলতা বা নমনীয়তা হারানোর লোড ছাড়াই ভিটালিক ভয় পায়।
চলুন শুরু করা যাক বর্তমান শিল্পের মান, ইথেরিয়াম ভার্চুয়াল মেশিন (“EVM”) দেখে।
ইভিএম যথেষ্ট মৌলিক যে এটি একটি ভার্চুয়াল মেশিন ("VM") হিসাবে নিম্নলিখিত অপকোডগুলির সাথে মডেল করা যেতে পারে:
EVM বাইটকোডে সংকলিত স্মার্ট চুক্তিগুলি তখন এই ধরনের VM-এর উপরে কার্যকর করা যেতে পারে।
এই মডেলে, যেকোনো ধরনের "এনশ্রাইনমেন্ট" এর জন্য ইভিএম বা ভিএম হার্ডওয়্যারে পরিবর্তন প্রয়োজন। উদাহরণস্বরূপ, BLS স্বাক্ষর সমর্থনের জন্য একটি নতুন প্রি-কম্পাইল যোগ করতে হবে। বাস্তবায়ন করছে
এই মডেলের সাধারণ সমস্যা হল যে অ্যাবস্ট্রাকশন/এনশ্রাইনমেন্ট ডিকোটমি খুব বেশি সফটওয়্যার/হার্ডওয়্যার ডিকোটমির সাথে মিলিত। অর্থাত্, প্রোটোকলের মধ্যে যেকোন যুক্তি সংযোজন করা এটিকে VM-এ এমবেড করতে বাধ্য করে। সিস্টেমের অংশ "এনশ্রাইন্ড সফ্টওয়্যার" বা সফ্টওয়্যার প্রকাশ করার কোন উপায় নেই।
অপারেটিং সিস্টেমগুলি "সিস্টেম সফ্টওয়্যার" ধারণার সাথে এই দ্বিধাবিভক্তির সমাধান করেছে। এর একটি ঘনিষ্ঠ কটাক্ষপাত করা যাক.
একটি অপারেটিং সিস্টেমের প্রধান লক্ষ্যগুলির মধ্যে একটি হল সফ্টওয়্যার/হার্ডওয়্যার ডিকোটমি - বা, আরও নির্দিষ্টভাবে, অ্যাপ্লিকেশন/হার্ডওয়্যার ডিকোটমি পরিচালনা করা। যেকোনো অপারেটিং সিস্টেমের মূল অংশ হল কার্নেল, সফ্টওয়্যার যা ব্যবহারকারীর স্থান অ্যাপ্লিকেশন এবং হার্ডওয়্যারে তাদের অ্যাক্সেস পরিচালনা করে। কার্নেল মডিউল এবং ড্রাইভারগুলি হল সিস্টেম সফ্টওয়্যারের অতিরিক্ত অংশ যা সমর্থিত হার্ডওয়্যারের সেটকে প্রসারিত করে বা কার্নেলের কার্যকারিতা প্রসারিত করে।
\একটি "এনশ্রাইনমেন্ট" দৃষ্টিকোণ থেকে, কার্নেল এবং এর মডিউলগুলি সিস্টেমের অন্তর্নিহিত অংশ তবে সফ্টওয়্যারের নমনীয়তা রয়েছে৷ কার্নেল মডিউল, ভার্চুয়াল মেশিন ("VMs"), এবং ব্যবহারকারী-স্পেস সিস্টেম প্রক্রিয়াগুলি আরও বেশি "নরম" কারণ এগুলি কার্নেল থেকেই বিমূর্ত।
এই মডেলে, অ্যাপ্লিকেশান এবং হার্ডওয়্যারের মধ্যে পরোক্ষ স্তরটি সফ্টওয়্যার/হার্ডওয়্যার ডিকোটমিকে বিমূর্ততা/এনশ্রাইনমেন্ট ডিকোটমি থেকে ডিকপল করার অনুমতি দেয়। "সিস্টেম সফ্টওয়্যার" হার্ডওয়্যারের অতিরিক্ত চাপ না দিয়ে এনশ্রাইনমেন্টের অনুমতি দেয়।
এই অপারেটিং সিস্টেম মডেলটিকে অনুপ্রেরণা হিসাবে ব্যবহার করে, রেডিক্স ইঞ্জিন একাধিক স্তর অন্তর্ভুক্ত করে, প্রতিটিতে একটি নির্দিষ্ট দায়িত্ব এবং বিমূর্ততা রয়েছে, যা সিস্টেম মডুলারিটি এবং প্লাগযোগ্যতার জন্য অনুমতি দেয়।
এই ধরনের একটি মডুলার ডিজাইন সিস্টেম লজিক প্রয়োগ করার অনুমতি দেয় এবং নিম্নলিখিতগুলিকেও অনুমতি দেয়:
আসুন এখন এই স্তরগুলির প্রতিটির উপর যান এবং তাদের দায়িত্বগুলি কী তা দেখুন।
অ্যাপ্লিকেশন স্তর উচ্চ-স্তরের যুক্তি সংজ্ঞায়িত করার জন্য দায়ী। বাইটকোড যা এই যুক্তিকে বর্ণনা করে, অন্যান্য স্ট্যাটিক তথ্য সহ, প্যাকেজ নামে একটি এক্সিকিউটেবল ফরম্যাটে বান্ডিল করা হয়। প্যাকেজগুলি তারপরে লেজারে সংরক্ষণ করা হয় এবং কার্যকর করার জন্য উপলব্ধ।
স্ক্রিপ্টো-তে লেখা অ্যাপ্লিকেশন, আমরা DeFi বিকাশের জন্য যে মরিচা-ভিত্তিক ভাষা তৈরি করেছি, এই স্তরে থাকে। স্ক্রিপ্টো প্রোগ্রামগুলি WASM প্রোগ্রামগুলিতে সংকলিত হয় ফাংশন এক্সপোর্টের একটি সেটের অ্যাক্সেস সহ যা প্রোগ্রামটিকে সিস্টেম/কার্নেল পরিষেবাগুলি অ্যাক্সেস করতে দেয়। এই
পরবর্তী স্তরে চলে যাওয়া, ভিএম স্তরটি অ্যাপ্লিকেশন স্তরের জন্য কম্পিউটিং পরিবেশ প্রদানের জন্য দায়ী। এর মধ্যে রয়েছে একটি টিউরিং-সম্পূর্ণ VM এবং সেইসাথে সিস্টেম স্তর অ্যাক্সেস করার জন্য ইন্টারফেস।
রেডিক্স ইঞ্জিন বর্তমানে দুটি ভিএম সমর্থন করে: একটি স্ক্রিপ্টো WASM ভিএম যা স্ক্রিপ্টো অ্যাপ্লিকেশনগুলি চালাতে ব্যবহৃত হয় এবং একটি নেটিভ ভিএম যা হোস্টের পরিবেশে সংকলিত নেটিভ প্যাকেজগুলি চালায়।
যদি আমরা বিশেষভাবে স্ক্রিপ্টো WASM VM এর দিকে তাকাই, তাহলে এটি দেখতে এরকম হবে:
এটি মূলত ইভিএম মডেলের মতো দেখতে হতে পারে, তবে দুটি গুরুত্বপূর্ণ পার্থক্য রয়েছে:
স্টোরেজ থেকে সরাসরি অ্যাক্সেস অপসারণ। প্রতিটি স্মার্ট কন্ট্রাক্ট শুধুমাত্র তার মালিকানাধীন স্টোরেজ অ্যাক্সেস করতে সক্ষম হওয়ার পরিবর্তে, যে কোনো স্টেট রিড/রাইট সিস্টেম কলের মাধ্যমে করা হয়। পরোক্ষের এই স্তরটি সিস্টেমে অনেক আকর্ষণীয় জিনিস প্রয়োগ করার অনুমতি দেয়, যেমন অ্যাপ্লিকেশান জুড়ে স্টেট শেয়ারিং, স্টেট ভার্চুয়ালাইজেশন, ইত্যাদি
সিস্টেম কলের সংযোজন । সিস্টেম কল হল এমন একটি প্রক্রিয়া যার মাধ্যমে অ্যাপ্লিকেশন স্তর সিস্টেম স্তরের পরিষেবাগুলি অ্যাক্সেস করতে পারে, যেমন অন্যান্য অ্যাপ্লিকেশনগুলিতে আহ্বান করা বা কোনও বস্তুতে ডেটা লেখা। এই সিস্টেম কলগুলি বাস্তব CPU-তে সফ্টওয়্যার বাধা নির্দেশের অনুরূপ (যেমন,
সিস্টেম লেয়ার সিস্টেম মডিউল বা প্লাগেবল সফ্টওয়্যারগুলির একটি সেট বজায় রাখার জন্য দায়ী যা সিস্টেমের কার্যকারিতা প্রসারিত করতে পারে। এগুলো লিনাক্সের মতই
প্রতিটি সিস্টেম কলে, সিস্টেম স্তর কার্নেল স্তরে নিয়ন্ত্রণ পাস করার আগে প্রতিটি সিস্টেম মডিউল কল করা হয়। কল করা হলে, প্রতিটি সিস্টেম মডিউল কিছু নির্দিষ্ট অবস্থা আপডেট করতে পারে (যেমন, ফি আপডেট করা খরচ) বা লেনদেন শেষ করতে আতঙ্কিত হতে পারে (যেমন, টাইপ চেকার ব্যর্থ হলে)।
এই প্যাটার্নটি সিস্টেমকে কার্যকারিতা যেমন অনুমোদন, রয়্যালটি, বা টাইপ চেকিং প্রয়োগ করার অনুমতি দেয় যখন অ্যাপ্লিকেশন এবং কার্নেল উভয় স্তর থেকে ডিকপল করা হয়।
কার্নেল স্তরটি রেডিক্স ইঞ্জিনের দুটি মূল কার্যকারিতার জন্য দায়ী: স্টোরেজ অ্যাক্সেস এবং অ্যাপ্লিকেশনগুলির মধ্যে যোগাযোগ। এটি ডিস্ক এবং নেটওয়ার্ক অ্যাক্সেসের জন্য ঐতিহ্যবাহী অপারেটিং সিস্টেমের দায়িত্বের সাথে কিছুটা মিল।
রেডিক্স ইঞ্জিনের জন্য, এর মধ্যে নিম্নলিখিত নিম্ন-স্তরের ব্যবস্থাপনা রয়েছে:
এই স্তরগুলি কীভাবে একটি DLT প্রোটোকলে এনশ্রাইনমেন্টের সাথে সম্পর্কিত? অপারেটিং সিস্টেমের কার্নেল স্তরের মতো, রেডিক্স ইঞ্জিনের এই মাঝারি স্তরগুলি সফ্টওয়্যার/হার্ডওয়্যার ডিকোটমি থেকে বিমূর্ততা/এনশ্রাইনমেন্ট ডিকোটমি ডিকপল করার জন্য প্রয়োজনীয় নির্দেশ প্রদান করে এবং "এনশ্রাইন্ড সফ্টওয়্যার" ধারণা তৈরি করে।
সিস্টেম-ওয়াইড লজিক প্রয়োগ করার ক্ষমতা বজায় রেখে সফ্টওয়্যারের নমনীয়তা এবং সুরক্ষা বৈশিষ্ট্যগুলি এনশরিনড সফ্টওয়্যার রয়েছে৷
চলুন এখন রেডিক্স নেটওয়ার্কে চলমান কয়েকটি এনশ্রাইনমেন্টের উদাহরণ দেখি এবং দেখুন কিভাবে সেগুলি বাস্তবায়িত হয়।
Radix DeFi/Web3 প্ল্যাটফর্মের মূল পার্থক্যকারী হল ধারণা যে একটি সম্পদ (যেমন, সম্পদ) একটি মৌলিক আদিম যা ব্যবসায়িক যুক্তি থেকে আলাদাভাবে বোঝা উচিত। এই ধারণাটি এনশারিন করা সমস্ত dApps, ওয়ালেট এবং টুলিংকে একটি সম্পদের ইন্টারফেস এবং আচরণ কেমন দেখায় সে সম্পর্কে একটি সাধারণ বোঝার অনুমতি দেয়, যা কম্পোজিবিলিটি অনেক সহজ করে তোলে।
যদিও সংস্থানগুলি সিস্টেমের সবচেয়ে অন্তর্নিহিত অংশগুলির মধ্যে একটি, এটির সংযোজন বাস্তবায়নের জন্য শুধুমাত্র দুটি মডুলার সফ্টওয়্যার প্রয়োজন:
একটি নেটিভ প্যাকেজ যা বালতি, ভল্ট এবং প্রুফের মতো রিসোর্স অবজেক্টের যুক্তি পরিচালনা করে
একটি সিস্টেম মডিউল যা এই বস্তুর জীবনকালের পরিবর্তনগুলিকে প্রয়োগ করে (যেমন সম্পদের চলনযোগ্যতা এবং জ্বলনযোগ্যতা)
সিস্টেম/কার্নেল থেকে বিমূর্ত হওয়ার সময় রেডিক্স ইঞ্জিন একটি মানসম্মত, চলমান সম্পদের গভীর ধারণা প্রকাশ করতে পারে তা একটি মডুলার সিস্টেম সফ্টওয়্যার কাঠামোর শক্তি দেখায়।
র্যাডিক্স ইঞ্জিন এই লজিককে ব্যবসায়িক লজিক থেকে ডিকপল করে এবং সিস্টেম ফিচার হিসেবে প্রয়োগ করে অনুমোদন এবং রয়্যালটি মানসম্মত করে। এটি ব্যবহারকারী এবং ডেভেলপারদের অন-লেজারে যেকোনো ফাংশন অ্যাক্সেস করার প্রয়োজনীয়তা বোঝার একটি অন্তর্নির্মিত সাধারণ উপায়ের অনুমতি দেয়।
সিস্টেম লজিক থেকে বিজনেস লজিক ডিকপলিং করার মডুলারিটি সুবিধাজনক ডেভেলপমেন্ট/ডিবাগিং বিকল্পের জন্যও অনুমতি দেয় যেমন স্বাভাবিক প্রমাণীকরণ চেক ছাড়াই একটি লেনদেনের পূর্বরূপ দেখার ক্ষমতা (কোথাও 10 মিলিয়ন USDC পাঠানোর ফলাফল অনুকরণ করতে চান? অনুমোদন অক্ষম থাকলে, আপনার পূর্বরূপ লেনদেন হতে পারে মিন্টিং করুন!)
প্রমাণীকরণ এবং রয়্যালটির জন্য চারটি মডুলার সফ্টওয়্যার প্রয়োজন:
প্রমাণীকরণ এবং রয়্যালটি নেটিভ প্যাকেজ যা অ্যাপ্লিকেশন স্তরকে যেকোন বস্তুর অনুমোদন/রয়্যালটি অ্যাক্সেস করতে দেয় (উদাহরণস্বরূপ, একটি পদ্ধতি অ্যাক্সেস করতে বা রয়্যালটি দাবি করার জন্য প্রমাণীকরণ নিয়ম পুনরুদ্ধার করা)।
কল করার এবং রয়্যালটি সংগ্রহ করার জন্য কলারের পর্যাপ্ত অনুমোদন আছে কিনা তা যাচাই করার জন্য একটি অবজেক্ট মেথড কলের আগে Auth এবং রয়্যালটি সিস্টেম মডিউলগুলি কল করা হয়।
ব্যবহারকারী এবং সিস্টেমের মধ্যে সঠিক ইন্টারফেস যেকোন সিস্টেম ব্যবহারযোগ্য হওয়ার জন্য সর্বোত্তম। ব্যবহারযোগ্য হওয়ার জন্য, ইন্টারফেসটিকে অবশ্যই ব্যবহারের সহজতা এবং শক্তি/নমনীয়তার মধ্যে সঠিক ভারসাম্য খুঁজে বের করতে হবে।
অপারেটিং সিস্টেমের জগতে, সবচেয়ে সাধারণ ইন্টারফেস হল টার্মিনাল, একটি ব্যবহারকারী স্থান প্রক্রিয়া যা ব্যবহারকারীকে বিভিন্ন সিস্টেম কল কল এবং রচনা করার জন্য একটি কমান্ড লাইন টুল দেয়।
ডিএলটি বিশ্বে, এই ইন্টারফেসটি লেনদেন। একটি লেনদেনের জন্য শিল্প মান হল একটি একক নিম্ন-স্তরের, জেনেরিক আহ্বান কল ব্যবহার করা। দুর্ভাগ্যবশত, এটি খুব সহজ যে এটি সিস্টেমের সাথে ইন্টারঅ্যাক্ট করার সময় আসলে কী করছে তা বোঝা কঠিন করে তোলে।
অন্যদিকে, রেডিক্স ইঞ্জিন, প্রথাগত ওএস প্যাটার্ন ব্যবহার করে এবং একটি একক লেনদেনে সিস্টেম কলগুলি কল এবং রচনা করতে একটি অ্যাপ্লিকেশন ভাষা (একটি টার্মিনাল স্ক্রিপ্টিং ভাষার মতো যেমন ব্যাশের অনুরূপ) অন্তর্ভুক্ত করে।
যেহেতু একটি লেনদেনের এন্ট্রি পয়েন্টটি অ্যাপ্লিকেশন স্তরে কাজ করে, ভাষা দোভাষী একটি লেনদেন প্রসেসর নেটিভ প্যাকেজ যোগ করে প্রয়োগ করা হয়।
BLS স্বাক্ষর একটি গুরুত্বপূর্ণ ক্রিপ্টো আদিম কারণ তারা থ্রেশহোল্ড স্বাক্ষরের সম্ভাবনার জন্য অনুমতি দেয়। দুর্ভাগ্যবশত, WASM-এ এই ধরনের লজিক চালানো দ্রুত সর্বোচ্চ খরচ ইউনিট ব্যবহার করে। সাম্প্রতিক "অ্যানিমোন" আপডেটে, আমরা BLS এটিকে স্থানীয়ভাবে কার্যকর করার মাধ্যমে সংযোজিত করেছি এবং WASM-এর তুলনায় কর্মক্ষমতায় 500x লাভ পেয়েছি।
যেহেতু BLS লজিক স্টেটলেস, এটি সহজেই Scrypto WASM VM-এ অতিরিক্ত প্রিকম্পাইল হিসেবে যোগ করা যেতে পারে।
কোন DLT প্রোটোকলের জন্য কোনটা enshrine করতে হবে এবং কোনটা enshrine করা উচিত নয় তা গুরুত্বপূর্ণ। দুর্ভাগ্যবশত, শিল্পের বিদ্যমান ভিএম মডেল প্রতিটি এনশ্রাইনমেন্ট সিদ্ধান্তকে উচ্চ-স্টেকের সিদ্ধান্তে পরিণত করে।
অনুপ্রেরণা হিসাবে অপারেটিং সিস্টেম মডেলের সাথে, রেডিক্স ইঞ্জিন "সফ্টওয়্যার" এবং "হার্ডওয়্যার" এর মধ্যে পরোক্ষের একটি স্তর যুক্ত করে এই সমস্যার সমাধান করে। এটি রেডিক্স ইঞ্জিনকে "এনশ্রাইনড সফ্টওয়্যার" এর ধারণা প্রকাশ করতে দেয় এবং প্রোটোকলের পক্ষে হাই-স্টেকের আপস সিদ্ধান্ত না নিয়ে নতুন এনশ্রাইন করা সিস্টেমগুলি যোগ করা, সংশোধন করা এবং প্রকাশ করা সহজ করে তোলে।
মূলত, অপারেটিং সিস্টেমটি একাধিক অ্যাপ্লিকেশনের জন্য ভাগ করা সংস্থানগুলি পরিচালনা করার জন্য ডিজাইন করা সফ্টওয়্যারের একটি ছোট অংশ বোঝানো হয়েছিল। একটি ভাল, দ্রুত, আরও সুরক্ষিত প্ল্যাটফর্মের জন্য ব্যবহারকারীর চাহিদা বেড়ে যাওয়ার সাথে সাথে এটি একটি বৃহত্তর এবং বৃহত্তর সফ্টওয়্যার স্যুটের সাথে আরও বেশি দায়িত্ব গ্রহণ করেছে।
DeFi আলাদা হবে না। একটি দ্রুততর, আরও নিরাপদ, এবং আরও ব্যবহারযোগ্য DeFi প্ল্যাটফর্মের চাহিদা বাড়লে, বর্ধিত এনশ্রাইনমেন্ট অনুসরণ করা হবে। রেডিক্স ইঞ্জিন এটিকে মাথায় রেখে ডিজাইন করা হয়েছে এবং ভবিষ্যতে এনশ্রাইনমেন্ট সম্প্রসারণের জন্য প্রয়োজনীয় মাপযোগ্য এবং সুরক্ষিত কাঠামো প্রদান করে।