Salt la conținutul principal

Implementarea primului dvs. contract inteligent

contracte inteligenteremixsoliditynoțiuni de bazăimplementare
Începător
jdourlens
EthereumDev(opens in a new tab)
3 aprilie 2020
4 minute de citit minute read
comp-tutorial-metadata-tip-author 0x19dE91Af973F404EDF5B4c093983a7c6E3EC8ccE

Cred că sunteţi la fel de entuziasmat ca noi să implementaţi și să interacționaţi cu primul dvs. contract inteligent pe blockchain-ul Ethereum.

Nu vă faceți griji, deoarece este primul nostru contract inteligent, îl vom implementa pe o rețea locală de testare, astfel încât să nu vă coste nimic să îl implementați și să încercați tot ce doriți cu el.

Cum ne scriem contractul

Primul pas este să vizitaţi Remix(opens in a new tab) și să creaţi un fișier nou. În partea din stânga sus a interfeței Remix, adaugaţi un nou fișier și introduceţi numele dorit al fișierului.

Adăugarea unui fișier nou în interfața Remix

Vom insera următorul cod în noul fişier.

1// SPDX-License-Identifier: MIT
2pragma solidity >=0.5.17;
3
4contract Counter {
5
6 // Public variable of type unsigned int to keep the number of counts
7 uint256 public count = 0;
8
9 // Function that increments our counter
10 function increment() public {
11 count += 1;
12 }
13
14 // Not necessary getter to get the count value
15 function getCount() public view returns (uint256) {
16 return count;
17 }
18
19}
Afișează tot
Copiați

Dacă sunteţi obişnuit să programaţi, vă puteţi da seama uşor ce face acest program. Iată un explicator linie cu linie:

  • Linia 3: Definim un contract cu numele Counter.
  • Linia 6: Contractul nostru stochează un număr întreg nesemnat numit count, începând de la 0.
  • Linia 9: Prima funcție va modifica starea contractului și increment()(va creşte) variabila noastră count.
  • Linia 14: A doua funcție este doar un getter pentru a putea citi valoarea variabilei count în afara contractului inteligent. Rețineţi că, întrucât am definit variabila noastră count ca fiind publică, aceasta nu este necesară, dar este prezentată ca exemplu.

Este tot ce avem de făcut pentru primul nostru contract inteligent simplu. După cum ştiţi probabil, arată ca o clasă din limbajele OOP, cum ar fi Java sau C++. A sosit momentul să facem încercări cu contractul nostru.

Implementarea contractului nostru

Acum, că ne-am scris primul contract inteligent, îl implementăm în blockchain pentru a putea face încercări cu el.

Implementarea contractului inteligent în blockchain este de fapt doar trimiterea unei tranzacții care conține codul contractului inteligent compilat, fără a specifica vreun destinatar.

Mai întâi vom compila contractul făcând clic pe pictograma de compilare din partea stângă:

Pictograma de compilare din bara de instrumente Remix

Faceți clic apoi pe butonul de compilare:

Butonul de compilare din compilatorul Remix solidity

You can choose to select the “Auto compile” option so the contract will always be compiled when you save the content on the text editor.

Apoi navigaţi la „deploy” și rulaţi ecranul de tranzacții:

Pictograma de implementare din bara de instrumente Remix

Odată cevă aflaţi în ecranul de „implementare și executare” tranzacţii, verificaţi din nou dacă apare numele contractului dvs. și faceţi clic pe „Deploy”. As you can see on the top of the page, the current environment is “JavaScript VM” that means that we’ll deploy and interact with our smart contract on a local test blockchain to be able to test faster and without any fees.

Butonul de implementare din compilatorul Remix solidity

După ce aţi făcut clic pe butonul „Deploy”, vă veţi vedea contractul în partea de jos. Faceţi clic pe săgeata din stânga pentru a o extinde, astfel încât să vedem conținutul contractului nostru. Aceasta este variabila counter, funcția noastră increment() și getter-ul getCounter().

Dacă faceţi clic pe butonul count sau getCount, acesta va prelua conținutul variabilei count a contractului și îl va afișa. Deoarece nu am apelat încă funcția increment, ar trebui să afișeze 0.

Butonul funcție din compilatorul Remix solidity

Să apelăm acum funcția increment făcând clic pe buton. Veţi vedea jurnalele tranzacțiilor efectuate, care apar în partea de jos a ferestrei. Veţi vedea că jurnalele sunt diferite atunci când apăsaţi butonul de preluare a datelor, în locul butonului increment. Acest lucru se datorează faptului că citirea datelor pe blockchain nu are nevoie de tranzacții (scriere) sau taxe. Deoarece doar modificarea stării blockchain-ului necesită efectuarea unei tranzacții:

Un registru al tranzacțiilor

După apăsarea butonului de incrementare, care va genera o tranzacție pentru a apela funcția noastră increment() dacă facem clic din nou pe butoanele count sau getCount, vom citi noua stare actualizată a contractului nostru inteligent, cu variabila count mai mare decât 0.

Starea recent actualizată a contractului inteligent

În tutorialul următor, vom acoperi cum puteţi adăuga evenimente la contractele dvs. inteligente. Înregistrarea evenimentelor este o modalitate convenabilă de a elimina bug-urile din contractul dvs. inteligent și de a înțelege ce se întâmplă în timp ce apelaţi o funcție.

Ultima modificare: @nicklcanada(opens in a new tab), 15 august 2023

A fost util acest tutorial?