LÀr dig skriva Waves smarta kontrakt pÄ RIDE och RIDE4DAPPS. Del 1 (Multi-anvÀndar plÄnbok)

LÀr dig skriva Waves smarta kontrakt pÄ RIDE och RIDE4DAPPS. Del 1 (Multi-anvÀndar plÄnbok)

Hej alla!

PÄ senare tid, Waves Labs meddelat tÀvling för utvecklare dedikerade till lanseringen av RIDE smart kontraktssprÄktillÀgg för decentraliserade applikationer Ride4Dapps in i testnÀtverket!

Vi valde DAO-fallet pga Ventuarium planerar att utveckla dApps med sociala funktioner: röstning, insamling, förtroendehantering, etc.
Vi började med ett enkelt exempel i FrÄgestunder och RIDE IDE - exempel med delad plÄnbok.

LÄt oss titta pÄ det hÀr exemplet, testa hypoteser och titta pÄ nÄgra konstigheter:

LÄt oss ha Alice - dApp-Àgare
Boob och Cooper Àr Alice-partners, medgrundare av Alice-BC DAO
Neli Àr en företagare som behöver finansiering
Bank - en bank som delar ut polletter

Steg 1. Initiering av saldon

För att ta emot tokens pÄ waves testnÀtverket mÄste du kontakta kran och ange adressen till vilken tokens ska skickas.
Du hittar adressen i IDE genom att öppna dina kontouppgifter.
Vi lyfter fram Bank 10 WAVES. Sedan kontrollerar vi att de kom via block- och transaktionswebblÀsaren: recensent

LÄt oss nu dela ut polletter frÄn banken till resten av deltagarna. (AnmÀrkningar: Alla transaktioner pÄ waves-nÀtverket Àr inte gratis, sÄ ett minsta positivt saldo krÀvs för att alla deltagare ska kunna göra transaktioner).

1 VÅGOR = 100000000 enheter (vĂ„gor), eftersom belopp bara kan vara heltal
0.01 WAVES (Transaktionsavgift) = 1000000

Bank -> [3 VÅGOR] -> Alice, via TransferTransaction (Typ: 4).

Vi kontrollerar att env.SEED frÄn vilket transaktioner undertecknas matchar vÄr bank:
LÀr dig skriva Waves smarta kontrakt pÄ RIDE och RIDE4DAPPS. Del 1 (Multi-anvÀndar plÄnbok)
ïżŒ
Om du inte har en matchande fröfras byter du bara till den pÄ fliken Konton och kollar igen.
Efter detta skapar, tillkÀnnager och undertecknar vi en transaktion för överföring av 3 WAVES Alice.
Du kan ocksÄ ta reda pÄ Alices data genom variabeln env.accounts. Numrering börjar frÄn 0, sÄ Alice Àr env.accounts[1].
LÀr dig skriva Waves smarta kontrakt pÄ RIDE och RIDE4DAPPS. Del 1 (Multi-anvÀndar plÄnbok)

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

Resultatet kan ocksÄ observeras i webblÀsaren, en lÀnk till det kommer att returneras till oss omedelbart efter exekvering transaktioner.

Vi ser till att Alices saldo fylls pÄ med 3 WAVES, och att banksaldot förblir pÄ 10 - 3 - 0.01 = 0.699.
LÀr dig skriva Waves smarta kontrakt pÄ RIDE och RIDE4DAPPS. Del 1 (Multi-anvÀndar plÄnbok)

LÀr dig skriva Waves smarta kontrakt pÄ RIDE och RIDE4DAPPS. Del 1 (Multi-anvÀndar plÄnbok)

Vi skickar Boob och Cooper 3 WAVES vardera, och Neli, Xena och Mark 0.2 WAVES vardera pÄ samma sÀtt.
(AnmÀrkningar: Vi gjorde ett fel med ett tecken och skickade Neli 0.02 WAVES. Var försiktig!)

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

Efter att ha fyllt pÄ saldot för alla deltagare ser vi:
LÀr dig skriva Waves smarta kontrakt pÄ RIDE och RIDE4DAPPS. Del 1 (Multi-anvÀndar plÄnbok)

Steg 2. Skapa ett dApp-konto

Vi kom överens om att Alice skulle vara skaparen och Àgaren av den decentraliserade applikationen.
GÄ till Konton, stÀll in det som SEED och kontrollera env.SEED matchar Alice.

LÄt oss försöka installera det enklaste möjliga skriptet (kontraktet) pÄ Alices konto.
Smarta kontakter i Waves Àr predikat som förbjuder eller tillÄter nÄgon typ av utgÄende transaktion att ske under vissa förhÄllanden. I det hÀr fallet Àr detta tillstÄnd ALLTID. Avtalskoden Àr sann. Ring deploy().

LÀr dig skriva Waves smarta kontrakt pÄ RIDE och RIDE4DAPPS. Del 1 (Multi-anvÀndar plÄnbok)

Avgift per setScript-transaktion 1400000/100000000 = 0.014 VÅGOR. Alice har 2.986 VÅGOR kvar pĂ„ sin balans.

LÄt oss nu försöka installera mer komplex smart kontraktslogik pÄ Alice-kontot, beskrivet i exempel

Ride4Dapps innehÄller nu 2 nya annoteringstyper:

  1. @Callable(i) — tar som parameter i, data om vilket konto som anropade/signerade transaktionen. Det Ă€r resultatet av den hĂ€r funktionen som bestĂ€mmer Ă€ndringen i tillstĂ„ndet för dApp-kontot. Andra konton kan skapa transaktioner och utföra funktioner med denna anteckning och Ă€ndra tillstĂ„ndet för dApp-kontot.
  2. @Verifier(tx) — Transaktionsverifierare med parametern transaktion tx. Motsvarar predikatlogiken frĂ„n RIDE. Det Ă€r i detta uttryck som du kan tillĂ„ta eller förbjuda ytterligare Ă€ndringar av logiken för smarta kontrakt pĂ„ dApp-kontot.

LÄt oss göra Dapp konto som en gemensam plÄnbok för alla deltagare.
LÀr dig skriva Waves smarta kontrakt pÄ RIDE och RIDE4DAPPS. Del 1 (Multi-anvÀndar plÄnbok)

För att kontrollera vilket kontrakt som för nÀrvarande Àr aktivt pÄ ditt konto, kan du kopiera base64-koden för det smarta kontraktet i blockutforskaren och kÀnna igen det med en dekompilator (exempelvis)
LÀr dig skriva Waves smarta kontrakt pÄ RIDE och RIDE4DAPPS. Del 1 (Multi-anvÀndar plÄnbok)
LÀr dig skriva Waves smarta kontrakt pÄ RIDE och RIDE4DAPPS. Del 1 (Multi-anvÀndar plÄnbok)
LÀr dig skriva Waves smarta kontrakt pÄ RIDE och RIDE4DAPPS. Del 1 (Multi-anvÀndar plÄnbok)

Vi ser till att logiken i det smarta kontraktet stÀmmer överens med vad vi förvÀntar oss.
Alice har 2.972 VÅGOR kvar pĂ„ sin balans.

Denna dApp hĂ„ller reda pĂ„ hur mycket varje deltagare bidrar till den gemensamma fonden genom en mekanism datatransaktion — DataEntry(currentKey, newAmount), dĂ€r currentKey Ă€r kontot som anropar insĂ€ttningsfunktionen, och newAmount Ă€r vĂ€rdet pĂ„ det pĂ„fyllda saldot.

Boob och Cooper gör sina insÀttningar till dApp-kontot med 1 WAVES.
LÀr dig skriva Waves smarta kontrakt pÄ RIDE och RIDE4DAPPS. Del 1 (Multi-anvÀndar plÄnbok)

Vi gör ett misstag och transaktionen gĂ„r inte igenom. Eftersom vi, trots att vi var övertygade om att vi gjorde en transaktion pĂ„ uppdrag av Bob, gjorde ett misstag i indexet och angav ett bankkonto som inte har ett smart kontrakt. Det Ă€r vĂ€rt att notera en viktig punkt hĂ€r - det tillkommer en avgift för misslyckade försök att initiera transaktioner kan inte tas bort! Alice har 2.972 VÅGOR kvar pĂ„ sin balans. Bob har 3 VÅGOR.

Bob skickade 1 WAVES till dApp-konto.

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

LÀr dig skriva Waves smarta kontrakt pÄ RIDE och RIDE4DAPPS. Del 1 (Multi-anvÀndar plÄnbok)

Bob har 1.99 WAVES kvar. Det vill sÀga Bob betalade 0.01 WAVES i provision

LÀr dig skriva Waves smarta kontrakt pÄ RIDE och RIDE4DAPPS. Del 1 (Multi-anvÀndar plÄnbok)

Alice hade 2.972 WAVES pÄ sin balans, nu Àr den 3.972. En transaktion registrerades ocksÄ pÄ Alice-kontot, men ingen provision togs ut frÄn dApp-kontot (Alice).
Efter att Cooper ocksÄ fyllt pÄ kontot blev Alices saldo 4.972 WAVES.

LÀr dig skriva Waves smarta kontrakt pÄ RIDE och RIDE4DAPPS. Del 1 (Multi-anvÀndar plÄnbok)

Du kan ta reda pÄ vem som Àger hur mÄnga WAVES i den gemensamma plÄnboken i blockutforskaren pÄ fliken Data.

Cooper Àndrade sig om att lÀmna beloppet 1 WAVES pÄ den allmÀnna plÄnboken och bestÀmde sig för att dra tillbaka hÀlften av affiniteten. För att göra detta mÄste han anropa uttagsfunktionen.

LÀr dig skriva Waves smarta kontrakt pÄ RIDE och RIDE4DAPPS. Del 1 (Multi-anvÀndar plÄnbok)

Men vi hade fel igen, eftersom uttagsfunktionen har helt andra parametrar och en annan signatur. NÀr du designar smarta kontrakt pÄ RIDE4DAPPS bör du vara uppmÀrksam pÄ denna punkt

LÀr dig skriva Waves smarta kontrakt pÄ RIDE och RIDE4DAPPS. Del 1 (Multi-anvÀndar plÄnbok)

Cooper har nu 2.48 WAVES pĂ„ sin balansrĂ€kning. Följaktligen 3 VÅGOR - 1 - 0.01, och sedan + 0.5 - 0.01. Följaktligen kostar varje samtal att sĂ€tta in och ta ut 0.01 WAVES. Som ett resultat Ă€ndrades posterna i tabellen dApps-Ă€gare enligt följande.

LÀr dig skriva Waves smarta kontrakt pÄ RIDE och RIDE4DAPPS. Del 1 (Multi-anvÀndar plÄnbok)

Bob bestÀmde sig ocksÄ för att ta ut lite pengar frÄn den delade plÄnboken, men gjorde ett misstag och försökte ta ut 1.5 WAVES.

LÀr dig skriva Waves smarta kontrakt pÄ RIDE och RIDE4DAPPS. Del 1 (Multi-anvÀndar plÄnbok)

Det smarta kontraktet hade dock en kontroll för denna situation.

Xena Àr en bedragare, hon försökte ta ut 1 WAVES frÄn det totala kontot.

LÀr dig skriva Waves smarta kontrakt pÄ RIDE och RIDE4DAPPS. Del 1 (Multi-anvÀndar plÄnbok)

Det gick inte för henne heller.

I nÀsta del kommer vi att titta pÄ mer komplexa frÄgor relaterade till ofullkomligheten hos Alice dApp-konto.

KĂ€lla: will.com

Köp pĂ„litlig hosting för webbplatser med DDoS-skydd, VPS VDS-servrar đŸ”„ Köp pĂ„litlig webbhotell med DDoS-skydd, VPS VDS-servrar | ProHoster