Pagkat-on sa pagsulat sa Waves smart nga mga kontrata sa RIDE ug RIDE4DAPPS. Bahin 1 (Multi-user nga pitaka)

Pagkat-on sa pagsulat sa Waves smart nga mga kontrata sa RIDE ug RIDE4DAPPS. Bahin 1 (Multi-user nga pitaka)

Hello sa tanan!

Bag-ohay lang, Waves Labs gipahibalo kompetisyon para sa mga developers nga gipahinungod sa pagpagawas sa RIDE smart contract language extension para sa desentralisadong mga aplikasyon Ride4Dapps ngadto sa test network!

Gipili namo ang kaso sa DAO tungod kay Ventuary nagplano sa paghimo sa mga dApps nga adunay mga sosyal nga gimbuhaton: pagboto, pagkolekta sa pondo, pagdumala sa pagsalig, ug uban pa.
Nagsugod kami sa usa ka yano nga pananglitan sa Mga sesyon sa Q&A ug sa RIDE IDE - pananglitan uban sa gipaambit nga pitaka.

Atong tan-awon kini nga pananglitan, pagsulay sa mga pangagpas ug tan-awa ang pipila ka mga katingad-an:

Ihatag kanamo si Alice - Tag-iya sa dApp
Si Boob ug Cooper kay Alice partners, co-founder sa Alice-BC DAO
Si Neli usa ka tag-iya og negosyo nga nagkinahanglan og financing
Bank - usa ka bangko nga nag-apod-apod sa mga token

Stage 1. Initialization sa mga balanse

Aron makadawat mga token sa network sa pagsulay sa mga balud, kinahanglan nimo nga kontakon gripo ug ipakita ang adres diin ipadala ang mga token.
Makita nimo ang adres sa IDE pinaagi sa pag-abli sa mga detalye sa imong account.
Gipasiugda namo ang Bank 10 WAVES. Dayon among gisusi nga niabot sila pinaagi sa block ug transaction browser: tigrebyu

Karon atong iapod-apod ang mga token gikan sa bangko ngadto sa uban nga mga partisipante. (Notes: Ang tanang transaksyon sa waves network dili libre, mao nga gikinahanglan ang minimum positive balance para sa tanang partisipante sa paghimo og mga transaksyon).

1 WAVES = 100000000 units (wavelets), tungod kay ang mga kantidad mahimo ra nga integer
0.01 WAVES (Bayad sa Transaksyon) = 1000000

Bangko -> [3 WAVES] -> Alice, pinaagi sa TransferTransaction (Type: 4).

Among gisusi nga ang env.SEED diin ang mga transaksyon gipirmahan motakdo sa among Bangko:
Pagkat-on sa pagsulat sa Waves smart nga mga kontrata sa RIDE ug RIDE4DAPPS. Bahin 1 (Multi-user nga pitaka)
οΏΌ
Kung wala kay katugbang nga pulong sa binhi, ibalhin lang kini sa tab nga Mga Account ug susihon pag-usab.
Pagkahuman niini, naghimo kami, gipahibalo ug gipirmahan ang usa ka transaksyon alang sa pagbalhin sa 3 WAVES Alice.
Mahimo usab nimo mahibal-an ang datos ni Alice pinaagi sa env.accounts variable. Nagsugod ang pagnumero gikan sa 0, mao nga si Alice env.accounts[1].
Pagkat-on sa pagsulat sa Waves smart nga mga kontrata sa RIDE ug RIDE4DAPPS. Bahin 1 (Multi-user nga pitaka)

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

Ang resulta mahimo usab nga maobserbahan sa browser, usa ka link niini ibalik kanamo dayon pagkahuman sa pagpatay mga transaksyon.

Gisiguro namo nga ang balanse ni Alice mapuno sa 3 WAVES, ug ang balanse sa bangko magpabilin sa 10 - 3 - 0.01 = 0.699.
Pagkat-on sa pagsulat sa Waves smart nga mga kontrata sa RIDE ug RIDE4DAPPS. Bahin 1 (Multi-user nga pitaka)

Pagkat-on sa pagsulat sa Waves smart nga mga kontrata sa RIDE ug RIDE4DAPPS. Bahin 1 (Multi-user nga pitaka)

Nagpadala kami kang Boob ug Cooper ug 3 ka WAVES matag usa, ug Neli, Xena ug Mark 0.2 WAVES matag usa sa samang paagi.
(Notes: Naghimo kami usa ka sayup nga karakter ug gipadala ang Neli 0.02 WAVES. Pag-amping!)

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

Human sa pagpuno sa mga balanse sa tanan nga mga partisipante, atong makita:
Pagkat-on sa pagsulat sa Waves smart nga mga kontrata sa RIDE ug RIDE4DAPPS. Bahin 1 (Multi-user nga pitaka)

Stage 2. Paghimo og dApp account

Nagkasabot mi nga si Alice ang magbubuhat ug tag-iya sa desentralisadong aplikasyon.
Adto sa Accounts, ibutang kini isip SEED ug susiha ang env.SEED nga mga tugma ni Alice.

Atong sulayan ang pag-instalar sa pinakasimple nga posible nga script (kontrata) sa account ni Alice.
Ang mga intelihente nga kontak sa Waves mao ang mga predicate nga nagdili o nagtugot sa bisan unsang matang sa paggawas nga transaksyon nga mahitabo sa ilawom sa piho nga mga kondisyon. Sa kini nga kaso, kini nga kahimtang kanunay. Ang kodigo sa kontrata tinuod. Tawga deploy().

Pagkat-on sa pagsulat sa Waves smart nga mga kontrata sa RIDE ug RIDE4DAPPS. Bahin 1 (Multi-user nga pitaka)

Bayad kada setScript nga transaksyon 1400000/100000000 = 0.014 WAVES. Si Alice adunay 2.986 WAVES nga nahabilin sa iyang balanse.

Atong sulayan karon ang pag-instalar sa mas komplikado nga smart contract logic sa Alice account, nga gihulagway sa pananglitan

Ride4Dapps karon naglakip sa 2 ka bag-ong mga matang sa anotasyon:

  1. @Matawagan(i) β€” nagkuha ingon usa ka parameter i, data bahin sa kung unsang account ang gitawag / gipirmahan ang transaksyon. Kini ang resulta sa kini nga function nga nagtino sa pagbag-o sa kahimtang sa dApp account. Ang ubang mga account makahimo og mga transaksyon ug magpatuman sa mga gimbuhaton uban niini nga anotasyon ug mag-usab sa kahimtang sa dApp account.
  2. @Verifier(tx) β€” Transaksyon verifier uban sa transaksyon tx parameter. Nahiuyon sa predicate logic gikan sa RIDE. Niini nga ekspresyon nga mahimo nimong tugutan o idili ang dugang nga mga pagbag-o sa lohika sa mga smart nga kontrata sa dApp account.

Buhaton nato dapp account isip komon nga pitaka para sa tanang partisipante.
Pagkat-on sa pagsulat sa Waves smart nga mga kontrata sa RIDE ug RIDE4DAPPS. Bahin 1 (Multi-user nga pitaka)

Aron masusi kung unsang kontrata ang aktibo karon sa imong account, mahimo nimong kopyahon ang base64 code sa smart contract sa block explorer ug mailhan kini gamit ang decompiler (alang sa panig-ingnan)
Pagkat-on sa pagsulat sa Waves smart nga mga kontrata sa RIDE ug RIDE4DAPPS. Bahin 1 (Multi-user nga pitaka)
Pagkat-on sa pagsulat sa Waves smart nga mga kontrata sa RIDE ug RIDE4DAPPS. Bahin 1 (Multi-user nga pitaka)
Pagkat-on sa pagsulat sa Waves smart nga mga kontrata sa RIDE ug RIDE4DAPPS. Bahin 1 (Multi-user nga pitaka)

Gisiguro namo nga ang lohika sa smart nga kontrata mohaum sa among gipaabot.
Si Alice adunay 2.972 WAVES nga nahabilin sa iyang balanse.

Kini nga dApp nagsubay kung pila ang kontribusyon sa matag partisipante sa komon nga pundo pinaagi sa usa ka mekanismo transaksyon sa datos - DataEntry(currentKey, newAmount), diin ang currentKey mao ang account nga nagtawag sa function sa pagdeposito, ug ang newAmount mao ang kantidad sa gipuno nga balanse.

Si Boob ug Cooper naghimo sa ilang mga deposito sa dApp account nga adunay 1 WAVES.
Pagkat-on sa pagsulat sa Waves smart nga mga kontrata sa RIDE ug RIDE4DAPPS. Bahin 1 (Multi-user nga pitaka)

Nasayop mi ug wala madayon ang transaksyon. Tungod kay, bisan pa sa kamatuoran nga kami kombinsido nga kami naghimo sa usa ka transaksyon alang sa Bob, kami nasayop sa index ug nagpakita sa usa ka Bank account nga walay smart kontrata. Angayan nga timan-an ang usa ka hinungdanon nga punto dinhi - adunay bayad alang sa dili malampuson nga pagsulay sa pagsugod sa mga transaksyon dili matangtang! Si Alice adunay 2.972 WAVES nga nahabilin sa iyang balanse. Si Bob adunay 3 ka WAVE.

Gipadala ni Bob ang 1 ka WAVES sa dApp Account.

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

Pagkat-on sa pagsulat sa Waves smart nga mga kontrata sa RIDE ug RIDE4DAPPS. Bahin 1 (Multi-user nga pitaka)

Si Bob adunay nahabilin nga 1.99 WAVES. Sa ato pa, nagbayad si Bob og 0.01 WAVES nga komisyon

Pagkat-on sa pagsulat sa Waves smart nga mga kontrata sa RIDE ug RIDE4DAPPS. Bahin 1 (Multi-user nga pitaka)

Si Alice adunay 2.972 WAVES sa iyang balanse, karon kini 3.972. Usa ka transaksyon ang narehistro usab sa Alice account, apan walay komisyon nga gisingil gikan sa dApp Account (Alice).
Human mapuno usab ni Cooper ang account, ang balanse ni Alice nahimong 4.972 WAVES.

Pagkat-on sa pagsulat sa Waves smart nga mga kontrata sa RIDE ug RIDE4DAPPS. Bahin 1 (Multi-user nga pitaka)

Mahibal-an nimo kung kinsa ang tag-iya kung pila ang WAVES sa sagad nga pitaka sa block explorer sa tab nga Data.

Gibag-o ni Cooper ang iyang hunahuna bahin sa pagbiya sa kantidad nga 1 WAVES sa kinatibuk-ang pitaka ug nakahukom nga i-withdraw ang katunga sa affinity. Aron mahimo kini, kinahanglan niyang tawagan ang function sa pag-atras.

Pagkat-on sa pagsulat sa Waves smart nga mga kontrata sa RIDE ug RIDE4DAPPS. Bahin 1 (Multi-user nga pitaka)

Bisan pa, nasayop kami pag-usab, tungod kay ang function sa pag-withdraw adunay hingpit nga lainlaing mga parameter ug lahi nga pirma. Kung nagdesinyo ka og mga smart nga kontrata sa RIDE4DAPPS kinahanglan nimong hatagan ug pagtagad kini nga punto

Pagkat-on sa pagsulat sa Waves smart nga mga kontrata sa RIDE ug RIDE4DAPPS. Bahin 1 (Multi-user nga pitaka)

Ang Cooper karon adunay 2.48 WAVES sa balanse niini. Sumala niini, 3 WAVES - 1 - 0.01, ug unya + 0.5 - 0.01. Sumala niini, ang matag tawag sa pagdeposito ug pag-withdraw nagkantidad ug 0.01 WAVES. Ingon nga resulta, ang mga entry sa dApps owners table nausab sama sa mosunod.

Pagkat-on sa pagsulat sa Waves smart nga mga kontrata sa RIDE ug RIDE4DAPPS. Bahin 1 (Multi-user nga pitaka)

Nakahukom usab si Bob nga mag-withdraw og kwarta gikan sa gipaambit nga pitaka, apan nasayop ug misulay sa pag-withdraw og 1.5 WAVES.

Pagkat-on sa pagsulat sa Waves smart nga mga kontrata sa RIDE ug RIDE4DAPPS. Bahin 1 (Multi-user nga pitaka)

Bisan pa, ang intelihente nga kontrata adunay tseke alang sa kini nga kahimtang.

Si Xena usa ka scammer, gisulayan niya nga i-withdraw ang 1 WAVES sa kinatibuk-ang account.

Pagkat-on sa pagsulat sa Waves smart nga mga kontrata sa RIDE ug RIDE4DAPPS. Bahin 1 (Multi-user nga pitaka)

Wala usab kini nahimo alang kaniya.

Sa sunod nga bahin, atong tan-awon ang mas komplikado nga mga isyu nga may kalabutan sa pagkadili hingpit sa Alice dApp Account.

Source: www.habr.com

Idugang sa usa ka comment