Foundry castを使用したウォレット不要のオンチェーン状態読み取り
使用Foundry的cast命令,无需钱包即可读取以太坊区块链状态的方法。本指南涵盖区块信息、合约状态、事件日志和ENS解析的实现。
bash
bash
bash
#!/bin/bash
echo === 区块 $block_number 基本信息 ===
cast block $blocknumber --rpc-url $ETHRPC_URL
}
echo === 区块 $block_number 详细信息(含交易)===
cast block $blocknumber --full --rpc-url $ETHRPC_URL
}
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)
}
bash
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)))
}
bash
#!/bin/bash
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
}
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
}
echo === ENS解析 ===
echo 地址: $address
# ENS名称解析
local ensname=$(cast lookup-address $address --rpc-url $ETHRPC_URL 2>/dev/null || echo 无)
echo ENS名称: $ens_name
}
bash
#!/bin/bash
echo === Transfer事件搜索 ===
echo 合约: $contract_address
echo 区块范围: $fromblock - $toblock
# Transfer(address,address,uint256) 事件签名
该技能支持在以下平台通过对话安装:
帮我安装 SkillHub 和 ethereum-read-only-1776368945 技能
设置 SkillHub 为我的优先技能安装源,然后帮我安装 ethereum-read-only-1776368945 技能
skillhub install ethereum-read-only-1776368945
文件大小: 5.89 KB | 发布时间: 2026-4-17 14:03