wallet

wallet

多鏈錢包:EVM 與 Solana 餘額查詢、轉帳、簽章及政策管理。 當需要檢查餘額、發送代幣、簽署型別資料或提議錢包政策時使用(例如:在 Base 上發送 10 USDC、簽署 EIP-712、查詢 Solana 餘額)。

18星標
9分支
更新於 2026/7/14
SKILL.md
readonlyread-only
name
wallet
description

多鏈錢包:EVM 與 Solana 餘額查詢、轉帳、簽章及政策管理。 當需要檢查餘額、發送代幣、簽署型別資料或提議錢包政策時使用(例如:在 Base 上發送 10 USDC、簽署 EIP-712、查詢 Solana 餘額)。

version
3.6.1

💰 錢包技能

支援 EVM(DeBank 支援的所有鏈)與 Solana 的多鏈錢包。提供餘額查詢、轉帳、簽章及政策管理功能。腳本技能 — 透過 bash 呼叫以下函式;不會註冊任何錢包工具。

如何呼叫

所有讀取/轉帳/簽章操作皆為 core.skill_tools.wallet 中的 Python 函式。從 bash 執行並讀取 JSON 結果:

python3 -c "from core.skill_tools import wallet; import json; print(json.dumps(wallet.wallet_balance(chain='base')))"

唯一不是腳本函式的操作是提議錢包政策 — 它需要在 UI 中顯示確認卡片,因此透過原生的 frontend_action 工具執行(請參閱下方政策管理)。

函式(from core.skill_tools import wallet

函式 說明
wallet_info() 取得所有錢包地址
wallet_balance(chain, address="", asset="") 查詢 EVM 鏈上餘額(DeBank)。需指定 chain
wallet_sol_balance(address="", asset="") 查詢 Solana 餘額(Birdeye)
wallet_get_all_balances(evm_address="", sol_address="") 一次查詢所有鏈
wallet_transfer(to, amount, chain_id=1, data="", **kw) 廣播 EVM 交易(預設贊助 gas)
wallet_sign_transaction(to, amount, chain_id=1, data="", **kw) 簽署 EVM 交易(不廣播)
wallet_sign(message) EIP-191 訊息簽署
wallet_sign_typed_data(domain, types, primaryType, message) EIP-712 型別資料簽署
wallet_transactions(chain="ethereum", asset="", limit=20) EVM 交易歷史
wallet_sol_transfer(transaction, caip2=...) 廣播 Solana 交易(base64)
wallet_sol_sign_transaction(transaction) 簽署 Solana 交易(不廣播)
wallet_sol_sign(message) Solana 訊息簽署
wallet_sol_transactions(chain="solana", asset="sol", limit=20) Solana 交易歷史
wallet_get_policy(chain_type="ethereum") 檢查政策狀態
validate_and_clean_rules(rules, chain_type) 在提議前預先驗證政策規則

重點須知

  • EVM 金額單位為 weiwallet_transfer / wallet_sign_transaction)。0.01 ETH = 10000000000000000。對於 ERC-20 代幣發送,amount 設為 0(原生幣),轉帳資訊編碼在 data 參數中。
  • EVM 鏈預設贊助 gas — 使用者無需持有原生代幣支付 gas。若無法贊助則改由使用者支付。傳入 sponsor=False 可從錢包餘額支付 gas。
  • 政策預設:關閉(允許全部)。僅在啟用政策時,交易才需要 UI 確認。
  • 支援的 EVM 鏈:所有 DeBank 支援的鏈。常見鏈名稱會自動對應(例如 avalancheavaxbscbsczksyncera)。16 條常見鏈(ethereum, base, arbitrum, optimism, polygon, linea, bsc, avalanche, fantom, gnosis, zksync, scroll, blast, mantle, celo, aurora)內建備援對應。
  • 餘額來源:DeBank(EVM)、Birdeye(Solana)、wallet-service(備援)。DeBank/Birdeye 金鑰由 sc-proxy 自動注入。

工作流程

檢查餘額

python3 -c "from core.skill_tools import wallet; import json; print(json.dumps(wallet.wallet_balance(chain='base')))"
python3 -c "from core.skill_tools import wallet; import json; print(json.dumps(wallet.wallet_get_all_balances()))"

發送交易(EVM)

務必先檢查餘額,並在交易後驗證結果/歷史。

# 1. 檢查
python3 -c "from core.skill_tools import wallet; import json; print(json.dumps(wallet.wallet_balance(chain='base')))"
# 2. 轉帳(金額單位為 wei)
python3 -c "from core.skill_tools import wallet; import json; print(json.dumps(wallet.wallet_transfer(to='0x...', amount='10000000000000000', chain_id=8453)))"
# 3. 驗證
python3 -c "from core.skill_tools import wallet; import json; print(json.dumps(wallet.wallet_transactions(chain='base')))"

簽署 EIP-712 型別資料

python3 -c "from core.skill_tools import wallet; import json; print(json.dumps(wallet.wallet_sign_typed_data(domain={...}, types={...}, primaryType='Permit', message={...})))"

政策管理

檢查政策是腳本函式;提議政策則使用原生的 frontend_action 工具(它會在 UI 中顯示簽署卡片 — 腳本無法做到)。

  1. 檢查目前政策:
    python3 -c "from core.skill_tools import wallet; import json; print(json.dumps(wallet.wallet_get_policy(chain_type='ethereum')))"
    
  2. (可選)預先驗證規則:
    python3 -c "from core.skill_tools import wallet; import json; print(json.dumps(wallet.validate_and_clean_rules([...], 'ethereum')))"
    
  3. 提議 — 呼叫 frontend_action 工具(非腳本):
    frontend_action(action_type="update_wallet_policy", chain_type="ethereum", rules=[...])
    
    使用者在 UI 中確認並簽署。每條鏈呼叫一次(EVM + Solana 共兩次)。

標準萬用政策(需要時)

rules = [
  {"name": "禁止匯出金鑰", "method": "exportPrivateKey", "conditions": [], "action": "DENY"},
  {"name": "允許全部", "method": "*", "conditions": [], "action": "ALLOW"},
]

政策模式 — 關鍵決策表

⚠️ 在 Privy 中,DENY 優先於 ALLOW。 DENY * 會覆蓋所有 ALLOW 規則。切勿混用。

模式 規則 效果
允許全部(預設) DENY exportPrivateKey + ALLOW * 除匯出金鑰外全部允許
拒絕全部(鎖定) DENY exportPrivateKey + DENY * 全部無法運作。不可有 ALLOW 規則!
白名單(選擇性) DENY exportPrivateKey + 僅特定 ALLOW 規則 僅白名單操作可執行,其餘隱含拒絕

模式 1:允許全部(標準萬用)

rules = [
  {"name": "禁止匯出金鑰", "method": "exportPrivateKey", "conditions": [], "action": "DENY"},
  {"name": "允許全部", "method": "*", "conditions": [], "action": "ALLOW"},
]

模式 2:拒絕全部(鎖定)

rules = [
  {"name": "禁止匯出金鑰", "method": "exportPrivateKey", "conditions": [], "action": "DENY"},
  {"name": "拒絕所有操作", "method": "*", "conditions": [], "action": "DENY"},
]
# ⚠️ 此處不可有 ALLOW 規則 — DENY * 會覆蓋它們!

模式 3:白名單(選擇性允許)

rules = [
  {"name": "禁止匯出金鑰", "method": "exportPrivateKey", "conditions": [], "action": "DENY"},
  {"name": "允許轉帳至 Uniswap", "method": "eth_sendTransaction", "conditions": [
    {"field_source": "ethereum_transaction", "field": "to", "operator": "eq", "value": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913"}
  ], "action": "ALLOW"},
]
# ⚠️ 此處不可有 "DENY *"!enabled=true 已拒絕所有未 ALLOW 的操作。
# 加上 DENY * 會覆蓋上述 ALLOW 規則(DENY 優先於 ALLOW)。

Privy 政策規則 — 關鍵限制

規則 詳細說明
預設行為 enabled=true → 拒絕全部,除非明確 ALLOW
DENY 優先於 ALLOW 兩者同時符合時,DENY 永遠優先
空條件 exportPrivateKey*(萬用)允許 conditions: []
交易方法需要條件 eth_sendTransactioneth_signTransactioneth_signTypedData_v4eth_signUserOperationsignAndSendTransaction 等均需至少一個條件
有效的 field_source EVM:ethereum_transaction(to/value/chain_id)、ethereum_calldata(function_name)、ethereum_typed_data_domain(chainId/verifyingContract)、ethereum_typed_data_messagesystem
有效的運算子 eqgtgteltltein(陣列,最多 100 個值)
雙鏈 需為 EVM + Solana 分別呼叫 frontend_action(action_type="update_wallet_policy", ...) 兩次

注意事項

  • 政策提議需透過 frontend_action 工具 — 需要活躍的 SSE 連線(無法在背景任務中執行)。
  • wallet_balance 需要 chain 參數 — 探索時請使用 wallet_get_all_balances
  • 若需同時設定 EVM 與 Solana 政策,請呼叫 frontend_action 兩次(每種 chain_type 一次)。