Како написати ВебАссембли паметни уговор на Онтологи мрежи? Део 1: Руст

Како написати ВебАссембли паметни уговор на Онтологи мрежи? Део 1: Руст

Онтологи Васм технологија смањује трошкове преноса дАпп паметних уговора са сложеном пословном логиком у блок ланац, чиме значајно обогаћује дАпп екосистем.

Сада Онтологи Васм истовремено подржава развој и Руст и Ц++. Руст језик боље подржава Васм, а генерисани бајт-код је једноставнији, што може додатно да смањи трошкове уговорних позива. Тако, како користити Руст за развој уговора на мрежи Онтологи?

Развијање ВАСМ уговора користећи Руст

Креирање уговора

Карго је добар алат за креирање пројеката и управљање пакетима приликом развоја програма у Русту, који помаже програмерима да боље организују интеракцију кода и библиотека трећих страна. Да бисте креирали нови Онтологи Васм уговор, једноставно покрените следећу команду:

Како написати ВебАссембли паметни уговор на Онтологи мрежи? Део 1: Руст

Структура пројекта коју генерише:

Како написати ВебАссембли паметни уговор на Онтологи мрежи? Део 1: Руст

Датотека Царго.томл се користи за конфигурисање основних информација о пројекту и информација о зависним библиотекама. Одељак [либ] у датотеци мора бити подешен на црате-типе = [“цдилиб”]. Датотека либ.рс се користи за кодирање логике уговора. Поред тога, потребно је да додате параметре зависности у одељак [зависности] конфигурационе датотеке Царго.томл:

Како написати ВебАссембли паметни уговор на Онтологи мрежи? Део 1: Руст

Користећи ову зависност, програмери могу да позивају интерфејсе који ступају у интеракцију са Онтологи блоцкцхаином и алатима као што је параметар серијализације.

Функција уноса уговора

Сваки програм има функцију за унос, као што је главна функција коју обично видимо, али уговор нема главну функцију. Када развијате Васм уговор користећи Руст, функција позива се подразумевано користи као улазна функција за коришћење уговора. Име функције у Руст-у ће бити нејасно приликом компајлирања Руст изворног кода у бајт код који може да изврши виртуелна машина. Да би спречила компајлер да генерише сувишан код и да би смањила величину уговора, функција инвоке додаје напомену #[но_мангле].

Како функција позивања прима параметре за обављање трансакције?

Библиотека онтио_стд обезбеђује функцију рунтиме::инпут() за примање параметара за обављање трансакције. Програмери могу да користе ЗероЦопиСоурце да десериализују резултујући низ бајтова. У којој је први читани низ бајтова име методе позивања, а затим параметри методе.

Како се враћа резултат извршења уговора?

Функција рунтиме::рет, коју обезбеђује библиотека онтио_стд, враћа резултат извршења методе.

Довршена функција позивања изгледа овако:

Како написати ВебАссембли паметни уговор на Онтологи мрежи? Део 1: Руст

Серијализација и десеријализација података уговора

У процесу развоја уговора, програмери се увек суочавају са проблемима серијализације и десеријализације, посебно како да похране структурни тип података у базу података и како да десериализују низ бајтова који се чита из базе података да би се добио тип података структуре.

Библиотека онтио_стд обезбеђује интерфејсе декодера и енкодера за серијализацију и десериализацију података. Поља структуре такође имплементирају интерфејсе декодера и енкодера тако да структура може бити серијализована и десеријализована. Инстанце класе Синк су потребне када се серијализују различити типови података. Инстанца класе Синк има поље буф типа скупа које чува податке типа бајта, а сви серијализовани подаци се чувају у буф-у.

За податке фиксне дужине (нпр.: бајт, у16, у32, у64, итд.), подаци се директно конвертују у низ бајтова и затим чувају у буф-у; за податке нефиксне дужине, прво морате серијализирати дужину, а затим Ддата (као што су неозначени цели бројеви непознате величине, укључујући у16, у32 или у64, итд.).

Десеријализација је сушта супротност. За сваки метод серијализације постоји одговарајући метод десеријализације. Десеријализација захтева употребу инстанци класе Соурце. Ова инстанца класе има два поља буф и пос. Буф се користи за чување података који ће бити десеријализовани, а пос се користи за чување тренутне позиције читања. Када се чита одређени тип података, ако знате његову дужину, можете га прочитати директно, за податке непознате дужине прво прочитајте дужину, а затим прочитајте садржај.

Приступ и ажурирање података у ланцу

Онтологи-васм-цдт-руст - инкапсулира оперативни метод за рад са подацима у ланцу, што је погодно за програмере да имплементирају операције као што су додавање, брисање, промена и испитивање података у ланцу на следећи начин:

  • база података::гет(кључ) - користи се за тражење података из ланца, а кључ захтева имплементацију АсРеф интерфејса;
  • база података::пут(кључ, вредност) - користи се за складиштење података на мрежи. Кључ захтева имплементацију АсРеф интерфејса, а вредност захтева имплементацију Енцодер интерфејса;
  • база података::делете(кључ) - користи се за уклањање података из ланца, а кључ захтева имплементацију АсРеф интерфејса.

Тестирање уговора

Када имплементирамо уговорне методе, потребан нам је приступ подацима у ланцу и потребна нам је одговарајућа виртуелна машина за извршавање бајт кода уговора, тако да је обично неопходно применити уговор у ланац ради тестирања. Али овај метод тестирања је проблематичан. Да би се програмерима олакшало тестирање уговора, библиотека онтио_стд обезбеђује лажни модул за тестирање. Овај модул обезбеђује симулацију података у ланцу, што олакшава програмерима да јединице тестирања метода у уговору. Конкретни примери се могу наћи овде.

Отклањање грешака у уговору

цонсоле::дебуг(мсг) штампа информације о отклањању грешака током отклањања грешака у уговору. Информације о поруци ће бити унете у датотеку дневника чвора. Предуслов је да се ниво датотеке евиденције постави на режим за отклањање грешака када се покреће локални тестни чвор за онтологију.

рунтиме::нотифи(мсг) штампа одговарајуће информације за отклањање грешака док се уговор отклања грешке. Овај метод ће сачувати унете информације у ланац и може бити упитан из ланца помоћу методе гетСмартЦодеЕвент.

Чланак су превели уредници Хасхрате&Схарес посебно за ОнтологиРуссиа. кликните

Да ли сте програмер? Придружите се нашој техничкој заједници на Дискорд. Такође, погледајте Центар за програмере на нашој веб страници, где можете пронаћи алатке за програмере, документацију и још много тога.

онтологија

Извор: ввв.хабр.цом

Додај коментар