RIDE жана RIDE4DAPPSде Waves акылдуу келишимдерин жазууну үйрөнүү. 1-бөлүк (Көп колдонуучу капчык)

RIDE жана RIDE4DAPPSде Waves акылдуу келишимдерин жазууну үйрөнүү. 1-бөлүк (Көп колдонуучу капчык)

Баарына салам!

Жакында, Waves Labs жарыялады децентралдаштырылган тиркемелер Ride4Dapps үчүн RIDE акылдуу келишим тилинин кеңейтүүсүн сыноо тармагына чыгарууга арналган иштеп чыгуучулар үчүн сынак!

Биз DAO ишти тандадык, анткени Вентуар социалдык функциялары бар dApps иштеп чыгууну пландаштырууда: добуш берүү, каражат чогултуу, ишенимдүү башкаруу ж.б.
Биз жөнөкөй мисал менен баштадык Суроо-жооп сессиялары жана RIDE IDE - менен мисал жалпы капчык.

Келгиле, бул мисалды карап көрөлү, гипотезаларды сынап, кээ бир кызыктарды карап көрөлү:

Бизге Алиса болсун - dApp ээси
Буб жана Купер Алиса өнөктөштөрү, Alice-BC DAOнун тең негиздөөчүлөрү
Нели каржылоого муктаж бизнес ээси
Банк - Токендерди таратуучу банк

1-этап. Баланстарды инициализациялоо

Токендерди толкундарды тестирлөө тармагында алуу үчүн байланышуу керек суунун краны жана токендерди жөнөтө турган даректи көрсөтүңүз.
Каттоо эсебиңиздин чоо-жайын ачып, даректи IDEден таба аласыз.
Биз Банк 10 ТОЛКУНУ баса белгилейбиз. Андан кийин биз алардын блок жана транзакция браузери аркылуу келгендигин текшеребиз: сынчы

Эми калган катышуучуларга банктан токендерди тараталы. (Эскертүү: толкундар тармагындагы бардык транзакциялар бекер эмес, андыктан бүтүмдөрдү жасоо үчүн бардык катышуучулар үчүн минималдуу оң баланс талап кылынат).

1 ТОЛКУНДАР = 100000000 бирдик (толкундар), анткени суммалар бүтүн сан болушу мүмкүн
0.01 WAVES (Транзакция комиссиясы) = 1000000

Банк -> [3 ТОЛКУН] -> Алиса, TransferTransaction аркылуу (Түрү: 4).

Биз транзакцияларга кол коюлган env.SEED биздин Банкка дал келээрин текшеребиз:
RIDE жана RIDE4DAPPSде Waves акылдуу келишимдерин жазууну үйрөнүү. 1-бөлүк (Көп колдонуучу капчык)

Эгер сизде дал келген негизги сөз айкашы жок болсо, жөн гана ага Каттоо эсеби өтмөгүнөн которулуп, кайра текшериңиз.
Андан кийин, биз түзөбүз, жарыялайбыз жана 3 WAVES Алиса өткөрүп берүү үчүн бүтүмгө кол коебуз.
Ошондой эле Элистин маалыматтарын env.accounts өзгөрмө аркылуу биле аласыз. Номерлөө 0дөн башталат, ошондуктан Алиса env.accounts[1] болуп саналат.
RIDE жана RIDE4DAPPSде Waves акылдуу келишимдерин жазууну үйрөнүү. 1-бөлүк (Көп колдонуучу капчык)

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

Натыйжаны браузерден да байкоого болот, ага шилтеме аткарылгандан кийин дароо бизге кайтарылып берилет бүтүмдөр.

Биз Алисанын балансы 3 ТОЛКУНУ менен толукталганына ынанабыз, ал эми банк балансы 10 - 3 - 0.01 = 0.699 бойдон калууда.
RIDE жана RIDE4DAPPSде Waves акылдуу келишимдерин жазууну үйрөнүү. 1-бөлүк (Көп колдонуучу капчык)

RIDE жана RIDE4DAPPSде Waves акылдуу келишимдерин жазууну үйрөнүү. 1-бөлүк (Көп колдонуучу капчык)

Биз Boob жана Cooper 3 WAVES ар бирине, ал эми Neli, Xena жана Mark 0.2 WAVES ар бирине бир эле жол менен жөнөтөбүз.
(Эскертүү: Биз бир белгиден ката кетирип, Neli 0.02 WAVES жөнөттүк. Абайлагыла!)

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

Бардык катышуучулардын баланстарын толтургандан кийин, биз көрүп жатабыз:
RIDE жана RIDE4DAPPSде Waves акылдуу келишимдерин жазууну үйрөнүү. 1-бөлүк (Көп колдонуучу капчык)

2-этап. dApp каттоо эсебин түзүңүз

Биз Алиса борбордон ажыратылган тиркеменин жаратуучусу жана ээси болорун макулдаштык.
Каттоо эсептерине өтүп, аны SEED катары орнотуңуз жана env.SEED Алисага дал келгенин текшериңиз.

Келгиле, Элистин эсебине мүмкүн болушунча жөнөкөй сценарийди (контракт) орнотууга аракет кылалы.
Толкундардагы акылдуу байланыштар белгилүү бир шарттарда чыгуучу транзакциянын ар кандай түрүнө тыюу салган же уруксат берген предикаттар. Бул учурда, бул шарт ДАЙЫМ. Келишим коду чындык. Call deploy().

RIDE жана RIDE4DAPPSде Waves акылдуу келишимдерин жазууну үйрөнүү. 1-бөлүк (Көп колдонуучу капчык)

setScript транзакциясы үчүн комиссия 1400000/100000000 = 0.014 ТОЛКУНУ. Алисанын балансында 2.986 ТОЛКУН бар.

Келгиле, азыр сүрөттөлгөн Алиса эсебине татаалыраак акылдуу келишим логикасын орнотууга аракет кылалы мисал

Ride4Dapps эми аннотациянын 2 жаңы түрүн камтыйт:

  1. @Callable(i) — i параметри катары транзакцияга кайсы эсепке чакырган/кол койгону тууралуу маалыматтарды алат. Бул dApp эсебинин абалынын өзгөрүшүн аныктаган бул функциянын натыйжасы. Башка эсептер транзакцияларды түзүп, бул аннотация менен функцияларды аткарып, dApp эсебинин абалын өзгөртө алат.
  2. @Verifier(tx) — транзакция tx параметри менен транзакцияны текшерүүчү. RIDE предикат логикасына туура келет. Дал ушул сөз айкашында сиз dApp каттоо эсебинде акылдуу келишимдердин логикасын андан ары өзгөртүүгө уруксат бере аласыз же тыюу сала аласыз.

кылалы dapper бардык катышуучулар үчүн жалпы капчык катары эсеп.
RIDE жана RIDE4DAPPSде Waves акылдуу келишимдерин жазууну үйрөнүү. 1-бөлүк (Көп колдонуучу капчык)

Учурда аккаунтуңузда кайсы контракт активдүү экенин текшерүү үчүн, блок изилдөөчүсүнө акылдуу келишимдин base64 кодун көчүрүп, аны декомпилятордун жардамы менен тааный аласыз (Мисалы,)
RIDE жана RIDE4DAPPSде Waves акылдуу келишимдерин жазууну үйрөнүү. 1-бөлүк (Көп колдонуучу капчык)
RIDE жана RIDE4DAPPSде Waves акылдуу келишимдерин жазууну үйрөнүү. 1-бөлүк (Көп колдонуучу капчык)
RIDE жана RIDE4DAPPSде Waves акылдуу келишимдерин жазууну үйрөнүү. 1-бөлүк (Көп колдонуучу капчык)

Биз акылдуу келишимдин логикасы биз күткөн нерсеге дал келишине ынанабыз.
Алисанын балансында 2.972 ТОЛКУН бар.

Бул dApp механизм аркылуу ар бир катышуучу жалпы фондго канча салым кошконуна көз салып турат маалымат транзакциясы — DataEntry (учурдагы ачкыч, жаңы сумма), мында currentKey – депозиттик функцияны чакырган эсеп, ал эми newAmount – толукталган баланстын мааниси.

Boob жана Cooper 1 WAVES менен dApp эсебине депозиттерди салышат.
RIDE жана RIDE4DAPPSде Waves акылдуу келишимдерин жазууну үйрөнүү. 1-бөлүк (Көп колдонуучу капчык)

Биз ката кетирип, транзакция өтпөйт. Анткени, биз Бобдун атынан транзакция жасап жатканыбызга ынанганыбызга карабастан, индексте ката кетирип, акылдуу келишими жок Банк эсебин көрсөттүк. Бул жерде бир маанилүү жагдайды белгилей кетүү керек - транзакцияларды баштоо үчүн ийгиликсиз аракеттер үчүн комиссия бар алып салуу мүмкүн эмес! Алисанын балансында 2.972 ТОЛКУН бар. Бобдун 3 ТОЛКУНУ бар.

Боб dApp Каттоо эсебине 1 ТОЛКУН жөнөттү.

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

RIDE жана RIDE4DAPPSде Waves акылдуу келишимдерин жазууну үйрөнүү. 1-бөлүк (Көп колдонуучу капчык)

Бобдун 1.99 ТОЛКУНУ калды. Башкача айтканда, Боб 0.01 WAVES комиссиясын төлөгөн

RIDE жана RIDE4DAPPSде Waves акылдуу келишимдерин жазууну үйрөнүү. 1-бөлүк (Көп колдонуучу капчык)

Алисанын балансында 2.972 ТОЛКУН бар болчу, азыр 3.972. Элис эсебинде транзакция да катталган, бирок dApp аккаунтунан (Алиса) комиссия алынган эмес.
Купер да эсепти толтургандан кийин, Элистин балансы 4.972 WAVES болуп калды.

RIDE жана RIDE4DAPPSде Waves акылдуу келишимдерин жазууну үйрөнүү. 1-бөлүк (Көп колдонуучу капчык)

Жалпы капчыкта канча ТОЛКУН кимге таандык экенин Блок изилдөөчүсүнөн Маалыматтар өтмөгүнөн биле аласыз.

Купер жалпы капчыгында 1 ТОЛКУНдун суммасын калтыруу тууралуу оюн өзгөрттү жана жакындыктын жарымын алып коюуну чечти. Бул үчүн, ал алып салуу функциясын чакырышы керек.

RIDE жана RIDE4DAPPSде Waves акылдуу келишимдерин жазууну үйрөнүү. 1-бөлүк (Көп колдонуучу капчык)

Бирок, биз кайра жаңылдык, анткени алуу функциясы такыр башка параметрлерге жана башка кол тамгага ээ. RIDE4DAPPSде акылдуу контракттарды иштеп чыкканыңызда, бул пунктка көңүл бурушуңуз керек

RIDE жана RIDE4DAPPSде Waves акылдуу келишимдерин жазууну үйрөнүү. 1-бөлүк (Көп колдонуучу капчык)

Купердин балансында азыр 2.48 ТОЛКУН бар. Демек, 3 ТОЛКУН - 1 - 0.01, анан + 0.5 - 0.01. Демек, депозитке жана алууга ар бир чалуу 0.01 WAVES турат. Натыйжада, dApps ээлеринин таблицасындагы жазуулар төмөнкүдөй өзгөрдү.

RIDE жана RIDE4DAPPSде Waves акылдуу келишимдерин жазууну үйрөнүү. 1-бөлүк (Көп колдонуучу капчык)

Боб да жалпы капчыктан бир аз акча алууну чечти, бирок ката кетирип, 1.5 WAVES алууга аракет кылды.

RIDE жана RIDE4DAPPSде Waves акылдуу келишимдерин жазууну үйрөнүү. 1-бөлүк (Көп колдонуучу капчык)

Бирок, акылдуу келишим бул жагдайды текшерүү болгон.

Xena - алдамчы, ал жалпы эсептен 1 WAVES алууга аракет кылган.

RIDE жана RIDE4DAPPSде Waves акылдуу келишимдерин жазууну үйрөнүү. 1-бөлүк (Көп колдонуучу капчык)

Ал үчүн да жакшы болгон жок.

Кийинки бөлүктө биз Alice dApp Каттоо эсебинин жеткилеңсиздигине байланыштуу татаалыраак маселелерди карап чыгабыз.

Source: www.habr.com

Комментарий кошуу