Sending Transactions Using Web3
This is a beginner friendly guide to sending Ethereum transactions using web3. Există trei etape principale pentru a trimite o tranzacție în blockchain-ul Ethereum: crearea, semnarea și difuzarea. Le vom parcurge pe toate trei, în speranța că vom răspunde tuturor întrebărilor pe care le puteți avea! In this tutorial, we'll be using Alchemy(opens in a new tab) to send our transactions to the Ethereum chain. You can create a free Alchemy account here(opens in a new tab).
NOTE: This guide is for signing your transactions on the backend for your app, if you want to integrate signing your transactions on the frontend, check out integrating Web3 with a browser provider(opens in a new tab).
Noțiuni de bază
Ca majoritatea dezvoltatorilor de blockchain la început de drum, poate aţi făcut câteva cercetări despre cum să trimiteți o tranzacție (ar trebui să fie destul de simplu) și aţi nimerit într-o multitudine de ghiduri, fiecare spunând lucruri diferite, după care aţi rămas oarecum copleșit și încurcat. Dacă vă aflați într-o astfel de situație, nu vă faceți griji; cu toții am trecut prin aceasta la un moment dat! De aceea, înainte de a începe, haideți să lămurim câteva lucruri:
1. Alchemy nu stochează cheile dvs. private
- Acest lucru înseamnă că Alchemy nu poate semna și trimite tranzacții în numele dumneavoastră. Aceasta din motive de securitate. Alchemy nu vă va solicita niciodată să vă partajați cheia privată și nu ar trebui să o partajați niciodată cu un nod găzduit (sau cu oricine altcineva).
- You can read from the blockchain using Alchemy’s core API, but to write to it you’ll need to use something else to sign your transactions before sending them through Alchemy (this is the same for any other node service).
2. Ce este un „semnatar”?
- Semnatarii vor semna tranzacțiile în locul dvs. folosind cheia dvs. privată. In this tutorial we’ll be using Alchemy web3(opens in a new tab) to sign our transaction, but you could also use any other web3 library.
- Pe „frontend”, o bună exemplificare a unui semnatar ar fi „metamask”(opens in a new tab), care va semna și va trimite tranzacții în numele dvs.
3. De ce trebuie să-mi semnez tranzacțiile?
- Orice utilizator care dorește să trimită o tranzacție în rețeaua Ethereum trebuie să semneze tranzacția (folosindu-şi cheia privată), pentru a valida în acest fel că persoana care a iniţiat tranzacţia este cea care pretinde a fi.
- Este extrem de important să vă protejați această cheie privată, deoarece accesul la ea oferă control total asupra contului Ethereum, permițând (atât dvs., cât și oricărei alte persoane cu acces la ea) efectuarea de tranzacții în numele dvs.
4. Cum pot să-mi protejez cheia privată?
- Sunt mai multe moduri de a vă proteja cheia privată și de a o utiliza pentru a trimite tranzacții. În acest tutorial vom folosi un fișier .env. Totuși, puteți utiliza și un furnizor separat care stochează chei private, puteți folosi un fișier de depozitare de chei (keystore) sau alte opțiuni.
5. Care este diferența dintre eth_sendTransaction
și eth_sendRawTransaction
?
eth_sendTransaction
și eth_sendRawTransaction
sunt amândouă funcții API Ethereum care transmit o tranzacție către rețeaua Ethereum, pentru ca aceasta să fie adăugată la un bloc viitor. Acestea diferă prin modul de gestionare a semnării tranzacțiilor.
eth_sendTransaction
(opens in a new tab) este utilizată pentru trimiterea unei tranzacții nesemnate, adică nodul către care trimiteți tranzacția trebuie să vă gestioneze cheia privată pentru a putea semna tranzacția înainte de a o transmite în lanț. Since Alchemy doesn't hold user's private keys, they do not support this method.eth_sendRawTransaction
(opens in a new tab) este utilizată la transmiterea tranzacțiilor deja semnate. Aceasta înseamnă că trebuie să utilizați mai întâisignTransaction(tx, private_key)
(opens in a new tab), apoi să treceți rezultatul îneth_sendRawTransaction
.
Atunci când utilizați web3, este accesat eth_sendRawTransaction
prin apelarea funcției „web3.eth.sendSignedTransaction”(opens in a new tab).
This is what we will be using in this tutorial.
6. Ce este biblioteca web3?
- Web3.js este o bibliotecă de coduri de încapsulare (wrapper) în jurul apelurilor JSON-RPC standard, care se utilizează destul de des în dezvoltarea Ethereum.
- Există mai multe biblioteci web3 pentru diferite limbaje. În acest tutorial vom folosi Alchemy Web3Web3(opens in a new tab), care este scrisă în JavaScript. Puteți verifica și alte opțiuni aici(opens in a new tab).
În regulă, acum că am eliminat câteva dintre aceste întrebări, haideți să trecem la tutorial. Feel free to ask questions anytime in the Alchemy discord(opens in a new tab)!
NOTE: This guide requires an Alchemy account, an Ethereum address or MetaMask wallet, NodeJs, and npm installed. Daca nu, urmați acești pași: