wallet by starchild-ai-agent/official-skills
npx skills add https://github.com/starchild-ai-agent/official-skills --skill wallet与此代理的链上钱包进行交互。每个代理在每个链上(EVM + Solana)都有一个钱包。支持余额查询、转账(策略控制)、消息签名和交易历史查询。
通过 Fly OIDC 令牌自动进行身份验证——无需 API 密钥或钱包地址。钱包在部署时绑定到此机器。
| 工具 | 描述 |
|---|---|
wallet_info | 获取所有钱包地址和链类型 |
wallet_get_all_balances | 主要工具 - 获取所有链(EVM + Solana)的完整资产组合及美元价值 |
| 工具 | 描述 |
|---|---|
wallet_balance | 获取特定链上的 ETH/代币余额(需要 chain 参数) |
广告位招租
在这里展示您的产品或服务
触达数万 AI 开发者,精准高效
wallet_transactions | 获取最近的 EVM 交易历史 |
wallet_transfer | 在链上签名并广播交易(策略控制)。资金将从钱包转出。 |
wallet_sign_transaction | 签名交易但不广播(返回 RLP 编码的已签名交易,不会发送到链上) |
wallet_sign | 签名消息(EIP-191 personal_sign) |
wallet_sign_typed_data | 签名 EIP-712 结构化数据(许可、订单等) |
| 工具 | 描述 |
|---|---|
wallet_sol_balance | 获取 SOL/SPL 代币余额及美元价值 |
wallet_sol_transactions | 获取最近的 Solana 交易历史 |
wallet_sol_transfer | 在链上签名并广播 Solana 交易(策略控制)。资金将从钱包转出。 |
wallet_sol_sign_transaction | 签名 Solana 交易但不广播(返回 base64 编码的已签名交易,不会发送到链上) |
wallet_sol_sign | 使用 Solana 钱包签名消息 |
wallet_info()
返回:wallets 列表,包含每个活跃钱包的 wallet_address 和 chain_type。
在进行任何操作之前,首先使用此工具查看所有可用钱包。
重要:请始终指定 chain 参数!要一次性检查所有链,请改用 wallet_get_all_balances。
wallet_balance(chain="ethereum") # 获取以太坊上的所有代币
wallet_balance(chain="base", asset="usdc") # 检查 Base 链上的特定资产
wallet_balance(chain="polygon", asset="pol") # Polygon 链需要明确指定资产
chain 参数是必需的。 有效链:ethereum、base、arbitrum、optimism、polygon、linea
资产命名:
"pol",而不是 "matic""usdc"、"weth"、"usdt""0x..."),仅使用符号asset 参数以发现指定链上的所有代币已知限制 - Polygon: Polygon 链需要明确的资产参数。不要使用:
wallet_balance(chain="polygon") # ❌ 可能失败并提示 "eth not supported"
请使用:
wallet_balance(chain="polygon", asset="pol") # ✅ 检查 POL 余额
wallet_balance(chain="polygon", asset="usdc") # ✅ 检查 USDC 余额
要获取完整的 Polygon 资产组合,请使用 wallet_get_all_balances(),该工具会正确处理此问题。
要一次性检查所有链的余额,请改用 wallet_get_all_balances()。
wallet_get_all_balances()
这是进行综合性余额检查的主要工具。
自动检查所有支持的链(Ethereum、Base、Arbitrum、Optimism、Polygon、Linea、Solana),并返回包含美元价值的完整资产组合。
请使用此工具,而不是为不同链多次调用 wallet_balance()。
wallet_transactions()
wallet_transactions(chain="ethereum", asset="eth", limit=10)
wallet_transactions(limit=50)
默认值:chain="ethereum"、asset="eth"、limit=20(最大 100)。
返回:交易列表,包含 tx_hash、from、to、amount、status、timestamp。
wallet_transfer(to="0xRecipientAddress", amount="1000000000000000000")
wallet_transfer(to="0xRecipientAddress", amount="1000000000000000000", chain_id=8453)
wallet_transfer(to="0xContractAddress", amount="0", data="0xa9059cbb000000...", chain_id=8453)
to:目标钱包或合约地址(0x...)amount:以 wei 为单位的金额(不是 ETH)。"1000000000000000000" = 1 ETH。对于不发送 ETH 的合约调用,使用 "0"。chain_id:链 ID(默认:1 = 以太坊主网,8453 = Base,10 = Optimism)data:合约调用的十六进制编码调用数据(例如 ERC-20 转账、交换)。可选——对于简单的 ETH 转账可省略。gas_limit:Gas 限制(十进制字符串)。可选——如果省略,Privy 会进行估算。gas_price:Gas 价格,单位为 wei(十进制字符串,用于传统交易)。可选。max_fee_per_gas:每 Gas 最大费用,单位为 wei(十进制字符串,用于 EIP-1559 交易)。可选。max_priority_fee_per_gas:最大优先费用,单位为 wei(十进制字符串,用于 EIP-1559 交易)。可选。nonce:交易 nonce(十进制字符串)。可选——如果省略则自动确定。tx_type:交易类型整数。0=传统,1=EIP-2930,2=EIP-1559,4=EIP-7702。可选。策略强制执行:转账受 Privy TEE 策略控制。目标地址必须在白名单中,且金额必须在每日限额内。违反策略将返回错误。
wallet_sign_transaction(to="0xRecipientAddress", amount="1000000000000000000")
wallet_sign_transaction(to="0xRecipientAddress", amount="1000000000000000000", chain_id=8453)
wallet_sign_transaction(to="0xContractAddress", amount="0", data="0xa9059cbb000000...", chain_id=8453, tx_type=2, max_fee_per_gas="30000000000", max_priority_fee_per_gas="2000000000")
参数与 wallet_transfer 相同,加上用于 EIP-1559 的 max_fee_per_gas 和 max_priority_fee_per_gas。
返回:signed_transaction(RLP 编码的十六进制字符串)、encoding("rlp")
使用场景:为后续提交预签名交易、多步骤流程、外部广播。
wallet_sign(message="Hello World")
wallet_sign(message="Verify ownership of this wallet")
返回:signature(EIP-191 personal_sign 格式)
使用场景:证明钱包所有权、签名链下消息、创建可验证的证明。
wallet_sign_typed_data(
domain={"name": "MyDApp", "version": "1", "chainId": 1, "verifyingContract": "0x..."},
types={"Person": [{"name": "name", "type": "string"}, {"name": "wallet", "type": "address"}]},
primaryType="Person",
message={"name": "Alice", "wallet": "0x..."}
)
domain:EIP-712 域分隔符(名称、版本、chainId、verifyingContract)types:类型定义——类型名称到 {name, type} 字段数组的映射primaryType:正在签名的主要类型(必须存在于 types 中)message:要签名的结构化数据(必须匹配 primaryType 模式)返回:signature(十六进制字符串)
使用场景:EIP-2612 许可批准、链下订单签名(Seaport、0x)、无 Gas 批准、结构化证明。
wallet_sol_balance()
wallet_sol_balance(chain="solana", asset="sol")
所有参数都是可选的。返回带有美元等值的余额。
wallet_sol_transactions()
wallet_sol_transactions(chain="solana", asset="sol", limit=10)
默认值:chain="solana"、asset="sol"、limit=20(最大 100)。
wallet_sol_transfer(transaction="<base64-encoded-transaction>")
wallet_sol_transfer(transaction="<base64-encoded-transaction>", caip2="solana:EtWTRABZaYq6iMfeYKouRu166VU2xqa1")
transaction:Base64 编码的序列化 Solana 交易caip2:CAIP-2 链标识符(默认:"solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp" 表示主网,使用 "solana:EtWTRABZaYq6iMfeYKouRu166VU2xqa1" 表示开发网)策略强制执行:与 EVM 相同——转账受 Privy TEE 策略控制。
wallet_sol_sign_transaction(transaction="<base64-encoded-transaction>")
transaction:Base64 编码的序列化 Solana 交易返回:signed_transaction(base64 编码)、encoding("base64")
使用场景:为后续提交预签名交易、多步骤流程、外部广播。
wallet_sol_sign(message="<base64-encoded-message>")
返回:signature(base64 编码)
wallet_info() — 确认钱包处于活跃状态wallet_balance(chain="ethereum") — 检查特定链上的可用资金(或使用 wallet_get_all_balances())wallet_transfer(to="0x...", amount="...") — 执行转账wallet_transactions(limit=1) — 确认交易状态wallet_info() — 确认钱包处于活跃状态wallet_sol_balance() — 检查可用的 SOL 资金wallet_sol_transfer(transaction="...") — 签名并发送交易wallet_sol_transactions(limit=1) — 确认交易状态wallet_info() — 查看所有钱包wallet_get_all_balances() — 所有链(EVM + Solana)的完整资产组合wallet_transactions(limit=20) — 最近的 EVM 活动wallet_sol_transactions(limit=20) — 最近的 Solana 活动wallet_info() — 获取所有钱包地址wallet_sign(message="I am the owner of this wallet at timestamp 1234567890") — EVM 证明wallet_sol_sign(message="<base64-encoded-message>") — Solana 证明金额始终以 wei(最小单位)为单位。转换表:
| 金额 | Wei 字符串 |
|---|---|
| 0.001 ETH | "1000000000000000" |
| 0.01 ETH | "10000000000000000" |
| 0.1 ETH | "100000000000000000" |
| 1 ETH | "1000000000000000000" |
| 10 ETH | "10000000000000000000" |
公式:wei = eth_amount * 10^18
| 链 | ID | CAIP-2 | 原生资产 |
|---|---|---|---|
| 以太坊主网 | 1 | eip155:1 | eth |
| 以太坊 Sepolia | 11155111 | eip155:11155111 | eth |
| Base | 8453 | eip155:8453 | eth |
| Optimism | 10 | eip155:10 | eth |
| Arbitrum One | 42161 | eip155:42161 | eth |
| Polygon | 137 | eip155:137 | pol(不是 "matic") |
| Linea | 59144 | eip155:59144 | eth |
| 网络 | CAIP-2 |
|---|---|
| Solana 主网 | solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp |
| Solana 开发网 | solana:EtWTRABZaYq6iMfeYKouRu166VU2xqa1 |
策略由用户通过主后端 API 管理,不由代理管理。
| 错误 | 含义 | 操作 |
|---|---|---|
| "Not running on a Fly Machine" | 钱包需要 Fly 部署 | 无法在本地使用钱包 |
| "Policy violation: ..." | 转账被 Privy 策略拒绝 | 检查白名单和每日限额 |
| "HTTP 404" | 未找到此机器的钱包 | 钱包可能尚未创建 |
| "HTTP 403" | OIDC 令牌无效或已过期 | 令牌将自动刷新,请重试 |
每周安装数
3.5K
仓库
GitHub 星标数
1
首次出现
13 天前
安全审计
安装于
openclaw3.5K
opencode32
github-copilot32
codex32
amp32
cline32
Interact with this agent's on-chain wallets. Each agent has one wallet per chain (EVM + Solana). Supports balance queries, transfers (policy-gated), message signing, and transaction history.
Authentication is automatic via Fly OIDC token — no API keys or wallet addresses needed. Wallets are bound to this machine at deploy time.
| Tool | Description |
|---|---|
wallet_info | Get all wallet addresses and chain types |
wallet_get_all_balances | PRIMARY TOOL - Get complete portfolio across ALL chains (EVM + Solana) with USD values |
| Tool | Description |
|---|---|
wallet_balance | Get ETH/token balances on a specific chain (requires chain parameter) |
wallet_transactions | Get recent EVM transaction history |
wallet_transfer | Sign and broadcast a transaction on-chain (policy-gated). Funds leave the wallet. |
wallet_sign_transaction | Sign a transaction WITHOUT broadcasting (returns RLP-encoded signed tx, nothing sent on-chain) |
wallet_sign | Sign a message (EIP-191 personal_sign) |
wallet_sign_typed_data | Sign EIP-712 structured data (permits, orders, etc.) |
| Tool | Description |
|---|---|
wallet_sol_balance | Get SOL/SPL token balances with USD values |
wallet_sol_transactions | Get recent Solana transaction history |
wallet_sol_transfer | Sign and broadcast a Solana transaction on-chain (policy-gated). Funds leave the wallet. |
wallet_sol_sign_transaction | Sign a Solana transaction WITHOUT broadcasting (returns base64 signed tx, nothing sent on-chain) |
wallet_sol_sign | Sign a message with the Solana wallet |
wallet_info()
Returns: list of wallets with wallet_address and chain_type for each active wallet.
Use this first to see all available wallets before any operations.
IMPORTANT: Always specify thechain parameter! To check all chains at once, use wallet_get_all_balances instead.
wallet_balance(chain="ethereum") # Get ALL tokens on Ethereum
wallet_balance(chain="base", asset="usdc") # Check specific asset on Base
wallet_balance(chain="polygon", asset="pol") # Polygon requires explicit asset
chain parameter is REQUIRED. Valid chains: ethereum, base, arbitrum, optimism, polygon, linea
Asset naming:
"pol" NOT "matic""usdc", "weth", "usdt""0x..."), use symbols onlyasset parameter to discover ALL tokens on the specified chainKnown Limitation - Polygon: The Polygon chain requires explicit asset parameters. Instead of:
wallet_balance(chain="polygon") # ❌ May fail with "eth not supported"
Use:
wallet_balance(chain="polygon", asset="pol") # ✅ Check POL balance
wallet_balance(chain="polygon", asset="usdc") # ✅ Check USDC balance
For complete Polygon portfolio, use wallet_get_all_balances() which handles this correctly.
For checking balances across ALL chains in one call, use wallet_get_all_balances() instead.
wallet_get_all_balances()
This is the PRIMARY tool for comprehensive balance checks.
Automatically checks ALL supported chains (Ethereum, Base, Arbitrum, Optimism, Polygon, Linea, Solana) and returns complete portfolio with USD values.
Use this instead of calling wallet_balance() multiple times for different chains.
wallet_transactions()
wallet_transactions(chain="ethereum", asset="eth", limit=10)
wallet_transactions(limit=50)
Defaults: chain="ethereum", asset="eth", limit=20 (max 100).
Returns: list of transactions with tx_hash, from, to, amount, status, timestamp.
wallet_transfer(to="0xRecipientAddress", amount="1000000000000000000")
wallet_transfer(to="0xRecipientAddress", amount="1000000000000000000", chain_id=8453)
wallet_transfer(to="0xContractAddress", amount="0", data="0xa9059cbb000000...", chain_id=8453)
to: Target wallet or contract address (0x...)amount: Amount in wei (not ETH). "1000000000000000000" = 1 ETH. Use "0" for contract calls that don't send ETH.chain_id: Chain ID (default: 1 = Ethereum mainnet, 8453 = Base, 10 = Optimism)data: Hex-encoded calldata for contract calls (e.g. ERC-20 transfer, swap). Optional — omit for simple ETH transfers.gas_limit: Gas limit (decimal string). Optional — Privy estimates if omitted.gas_price: Gas price in wei (decimal string, for legacy transactions). Optional.max_fee_per_gas: Max fee per gas in wei (decimal string, for EIP-1559 transactions). Optional.Policy enforcement : Transfers are gated by Privy TEE policy. The target address must be on the whitelist and the amount must be within daily limits. Policy violations return an error.
wallet_sign_transaction(to="0xRecipientAddress", amount="1000000000000000000")
wallet_sign_transaction(to="0xRecipientAddress", amount="1000000000000000000", chain_id=8453)
wallet_sign_transaction(to="0xContractAddress", amount="0", data="0xa9059cbb000000...", chain_id=8453, tx_type=2, max_fee_per_gas="30000000000", max_priority_fee_per_gas="2000000000")
Same parameters as wallet_transfer, plus max_fee_per_gas and max_priority_fee_per_gas for EIP-1559.
Returns: signed_transaction (RLP-encoded hex), encoding ("rlp")
Use cases: pre-sign transactions for later submission, multi-step flows, external broadcast.
wallet_sign(message="Hello World")
wallet_sign(message="Verify ownership of this wallet")
Returns: signature (EIP-191 personal_sign format)
Use cases: prove wallet ownership, sign off-chain messages, create verifiable attestations.
wallet_sign_typed_data(
domain={"name": "MyDApp", "version": "1", "chainId": 1, "verifyingContract": "0x..."},
types={"Person": [{"name": "name", "type": "string"}, {"name": "wallet", "type": "address"}]},
primaryType="Person",
message={"name": "Alice", "wallet": "0x..."}
)
domain: EIP-712 domain separator (name, version, chainId, verifyingContract)types: Type definitions — mapping of type name to array of {name, type} fieldsprimaryType: The primary type being signed (must exist in types)message: The structured data to sign (must match primaryType schema)Returns: signature (hex)
Use cases: EIP-2612 permit approvals, off-chain order signing (Seaport, 0x), gasless approvals, structured attestations.
wallet_sol_balance()
wallet_sol_balance(chain="solana", asset="sol")
All parameters are optional. Returns balances with USD-equivalent values.
wallet_sol_transactions()
wallet_sol_transactions(chain="solana", asset="sol", limit=10)
Defaults: chain="solana", asset="sol", limit=20 (max 100).
wallet_sol_transfer(transaction="<base64-encoded-transaction>")
wallet_sol_transfer(transaction="<base64-encoded-transaction>", caip2="solana:EtWTRABZaYq6iMfeYKouRu166VU2xqa1")
transaction: Base64-encoded serialized Solana transactioncaip2: CAIP-2 chain identifier (default: "solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp" for mainnet, use "solana:EtWTRABZaYq6iMfeYKouRu166VU2xqa1" for devnet)Policy enforcement : Same as EVM — transfers are gated by Privy TEE policy.
wallet_sol_sign_transaction(transaction="<base64-encoded-transaction>")
transaction: Base64-encoded serialized Solana transactionReturns: signed_transaction (base64), encoding ("base64")
Use cases: pre-sign transactions for later submission, multi-step flows, external broadcast.
wallet_sol_sign(message="<base64-encoded-message>")
Returns: signature (base64)
wallet_info() — Confirm wallets are activewallet_balance(chain="ethereum") — Check available funds on specific chain (or use wallet_get_all_balances())wallet_transfer(to="0x...", amount="...") — Execute transferwallet_transactions(limit=1) — Confirm transaction statuswallet_info() — Confirm wallets are activewallet_sol_balance() — Check available SOL fundswallet_sol_transfer(transaction="...") — Sign and send transactionwallet_sol_transactions(limit=1) — Confirm transaction statuswallet_info() — See all walletswallet_get_all_balances() — Complete portfolio across ALL chains (EVM + Solana)wallet_transactions(limit=20) — Recent EVM activitywallet_sol_transactions(limit=20) — Recent Solana activitywallet_info() — Get all wallet addresseswallet_sign(message="I am the owner of this wallet at timestamp 1234567890") — EVM proofwallet_sol_sign(message="<base64-encoded-message>") — Solana proofAmounts are always in wei (smallest unit). Conversion table:
| Amount | Wei String |
|---|---|
| 0.001 ETH | "1000000000000000" |
| 0.01 ETH | "10000000000000000" |
| 0.1 ETH | "100000000000000000" |
| 1 ETH | "1000000000000000000" |
| 10 ETH | "10000000000000000000" |
Formula: wei = eth_amount * 10^18
| Chain | ID | CAIP-2 | Native Asset |
|---|---|---|---|
| Ethereum Mainnet | 1 | eip155:1 | eth |
| Ethereum Sepolia | 11155111 | eip155:11155111 | eth |
| Base | 8453 | eip155:8453 | eth |
| Network | CAIP-2 |
|---|---|
| Solana Mainnet | solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp |
| Solana Devnet | solana:EtWTRABZaYq6iMfeYKouRu166VU2xqa1 |
Policy is managed by the user through the main backend API, not by the agent.
| Error | Meaning | Action |
|---|---|---|
| "Not running on a Fly Machine" | Wallet requires Fly deployment | Cannot use wallet locally |
| "Policy violation: ..." | Transfer rejected by Privy policy | Check whitelist and daily limits |
| "HTTP 404" | Wallet not found for this machine | Wallet may not be created yet |
| "HTTP 403" | OIDC token invalid or expired | Token will auto-refresh, retry |
Weekly Installs
3.5K
Repository
GitHub Stars
1
First Seen
13 days ago
Security Audits
Gen Agent Trust HubPassSocketPassSnykWarn
Installed on
openclaw3.5K
opencode32
github-copilot32
codex32
amp32
cline32
React 组合模式指南:Vercel 组件架构最佳实践,提升代码可维护性
102,200 周安装
max_priority_fee_per_gas: Max priority fee in wei (decimal string, for EIP-1559 transactions). Optional.nonce: Transaction nonce (decimal string). Optional — auto-determined if omitted.tx_type: Transaction type integer. 0=legacy, 1=EIP-2930, 2=EIP-1559, 4=EIP-7702. Optional.| Optimism | 10 | eip155:10 | eth |
| Arbitrum One | 42161 | eip155:42161 | eth |
| Polygon | 137 | eip155:137 | pol (NOT "matic") |
| Linea | 59144 | eip155:59144 | eth |