foundry的cast call读取链上数据信息

使用Foundry中的cast与链上信息交互

与合约交互的方式有:1. 开源的代码直接调用ehterscan。2. 用开发工具编程进行交互。

在某些情况下我们没有办法直接通过浏览器调用合约查看一些合约中的简单配置,如果使用ethers.js或者web3.js编写代码进行查看,我们需要创建项目,导入库等操作,再编写大概五行到十行代码调用后才能查看到结果。对于开发者来说只是无限的造轮子的操作,再了解到foundry后,可以通过使用foundry的cast call命令,可以直接调用链上的不需要发布交易的方法,简单快速。所有写了这个文章,希望对需要的人能提供帮助。

cast call的主要参数有:1. 调用合约的地址(address)。2 调用合约的方法(method)。3. RPC端点(rpc)

address:可以填入地址或者ENS名称。例如:vitalik.eth或者0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045

–rpc-url: 填入一个节点即可

sig: 可以是函数名+参数+返回值,也可以是函数选择器+参数编码。例如:"balanceOf(address)"或者0x70a08231000000000000000000000000d8da6bf26964af9d7eed9e03e53415d37aa96045

调用示例

两种调用方式

获取到的值是十六进制,通过–to-ascii可以将十六进制转换为字符

Snipaste_2024-03-14_16-18-15

用–to-unit转换单位为ether

Snipaste_2024-03-14_16-19-04

对应一下链上的信息是没有问题的。

Snipaste_2024-03-14_16-21-54

常用的方法有以下几个:

十六进制转换为十进制 --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

  • 5
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值