Amparate à scrive i cuntratti intelligenti di Waves in RIDE è RIDE4DAPPS. Parte 1 (Portafoglio multiutente)

Amparate à scrive i cuntratti intelligenti di Waves in RIDE è RIDE4DAPPS. Parte 1 (Portafoglio multiutente)

Bonghjornu ognunu!

Più recentemente, Waves Labs annunziatu cumpetizione per i sviluppatori dedicati à a liberazione di l'estensione di lingua RIDE smart contract per l'applicazioni decentralizate Ride4Dapps in a reta di teste!

Avemu sceltu u casu DAO perchè Ventuariu i piani di sviluppà dApps cù funzioni suciale: votu, fundraising, gestione fiducia, etc.
Avemu cuminciatu cù un esempiu simplice in Sessioni di Q&A è in RIDE IDE - esempiu cun cartera spartuta.

Fighjemu questu esempiu, pruvate l'ipotesi è fighjemu alcune stranezze:

Avemu Alice - dApp Owner
Boob è Cooper sò partenarii di Alice, cofundatori di Alice-BC DAO
Neli hè un pruprietariu chì hà bisognu di finanziamentu
Bank - un bancu chì distribuisce tokens

Stage 1. Initialization of balances

Per riceve tokens nantu à a rete di teste di onde, avete bisognu di cuntattà rubinettu è indicà l'indirizzu à quale mandà tokens.
Pudete truvà l'indirizzu in l'IDE aprendu i dettagli di u vostru contu.
Scupritemu Bank 10 WAVES. Allora verificamu chì sò ghjunti attraversu u navigatore di blocchi è transazzione: revisore

Avà distribuemu tokens da u bancu à u restu di i participanti. (Noti: Tutte e transazzione nantu à a reta di l'onda ùn sò micca liberi, cusì un saldo minimu pusitivu hè necessariu per tutti i participanti per fà transazzione).

1 WAVES = 100000000 unità (wavelets), postu chì quantità pò esse solu interu
0.01 WAVES (Tassa di transazzione) = 1000000

Bank -> [3 WAVES] -> Alice, via TransferTransaction (Tipu: 4).

Avemu verificatu chì l'env.SEED da quale e transazzione sò firmate currisponde à u nostru Bancu:
Amparate à scrive i cuntratti intelligenti di Waves in RIDE è RIDE4DAPPS. Parte 1 (Portafoglio multiutente)

Se ùn avete micca una frasa di semente currispondente, basta à cambià in a tabulazione Accounts è verificate di novu.
Dopu questu, avemu criatu, annunziate è firmà una transazzione per u trasferimentu di 3 WAVES Alice.
Pudete ancu scopre i dati di Alice attraversu a variàbile env.accounts. A numerazione principia da 0, cusì Alice hè env.accounts[1].
Amparate à scrive i cuntratti intelligenti di Waves in RIDE è RIDE4DAPPS. Parte 1 (Portafoglio multiutente)

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

U risultatu pò ancu esse osservatu in u navigatore, un ligame à questu serà tornatu à noi immediatamente dopu l'esekzione transazzione.

Avemu assicuratu chì l'equilibriu di Alice hè rimbursatu da 3 WAVES, è u saldu bancariu ferma à 10 - 3 - 0.01 = 0.699.
Amparate à scrive i cuntratti intelligenti di Waves in RIDE è RIDE4DAPPS. Parte 1 (Portafoglio multiutente)

Amparate à scrive i cuntratti intelligenti di Waves in RIDE è RIDE4DAPPS. Parte 1 (Portafoglio multiutente)

Mandemu Boob è Cooper 3 WAVES ognunu, è Neli, Xena è Mark 0.2 WAVES ognunu in u listessu modu.
(Noti: Avemu fattu un errore di un caratteru è mandatu Neli 0.02 WAVES. Attenti!)

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

Dopu avè rimbursatu i saldi di tutti i participanti, vedemu:
Amparate à scrive i cuntratti intelligenti di Waves in RIDE è RIDE4DAPPS. Parte 1 (Portafoglio multiutente)

Stage 2. Crea un contu dApp

Avemu accunsentutu chì Alice seria u creatore è u pruprietariu di l'applicazione decentralizata.
Andà à Accounts, stabilisce cum'è SEED è verificate env.SEED matchs Alice.

Pruvemu di stallà u script (cuntrattu) più simplice pussibule in u contu d'Alice.
I cuntatti intelligenti in Waves sò predicati chì pruibiscenu o permettenu qualsiasi tipu di transazzione in uscita in certi cundizioni. In questu casu, sta cundizione hè SEMPRE. U codice di u cuntrattu hè veru. Chjama deploy ().

Amparate à scrive i cuntratti intelligenti di Waves in RIDE è RIDE4DAPPS. Parte 1 (Portafoglio multiutente)

Tariffa per transazzione setScript 1400000/100000000 = 0.014 WAVES. Alice hà 2.986 WAVES in u so equilibriu.

Andemu avà à pruvà à stallà logica di cuntrattu intelligenti più cumplessa nant'à u contu Alice, discrittu in esempiu

Ride4Dapps avà include 2 novi tipi di annotazione:

  1. @Callable(i) - piglia cum'è un paràmetru i, dati circa chì contu chjamatu / firmatu a transazzione. Hè u risultatu di sta funzione chì determina u cambiamentu in u statu di u contu dApp. Altri cunti ponu creà transazzione è eseguisce funzioni cù questa annotazione è cambià u statu di u contu dApp.
  2. @Verifier(tx) - Verificatore di transazzione cù u paràmetru di transazzione tx. Corrisponde à a logica di predicate da RIDE. Hè in questa espressione chì pudete permette o pruibisce più cambiamenti à a logica di cuntratti intelligenti nantu à u contu dApp.

Facemu dApp contu cum'è una billetera cumuna per tutti i participanti.
Amparate à scrive i cuntratti intelligenti di Waves in RIDE è RIDE4DAPPS. Parte 1 (Portafoglio multiutente)

Per verificà quale cuntrattu hè attualmente attivu in u vostru contu, pudete copià u codice base64 di u cuntrattu intelligente in l'esploratore di blocchi è ricunnosce cù un decompiler (per esempiu)
Amparate à scrive i cuntratti intelligenti di Waves in RIDE è RIDE4DAPPS. Parte 1 (Portafoglio multiutente)
Amparate à scrive i cuntratti intelligenti di Waves in RIDE è RIDE4DAPPS. Parte 1 (Portafoglio multiutente)
Amparate à scrive i cuntratti intelligenti di Waves in RIDE è RIDE4DAPPS. Parte 1 (Portafoglio multiutente)

Avemu assicuratu chì a logica di u cuntrattu intelligente currisponde à ciò chì aspittemu.
Alice hà 2.972 WAVE in u so equilibriu.

Stu dApp mantene a traccia di quantu ogni participante cuntribuisce à u fondu cumunu attraversu un mecanismu transazzione di dati - DataEntry (currentKey, newAmount), induve currentKey hè u cuntu chì chjama a funzione di depositu, è newAmount hè u valore di u saldu rimbursatu.

Boob è Cooper facenu i so dipositi à u contu dApp cù 1 WAVES.
Amparate à scrive i cuntratti intelligenti di Waves in RIDE è RIDE4DAPPS. Parte 1 (Portafoglio multiutente)

Facemu un sbagliu è a transazzione ùn passa micca. Siccomu, malgradu u fattu chì eramu cunvinti chì avemu fattu una transazzione in nome di Bob, avemu fattu un sbagliu in l'indici è hà indicatu un contu bancariu chì ùn hà micca un cuntrattu intelligente. Vale a pena nutà un puntu impurtante quì - ci hè una tarifa per i tentativi falluti di inizià transacciones. ùn pò esse cacciatu! Alice hà 2.972 WAVE in u so equilibriu. Bob hà 3 ONDE.

Bob hà mandatu 1 WAVES à dApp Account.

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

Amparate à scrive i cuntratti intelligenti di Waves in RIDE è RIDE4DAPPS. Parte 1 (Portafoglio multiutente)

A Bob hà 1.99 WAVES rimasti. Questu hè, Bob hà pagatu 0.01 WAVES cumissioni

Amparate à scrive i cuntratti intelligenti di Waves in RIDE è RIDE4DAPPS. Parte 1 (Portafoglio multiutente)

Alice avia 2.972 WAVES nantu à u so equilibriu, avà hè 3.972. Una transazzione hè stata ancu registrata nantu à u contu Alice, ma nisuna cumissioni hè stata pagata da u Account dApp (Alice).
Dopu chì Cooper hà ancu rimbursatu u contu, u saldu di Alice hè diventatu 4.972 WAVES.

Amparate à scrive i cuntratti intelligenti di Waves in RIDE è RIDE4DAPPS. Parte 1 (Portafoglio multiutente)

Pudete scopre quale pussede quantu WAVES in a billetera cumuna in u bloccu espluratore in a tabulazione Dati.

Cooper hà cambiatu a so idea di abbandunà a quantità di 1 WAVES nantu à a billetera generale è hà decisu di ritirà a mità di l'affinità. Per fà questu, deve chjamà a funzione di ritirata.

Amparate à scrive i cuntratti intelligenti di Waves in RIDE è RIDE4DAPPS. Parte 1 (Portafoglio multiutente)

Tuttavia, eramu sbagliati di novu, postu chì a funzione di ritirata hà paràmetri completamente differenti è una firma diversa. Quandu cuncepite cuntratti intelligenti nantu à RIDE4DAPPS, duvete attentu à questu puntu

Amparate à scrive i cuntratti intelligenti di Waves in RIDE è RIDE4DAPPS. Parte 1 (Portafoglio multiutente)

Cooper hà avà 2.48 WAVES in u so bilanciu. Dunque, 3 WAVES - 1 - 0.01, è dopu + 0.5 - 0.01. Per quessa, ogni chjama à deposità è ritirava costa 0.01 WAVES. In u risultatu, l'entrata in a tabella di i pruprietarii di dApps hà cambiatu cusì.

Amparate à scrive i cuntratti intelligenti di Waves in RIDE è RIDE4DAPPS. Parte 1 (Portafoglio multiutente)

Bob hà ancu decisu di ritirà un pocu di soldi da a billetera spartuta, ma hà fattu un sbagliu è hà pruvatu à ritirà 1.5 WAVES.

Amparate à scrive i cuntratti intelligenti di Waves in RIDE è RIDE4DAPPS. Parte 1 (Portafoglio multiutente)

Tuttavia, u cuntrattu intelligente hà avutu un cuntrollu per sta situazione.

Xena hè un scammer, hà pruvatu à ritirà 1 WAVES da u contu tutale.

Amparate à scrive i cuntratti intelligenti di Waves in RIDE è RIDE4DAPPS. Parte 1 (Portafoglio multiutente)

Ùn hà micca travagliatu ancu per ella.

In a parti dopu, noi vi taliarla à prublemi più cumplessu riguardanti l 'imperfezione di Alice dApp Account.

Source: www.habr.com

Add a comment