Asosiy kontentga o‘tish
AI qo‘llanmalari

Stellar Trade Soroban kontraktlarini yaratish, sinash va tushunish

Stellar Trade’ning Soroban kontraktlari prediction market pozitsiyalari, to‘lovlar, qaytarimlar, referallar, mukofotlar va boshqaruvni qanday boshqarishini o‘rganing. Ushbu qo‘llanma ish maydoni tuzilmasi, mahalliy tekshiruv, bozor hayotiy sikli, xavfsizlik tekshiruvlari va deploy qilishdagi ehtiyot choralarini qamrab oladi.

Stellar Trade Soroban kontraktlarini yaratish va sinash

Kirish

Stellar Trade Contracts — Stellar Trade uchun Soroban kontraktlar ish maydoni. Stellar Trade — Stellar asosida qurilgan ochiq kodli prognoz bozori prototipi. Kontraktlar XLM bozor jamg‘armasiga qanday kirishini, ishtirokchilar pozitsiyalarini qanday kamaytirishini hamda natijasi aniqlangan yoki bekor qilingan bozorlar to‘lov va qaytarimlarni qanday taqsimlashini boshqaradi.

Ushbu repozitoriy ilova ortidagi kontraktlarni yaratish, sinash, ko‘rib chiqish yoki joylashtirish kerak bo‘lgan dasturchilar uchun mo‘ljallangan. Unda bozor kontrakti, shuningdek token, referral, reyting jadvali va integratsion testlar uchun yordamchi crate’lar mavjud.

Ish maydonini tushunish

Repozitoriy har biri alohida vazifaga ega bo‘lgan beshta asosiy crate’ga ajratilgan:

  • prediction_market: Bozorlar yaratadi, pozitsiyalarni qabul qiladi, pozitsiyalarni kamaytiradi, resolver amallarini boshqaradi, mutanosib da’volarni hisoblaydi, bekor qilish qaytarimlarini amalga oshiradi, komissiyalarni hisobga oladi hamda nizolar va boshqaruvni qo‘llab-quvvatlaydi.
  • stellar_trade_token: Administrator boshqaruvi, vakolatli token chiqaruvchilar, pauza boshqaruvi va ixtiyoriy ta’minot limiti mavjud mukofot tokenini taqdim etadi. Yangi joylashtirishlarda nom Stellar Trade, belgisi esa STRD bo‘ladi.
  • referral_registry: Referral’larni ro‘yxatdan o‘tkazadi, referral zanjiri chuqurligini cheklaydi va referral komissiyalarini taqsimlaydi.
  • leaderboard: Ishtirokchilar ochkolari va yutuq/mag‘lubiyat qaydlarini kuzatadi, ballarning kamayishini qo‘llaydi hamda vakolatli mukofot chiqarishni ta’minlaydi.
  • cross_contract_invariants: Bozor, referral, reyting jadvali va token kontraktlari o‘rtasidagi hisob-kitob va xatti-harakatlarni sinaydi.

Rust ish maydonini sozlash

Loyiha rust-toolchain.toml orqali Rust 1.91.0 va wasm32v1-none target’ini belgilaydi. Repozitoriy ildiz katalogidan tekshiruvlarni ishga tushirishdan oldin repozitoriyda ko‘rsatilgan toolchain va target’ni o‘rnating.

Muhit tayyor bo‘lgach, ish maydonidagi barcha testlarni ishga tushiring:

cargo test --workspace --all-features

Format tekshiruvlari manba kodining loyiha formatlash qoidalariga mosligini tasdiqlaydi:

cargo fmt --all -- --check

Kod sifati va to‘g‘riligi bilan bog‘liq muammolarni aniqlash uchun Clippy’ni ogohlantirishlarni xato sifatida ko‘rib ishga tushiring:

cargo clippy --workspace --all-features -- -D warnings

Prediction-market kontraktini release profili bilan WebAssembly uchun yig‘ing:

cargo build --release --target wasm32v1-none -p prediction_market

Bu buyruqlar repozitoriyning GitHub Actions workflow’ida ishlatiladigan tekshiruvlarga mos keladi. Workflow shuningdek WASM artefaktlarini yig‘adi va default branch hamda pull request’lardagi o‘zgarishlar uchun kontraktlararo invariant testlarini ishga tushiradi.

Bozor hayotiy siklini kuzatish

1. Bozor yaratish

Vakolatli yaratuvchi bozor savoli, kategoriyasi va yopilish vaqtini e’lon qiladi. Bozor yaratish huquqlar bilan cheklangan, shuning uchun chaqiruvchi kontraktda sozlangan avtorizatsiya qoidalariga javob berishi kerak.

2. Pozitsiya ochish

Ishtirokchi YES yoki NO tomoniga XLM tikish uchun place_bet funksiyasini chaqiradi. Kontrakt sozlangan komissiyalarni qo‘llaydi va natijaviy pozitsiyani ishtirokchi tanlagan tomonga yozadi.

Pozitsiyani kamaytirish mexanizmi ishtirokchilar o‘rtasidagi savdo, orderlar kitobi yoki short pozitsiya emas. Bu ishtirokchining avval qayd etilgan tikmasi ustida bajariladigan amal.

3. Yopilishdan oldin pozitsiyani kamaytirish

Bozor yopilishidan oldin ishtirokchi mavjud tikmani kamaytirish uchun reduce_position funksiyasini chaqirishi mumkin. Kontrakt ishtirokchining qayd etilgan tomonini ishlatadi va qaytariladigan summani kamaytirilgan tikma hamda saqlanadigan komissiya qoidalari asosida hisoblaydi.

Kontrakt tomonni ishtirokchining mavjud pozitsiyasidan tanlagani sababli, chaqiruvchilar bu amalni tomon almashtirish yoki boshqa ishtirokchi bilan savdo qilish deb qabul qilmasliklari kerak.

4. Bozor natijasini aniqlash

Vakolatli resolver bozor yopilgach natijani yuboradi. Shundan so‘ng bozor kontrakti yutgan pozitsiyalar uchun mutanosib to‘lovlarni hisoblaydi.

Natijani aniqlash huquqlar bilan cheklangan. Ushbu ish maydonida avtomatik oracle mavjud emas. Tashqi narx yoki tarmoq ma’lumotlari bozorni yakunlay olmaydi, agar vakolatli resolver ulardan foydalanib, natijani yubormasa.

5. Yutuqlarni da’vo qilish yoki bekor qilinganda qaytarim olish

Ishtirokchilar bozor natijasi aniqlangandan so‘ng kontrakt orqali mutanosib to‘lovlarni da’vo qiladilar. Bekor qilingan bozorlar odatdagi yutuvchi pozitsiya to‘lovi oqimi o‘rniga alohida qaytarim yo‘lidan foydalanadi.

Resolver tanlovi, natijani aniqlash mezonlari, dalillar va nizolarni ko‘rib chiqish muhim ishonch taxminlaridir. Joylashtirilgan bozorga tayanishdan oldin ushbu jarayonlarni ko‘rib chiqing.

Hisob-kitob va xavfsizlik xususiyatlarini ko‘rib chiqish

Kontrakt xatti-harakatlarini o‘zgartirishdan oldin invariantlar matritsasini o‘qing. Unda muhim hisob-kitob qoidalari ularni himoya qiluvchi testlar bilan bog‘langan.

Matritsa quyidagi yo‘nalishlarni qamrab oladi:

  • Komissiyalarni saqlash va bozor darajasida komissiyalarni izolyatsiya qilish.
  • Mutanosib to‘lovlar chegaralari.
  • Bekor qilish xatti-harakati.
  • Referral hisob-kitobi.
  • Mukofot ta’minotini kuzatish.
  • Saqlash muddati (TTL) bilan ishlash.
  • Favqulodda pauza yo‘llari.

Komissiyalar, mukofotlar, to‘lov formulalari yoki saqlash muddatlarini o‘zgartirsangiz, tegishli regressiya va invariant testlarini ham bir vaqtda yangilang. O‘zgarish bir nechta kontraktga ta’sir qilganda cross_contract_invariants crate’i ayniqsa foydalidir.

Tarixiy muammo hisobotlaridan to‘g‘ri foydalanish

issues/ katalogida tarixiy xavfsizlik va to‘g‘rilik hisobotlari mavjud. Ularning kontekstini tushunish uchun issues/README.md faylini o‘qing.

Ushbu hisobotlar avvalgi dizayn xatarlarini hujjatlashtiradi. Ularni kontraktlar auditdan o‘tkazilganining isboti yoki sanab o‘tilgan har bir muammo hali ham dolzarb ekanining tasdig‘i sifatida qabul qilmaslik kerak. Ulardan joriy manba kodi, testlar va invariantlar matritsasi bilan bir qatorda ko‘rib chiqish materiali sifatida foydalaning.

Joylashtirishga tayyorlaning

Testnet joylashtirishlari o‘zlarining tarixiy kontrakt ID’lari va token metama’lumotlarini saqlab qoladi. Yangi joylashtirish yangi manzillarni yaratadi va STRD’ni ishga tushiradi; u mavjud egalik qiluvchilar yoki balanslarni ko‘chirmaydi.

Joylashtirishdan oldin quyidagilarning barchasini tasdiqlang:

  • Maqsadli tarmoq.
  • Kontrakt ID’lari.
  • Administrator identifikatori.
  • Komissiya sozlamalari.
  • Resolver konfiguratsiyasi.

Maxfiy kalitlar, hamyonni tiklash iboralari, .deploy.env, joylashtirish natijalari yoki mahalliy identifikatsiya fayllarini hech qachon repozitoriyga yubormang.

Mahalliy frontend ishlab chiqish va ilova darajasidagi joylashtirish ko‘rsatmalari uchun ilova README fayliga murojaat qiling.

Ilg‘or ishlab chiqish bo‘yicha maslahatlar

Kontraktlararo xatti-harakatni test qiling

Bir crate’ga mahalliy ko‘ringan o‘zgarish referallar, mukofotlar, peshqadamlar jadvali yozuvlari yoki token ta’minotiga ta’sir qilishi mumkin. Faqat bitta crate’ning birlik testlariga tayanish o‘rniga, to‘liq workspace to‘plamini va kontraktlararo invariant testlarini ishga tushiring.

Ruxsat chegaralarini aniq saqlang

Bozor yaratish, natijani belgilash, tokenlarni boshqarish, mint qilish va boshqa nozik amallar avtorizatsiya boshqaruvlaridan foydalanadi. Kontraktni ko‘rib chiqish yoki kengaytirish vaqtida har bir amalni qaysi identifikatorlar bajarishi mumkinligini va pauza boshqaruvlari favqulodda holatdagi xatti-harakatga qanday ta’sir qilishini tekshiring.

Saqlash muddati o‘zgarishlarini ko‘rib chiqing

Saqlash TTL’ini boshqarish loyiha xavfsizlik modelining bir qismidir. Saqlashga kirish usullari yoki saqlash muddatlaridagi har qanday o‘zgarish invariantlar matritsasiga muvofiq tekshirilishi va regressiya testlari bilan qamrab olinishi kerak.

Reliz artefaktlarini tekshiring

O‘zgarishlarni nashr etish yoki joylashtirishdan oldin formatlash, Clippy, testlar va reliz WASM yig‘ilishini ishga tushiring. Mahalliy yig‘ilishning muvaffaqiyatli yakunlanishini ishlab chiqish uchun zarur shart deb biling, biroq uni konfiguratsiya va joylashtirish identifikatorlarini ko‘rib chiqishning o‘rniga qo‘ymang.

Xulosa

Stellar Trade Contracts bashorat bozorlarini yaratish, YES va NO pozitsiyalarini qayd etish, stavkalarni kamaytirish, natijalarni belgilash, mutanosib da’volarni taqsimlash va bekor qilingan bozorlar uchun mablag‘larni qaytarish bo‘yicha Soroban mantiqini taqdim etadi. Uni qo‘llab-quvvatlovchi crate’lar mukofot tokeni, referal, peshqadamlar jadvali va integratsiya funksiyalarini qo‘shadi.

Repozitoriy bilan xavfsiz ishlash uchun mahkamlangan Rust muhitidan boshlang, barcha workspace tekshiruvlarini ishga tushiring, bozor hayotiy siklini o‘rganing va hisob-kitob yoki saqlash xatti-harakatlarini o‘zgartirishdan oldin invariantlar matritsasini ko‘rib chiqing. Joylashtirish vaqtida har bir ruxsat va tarmoq sozlamasini tekshiring hamda barcha maxfiy ma’lumotlarni versiyalar nazoratidan tashqarida saqlang.