Postarea Construirea unei aplicații Blockchain cu Plutus a apărut mai întâi pe Coinpedia Fintech News

Introducere 

Blockchain contribuie la diverse industrii prin soluțiile sale descentralizate și transparente. Progresele în domeniul dezvoltării au avut o schimbare transformatoare asupra dezvoltatorilor și comunităților. Beneficiile blockchain se extind dincolo de descentralizare. Itve economisește timpul necesar tranzacției și nu are nevoie de nicio verificare de la terți, reducând riscurile de fraudă și de atac cibernetic. În calitate de dezvoltator, înțelegerea modului de a construi aplicații blockchain este valoroasă, mai ales atunci când utilizați instrumente puternice precum Plutus. Plutus este o platformă de contracte inteligente pe blockchain-ul Cardano. Oferă un cadru robust pentru dezvoltatori pentru a crea aplicații descentralizate (DApps) sigure și eficiente.

Ce este Cardano?

Cardano O platformă blockchain lansată de Charles Hoskinson (co-fondatorul Ethereum) în 2017. Cardano este o platformă de a treia generație, adesea considerată o alternativă la Ethereum, o platformă de a doua generație. Utilizează un mecanism de dovadă a mizei care este mai eficient decât cele tradiționale. Cardano are propria sa criptomonedă ADA, numită după Ada Lovelace. Are două straturi separate, unul care se ocupă de tranzacțiile și conturile, în timp ce celălalt este folosit pentru a gestiona contractele inteligente și calculul. Cardano își propune să creeze o platformă blockchain care este mai sigură, scalabilă și adaptabilă decât predecesorii săi și este utilizată în diverse aplicații, inclusiv managementul lanțului de aprovizionare, verificarea identității digitale și servicii financiare pe piețele emergente.

Pluton

Plutus este un limbaj de programare folosit pentru a scrie contracte inteligente bazate pe Cardano. Plutus se bazează pe Haskell, care este un limbaj funcțional. În calitate de dezvoltator, nu trebuie să scrieți Plutus Core, ci toate scripturile vor fi generate de un plugin de compilare Haskell. Plutus acceptă verificarea formală care oferă o modalitate de a demonstra corectitudinea unui program folosind matematica. Prin urmare, îmbunătățirea securității și reducerea probabilității oricăror erori în contractul inteligent.

Plutus este integrat nativ în blockchain-ul Cardano, permițând dezvoltatorilor să interacționeze direct cu registrul și infrastructura Cardano. Acest lucru vă ajută să construiți și să implementați contractele inteligente care interacționează direct cu ecosistemul Cardano. Plutus are instrumente care vă ajută să simulați contractele inteligente fără nodul Cardano complet și să experimentați înainte de a le implementa pe rețeaua principală. Plutus este potrivit pentru dezvoltatorii care doresc să creeze aplicații descentralizate fiabile și de înaltă performanță.

Public

Acest articol se adresează dezvoltatorilor care sunt noi în dezvoltarea blockchain cu puține cunoștințe de programare de bază. Vă vom ghida prin pașii esențiali de configurare a mediului, înțelegerea conceptelor blockchain și construirea unei aplicații blockchain simple folosind Plutus.

Crearea mediului de dezvoltare

Este crucial să aveți o configurație perfectă înainte de a începe călătoria de dezvoltare. Prin urmare, crearea unui mediu care să susțină Plutus este piatra de temelie a acestui capitol.

1. Instalarea Plutus

Descărcați Plutus din depozitul oficial: 

clona git https://github.com/input-output-hk/plutus-apps.gitcd plutus-appsnix-shell

Verificați instalarea folosind: plutus -v

2. Alegerea unui IDE

În timp ce dezvoltarea aplicațiilor cu Plutus având IDE-ul potrivit este crucială. Plutus se bazează pe Haskell, de aceea este recomandat să existe un IDE care să suporte Haskell. Două opțiuni populare pentru dezvoltarea Plutus sunt Visual Studio Code (VS Code) și Plutus Playground. Iată un ghid extins despre cum să configurați și să utilizați aceste IDE-uri pentru dezvoltarea Plutus.

Visual Studio Code: VS Code este un editor de cod foarte flexibil și versatil care acceptă aproape orice limbă și are extensii foarte utile. Prin urmare, este editorul preferat al dezvoltatorilor la care să lucreze. VSCode este open source și oferă o gamă largă de instrumente și funcții pentru a completa codul.

Pași pentru a configura VSCode:

  • Descărcați VSCode de pe site-ul oficial (în funcție de sistemul dvs. de operare)

  • Instalați software-ul

  • Plutus este construit pe Haskell, așa că trebuie să instalați platforma Haskell, care include Glasgow Haskell Compiler (GHC) și cabal (un instrument de compilare pentru Haskell).

  • Descărcați Haskell

  • Instalați extensiile Haskell în VS Code (Haskero, Haskell Syntax Higlighting, etc.)

  • Configurați extensiile și configurați extensii suplimentare

  • Deoarece ați instalat deja Plutus, sunteți gata de plecare!!

Plutus Playground: Plutus Playground este un editor online bazat pe web, în ​​special pentru contractele inteligente Plutus. Prin urmare, nu este nevoie de nicio instalare și este perfect pentru începători pentru a câștiga puțină încredere în timp ce codifică.

Puteți vizita site-ul Plutus Playground și doar începeți!!

Ambele medii pot fi utilizate eficient pentru dezvoltarea Plutus și este posibil să descoperiți că combinarea celor două - folosind VS Code pentru proiecte mai mari și Plutus Playground pentru testare și prototipare rapidă - oferă cel mai bun din ambele lumi.

3. Instalarea bibliotecilor necesare

Utilizați cabal pentru a instala biblioteci esențiale pentru dezvoltarea Plutus.

Înțelegerea conceptelor Blockchain cu Plutus  

Blockchain este o bază de date distribuită și avansată care stochează înregistrările tranzacțiilor sub formă de blocuri. Fiecare dintre blocuri trebuie să fie conectat cu celălalt folosind principii criptografice. Pentru a proteja blocurile sunt folosite mecanisme robuste, datorită cărora nu se poate modifica nicio înregistrare a monedelor înainte de timp și fără a afecta blocurile ulterioare.

Blockchain are trei componente de bază:

  • Blocuri: blocurile conțin informații despre tranzacții împreună cu metadate. Toate blocurile sunt legate între ele prin hashing care formează un lanț de blocuri, prin urmare blockchain 

  • Tranzacții: O tranzacție este un transfer de date de la o entitate la alta în cadrul blockchain-ului. În Plutus, tranzacțiile sunt scrise în Haskell și implică UTXO de intrare și de ieșire (Ieșiri de tranzacție necheltuite).

  • Lanțuri: în Plutus, lanțul menține ordinea tranzacțiilor și se asigură că acestea sunt imuabile odată confirmate.

În următorul fragment de cod putem vedea structura blocului în Plutus:

Fiecare componentă a blocului este menționată împreună cu tipul său de date

  • Indicele este un număr întreg care indică poziția unui bloc

  • Timpul este momentul la care a fost creat blocul

  • Tranzacții este șirul sau o listă a tuturor tranzacțiilor incluse într-un anumit bloc

  • Hash este un model unic și cheia principală pentru identificarea unui bloc

  • Hash-ul anterior se referă la continuitate și este hash-ul ultimului bloc

În acest fragment de cod putem vedea structura Tranzacțiilor în Plutus:

Mecanisme de descentralizare, imuabilitate și consens:

Fundamentul blockchain-ului se bazează pe trei principii de bază:  Descentralizare, imuabilitate și mecanism de consens

Descentralizare: Descentralizarea este o proprietate prin care nicio entitate nu deține controlul asupra bazei de date a Blockchain, făcând eșecul sistemului și părtinirea aproape imposibilă. Fiecare dispozitiv participant (nod) menține o copie a blockchain-ului, asigurând transparența și inhibând eșecul sau manipularea centralizată.

Imuabilitate: Odată ce datele sunt scrise într-un blockchain, acestea nu pot fi modificate fără a modifica toate blocurile ulterioare. Acest lucru se face cu ajutorul hashingului criptografic. Prin urmare, toate modificările făcute o dată nu pot fi anulate, făcându-l imuabil.

Mecanism de consens: un set de protocoale care guvernează toate necesitățile blockchain-ului. Toate nodurile din rețea trebuie să cadă de acord asupra metodelor. Mecanismele de consens sunt utilizate pentru a eficientiza nodurile și pentru a se asigura că toate nodurile din rețea sunt pe aceeași pagină.

Construirea unui Blockchain simplu cu Plutus

Block este unitatea primitivă a oricărui blockchain. În acest fragment de cod, am definit un tip de date bloc împreună cu componentele sale.

De asemenea, după ce am definit clasa de bloc, trebuie să asigurăm integritatea blockchain-ului în care fiecare bloc trebuie să aibă un hash unic. Prin urmare, cu funcția de calcul hash, folosim metoda populară de hashing SHA256 pentru aceeași în Plutus.

Odată ce ați finalizat Definiția unui bloc, continuați și inițializați blockchain-ul cu ajutorul unui bloc de geneză care este primul bloc pentru orice blockchain. Wow!! Tocmai ați creat un blockchain, dar asta nu este, trebuie să adăugați blocuri noi și să preluați și cel mai recent bloc.

Continuați și consultați codul de mai jos în cazul în care aveți nevoie de ajutor!

Implementarea mecanismelor de consens în Plutus 

Cardano utilizează mecanismul PoS, în timp ce mai întâi a adoptat Proof of Work. Plutus este conceput pentru a fi compatibil cu protocolul Ouroboros PoS de la Cardano, oferind scalabilitate, eficiență energetică și securitate pentru aplicațiile descentralizate (DApps). 

Iată o prezentare generală a algoritmilor de consens care pot funcționa cu Plutus

  • Ouroboros: Ouroboros este un mecanism de dovadă a mizei cu care Plutus este foarte compatibil și depinde de miza ADA pe care validatorii sunt dispuși să o accepte pentru a valida un nou bloc. Contractele Plutus interacționează fără probleme cu protocolul Ouroboros, asigurându-se că execuția contractelor inteligente rămâne sigură și eficientă din punct de vedere energetic.

  • Dovada muncii: PoW este cel mai vechi mecanism și a fost utilizat pe scară largă în toate criptomonedele mai vechi. Încă mai poate fi implementat pe hârtie în cazul lui Plutus. Acest lucru ar fi mai util atunci când ne gândim la scenarii izolate, cum ar fi scopuri educaționale și scopuri experimentale.

  • Dovada de lucru delegată și toleranța la erori bizantină: aceste mecanisme nu sunt compatibile în mod special cu Cardano, dar pot fi implementate teoretic pe Plutus.

În această secțiune, vom explora cum se poate folosi Proof of Work în Plutus.

În Proof of Work, minerii trebuie să concureze la timp pentru a rezolva un puzzle criptografic pentru a deveni validatori ai noii monede. În acest cod, funcția proof of work caută un nonce care, atunci când este combinat cu hash-ul blocului anterior, produce un hash cu un anumit număr de zerouri de început. Aceasta este o implementare de bază a PoW, în care nivelul de dificultate determină cât de greu este să găsești un nonce valid.

După ce finalizați implementarea Proof of Work, trebuie să actualizați blockchain-ul pentru a valida dovada care a fost extrasă.

Iată un exemplu de fragment de cod:

Această funcție asigură că un nou bloc este adăugat în blockchain numai dacă dovada acestuia este validă, menținând integritatea lanțului.

Crearea unui API Blockchain simplu cu Plutus  

În acest capitol, veți învăța cum să creați un API simplu pentru interacțiunea cu o aplicație blockchain construită folosind Plutus. Acest API vă va permite să adăugați blocuri și să vizualizați blockchain-ul prin solicitări HTTP.

Pași pentru a crea un API:

  • Configurați mediul pentru API: Instalați Haskel (ceea ce este deja făcut), apoi Instalați Servant folosind Cabal

  • Descărcați toate bibliotecile necesare:

    • Servitor: Pentru a crea API-ul

    • Aeson pentru a codifica și decoda JSON: cabal install aeson plutus-core

    • Plutus pentru a integra tot codul și logica 

Pentru a începe cu construirea API-ului, trebuie să adăugăm mai întâi un bloc nou și să retragem starea actuală a blockchain-ului. Ambii acești pași au fost efectuati în capitolele de mai sus. 

Acum puteți continua și defini punctele finale:

{-# LANGUAGE DataKinds #-}{-# LANGUAGE TypeOperators #-}modul BlockchainAPI whereimport Servantimport Control.Monad.IO.Class (liftIO)— Definiți tipul de bloc (consultați capitolul 3)data Block = Block  { index        :: Int , timestamp    :: String  , dataField    :: String  , previousHash :: String  , hash         :: String  } derivat (Show, Eq)— Blockchain este pur și simplu o listă de Blockchain Blockchain = [Block]— Definiți API = tipul „add BlockchainBlock” :> ReqBody „[JSON] Block :> Post „[JSON] Blockchain:<|> „lanț” :> Obține „[JSON] Blockchain— Substituent pentru blockchain, începând inițial doar cu geneza blockgenesisBlock = Block 0 „2024- 09-12 00:00:00” „Genesis Block” „0” „some_hash”initialBlockchain:: BlockchaininitialBlockchain = [genesisBlock]–– Handler-uri pentru punctele finale API addBlockHandler :: Blockchain -> Block -> Handler Blockchain = blockchainaddBlock newandBlockin = doblock newandBlock blockchain ++ [newBlock]    liftIO $ putStrLn „Blocare adăugată!”    return newBlockchain— Handler pentru preluarea chainviewChainHandler :: Blockchain -> Handler BlockchainviewChainHandler blockchain = return blockchain–Punctul de intrare principal pentru a rula APIapp :: Applicationapp = servi (Proxy :: Proxy BlockchainAPI) (blockchainServer initialBlockchain)

Explicația codului de mai sus:

  • Blocul este definit în mod similar cu capitolele precedente

  • Biblioteca Servitorului este folosită pentru a defini structura API-ului. Există două metode de definire a punctelor finale API, GET și POST, adică a prelua și, respectiv, a adăuga blockchain-ul.

  • Am definit, de asemenea, handlere (addBlockHandler)  pentru a gestiona noile blocuri care sunt adăugate și viewChainHandler) vizualizând celălalt bloc

  • La sfârșit, există o funcție principală care este inima codului leagă totul și rulează serverul API.

După definirea API-ului, aveți două metode pentru a adăuga punctele finale și pentru a prelua informațiile pentru punctele finale Blockchain.

Yay!! Ați implementat cu succes această subsecțiune și acum puteți rula API-ul folosind cabal și sunteți gata să treceți la următoarea parte.

Rularea și testarea aplicației 

După construirea API-ului blockchain, este timpul să-l testați. Vom folosi Postman sau curl pentru a interacționa cu API-ul și a verifica dacă funcționează corect.

Pași pentru a rula și a testa aplicația:

  • Compilați programul și rulați-l:  cabal build   cabal run

  • Porniți serverul: API-ul ar trebui să fie disponibil la http://localhost:8080

  • Testați și adăugați punctele finale Block

{  „index”: 1,  „timestamp”: „2024-09-12 12:30:00”,  “dataField”: „Acesta este noul meu bloc”,  “previousHash”: „some_hash”,  „hash”: „new_block_hash ”}

Vizualizați Blockchain-ul

curl http://localhost:8080/chain

Urmând acești pași, acum aveți o aplicație blockchain simplă care rulează cu un API construit folosind Plutus. API-ul permite aplicațiilor externe sau utilizatorilor să interacționeze cu blockchain-ul dvs. prin adăugarea de noi blocuri și vizualizarea stării curente a blockchain-ului. 

Exemplu real de construire a unei aplicații Blockchain cu Plutus

Fragmentul de cod de mai sus este o execuție pas cu pas a:

  • Pasul 1: Creați tipul de date Block cu atributele necesare folosind sintaxa Plutus.

  • Pasul 2: implementați metoda calculate_hash.

  • Pasul 3: Definiți tipul de date Blockchain și inițializați-l cu un bloc de geneză.

  • Pasul 4: Implementați metode pentru a adăuga blocuri noi și pentru a prelua cel mai recent bloc folosind Plutus.

  • Pasul 5: Adăugați funcționalitatea Proof of Work la tipul de date Block și actualizați tipul de date Blockchain.

  • Pasul 6: Configurați mediul API pentru a gestiona solicitările folosind Plutus.

  • Pasul 7: Testați aplicația prin extragerea unui nou bloc și verificând blockchain-ul folosind Postman sau Curl

Felicitări! Ați ajuns la sfârșitul modulului și ați învățat toate elementele de bază ale Plutus.

Pe măsură ce vă aventurați în dezvoltarea blockchain cu Plutus, nu doar scrieți cod, ci creați coloana vertebrală a sistemelor descentralizate care ar putea redefini industriile. Continuați să învățați și să codați fericit!!

Consultați și: Cum să vă proiectați, să dezvoltați și să implementați propria criptomonedă: un ghid pas cu pas