Skip to content

Іс-шаралардың қоздырғышы мысалы

Бұл мысал Iroha 3 деректер үлгісінде каноникалық доменсіз шот IDs және болжамды активтер анықтамасы пайдаланылады.

Егер желіде:

  • Алистің кілтімен бақыланатын каноникалық есеп
  • Ақылсыз шапшашының кілтімен бақыланатын каноникалық есеп
  • wonderland.universal бойынша tea деп болжанатын активтің анықтамасы;
  • әрбір шотта ұсталатын активтердің қалдығы

Мақсаты - Алистің шай балансын бақылайтын қоздырғышты тіркеу және сәйкес келетін деректер оқиғасы жіберілгенде, Mad Hatter шотының аударымын тапсыру.

1. Есептілік пен активтерді дайындау

Бастапқыда қатысушы шоттарды және активтерді анықтауды тіркеңіз. Ағымдағы Iroha-де IDs-де шоттар бақылаушылардан келеді, ал болжамды домендер domain.dataspace нысанын пайдаланады:

text
domain: wonderland.universal
asset definition projection: tea in wonderland.universal
holder accounts: AccountId(controller=alice_key), AccountId(controller=mad_hatter_key)

Активтің анықтамасы әлі де каноникалық ашық емес мекенжайға ие. Тіркеуден кейін осы мекенжайды сақтау немесе сұрау салу және оны іске қосу әрекеті кезінде пайдалану.

2. Қозғалтқыштың күшін таңдау

Қозғалтқыштың техникалық тіркелгісін мүмкіндігінше арнаулы тіркелгіге орнатыңыз. Арнайы тіркелгі қозғалтқышты орындау үшін қандай рұқсаттар қажет екенін анықтайды және қозғалтқыштарды оператордың жеке қолтаңбалау кілтімен байланыстырудан сақтайды.

Техникалық тіркелгі қазірдің өзінде болуы керек және нұсқауларды іске қосушы орындауға рұқсат беруі қажет.

3. орындаушыны анықтаңыз

Орындалуы мүмкін - бұл оқиға сүзгісі сәйкес келетін кезде триггер беретін нұсқаулар реттілігі. Бұл мысал үшін ол бір көшірмені қамтиды:

text
Transfer(
  source = AssetId(tea_definition, mad_hatter_account),
  value = Numeric(1),
  destination = AssetId(tea_definition, alice_account)
)

Ақырғы транзакцияның пайдалы жүктемесі үшін SDK -ның ағымдағы типті конструкторларын пайдаланыңыз. Орындалушыны құруға дейін жеңілдік кодындағы ескі мәтінді IDs қатты кодтаудан аулақ болыңыз; талдау немесе сұраныс каноникалық IDs

4. оқиға сүзгісін анықтаңыз

Деректер оқиғасы сүзгісін пайдаланыңыз , ол оқиғаларды қызығушылық танытқан объектке дейін шектейді:

text
EventFilterBox::Data(
  DataEventFilter for asset changes involving
  AssetId(tea_definition, alice_account)
)

AcceptAll сүзгісі қателерді түзеу үшін пайдалы, бірақ ол әрбір сәйкес келетін оқиғаның іске қосуды бағалаудың құнын төлейді.

5. Қозғалтқышты тіркеңіз

Қозғалтқышты тіркеңіз:

  • ұяшықты TriggerId
  • орындалатын нұсқаулар реттілігі:
  • Repeats::Indefinitely немесе Repeats::Exactly(n)
  • техникалық есеп
  • оқиға сүзгісі
  • параметрлік метамәдени деректер

Триггерді тіркеудің өзі қалыпты транзакция болып табылады, сондықтан тіркелу шотына триггерлерді тіркеуге рұқсат қажет. Техникалық шотқа триггерді орындау үшін қажетті рұқсаттар керек.

Атқару туралы бұйрық

Блок орындалған кезде:

  1. Әдеттегі транзакция нұсқаулары бірінші орындалады.
  2. Аталған нұсқаулықтар бойынша жасалған оқиғалар туралы мәліметтер жиналады.
  3. Фильтрлері осы оқиғаларға сәйкес келетін триггерлер жоспарланған.
  4. Қозғалтқыш туғызу әсері блокты орындау құбырында шексіз рекурсивті қозғалтқышты іске асыруға мүмкіндік бермеген жағдайда орындалады.

Егер триггер Repeats::Exactly(n) пайдаланса, жаңа триггерді есепке алу аяқтаған кезде тіркеңіз және қайтадан сол мінез-құлық қажет болады.