Salt la conținutul principal
Change page

Introducere despre contractele inteligente

Ultima modificare: , 15 august 2023

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;
2
3contract VendingMachine {
4
5 // Declararea variabilelor de stare ale contractului
6 address public owner;
7 mapping (address => uint) public cupcakeBalances;
8
9 // Când contractul 'VendingMachine' este implementat:
10 // 1. setează adresa de implementare ca proprietar al contractului
11 // 2. setează soldul de brioșe al contractului inteligent implementat la 100
12 constructor() {
13 owner = msg.sender;
14 cupcakeBalances[address(this)] = 100;
15 }
16
17 // Permite proprietarului să mărească soldul de brioșe al contractului inteligent
18 function refill(uint amount) public {
19 require(msg.sender == owner, "Doar proprietarul îl poate umple din nou.");
20 cupcakeBalances[address(this)] += amount;
21 }
22
23 // Permite oricui să cumpere brioșe
24 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ă tot
Copiaț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

Mai multe despre limbaje

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.

DappSys - Elemente de construcție sigure, simple, flexibile pentru contractele inteligente.

Referințe suplimentare

A fost util acest articol?