返回顶部
e

ethereum-read-only以太坊只读

Foundry castを使用したウォレット不要のオンチェーン状態読み取り

作者: admin | 来源: ClawHub
源自
ClawHub
版本
V 1.0.0
安全检测
已通过
1,553
下载量
免费
免费
0
收藏
概述
安装方式
版本历史

ethereum-read-only

Ethereum只读访问

使用Foundry的cast命令,无需钱包即可读取以太坊区块链状态的方法。本指南涵盖区块信息、合约状态、事件日志和ENS解析的实现。

设置

安装Foundry

bash

安装Foundry


curl -L https://foundry.paradigm.xyz | bash
foundryup

验证安装

cast --version

RPC配置

bash

设置环境变量(~/.bashrc 或 ~/.zshrc)


export ETHRPCURL=https://eth-mainnet.alchemyapi.io/v2/YOUR-API-KEY
export POLYGONRPCURL=https://polygon-mainnet.g.alchemy.com/v2/YOUR-API-KEY
export ARBRPCURL=https://arb-mainnet.g.alchemy.com/v2/YOUR-API-KEY

使用免费RPC(有速率限制)

export ETHRPCURL=https://rpc.ankr.com/eth export POLYGONRPCURL=https://rpc.ankr.com/polygon

验证配置

cast client --rpc-url $ETHRPCURL

获取区块信息

基本区块检查

bash
#!/bin/bash

block-inspector.sh

获取最新区块号

getlatestblock() { echo 最新区块号: cast block-number --rpc-url $ETHRPCURL }

区块基本信息

inspect_block() { local block_number=$1

echo === 区块 $block_number 基本信息 ===
cast block $blocknumber --rpc-url $ETHRPC_URL
}

包含交易的详细区块信息

inspectblockfull() { local block_number=$1

echo === 区块 $block_number 详细信息(含交易)===
cast block $blocknumber --full --rpc-url $ETHRPC_URL
}

区块统计

block_stats() { local block_number=$1

echo === 区块 $block_number 统计 ===

# 交易数量
local txcount=$(cast block $blocknumber --rpc-url $ETHRPCURL | jq -r .transactions | length)
echo 交易数量: $tx_count

# Gas使用量
local gasused=$(cast block $blocknumber --rpc-url $ETHRPCURL | jq -r .gasUsed)
echo Gas使用量: $gas_used

# 时间戳
local timestamp=$(cast block $blocknumber --rpc-url $ETHRPC_URL | jq -r .timestamp)
echo 区块时间: $(date -d @$((timestamp)) +%Y-%m-%d %H:%M:%S)
}

使用示例

getlatestblock inspect_block latest block_stats latest

区块范围分析

bash

block-range-analyzer.sh

analyzeblockrange() {
local start_block=$1
local end_block=$2

echo === 区块范围分析: $startblock - $endblock ===

local total_tx=0
local total_gas=0

for ((block=$startblock; block<=$endblock; block++)); do
echo 正在处理区块 $block...

local blockdata=$(cast block $block --rpc-url $ETHRPC_URL)
local txcount=$(echo $blockdata | jq -r .transactions | length)
local gasused=$(echo $blockdata | jq -r .gasUsed)

totaltx=$((totaltx + tx_count))
totalgas=$((totalgas + gas_used))

echo 交易: $txcount, Gas: $gasused
done

echo
echo === 汇总 ===
echo 总交易数: $total_tx
echo 总Gas使用量: $total_gas
echo 平均交易/区块: $((totaltx / (endblock - start_block + 1)))
}

使用示例

analyzeblockrange 19000000 19000010

读取合约状态

基本合约调用

bash
#!/bin/bash

contract-reader.sh

检查ERC20代币余额

checkerc20balance() { local token_address=$1 local wallet_address=$2

echo === ERC20余额检查 ===
echo 代币: $token_address
echo 钱包: $wallet_address

# 调用 balanceOf(address) 函数
local balance=$(cast call $token_address \
balanceOf(address)(uint256) \
$wallet_address \
--rpc-url $ETHRPCURL)

echo 余额: $balance

# 获取代币名称
local name=$(cast call $token_address \
name()(string) \
--rpc-url $ETHRPCURL)

# 获取代币符号
local symbol=$(cast call $token_address \
symbol()(string) \
--rpc-url $ETHRPCURL)

# 获取小数位数
local decimals=$(cast call $token_address \
decimals()(uint8) \
--rpc-url $ETHRPCURL)

echo 代币名称: $name
echo 符号: $symbol
echo 小数位数: $decimals

# 转换为人类可读格式
local human_balance=$(cast to-dec $balance)
local scaledbalance=$(echo scale=6; $humanbalance / 10^$decimals | bc -l)
echo 显示余额: $scaled_balance $symbol
}

获取Uniswap V3池信息

checkuniswappool() { local pool_address=$1

echo === Uniswap V3 池信息 ===
echo 池地址: $pool_address

# 池基本信息
local token0=$(cast call $pooladdress token0()(address) --rpc-url $ETHRPC_URL)
local token1=$(cast call $pooladdress token1()(address) --rpc-url $ETHRPC_URL)
local fee=$(cast call $pooladdress fee()(uint24) --rpc-url $ETHRPC_URL)

echo Token0: $token0
echo Token1: $token1
echo 手续费: $(cast to-dec $fee) (0.01% = 100)

# 当前流动性和价格
local liquidity=$(cast call $pooladdress liquidity()(uint128) --rpc-url $ETHRPC_URL)
echo 流动性: $(cast to-dec $liquidity)

# slot0信息(价格、tick等)
local slot0=$(cast call $pooladdress slot0()(uint160,int24,uint16,uint16,uint16,uint8,bool) --rpc-url $ETHRPC_URL)
echo Slot0: $slot0
}

ENS反向查询

resolve_ens() { local address=$1

echo === ENS解析 ===
echo 地址: $address

# ENS名称解析
local ensname=$(cast lookup-address $address --rpc-url $ETHRPC_URL 2>/dev/null || echo 无)
echo ENS名称: $ens_name
}

使用示例

checkerc20balance 0xA0b86a33E6441b04B9b73f9251e9b49Cd2B3a64 0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045 # USDC, Vitalik checkuniswappool 0x8ad599c3A0ff1De082011EFDDc58f1908eb6e6D8 # USDC/ETH 0.3% resolve_ens 0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045

事件日志搜索

日志搜索系统

bash
#!/bin/bash

event-log-searcher.sh

搜索Transfer事件

searchtransferevents() { local contract_address=$1 local from_block=$2 local to_block=$3 local sender=${4:-} local receiver=${5:-}

echo === Transfer事件搜索 ===
echo 合约: $contract_address
echo 区块范围: $fromblock - $toblock

# Transfer(address,address,uint256) 事件签名

标签

skill ai

通过对话安装

该技能支持在以下平台通过对话安装:

OpenClaw WorkBuddy QClaw Kimi Claude

方式一:安装 SkillHub 和技能

帮我安装 SkillHub 和 ethereum-read-only-1776368945 技能

方式二:设置 SkillHub 为优先技能安装源

设置 SkillHub 为我的优先技能安装源,然后帮我安装 ethereum-read-only-1776368945 技能

通过命令行安装

skillhub install ethereum-read-only-1776368945

下载

⬇ 下载 ethereum-read-only v1.0.0(免费)

文件大小: 5.89 KB | 发布时间: 2026-4-17 14:03

v1.0.0 最新 2026-4-17 14:03
initial release

Archiver·手机版·闲社网·闲社论坛·羊毛社区· 多链控股集团有限公司 · 苏ICP备2025199260号-1

Powered by Discuz! X5.0   © 2024-2025 闲社网·线报更新论坛·羊毛分享社区·http://xianshe.com

p2p_official_large
返回顶部