web3 大佬圈
我是 web3 小白,欢迎各大佬进群一起交流、进步。
起一个本地测试网
开发环境中是不可能直接使用真的 Eth 去做转账的, 这一切都可以通过 hardhat 本地测试网来模拟。
hardhat是以太坊软件的开发环境。它由用于编辑、编译、调试和部署智能合约和 dApp 的不同组件组成,所有这些组件共同创建一个完整的开发环境
- 创建一个项目
mkdir chain
cd chain
pnpm init
pnpm add hardhat
pnpm hardhat node
将钱包或 Dapp 连接到 Hardhat 网络
- 添加网络
hardhat 默认 chain id 是 31337
- 添加账户
hardhat 起的服务会提供默认 19 个账户
从上面 19 个账户中,随便选一个 private key 贴进来,导入账户
Dapp 连接上刚才自己配置的账户
转账
- MetaMask
provider
?.request({
method: "eth_sendTransaction",
params: [
{
from: accounts[0],
to: toAddress,
value: "0x8ac7230489e80000",
gasLimit: "0x5028",
maxPriorityFeePerGas: "0x3b9aca00",
maxFeePerGas: "0x2540be400",
},
],
})
.then((txHash) => console.log(txHash))
.catch((error) => console.error(error))
.finally(() => {
console.log("2", 2);
});
- ethers
const transfer2 = async () => {
const detectedProvider = await detectProvider();
if (detectedProvider) {
// 包装成 ethers.js 提供者
const provider = new ethers.BrowserProvider(detectedProvider);
const signer = await provider?.getSigner();
const tx = await signer.sendTransaction({
to: toAddress,
value: parseEther(`${amount}`),
});
console.log(`Transaction hash: ${tx.hash}`);
const receipt = await tx.wait();
console.log("Transaction was mined in block:", receipt?.blockNumber);
if (currentAccount) {
const balance = await provider.getBalance(currentAccount);
setBalance(ethers.formatEther(balance));
}
}
};