ভূমিকা
Stellar Trade Contracts হলো Stellar Trade-এর জন্য একটি Soroban কনট্র্যাক্ট ওয়ার্কস্পেস। Stellar Trade হলো Stellar-এর ওপর নির্মিত একটি ওপেন-সোর্স প্রেডিকশন-মার্কেট প্রোটোটাইপ। কনট্র্যাক্টগুলো নিয়ন্ত্রণ করে কীভাবে XLM মার্কেট পুলে প্রবেশ করে, অংশগ্রহণকারীরা কীভাবে পজিশন কমায় এবং নিষ্পত্তি বা বাতিল হওয়া মার্কেট কীভাবে পেআউট ও রিফান্ড বিতরণ করে।
অ্যাপ্লিকেশনের পেছনের কনট্র্যাক্ট তৈরি, পরীক্ষা, পর্যালোচনা বা ডিপ্লয় করতে চান এমন ডেভেলপারদের জন্য রিপোজিটরিটি তৈরি করা হয়েছে। এতে মার্কেট কনট্র্যাক্টের পাশাপাশি সহায়ক টোকেন, রেফারেল, লিডারবোর্ড এবং ইন্টিগ্রেশন-টেস্ট ক্রেট রয়েছে।
ওয়ার্কস্পেসটি বুঝে নিন
রিপোজিটরিটি পাঁচটি প্রধান ক্রেটে সংগঠিত, প্রতিটির নির্দিষ্ট দায়িত্ব রয়েছে:
prediction_market: মার্কেট তৈরি করে, পজিশন গ্রহণ করে, পজিশন কমায়, রিজলভার অ্যাকশন পরিচালনা করে, আনুপাতিক ক্লেম হিসাব করে, বাতিলের রিফান্ড প্রক্রিয়া করে, ফি হিসাব রাখে এবং বিরোধ ও গভর্ন্যান্স সমর্থন করে।stellar_trade_token: অ্যাডমিনিস্ট্রেটর নিয়ন্ত্রণ, অনুমোদিত মিন্টার, পজ নিয়ন্ত্রণ এবং ঐচ্ছিক সাপ্লাই সীমাসহ রিওয়ার্ড টোকেন সরবরাহ করে। নতুন ডিপ্লয়মেন্টে নামStellar Tradeএবং প্রতীকSTRDব্যবহার করা হয়।referral_registry: রেফারেল নিবন্ধন করে, রেফারেল-চেইনের গভীরতা সীমিত করে এবং রেফারেল ফি বিতরণ করে।leaderboard: অংশগ্রহণকারীদের পয়েন্ট ও জয়/পরাজয়ের রেকর্ড ট্র্যাক করে, স্কোরের ক্ষয় প্রয়োগ করে এবং অনুমোদিত রিওয়ার্ড মিন্টিং সমর্থন করে।cross_contract_invariants: মার্কেট, রেফারেল, লিডারবোর্ড ও টোকেন কনট্র্যাক্টজুড়ে হিসাব এবং আচরণ পরীক্ষা করে।
Rust ওয়ার্কস্পেস সেট আপ করুন
প্রকল্পটি rust-toolchain.toml-এর মাধ্যমে Rust 1.91.0 এবং wasm32v1-none টার্গেট নির্দিষ্ট করে। রিপোজিটরির মূল ডিরেক্টরি থেকে চেক চালানোর আগে রিপোজিটরিতে নির্দিষ্ট টুলচেইন ও টার্গেট ইনস্টল করুন।
পরিবেশ প্রস্তুত হলে সম্পূর্ণ ওয়ার্কস্পেস টেস্ট স্যুট চালান:
cargo test --workspace --all-featuresফরম্যাট চেকগুলো নিশ্চিত করে যে সোর্স প্রকল্পের ফরম্যাটিং নিয়ম অনুসরণ করছে:
cargo fmt --all -- --checkকোডের মান ও সঠিকতার সমস্যা ধরতে সতর্কতাকে ত্রুটি হিসেবে গণ্য করে Clippy চালান:
cargo clippy --workspace --all-features -- -D warningsরিলিজ প্রোফাইল ব্যবহার করে WebAssembly-এর জন্য prediction-market কনট্র্যাক্ট তৈরি করুন:
cargo build --release --target wasm32v1-none -p prediction_marketএই কমান্ডগুলো রিপোজিটরির GitHub Actions ওয়ার্কফ্লোতে ব্যবহৃত চেকগুলোর সঙ্গে সামঞ্জস্যপূর্ণ। ওয়ার্কফ্লোটি WASM আর্টিফ্যাক্টও তৈরি করে এবং ডিফল্ট ব্রাঞ্চে পরিবর্তন ও পুল রিকোয়েস্টের জন্য ক্রস-কনট্র্যাক্ট ইনভেরিয়েন্ট পরীক্ষা চালায়।
মার্কেটের জীবনচক্র অনুসরণ করুন
১. একটি মার্কেট তৈরি করুন
একজন অনুমোদিত ক্রিয়েটর মার্কেটের প্রশ্ন, বিভাগ এবং ক্লোজ টাইম প্রকাশ করেন। মার্কেট তৈরি অনুমতিনির্ভর, তাই কলারকে কনট্র্যাক্টে কনফিগার করা অনুমোদন নিয়ম পূরণ করতে হবে।
২. একটি পজিশন নিন
একজন অংশগ্রহণকারী YES বা NO—যেকোনো এক পাশে XLM স্টেক করতে place_bet কল করেন। কনট্র্যাক্ট কনফিগার করা ফি প্রয়োগ করে এবং ফলাফলস্বরূপ পজিশনটি অংশগ্রহণকারীর নির্বাচিত পাশে জমা করে।
পজিশন কমানোর ব্যবস্থা পিয়ার-টু-পিয়ার বিক্রি, অর্ডার বুক বা শর্ট পজিশন নয়। এটি অংশগ্রহণকারীর বিদ্যমান রেকর্ডকৃত স্টেকের ওপর পরিচালিত একটি অপারেশন।
৩. বন্ধ হওয়ার আগে একটি পজিশন কমান
মার্কেট বন্ধ হওয়ার আগে একজন অংশগ্রহণকারী বিদ্যমান স্টেক কমাতে reduce_position কল করতে পারেন। কনট্র্যাক্ট অংশগ্রহণকারীর রেকর্ডকৃত পাশ ব্যবহার করে এবং কমানো স্টেক ও প্রযোজ্য ফি ধরে রাখার নিয়ম থেকে ফেরতযোগ্য অর্থ হিসাব করে।
কনট্র্যাক্ট অংশগ্রহণকারীর বিদ্যমান পজিশন থেকে পাশ নির্বাচন করে। তাই কলারদের এই অপারেশনকে পাশ পরিবর্তন বা অন্য অংশগ্রহণকারীর সঙ্গে ট্রেড হিসেবে বিবেচনা করা উচিত নয়।
৪. মার্কেটের নিষ্পত্তি করুন
মার্কেট বন্ধ হওয়ার পর একজন অনুমোদিত রিজলভার ফলাফল জমা দেন। এরপর মার্কেট কনট্র্যাক্ট বিজয়ী পজিশনগুলোর জন্য আনুপাতিক পেআউট হিসাব করে।
নিষ্পত্তি অনুমতিনির্ভর। এই ওয়ার্কস্পেস কোনো স্বয়ংক্রিয় ওরাকল সরবরাহ করে না। কোনো অনুমোদিত রিজলভার সেই তথ্য ব্যবহার করে ফলাফল জমা না দিলে বাহ্যিক মূল্য বা নেটওয়ার্ক ডেটা দিয়ে মার্কেটের নিষ্পত্তি করা যাবে না।
৫. জয় দাবি করুন বা বাতিলের রিফান্ড পান
মার্কেটের নিষ্পত্তির পর অংশগ্রহণকারীরা কনট্র্যাক্টের মাধ্যমে আনুপাতিক পেআউট দাবি করেন। বাতিল হওয়া মার্কেট স্বাভাবিক বিজয়ী-পজিশনের পেআউট প্রবাহের পরিবর্তে আলাদা রিফান্ড পথ অনুসরণ করে।
রিজলভার নির্বাচন, নিষ্পত্তির মানদণ্ড, প্রমাণ এবং বিরোধ নিষ্পত্তি গুরুত্বপূর্ণ আস্থার পূর্বধারণা। কোনো ডিপ্লয় করা মার্কেটের ওপর নির্ভর করার আগে এসব প্রক্রিয়া পর্যালোচনা করুন।
হিসাব ও নিরাপত্তার বৈশিষ্ট্য পর্যালোচনা করুন
কনট্র্যাক্টের আচরণ পরিবর্তনের আগে ইনভেরিয়েন্ট ম্যাট্রিক্স পড়ুন। এটি গুরুত্বপূর্ণ হিসাবের নিয়মগুলোর সঙ্গে সেগুলো সুরক্ষিত রাখা পরীক্ষাগুলোকে সংযুক্ত করে।
ম্যাট্রিক্সে যেসব বিষয় রয়েছে:
- ফি সংরক্ষণ এবং মার্কেট-স্তরের ফি বিচ্ছিন্নতা।
- আনুপাতিক পেআউটের সীমা।
- বাতিলের আচরণ।
- রেফারেল হিসাব।
- রিওয়ার্ড সাপ্লাই ট্র্যাকিং।
- স্টোরেজের সময়সীমা ব্যবস্থাপনা।
- জরুরি পজ পথ।
আপনি ফি, রিওয়ার্ড, পেআউটের সূত্র বা স্টোরেজের স্থায়িত্ব পরিবর্তন করলে একই সময়ে সংশ্লিষ্ট রিগ্রেশন ও ইনভেরিয়েন্ট টেস্টও আপডেট করুন। কোনো পরিবর্তন একাধিক কনট্র্যাক্টকে প্রভাবিত করলে cross_contract_invariants ক্রেটটি বিশেষভাবে কার্যকর।
ঐতিহাসিক ইস্যু রিপোর্ট সঠিকভাবে ব্যবহার করুন
issues/ ডিরেক্টরিতে ঐতিহাসিক নিরাপত্তা ও সঠিকতা-সংক্রান্ত রিপোর্ট রয়েছে। এগুলোর প্রেক্ষাপট বুঝতে issues/README.md পড়ুন।
এই প্রতিবেদনগুলো পূর্ববর্তী নকশাগত ঝুঁকি নথিবদ্ধ করে। এগুলোকে চুক্তিগুলো অডিট করা হয়েছে—এর প্রমাণ হিসেবে বা তালিকাভুক্ত প্রতিটি সমস্যা এখনও বিদ্যমান—এর নিশ্চয়তা হিসেবে বিবেচনা করা উচিত নয়। বর্তমান সোর্স কোড, পরীক্ষা এবং ইনভেরিয়েন্ট ম্যাট্রিক্সের পাশাপাশি এগুলোকে পর্যালোচনার উপকরণ হিসেবে ব্যবহার করুন.
ডিপ্লয়মেন্টের প্রস্তুতি নিন
টেস্টনেট ডিপ্লয়মেন্টগুলো তাদের ঐতিহাসিক চুক্তি আইডি এবং টোকেন মেটাডেটা ধরে রাখে। নতুন ডিপ্লয়মেন্ট নতুন ঠিকানা তৈরি করে এবং STRD ইনিশিয়ালাইজ করে; এটি বিদ্যমান হোল্ডার বা ব্যালেন্স মাইগ্রেট করে না.
ডিপ্লয় করার আগে নিচের সবকিছু নিশ্চিত করুন:
- টার্গেট নেটওয়ার্ক।
- চুক্তির আইডি।
- অ্যাডমিনিস্ট্রেটরের পরিচয়।
- ফি সেটিংস।
- রিজলভার কনফিগারেশন।
সিক্রেট কী, ওয়ালেট রিকভারি ফ্রেজ, .deploy.env, ডিপ্লয়মেন্ট আউটপুট বা স্থানীয় আইডেন্টিটি ফাইল কখনও রিপোজিটরিতে কমিট করবেন না.
স্থানীয় ফ্রন্টএন্ড ডেভেলপমেন্ট এবং অ্যাপ্লিকেশন-স্তরের ডিপ্লয়মেন্ট নির্দেশাবলির জন্য অ্যাপ্লিকেশন README দেখুন.
উন্নত ডেভেলপমেন্ট টিপস
ক্রস-কনট্র্যাক্ট আচরণ পরীক্ষা করুন
একটি ক্রেটে স্থানীয় বলে মনে হওয়া পরিবর্তন রেফারেল, রিওয়ার্ড, লিডারবোর্ড রেকর্ড বা টোকেন সরবরাহকে প্রভাবিত করতে পারে। শুধু একটি ক্রেটের ইউনিট টেস্টের ওপর নির্ভর না করে সম্পূর্ণ ওয়ার্কস্পেস স্যুট এবং ক্রস-কনট্র্যাক্ট ইনভেরিয়েন্ট টেস্ট চালান.
অনুমতি-সীমা স্পষ্ট রাখুন
মার্কেট তৈরি, রেজোলিউশন, টোকেন প্রশাসন, মিন্টিং এবং অন্যান্য সংবেদনশীল কার্যক্রম অনুমোদন নিয়ন্ত্রণ ব্যবহার করে। কোনো চুক্তি পর্যালোচনা বা সম্প্রসারণের সময় প্রতিটি অপারেশন সম্পাদনের অনুমতি কোন পরিচয়গুলোর আছে এবং পজ নিয়ন্ত্রণ জরুরি অবস্থার আচরণকে কীভাবে প্রভাবিত করে তা যাচাই করুন.
স্টোরেজের স্থায়িত্বের পরিবর্তন পর্যালোচনা করুন
স্টোরেজ TTL ব্যবস্থাপনা প্রকল্পের নিরাপত্তা মডেলের অংশ। স্টোরেজ অ্যাক্সেসের ধরন বা স্থায়িত্বে যেকোনো পরিবর্তন ইনভেরিয়েন্ট ম্যাট্রিক্সের সঙ্গে মিলিয়ে পরীক্ষা করা এবং রিগ্রেশন টেস্টের আওতায় আনা উচিত.
রিলিজ আর্টিফ্যাক্ট যাচাই করুন
পরিবর্তন প্রকাশ বা ডিপ্লয় করার আগে ফরম্যাটিং, Clippy, টেস্ট এবং রিলিজ WASM বিল্ড চালান। পরিষ্কার স্থানীয় বিল্ডকে ডেভেলপমেন্টের পূর্বশর্ত হিসেবে বিবেচনা করুন, কনফিগারেশন ও ডিপ্লয়মেন্ট পরিচয় পর্যালোচনার বিকল্প হিসেবে নয়.
উপসংহার
Stellar Trade Contracts পূর্বাভাসমূলক মার্কেট তৈরি, YES ও NO পজিশন রেকর্ড, স্টেক কমানো, ফলাফল নির্ধারণ, আনুপাতিক দাবি বিতরণ এবং বাতিল হওয়া মার্কেটের অর্থ ফেরতের জন্য Soroban লজিক সরবরাহ করে। এর সহায়ক ক্রেটগুলো রিওয়ার্ড-টোকেন, রেফারেল, লিডারবোর্ড এবং ইন্টিগ্রেশন কার্যকারিতা যোগ করে.
রিপোজিটরির সঙ্গে নিরাপদে কাজ করতে পিন করা Rust পরিবেশ দিয়ে শুরু করুন, সব ওয়ার্কস্পেস চেক চালান, মার্কেটের লাইফসাইকেল অধ্যয়ন করুন এবং হিসাব বা স্টোরেজের আচরণ পরিবর্তনের আগে ইনভেরিয়েন্ট ম্যাট্রিক্স পর্যালোচনা করুন। ডিপ্লয়মেন্টের সময় প্রতিটি অনুমতি ও নেটওয়ার্ক সেটিং যাচাই করুন এবং সব সিক্রেট ভার্সন কন্ট্রোলের বাইরে রাখুন.
