Publicación
Comparte tu conocimiento.
How to fund a account with ETH on a local fork or local node in hardhat?
Let's say I have an account in hardhat
[owner, user, user2] = await ethers.getSigners();
userAddress = user.address;
How would I fund userAddress
with funds on my local fork?
- blockchain
- solidity
Respuestas
3You can use setBalance
from the hardhat docs
await network.provider.send("hardhat_setBalance", [
userAddress,
"0x1000000000000000000000000", // we are giving ourselves a LOT eth
]);
// then we can print out how much we have in hex
console.log(
await network.provider.send("eth_getBalance", [
impersonatedSigner.address,
])
);
Whenever Hardhat spins up a local instance, it creates pre-funded accounts. You can access those accounts if import ethers from hardhat.
const { ethers } = require("hardhat");
async function main() {
const accounts = await ethers.getSigners();
const provider = ethers.provider;
for (const account of accounts) {
console.log("%s (%i ETH)", account.address, ethers.utils.formatEther(
await provider.getBalance(account.address)
)
);
}
}
main()
.then(() => process.exit(0))
.catch(error => {
console.error(error);
process.exit(1);
});
Financiar una cuenta con ETH en una bifurcación local o un nodo local en Hardhat es un paso crucial para probar los contratos inteligentes en condiciones que imitan la red principal de Ethereum. Este tutorial utiliza palabras clave esenciales para guiarte a lo largo del proceso de una manera estructurada y optimizada:
mkdir mainnet-fork-tutorial
**Crea un proyecto de Javascript: inicializa tu proyecto abriendo una terminal e introduciendo el comando para crear un directorio para tu tutorial, por ejemplo. Navega hasta el directorio de tu proyecto y configura un nuevo proyecto de JavaScript.
2.Instala Hardhat: En el directorio de tu proyecto, usa npm para instalar Hardhat, que es la herramienta principal de este tutorial. Ejecuta npm install --save-dev hardhat
para añadirlo a las dependencias de desarrollo de tu proyecto.
3.Instale Dotenv: Para administrar de forma segura su clave de API y su clave privada, necesitará instalar el paquete dotenv. npm i dotenv
Ejecuta en tu terminal. Este paso garantiza que puedas cargar variables de entorno desde un .env
archivo en tu proyecto, manteniendo segura la información confidencial, como tu clave privada y tu clave de API.
npx hardhat
Configura tu proyecto Hardhat: inicializa tu proyecto Hardhat ejecutándolo en la terminal. Sigue las instrucciones para crear un proyecto de muestra y, cuando se te pregunte, puedes optar por crear un proyecto de JavaScript y requirenomicfoundation/hardhat-toolbox
, que es un conjunto de herramientas y complementos útiles para el desarrollo.
5.Configurar Hardhat para la bifurcación de la red principal: En el archivo de configuración de Hardhat (hardhat.config.js
), añada una configuración de red para Hardhat que especifique la bifurcación de la red principal. networks``hardhat
Esto implica usar la forking
propiedad para definir una nueva red denominada que incluya la opción. Necesitarás una clave de API para un servicio completo de nodos de archivado, como Alchemy o Infura. La configuración podría tener un aspecto similar al siguiente:
async function main() {
const [deployer] = await ethers.getSigners();
const receiver = "0xYourAccountAddress";
const amount = ethers.utils.parseEther("1.0");
const tx = await deployer.sendTransaction({
to: receiver,
value: amount,
});
console.log(`Funded ${receiver} with 1 ETH.`);
}
main().catch((error) => {
console.error(error);
process.exitCode = 1;
});
npx hardhat node --fork https://eth-mainnet.alchemyapi.io/v2/yourAlchemyApiKey --fork-block-number 12345678
Bifurcar la red principal: Con la configuración de Hardhat configurada para la bifurcación de la red principal, inicie un nodo Hardhat local que bifurque la red principal de Ethereum ejecutando. Este comando se usanpx hardhat node
para bifurcar la red principal, lo que te permite interactuar con el estado y los contratos preexistentes de la red Ethereum.yourAlchemyApiKey
Sustitúyala por tu clave de API actual y, si lo deseas, especifica un número de bloque del que derivar.
7.Deposita fondos en tu cuenta: Para depositar fondos en una cuenta con ETH en este entorno local, puedes usar la consola o los scripts de Hardhat. Primero, asegúrate de tener una cuenta con acceso a su clave privada. Puedes generar una nueva cuenta con Hardhat o usar una cuenta Ethereum existente. .env
En tu PRIVATE_KEY=yourPrivateKey
archivo, almacena la clave privada de la siguiente manera:.
8.Ejecuta un script de financiación: crea un script en tu proyecto que envíe ETH a tu cuenta desde una de las cuentas prefinanciadas en el nodo Hardhat. fundAccount.js
Este es un ejemplo de scriptnpx hardhat run scripts/fundAccount.js --network localhost
, con el que puedes ejecutar:
async function main() {
const [deployer] = await ethers.getSigners();
const receiver = "0xYourAccountAddress";
const amount = ethers.utils.parseEther("1.0");
const tx = await deployer.sendTransaction({
to: receiver,
value: amount,
});
console.log(`Funded ${receiver} with 1 ETH.`);
}
main().catch((error) => {
console.error(error);
process.exitCode = 1;
});
9.Verifica el saldo: verifica el saldo en ETH de tu cuenta ejecutando una sencilla tarea o script de Hardhat que comprueba e imprime el saldo de la cuenta.
Sabes la respuesta?
Inicie sesión y compártalo.
Web3 (also known as Web 3.0) is an idea for a new iteration of the World Wide Web which incorporates concepts such as decentralization, blockchain technologies, and token-based economics.