Skip to content
Logo

Wallets and transactions

Bloom wallets are local encrypted keys or watch-only addresses exposed through the filesystem.

Create or import

Plain text creates a local wallet:

echo alice > /bloom/wallets/new

TOML supports explicit forms:

name = "alice"
kind = "import"        # local | import | watch
private_key = "0x..."  # required for import
address = "0x..."      # required for watch
passphrase = "..."     # optional; falls back to BLOOM_PASSPHRASE

Stage an intent

Write to the wallet outbox:

echo 'send 0.01 eth to 0x70997970C51812dc3A010C7d01b50e0d17dc79C8 on anvil' \
> /bloom/wallets/alice/chains/anvil/outbox/new.tx

Bloom parses the intent, fills defaults, simulates where possible, runs policy checks, and creates a pending directory.

Review and confirm

ls /bloom/wallets/alice/chains/anvil/outbox/pending
cat /bloom/wallets/alice/chains/anvil/outbox/pending/<id>/plan.md
cat /bloom/wallets/alice/chains/anvil/outbox/pending/<id>/policy_check.json

When running the long-lived daemon, confirm by writing non-empty content to confirm. For one-shot CLI flows, bloom wallet confirm unlocks and broadcasts in one command.

bloom wallet confirm alice anvil <id> --passphrase devonly --text y

After broadcast, entries move to outbox/sent/<id>/ with the transaction hash.