SORA 3-da qurilgan: Taira va Minamoto
SORA 3 - Iroha 3 va SORA Nexus ustida qurilgan dasturga qaraydigan ommaviy ishga tushirish yo'li. Avvalo Taira ustida quring va mashq qiling, so'ngra o'sha xil mijoz shaklini faqat alohida asosiy tarmoq kalitlaringiz bo'lganda Minamoto-ga ko'chiring, to'lovlar uchun haqiqiy XOR va ishlab chiqarish ruxsatnomasi.
Ushbu qo'llanma Iroha mijozini jamoatchi SORA tarmoqlari uchun qanday konfiguratsiya qilishni ko'rsatadi:
- Taira sinov tarmog'i
https://taira.sora.org - Minamoto asosiy tarmoq
https://minamoto.sora.org
Taira ni integratsiya sinovlari, kran mablag'i bilan ta'minlangan yozish kanarlari va ishga tushirish mashg'ulotlari uchun ishlating. Minamoto-ni faqat ishlab chiqarish tayyor bo'lgan asosiy tarmoq faoliyati uchun foydalaning. Ikkala tarmog'i ham XOR da to'lovlarni oladi:
- Taira ommaviy krandan testnet XOR foydalanadi.
- Minamoto haqiqiy ishlatiladi XOR. Yoʻq Minamoto faucet.
Qurilish yo'li
| qadam | Taira Testnet | Minamoto Asosiy |
|---|---|---|
| Tarmoqning holatini oʻqishni boshlash | /status kalitsiz so'rovlar | Soʻrov /status kalitsiz |
| Maʼlumotlar maydonini tanlang | Ochiq universal dan foydalaning , agar sizning dasturingizga boshqariladigan yo'nalish kerak bo'lmasa | Xuddi shu maʼlumotlar maydonidan faqat asosiy tarmoqning tasdiqlanganidan soʻng foydalanish |
| Toʻlov aktivini oling . | Ommaviy Taira krandan foydalanish | XOR mablag ' bilan ta ' minlangan Minamoto hisobidan yoki tasdiqlangan xazina oqimidan oling |
| Test yozadi | Foydalanuvchi tomonidan moliyalashtirilgan sinovdan foydalanish XOR | Sinov vositalaridan foydalanmang; real XOR xarajatlarini yozadi |
| Taʼlim berish | Logika, monitoring va imzolashni qayta sinab ko'ring | alohida kalitlar, moliyalashtirish va ozod qilish nazoratlaridan foydalanish |
Amaliy oqim quyidagicha:
- Mijozni Taira ga qarshi yaratish va ommaviy
universalma'lumotlar maydonidan foydalanish. - Imzolovchi qo'shing va Taira kran bilan moliyalashtiring.
- Taira ga qarshi o'zingizning dasturingiz mantiqasini muvaffaqiyatsizliklar zerikarli va kuzatilishi mumkin bo'lgunga qadar mashq qiling.
- O'ziga xos Minamoto imzochini yaratish, uni haqiqiy XOR bilan moliyalashtirish va faqat o'sha tasdiqlangan operatsiyalarni mainnetga ko'chirish.
1. Qaysi maqsadlar sari intilayotganingizni tushuning
SORA Nexus da ma'lumotlar maydonlari tarmoq yo'nalishi va yo'naltirish katalogi tarkibiga kiradi. Mijoz faqat client.toml ni o'zgartirgan holda yangi ommaviy ma'lumot maydonini yaratmaydi. Mijozli sozlash ikkita narsani bajaradi:
- mijozni o'ng Torii oxirgi nuqtaga ko'rsatadi
- oʻz kanonik hisoboti uchun domen va maʼlumotlar maydonining yoʻnaltirish kontekstini tanlaydi .
AccountId har doim kanonik va domensiz. [account].domain qiymati client.toml yo'nalish va alias kontekstini taqdim etadi; u hisob kimligining bir qismiga aylanmaydi. Aksariyat ilovalar uchun ommaviy universal ma'lumotlar maydonidan boshlang. Domen kontekstida domain.dataspace shakli ishlatiladi, masalan:
wonderland.universalAgar sizga yangi tashkiliy ma'lumotlar maydonchasi kerak bo'lsa, uni oddiy mijoz hisobidan ro'yxatdan o'tkazishga harakat qilishning o'rniga katalog va yo'nalish taklifini tayyorlang. Yangi ma'lumot maydonchasini taqdim etishni ko'ring quyida.
2. Umumiy Torii yakuniy nuqtani tekshiring.
Foydalanuvchini sozlashdan oldin maqsadli oxirgi nuqta jonliligini tekshiring.
Taira uchun:
curl -fsS https://taira.sora.org/status \
| jq '{peers, blocks, txs_approved, queue_size}'Minamoto uchun:
curl -fsS https://minamoto.sora.org/status \
| jq '{peers, blocks, txs_approved, queue_size}'Bogʻning aniqlangan maʼlumotlar maydonini va yoʻnalish koʻrinishini tekshiring:
curl -fsS https://taira.sora.org/status \
| jq '.teu_lane_commit[] | {lane_id, alias, dataspace_id, dataspace_alias, visibility}'Mainnet uchun https://minamoto.sora.org/status bilan bir xil buyruqdan foydalaning.
Agentlar uchun Taira MCP
Taira shuningdek, agentni ishga tushirish vaqtlari uchun Torii-native Model Context Protocol (MCP) ko'prini ochadi. Agentga birinchi navbatda maxsus Torii mijoz qurmasdan turib jonli testnet o'qish, skriptli diagnostika yoki qat'iy ravishda qayta ko'rib chiqilgan yozish repetitsiyalari kerak bo'lganda uni ishlating.
| Oʻrnatish | qiymati |
|---|---|
| MCP oxirgi nuqta | https://taira.sora.org/v1/mcp |
| Tarmoq ildizlari | https://taira.sora.org |
| Maqsadli foydalanish | Taira testnet o'qish va kran mablag'i bilan ta'minlangan yozish repetitsiyalari |
| Ishlab chiqarish ekvivalenti | Ushbu yozuvni Minamoto raqamiga koʻrsatmang , agar asosiy tarmoqning MCP oxirgi nuqtasi va chiqarib tashlash nazoratlari aniq tasdiqlanmagan boʻlsa |
Imzolash materialini qo'shishdan oldin ko'prikning metadatalarini tekshiring:
curl -fsS https://taira.sora.org/v1/mcp \
| jq '{protocolVersion, server: .serverInfo.name, tools: .capabilities.tools.count}'URL serverini agent ishga tushirish paytida foydalanuvchiga o'xshagan MCP server sifatida konfiguratsiya qiling. Agentning MCP konfiguratsiyasi, API tokenlari, yuborilgan muallif sarlavhalari, authority yoki private_key qiymatlarini ushbu hujjat repo yoki dastur repo-ga qo'shmang.
Taira bilan yaxshi ishlaydigan vositachi tezkor qoidalari:
- MCP serveridan vositalarni qo'ng'iroq qilishdan oldin kashf eting; agar server
listChangedhaqida xabar bersa, ularni qayta kashf qiling. iroha.qurilmalarini xomtorii.qurilmalariga qaraganda ko'proq yoqadi.- Faqat o'qishni boshlash: yozishlarni taklif qilishdan oldin holatini, hisob-kitoblarni, aktivlarni, aliaslarni, bloklarni, boshqaruv holati va tranzaksiya holatini tekshirish.
- jonli testnet mutatsiyalaridan oldin aniq inson yo'l-yo'riqini talab qiling. Oldindan imzolangan tranzaksiya zarflari uchun
iroha.transactions.submit_and_waitdan foydalaning, shunda agent faqat taqdim etishning o'rniga natijani kutadi. - Agent javobida tranzaksiya hashlari, yakuniy holat va serverni tasdiqlash xatolarini qisqacha ko'rsatish.
Agentlar bilan rivojlanish ish oqimi
Agentlarni Iroha mijozlari, tranzaksiya quruvchilar, diagnostika skriptlari va testnet ishga tushirish daftarlari uchun rivojlanish yordamchilari sifatida ishlating. Agentning vakolatini cheklang: u kodni tekshirishi, Taira holatini o'qishi, o'zgarishlarni taklif qilishi va mahalliy sinovlar o'tkazishi mumkin, lekin inson aniq operatsiyani tasdiqlamaguncha jonli tarmoqni mutatsiya qilmasligi kerak.
Amaldagi ish oqimi quyidagilardan iborat:
- Agent kod yozishdan oldin tegishli hujjatlarni, SDK kodini, CLI buyruqini yoki MCP vosita sxemasini tekshirishni so'rang.
- Agent birinchi navbatda eng kichik mijoz yo'lini yozsin: holatni tekshirish, hisobni qidirish, alias rezolyutsiyasini yoki balansni qidirish.
- Transaction-building kodini faqat o'qish uchun qo'ng'iroqlar Taira bilan ishlayotganidan keyin qo'shing.
- To'g'ridan-to'g'ri jonli tarmoq sinovlarini, masalan
TAIRA_LIVE=1orqasida o'tkazing, shuning uchun normal birlik sinovlari testnet mablag'larini hech qachon sarflamaydi yoki tarmoq mavjudligiga bog'liq. - Agent har qanday tranzaksiyani taqdim etishdan oldin tarmoq ildiz, zanjir, hokimiyat hisobvarag'i, ko'rsatmalarning qisqartmasi, to'lov aktivlari va kutilayotgan holat o'zgarishi haqida xabar berishlarini talab qiling.
- CI yoki asosiy tarmoq ish oqimlariga ko'tarilishdan oldin sirli ishlash, qayta urinish xatti-harakatlari, idempotency va rad etish xati uchun ishlab chiqarilgan kodni tekshiring.
Ishlab chiqish uchun foydali faqat o'qiladigan MCP vositalar hisobvaraq aktivlarini qidirish, alias rezolyutsiyasi, bloklarni qidirish, tranzaksiyalarni izlash, tranzaksiyalar ro'yxatlari va quvurlarning holatini tekshirishni anglatadi.
Use Taira MCP as a read-only inspector while developing this Iroha feature.
Inspect available iroha.* tools, verify the target account and asset state,
then update the client code. Do not submit transactions unless I explicitly
say "submit this transaction".Agentlar orqali operatsiya ish oqimi
O ' zbekiston Respublikasining MCP koʻprik imzolangan hujjatni taqdim etishi mumkin Iroha amal qiladi, ammo bu odatiy bitim talablarini bekor qilmaydi. Transaksiyaga hali ham to'g'ri vakolat, ruxsatnomalar, to'lov mablag'lari, zanjir kerak. ID, Metadatalar va imzo.
Quruq Iroha tranzaksiyalari uchun avval tranzaksiya qadoqchasini SDK yoki CLI raqami bilan tuzish va imzolash, so'ngra agentga faqat body_base64 sifatida kodlangan kanonik imzolangan tranzaksiya bytlarini berish. Agent omborni iroha.transactions.submit_and_wait yoki iroha.transactions.submit va so'rovnomalarni iroha.transactions.wait bilan taqdim etishi mumkin.
Xususiy kalitlarni agent so'rovnomasiga qo'ymang. Agar agent tranzaksiya tuzishi kerak bo'lsa, uni foydalanuvchining ishga tushirish muhiti, kalitchaini, uskuna imzochisi yoki testnet konfiguratsiya faylini e'tiborsiz qoldiradigan mahalliy kodga yozing. Agent hech qachon asosiy materialni Markdown, o'rnatishnomalar, yozuvlar yoki qo'shimchalarga yozmasligi kerak.
Transaksiyani taqdim etishdan oldin agentni qisqa tranzaksiya rejasi tuzishga majbur qiling:
network: Taira testnetning ildizi va zanjiri IDauthority: ro'yxatdan o'tgan va to'lovlarni to'laydigan hisob raqamiinstructions: ro'yxat, mint, yoqish, o'tkazish, metadotlar, ruxsatnoma yoki shartnoma qo'ng'iroqlari qisqartmasifee asset: Taira bo'yicha to'lanadigan aktivlarpreflight reads: allaqachon amalga oshirilgan hisob raqamlari, aktivlar saldi, ruxsatnomalar, alias yoki blok tekshiruvlariexpected result: tasdiqlashdan keyin ko'rinishi kerak bo'lgan holatidempotency: agar bir xil talabni qayta ko'rib chiqishsa nima bo'ladi
Taqdim qilgandan so'ng agentni terminal holatini kutishga majbur qiling, keyin o'qish so'rovi bilan holat o'zgarishini tasdiqlang.
- Transaksiya hash
Committed,Applied,RejectedyokiExpiredkabi terminal holati- blok yoki qidiruvchining tafsilotlari mavjud bo'lganda
- tekshiruvi o'qiladigan natijalar
- rad etish xabarlari va xato ruxsatnomalar, to'lovlar, tasdiqlash, eskirgan holat yoki oxirgi nuqta mavjudligi kabi ko'rinadimi
Qoʻriqlangan tezlik namuna:
Prepare a Taira transaction plan, but do not submit yet. Use MCP reads to
verify the authority account, fee balance, target asset or alias, and current
transaction status if a hash already exists. Show the exact instructions and
expected post-state. Wait for my explicit "submit" message before calling
iroha.transactions.submit_and_wait.Imzolangan zarba allaqachon tayyorlanganida:
Submit this pre-signed Taira transaction envelope with
iroha.transactions.submit_and_wait. Use the provided body_base64 only; do not
ask for private keys. Wait for a terminal status, then verify the resulting
state with read-only iroha.* tools and report the hash, status, and
verification result.Taira MCP-ni test tarmog'ini boshqarishning ommaviy yuzi sifatida ko'rib chiqish. Taira kalitlari, test tarog'i XOR, kran hisob raqamlari va kanary imzo beruvchilar bir vaqtning o'zida ishlatilishi mumkin va ular Minamoto kalitlaridan va ishlab chiqarishdan chiqarilgan ish oqimlaridan ajralib turishlari kerak.
Endi sinab ko'rishingiz mumkin bo'lgan o'yinchoq misollari
Ushbu namunalar faqat o'qiladi, agar qayd etilmagan bo'lsa. Ular kalitlarni ishlab chiqarishdan oldin ishlaydi va ikkala ommaviy tarmoqga ham qarshi ishlash xavfsizdir.
Taira sinov tarmog'i va Minamoto asosiy tarmog'ining salomatligini taqqoslang:
for network in taira minamoto; do
root="https://$network.sora.org"
printf '\n%s\n' "$network"
curl -fsS "$root/status" \
| jq '{blocks, txs_approved, txs_rejected, queue_size, peers}'
doneTaira tomonidan aniqlangan ommaviy ma'lumotlar maydoni yo'nalishlarining ro'yxatini ko'rsatish:
curl -fsS https://taira.sora.org/status \
| jq -r '.teu_lane_commit[]
| [.lane_id, .alias, .dataspace_alias, .visibility, .storage_profile, .block_height]
| @tsv'Mainnet ko'rinishi kerak bo'lganda Minamoto ga nisbatan bir xil buyruqni bajaring:
curl -fsS https://minamoto.sora.org/status \
| jq -r '.teu_lane_commit[]
| [.lane_id, .alias, .dataspace_alias, .visibility, .storage_profile, .block_height]
| @tsv'Dashboard, bot yoki ishga tushirish tekshiruvi uchun kichik Node.js holatni tekshirishni yaratish:
node --input-type=module <<'EOF'
const roots = {
taira: 'https://taira.sora.org',
minamoto: 'https://minamoto.sora.org',
};
for (const [name, root] of Object.entries(roots)) {
const status = await fetch(`${root}/status`).then((res) => res.json());
const publicSpaces = status.teu_lane_commit
.filter((lane) => lane.visibility === 'public')
.map((lane) => `${lane.dataspace_alias}:${lane.block_height}`)
.join(', ');
console.log(
`${name}: ${status.blocks} blocks, ${status.queue_size} queued, public spaces ${publicSpaces}`,
);
}
EOFBirinchi yozish tomoni o'yinchoq Taira faucet da'vosi bo'lishi kerak. U testnetdan foydalanadi XOR va hech qachon Minamoto ga ko'rsatilishi kerak emas.
3. Taira mijoz konfiguratsiyasini yaratish.
Agar sizda allaqachon yoʻq boʻlsa , kalit juftligini yaratish:
kagami keys --algorithm ed25519 --jsontaira.client.toml ni yaratish:
chain = "fc56984b-2be7-431d-840e-21514d1883f0"
torii_url = "https://taira.sora.org/"
[account]
domain = "wonderland.universal"
profile = "taira"
public_key = "<ED25519_PUBLIC_KEY_HEX>"
private_key = "<ED25519_PRIVATE_KEY_HEX>"
[transaction]
time_to_live_ms = 100000
status_timeout_ms = 15000
nonce = falseEng yuqori darajadagi chain to'g'ri Taira operatsiyalar zanjiri ID. O ' zbekiston Respublikasining [account].profile = "taira" moslama mustaqil ravishda tanlaydi Taira I105 zanjir tanqid qiluvchi. ID hisobning profilini tanlamaydi.
Faqat oʻqish uchun tekshiruvni bajaring:
iroha --config ./taira.client.toml --output-format text ops sumeragi statusYozish testlaridan oldin ommaviy Taira diagnostikani o'tkazing:
iroha taira doctor --public-root https://taira.sora.org --jsonTaira hisobini pul to'lashdan oldin kran orqali mablag' bilan ta'minlang. To'g'ridan-to'g'ri kran oqimi Testnetni XOR Taira.
Kasana talabnomasi qabul qilinganidan va hisobvaraq moliyalashtirilganidan so'ng, Taira kanari o'z navbatida yozish tutun sinovidir:
iroha --config ./taira.client.toml taira write-canary \
--public-root https://taira.sora.org \
--write-config ./taira.canary.client.toml \
--jsonKanari imzolangan pingni taqdim etadi, tasdiqlanishini kutadi va --write-config taqdim etilganda ishga tushirish vaqtini imzolash konfiguratsiyasini yozadi. Taira ommaviy test tarmog'i bo'lib, shuning uchun navbat to'ldirilishi mushtarakning o'zi ishlayotganda ham imzolangan Ping muvaffaqiyatsiz qolishiga olib kelishi mumkin . Agar taira doctor to'yilgan navbatni yoki kanary PRTRY:NEXUS_FEE_ADMISSION_REJECTED ni bildirsa, uni mijoz konfiguratsiyasi xatosi sifatida ko'rib chiqishdan oldin kuting va yana sinab ko'ring.
Qo'riqlanmagan tutun sinovlari uchun kanaryani cheklangan qayta sinab ko'rish to'plamida o'rab oling:
ok=false
for attempt in 1 2 3 4 5; do
iroha --config ./taira.client.toml taira write-canary \
--public-root https://taira.sora.org \
--write-config ./taira.canary.client.toml \
--json && ok=true && break
sleep 60
done
test "$ok" = trueAgar iroha taira doctor qat'iy xatolarni ko'rsatadi. navbatning to'ldirilishi va to'lovni qabul qilishni rad etish - bu ommaviy test tarmog'i uchun vaqtincha shartlar; DNS, TLS, yoki status = "fail" diagnostikasi yo'q.
SORA Nexus hisobini yaratish ID
A SORA Nexus hisob ID kanonik hisoblanadi I105 hisobning ommaviy kalitidan va maqsadli tarmoq prefiksidan olingan manzil. Bu [account].domain mijozdagi qiymat TOML. Bir xil ommaviy kalitning turli xil kodlash IDs bilan Taira va Minamoto, va ishlab chiqarish foydalanuvchilari uchun alohida kalitlar juftligi yaratish kerak Minamoto.
Hisobotni boshqaradigan Ed25519 tugmalarini yaratish yoki yuklash:
kagami keys --algorithm ed25519 --jsonOchiq kalitni Taira hisob raqamiga ID o'zgartirish:
iroha tools address convert --profile taira <ED25519_PUBLIC_KEY_HEX>Minamoto ommaviy kalitni "mainnet" prefiksi bilan almashtirish:
iroha tools address convert --profile minamoto <ED25519_PUBLIC_KEY_HEX>Nexus API yoki CLI buyruqida kanonik hisob ID, masalan, Taira faucet account_id, balans so'rovlari, qat'iy hisob maydonlari yoki alias bog'liqlik uchun talab qilingan har qanday joyda hosil bo'lgan hisobni ID ishlating. Tugmalar biriktirilgan xususiy kalitni mijoz konfiguratsiyasida saqlang va [account].profile = "taira" yoki [account].profile = "minamoto" bilan bir xil ommaviy tarmoqni tanlang.
ID ishlab chiqarish o'zidan-o'zi moliyalashtirilgan zanjirdagi hisobni yaratmaydi. Taira da kran testnet yozish uchun hisobni yarata oladi va mablag' bilan ta'minlaydi. Minamoto da, tasdiqlangan asosiy tarmoqlarni o'rnatish yoki xazina oqimidan foydalaning.
Ochiqlarni saqlash va saqlab turish
Hisobvaraq ID va ommaviy kalitni almashish mumkin. Muvofiq xususiy kalit, maxfiy so'z, urug' va tiklanish materiallari sirli bo'lishi kerak.
SORA Nexus hisob raqamlari uchun ushbu amaliyotlardan foydalaning:
- Xususiy kalitlarni shifrlangan maxfiy so'z boshqaruvchisida, apparat bilan ta'minlangan kalit do'konida yoki maxsus imzolash xizmatida saqlang. Shell tarixida, ro'yxatlarda, suhbatda, chiptalarda yoki shifrlanmagan nusxada kalitlarni manba nazorati uchun qo'ymang.
- Har bir vaft yoki ishlab chiqarish imzochisi uchun o'ziga xos yuqori entropiyali maxfiy so'zni ishlating. Maxfiy so'zlarni kodlangan xususiy kalit bilan bir xil faylda yoki zaxira to'plamida emas, balki parol boshqaruvchida yoki bo'linadigan saqlash jarayonida saqlang.
- Taira va Minamoto kalitlarini alohida saqlang. Taira kalitlarini bir martalik testnet materiallari sifatida, Minamoto kalitlarini esa ishlab chiqarish mablag'lari bo'yicha organlar sifatida ko'ring.
- Xususiy kalit, ommaviy kalit, hisob raqami ID, hisob profili, va imzochini tiklash uchun zarur bo'lgan har qanday hisobni tiklash yoki saqlash notlari. Tarmoq konteksti bo'lmagan xususiy kalitdan tiklash paytida suiiste'mol qilish oson.
- Ishlab chiqarish imzochilari uchun kamida bitta shifrlangan offline ehtiyot qismini va bitta geografik jihatdan alohida shifrlangan ehtiyot qismni saqlang. Tekshiruvdan oldin faqat o'qishga mo'ljallangan kichik operatsiya bilan tiklanish sinovini amalga oshirish.
- Agar xususiy kalit, maxfiy so'z, ehtiyot vositasi yoki imzolash host ko'rsatilgan bo'lsa, imzolani aylantiring yoki almashtiring.
Ko'proq batafsil ma'lumot olish uchun Storing Cryptographic Keys va Password Security ko'ring.
4. Testnet-ni XOR -ga Taira orqali olib boring.
To'g'ridan-to'g'ri ommaviy krandan foydalaning.
- Imzolovchini yaratish yoki yuklash va uning kanonik Taira hisobini hisoblash ID.
- Hozirgi kran puzzlini olib keling.
- Agar
difficulty_bits0dan katta bo'lsa, puzzlingni hal qiling. - Kova uchun talabnoma bering.
- Hisobvaraq yoki aktivlar balansining ko'rinishini kutib, to'lovlarni to'lash uchun yozma xabar yuborishdan oldin.
Umumiy kalitni Taira I105 hisob raqamiga ID o'zgartirish:
iroha tools address convert --profile taira <ED25519_PUBLIC_KEY_HEX>Puzzle olib keling:
curl -fsS https://taira.sora.org/v1/accounts/faucet/puzzle | jq .Faucet - bu ommaviy testnet xizmati. Agar bulma-bulma yoki talab bitik nuqtasi 502, vaqt o'tishi yoki boshqa darvoza darajasi xatosi qaytarsa, kalitlaringizni yoki mijoz konfiguratsiyasini o'zgartirishdan oldin kuting va yana sinab ko'ring.
Javob quyidagi shaklga ega:
{
"algorithm": "scrypt-leading-zero-bits-v1",
"difficulty_bits": 8,
"anchor_height": 741,
"anchor_block_hash_hex": "05d2...",
"challenge_salt_hex": null,
"scrypt_log_n": 13,
"scrypt_r": 8,
"scrypt_p": 1,
"max_anchor_age_blocks": 6
}Agar difficulty_bits 0 bo'lsa, faqat ID hisobini taqdim eting:
curl -fsS https://taira.sora.org/v1/accounts/faucet \
-H 'content-type: application/json' \
-d '{"account_id":"<TAIRA_I105_ACCOUNT_ID>"}'difficulty_bits 0 dan katta bo'lganda, bulutni hal qiling va ankor balandligi qo'shimcha nonce kiritilsin:
curl -fsS https://taira.sora.org/v1/accounts/faucet \
-H 'content-type: application/json' \
-d '{
"account_id": "<TAIRA_I105_ACCOUNT_ID>",
"pow_anchor_height": 741,
"pow_nonce_hex": "<NONCE_HEX>"
}'Puzzle algoritmi quyidagicha:
- Tushkunlikni SHA-256 sifatida ko'rsatish:
iroha:accounts:faucet:pow:v2byetlari- UTF-8 hisob raqami ID
anchor_heightsifatida katta-endyanu64anchor_block_hash_hexbaytlar sifatida kodlanganchallenge_salt_hexmavjud bo'lganda baytlar sifatida kodlangan
u64nonces ko'p-endian 8-bayt qiymatlari sifatida kodlangan harakat qiling.- Har bir nonce uchun skriptni quyidagicha ishlating:
- maxfiy soʻz: 8-baytli nonce
- tuz: 32 baytli qiyinchilik
N = 2^scrypt_log_nr = scrypt_rp = scrypt_p- Ishlab chiqarish uzunligi: 32 byt
- G'alaba qozonadigan nonce kamida
difficulty_bitsning nol bitlarga yetakchi bo'lgan birinchi digest.
Fauxet javobida moliyalashtirilgan aktiv va navbatdagi tranzaksiya hashlari o'rnatiladi:
{
"account_id": "<TAIRA_I105_ACCOUNT_ID>",
"asset_definition_id": "6TEAJqbb8oEPmLncoNiMRbLEK6tw",
"asset_id": "...",
"amount": "25000",
"tx_hash_hex": "...",
"status": "QUEUED"
}Javob hozirda HTTP 202 Accepted bilan qaytarilmoqda. Yuqorida keltirilgan aktiv ta'rifi ID davlat kranidan moliyalashtiriladigan Taira to'lov aktividir. tx_hash_hex va status: "QUEUED" ni qaytarib berayotib, kran talabni qabul qildi.
Soʻngra oʻzingizning toʻlovlarni toʻlash boʻyicha operatsiyalaringizni taqdim etishdan oldin moliyalashtirilgan aktivni soʻrab oling:
iroha --config ./taira.client.toml ledger asset get \
--definition 6TEAJqbb8oEPmLncoNiMRbLEK6tw \
--account <TAIRA_I105_ACCOUNT_ID>Agar faucet uchun talabnoma qabul qilingan bo'lsa, ammo hisob yoki aktiv hali ko'rinmasa, Transaksiya hali ham testnet navbatini qayta ishlashda davom etmoqda. Yozuvlarni yuborishdan oldin o'qishni qayta sinab ko'ring.
Ishga tayyor bo'lgan to'g'ridan-to'g'ri API tekshiruvi uchun buni taira_faucet_claim.py sifatida saqlang va Taira I105 hisob raqamiga ID o'ting:
#!/usr/bin/env python3
import hashlib
import json
import sys
import urllib.request
def has_leading_zero_bits(digest: bytes, bits: int) -> bool:
full, rem = divmod(bits, 8)
if digest[:full] != b"\0" * full:
return False
return rem == 0 or digest[full] >> (8 - rem) == 0
root = "https://taira.sora.org"
account_id = sys.argv[1]
with urllib.request.urlopen(f"{root}/v1/accounts/faucet/puzzle") as res:
puzzle = json.load(res)
claim = {"account_id": account_id}
difficulty = int(puzzle["difficulty_bits"])
if difficulty > 0:
challenge = hashlib.sha256()
challenge.update(b"iroha:accounts:faucet:pow:v2")
challenge.update(account_id.encode())
challenge.update(int(puzzle["anchor_height"]).to_bytes(8, "big"))
challenge.update(bytes.fromhex(puzzle["anchor_block_hash_hex"]))
if puzzle.get("challenge_salt_hex"):
challenge.update(bytes.fromhex(puzzle["challenge_salt_hex"]))
n = 1 << int(puzzle["scrypt_log_n"])
r = int(puzzle["scrypt_r"])
p = int(puzzle["scrypt_p"])
salt = challenge.digest()
for nonce in range(1_000_000):
nonce_bytes = nonce.to_bytes(8, "big")
digest = hashlib.scrypt(nonce_bytes, salt=salt, n=n, r=r, p=p, dklen=32)
if has_leading_zero_bits(digest, difficulty):
claim["pow_anchor_height"] = puzzle["anchor_height"]
claim["pow_nonce_hex"] = nonce_bytes.hex()
break
else:
raise SystemExit("faucet nonce not found")
request = urllib.request.Request(
f"{root}/v1/accounts/faucet",
data=json.dumps(claim).encode(),
headers={"content-type": "application/json"},
method="POST",
)
with urllib.request.urlopen(request) as res:
print(json.dumps(json.load(res), indent=2))Fauxet faqat Taira testnet mablag'lari uchun ishlatiladi. XOR testnetdan, fauxet hisoblaridan yoki Taira kanary imzolaridan foydalanmang Minamoto oqimlarida.
5. Minamoto mijoz konfigini yaratish
& amp; uchun alohida tugmalar birikmasidan foydalanish Minamoto. Qayta ishlatmang . Taira asosiy tarmog'i kalitlari.
minamoto.client.toml ni yaratish:
chain = "00000000-0000-0000-0000-000000000753"
torii_url = "https://minamoto.sora.org/"
[account]
domain = "wonderland.universal"
profile = "minamoto"
public_key = "<ED25519_PUBLIC_KEY_HEX>"
private_key = "<ED25519_PRIVATE_KEY_HEX>"
[transaction]
time_to_live_ms = 100000
status_timeout_ms = 15000
nonce = falseEng yuqori darajadagi chain joriy bo ' lsa Nexus asosiy tarmoq zanjirlari ID. [account].profile = "minamoto" tanlaydi Minamoto I105 zanjirni farqlovchi; oxirgi nuqta o'rinbosari nomi va zanjir ID uni yonma-yon tanlamang.
Minamoto ommaviy kalitini uning kanonik I105 hisob raqamiga ID mainnet prefiksi bilan o'zgartiring:
iroha tools address convert --profile minamoto <ED25519_PUBLIC_KEY_HEX>Hisobvaraqni o'qish-o'qish bilan ta'minlash va moliyalashtirish uchun asosiy tarmoqga kirish yoki boshqaruv oqimi orqali mablag' ajratilmaguncha faqat o'qib chiqish tomonini tekshirish:
iroha --config ./minamoto.client.toml --output-format text ops sumeragi statusTaira kranini yoki yozish yordamchisini Minamoto ga qarshi ishlatmang.
6. Minamoto hisobvarag'ini XOR bilan ta'minlash
Minamoto to'lovlari XOR ishlab chiqarish bilan to'lanadi va Minamoto da ommaviy kran yo'q. Konfiguratsiya qilingan hisobvaraqni mainnetga o'rnatish yoki xazinani o'tkazish orqali moliyalashtiring yoki mavjud mablag' bilan ta'minlangan Minamoto hisobvarag'idan XOR oling.
Yozib olishni taqdim etishdan oldin ID kanonik hisobini va moliyalashtirishni faqat o'qiladigan tekshirishlar bilan tekshirib ko'ring. Minamoto XOR ni ishlab chiqarish mablag'lari sifatida qabul qiling: birinchi navbatda Taira da bir xil operatsiyani mashg'ul qiling, alohida ishlab chiqarish kalitlarini saqlang va asosiy tarmoq muomalasi qayta tiklanishi mumkin deb taxmin qilmang.
Taira XOR Minamoto to'lovlarini to'lay olmaydi. Testnet saldi va kran talablari Minamoto ga o'tkazilamaydi.
7. Mavjud ma'lumotlar maydonida ishlash
Ma'lumotlar maydonida yashovchi katta daftar ob'ektlari uchun to'liq malakali domen nomlaridan foydalaning. Masalan, ommaviy ma'lumotlar maydonidagi loyiha domenidan foydalanish kerak:
apps.universalHisobotingiz kerakli ruxsatlarga ega bo'lganidan so'ng, domen uchun sirsiz AliasSetupPlanRequestV1 niyat yarating va deklarativ rejalashtiruvchini ishlating:
iroha --config ./taira.client.toml \
app alias setup plan \
--intent-file ./taira-apps-domain.intent.json \
--plan-file ./taira-apps-domain.plan.json
iroha --config ./taira.client.toml \
--metadata ./taira.tx-metadata.json \
app alias setup apply --plan-file ./taira-apps-domain.plan.jsonMinamoto uchun alohida asosiy tarmoq niyati va rejasi ishlab chiqiladi va tasdiqlanadi. Rejalar o'zlarining zanjirlari, vakolatlari, jonli davlat anchorligi va muddatlariga bog'liq, shuning uchun Taira rejasini targ'ib qilish yoki takrorlash mumkin emas:
iroha --config ./minamoto.client.toml \
app alias setup plan \
--intent-file ./minamoto-apps-domain.intent.json \
--plan-file ./minamoto-apps-domain.plan.json
iroha --config ./minamoto.client.toml \
app alias setup apply --plan-file ./minamoto-apps-domain.plan.jsonHisobvaraq aliaslari bir xil ma'lumotlar maydonining suffixidan foydalanadi:
alice@apps.universal
alice@universalKatta hisob maydonlari hali ham kanonikdan foydalanadi I105 hisob IDs. Aliaslarni inson o'qishi mumkin bo'lgan bog'liqliklar sifatida qabul qiling, ular kanonik hisobda hal qilinadi IDs.
8. Yangi ma'lumotlar maydonini yaratish
Yangi ma'lumotlar maydoni operator va boshqaruv o'zgarishidir. Umumiy Torii oxirgi nuqtasi trafikni konfiguratsiyalangan ma'lumot maydonlariga yo'naltirish mumkin, ammo u noma'lum ma'lumot maydonlari aliaslarini rad etadi.
O'zgarishlarni tayyorlashdan oldin, amaldagi jonli katalogni o'qing:
curl -fsS https://taira.sora.org/status \
| jq '.teu_lane_commit[] | {lane_id, alias, dataspace_id, dataspace_alias, visibility}'Operator hisobini ko'rsatish uchun yo'l manifesti holatini ham tekshiring:
iroha --config ./operator.client.toml app nexus lane-report --summaryYo'nalish ID, ma'lumotlar maydoni ID, tasdiqlovchi moslama, xato tolerantligi, manifest, yo'naltirish qoidalari va operatsion egasi birgalikda ko'rib chiqilmagan bo'lsa, yangi aliasni targ'ib qilmang. Kerakli ruxsatnomalarga ega bo'lgan odatiy foydalanuvchi hisobi mavjud ma'lumotlar maydonida domen sotib olish va SNS ijaraga olish mumkin; u yangi ommaviy ma'lumotni xavfsiz qo'sholmaydi.
Xususiy yoki tashkiliy ma'lumotlar maydonchasi uchun katalog o'zgartirishni quyidagilar bilan tayyorlang:
- yagona ma'lumotlar maydonining aliasi va raqamli
id - to'g'ri yo'nalishdagi kirish yoki mavjud yo'nalishda berilgan vazifa
- ma'lumotlar maydoni
fault_tolerance - yo'naltirish qoidalari u yerga tushishi kerak bo'lgan ko'rsatmalar yoki hisob maydonlari uchun
- ma'lumotlar maydoni UAID qobiliyatlarini ochib berganda Space Directory manifest yoki tenglashtirilgan ishga tushirish dalillari;
- Validator, muvofiqlik, hisob-kitob qilish va monitoring siyosati uchun boshqaruv ma'qullanishi
Tekshirilishi mumkin boʻlgan konfig fragment quyidagicha koʻrinadi:
[[nexus.lane_catalog]]
index = 5
alias = "payments"
description = "Payments lane"
dataspace = "payments"
visibility = "public"
metadata = {}
[[nexus.dataspace_catalog]]
alias = "payments"
id = 20
description = "Payments dataspace"
fault_tolerance = 1
[[nexus.routing_policy.rules]]
lane = 5
dataspace = "payments"
[nexus.routing_policy.rules.matcher]
account_prefix = "payments."
description = "Route payments domains to the payments dataspace"Operatorning qabul qilishida quyidagi darvozalar bo'lishi kerak:
irohad --sora --config <config.toml> --trace-confighal qilingan nod konfiguratsiyasini o'tkazadi- hosil qilingan yoki ko'rib chiqilgan manifest hash va imzolar bilan arxivlanadi.
- tutun sinovlari oʻtadi Taira har qanday Minamoto rag'batlantirish
- o'zgarishdan keyingi
/statuskatalogida belgilangan yo'nalish va ma'lumotlar maydoni ko'rsatilgan; iroha app nexus lane-report --summarytalab qilingan manifestlar yo'qolganligini bildirmaydi
curl -fsS https://taira.sora.org/status \
| jq '.teu_lane_commit[] | select(.dataspace_alias == "payments")'Xuddi shu ma'lumotlar maydonini Minamoto ga faqat Taira ishga tushirilishi, tutun sinovlari, monitoring va boshqaruv dalillari to'liq bo'lganidan so'ng targ'ib etish.
Bogʻliq sahifalar
- Iroha 3 o'rnatish
- Iroha 3 orqali CLI orqali harakatlaning
- Xususiy ma'lumotlar maydoni uchun sponsorlik to'lovlari
- Torii oxirgi nuqtalari
- Ibtido ko'rsatkichi