Skip to content

Iroha Арнайы нұсқаулар

Біз туралы сөйлескенде қалай Iroha жұмыс істейді, Біз мұны айттык Iroha Әлемдік мемлекетті өзгертудің бірден-бір жолы - арнайы нұсқаулар. Бізде қандай арнайы нұсқаулар бар? Егер сіз осы оқу-әдістемедегі тілдік нұсқауларды оқысаңыз, Сіз бірнеше нұсқаулықты көрдіңіз: Register<Account> және Mint<Numeric>.

Iroha арнайы нұсқаулардың толық тізбесі:

НұсқаулықТүсініктемелер
Тіркеу/Тіркеуден шығаруБлокчейндегі жаңа субъектіге ID беріңіз.
Mint/BurnMint/burn сандық активтер немесе қайталауды іске қосу.
SetKeyValue/RemoveKeyValueБлокчейн объектінің метамәдени деректерін жаңарту.
SetParameterЖелілік диапазонды орнату.
Grant/RevokeРолдар мен рұқсаттарды беру немесе алу.
АлуМеншік иелігін немесе активтердің құнын ауыстыру.
Жергiлiктi депозиттер мен активтер құптарыЦифрлық активтерді протоколдық күтімге алу.
ExecuteTriggerҚозғалтқыштарды орындаңыз.
Журнал/Сарттылық/Жаңарту Оқу уақытын тіркеңіз, ұзартыңыз немесе жаңартыңыз.

Iroha Арнайы нұсқаулықтардың жиынтығымен бастайық; әрбір нұсқаулық қандай нысандарға шақырылуы мүмкін және әр объект үшін қандай нұсқаулар қолжетімді.

Жиналысы

Әрбір нұсқаулық үшін осы нұсқаулықты орындауға болатын объектілердің тізімі бар. Мысалы, трансфер варианттары иеленуші бухгалтерлік кітапша нысандары мен сандық активтерді қамтиды, ал митинг сандық активті және қайталануларды бастайды.

Кейбір нұсқаулықтарда мақсатты анықтау қажет. Мысалы, егер сіз активтерді аударатын болсаңыз, оны қай шотқа аударып жатқаныңызды әрдайым көрсетуіңіз керек. Басқа жағынан, сіз бір нәрсені тіркеуде болсаңыз, сізге тек өзіңіз тіркегіңіз келетін зат керек.

НұсқаулықНысандарМақсаты
EnsureAliasӘдеттегі домен, деректер кеңістігінің атаулары және есептік жазбалардың атауларын орнату
Тіркеу/Тіркеуден шығаруесеп айырысу, активтердің анықтамасы, NFTs, рөлдер, қозғалтқыштар, теңгерімдері; домендерді шығару
Mint/Burnсандық активтер, қайталануларды іске қосуесептер немесе триггерлер
SetKeyValue/RemoveKeyValue метадеректері бар объектілер: домендер, шоттар, активтер анықтамасы, NFTs, RWAs, триггерлер
SetParameterтізбек параметрлері
Grant/Revokeрөлдер, рұқсат белгілеріесептері немесе рөлдері
АлуДомендер, активтердің анықтамасы, сандық активтер, NFTsесеп айырысу
Жергiлiктi депозиттер мен активтер құптарысандық активтер кепілдендірілуі, активтердің жабылуы, анонимдік кепілдендірілген міндеттемелерісатып алушылар, мақсаттар немесе даулар бөлінісі
ExecuteTriggerтриггерлер
Журнал/Сарттылық/Жаңарту журналдары, орындаушыға тән пайдалы жүктемелер, орындаушыларды жаңарту

ISI дегенді қарастырудың басқа тәсілі де бар, олар қол жеткізген кітапша объектісі бойынша:

МақсатНұсқаулар
Есептіліктіркелу/тіркеуден шығару шоттары, активтерді қабылдау, есептің метамәліметтерін жаңарту, рұқсат беру/қайтарып алу және рөлдер
Домендоменді орнатуды қамтамасыз ету, домендерді тіркеуден шығару, домен иелігін ауыстыру, домен метамәдениетін жаңарту
Активтер анықтамасытіркелу/тіркеуден босату анықтамалары, меншік иелігін беру, метамәліметтерді жаңарту
Активтерминда/жабын сандық мөлшері, көшірме сандық саны
Қабылдаужіберілген төлемді ашу, қабылдау, таңбалау, босату, күшін жою, дауды шешу, шығару немесе жергiлiктi қорғаншылық тiзiмдерiн тоқтату
NFTтіркелу/тіркеуден босату NFTs, меншікті беру, метамәдени мәліметтерді жаңарту
RWAпартияларды тіркеу, көшіру мөлшері, ұстау/кішірту, тоңазыту/тоңазытпау, сатып алу, біріктіру, метамәдени деректерді жаңарту және бақылау
Қозғалтқыштіркелу/тіркеуден шығару, минда / күйдіру триггерін қайталау, орындау триггері, жаңарту триггерінің метамәдени деректері
Әлемтіркелу/тіркеуден шығару теңгерімдері мен рөлдері, параметрлерді орнату, орындаушыны жаңарту

CLI мысалдар

Бұл беттегі мысалдар сіз Iroha жұмыс кеңістігінен әдеттегі жергілікті клиент конфигурациясына қарсы командаларды орындайсыз деп болжайды:

bash
cargo run --bin iroha -- --config ./defaults/client.toml <command>

Егер сіз iroha бинарды орнатсаңыз, оның орнына iroha --config ./defaults/client.toml қолданыңыз. Төмендегі орын иеленушілерді желіңізден алынған мәндермен ауыстырыңыз:

bash
export ALICE="<ALICE_ACCOUNT_I105>"
export BOB="<BOB_ACCOUNT_I105>"
export ASSET_DEF="<ASSET_DEFINITION_BASE58>"
export PEER_KEY="<BLS_PUBLIC_KEY_MULTIHASH>"
export PEER_POP="<PROOF_OF_POSSESSION_HEX>"

Қоғамдық Taira тест-нетін нысанаға алғанда, Taira клиент конфигурациясын пайдаланыңыз. Төлем төлейтін мысалдарды орындаудан бұрын, кранның көмекшісін ден сақтаңыз. Testnet XOR Taira бойынша taira_faucet_claim.py ретінде алыңыз, содан кейін краннан testnet XOR талап етіңіз:

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"

Фаннетпен қаржыландырылған актив көрініс тапқаннан кейін, транзакцияларды жазу үшін қажетті газ активтерінің метамәдени деректерін қоса беріңіз:

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

cargo run --bin iroha -- \
  --config ./taira.client.toml \
  --metadata ./taira.tx-metadata.json \
  <command>

EnsureAlias

EnsureAlias - домендер мен олардың SNS лизингін құру үшін әдеттегі бірінші релиз жолы. Ол нақты дерек кеңістігін, иесін, жалға беру мерзімі мен цитатаны бекітеді, содан кейін барлық қажетті күйді атомдық түрде жасайды немесе жөндейді. Аутентификацияланған POST /v1/aliases/setup/plan аяқтық нүктесін немесе сәйкес келетін CLI жұмыс тетігін пайдалану:

bash
cargo run --bin iroha -- --config ./defaults/client.toml \
  app alias setup plan \
  --intent-file ./domain.intent.json \
  --plan-file ./domain.plan.json

cargo run --bin iroha -- --config ./defaults/client.toml \
  app alias setup apply --plan-file ./domain.plan.json

Мақсат пен жоспар құпия емес, бірақ қадам белгілерін қолдану және конфигурацияланған шотпен әдеттегі операцияны тапсыру. Жоспар өзінің тізбектеріне, билігіне, тіршілік-мемлекеттік бекітпесіне және мерзіміне байланысты; оны ешқашан басқа желіде қайта қолданбаңыз.

(Бас) Тіркеу

Тіркеу және тіркеуден шығару - бұл блокчейндегі жаңа субъектіге ID беру үшін қолданылатын нұсқаулар.

Тіркелуі мүмкін барлық нәрсе Registrable және Identifiable болып табылады, бірақ Identifiable дегеннің бәрі Registrable емес. Көптеген нәрселер тікелей тіркеледі, бірақ кейбір жағдайларда блокчейндегі бейнелеуде айтарлықтай көп деректер бар. Қауіпсіздік және өнімділік себептерінен біз мұндай деректер құрылымдары үшін құрылысшыларды қолданамыз (мысалы, NewAccount), ал теңгерімдік тіркеуде иелікті дәлелдейтін арнайы нұсқаулық бар.

Сіз шоттарды, активтердің анықтамаларын, NFTs, теңгерімдерді, рөлдерді және триггерлерді тіркей аласыз. Доменді орнату EnsureAlias қолданады; шикі Register::Domain пайдалы жүктеме генезис/bootstrap үшін арналған. Теңгерлік тіркеу RegisterPeerWithPop пайдаланады, ол теңгерім кілтіне ие болу дәлелі бар. Еліміздің атау конвенцияларын тексеріп, субъектінің есімдеріне қойылатын шектеулер туралы білуге болады.

RWA партиялары арнайы RegisterRwa нұсқау арқылы құрылады. Ағымдағы кодта UnregisterRwa нұсқаулығы жоқ; бейнеленген мөлшерді шығару үшін RedeemRwa қолданыңыз.

INFO

генезистік блогыңызды genesis.json -да қалай орнатуға шешім қабылдағаныңызға байланысты (атап айтқанда, рұқсат белгілерін тіркеуді қосасыз ба немесе жоқ па), шотты тіркеу процесі өте әртүрлі болуы мүмкін. Жалпы алғанда, біз оны былай қорытындылаймыз:

  • Қоғамдық блокчейнде кез-келген адам есептік жазбасын тіркей алады.
  • Жеке блокчейнде шоттарды тіркеу үшін бірегей процесс болуы мүмкін. Әдетте жеке блокчейнда, яғни тіркелгілерді тіркеудің бірегей процестері жоқ блокчейнда басқа тіркелгіді тіркеу үшін сізге есеп қажет болады.

Біз жеке және мемлекеттік блокчейндерді салыстырғанда бұл айырмашылықтарды егжей-тегжейлі талқылаймыз .

INFO

Қазіргі уақытта теңгерімді тіркеу - бұл желіге бастапқы сенімді теңгерімнің құрамына кірмеген теңгерімдерді қосудың жалғыз жолы.

Блокчейн объектілерін тіркеу үшін тілдік-белгілі нұсқаулықты қолдану:

ТілКітапшы
CLIПайдаланыңыз Iroha CLI Домендерді құру және шоттар мен активтерді тіркеу.
RustRust оқу құралын қолданыңыз.
Kotlin/JavaKotlin/Java оқушысы қолданылсын.
PythonPython оқу құралын қолданыңыз.
JavaScript/TypeScriptJavaScript/TypeScript оқу құралын пайдалану .

Әдеттегі доменді орнатуды жоспарлау және қолдану, содан кейін ол енді қажет болмаған кезде доменді тіркеуден шығару:

bash
cargo run --bin iroha -- --config ./defaults/client.toml \
  app alias setup plan \
  --intent-file ./docs-domain.intent.json \
  --plan-file ./docs-domain.plan.json

cargo run --bin iroha -- --config ./defaults/client.toml \
  app alias setup apply --plan-file ./docs-domain.plan.json

cargo run --bin iroha -- --config ./defaults/client.toml \
  ledger domain unregister --id docs.universal

Тіркеу және тіркеуден шығару шоттары:

bash
cargo run --bin iroha -- --config ./defaults/client.toml \
  ledger account register --id "$BOB"

cargo run --bin iroha -- --config ./defaults/client.toml \
  ledger account unregister --id "$BOB"

Тіркелу және тіркеуден шығару активтерінің анықтамасы:

bash
cargo run --bin iroha -- --config ./defaults/client.toml \
  ledger asset definition register \
  --id "$ASSET_DEF" \
  --name docs_token \
  --alias docs_token#docs.universal \
  --scale 0

cargo run --bin iroha -- --config ./defaults/client.toml \
  ledger asset definition unregister --id "$ASSET_DEF"

Тіркеу және тіркеуден шығару NFTs. NFT тіркеу оның мазмұнын оқиды JSON стандартты кірістен:

bash
printf '{"kind":"badge","level":"intro"}\n' |
  cargo run --bin iroha -- --config ./defaults/client.toml \
  ledger nft register --id 'badge$docs.universal'

cargo run --bin iroha -- --config ./defaults/client.toml \
  ledger nft unregister --id 'badge$docs.universal'

Тіркеу және тіркеуден шығару функциялары:

bash
cargo run --bin iroha -- --config ./defaults/client.toml \
  ledger role register --id operators

cargo run --bin iroha -- --config ./defaults/client.toml \
  ledger role unregister --id operators

Тіркеу және тіркеуден шығару триггерлері. Триггердің тіркелуіне жинақталған IVM байткоды немесе сериалдық нұсқаулық тізімі қажет. Бұл мысал Log нұсқаулығын CLI арқылы жасайды және оны триггерді тіркеуге өткізеді:

bash
cargo run --bin iroha -- --config ./defaults/client.toml -o \
  ledger transaction ping --log-level INFO --msg "hourly cleanup" |
cargo run --bin iroha -- --config ./defaults/client.toml \
  ledger trigger register --id hourly_cleanup \
  --instructions-stdin \
  --filter time \
  --time-start 5m \
  --time-period-ms 3600000

cargo run --bin iroha -- --config ./defaults/client.toml \
  ledger trigger unregister --id hourly_cleanup

BLS кілтін және PoP кілтін kagami арқылы пайдаланыңыз, егер сізде олар жоқ болса:

bash
cargo run --bin kagami -- keys --algorithm bls_normal --pop --json

cargo run --bin iroha -- --config ./defaults/client.toml \
  ledger peer register --key "$PEER_KEY" --pop "$PEER_POP"

cargo run --bin iroha -- --config ./defaults/client.toml \
  ledger peer unregister --key "$PEER_KEY"

Миндал/Борн

Өрлеу және өртеу сандық активтерді білдіреді және бірнеше рет қайталануы мүмкін. Кейбір активтер қайтарылмайтын деп жариялануы мүмкін, яғни олар тіркеуден кейін бір рет ғана шығарылуы мүмкін.

Активтер, әдетте, бастапқыда активті тіркеген шотқа жазылады. Активтердің мөлшері теріс емес, сондықтан сіз ешқашан $-1.0 активке ие бола алмайсыз немесе теріс соманы күйрете алмайсыз және теріс ақша таба аласыз.

Mint блокчейн активтері үшін тілге тән нұсқаулықты қолданыңыз:

Мұнда қордың күйіп кетуі туралы мысалдар келтірілген:

Сандық активтер:

bash
cargo run --bin iroha -- --config ./defaults/client.toml \
  ledger asset mint \
  --definition "$ASSET_DEF" \
  --account "$ALICE" \
  --quantity 100

cargo run --bin iroha -- --config ./defaults/client.toml \
  ledger asset burn \
  --definition "$ASSET_DEF" \
  --account "$ALICE" \
  --quantity 10

Mint және күйдіру триггерлік қайталаулар:

bash
cargo run --bin iroha -- --config ./defaults/client.toml \
  ledger trigger mint --id hourly_cleanup --repetitions 5

cargo run --bin iroha -- --config ./defaults/client.toml \
  ledger trigger burn --id hourly_cleanup --repetitions 1

Трансфер

Трансферлер шоттар арасындағы иелікті немесе құнды жылжытады. Жалпы трансферттік нұсқалар домендерді, активтердің анықтамаларын, сандық активтерді қамтиды және NFTs. RWA көлемді қозғалысы арнаулы TransferRwa және ForceTransferRwa көрсетілген нұсқаулар Реалдық дүниедегі активтер.

Бұл үшін есеп беру қажет активтерді ауыстыруға рұқсат. Активтерді аудару туралы мысал келтіріңіз: CLI немесе Rust.

Сандық активтерді аудару:

bash
cargo run --bin iroha -- --config ./defaults/client.toml \
  ledger asset transfer \
  --definition "$ASSET_DEF" \
  --account "$ALICE" \
  --to "$BOB" \
  --quantity 25

Трансфер домені, активтің анықтамасы және NFT иелігі:

bash
cargo run --bin iroha -- --config ./defaults/client.toml \
  ledger domain transfer --id docs.universal --from "$ALICE" --to "$BOB"

cargo run --bin iroha -- --config ./defaults/client.toml \
  ledger asset definition transfer --id "$ASSET_DEF" --from "$ALICE" --to "$BOB"

cargo run --bin iroha -- --config ./defaults/client.toml \
  ledger nft transfer --id 'badge$docs.universal' --from "$ALICE" --to "$BOB"

Жергiлiктi банктер мен активтер қапшығы

Туғандық ескроу нұсқаулары сандық активтерді бухгалтерлік кітапшамен басқарылатын протоколды күзетуде қаптайды. Олар нарық стилі бойынша есеп айырысу, жалпы активтер қаптау және анонимді қорғалған эскроу ағыны үшін қолданылады.

Базардағы депозит пайдалану OpenAssetEscrow, AcceptAssetEscrow, MarkEscrowPaymentSent, ReleaseAssetEscrow, CancelAssetEscrow, OpenEscrowDispute, және ResolveEscrowDispute. Жалпы активтердің құлыптарын пайдалану OpenAssetLock, DrawdownAssetLock, CancelAssetLock, және ExpireAssetLock. Анонимдік кепілгерлік нарықтың өмір циклін бейнелейді OpenAnonymousAssetEscrow, AcceptAnonymousAssetEscrow, MarkAnonymousEscrowPaymentSent, ReleaseAnonymousAssetEscrow, CancelAnonymousAssetEscrow, OpenAnonymousEscrowDispute, және ResolveAnonymousEscrowDispute.

Бұлар ISIs қазіргі кезде бірінші сыныпты маман жоқ CLI командалар. пайдалану түрлендіру SDK конструкторлар немесе сериалдық нұсқаулық пайдалы жүктер, және қара: Жергiлiктi активтердi басқару Өмір циклі мәліметтері, рұқсаттары, сұраныстары, оқиғалары және Rust мысалдар.

Грант / Қайтарып алу

Жәрдемақыны беру және қайтару нұсқаулары есепке алынады рұқсаттар мен рөлдер.

Grant пайдаланушыға бір ғана рұқсат немесе рұқсаттар тобы ("роль") тұрақты түрде беру үшін пайдаланылады. Берілген рөлдер мен рұқсаттарды тек Revoke нұсқаулығы арқылы алып тастауға болады.

Тіркелгідегі рөлді беру және қайтару:

bash
cargo run --bin iroha -- --config ./defaults/client.toml \
  ledger account role grant --id "$BOB" --role operators

cargo run --bin iroha -- --config ./defaults/client.toml \
  ledger account role revoke --id "$BOB" --role operators

Рұқсат белгілерін беру және қайтару . Рұқсат командалары рұқсат объектісін стандартты кірістен оқиды:

bash
printf '{"name":"CanSetParameters","payload":null}\n' |
  cargo run --bin iroha -- --config ./defaults/client.toml \
  ledger account permission grant --id "$BOB"

printf '{"name":"CanSetParameters","payload":null}\n' |
  cargo run --bin iroha -- --config ./defaults/client.toml \
  ledger account permission revoke --id "$BOB"

Рөлге рұқсат беру және қайтарып алу:

bash
printf '{"name":"CanRegisterDomain","payload":null}\n' |
  cargo run --bin iroha -- --config ./defaults/client.toml \
  ledger role permission grant --id operators

printf '{"name":"CanRegisterDomain","payload":null}\n' |
  cargo run --bin iroha -- --config ./defaults/client.toml \
  ledger role permission revoke --id operators

SetKeyValue/RemoveKeyValue

Бұл нұсқаулықтар нысанды жаңарту метамәдени деректер. Метамәдени деректерді енгізу немесе ауыстыру үшін SetKeyValue және бірін өшіру үшін RemoveKeyValue пайдалану.

Metadata set командасы стандартты кірістен JSON мәнін оқиды:

bash
printf '"production"\n' |
  cargo run --bin iroha -- --config ./defaults/client.toml \
  ledger domain meta set --id docs.universal --key environment

cargo run --bin iroha -- --config ./defaults/client.toml \
  ledger domain meta remove --id docs.universal --key environment

Есепшоттар, активтер анықтамасы NFTs, RWAs үшін бірдей үлгі бар және триггерлер:

bash
printf '{"display_name":"Alice"}\n' |
  cargo run --bin iroha -- --config ./defaults/client.toml \
  ledger account meta set --id "$ALICE" --key profile

printf '{"issuer":"docs"}\n' |
  cargo run --bin iroha -- --config ./defaults/client.toml \
  ledger asset definition meta set --id "$ASSET_DEF" --key issuer

printf '{"color":"blue"}\n' |
  cargo run --bin iroha -- --config ./defaults/client.toml \
  ledger nft meta set --id 'badge$docs.universal' --key traits

printf '{"owner":"ops"}\n' |
  cargo run --bin iroha -- --config ./defaults/client.toml \
  ledger trigger meta set --id hourly_cleanup --key owner

SetParameter

SetParameter белсенді дерек үлгісі мен орындаушы арқылы анықталған бүкіл тізбектік параметрлерді өзгертеді.

Стандартты кіріске бір параметрлі JSON нысанды өткізіп, параметрді орнату:

bash
printf '{"Sumeragi":{"BlockTimeMs":1000}}\n' |
  cargo run --bin iroha -- --config ./defaults/client.toml \
  ledger parameter set

ExecuteTrigger

Бұл нұсқаулық триггерлерін орындау үшін қолданылады.

CLI триггерлерді тіркей алады және тікелей триггерлік орындалу оқиғаларына жазылуы мүмкін. Ол execute trigger командасын келтірмейді, сондықтан қолма-қол ExecuteTrigger нұсқауларын тапсыру үшін, SDK немесе орындаушы құралымен сериалдалған InstructionBox туындысын өндіреді және нәтижесінде пайда болған JSON массивін ledger transaction stdin арқылы өткізеді:

bash
printf '["<BASE64_EXECUTE_TRIGGER_INSTRUCTION_BOX>"]\n' |
  cargo run --bin iroha -- --config ./defaults/client.toml \
  ledger transaction stdin

cargo run --bin iroha -- --config ./defaults/client.toml \
  ledger events trigger-execute --timeout 30s

Басқа нұсқаулықтар

Iroha сондай-ақ орындалу уақыты мен орындаушы интеграциясы бойынша төменгі деңгейдегі нұсқауларды көрсетеді:

  • Log: орындау кезінде журналды жазуды шығару
  • CustomInstruction: орындаушыға тән JSON пайдалы жүктерді тасымалдау
  • Upgrade: орындаушыны жаңартуды қосу

Пинг көмекшісімен Log нұсқау беріңіз:

bash
cargo run --bin iroha -- --config ./defaults/client.toml \
  ledger transaction ping --log-level INFO --msg "hello from docs"

Әдеттегі орындаушы нұсқаулығын сериялы InstructionBox ретінде тапсырыңыз. Пайдалық жүктеменің пішіні орындаушыға тән, сондықтан нұсқаулықты сәйкестендіруші SDK немесе орындаушы құралмен жасаңыз:

bash
printf '["<BASE64_CUSTOM_INSTRUCTION_BOX>"]\n' |
  cargo run --bin iroha -- --config ./defaults/client.toml \
  ledger transaction stdin

IVM байткод файлынан орындаушыны жаңарту:

bash
cargo run --bin iroha -- --config ./defaults/client.toml \
  ops executor upgrade --path ./target/ivm/executor.ivm