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/newTOML 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_PASSPHRASEStage an intent
Write to the wallet outbox:
echo 'send 0.01 eth to 0x70997970C51812dc3A010C7d01b50e0d17dc79C8 on anvil' \
> /bloom/wallets/alice/chains/anvil/outbox/new.txBloom 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.jsonWhen 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 yAfter broadcast, entries move to outbox/sent/<id>/ with the transaction hash.