Vai al contenuto principale

Inviare transazioni usando Web3

transazioniweb3.jsalchemy
Principiante
Elan Halpern
documentazione Alchemy(opens in a new tab)
4 novembre 2020
10 minuti letti minute read

Questa è una guida per principianti per inviare transazioni di Ethereum usando Web3. Esistono tre passaggi principali per poter inviare una transazione alla blockchain di Ethereum: creare, firmare e trasmettere. Le vedremo tutte e tre, sperando di rispondere a tutte le domande che potreste avere! In questo tutorial, useremo Alchemy(opens in a new tab) per inviare le nostre transazioni alla catena di Ethereum. Puoi creare qui un conto gratuito di Alchemy(opens in a new tab).

NOTA: Questa guida è per firmare le tue transazioni sul backend per la tua app. Se desideri integrare la firma delle tue transazioni sul frontend, dai un'occhiata all'integrazione di Web3 con un fornitore del browser(opens in a new tab).

Le nozioni di base

Come gran parte degli sviluppatori di blockchain quando iniziano, potresti aver fatto delle ricerche su come inviare una transazione (il che dovrebbe essere abbastanza facile) e potresti essere incappato in una moltitudine di guide, ognuna con indicazioni diverse, che rischiano di lasciare sopraffatti e confusi. Se sei su quella barca, non preoccuparti; ci siamo passati tutti! Quindi, prima d'iniziare, mettiamo in chiaro alcune cose:

1.Alchemy non memorizza le tue chiavi private

  • Questo significa che Alchemy non può firmare e inviare transazioni per conto tuo. Il motivo di ciò è la sicurezza. Alchemy non ti chiederà mai di condividere la tua chiave privata e non dovresti mai condividerla con un nodo ospitato (o, se è per questo, con nessuno).
  • Puoi leggere dalla blockchain usando l'API principale di Alchemy, ma per scrivere dovrai usare qualcos'altro per firmare le transazioni prima di inviarle tramite Alchemy (così come per ogni altro servizio di nodo).

2.Cos'è un "firmatario"?

3.Perché devo firmare le mie transazioni?

  • Ogni utente che desidera inviare una transazione sulla rete di Ethereum deve firmare la transazione (usando la propria chiave privata), per poter convalidare che l'origine della transazione sia quella affermata.
  • È davvero importante proteggere questa chiave privata, poiché avere accesso a essa concede il pieno controllo sul tuo conto privato, consentendoti (o a chiunque acceda) di eseguire transazioni per conto tuo.

4.Come proteggo la mia chiave privata?

  • Ci sono molti modi per proteggere la tua chiave privata e usarla per inviare le transazioni. In questo tutorial useremo un file .env. Tuttavia, potresti anche usare un provider separato che memorizzi le chiavi private, usare un file keystore o altre opzioni.

5. Qual è la differenza tra eth_sendTransaction e eth_sendRawTransaction?

eth_sendTransaction e eth_sendRawTransaction sono entrambe funzioni dell'API di Ethereum che trasmettono una transazione alla rete di Ethereum affinché venga aggiunta a un blocco futuro. Differiscono in come gestiscono la firma delle transazioni.

Usando web3, l'accesso a eth_sendRawTransaction ha luogo chiamando la funzione web3.eth.sendSignedTransaction(opens in a new tab).

Questo è ciò che useremo nel nostro tutorial.

6.Cos'è la libreria di web3?

Okay, ora che ci siamo tolti alcune di queste domande, passiamo al tutorial. Sentiti libero di fare domande in qualsiasi momento su Discord(opens in a new tab) di Alchemy!

7. Come inviare transazioni sicure, ottimizzate a livello di gas e private? {how-to-send-secure-gas-optimized-and-private-transactions}

NOTA: Questa guida richiede un conto di Alchemy, un indirizzo di Ethereum o un portafoglio di Metamask, NodeJS e npm installato. Altrimenti, segui questi passaggi:

  1. Crea un conto gratuito di Alchemy(opens in a new tab)
  2. Crea un conto di MetaMask(opens in a new tab) (od ottieni un indirizzo di Ethereum)
  3. Segui questi passaggi per installare NodeJs e NPM(opens in a new tab)

Fasi per inviare la tua transazione

1.Crea un'app di Alchemy sulla rete di prova di Sepolia

Accedi al tuo pannello di controllo di Alchemy(opens in a new tab) e crea una nuova app, scegliendo Sepolia (o qualsiasi altra rete di prova) per la tua rete.

2.Richiedere ETH dal faucet di Sepolia

Segui le istruzioni sul faucet di Sepolia di Alchemy(opens in a new tab) per ricevere gli ETH. Assicurati di includere il tuo indirizzo di Ethereum di Sepolia (da MetaMask) e non di un'altra rete. Dopo aver seguito le istruzioni, ricontrolla di aver ricevuto gli ETH nel tuo portafoglio.

3. Crea la cartella di un nuovo progetto e cdal suo interno

Crea una nuova cartella del progetto dalla riga di comando (terminale per mac) e naviga al suo interno:

1mkdir sendtx-example
2cd sendtx-example

4.Installa Alchemy Web3 (o altra libreria di web3)

Esegui il seguente comando nella cartella del tuo progetto per installare Alchemy Web3(opens in a new tab):

Nota che per utilizzare la libreria di ethers.js, devi seguire le istruzioni qui(opens in a new tab).

1npm install @alch/alchemy-web3

5.Installa dotenv

Useremo un file .env per memorizzare in sicurezza la nostra chiave API e la chiave privata.

1npm install dotenv --save

6. Crea il file .env

Crea un file .env nella cartella del tuo progetto e aggiungi quanto segue (sostituendo "your-api-url" e "your-private-key")

1API_URL = "your-api-url"
2PRIVATE_KEY = "your-private-key"
Non eseguire il commit di .env! Sei pregato di assicurarti di non condividere o esporre mai il tuo file .env con nessuno, poiché così facendo comprometteresti i tuoi segreti. Se stai usando il controllo della versione, aggiungi il tuo .env a un file gitignore(opens in a new tab).

7. Crea il file sendTx.js

Ottimo, ora che abbiamo protetto i nostri dati sensibili in un file .env, iniziamo a programmare. Per il nostro esempio di invio transazione, rinvieremo gli ETH al faucet di Sepolia.

Creare un file sendTx.js, dove configureremo e invieremo la nostra transazione d'esempio e aggiungere a esso le seguenti righe di codice:

1async function main() {
2 require('dotenv').config();
3 const { API_URL, PRIVATE_KEY } = process.env;
4 const { createAlchemyWeb3 } = require("@alch/alchemy-web3");
5 const web3 = createAlchemyWeb3(API_URL);
6 const myAddress = '0x610Ae88399fc1687FA7530Aac28eC2539c7d6d63' //TODO: replace this address with your own public address
7
8 const nonce = await web3.eth.getTransactionCount(myAddress, 'latest'); // nonce starts counting from 0
9
10 const transaction = {
11 'to': '0x31B98D14007bDEe637298086988A0bBd31184523', // faucet address to return eth
12 'value': 1000000000000000000, // 1 ETH
13 'gas': 30000,
14 'nonce': nonce,
15 // optional data field to send message or execute smart contract
16 };
17
18 const signedTx = await web3.eth.accounts.signTransaction(transaction, PRIVATE_KEY);
19
20 web3.eth.sendSignedTransaction(signedTx.rawTransaction, function(error, hash) {
21 if (!error) {
22 console.log("🎉 The hash of your transaction is: ", hash, "\n Check Alchemy's Mempool to view the status of your transaction!");
23 } else {
24 console.log("❗Something went wrong while submitting your transaction:", error)
25 }
26 });
27}
28
29main();
Mostra tutto

Assicurati di sostituire l'indirizzo alla riga 6 con il tuo indirizzo pubblico.

Prima di passare all'esecuzione di questo codice, vediamo alcuni di questi componenti.

Una Nota sui dati Esistono due tipi principali di transazioni che è possibile inviare su Ethereum.

8. Esegui il codice usando node sendTx.js

Torna al terminale o alla riga di comando ed esegui:

1node sendTx.js

9.Visualizza la tua transazione nel Mempool

Apri la pagina del Mempool(opens in a new tab) nel tuo pannello di controllo di Alchemy e filtra per l'app che hai creato per trovare la tua transazione. Qui possiamo visualizzare la transizione della nostra transazione dallo stato in sospeso allo stato minato (se andata a buon fine) o allo stato abbandonato (se non riuscita). Assicurati di mantenerlo su "Tutti" così da intercettare le transazioni "minate", "in sospeso" e "abbandonate". Puoi anche cercare la tua transazione tra le transazioni inviate all'indirizzo 0x31b98d14007bdee637298086988a0bbd31184523 .

Per visualizzare i dettagli della tua transazione, una volta trovata, seleziona l'hash tx, che dovrebbe portarti a una vista simile a questa:

Screenshot del Mempool Watcher

Da qui puoi visualizzare la tua transazione su Etherscan, cliccando sull'icona cerchiata in rosso!

Evviva! Hai appena inviato la tua prima transazione di Ethereum usando Alchemy

Per feedback e suggerimenti su questa guida, puoi scrivere a Elan su Discord(opens in a new tab) di Alchemy!

Originariamente pubblicato su https://docs.alchemyapi.io/tutorials/sending-transactions-using-web3-and-alchemy(opens in a new tab)

Ultima modifica: @nhsz(opens in a new tab), 15 agosto 2023

Questo tutorial è stato utile?