Научите да пишете Вавес паметне уговоре на РИДЕ и РИДЕ4ДАППС. 1. део (новчаник за више корисника)

Научите да пишете Вавес паметне уговоре на РИДЕ и РИДЕ4ДАППС. 1. део (новчаник за више корисника)

Поздрав свима!

Недавно, Вавес Лабс најавио такмичење за програмере посвећено издавању РИДЕ проширења језика паметног уговора за децентрализоване апликације Риде4Даппс у тестну мрежу!

Изабрали смо случај ДАО јер Вентуари планира да развије дАппс са друштвеним функцијама: гласање, прикупљање средстава, управљање поверењем итд.
Почели смо са једноставним примером у Сесије питања и одговора и РИДЕ ИДЕ - пример са заједнички новчаник.

Хајде да погледамо овај пример, тестирамо хипотезе и погледамо неке необичности:

Дајте нам Алису - власника апликације
Бооб и Цоопер су Алице партнери, суоснивачи Алице-БЦ ДАО
Нели је власница предузећа којој су потребна финансијска средства
Банка - банка која дистрибуира жетоне

Фаза 1. Иницијализација биланса

Да бисте добили токене на мрежи за тестирање таласа, потребно је да контактирате славина и назначите адресу на коју треба послати токене.
Адресу можете пронаћи у ИДЕ-у тако што ћете отворити детаље свог налога.
Издвајамо банку 10 ТАЛАСОВА. Затим проверавамо да ли су стигли преко претраживача блокова и трансакција: рецензент

Хајде сада да поделимо жетоне из банке осталим учесницима. (Напомене: Све трансакције на таласној мрежи нису бесплатне, тако да је потребан минимални позитиван биланс за све учеснике да би извршили трансакције).

1 ТАЛАС = 100000000 јединица (таласови), пошто износи могу бити само цео број
0.01 ВАВЕС (накнада за трансакцију) = 1000000

Банка -> [3 ТАЛАСА] -> Алиса, преко ТрансферТрансацтион (Тип: 4).

Проверавамо да ли енв.СЕЕД из којег се потписују трансакције одговара нашој банци:
Научите да пишете Вавес паметне уговоре на РИДЕ и РИДЕ4ДАППС. 1. део (новчаник за више корисника)

Ако немате одговарајућу почетну фразу, само се пребаците на њу на картици Налози и проверите поново.
Након овога креирамо, објављујемо и потписујемо трансакцију за пренос 3 ВАВЕС Алице.
Такође можете сазнати Алисине податке преко променљиве енв.аццоунтс. Нумерисање почиње од 0, тако да је Алиса енв.аццоунтс[1].
Научите да пишете Вавес паметне уговоре на РИДЕ и РИДЕ4ДАППС. 1. део (новчаник за више корисника)

broadcast(transfer({recipient:address(env.accounts[1]), amount: 300000000, fee: 1000000}))

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

Уверавамо се да Алисин биланс буде допуњен за 3 ТАЛАСА, а банковни салдо остане на 10 - 3 - 0.01 = 0.699.
Научите да пишете Вавес паметне уговоре на РИДЕ и РИДЕ4ДАППС. 1. део (новчаник за више корисника)

Научите да пишете Вавес паметне уговоре на РИДЕ и РИДЕ4ДАППС. 1. део (новчаник за више корисника)

Шаљемо Бооб и Цоопер по 3 ТАЛАСА, а Нели, Ксена и Марк по 0.2 ТАЛАСА на исти начин.
(Напомене: Направили смо грешку од једног знака и послали Нели 0.02 ВАВЕС. Будите опрезни!)

broadcast(transfer({recipient:address(env.accounts[4]), amount: 20000000, fee: 1000000}))

Након допуне стања свих учесника, видимо:
Научите да пишете Вавес паметне уговоре на РИДЕ и РИДЕ4ДАППС. 1. део (новчаник за више корисника)

Фаза 2. Креирајте дАпп налог

Договорили смо се да Алис буде креатор и власник децентрализоване апликације.
Идите на Налози, поставите га као СЕЕД и проверите да ли енв.СЕЕД одговара Алиси.

Хајде да покушамо да инсталирамо најједноставнију могућу скрипту (уговор) на Алисин налог.
Паметни контакти у Вавес-у су предикати који забрањују или дозвољавају било коју врсту одлазне трансакције под одређеним условима. У овом случају, ово стање је УВЕК. Код уговора је истинит. Позовите деплои().

Научите да пишете Вавес паметне уговоре на РИДЕ и РИДЕ4ДАППС. 1. део (новчаник за више корисника)

Накнада по сетСцрипт трансакцији 1400000/100000000 = 0.014 ВАВЕС. Алис има још 2.986 ТАЛАСА на свом салду.

Покушајмо сада да инсталирамо сложенију логику паметног уговора на Алице налог, описан у пример

Риде4Даппс сада укључује 2 нова типа напомена:

  1. @Цалабле(и) — узима као параметар и податке о томе који рачун је позвао/потписао трансакцију. Резултат ове функције је та која одређује промену стања дАпп налога. Други налози могу да креирају трансакције и извршавају функције са овом напоменом и мењају стање дАпп налога.
  2. @Верификатор(тк) — Верификатор трансакције са параметром тк трансакције. Одговара логици предиката из РИДЕ. У овом изразу можете дозволити или забранити даље промене логике паметних уговора на дАпп налогу.

Хајде да урадимо дАпп рачун као заједнички новчаник за све учеснике.
Научите да пишете Вавес паметне уговоре на РИДЕ и РИДЕ4ДАППС. 1. део (новчаник за више корисника)

Да бисте проверили који уговор је тренутно активан на вашем налогу, можете копирати басе64 код паметног уговора у претраживач блокова и препознати га помоћу декомпајлера (на пример)
Научите да пишете Вавес паметне уговоре на РИДЕ и РИДЕ4ДАППС. 1. део (новчаник за више корисника)
Научите да пишете Вавес паметне уговоре на РИДЕ и РИДЕ4ДАППС. 1. део (новчаник за више корисника)
Научите да пишете Вавес паметне уговоре на РИДЕ и РИДЕ4ДАППС. 1. део (новчаник за више корисника)

Водимо рачуна да логика паметног уговора одговара ономе што очекујемо.
Алис има још 2.972 ТАЛАСА на њеном салду.

Ова дАпп прати колико сваки учесник доприноси заједничком фонду кроз механизам трансакција података — Дата Ентри(цуррентКеи, невАмоунт), где је цуррентКеи рачун који позива функцију депозита, а невАмоунт је вредност допуњеног стања.

Бооб и Цоопер уплаћују своје депозите на дАпп рачун са 1 ВАВЕС.
Научите да пишете Вавес паметне уговоре на РИДЕ и РИДЕ4ДАППС. 1. део (новчаник за више корисника)

Направимо грешку и трансакција не пролази. Пошто смо, упркос чињеници да смо били уверени да вршимо трансакцију у име Боба, направили грешку у индексу и навели банковни рачун који нема паметни уговор. Овде је вредно напоменути важну тачку - постоји накнада за неуспешне покушаје покретања трансакција не може се уклонити! Алис има још 2.972 ТАЛАСА на њеном салду. Боб има 3 ТАЛАСА.

Боб је послао 1 ВАВЕС на дАпп налог.

broadcast(invokeScript({dappAddress: address(env.accounts[1]), call:{function:"deposit",args:[]}, payment: [{amount: 100000000, asset:null }]}))

Научите да пишете Вавес паметне уговоре на РИДЕ и РИДЕ4ДАППС. 1. део (новчаник за више корисника)

Бобу је остало 1.99 ТАЛАСА. То јест, Боб је платио 0.01 ВАВЕС провизију

Научите да пишете Вавес паметне уговоре на РИДЕ и РИДЕ4ДАППС. 1. део (новчаник за више корисника)

Алиса је имала 2.972 ТАЛАСА на свом билансу, сада је 3.972. Трансакција је такође регистрована на Алице налогу, али није наплаћена провизија са дАпп налога (Алице).
Након што је Купер такође допунио рачун, Алисин биланс је постао 4.972 ТАЛАСА.

Научите да пишете Вавес паметне уговоре на РИДЕ и РИДЕ4ДАППС. 1. део (новчаник за више корисника)

Можете сазнати ко поседује колико ВАВЕС-а у заједничком новчанику у претраживачу блокова на картици Подаци.

Купер се предомислио да остави износ од 1 ВАВЕС на општем новчанику и одлучио да повуче половину афинитета. Да би то урадио, мора позвати функцију повлачења.

Научите да пишете Вавес паметне уговоре на РИДЕ и РИДЕ4ДАППС. 1. део (новчаник за више корисника)

Међутим, опет смо погрешили, пошто функција повлачења има потпуно другачије параметре и другачији потпис. Када дизајнирате паметне уговоре на РИДЕ4ДАППС, обратите пажњу на ову тачку

Научите да пишете Вавес паметне уговоре на РИДЕ и РИДЕ4ДАППС. 1. део (новчаник за више корисника)

Цоопер сада има 2.48 ТАЛАСА у свом билансу стања. Сходно томе, 3 ТАЛАСА - 1 - 0.01, а затим + 0.5 - 0.01. Сходно томе, сваки позив за депозит и повлачење кошта 0.01 ВАВЕС. Као резултат тога, уноси у табели власника дАппс-а су се променили на следећи начин.

Научите да пишете Вавес паметне уговоре на РИДЕ и РИДЕ4ДАППС. 1. део (новчаник за више корисника)

Боб је такође одлучио да повуче нешто новца из заједничког новчаника, али је направио грешку и покушао да подигне 1.5 ВАВЕС.

Научите да пишете Вавес паметне уговоре на РИДЕ и РИДЕ4ДАППС. 1. део (новчаник за више корисника)

Међутим, паметни уговор је имао проверу за ову ситуацију.

Ксена је преварант, покушала је да повуче 1 ВАВЕС са укупног рачуна.

Научите да пишете Вавес паметне уговоре на РИДЕ и РИДЕ4ДАППС. 1. део (новчаник за више корисника)

Ни њој то није пошло за руком.

У следећем делу ћемо размотрити сложенија питања везана за несавршеност Алице дАпп налога.

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

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