Problem
obol stack up always auto-generates a fresh wallet via GenerateWallet(). There's no way to inject an existing private key into the remote-signer. Users who already have funded wallets must manually transfer funds to the auto-generated address every time.
This came up during dual-stack testing: Bob's derived wallet (funded on Base Sepolia) is different from the remote-signer's auto-generated wallet. Every test run requires a manual USDC transfer.
Proposal
# Import an existing key into the remote-signer
obol wallet import --private-key-file /path/to/key
# Or during openclaw setup
obol openclaw setup --wallet-key-file /path/to/key
This would:
- Convert the raw private key to a Web3 V3 keystore
- Store it in the remote-signer keystores directory
- Update
wallet.json with the imported address
- Restart the remote-signer to pick up the new key
Context
- Current:
GenerateWallet() in internal/openclaw/wallet.go
- Remote-signer reads keystores from PVC at startup
- The key format is Web3 V3 JSON keystore (encrypted with a random password stored in
values-remote-signer.yaml)
Problem
obol stack upalways auto-generates a fresh wallet viaGenerateWallet(). There's no way to inject an existing private key into the remote-signer. Users who already have funded wallets must manually transfer funds to the auto-generated address every time.This came up during dual-stack testing: Bob's derived wallet (funded on Base Sepolia) is different from the remote-signer's auto-generated wallet. Every test run requires a manual USDC transfer.
Proposal
This would:
wallet.jsonwith the imported addressContext
GenerateWallet()ininternal/openclaw/wallet.govalues-remote-signer.yaml)