Ajută la actualizarea acestei pagini

🌏

Există o nouă versiune a acestei pagini, dar acum este doar în engleză. Ajută-ne să traducem cea mai recentă versiune.

Această pagină este incompletă. Dacă ești expert în acest subiect, te rugăm să editezi această pagină și s-o presari cu înțelepciune.

Introducere în contractele inteligente

Ultima editare: , Invalid DateTime
Edit page

Ce este un contract inteligent?

Un „contract inteligent” este 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 regulat, și le pot aplica automat prin intermediul codului.

Condiții prealabile

Asigură-te că ai citit despre conturi, tranzacții și mașina virtuală Ethereum înainte de a sări î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. Cu intrările potrivite, o anumită ieșire este garantată.

Pentru a obține o gustare de la un distribuitor automat:

1bani + selecție gustare = gustare distribuită
2

Această logică este programată în automat.

Un contract inteligent, ca un distribuitor automat, are o logică programată în el. Iată un simplu exemplu de cum acest distribuitor automat ar putea arăta ca un contract inteligent:

1pragma solidity 0.6.11;
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() public {
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, „Numai 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 avem suficiente brioșe în stoc pentru a finaliza această achiziție”);
27 cupcakeBalances[address(this)] -= amount;
28 cupcakeBalances[msg.sender] += amount;
29 }
30}
31
Afișează tot
📋 Copiere

Asemenea unui distributor automat, care elimină necesitatea unui angajat al vânzătorului, contractele inteligente pot înlocui intermediarii din multe industrii.

Fără permisiune

Oricine poate scrie un contract inteligent și îl poate implementa în rețea. Trebuie doar să înveți să programezi într-un limbaj de contract inteligent și să ai 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ătești Gas în același mod în care trebuie să plătești gaz pentru un simplu transfer ETH. Cu toate acestea, costul de gaz pentru implementarea contractelor este mult mai ridicat.

Ethereum are limbaje prietenoase-programator 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ă poți apela alte contracte inteligente în propriul contract pentru a extinde foarte mult posibilitățile lor. Contractele pot chiar implementa alte contracte.

Află mai multe informații despre combinabilitatea contractului inteligent.

Limitări

Contractele inteligente singure nu pot obține informații despre evenimentele din „lumea reală”, deoarece nu pot trimite cereri HTTP. Acest lucru este prin design, deoarece bazarea pe informații externe ar putea periclita consensul, care este important pentru securitate și descentralizare.

Există modalități de a evita acest lucru folosind oracole.

Resurse pentru contractele inteligente

Contracte OpenZeppelin - Bibliotecă pentru dezvoltare de contracte inteligente securizate.

DappSys - Blocuri de construcții sigure, simple, flexibile pentru contracte inteligente.

Referințe suplimentare