Peera.

Bài viết

Chia sẻ kiến thức của bạn.

0x8744...6532.Peera.
Dành choAll Things Web3Oct 12, 2022
Hỏi đáp Chuyên Gia

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
1
3
Chia sẻ
Bình luận
.

Câu trả lời

3
0x8744...6532.
Oct 12 2022, 20:50

You 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,
      ])
    );
1
Câu trả lời hay nhất
Bình luận
.
Sergey Ilin.
Oct 12 2022, 21:02

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);
  });
0
Bình luận
.
Marcador.
Mar 15 2024, 07:17

Nạp tiền vào tài khoản bằng ETH trên một fork cục bộ hoặc node cục bộ trong Hardhat là một bước quan trọng để thử nghiệm các hợp đồng thông minh trong các điều kiện bắt chước mạng chính Ethereum. Hướng dẫn này tận dụng các từ khóa thiết yếu để hướng dẫn bạn thông qua quy trình một cách có cấu trúc và tối ưu hóa:

  1. mkdir mainnet-fork-tutorialTạo một dự án JavaScript: Khởi tạo dự án của bạn bằng cách mở một thiết bị đầu cuối và nhập lệnh để tạo một thư mục cho hướng dẫn của bạn, chẳng hạn như. Điều hướng vào thư mục dự án của bạn và thiết lập một dự án JavaScript mới.

2.** Cài đặt Hardhat**: Trong thư mục dự án của bạn, sử dụng npm để cài đặt Hardhat, đây là công cụ cốt lõi cho hướng dẫn này. Chạy npm install --save-dev hardhatđể thêm nó vào các phụ thuộc phát triển của dự án của bạn.

3.** Cài đặt Dotenv**: Để quản lý an toàn khóa API và khóa riêng của bạn, bạn sẽ cần cài đặt gói dotenv. Chạy npm i dotenvtrong thiết bị đầu cuối của bạn. Bước này đảm bảo rằng bạn có thể tải các biến môi trường từ một .envtệp vào dự án của mình, giữ an toàn thông tin nhạy cảm như khóa riêng tư và khóa API của bạn.

  1. npx hardhatThiết lập dự án Hardhat của bạn: Khởi tạo dự án Hardhat của bạn bằng cách chạy trong thiết bị đầu cuối. Làm theo lời nhắc để tạo một dự án mẫu và khi được yêu cầu, bạn có thể chọn tạo một dự án JavaScript và yêu cầunomicfoundation/hardhat-toolbox, đây là một tập hợp các công cụ và plugin hữu ích cho việc phát triển.

5.Định cấu hình Hardhat cho Mainnet Forking: Trong tệp cấu hình Hardhat của bạn (hardhat.config.js), thêm cấu hình mạng cho Hardhat chỉ định nhánh mainnet. Điều này liên quan đến việc sử dụng networksthuộc tính để xác định một mạng mới hardhatcó tên bao gồm forkingtùy chọn. Bạn sẽ cần một khóa API cho một dịch vụ node lưu trữ đầy đủ như Alchemy hoặc Infura. Cấu hình có thể trông giống như thế này:

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;
});

  1. npx hardhat node --fork https://eth-mainnet.alchemyapi.io/v2/yourAlchemyApiKey --fork-block-number 12345678Fork the Mainnet: Với cấu hình Hardhat của bạn được thiết lập để phân nhánh mạng chính, hãy khởi động một nút Hardhat cục bộ để phân nhánh mạng chính Ethereum bằng cách chạy. Lệnh này sử dụng npx hardhat nodeđể phân nhánh mạng chính, cho phép bạn tương tác với trạng thái và các hợp đồng đã có từ trước của mạng Ethereum. Thay thế yourAlchemyApiKeybằng khóa API thực tế của bạn và tùy chọn chỉ định số khối để phân nhánh.

7.Nạp tiền vào tài khoản của bạn: Để nạp tiền vào tài khoản bằng ETH trong môi trường địa phương này, bạn có thể sử dụng bảng điều khiển hoặc tập lệnh của Hardhat. Đầu tiên, hãy đảm bảo bạn có một tài khoản có quyền truy cập vào khóa riêng của nó. Bạn có thể tạo tài khoản mới bằng Hardhat hoặc sử dụng tài khoản Ethereum hiện có. Trong .envtệp của bạn, lưu trữ khóa riêng như sau:PRIVATE_KEY=yourPrivateKey.

8.Thực thi một tập lệnh nạp tiền: Tạo một tập lệnh trong dự án của bạn để gửi ETH đến tài khoản của bạn từ một trong các tài khoản được tài trợ trước trong nút Hardhat. Dưới đây là một tập lệnh ví dụfundAccount.js, bạn có thể chạy vớinpx hardhat run scripts/fundAccount.js --network localhost:

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.Xác minh số dạng: Xác minh số dư ETH trong tài khoản của bạn bằng cách chạy một tác vụ Hardhat hoặc tập lệnh đơn giản để kiểm tra và in ra số dư của tài khoản.

0
Bình luận
.

Bạn có biết câu trả lời không?

Hãy đăng nhập và chia sẻ nó.

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.

142Bài viết198Câu trả lời
Sui.X.Peera.

Kiếm phần của bạn từ 1000 Sui

Tích lũy điểm danh tiếng và nhận phần thưởng khi giúp cộng đồng Sui phát triển.

Chiến dịch phần thưởngTháng Sáu
Chúng tôi sử dụng cookie để đảm bảo bạn có trải nghiệm tốt nhất trên trang web của chúng tôi.
Thêm thông tin