区块链-前端交互第六篇:以太测试网转账和Gas计算
Posted 区块链市场观察家
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了区块链-前端交互第六篇:以太测试网转账和Gas计算相关的知识,希望对你有一定的参考价值。
文章目录
Gas 费用
参考文章:
部分变量说明
根据测试网-不设置Gas进行转账的交易数据,来分析一下交易Gas。在交易数据中,Gas相关的变量主要有如下四个:
变量名 | 变量含义 | 一般设置 |
---|---|---|
maxPriorityFeePerGas | 每份燃料支付给矿工的最大小费 | 可以设置为1gwei / $0.03 |
maxFeePerGas | 每份燃料支付给矿工小费的最大费用,包含baseFeePerGas和maxPriorityFeePerGas | 可以不设置 |
gasPrice | 每份燃料的价格 | 8gwei / $0.26 |
gasLimit | 一次交易中gas的可用上限 | 可以不设置 |
转账Gas计算公式
感觉这些不是关键,根据文章计算一下:一次转账固定消耗21000gas,gas使用ETH来支付。
根据以太坊浏览器里的实时Gas价格,1eth=10亿Gwei,一次转账需要21000Gas,当前Gas单价为 14Gwei,也就是一次转账需要美刀:(0.000000001**21000*14)*1579$/eth=$0.464226,刚好能够对应图里的 $0.46。
以太测试网
Goerli 测试网
https://goerli-faucet.mudit.blog/,该水龙头已经没有 GöETH 测试币余额了。
通过 goerli-faucet.pk910.de/ 地址在线挖测试币,竞争很大,要挖 1 个小时左右才能获得最低提现额度 0.02 GöETH。
北京时间上午十点,这也太慢了,先取消吧。
不挖还不行,挂着吧,运气好15分钟就能挖到0.02提取了。
Sepolia 测试网
没有找到水龙头。
测试网单笔转账(弄清Gas费用)
不设置Gas进行转账
参考文章:Ethers极简入门: 4. 发送ETH
事先定义好钱包私钥、钱包地址:
// 根据钱包私钥创建对象
const wallet_11 = new ethers.Wallet(privateKey_11, provider)
const oneGwei = ethers.BigNumber.from("1000000000");
console.log(ethers.utils.formatUnits(oneGwei, "ether"));
//发送交易,获得收据
const sendETH = async() =>
const tx =
to: wallet_address_12,
value: ethers.utils.parseEther("0.001")
const receipt = await wallet_11.sendTransaction(tx)
await receipt.wait() // 等待链上确认交易
console.log(receipt) // 打印交易详情
sendETH()
打印的交易详情:
type: 2,
chainId: 5,
nonce: 0,
maxPriorityFeePerGas: BigNumber _hex: '0x59682f00', _isBigNumber: true ,
maxFeePerGas: BigNumber _hex: '0x246fd2c674', _isBigNumber: true ,
gasPrice: null,
gasLimit: BigNumber _hex: '0x5208', _isBigNumber: true ,
to: '0x79B47AAfC5Bf1AAcC07F022A04fcFc8cDC66d3e8',
value: BigNumber _hex: '0x038d7ea4c68000', _isBigNumber: true ,
data: '0x',
accessList: [],
hash: '0x76033a70f23933c80c91bce282452a6d6bb48b5df2a5327679152dabc58a0d75',
v: 0,
r: '0x49e803e3b44dd0fd49597233d8c8620930f3dc7888785ea78408030d3865335c',
s: '0x4fbdbed45de9364964626a2a4c2582d66de269feec5ccff5725e2b727675bc43',
from: '0x281aF131Fc854Cb6756A7e2F57D895bcCf6DaFd5',
confirmations: 0,
wait: [Function (anonymous)]
ETH变化如下,转账gas费用=0.032-0.0293+0.001=0.0017。
钱包 | 发送前余额 | 发送后余额 |
---|---|---|
钱包11 | 0.032 | 0.0293 |
钱包12 | 0 | 0.001 |
设置Gas进行转账:web3-eth
见文章:
【区块链交互】第七篇:以太坊测试网转账(改用web3-eth库)
报错
Error: eip-1559 transaction do not support gasPrice
参考文章:智能合约 空投 nodejs调用web3js进行批量转账
Goerli 测试网转账,对于交易中的 Gas 参数设置会报错,提示"无效键名":
连接以太坊主网,也是同样的报错。
排查:问题出在对象及其方法上, ethers.Wallet(privateKey, provider).sendTransaction(tx)
这个方法的参数里不包含 gas 等相关参数。
解决:使用 web3
或者 web3-eth
库。
以上是关于区块链-前端交互第六篇:以太测试网转账和Gas计算的主要内容,如果未能解决你的问题,请参考以下文章
区块链-前端交互第一篇:使用python交互以太测试网(奔向JS)