5 pași pentru a programa în Blockchain (Smart-Contract)

5 pași pentru a scrie un Smart-Contract in Blockchain - Cornel Baciu

Introducere

Te-ai întrebat vreodată ce este un blockchain, cum funcționează și cum poți chiar tu să faci aplicații folosindu-te de el? In acest articol îți voi prezenta noțiunile necesare pentru dezvoltarea primului tău proiect crypto si un exemplu practic folosind platforma Ethereum.

În industria blockchain am descoperit că programarea se îmbină cu dorința mea de a avea un impact considerabil în societatea de astăzi. Consider că este o oportunitate rară și industria blockchain are nevoie mai mult decât oricând de oameni inspirați și motivați, care să inoveze sistemele actuale.

Dacă ești familiarizat cu bazele blockchain (smart contract, dApps, Web3, tranzacții) poți trece cu ușurință la partea practică.

Ce este Blockchain și cum funcționează?

Blockchain este o rețea nouă care ne ajută să descentralizăm tranzacțiile si permite ca acestea să fie peer-to-peer fără a folosi intermediari. Ca să faci comerț prin blockchain nu trebuie să cunoști persoana respectivă sau să mergi la magazin. În același timp, prin blockchain este garantat că vei primi banii sau produsul dorit. Practic, blockchain îți garantează prin tehnologia sa că vei primi ceea ce îți dorești fără a apela la companii intermediare sau bănci. 

Blockchain este format dintr-o rețea de calculatoare care au același istoric de tranzacții, iar această rețea este deținută de toată lumea. În loc ca această listă de tranzacții să se afle pe serverul unei companii, ea este descentralizată și stocată pe mai multe calculatoare. Pe scurt este o bază de date distribuită într-o rețea de calculatoare.

Ce sunt dApps?

Aplicațiile blockchain descentralizate, sau dApps, pot fi scrise pe platforme blockchain precum Ethereum, Cosmos, Solana sau Avalanche. Aplicațiile de acest tip pot fi din zona de finance (DeFi),  artă și obiecte de colecție (NFTs), gaming, portofele digitale, smart contracts.

În zona de Finance (DeFi) aceste aplicații aduc o îmbunătățire considerabilă si vin ca o alternativă la sistemul financiar actual. Aceste produse (dApps) pot fi destinate împrumuturilor, câștigului de dobândă (borrowing, lending), economii și altele. Tehnologiile folosite pentru a construi dApps sunt open source și aici poți inova și contribui la descentralizarea oricărui domeniu.

O altă zonă care a fost descentralizată și care a fost la modă în anul 2021 a fost cea a artei, unde dApps au ajutat creatorii de conținut să aibă control asupra creațiilor lor prin intermediul blockchain-ului. Astfel, artiștii își pot dovedi ușor proprietatea asupra creației eliminând riscul falsurilor, pot face un istoric pentru produsul creat până la deținătorul actual și pot fi plătiți mai bine.

Despre platforma Ethereum

Ethereum este o platformă blockchain open source unde programatorii își pot construi și personaliza aplicații în industrii precum (DeFi, NFT, security, energy, insurance, health, wallet, gaming). 

Ether este o criptomonedă folosită pentru a realiza tranzacții pe platfoma Ethereum. Dacă ești utilizator al platformei sau programator trebuie să plătești comisioane în Ether pentru a realiza tranzacții și a rula aplicații pe rețeaua Ethereum.

Limbajul de programare pentru a construi aplicații pe platforma ethereum se numește Solidity. Solidity este un limbaj high level, orientat pe obiect și este folosit exclusiv pentru a scrie smart contracts pe platforma Ethereum.

De ce Smart Contracts?

Un Smart Contract este varianta digitală a contractelor din lumea reală. Este un program software scris pe computer și stocat în interiorul unui blockchain. Avantajul unui smart contract stocat pe blockchain este că acesta nu poate fi modificat sau șters, are securitate sporită si este transparent (fiind public, oricine poate vedea la ce este folosit).

Aplicațiile descentralizate (dApps) se bazează pe smart contracts (contracte digitale), care sunt folosite de către programatori pentru a executa operații și a menține date pe blockchain

Exemplul de mai jos va fi un smart contract scris în limbajul Solidity pe platforma Ethereum. 

1. Mediul de dezvoltare

Mi-am propus să demonstrez în următoarele minute cât de simplu și rapid se poate programa o aplicație în blockchain.

Pentru a scrie un smart contract am folosit mediul de dezvoltare Remix IDE, o platformă online care ajută la scrierea si compilarea codului Solidity.

Pentru deploy în mediul de producție, Truffle sau Hardhat pot fi alternative mult mai bune, însă necesită si puțin mai mult efort pentru a le utiliza.

Dacă dorești să te concentrezi mai mult pe partea de front-end, poți lăsa partea de back-end pe seama unor tool-uri precum Alchemy, Moralis, Infura care facilitează și mai mult dezvoltarea dApps.

2. Cum scriu un smart contract?

Mai jos este exemplificat un smart contract care implementează câteva funcții destinate stocării datelor si depozitării de ether in contract. Mecanismul este asemănător claselor din OOP (programare orientată pe obiect)

2.1 – Smart-contract

Prima oară este nevoie să informăm compiler-ul ce versiune de solidity folosim si e recomandată folosirea ultimei versiuni.

Linia uint nonPayableData declară o variabilă de tip uint (unsigned integer de 256 biti) al cărei state poate fi schimbat prin intermediul funcției setNonPayableData(). Public se folosește atunci cand se dorește ca state-ul să fie schimbat din afara contractului dar in mod normal nu ne dorim acest lucru.

Functia setPayableData() este urmată de keyword-ul payable ceea ce inseamna ca funcția poate depozita Ether in contract. Cantitatea de ether trebuie setată inainte de a apela funcția.

2.2 – Cheamă funcția cu ether

Functia getPayableData() este folosită pentru a retrage valoarea variabilei payableData, aceasta fiind stocată la o anumită adresă din blockchain-ul Ethereum. View neasigură ca această funcție nu va schimba niciodată state-ul contractului.

Ți-a venit ideea să te dezvolți mai mult în direcția asta? Te poți pre-înscrie la un curs de blockchain și o să primești detaliile înaintea tuturor: https://forms.gle/qc3iL2ZBL8wgMC1u8

3. Conectarea la Testnet prin Metamask

Înainte de a face deploy propriu-zis e nevoie să alegi mediul unde vei duce smart-contract-ul. Pentru a te conecta la Testnet prin Metamask, vei alege Injected Web3 care te va conecta la Rinkeby (blockchain de test care funcționează la fel ca rețeaua blockchain propriu-zisă, numită mainnet).

3.1 – Deploy environment

Tranzacția se va realiza cu ajutorul portofelului virtual Metamask. Acesta este un portofel open source folosit pentru a interacționa cu rețeaua blockchain Ethereum.

3.2 – Metamask transaction

4. Deploy

Comisioanele plătite pentru tranzacții (denumite gas) sunt mereu plătite în moneda nativă, în acest caz ETH. (deoarece se plătește o fracțiune din 1 ETH, unitatea de măsură se numește gwei)

În partea din stânga contractul va apărea colapsat iar în interior vom vedem funcțiile declarate în contract sub forma unor butoane.

      4 – Deployed contract

Butoanele albastre nu creează tranzacții, prin urmare nu vor modifica state-ul și vor afișa date din contract fără a plăti comisioane.

Butoanele galbene pot schimba state-ul contractului fără a plăti comision în ether (ETH).

Butoanele roșii sunt pentru tranzacții (funcții) pentru care se plătește un comision.

Înainte de pasul 5 și cel final, echipa 4MAYO aici, voiam să îți dăm un congrats că ai citit până aici, tehnologia blockchain este una care ne face și pe noi curioși și pe care încercăm să o promovăm. Voiam să îți reamintim/să îți spunem despre 4MAYO Academy, prin care realizăm programe accelerate în IT, de 6 săptămâni. Dacă vrei să afli mai multe detalii, îți lăsăm aici un link (https://4mayo.ro/academie/). Mult spor la pasul de testare!

5. Testing

Remix are la dispoziție un command line util pentru testare (disponibil in interfața Remix imediat după deploy), unde putem vedea detalii despre tranzacție, cum ar fi: adresa, comisionul, valoarea setată în smart-contract.

5.1 – Transaction details

De asemenea poți vedea detaliile tranzacțiilor direct pe blockchain-ul de test (rinkeby.etherscan.io/).

     5.2 – Testnet transaction details

Concluzii

Blockchain și aplicațiile descentralizate sunt încă la început și adopția este într-un trend ascendent. Acest lucru aduce numeroase oportunități și ar trebui să te încânte fie ca ești programator, lucrezi în industria IT, sau plănuiești o conversie profesională către acest sector. Așadar dacă înveți sa programezi dApps în 2022, este precum ai învăța sa programezi aplicații web în anii 2000.

Smart-contracts sunt o alternativă digitală a contractelor obișnuite, îmbunătățind considerabil viteza, eficiența și acuratețea unui contract. Ele sunt mai ieftine, sigure și pot fi folosite în domenii diverse cum ar fi cel financiar sau de sănătate, dar și alte domenii care nu sunt 100% transparente și pot fi manipulate.

Tu ce părere ai despre blockchain?

Te invit ca punct de start să începi un proiect crypto personal și să studiezi descrieri ale joburilor din sectorul blockchain pe platforma https://pompcryptojobs.com/

Dacă ai întrebări legate de blockchain și ai nevoie de ghidare în proiectul personal te aștept cu întrebări pe profilul meu de Linkedin https://www.linkedin.com/în/cornel-ionuț-baciu-dev/.

Distribuie articolul pe: