Get started

Build waved with the wallet API

WalletService and WalletInspectionService are compiled into waved only when the daemon is built with both the wavewalletrpc and swapruntime build tags. With wavewalletrpc but not swapruntime, the build still succeeds but a stub takes over and the wallet API is silently omitted, producing the same Unimplemented symptom as a default build. A default make build includes neither tag, so the wallet API is off unless you opt in.

Build both waved and wavecli with the tag using the provided make target:

Terminal
make build-wavewalletrpc

This produces bin/waved and bin/wavecli with the wallet RPC surface registered. make install-wavewalletrpc does the same via go install, landing the binaries in $GOPATH/bin.

Endpoints

waved starts two listeners by default:

Protocol Default address Notes
gRPC localhost:10029 The daemon’s own RPC server.
REST localhost:10031 An HTTP/JSON gateway in front of the same RPCs, enabled by default.

Every WalletService and WalletInspectionService method is reachable on both listeners with the same request and response shape, modulo JSON encoding. See REST conventions for the route and body shape used by the gateway.

A deployment that terminates TLS and enforces authentication at an external proxy can set allow-insecure-mainnet to override that refusal, accepting that the daemon’s own listener then runs without transport security.

The default macaroon is written to admin.macaroon under the daemon’s network directory. The REST gateway (localhost:10031) is a local plaintext HTTP proxy that forwards the macaroon HTTP header to the enforcing gRPC backend, so a call needs that header whenever macaroons are enabled.

Your first call

With waved running a wavewalletrpc build, call Status to confirm the daemon and wallet API are up. StatusRequest is empty, so an empty JSON object is a complete request body.

Over REST (a local daemon started with --rpc.no-macaroons; otherwise add a -H "macaroon: <hex>" header):

Terminal
curl -X POST http://localhost:10031/v1/wallet/status -d '{}'

Over the CLI, the equivalent is:

Terminal
wavecli getinfo --no-tls --no-macaroons

getinfo talks to the daemon’s own DaemonService rather than WalletService.Status directly, but it is the fastest way to confirm wavecli can reach waved at all before you start scripting WalletService calls. --no-tls --no-macaroons matches a daemon run with authentication disabled; it is the right pairing for local and regtest use.

Where to go next

  • Walk the method reference starting with Create and Unlock to bring up a wallet, then PrepareSend and Send to move funds.
  • Read REST conventions for the full request, error, and streaming shape shared by every route.
  • Explore the same surface from a terminal in the CLI slice: wavecli wraps every WalletService method as a subcommand.