Skip to content

Əməliyyatlar

Bir əməliyyat blockchain üzərində iş yerinə yetirmək üçün imzalanmış bir tələbdir. İcra edilə bilən payload təlimatların , müqavilə çağırışı, IVM bytecode və ya sübut edilmiş IVM icrasının sifarişlənmiş ardıcıllığı ola bilər. Mövcud müqavilənin icrası modeli üçün Ağıllı Müqavilələr-ə baxın.

Transaksiyalar vəziyyəti dəyişdirən və ya icra edilə bilən işləri həyata keçirir. Yalnız oxumaqla yoxlama imzalanan sorğuları və ya ictimai oxuma son nöqtələrindən istifadə edir və bir əməliyyat yaratmır.

Ödəniş blokuna daxil edilmiş bir əməliyyat onun icrasının nəticəsi ilə, o cümlədən icra edilməsinin rədd olunması ilə saxlanılır. Bloq qəbulundan əvvəl rədd edilən müraciətlər, məsələn, etibarsız müqavilə və ya növbədə rədd edilmiş əməliyyat; blokda saxlanılmır.

Məxfiliyini qoruyub saxlayan aktivlərin hərəkəti üçün Anonymous Transactions baxın. Anonim əməliyyatlar ictimai hesab-hesab balansında dəyişikliklər əvəzinə qorunan aktiv notları, öhdəlikləri, ləğv edən və sıfır bilik sübutlarını istifadə edir.

Seçilmiş şəffaf icra effektlərinə dair sübut əlamətləri üçün FastPQ baxın. FastPQ normal əməliyyat icrasından sonra icra şahidlərini istehlak edir və dəstəklənmiş dövlət keçidləri üçün deterministik sübut partiyaları qurur.

Taira üzərində sınayın.

Axırıncı açıq Taira blokları və əməliyyat statuslarını imzalama hesabı olmadan yoxlamaq üçün kəşfçi marşrutlarından istifadə edin:

bash
curl -fsS 'https://taira.sora.org/v1/explorer/blocks?page=1&per_page=3' \
  | jq '{pagination, blocks: [.items[] | {height, hash, transactions_total, transactions_rejected}]}'

curl -fsS 'https://taira.sora.org/v1/explorer/transactions?page=1&per_page=5' \
  | jq '{pagination, txs: [.items[] | {hash, block, status, executable}]}'

Əvvəlcədən təqdim etdiyiniz bir əməliyyatı izləmək üçün siyahıdan hash nüsxəsini kopyalayın və kəşfiyyatçının detal marşrutunu yoxlayın:

bash
TX_HASH='<transaction-hash>'

curl -fsS "https://taira.sora.org/v1/explorer/transactions/$TX_HASH" \
  | jq '{hash, block, status, authority, executable}'

Bu, hələ də yalnız oxunur. Transaksiyanın təqdim edilməsi üçün imzalanmış Norito zarf, düzgün bir zəncir ID, ödəniş metadataları və faucet maliyyələşdirilmiş Taira hesabı tələb olunur.

Taira-də ödənişli nümunələr üçün faucet köməkçisini -dən saxlayın Testnet XOR-i Taira-də taira_faucet_claim.py olaraq alın, sonra əvvəlcə imzalananı ictimai faucet vasitəsilə maliyyələşdirin:

bash
export TAIRA_ACCOUNT_ID='<TAIRA_I105_ACCOUNT_ID>'
export TAIRA_FEE_ASSET=6TEAJqbb8oEPmLncoNiMRbLEK6tw

curl -fsS https://taira.sora.org/v1/accounts/faucet/puzzle | jq .
python3 taira_faucet_claim.py "$TAIRA_ACCOUNT_ID"

iroha --config ./taira.client.toml ledger asset get \
  --definition "$TAIRA_FEE_ASSET" \
  --account "$TAIRA_ACCOUNT_ID"

Əgər faucet puzzle və ya iddia yolu 502 qaytarılırsa, əməliyyatın özünü debug etmədən əvvəl gözləyin və yenidən cəhd edin.

Bundan sonra əməliyyatın təqdim edilməsində Taira ödəniş aktivinin metadatalarını əlavə edin:

bash
printf '{"gas_asset_id":"%s"}\n' "$TAIRA_FEE_ASSET" > taira.tx-metadata.json

iroha --config ./taira.client.toml \
  --metadata ./taira.tx-metadata.json \
  ledger transaction ping --msg "faucet-funded taira transaction"

Offline əməliyyatlar

Iroha iki offline əməliyyat iş axını var:

  • Offline imzalanması imzalanma qurğusu bağlanmadan normal imzalanan bir əməliyyat yaratır. Əməliyyat onlayn müştəri imzalanmış zarfı Torii -a göndərənə qədər icra edilmir, buna görə də hələ də düzgün zəncir ID, səlahiyyət, icazələr, ödənişlər və əməliyyat ömrü lazımdır.
  • Kagemusha offline pul cüzdanı onlayn olduğu müddətdə toplayır, hər iki cüzdan offline ikən alıcı tərəfindən başlanılmış cüzdan-cüzdan çatdırılmalarını dəstəkləyir və alıcının onlayn qayıdanda nəticəli qeyd vəziyyətini əvəz edir.

Torii Kagemusha-nın tam həyat dövrünü /v1/offline/* altında göstərir:

Metod və son nöqtəMəqsəd
GET /v1/offline/readinessasset_definition_id üçün Kagemusha hazırlığını qiymətləndirmək
POST /v1/offline/receiver-lineageİmzalanmış alıcı tələbi üçün təsdiqləyici aktiv qeydiyyat soyunu həll etmək
POST /v1/offline/top-upİmzalanmış onlayn-offline toplama əməliyyatını təqdim edin
POST /v1/offline/redeemİmzalanmış offline ödəniş əməliyyatını təqdim edin
GET /v1/offline/operations/{operation_id}Yeniləmə və ya töhfənin kanonik statusunu oxuyun

Offline əməliyyat qurmadan əvvəl aktivin hazırlığını yoxlayın:

bash
curl -fsS --get https://taira.sora.org/v1/offline/readiness \
  --data-urlencode 'asset_definition_id=<canonical_asset_definition_id>' \
  | jq '{ready, blockers, artifact_set}'

Hazırlıq pul cüzdanı aktiv körpü ABI 21 və təsdiqlənmiş V4 artefakt dəstinə bağlayır. soy, toplama və fidye tələbləri application/x-norito arxivlərindən istifadə edir. İşləmə mənbəsinə işarə edən Location başlığı ilə toplama və ödəniş qaytarılması 202 Accepted; yerləşdirilmiş sıfır olmayan əməliyyat ID idempotency açarını təmin edir.

Tipik axın:

  1. ready səhvdirsə və ya hər hansı bir bloker tətbiq olunduğu təqdirdə hazırlığı soruşun və dayandırın.
  2. Təsvir edilmiş bir istifadə edin Swift və ya JVM Canonical top-up arxivini qurmaq, təqdim etmək və giriş qeydinin vəziyyətini və fəaliyyətini saxlamaq üçün cüzdan. ID əməliyyatın sonuncu zəncir vəziyyətinə çatana qədər.
  3. Lazım olduqda alıcının qeydiyyat soyunu həll edin, hər bir peer transferini yerli olaraq qurun və yoxlayın və köçürülməni təsdiqləməkdən əvvəl şifrələnmiş qeyd vəziyyətini davam etdirin .
  4. Alıcı onlayn olduqda, qanuni fidye arxivini qurun, göndərin və sonluq üçün əməliyyat resursunu sorğulayın.

Qeydiyyat rejissoru onlayn həyat dövrü boyunca qeyd vəziyyətini qaytarana qədər ziddiyyətli bir offline ötürülməni müşahidə edə bilməz. Bu səbəbdən cüzdan və operator siyasəti qiymət məhdudiyyətlərini, müddətin bitməsini, qəbul edilmiş emitentləri, davamlı yerli saxlamaları tətbiq etməlidir. və barışıq pəncərələri.

Burada yeni bir əməliyyatın yaradılması nümunəsi Grant Bu əməliyyatda Mouse Alice-ə müəyyən edilmiş rolu verəcək.role_idÇəkim). tam nümunə.

rust
let grant_role = Grant::account_role(role_id, alice_id);
let grant_role_tx = TransactionBuilder::new(chain_id, mouse_id)
    .with_instructions([grant_role])
    .sign(mouse_private_key);