Install
openclaw skills install goodwallet-tradingBlockchain trading tools extending GoodWallet MPC agentic wallets. Adds ERC20 transfers, token approvals, DEX swaps (Uniswap V2), arbitrary contract calls, balance checking, and token info queries — all MPC-signed via Sodot threshold ECDSA. Trigger when the user mentions "trade", "swap tokens", "send ERC20", "approve tokens", "token balance", "contract call", "DEX", "Uniswap", or wants to interact with DeFi using their GoodWallet.
openclaw skills install goodwallet-tradingExtends the goodwallet skill with blockchain trading capabilities. All transactions are MPC-signed via the same Sodot threshold ECDSA signing service.
Prerequisite: The user must first authorize via the goodwallet skill (auth + pair). Credentials are shared via ~/.config/goodwallet/config.json.
All commands are run via npx goodwallet-trading@0.2.0.
Important: Do not share technical details (key types, signature formats, internal paths). Run commands and report outcomes in plain language.
If the user hasn't authorized yet, run the goodwallet auth flow first:
npx goodwallet@0.2.0 auth
# Show the URL to the user, then immediately:
npx goodwallet@0.2.0 pair
Once paired, all goodwallet-trading commands will work automatically.
npx goodwallet-trading@0.2.0 balance
npx goodwallet-trading@0.2.0 balance --token <erc20-address>
npx goodwallet-trading@0.2.0 erc20-send --to <address> --amount <amount> --token <erc20-address>
| Flag | Short | Required | Description |
|---|---|---|---|
--to <address> | -t | Yes | Recipient address |
--amount <amount> | -a | Yes | Amount (human-readable, e.g. 10.5) |
--token <address> | Yes | ERC20 token contract |
npx goodwallet-trading@0.2.0 approve --token <erc20-address> --spender <address>
npx goodwallet-trading@0.2.0 approve --token <erc20-address> --spender <address> --amount 100
Without --amount, approves unlimited spending.
The most powerful command — execute arbitrary contract calls with MPC signing.
npx goodwallet-trading@0.2.0 contract-call --to <contract> --data <calldata-hex>
npx goodwallet-trading@0.2.0 contract-call --to <contract> --data <calldata-hex> --value 0.1
| Flag | Required | Description |
|---|---|---|
--to <address> | Yes | Contract address |
--data <hex> | Yes | Calldata (hex with 0x prefix) |
--value <ether> | No | ETH to send with call (default: 0) |
npx goodwallet-trading@0.2.0 swap --router <router-address> --from-token ETH --to-token <token-address> --amount 0.1
npx goodwallet-trading@0.2.0 swap --router <router-address> --from-token <token-a> --to-token <token-b> --amount 100
| Flag | Required | Description |
|---|---|---|
--router <address> | Yes | Uniswap V2 router address |
--from-token <address|ETH> | Yes | Token to sell (or "ETH") |
--to-token <address|ETH> | Yes | Token to buy (or "ETH") |
--amount <amount> | Yes | Amount to swap |
--slippage <percent> | No | Slippage tolerance (default: 1%) |
npx goodwallet-trading@0.2.0 token-info --token <erc20-address>
Returns: name, symbol, decimals, total supply, your balance.
npx goodwallet-trading@0.2.0 allowance --token <erc20-address> --spender <address>
| Variable | Default | Description |
|---|---|---|
SIGN_URL | sign.goodwallet.dev | Signing service endpoint |
RPC_URL | Alchemy Hoodi endpoint | Override RPC URL |
Currently configured for Hoodi testnet (chain ID 560048). Explorer: https://hoodi.etherscan.io/
| File | Purpose |
|---|---|
~/.config/goodwallet/config.json | Shared credentials from goodwallet auth |
# 1. Auth (if not already done)
npx goodwallet@0.2.0 auth
npx goodwallet@0.2.0 pair
# 2. Check balance
npx goodwallet-trading@0.2.0 balance
# 3. Send ERC20 tokens
npx goodwallet-trading@0.2.0 erc20-send --to 0x... --amount 10 --token 0x...
# 4. Approve DEX router
npx goodwallet-trading@0.2.0 approve --token 0x... --spender 0x...
# 5. Swap on DEX
npx goodwallet-trading@0.2.0 swap --router 0x... --from-token ETH --to-token 0x... --amount 0.1
# 6. Arbitrary contract call
npx goodwallet-trading@0.2.0 contract-call --to 0x... --data 0xabcdef... --value 0.05