Introducere despre contractele inteligente
Ultima modificare: @wackerow(opens in a new tab), 22 aprilie 2024
Ce este un contract inteligent?
Un „contract inteligent” este pur şi simplu un program care rulează pe blockchain-ul Ethereum. Este o colecție de cod (funcțiile sale) și date (starea sa) care se află la o anumită adresă din blockchain-ul Ethereum.
Contractele inteligente sunt un tip de cont Ethereum. Aceasta înseamnă că au un sold și pot trimite tranzacții prin rețea. Cu toate acestea, ele nu sunt controlate de un utilizator, ci sunt implementate în rețea și funcționează conform programării. Conturile de utilizator pot apoi interacționa cu un contract inteligent prin trimiterea de tranzacții care execută o funcție definită în contractul inteligent. Contractele inteligente pot defini reguli, cum ar fi un contract obişnuit, și le pot aplica automat prin intermediul codului. Contractele inteligente nu pot fi eliminate în mod implicit, iar interacțiunile cu acestea sunt ireversibile.
Condiții prealabile
Aveţi grijă să citiţi despre conturi, tranzacții și mașina virtuală Ethereum înainte de a vă avânta în lumea contractelor inteligente.
Un distribuitor automat digital
Poate că cea mai bună metaforă pentru un contract inteligent este un distribuitor automat, așa cum este descris de Nick Szabo(opens in a new tab). Cu idatele introduse potrivite, este garantat un anumit rezultat.
Pentru a primi ceva de ronţăit de la un distribuitor automat:
1bani + selecție gustare = gustare distribuită
Această logică este programată în distribuitorul automat.
Un contract inteligent, ca şi un distribuitor automat, are o logică programată în el. Iată un simplu exemplu de felul cum ar arăta acest distribuitor automat ca şi contract inteligent:
1pragma solidity 0.8.7;23contract VendingMachine {45 // Declararea variabilelor de stare ale contractului6 address public owner;7 mapping (address => uint) public cupcakeBalances;89 // Când contractul 'VendingMachine' este implementat:10 // 1. setează adresa de implementare ca proprietar al contractului11 // 2. setează soldul de brioșe al contractului inteligent implementat la 10012 constructor() {13 owner = msg.sender;14 cupcakeBalances[address(this)] = 100;15 }1617 // Permite proprietarului să mărească soldul de brioșe al contractului inteligent18 function refill(uint amount) public {19 require(msg.sender == owner, "Doar proprietarul îl poate umple din nou.");20 cupcakeBalances[address(this)] += amount;21 }2223 // Permite oricui să cumpere brioșe24 function purchase(uint amount) public payable {25 require(msg.value >= amount * 1 ether, "Trebuie să plătești cel puțin 1 ETH pe brioșă");26 require(cupcakeBalances[address(this)] >= amount, "Nu sunt destule brioșe în stoc pentru a finaliza achiziția");27 cupcakeBalances[address(this)] -= amount;28 cupcakeBalances[msg.sender] += amount;29 }30}Afișează totCopiați
Asemenea unui distribuitor automat, care elimină necesitatea unui angajat al vânzătorului, contractele inteligente pot înlocui intermediarii în multe industrii.
Fără necesitatea permisiunii
Oricine poate scrie un contract inteligent și îl poate implementa în rețea. Trebuie doar să învăţaţi să programaţi într-un limbaj pentru contracte inteligente și să aveţi suficient ETH pentru a implementa contractul. Implementarea unui contract inteligent este din punct de vedere tehnic o tranzacție, astfel încât trebuie să plătiţi Gaz în același mod în care trebuie să plătiţi gaz pentru un simplu transfer de ETH. Cu toate acestea, costul gazului pentru implementarea contractelor este mult mai ridicat.
Ethereum are limbaje uşor de utilizat de către dezvoltatori pentru scrierea contractelor inteligente:
- Solidity
- Vyper
Cu toate acestea, ele trebuie să fie compilate înainte de a putea fi implementate, astfel încât mașina virtuală Ethereum să poată interpreta și stoca aceste contracte. Mai multe despre compilare
Combinabilitatea
Contractele inteligente sunt publice pe Ethereum și pot fi considerate API-uri deschise. Acest lucru înseamnă că puteţi apela alte contracte inteligente în propriul contract pentru a extinde foarte mult posibilitățile lor. Contractele pot chiar implementa alte contracte.
Aflaţi mai multe informații despre combinabilitatea contractelor inteligente.
Limitări
Contractele inteligente prin ele însele nu pot obține informații despre evenimentele din „lumea reală”, deoarece nu pot trimite cereri HTTP. Acest lucru este asigurat prin concept. Dacă vă bizuiţi pe informații externe, aceasta ar putea periclita consensul, care este important pentru securitate și descentralizare.
Există modalități de a evita acest lucru folosind oracole.
O altă limitare a contractelor inteligente este dimensiunea maximă a contractelor. Un contract inteligent poate avea maxim 24 kB, altfel va rămâne fără gaz. Acest lucru poate fi circumnavigat folosind Modelul Diamantului(opens in a new tab).
Resurse pentru contractele inteligente
Contracte OpenZeppelin - Bibliotecă pentru dezvoltarea de contracte inteligente securizate.
- openzeppelin.com/contracts/(opens in a new tab)
- GitHub(opens in a new tab)
- Forumul comunităţii(opens in a new tab)
DappSys - Elemente de construcție sigure, simple, flexibile pentru contractele inteligente.
Referințe suplimentare
- Contracte inteligente: Tehnologia blockchain care va înlocui avocații(opens in a new tab) – Blockgeeks
- Cele mai bune practici pentru dezvoltarea contractelor inteligente(opens in a new tab) – 10 noiembrie 2019 - Yos Riady
- Contracte curate - un ghid despre modele și bune practici în contractele inteligente(opens in a new tab) – 30 iulie 2020 - wslyvh