Skip to content

feat: add OWS (Open Wallet Standard) as wallet signer#13937

Open
kevarifin14 wants to merge 1 commit intofoundry-rs:masterfrom
kevarifin14:feat/ows-signer
Open

feat: add OWS (Open Wallet Standard) as wallet signer#13937
kevarifin14 wants to merge 1 commit intofoundry-rs:masterfrom
kevarifin14:feat/ows-signer

Conversation

@kevarifin14
Copy link
Copy Markdown

Summary

Adds --ows <WALLET> flag for loading signers from an OWS encrypted vault, alongside the existing --ledger, --trezor, --aws, --gcp, and --turnkey options. Feature-gated behind ows.

Usage

# Before: Foundry-specific keystore or raw key
cast send <TO> --value 1ether --account my-wallet
cast send <TO> --value 1ether --private-key 0x...

# After: OWS encrypted vault (same vault as Solana CLI, Tempo, etc.)
cast send <TO> --value 1ether --ows my-wallet
forge script Deploy.s.sol --ows my-wallet

One wallet created with ows wallet create works in cast, forge, solana, tempo, polymarket — every tool.

Changes

File What
crates/wallets/src/opts.rs Added --ows flag, resolution in maybe_signer()
crates/wallets/src/signer.rs Added WalletSigner::from_ows()
crates/wallets/src/error.rs Added ows_unsupported() helper

Feature-gated: --features ows. Follows the same pattern as --aws, --gcp, --turnkey.

How it works

OWS decrypts the EVM signing key from the vault (AES-256-GCM, scrypt KDF) and wraps it as a PrivateKeySigner. The key is only in memory during signing, then wiped. No plaintext on disk.

Dependencies

Would require adding ows-lib and ows-core as optional dependencies to foundry-wallets.

Adds `--ows <WALLET>` flag for loading signers from an OWS encrypted
vault, alongside the existing --ledger, --trezor, --aws, --gcp, and
--turnkey options. Feature-gated behind `ows`.

Usage:
  cast send <TO> --value 1ether --ows my-wallet
  forge script Deploy.s.sol --ows my-wallet
  cast call <CONTRACT> "balanceOf(address)" --ows my-wallet

The key is decrypted from the OWS vault (AES-256-GCM, scrypt KDF)
only during signing, then wiped from memory.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

Status: No status

Development

Successfully merging this pull request may close these issues.

1 participant