Wallet setup
wasit wallet status [--role x402|mpp-charge] [--network <testnet>] [--json]
wasit wallet create --role x402|mpp-charge|mpp-channel [--network <testnet>] [--fund]
wasit wallet fund --role x402|mpp-charge [--network <testnet>] [--asset xlm|usdc] [--amount <n>]Testnet-only convenience commands for the payer keys the other subcommands
read from .env. --network takes testnets only, stellar:testnet (the
default), eip155:84532 (Base Sepolia), eip155:11155111 (Ethereum Sepolia) or
solana:EtWTRABZaYq6iMfeYKouRu166VU2xqa1 (Solana devnet), since Friendbot, the printed USDC issuer, and the whole idea
of a disposable generated key only make sense on testnet.
status shows each configured role's on-chain balances (or "not yet created"
for a key that has never been funded). create generates a new key and
prints the exact .env line(s) to paste — it never writes to .env itself,
so it can never overwrite something already there. mpp-channel generates a
commitment key (a raw hex ed25519 seed that signs off-chain, not a funded
account — see Configuration);
x402 and mpp-charge generate a funded-account keypair. status and
fund reject --role mpp-channel outright, since it has no account to
inspect or fund.
A key that is set but malformed — a truncated paste, a G... public key, or
a hex commitment seed in a Stellar-secret slot — is reported by name ("X is
not a valid Stellar secret key") and exits 2, rather than surfacing as an SDK
error. status with no --role reports it against that one role, still checks
the other, and exits 0: one unchecked role is a row in a table. status --role
answers one question, so it exits 2 whenever that role could not be checked —
key not set, unreadable, or its balance lookup failed — and
wasit wallet status --role x402 && … never goes ahead on an unchecked key. An
account that has never been funded is an answer, and exits 0.
fund --asset xlm calls Stellar's public Friendbot directly and is fully
automatic. fund --asset usdc creates a trustline to Circle's official
testnet USDC issuer automatically, but actually receiving a balance always
needs a human step: there is no scriptable, unauthenticated USDC faucet for
Stellar. Either visit https://faucet.circle.com once yourself (paste the
public key wasit wallet fund prints), or set
WASIT_USDC_DISTRIBUTOR_SECRET in .env to an account you already funded
that way — every run after that sends automatically from it.
On the other testnets only --role x402 applies: MPP runs on
Stellar. create --role x402 --network eip155:84532 prints an
EVM_PRIVATE_KEY=0x... line, and --network solana:EtWTRABZaYq6iMfeYKouRu166VU2xqa1
an SVM_PRIVATE_KEY=... line (base58 of the 64-byte keypair), each with the
address to paste into https://faucet.circle.com. That faucet is the only step:
the payer needs USDC and no ETH or SOL, since the facilitator pays the fee, so
--fund is Stellar only and fund prints the faucet step. status --network
shows the configured payer's USDC balance of the SDK's default asset, and exits
2 when it could not be read.