ოპერაციები
ტრანზაქცია არის ხელმოწერილი თხოვნა სამუშაოების შესრულებისთვის ბლოკჩეინზე. განხორციელებადი სასარგებლო ტვირთი შეიძლება იყოს ინსტრუქციების შეკვეთა, ხელშეკრულების გამოძახება, IVM ბიტკოდი ან დამტკიცებული IVM შესრულება. იხილეთ ჭკვიანი ხელშეკარგულებები მიმდინარე ხელშეკრის შესრულების მოდელისთვის.
ტრანზაქციები განახორციელებენ მდგომარეობის შეცვლას ან შესრულებადი სამუშაოს. მხოლოდ წაკითხვის ინსპექტირება იყენებს ხელმოწერილი გამოკითხვებს ან საჯარო წაკითხვითი საბოლოო წერტილებს და არ ქმნის ტრანზაციას.
ვალდებულ ბლოკში მიღებული ტრანზაქცია შენახულია მისი შესრულების შედეგთან ერთად, მათ შორის განხორციელების უარყოფითი მოთხოვნით. ბლოკის შესვლამდე უარყოფილი თხოვნები, როგორიცაა არასწორი კონვერტი ან რიგის მიერ უარი თქმული ტრანზაკცია, არ ინახება ბლოკშიც.
კონფიდენციალურობის დაცვის აქტივების მოძრაობისთვის იხილეთ Anonymous Transactions. ანონიმური ტრანზაქციები საჯარო ანგარიშზე ბალანსის ცვლილებების ნაცვლად იყენებენ დაფარულ აქტივებს, ვალდებულებებს, გაუქმებებსა და ნულინარი ცოდნის მტკიცებულებებს.
მტკიცებულებების დასამტკიცებლად, რომლებიც შეეხება შერჩეულ გამჭვირვალე შესრულების ეფექტებს, იხილეთ FastPQ. FastPQ იყენებს აღსრულების მოწმეებს ჩვეულებრივი ტრანზაქციის შესრულების შემდეგ და აგებს დეტერმინისტული მტკიცებულების პარტიებს მხარდაჭერილი სახელმწიფო გარდაქმნებისთვის.
სცადეთ Taira
გამოიყენეთ Explorer-ის მარშრუტები, რათა შეამოწმოთ ბოლო საჯარო Taira ბლოკები და ტრანზაქციების სტატუსი ხელმოწერის ანგარიშით:
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}]}'თქვენი აპლიკაციის მიერ წარდგენილი ტრანზაქციის დასაკვალიერებლად, გადაწერეთ hash ჩამონათვალიდან და შეამოწმეთ Explorer- ის დეტალური მარშრუტი:
TX_HASH='<transaction-hash>'
curl -fsS "https://taira.sora.org/v1/explorer/transactions/$TX_HASH" \
| jq '{hash, block, status, authority, executable}'ეს ჯერ კიდევ მხოლოდ წაკითხვაა. ტრანზაქციის წარდგენა მოითხოვს Norito კონვერტის ხელმოწერას, სწორი ჯაჭვი ID, საფასურის მეტადატებს და საბანქისგან დაფინანსებულ Taira ანგარიშს
Taira-ზე საფასურის გადახდის მაგალითებისათვის, შეინახეთ ქვაბის დამხმარე გან. მიიღეთ Testnet XOR-ზე Taira როგორც taira_faucet_claim.py, შემდეგ დააფინანსეთ ხელმოწერილი პირი პირველ რიგში საჯარო ქვაბით:
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"თუ საპირფარეშო პაუზლი ან სარჩელის მარშრუტი ბრუნდება 502, დაელოდეთ და კიდევ ერთხელ შეეცადეთ, სანამ თავად ტრანზაქციას დებეგირებთ.
შემდეგ, ტრანზაქციის წარდგენისას მიაერთეთ Taira საფასურის აქტივის მეტადატატი:
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 ტრანზაქციები
Iroha აქვს ორი ოფლაინ ტრანზაქციის სამუშაო ნაკადი:
- Offline ხელმოწერა ქმნის ჩვეულებრივ ხელმოწერილი ტრანზაქციას, სანამ ხელმოწერის მოწყობილობა გათიშულია. ტრანზაკცია არ დამუშავდება მანამ, სანამ ონლაინ კლიენტი არ წარუდგენს ხელმოწერილ კონვერტს Torii, ამიტომ მას ჯერ კიდევ სჭირდება სწორი ჯაჭვი ID, უფლებამოსილება, ნებართვები, გადასახადები და ტრანზუქციის სიცოცხლე.
- კაგემუშა ოფლაინ ფულადი თანხა საფულის თავზე აყენებს, როდესაც ის ონლაინ არის, მხარს უჭერს მიმღებელის მიერ დაწყებულ საფულე-საფულე გადაცემას ორივე საფულის გარეშე ყოფნის დროს და გამოსდის შედეგად მიღებული შენიშვნების მდგომარეობას, როდესაც მიმღებელს ონლაინ ბრუნდება.
Torii ასახავს კაგემუშას სიცოცხლის ციკლს სრულად /v1/offline/*:
| მეთოდი და საბოლოო | მიზანი |
|---|---|
GET /v1/offline/readiness | შეაფასეთ Kagemusha მზადყოფნა ერთი asset_definition_id |
POST /v1/offline/receiver-lineage | დარეგულირდება აქტიური რეგისტრაციის მტკიცებულების მქონე გვარობა ხელმოწერილი მიმღები მოთხოვნისათვის |
POST /v1/offline/top-up | წარადგინეთ ხელით გაფორმებული ონლაინ-ოფლაინ ოპერაცია |
POST /v1/offline/redeem | წარადგინეთ ოფლაინ გადახდის ოპერაცია. |
GET /v1/offline/operations/{operation_id} | წაიკითხეთ დამატების კანონიკური სტატუსი ან გამოსყიდვა |
შეამოწმეთ აქტივის მზადყოფნა ოპერაციის ოფლაინ განხორციელების წინ:
curl -fsS --get https://taira.sora.org/v1/offline/readiness \
--data-urlencode 'asset_definition_id=<canonical_asset_definition_id>' \
| jq '{ready, blockers, artifact_set}'მზადყოფნა აკავშირებს საფულეს აქტიურ ხიდთან ABI 21 და დამოწმებული V4 არტეფაქტის ნაკრები. გვარის, დამატების და გამოსასყიდის მოთხოვნები გამოიყენება typed application/x-norito არქივები. აღდგენა და გამოსასყიდი დაბრუნება 202 Accepted ა Location სათაური, რომელიც მიუთითებს ოპერაციის რესურსზე; ჩაშენებული ნულოვანი ოპერაცია; ID მარაგებს იდემპოტენციის გასაღებს.
ტიპიური ნაკადი არის:
- შეკითხვა მზადყოფნა და შეჩერება, თუ
readyარის ცრუ ან რომელიმე ბლოკერი გამოიყენება. - გამოიყენეთ Swift ან JVM ტიპირებული საფულე კანონიკური დამატებითი არქივის შესაქმნელად, მის წარდგენაში და შეინარჩუნოთ როგორც შესასვლელი შენიშვნების მდგომარეობა, ასევე ოპერაცია ID სანამ ოპერაცია საბოლოო ჯაჭვური მდგომარეობას არ მიაღწევს.
- საჭიროების შემთხვევაში გადაწყვიტეთ მიმღებელის რეგისტრაციის გვაროვნება, შეადგინეთ და შემოწმეთ თითოეული თანატოლური გადაცემა ადგილობრივად და გააგრძელეთ კოდირებული ნოტის მდგომარეობა გადაცემის აღიარებამდე.
- როდესაც მიმღები ინტერნეტშია, შეიქმნას კანონიკური გამოსყიდვის არქივი, წარადგინოს იგი და გამოკითხვა მისი ოპერაციული რესურსი საბოლოო.
ბუღალტრში არ შეიძლება შეინიშნოს კონფლიქტური ონლაინ გადაცემა მანამ, სანამ ნოტის მდგომარეობა დაბრუნდება ონლაინ ცხოვრების ციკლის განმავლობაში. ამდენად, საფულე და ოპერატორის პოლიტიკა უნდა ახორციელოს ღირებულების ლიმიტები, ვადის ამოწურვა, მიღებული ემიტენტები, მდგრადი ადგილობრივი შენახვა და შეთანხმების ფანჯრები.
აქ მოცემულია ახალი ტრანზაქციის შექმნის მაგალითი Grant ინსტრუქციით. ამ ტრანზაკციაში, Mouse აძლევს ელისს მითითებულ როლს (role_id). შეამოწმეთ მთელი მაგალითი.
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);