查看当前gas打包价格,预估gas后发送交易上链
cast send
与合约交互的方式有:1. 开源的代码直接调用ehterscan。2. 用开发工具编程进行交互。3. 去官方提供的接口进行调用
在我们直接进行发送`eth`或者调用`智能合约`简单的方法发送交易的时候,对于开发人员来说有时候并不想编写执行文件,或者将自己的私钥导入钱包再到对应的网站进行调用。这两种模式都稍显复杂,对于一次简单的交互来说,直接用cast命令既可以很快发起调用,也可以确认自己调用的方法和合约地址都没有问题。个人对于简单的交互更加偏向于cast send。
链上交互在拥堵的时候费用会非常贵,所以在发送交易的时候预估一下gas和查看当前区块的gas费用是很重要的,防止自己的交易迟迟不被提交,或是被消耗掉大量的手续费
查看当前的gas价格
调用cast gas-price
方法,后面加上你查询的网络的rpc
就可以了。这样可以看到当前大家的愿意支付的gas单价
用cast --to-unit转换后发现,当前的gas费用为29Gwei左右
预估执行本次方法大概要消耗多少gas
我们用cast estimate
方法预估交易费用。
参数为:
- 你要交互的合约地址。
- 你要执行的方法以及你传入的参数(uint256既可以传入16进制也可以传入10进制数字)。
- 调用的rpc节点
算出来是46422 Gwei。 价格乘上总消耗,就是我们这次交易花费的费用。大概是1364993Gwei。也就是0.001364993000000000eth。写文章的时候,ETH价格是3724
。算出这笔交易执行,大概消耗
5.08
。算出这笔交易执行,大概消耗5.08
。算出这笔交易执行,大概消耗5.08。但是如果想要交易快速打包上链,我们得查看最近区块打包的basefee,用cast base-fee
可以查看
发起交易
cast send 的主要参数有:
- 调用目标地址,如果是合约的话加上调用方法和参数
- RPC端点(rpc)
- 常用可选项:–gas-limit,:使用的gas数量限制; --gas-price:gas的单价; --value:要发送的eth数量
下面演示了三种常用的发送方式
首先我发起发送eth到其他地址:
发起一笔合约交互,但是没有指定gasPirce
这是一笔设置了gas单价和gas最高使用数的交易
单位转换工具:
十六进制转换为十进制 --to-base number type(10)
十六进制转化为ascii码 --to-ascii number
将数字转换为wei或者ether cast --to-unit value type
获取函数选择器 cast sig “someFunc(address,uint256)”
解析函数选择器 cast 4byte 0x8cc5ce99
编码带参数的函数 cast calldata “someFunc(address,uint256)” 0x… 1