Аккуратты келісімшарттар
Iroha транзакциялары Executable пайдалы жүктемелерді орындайды.Қазіргі деректер моделі:
Executable::Instructions: Iroha арнайы нұсқаулықтарының реттелген жиынтығыExecutable::ContractCall: іске қосылған шартты инстанцияға қосымша сілтеме шақыруExecutable::Ivm: Iroha VM байт кодыExecutable::IvmProved: алдын ала есептелген нұсқаулық үстіңгі қабатты және дәлелдеу міндеттемелері бар Iroha VM байт коды
Kotodama — Iroha-ның жоғары деңгейлі смарт-келісімшарт тілі. .ko бастапқы файлы детерминирленген IVM байт-кодына компиляцияланады және орналастыру үшін әдетте .to артефакті ретінде сақталады. Kotodama тек IVM-ге бағытталған. Ол RISC-V немесе WebAssembly-ге бағытталмаған.
Алғашқы шығарылым тек ABI 1-нұсқасын қолдайды. syscall және pointer-ABI саясаты келісімшартты қабылдау мен орындау кезінде сөзсіз қолданылады; орындау уақытындағы үйлесімділік ауыстырғышы жоқ.
Ақылды келісімшарттарды қай кезде қолдану керек?
Транзакцияны тікелей білдіре алатын кезде әдеттегі нұсқауларды қолданыңыз:
- тіркелу немесе тіркеуден шығару объектілері
- Ақша, өрт немесе трансфер
- метамәдени мәліметтерді жаңарту
- рұқсаттарды беру немесе қайтарып алу
- триггерді орындау
- тізбекті параметрлерді орнату
Транзакцияға статикалық нұсқаулар реттілігі ретінде білдіру қиын логика қажет болған кезде немесе іске қосылған келісімшарт үлгісі анықтама арқылы шақырылса, ақылды келісімшартты қолдану.
IVM Атқарушы құралдар
Executable::Ivm шөпті IVM байткодты алып жүреді. Нодтар осы байткоды тізбек үшін конфигурацияланған жұмыс уақытының шегінде орындайды. Байткоды кішкентай және детерминистік сақтаңыз; келісімдер транзакцияны орындаудың бөлігі болып табылады, сондықтан келісімге ықпал етеді.
Executable::IvmProved дәлелді тасымалдар үшін арналған. Ол:
- IVM байткоды
- детерминистік нұсқаулық үстіңгі қабатты
- орындау іс-шараларының міндеттемесі
- газ саясаты бойынша міндеттеме
Дәлелді орындалған байткодқа байланыстырады. Құбырдың саясатына қарай, растаушылар дәлелдемені тексеруге және қосымша қауіпсіздік тексерісі ретінде қайта ойнауға болады.
Қолданылған келісім-шарттық шақырулар
Executable::ContractCall орналастырылған келісімшарт инстантын мекенжайы бойынша шақырады. Келісімшарт коды бөлек тіркелсе және мәмілелер оны әрбір рет байткодымен бірге жүрудің орнына анықтама арқылы шақыру керек.
Операциялық нұсқаулық
- Контракттардың мінез-құлқы жергілікті қабырға сағатына, хост файлдар жүйесінің күйіне, желілік шақыруларға немесе басқа да жергiлiктi кiрiстерге байланысты болмауы тиіс.
- Пайдалы жүктемелерді ықшамдаңыз. Үлкен байткод транзакцияның көлемін және блоктың таралу құнын арттырады.
- Кітаптық кітапшаның қарапайым өзгерістері үшін түрлендіру нұсқауларын артық көремін. Олар тексеруге оңай және орындау арзан.
- Келісімшартты жаңарту және тіркеу рұқсаттарын жоғары тәуекелді операциялық бақылау ретінде қараңыз.
Сондай-ақ қараңыз: