আরবিট্রামের সাম্প্রতিক আপডেটে স্টাইলাস ভিএম আপগ্রেডের বৈশিষ্ট্য রয়েছে, যা বেশ কিছু বর্ধনের গর্ব করে:
এই উন্নতিগুলি WASM-কে একীভূত করা থেকে উদ্ভূত হয়, যা ক্লাউড-নেটিভ পরিবেশের মধ্যে তার অসংখ্য সুবিধার জন্য বিখ্যাত। WASM এর ভূমিকা সম্পর্কে আরও বিশদ পরবর্তী বিভাগে কভার করা হবে।
আরবিট্রাম তার চেইনে WASM-কে চালু করেছে, কিন্তু এটি করার জন্য এটি উদ্বোধনী প্ল্যাটফর্ম নয়। Polkadot আগে WASM স্মার্ট চুক্তি তৈরির অনুমতি দিয়েছিল। এটি এর জন্য দুটি ভাষা অফার করে: একটি এমবেডেড ডিএসএলের মতো একটি সমাবেশ স্ক্রিপ্ট এবং কালি নামক একটি মরিচা-অনুপ্রাণিত ভাষা!
একইভাবে, Cosmos তার স্মার্ট চুক্তি সম্পাদনের জন্য CosmWasm ব্যবহার করে। বিকাশকারীরা এখানে মরিচা ব্যবহার করে স্মার্ট চুক্তি তৈরি করতে পারে।
WASM-এর জন্য ব্লকচেইনের সম্বন্ধ অন্বেষণ করার আগে, আসুন WASM বেছে নেওয়ার জন্য Cosmos এবং Polkadot-এর যুক্তি পর্যালোচনা করি।
কসমস এই সুবিধার জন্য WASM-কে দাবি করে:
Polkadot এর WASM রানটাইম বৈশিষ্ট্যগুলি প্রদর্শন করে যেমন:
Polkadot, Cosmos, এবং Arbitrum বেশ কিছু WASM-প্ররোচিত সুবিধা শেয়ার করে। যাইহোক, আরবিট্রামের স্বতন্ত্র অফার রয়েছে যা আমরা পরে আলোচনা করব, কসমস স্পেসিফিকেশন সহ।
আসুন WASM কী এবং এর পিছনের অনুপ্রেরণাগুলি অনুসন্ধান করি৷
WebAssembly (WASM) হল একটি বাইনারি নির্দেশনা বিন্যাস। এটি বিশেষ করে ওয়েব ব্রাউজারগুলির মধ্যে নেটিভ অ্যাপ্লিকেশনগুলির সাথে তুলনীয় গতিতে কোড কার্যকর করতে সক্ষম করে। সি এবং রাস্টের মতো ভাষার জন্য একটি সংকলন লক্ষ্য হিসাবে, এটি গতি, দক্ষতা এবং নিরাপত্তার জন্য অপ্টিমাইজ করা হয়েছে। WASM উল্লেখযোগ্যভাবে ওয়েব কর্মক্ষমতা উন্নত করে এবং ওয়েব কার্যকারিতা প্রসারিত করে।
WASM ওয়েবের সাথে ঘনিষ্ঠভাবে আবদ্ধ, কারণ এটি ব্রাউজারগুলির মতো জাভাস্ক্রিপ্ট পরিবেশের মধ্যে কাজ করে। এই পরিবেশের মধ্যে, ডেভেলপারদের WASM API-এ সম্পূর্ণ অ্যাক্সেসের পাশাপাশি সম্পূর্ণ ওয়েব API সমর্থন রয়েছে। এই কন্ট্রোল ডেভেলপারদের ওয়েব ইন্টারঅ্যাকশনগুলিকে সূক্ষ্ম-টিউন করতে দেয়।
WASM এর ধারণাটি যেকোন জায়গায় চালানোর জন্য কোড লেখার আদর্শের চারপাশে ঘোরে।
2016 সালে, প্রোগ্রামগুলি প্রায়শই ডোমেন স্পেসিফিক ল্যাঙ্গুয়েজ (DSLs) এর মাধ্যমে নতুন বৈশিষ্ট্যগুলি চালু করে। একটি ডিএসএল তৈরি করা ভারসাম্য রক্ষণাবেক্ষণ, দক্ষতা এবং নিরাপত্তা জড়িত। শিল্প এই দিকগুলির সাথে আপস না করেই অসংখ্য সার্ভার জুড়ে ফাংশন স্থাপন করার একটি পদ্ধতির সন্ধান করেছে।
বিভিন্ন সমাধান যাচাই-বাছাই করা হয়েছে, যার প্রতিটির নিজস্ব চ্যালেঞ্জ রয়েছে:
WASM একটি সমাধান হিসাবে আবির্ভূত হয়। WASM কম্পাইলারগুলির বিকাশ শুরু হয়েছিল এবং 2018 সালের মধ্যে, বিভিন্ন আর্কিটেকচার এবং ডিভাইস জুড়ে সার্বজনীন কোড সামঞ্জস্যের ধারণাটি প্রসারিত হয়েছিল। জাভার বিপরীতে, লক্ষ্য নিরাপত্তার সাথে আপস করা ছিল না।
2019 সালে, কম্পোনেন্ট মডেলটি চালু করা হয়েছিল, ক্রস-ল্যাঙ্গুয়েজ ইন্টারঅপারেবিলিটির জন্য WASM মডিউলগুলিকে উন্নত করে। এই উদ্ভাবনটি সক্রিয় করেছে, উদাহরণস্বরূপ, বিভিন্ন ভাষায় প্রযোজ্য একটি সার্বজনীন HTTP লাইব্রেরি তৈরি করা, উদ্ভাবনীভাবে জটিল সমস্যাগুলিকে সমাধান করা।
WASM চিত্তাকর্ষক বৈশিষ্ট্যগুলির একটি অ্যারের গর্ব করে:
WASM সম্প্রদায় সক্রিয়ভাবে বিভিন্ন প্রোগ্রামিং ভাষা জুড়ে একীকরণ এবং কর্মক্ষমতা বৃদ্ধি করছে।
WASM এর সম্ভাব্যতা এবং ব্লকচেইনে এর ব্যবহার অন্বেষণ করা আমাদের আরবিট্রাম স্টাইলাসের সীমাবদ্ধতার দিকে নিয়ে যায়।
এখানে স্টাইলাস কীভাবে কাজ করে তার একটি সরলীকৃত ব্রেকডাউন রয়েছে:
ArbWasm
precompile-এর compileProgram
পদ্ধতির মাধ্যমে, বাইটকোড নিরাপত্তা, গ্যাস মিটারিং-এর জন্য ইন্সট্রুমেন্টেশনের মধ্য দিয়ে যায় এবং বৈধকারীর হার্ডওয়্যারের জন্য তৈরি দেশীয় কোডে কম্পাইল করা হয়। কর্মক্ষমতা এবং নিরাপত্তা বাড়ানোর জন্য এই পদক্ষেপটি অত্যন্ত গুরুত্বপূর্ণ।
আপাতদৃষ্টিতে অতিরিক্ত তৃতীয় ধাপটি আসলে অত্যাবশ্যক। WASM কোডকে নেটিভ মেশিন কোডে রূপান্তর করা কার্যকর করার গতিকে ত্বরান্বিত করে। অধিকন্তু, এই সংযোজিত সংকলন পর্বটি "কম্পাইল বোমা" প্রতিরোধ করতে সহায়তা করে।
একটি "কম্পাইল বোমা" হল দূষিত কোড যা কম্পাইলেশনের সময় সিস্টেম রিসোর্স নিঃশেষ করার জন্য ডিজাইন করা হয়েছে, সম্ভাব্যভাবে কম্পাইলারটি ক্র্যাশ বা স্টল করছে। এটি সফ্টওয়্যার ডেভেলপমেন্ট প্রক্রিয়াকে বাধাগ্রস্ত করার লক্ষ্যে পরিষেবা অস্বীকার করার আক্রমণ হিসাবে কাজ করে৷
স্টাইলাস C++ এবং মরিচা অন্তর্ভুক্ত করতে আরবিট্রামের বিকাশকারী সম্প্রদায়কে প্রশস্ত করেছে। যাইহোক, এটি এখনও আজকের সবচেয়ে প্রচলিত বিকাশকারী সম্প্রদায়গুলিকে অন্তর্ভুক্ত করতে পারেনি। এটি ব্রাউজারগুলিতে স্মার্ট চুক্তি সম্পাদনের সুবিধা দেয় তবে এখনও জাভাস্ক্রিপ্ট এবং পাইথন সমর্থন করে না।
পাইথন এবং জাভাস্ক্রিপ্টকে WASM-এ ব্রিজ করার জন্য প্রাথমিক পর্যায়ে প্রকল্প রয়েছে। কিন্তু, আবর্জনা সংগ্রহ এবং কর্মক্ষমতা সংক্রান্ত উদ্বেগের কারণে এগুলি ব্যাপকভাবে গ্রহণের জন্য প্রস্তুত নয়।
স্টাইলাস বর্তমানে তার SDK-এর মাধ্যমে C/C++ এবং Rust সমর্থন করে। এই SDKগুলি সংশ্লিষ্ট ভাষার সরঞ্জামগুলির সাথে সামঞ্জস্যপূর্ণ৷ তারা স্থানীয় ক্রিপ্টোগ্রাফির মতো তৃতীয় পক্ষের লাইব্রেরিগুলির একীকরণের অনুমতি দেয়। প্রধান সীমাবদ্ধতা এই লাইব্রেরিগুলির সাথে যুক্ত গ্যাস খরচ।
মরিচা SDK তার প্রাথমিক পর্যায়ে রয়েছে, কিছু কার্যকারিতার অভাব রয়েছে৷ C SDK ABI এর সাথে রপ্তানি ফাংশন সমর্থন করে না। অতিরিক্তভাবে, SDK কোনোটিই মডিফায়ারের ব্যবহার সমর্থন করে না।
এখন পর্যন্ত, স্টাইলাসের স্থানীয় পরীক্ষার পরিবেশ নেই। ডেভেলপারদের SDK-এর মধ্যে পরীক্ষা করার জন্য উৎসাহিত করা হয়। স্টাইলাসে স্মার্ট চুক্তি চালানোর একমাত্র বিকল্প হল টেস্টনেট। তবে, টেস্টনেট এখনও স্মার্ট চুক্তি যাচাইকরণ বাস্তবায়ন করেনি।
বিভিন্ন ERC টোকেন এবং প্ল্যাটফর্ম যেমন Uniswap V2 থেকে Stylus পোর্ট করার কাজ চলছে।
একটি ডোমেন-নির্দিষ্ট ভাষা (DSL), একটি এমবেডেড DSL (eDSL), বা একটি সাধারণ প্রোগ্রামিং ভাষার মধ্যে নির্বাচন করা চ্যালেঞ্জিং। উচ্চ-স্তরের বিমূর্ততা দ্বারা প্রদত্ত ব্যবহারের সহজতার বিরুদ্ধে নিয়ন্ত্রণের জন্য বিকাশকারীদের অবশ্যই "ধাতুর কাছাকাছি" কাজ করার সুবিধাগুলিকে ওজন করতে হবে, যা নমনীয়তা সীমিত করতে পারে।
একটি নতুন ডিএসএল তৈরি করতে এর টুলচেইন এবং ইকোসিস্টেম বিকাশের জন্য সময় প্রয়োজন। একটি eDSL, একটি সাধারণ প্রোগ্রামিং ভাষার একটি উপসেট হিসাবে, একই শব্দার্থবিদ্যা এবং সিনট্যাক্স বজায় রাখে। এটি বিকাশকারীদের বিদ্যমান ভাষা এবং সরঞ্জামগুলি ব্যবহার করার অনুমতি দেয়, যা শেখার প্রক্রিয়াটিকে সহজ করতে পারে। একটি eDSL সাধারণ-উদ্দেশ্য কোডের সাথে আরও ভাল আন্তঃঅপারেবিলিটি অফার করে। উদাহরণস্বরূপ, জাভাস্ক্রিপ্ট বা পাইথনের জন্য একটি ইডিএসএল সবচেয়ে বড় ডেভেলপার সম্প্রদায়ের সাথে জড়িত হওয়ার জন্য কৌশলগত হবে।
সাধারণ প্রোগ্রামিং ভাষাগুলির বিকাশের জন্য একটি SDK ব্যবহার প্রয়োজন। এটি টুলিংয়ের স্তরগুলি যোগ করে, শব্দচয়িতা বাড়ায় এবং অভিব্যক্তি হ্রাস করে। এটি দীর্ঘ API কল এবং জটিল অবজেক্ট অপারেশনের ফলাফল হতে পারে।
সঠিক ভাষা নির্বাচন করা এবং একটি eDSL তৈরি করা একটি আদর্শ আপস হতে পারে। এটি জনপ্রিয় সম্প্রদায়গুলি থেকে বিকাশকারীদের আঁকতে পারে এবং ব্যবহারকারী-বান্ধব সরঞ্জামগুলি অফার করতে পারে। বর্তমান তথ্য দেখায় যে Ethereum সম্প্রদায় ক্রিপ্টো বিকাশকারীদের মধ্যে সবচেয়ে বড়। যাইহোক, পোলকাডট, কসমস এবং সোলানার মতো বাস্তুতন্ত্র, যা স্মার্ট চুক্তির জন্য মরিচা ব্যবহার করে, এছাড়াও উল্লেখযোগ্য সংখ্যক বিকাশকারীদের আকর্ষণ করছে এবং দ্রুত বৃদ্ধির সম্মুখীন হচ্ছে।
WASM এর কার্যকরী গতি উল্লেখযোগ্যভাবে বৃদ্ধি এবং বান্ডিলের আকার হ্রাস করার সম্ভাবনা রয়েছে। যদিও স্টাইলাস মেইননেটে স্থাপন করা হয়নি, অন্যান্য নেটওয়ার্কের বেঞ্চমার্ক একটি দরকারী রেফারেন্স হিসাবে কাজ করে।
এই বেঞ্চমার্কগুলি নির্দেশ করে যে মৃত্যুদন্ডের সময় 4 থেকে 8 বার কমানো যেতে পারে এবং সংকলিত আকার অর্ধেক হতে পারে।
স্টাইলাস চুক্তির আকারের উপর একটি সীমা আরোপ করে, যা প্রায় 128KB অসংকুচিত। এই সীমাবদ্ধতাটি সলিডিটি থেকে স্টাইলাসের মতো ভাষা থেকে খুব বড় স্মার্ট চুক্তি স্থানান্তর করাকে চ্যালেঞ্জিং করে তোলে। এই সীমাবদ্ধতা স্টাইলাস কোডবেসের মধ্যে স্পষ্ট:
// arbos/programs/programs.go const MaxWasmSize = 128 * 1024 // Maximum WASM size allowed const initialFreePages = 2 // Number of initial free pages const initialPageGas = 1000 // Gas cost for an initial page const initialPageRamp = 620674314 // Adjusts for a target size cost const initialPageLimit = 128 // Maximum number of pages allowed const initialInkPrice = 10000 // Ink price per EVM gas const initialCallScalar = 8 // Scalar for call cost
এটি লক্ষ্য করা গুরুত্বপূর্ণ যে WASM শুরু এবং বন্ধ করার জন্য কিছু ওভারহেড বহন করে। খুব হালকা অপারেশনের জন্য, ইভিএম WASM-এর চেয়ে বেশি সাশ্রয়ী হতে পারে।
EVM এবং WASM একই স্টোরেজ স্লট এবং স্টেট ট্রি ব্যবহার করে। স্টাইলাস WASM-এর মধ্যে EVM APIs প্রয়োগ করে EVM-এর সাথে আন্তঃকার্যযোগ্যতা অর্জন করে। এই ইন্টিগ্রেশনটি WASM-এ ব্যাপকভাবে গৃহীত হোস্ট I/O মোড ব্যবহার করে। নীচে WASM-এ সমর্থিত EVM API-গুলির সম্পূর্ণ তালিকা রয়েছে, যা ব্যাপক আন্তঃব্যবহারের সমর্থন নির্দেশ করে।
read_args write_result storage_load_bytes32 storage_store_bytes32 call_contract delegate_call_contract static_call_contract do_call create1 create2 do_create read_return_data return_data_size emit_log account_balance account_codehash evm_gas_left evm_ink_left block_basefee block_coinbase block_gas_limit block_number block_timestamp chainid contract_address msg_reentrant msg_sender msg_value native_keccak256 tx_gas_price tx_ink_price tx_prigin memoery_grow console_log_text console_log console_tee
কাস্টম precompiles একটি উদ্ভাবনী ধারণা. তাদের কম কার্যকরী খরচে অন-চেইন উন্নত ক্রিপ্টো আদিম একীভূত করার সম্ভাবনা রয়েছে। উদাহরণ স্বরূপ, অন-চেইন মেশিন লার্নিং-এর খরচ কমাতে টেনসর কম্পিউটেশনগুলি প্রি-কম্পাইল করা যেতে পারে। যাইহোক, বর্তমান কোডবেসে কাস্টম প্রি-কম্পাইল কার্যকারিতার কোন প্রমাণ নেই। যদিও ইভিএমের জন্য প্রি-কম্পাইল বিদ্যমান, সেগুলি অদলবদল করার জন্য ডিজাইন করা হয়নি।
সম্ভবত এই বৈশিষ্ট্যগুলি এখনও বিকশিত হচ্ছে, WASM এর ক্ষমতাগুলিকে কাজে লাগিয়ে৷ এটি ইভিএমকে WASM-লিখিত ফাংশন কল করতে সক্ষম করবে, যা পরে মেশিন কোডে কম্পাইল করা হয়।
CosmWasm-এর অভিনেতা মডেলের বিপরীতে, যা পুনঃপ্রবেশকে সমর্থন করে না, Stylus-এর Rust SDK একটি ঐচ্ছিক বৈশিষ্ট্য হিসাবে পুনঃপ্রবেশকে অন্তর্ভুক্ত করে। ডিফল্টরূপে, এই বৈশিষ্ট্যটি বন্ধ করা হয়। ডেভেলপারদের তাদের চুক্তিতে পুনঃপ্রবেশ সক্ষম করার বিকল্প আছে।
পুনরায় প্রবেশাধিকার সক্রিয় করা API-কে প্রভাবিত করে কারণ ডেভেলপারদের অবশ্যই নিশ্চিত করতে হবে যে তারা কলের সময় স্টোরেজ ক্যাশে সাফ করবে এবং অন্যান্য নিরাপত্তা ব্যবস্থা বিবেচনা করবে। পুনঃপ্রবেশকারী কলের সাথে সম্পর্কিত সম্ভাব্য দুর্বলতা রোধ করতে এই সতর্কতা অপরিহার্য।
WASM ক্লাউড-নেটিভ ডোমেনে জনপ্রিয়তা অর্জন করছে, অনেক ব্লকচেইন এটিকে স্মার্ট চুক্তি সম্পাদনের জন্য গ্রহণ করে। যদিও আর্বিট্রাম এই ইন্টিগ্রেশনে অগ্রগামী নয়, এর বাস্তবায়ন অত্যন্ত প্রভাবশালী হতে পারে। WASM ব্লকচেইন ল্যান্ডস্কেপ সম্পূর্ণভাবে ওভারহল বা ইভিএম প্রতিস্থাপন করার জন্য অবস্থান করছে না। যাইহোক, এটি উদীয়মান জেডকে-রোলআপগুলির বিরুদ্ধে আরবিট্রামের প্রান্তকে বাড়িয়ে তুলতে পারে। আরবিট্রামের শব্দ "EVM+" যথাযথভাবে এই পরিস্থিতি বর্ণনা করে। EVM স্মার্ট কন্ট্রাক্ট প্ল্যাটফর্মের ভিত্তি স্থাপন করে, এবং WASM আর্বিট্রামের জন্য একটি অতিরিক্ত কর্মক্ষমতা বৃদ্ধি করতে পারে।