Iroha Арнайы нұсқаулар
Біз туралы сөйлескенде қалай Iroha жұмыс істейді, Біз мұны айттык Iroha Әлемдік мемлекетті өзгертудің бірден-бір жолы - арнайы нұсқаулар. Бізде қандай арнайы нұсқаулар бар? Егер сіз осы оқу-әдістемедегі тілдік нұсқауларды оқысаңыз, Сіз бірнеше нұсқаулықты көрдіңіз: Register<Account> және Mint<Numeric>.
Iroha арнайы нұсқаулардың толық тізбесі:
| Нұсқаулық | Түсініктемелер |
|---|---|
| Тіркеу/Тіркеуден шығару | Блокчейндегі жаңа субъектіге ID беріңіз. |
| Mint/Burn | Mint/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 жұмыс кеңістігінен әдеттегі жергілікті клиент конфигурациясына қарсы командаларды орындайсыз деп болжайды:
cargo run --bin iroha -- --config ./defaults/client.toml <command>Егер сіз iroha бинарды орнатсаңыз, оның орнына iroha --config ./defaults/client.toml қолданыңыз. Төмендегі орын иеленушілерді желіңізден алынған мәндермен ауыстырыңыз:
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 талап етіңіз:
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"Фаннетпен қаржыландырылған актив көрініс тапқаннан кейін, транзакцияларды жазу үшін қажетті газ активтерінің метамәдени деректерін қоса беріңіз:
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 жұмыс тетігін пайдалану:
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 Домендерді құру және шоттар мен активтерді тіркеу. |
| Rust | Rust оқу құралын қолданыңыз. |
| Kotlin/Java | Kotlin/Java оқушысы қолданылсын. |
| Python | Python оқу құралын қолданыңыз. |
| JavaScript/TypeScript | JavaScript/TypeScript оқу құралын пайдалану . |
Әдеттегі доменді орнатуды жоспарлау және қолдану, содан кейін ол енді қажет болмаған кезде доменді тіркеуден шығару:
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Тіркеу және тіркеуден шығару шоттары:
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"Тіркелу және тіркеуден шығару активтерінің анықтамасы:
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 стандартты кірістен:
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'Тіркеу және тіркеуден шығару функциялары:
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 арқылы жасайды және оны триггерді тіркеуге өткізеді:
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_cleanupBLS кілтін және PoP кілтін kagami арқылы пайдаланыңыз, егер сізде олар жоқ болса:
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 блокчейн активтері үшін тілге тән нұсқаулықты қолданыңыз:
Мұнда қордың күйіп кетуі туралы мысалдар келтірілген:
Сандық активтер:
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 10Mint және күйдіру триггерлік қайталаулар:
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.
Сандық активтерді аудару:
cargo run --bin iroha -- --config ./defaults/client.toml \
ledger asset transfer \
--definition "$ASSET_DEF" \
--account "$ALICE" \
--to "$BOB" \
--quantity 25Трансфер домені, активтің анықтамасы және NFT иелігі:
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 нұсқаулығы арқылы алып тастауға болады.
Тіркелгідегі рөлді беру және қайтару:
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Рұқсат белгілерін беру және қайтару . Рұқсат командалары рұқсат объектісін стандартты кірістен оқиды:
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"Рөлге рұқсат беру және қайтарып алу:
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 operatorsSetKeyValue/RemoveKeyValue
Бұл нұсқаулықтар нысанды жаңарту метамәдени деректер. Метамәдени деректерді енгізу немесе ауыстыру үшін SetKeyValue және бірін өшіру үшін RemoveKeyValue пайдалану.
Metadata set командасы стандартты кірістен JSON мәнін оқиды:
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 үшін бірдей үлгі бар және триггерлер:
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 ownerSetParameter
SetParameter белсенді дерек үлгісі мен орындаушы арқылы анықталған бүкіл тізбектік параметрлерді өзгертеді.
Стандартты кіріске бір параметрлі JSON нысанды өткізіп, параметрді орнату:
printf '{"Sumeragi":{"BlockTimeMs":1000}}\n' |
cargo run --bin iroha -- --config ./defaults/client.toml \
ledger parameter setExecuteTrigger
Бұл нұсқаулық триггерлерін орындау үшін қолданылады.
CLI триггерлерді тіркей алады және тікелей триггерлік орындалу оқиғаларына жазылуы мүмкін. Ол execute trigger командасын келтірмейді, сондықтан қолма-қол ExecuteTrigger нұсқауларын тапсыру үшін, SDK немесе орындаушы құралымен сериалдалған InstructionBox туындысын өндіреді және нәтижесінде пайда болған JSON массивін ledger transaction stdin арқылы өткізеді:
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 нұсқау беріңіз:
cargo run --bin iroha -- --config ./defaults/client.toml \
ledger transaction ping --log-level INFO --msg "hello from docs"Әдеттегі орындаушы нұсқаулығын сериялы InstructionBox ретінде тапсырыңыз. Пайдалық жүктеменің пішіні орындаушыға тән, сондықтан нұсқаулықты сәйкестендіруші SDK немесе орындаушы құралмен жасаңыз:
printf '["<BASE64_CUSTOM_INSTRUCTION_BOX>"]\n' |
cargo run --bin iroha -- --config ./defaults/client.toml \
ledger transaction stdinIVM байткод файлынан орындаушыны жаңарту:
cargo run --bin iroha -- --config ./defaults/client.toml \
ops executor upgrade --path ./target/ivm/executor.ivm