Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 4 additions & 3 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ Local, policy-gated signing and wallet management for every chain.
## Why OWS

- **Local key custody.** Private keys stay encrypted at rest and are decrypted only inside the OWS signing path after the relevant checks pass. Current implementations harden in-process memory handling and wipe key material after use.
- **Every chain, one interface.** EVM, Solana, XRPL, Sui, Bitcoin, Cosmos, Tron, TON, Spark, Filecoin — all first-class. CAIP-2/CAIP-10 addressing abstracts away chain-specific details.
- **Every chain, one interface.** EVM, Solana, XRPL, Sui, Bitcoin, Cosmos, Tron, TON, Spark, Filecoin, Nano — all first-class. CAIP-2/CAIP-10 addressing abstracts away chain-specific details.
- **Policy before signing.** A pre-signing policy engine gates agent (API key) operations before decryption — chain allowlists, expiry, and optional custom executables.
- **Built for agents.** Native SDK and CLI today. A wallet created by one tool works in every other.

Expand Down Expand Up @@ -56,7 +56,7 @@ ows sign tx --wallet agent-treasury --chain 8453 --tx "02f8..."
import { createWallet, signMessage } from "@open-wallet-standard/core";

const wallet = createWallet("agent-treasury");
// => accounts for EVM, Solana, Bitcoin, Cosmos, Tron, TON, Filecoin, Sui, and XRPL
// => accounts for EVM, Solana, Bitcoin, Cosmos, Tron, TON, Filecoin, Sui, XRPL, and Nano

const sig = signMessage("agent-treasury", "evm", "hello");
console.log(sig.signature);
Expand All @@ -66,7 +66,7 @@ console.log(sig.signature);
from ows import create_wallet, sign_message

wallet = create_wallet("agent-treasury")
# => accounts for EVM, Solana, Bitcoin, Cosmos, Tron, TON, Filecoin, Sui, and XRPL
# => accounts for EVM, Solana, Bitcoin, Cosmos, Tron, TON, Filecoin, Sui, XRPL, and Nano

sig = sign_message("agent-treasury", "evm", "hello")
print(sig["signature"])
Expand Down Expand Up @@ -110,6 +110,7 @@ Agent / CLI / App
| Spark (Bitcoin L2) | secp256k1 | spark: prefixed | `m/84'/0'/0'/0/0` |
| Filecoin | secp256k1 | f1 base32 | `m/44'/461'/0'/0/0` |
| XRPL | secp256k1 | base58check | `m/44'/144'/0'/0/0`|
| Nano (XNO) | Ed25519 | nano_ prefixed | `m/44'/165'/0'` |

## CLI Reference

Expand Down
5 changes: 3 additions & 2 deletions bindings/node/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ Local, policy-gated signing and wallet management for every chain.
## Why OWS

- **Local key custody.** Private keys stay encrypted at rest and are decrypted only inside the OWS signing path after the relevant checks pass. Current implementations harden in-process memory handling and wipe key material after use.
- **Every chain, one interface.** EVM, Solana, XRPL, Sui, Bitcoin, Cosmos, Tron, TON, Spark, Filecoin — all first-class. CAIP-2/CAIP-10 addressing abstracts away chain-specific details.
- **Every chain, one interface.** EVM, Solana, XRPL, Sui, Bitcoin, Cosmos, Tron, TON, Spark, Filecoin, Nano — all first-class. CAIP-2/CAIP-10 addressing abstracts away chain-specific details.
- **Policy before signing.** A pre-signing policy engine gates agent (API key) operations before decryption — chain allowlists, expiry, and optional custom executables.
- **Built for agents.** Native SDK and CLI today. A wallet created by one tool works in every other.

Expand All @@ -31,7 +31,7 @@ Using viem, `@solana/web3.js`, or the Tether WDK? Install [`@open-wallet-standar
import { createWallet, signMessage } from "@open-wallet-standard/core";

const wallet = createWallet("agent-treasury");
// => accounts for EVM, Solana, Bitcoin, Cosmos, Tron, TON, Filecoin, Sui, and XRPL
// => accounts for EVM, Solana, Bitcoin, Cosmos, Tron, TON, Filecoin, Sui, XRPL, and Nano

const sig = signMessage("agent-treasury", "evm", "hello");
console.log(sig.signature);
Expand Down Expand Up @@ -64,6 +64,7 @@ ows sign tx --wallet agent-treasury --chain evm --tx "deadbeef..."
| XRPL | secp256k1 | Base58Check (`r...`) | `m/44'/144'/0'/0/0` |
| Spark (Bitcoin L2) | secp256k1 | spark: prefixed | `m/84'/0'/0'/0/0` |
| Filecoin | secp256k1 | f1 base32 | `m/44'/461'/0'/0/0` |
| Nano (XNO) | Ed25519 | nano_ prefixed | `m/44'/165'/0'` |

## CLI Reference

Expand Down
5 changes: 3 additions & 2 deletions bindings/python/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ Local, policy-gated signing and wallet management for every chain.
## Why OWS

- **Local key custody.** Private keys stay encrypted at rest and are decrypted only inside the OWS signing path after the relevant checks pass. Current implementations harden in-process memory handling and wipe key material after use.
- **Every chain, one interface.** EVM, Solana, XRPL, Sui, Bitcoin, Cosmos, Tron, TON, Spark, Filecoin — all first-class. CAIP-2/CAIP-10 addressing abstracts away chain-specific details.
- **Every chain, one interface.** EVM, Solana, XRPL, Sui, Bitcoin, Cosmos, Tron, TON, Spark, Filecoin, Nano — all first-class. CAIP-2/CAIP-10 addressing abstracts away chain-specific details.
- **Policy before signing.** A pre-signing policy engine gates agent (API key) operations before decryption — chain allowlists, expiry, and optional custom executables.
- **Built for agents.** Native SDK and CLI today. A wallet created by one tool works in every other.

Expand All @@ -28,7 +28,7 @@ The package is **fully self-contained** — it embeds the Rust core via native F
from ows import create_wallet, sign_message

wallet = create_wallet("agent-treasury")
# => accounts for EVM, Solana, Bitcoin, Cosmos, Tron, TON, Filecoin, Sui, and XRPL
# => accounts for EVM, Solana, Bitcoin, Cosmos, Tron, TON, Filecoin, Sui, XRPL, and Nano

sig = sign_message("agent-treasury", "evm", "hello")
print(sig["signature"])
Expand Down Expand Up @@ -76,6 +76,7 @@ print(sig["signature"])
| XRPL | secp256k1 | Base58Check (`r...`) | `m/44'/144'/0'/0/0` |
| Spark (Bitcoin L2) | secp256k1 | spark: prefixed | `m/84'/0'/0'/0/0` |
| Filecoin | secp256k1 | f1 base32 | `m/44'/461'/0'/0/0` |
| Nano (XNO) | Ed25519 | nano_ prefixed | `m/44'/165'/0'` |

## Architecture

Expand Down
6 changes: 5 additions & 1 deletion docs/07-supported-chains.md
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,7 @@ OWS groups chains into families that share a cryptographic curve and address der
| XRPL | secp256k1 | 144 | `m/44'/144'/0'/0/{index}` | Base58Check (`r...`) | `xrpl` |
| Spark | secp256k1 | 8797555 | `m/84'/0'/0'/0/{index}` | `spark:` + compressed pubkey hex | `spark` |
| Filecoin | secp256k1 | 461 | `m/44'/461'/0'/0/{index}` | `f1` + base32(blake2b-160) | `fil` |
| Nano | ed25519 | 165 | `m/44'/165'/{index}'` | `nano_` prefixed | `nano` |

## Known Networks

Expand Down Expand Up @@ -73,6 +74,7 @@ Each network has a canonical chain identifier. Endpoint discovery and transport
| XRPL | `xrpl:mainnet` |
| Spark | `spark:mainnet` |
| Filecoin | `fil:mainnet` |
| Nano | `nano:mainnet` |

Implementations MAY ship convenience endpoint defaults, but those defaults are deployment choices rather than OWS interoperability requirements.

Expand Down Expand Up @@ -104,6 +106,7 @@ xrpl-testnet → xrpl:testnet
xrpl-devnet → xrpl:devnet
spark → spark:mainnet
filecoin → fil:mainnet
nano → nano:mainnet
```

Aliases MUST be resolved to full CAIP-2 identifiers before any processing. They MUST NOT appear in wallet files, policy files, or audit logs.
Expand All @@ -127,7 +130,8 @@ Master Seed (512 bits via PBKDF2)
├── m/44'/784'/0'/0'/0' → Sui Account 0
├── m/44'/144'/0'/0/0 → XRPL Account 0
├── m/84'/0'/0'/0/0 → Spark Account 0
└── m/44'/461'/0'/0/0 → Filecoin Account 0
├── m/44'/461'/0'/0/0 → Filecoin Account 0
└── m/44'/165'/0' → Nano Account 0
```

For mnemonic-based wallets, a single mnemonic derives accounts across all supported chains. Those wallet files store the encrypted mnemonic, and the signer derives the appropriate private key using each chain's coin type and derivation path. Wallets imported from raw private keys instead store encrypted curve-key material directly.
Expand Down
2 changes: 1 addition & 1 deletion docs/quickstart.md
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ pip install open-wallet-standard # Python

## Create a wallet

A single command derives addresses for every supported chain — EVM, Solana, Sui, Bitcoin, Cosmos, Tron, and TON.
A single command derives addresses for every supported chain — EVM, Solana, Sui, Bitcoin, Cosmos, Tron, TON, and Nano.

```bash
ows wallet create --name "agent-treasury"
Expand Down
5 changes: 3 additions & 2 deletions ows/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -57,7 +57,7 @@ The bindings are **standalone** — they embed the Rust core via native FFI. No
import { createWallet, signMessage } from "@open-wallet-standard/core";

const wallet = createWallet("my-wallet");
console.log(wallet.accounts); // addresses for EVM, Solana, Bitcoin, Cosmos, Tron, TON, Filecoin, Sui, and XRPL
console.log(wallet.accounts); // addresses for EVM, Solana, Bitcoin, Cosmos, Tron, TON, Filecoin, Sui, XRPL, and Nano

const sig = signMessage("my-wallet", "evm", "hello");
console.log(sig.signature);
Expand All @@ -68,7 +68,7 @@ console.log(sig.signature);
| Crate | Description |
|-------|-------------|
| `ows-core` | Types, CAIP-2/10 parsing, errors, config. Zero crypto dependencies. |
| `ows-signer` | ChainSigner trait, HD derivation, address derivation for EVM, Solana, XRPL, Sui, Bitcoin, Cosmos, Tron, TON, Spark, and Filecoin. |
| `ows-signer` | ChainSigner trait, HD derivation, address derivation for EVM, Solana, XRPL, Sui, Bitcoin, Cosmos, Tron, TON, Spark, Filecoin, and Nano. |
| `ows-lib` | Library interface used by language bindings and the CLI. |
| `ows-pay` | x402 payment flows, service discovery, and funding helpers. |
| `ows-cli` | The `ows` command-line tool. |
Expand All @@ -85,6 +85,7 @@ console.log(sig.signature);
- **Spark** (Bitcoin L2) — secp256k1, spark: prefixed addresses
- **XRPL** — secp256k1, Base58Check r-addresses
- **Filecoin** — secp256k1, f1 base32 addresses
- **Nano** (XNO) — Ed25519, nano_ prefixed addresses

## License

Expand Down
5 changes: 3 additions & 2 deletions ows/crates/ows-cli/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -57,7 +57,7 @@ The bindings are **standalone** — they embed the Rust core via native FFI. No
import { createWallet, signMessage } from "@open-wallet-standard/core";

const wallet = createWallet("my-wallet");
console.log(wallet.accounts); // addresses for EVM, Solana, Bitcoin, Cosmos, Tron, TON, Filecoin, Sui, and XRPL
console.log(wallet.accounts); // addresses for EVM, Solana, Bitcoin, Cosmos, Tron, TON, Filecoin, Sui, XRPL, and Nano

const sig = signMessage("my-wallet", "evm", "hello");
console.log(sig.signature);
Expand All @@ -68,7 +68,7 @@ console.log(sig.signature);
| Crate | Description |
|-------|-------------|
| `ows-core` | Types, CAIP-2/10 parsing, errors, config. Zero crypto dependencies. |
| `ows-signer` | ChainSigner trait, HD derivation, address derivation for EVM, Solana, XRPL, Sui, Bitcoin, Cosmos, Tron, TON, Spark, and Filecoin. |
| `ows-signer` | ChainSigner trait, HD derivation, address derivation for EVM, Solana, XRPL, Sui, Bitcoin, Cosmos, Tron, TON, Spark, Filecoin, and Nano. |
| `ows-lib` | Library interface used by language bindings and the CLI. |
| `ows-pay` | x402 payment flows, service discovery, and funding helpers. |
| `ows-cli` | The `ows` command-line tool. |
Expand All @@ -85,6 +85,7 @@ console.log(sig.signature);
- **Spark** (Bitcoin L2) — secp256k1, spark: prefixed addresses
- **XRPL** — secp256k1, Base58Check r-addresses
- **Filecoin** — secp256k1, f1 base32 addresses
- **Nano** (XNO) — Ed25519, nano_ prefixed addresses

## License

Expand Down
5 changes: 3 additions & 2 deletions ows/crates/ows-core/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -57,7 +57,7 @@ The bindings are **standalone** — they embed the Rust core via native FFI. No
import { createWallet, signMessage } from "@open-wallet-standard/core";

const wallet = createWallet("my-wallet");
console.log(wallet.accounts); // addresses for EVM, Solana, Bitcoin, Cosmos, Tron, TON, Filecoin, Sui, and XRPL
console.log(wallet.accounts); // addresses for EVM, Solana, Bitcoin, Cosmos, Tron, TON, Filecoin, Sui, XRPL, and Nano

const sig = signMessage("my-wallet", "evm", "hello");
console.log(sig.signature);
Expand All @@ -68,7 +68,7 @@ console.log(sig.signature);
| Crate | Description |
|-------|-------------|
| `ows-core` | Types, CAIP-2/10 parsing, errors, config. Zero crypto dependencies. |
| `ows-signer` | ChainSigner trait, HD derivation, address derivation for EVM, Solana, XRPL, Sui, Bitcoin, Cosmos, Tron, TON, Spark, and Filecoin. |
| `ows-signer` | ChainSigner trait, HD derivation, address derivation for EVM, Solana, XRPL, Sui, Bitcoin, Cosmos, Tron, TON, Spark, Filecoin, and Nano. |
| `ows-lib` | Library interface used by language bindings and the CLI. |
| `ows-pay` | x402 payment flows, service discovery, and funding helpers. |
| `ows-cli` | The `ows` command-line tool. |
Expand All @@ -85,6 +85,7 @@ console.log(sig.signature);
- **Spark** (Bitcoin L2) — secp256k1, spark: prefixed addresses
- **XRPL** — secp256k1, Base58Check r-addresses
- **Filecoin** — secp256k1, f1 base32 addresses
- **Nano** (XNO) — Ed25519, nano_ prefixed addresses

## License

Expand Down
5 changes: 3 additions & 2 deletions ows/crates/ows-lib/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -57,7 +57,7 @@ The bindings are **standalone** — they embed the Rust core via native FFI. No
import { createWallet, signMessage } from "@open-wallet-standard/core";

const wallet = createWallet("my-wallet");
console.log(wallet.accounts); // addresses for EVM, Solana, Bitcoin, Cosmos, Tron, TON, Filecoin, Sui, and XRPL
console.log(wallet.accounts); // addresses for EVM, Solana, Bitcoin, Cosmos, Tron, TON, Filecoin, Sui, XRPL, and Nano

const sig = signMessage("my-wallet", "evm", "hello");
console.log(sig.signature);
Expand All @@ -68,7 +68,7 @@ console.log(sig.signature);
| Crate | Description |
|-------|-------------|
| `ows-core` | Types, CAIP-2/10 parsing, errors, config. Zero crypto dependencies. |
| `ows-signer` | ChainSigner trait, HD derivation, address derivation for EVM, Solana, XRPL, Sui, Bitcoin, Cosmos, Tron, TON, Spark, and Filecoin. |
| `ows-signer` | ChainSigner trait, HD derivation, address derivation for EVM, Solana, XRPL, Sui, Bitcoin, Cosmos, Tron, TON, Spark, Filecoin, and Nano. |
| `ows-lib` | Library interface used by language bindings and the CLI. |
| `ows-pay` | x402 payment flows, service discovery, and funding helpers. |
| `ows-cli` | The `ows` command-line tool. |
Expand All @@ -85,6 +85,7 @@ console.log(sig.signature);
- **Spark** (Bitcoin L2) — secp256k1, spark: prefixed addresses
- **XRPL** — secp256k1, Base58Check r-addresses
- **Filecoin** — secp256k1, f1 base32 addresses
- **Nano** (XNO) — Ed25519, nano_ prefixed addresses

## License

Expand Down
5 changes: 3 additions & 2 deletions ows/crates/ows-signer/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -57,7 +57,7 @@ The bindings are **standalone** — they embed the Rust core via native FFI. No
import { createWallet, signMessage } from "@open-wallet-standard/core";

const wallet = createWallet("my-wallet");
console.log(wallet.accounts); // addresses for EVM, Solana, Bitcoin, Cosmos, Tron, TON, Filecoin, Sui, and XRPL
console.log(wallet.accounts); // addresses for EVM, Solana, Bitcoin, Cosmos, Tron, TON, Filecoin, Sui, XRPL, and Nano

const sig = signMessage("my-wallet", "evm", "hello");
console.log(sig.signature);
Expand All @@ -68,7 +68,7 @@ console.log(sig.signature);
| Crate | Description |
|-------|-------------|
| `ows-core` | Types, CAIP-2/10 parsing, errors, config. Zero crypto dependencies. |
| `ows-signer` | ChainSigner trait, HD derivation, address derivation for EVM, Solana, XRPL, Sui, Bitcoin, Cosmos, Tron, TON, Spark, and Filecoin. |
| `ows-signer` | ChainSigner trait, HD derivation, address derivation for EVM, Solana, XRPL, Sui, Bitcoin, Cosmos, Tron, TON, Spark, Filecoin, and Nano. |
| `ows-lib` | Library interface used by language bindings and the CLI. |
| `ows-pay` | x402 payment flows, service discovery, and funding helpers. |
| `ows-cli` | The `ows` command-line tool. |
Expand All @@ -85,6 +85,7 @@ console.log(sig.signature);
- **Spark** (Bitcoin L2) — secp256k1, spark: prefixed addresses
- **XRPL** — secp256k1, Base58Check r-addresses
- **Filecoin** — secp256k1, f1 base32 addresses
- **Nano** (XNO) — Ed25519, nano_ prefixed addresses

## License

Expand Down
3 changes: 2 additions & 1 deletion readme/partials/supported-chains.md
Original file line number Diff line number Diff line change
Expand Up @@ -11,4 +11,5 @@
| Sui | Ed25519 | 0x + BLAKE2b-256 hex | `m/44'/784'/0'/0'/0'` |
| XRPL | secp256k1 | Base58Check (`r...`) | `m/44'/144'/0'/0/0` |
| Spark (Bitcoin L2) | secp256k1 | spark: prefixed | `m/84'/0'/0'/0/0` |
| Filecoin | secp256k1 | f1 base32 | `m/44'/461'/0'/0/0` |
| Filecoin | secp256k1 | f1 base32 | `m/44'/461'/0'/0/0` |
| Nano (XNO) | Ed25519 | nano_ prefixed | `m/44'/165'/0'` |
2 changes: 1 addition & 1 deletion readme/partials/why-ows.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
## Why OWS

- **Local key custody.** Private keys stay encrypted at rest and are decrypted only inside the OWS signing path after the relevant checks pass. Current implementations harden in-process memory handling and wipe key material after use.
- **Every chain, one interface.** EVM, Solana, XRPL, Sui, Bitcoin, Cosmos, Tron, TON, Spark, Filecoin — all first-class. CAIP-2/CAIP-10 addressing abstracts away chain-specific details.
- **Every chain, one interface.** EVM, Solana, XRPL, Sui, Bitcoin, Cosmos, Tron, TON, Spark, Filecoin, Nano — all first-class. CAIP-2/CAIP-10 addressing abstracts away chain-specific details.
- **Policy before signing.** A pre-signing policy engine gates agent (API key) operations before decryption — chain allowlists, expiry, and optional custom executables.
- **Built for agents.** Native SDK and CLI today. A wallet created by one tool works in every other.
2 changes: 1 addition & 1 deletion readme/templates/node.md
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@ Using viem, `@solana/web3.js`, or the Tether WDK? Install [`@open-wallet-standar
import { createWallet, signMessage } from "@open-wallet-standard/core";

const wallet = createWallet("agent-treasury");
// => accounts for EVM, Solana, Bitcoin, Cosmos, Tron, TON, Filecoin, Sui, and XRPL
// => accounts for EVM, Solana, Bitcoin, Cosmos, Tron, TON, Filecoin, Sui, XRPL, and Nano

const sig = signMessage("agent-treasury", "evm", "hello");
console.log(sig.signature);
Expand Down
5 changes: 3 additions & 2 deletions readme/templates/ows.md
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,7 @@ The bindings are **standalone** — they embed the Rust core via native FFI. No
import { createWallet, signMessage } from "@open-wallet-standard/core";

const wallet = createWallet("my-wallet");
console.log(wallet.accounts); // addresses for EVM, Solana, Bitcoin, Cosmos, Tron, TON, Filecoin, Sui, and XRPL
console.log(wallet.accounts); // addresses for EVM, Solana, Bitcoin, Cosmos, Tron, TON, Filecoin, Sui, XRPL, and Nano

const sig = signMessage("my-wallet", "evm", "hello");
console.log(sig.signature);
Expand All @@ -47,7 +47,7 @@ console.log(sig.signature);
| Crate | Description |
|-------|-------------|
| `ows-core` | Types, CAIP-2/10 parsing, errors, config. Zero crypto dependencies. |
| `ows-signer` | ChainSigner trait, HD derivation, address derivation for EVM, Solana, XRPL, Sui, Bitcoin, Cosmos, Tron, TON, Spark, and Filecoin. |
| `ows-signer` | ChainSigner trait, HD derivation, address derivation for EVM, Solana, XRPL, Sui, Bitcoin, Cosmos, Tron, TON, Spark, Filecoin, and Nano. |
| `ows-lib` | Library interface used by language bindings and the CLI. |
| `ows-pay` | x402 payment flows, service discovery, and funding helpers. |
| `ows-cli` | The `ows` command-line tool. |
Expand All @@ -64,6 +64,7 @@ console.log(sig.signature);
- **Spark** (Bitcoin L2) — secp256k1, spark: prefixed addresses
- **XRPL** — secp256k1, Base58Check r-addresses
- **Filecoin** — secp256k1, f1 base32 addresses
- **Nano** (XNO) — Ed25519, nano_ prefixed addresses

## License

Expand Down
2 changes: 1 addition & 1 deletion readme/templates/python.md
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@ The package is **fully self-contained** — it embeds the Rust core via native F
from ows import create_wallet, sign_message

wallet = create_wallet("agent-treasury")
# => accounts for EVM, Solana, Bitcoin, Cosmos, Tron, TON, Filecoin, Sui, and XRPL
# => accounts for EVM, Solana, Bitcoin, Cosmos, Tron, TON, Filecoin, Sui, XRPL, and Nano

sig = sign_message("agent-treasury", "evm", "hello")
print(sig["signature"])
Expand Down
Loading