소스 정보
- 저장소
- johnalbertini14-glitch/openclaw-skills
- 최근 소스 활동
- 2026년 2월 3일 02:06
- 감지된 SKILL.md 언어
- 일본어
- 스타
- 1
- 포크
- 0
설치 방법
기본적으로 소스를 먼저 확인하는 Prompt가 선택됩니다. 직접 명령으로 전환하거나 로컬 사본을 다운로드할 수도 있습니다.
소스 파일 검토
설치 여부를 결정하기 전에 SKILL.md와 SkillsMP에 표시된 보조 파일을 읽어 보세요.
메뉴
기본적으로 소스를 먼저 확인하는 Prompt가 선택됩니다. 직접 명령으로 전환하거나 로컬 사본을 다운로드할 수도 있습니다.
설치 여부를 결정하기 전에 SKILL.md와 SkillsMP에 표시된 보조 파일을 읽어 보세요.
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
직접 명령은 검토 Prompt를 거치지 않습니다. 실행하기 전에 소스를 확인하세요.
npx skills add https://github.com/johnalbertini14-glitch/openclaw-skills --skill ethereum-read-only명령은 한 줄로 유지됩니다. 복사하기 전에 가로로 스크롤해 전체 내용을 확인하세요.
로컬 사본을 원하시나요? SkillsMP에서 현재 제공할 수 있는 파일을 다운로드하세요.
SOC 직업 분류 기준
SKILL.md 표시 중
| name | ethereum-read-only |
| version | 1.0.0 |
| description | Foundry castを使用したウォレット不要のオンチェーン状態読み取り |
Foundryのcastコマンドを使用してウォレットなしでEthereumブロックチェーンの状態を読み取る方法。ブロック情報、コントラクト状態、イベントログ、ENS解決の実装ガイドです。
# Foundryインストール
curl -L https://foundry.paradigm.xyz | bash
foundryup
# 動作確認
cast --version
# 環境変数設定(~/.bashrc または ~/.zshrc)
export ETH_RPC_URL="https://eth-mainnet.alchemyapi.io/v2/YOUR-API-KEY"
export POLYGON_RPC_URL="https://polygon-mainnet.g.alchemy.com/v2/YOUR-API-KEY"
export ARB_RPC_URL="https://arb-mainnet.g.alchemy.com/v2/YOUR-API-KEY"
# 無料RPCの使用(レート制限あり)
export ETH_RPC_URL="https://rpc.ankr.com/eth"
export POLYGON_RPC_URL="https://rpc.ankr.com/polygon"
# 設定確認
cast client --rpc-url $ETH_RPC_URL
#!/bin/bash
# block-inspector.sh
# 最新ブロック番号取得
get_latest_block() {
echo "最新ブロック番号:"
cast block-number --rpc-url $ETH_RPC_URL
}
# ブロック基本情報
inspect_block() {
local block_number="$1"
echo "=== ブロック $block_number 基本情報 ==="
cast block "$block_number" --rpc-url $ETH_RPC_URL
}
# トランザクション込みの詳細ブロック情報
inspect_block_full() {
local block_number="$1"
echo "=== ブロック $block_number 詳細情報(トランザクション含む)==="
cast block "$block_number" --full --rpc-url $ETH_RPC_URL
}
# ブロック統計
block_stats() {
local block_number="$1"
echo "=== ブロック $block_number 統計 ==="
# トランザクション数
local tx_count="$(cast block "$block_number" --rpc-url $ETH_RPC_URL | jq -r '.transactions | length')"
echo "トランザクション数: $tx_count"
# ガス使用量
local gas_used="$(cast block "$block_number" --rpc-url $ETH_RPC_URL | jq -r '.gasUsed')"
echo "ガス使用量: $gas_used"
# タイムスタンプ
local timestamp="$(cast block "$block_number" --rpc-url $ETH_RPC_URL | jq -r '.timestamp')"
echo "ブロック時刻: $(date -d @$((timestamp)) +'%Y-%m-%d %H:%M:%S')"
}
# 使用例
get_latest_block
inspect_block "latest"
block_stats "latest"
# block-range-analyzer.sh
analyze_block_range() {
local start_block="$1"
local end_block="$2"
echo "=== ブロック範囲分析: $start_block - $end_block ==="
local total_tx=0
local total_gas=0
for ((block=$start_block; block<=$end_block; block++)); do
echo "ブロック $block を処理中..."
local block_data="$(cast block "$block" --rpc-url $ETH_RPC_URL)"
local tx_count="$(echo "$block_data" | jq -r '.transactions | length')"
local gas_used="$(echo "$block_data" | jq -r '.gasUsed')"
total_tx=$((total_tx + tx_count))
total_gas=$((total_gas + gas_used))
echo " TX: $tx_count, Gas: $gas_used"
done
echo ""
echo "=== サマリー ==="
echo "総トランザクション数: $total_tx"
echo
}
analyze_block_range 19000000 19000010
#!/bin/bash
# contract-reader.sh
# ERC20トークン残高確認
check_erc20_balance() {
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 $ETH_RPC_URL)"
echo "残高: $balance"
# トークン名取得
local name="$(cast call "$token_address" \
"name()(string)" \
--rpc-url $ETH_RPC_URL)"
# トークンシンボル取得
local symbol="$(cast call "$token_address" \
"symbol()(string)" \
--rpc-url $ETH_RPC_URL)"
# 小数点桁数取得
local decimals="$(cast call "$token_address" \
\
--rpc-url $ETH_RPC_URL)"
human_balance=
scaled_balance=
}
() {
pool_address=
token0=
token1=
fee=
liquidity=
slot0=
}
() {
address=
ens_name=
}
check_erc20_balance
check_uniswap_pool
resolve_ens
#!/bin/bash
# event-log-searcher.sh
# Transfer イベント検索
search_transfer_events() {
local contract_address="$1"
local from_block="$2"
local to_block="$3"
local sender="${4:-}"
local receiver="${5:-}"
echo "=== Transfer イベント検索 ==="
echo "コントラクト: $contract_address"
echo "ブロック範囲: $from_block - $to_block"
# Transfer(address,address,uint256) イベントシグネチャ
local transfer_sig="0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef"
# 基本検索コマンド構築
local cmd="cast logs --rpc-url $ETH_RPC_URL"
cmd="$cmd --address $contract_address"
cmd="$cmd --from-block $from_block"
cmd="$cmd --to-block $to_block"
cmd="$cmd $transfer_sig"
# フィルター追加
if [[ -n "$sender" ]];
cmd=
[[ -n ]];
[[ -z ]];
cmd=
cmd=
| jq -r
}
() {
contract_address=
event_signature=
from_block=
to_block=
cast logs \
--address \
--from-block \
--to-block \
\
--rpc-url \
| jq
}
() {
pool_address=
from_block=
to_block=
swap_sig=
cast logs \
--address \
--from-block \
--to-block \
\
--rpc-url \
| jq -r
}
search_transfer_events
search_custom_events
#!/bin/bash
# ens-resolver.sh
# ENS名からアドレス解決
resolve_ens_to_address() {
local ens_name="$1"
echo "=== ENS → アドレス解決 ==="
echo "ENS名: $ens_name"
# 基本的なアドレス解決
local address="$(cast resolve-name "$ens_name" --rpc-url $ETH_RPC_URL)"
echo "アドレス: $address"
# コンテンツハッシュ取得(IPFS等)
local content_hash="$(cast call 0x231b0Ee14048e9dCcD1d247744d114a4EB5E8E63 \
"contenthash(bytes32)(bytes)" \
"$(cast namehash "$ens_name")" \
--rpc-url $ETH_RPC_URL 2>/dev/null || echo "なし")"
echo "コンテンツハッシュ: $content_hash"
# テキストレコード取得
echo "テキストレコード:"
for key in "email" "url" "avatar" "description" "notice" "keywords" "com.github" "com.twitter"; do
local value="$(cast call 0x231b0Ee14048e9dCcD1d247744d114a4EB5E8E63 \
\
\
\
--rpc-url $ETH_RPC_URL 2>/dev/null || echo )"
[[ -n && != ]];
}
() {
address=
ens_name=
[[ != ]];
reverse_address=
[[ == ]];
}
() {
ens_name=
owner=
[[ == *.eth ]];
registrar=
token_id=
registrant=
expires=
[[ != ]];
}
resolve_ens_to_address
resolve_address_to_ens
ens_domain_info
#!/bin/bash
# abi-decoder.sh
# 関数呼び出しデコード
decode_function_call() {
local tx_hash="$1"
local abi_file="$2" # JSONファイルまたはEtherscan署名
echo "=== 関数呼び出しデコード ==="
echo "TX: $tx_hash"
# トランザクション詳細取得
local tx_data="$(cast tx "$tx_hash" --rpc-url $ETH_RPC_URL)"
local input_data="$(echo "$tx_data" | jq -r '.input')"
local to_address="$(echo "$tx_data" | jq -r '.to')"
echo "送信先: $to_address"
echo "入力データ: ${input_data:0:50}..."
# 4byteセレクタ抽出
local selector="${input_data:2:8}"
echo "関数セレクタ: 0x$selector"
# 4byte.directory から関数名取得
local function_sig="$(curl -s "https://www.4byte.directory/api/v1/signatures/?hex_signature=0x$selector" | jq -r '.results[0].text_signature')"
[[ -f ]];
cast 4byte-decode --abi-path
}
() {
tx_hash=
log_index=
abi_file=
logs=
topics=
data=
event_sig=
event_name=
[[ -f ]];
}
() {
<<
0xa9059cbb: transfer(address,uint256)
0x095ea7b3: approve(address,uint256)
0x23b872dd: transferFrom(address,address,uint256)
0x70a08231: balanceOf(address)
0x18160ddd: totalSupply()
0xdd62ed3e: allowance(address,address)
0x40c10f19: mint(address,uint256)
0x42966c68: burn(uint256)
0x7ff36ab5: swapExactETHForTokens(uint256,address[],address,uint256)
0x38ed1739: swapExactTokensForTokens(uint256,uint256,address[],address,uint256)
EOF
}
common_selectors
#!/bin/bash
# defi-portfolio-checker.sh
check_defi_portfolio() {
local wallet="$1"
echo "=== DeFi ポートフォリオ: $wallet ==="
# ETH残高
local eth_balance="$(cast balance "$wallet" --rpc-url $ETH_RPC_URL)"
echo "ETH: $(cast to-ether "$eth_balance") ETH"
# 主要トークン残高
local tokens=(
"0xA0b86a33E6441b04B9b73f9251e9b49Cd2B3a64:USDC:6"
"0xdAC17F958D2ee523a2206206994597C13D831ec7:USDT:6"
"0x6B175474E89094C44Da98b954EedeAC495271d0F:DAI:18"
"0x1f9840a85d5aF5bf1D1762F925BDADdC4201F984:UNI:18"
)
for token in "${tokens[@]}"; do
IFS=':' read -r address symbol decimals <<< "$token"
local balance="$(cast call "$address" "balanceOf(address)(uint256)" "$wallet" --rpc-url $ETH_RPC_URL)"
local human_balance="$(echo "scale=4; $(cast to-dec "") / 10^" | bc -l)"
}
check_defi_portfolio
ウォレット管理やトランザクション送信を含む完全なcast CLIガイドは kairyuu.net/exchange/ での取引で入手可能です。