Skip to content

ჭკვიანი ხელშეკრულებები

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 იწვევს განთავსებულ ხელშეკრულების ინსტანციას მისამართით. გამოიყენეთ ეს, როდესაც ხელშეკარგულების კოდი ცალკე არის რეგისტრირებული და ტრანზაქციები უნდა მოიწვიოს იგი რეფერენციის ნაცვლად ყოველ ჯერზე ბაიტების კოდის თანხა.

საოპერაციო მიმართულებები

  • კონტრაქტების დეტერმინისტური შენარჩუნება. კონტრაქტის ქცევა არ უნდა იყოს დამოკიდებული ადგილობრივი კედლის საათის დროზე, მასპინძელი ფაილების სისტემის მდგომარეობაზე, ქსელის ზარებზე ან სხვა თანატოლ-ლოკალური შეღწევებზე.
  • ტვირთების კომპაქტური შენარჩუნება. დიდი ბაიტო კოდი ზრდის ტრანზაქციის ზომას და ბლოკზე გავრცელების ხარჯებს.
  • უპირატესობას ანიჭებს წაკითხული ინსტრუქციები მარტივი რეგისტრაციის ცვლილებებისთვის. ისინი უფრო ადვილია აუდიტირება და უფრო იაფია შესრულება.
  • კონტრაქტის განახლება და რეგისტრაციის ნებართვა მაღალი რისკის მქონე ოპერატიული კონტროლის სახით განიხილეთ.

იხილეთ ასევე: