Other Tools¶
Smaller binaries, scripts and components that ship with the repository. Each one is small enough not to need a page of its own, but none of them are documented anywhere else.
wallet-upgrader¶
Converts an old wallet container file to the current format. Only needed when wrkz-wallet refuses a file with 6 UNSUPPORTED_WALLET_FILE_FORMAT_VERSION.
| Option | Meaning |
|---|---|
-w, --wallet-file <file> | Container to upgrade |
-p, --password <pass> | Its password |
-h, --help, -v, --version | Print and exit |
Run with neither flag it prompts for the filename interactively, and offers to add the .wallet extension when the file lacks it. Give both flags for a non-interactive upgrade — the extension prompt is skipped in that case, so the file is upgraded under whatever name you passed.
Back the file up first. The upgrade rewrites the container in place, and a wallet written in the newer format cannot be opened by an older binary.
cryptotest¶
Hash-function and crypto self-test. See The Miner App.
Block explorer¶
extras/explorer is a static block explorer UI — HTML, CSS and JavaScript, no build step and no server-side component. It is served by an ordinary web server while the daemon runs separately.
The daemon must run in explorer mode, which is what registers the f_* JSON-RPC methods and /queryblocksdetailed:
By default the page expects the daemon RPC at /api, so the usual production layout is nginx serving the static files and reverse-proxying /api to the daemon — which also avoids CORS entirely, making --enable-cors unnecessary. For local work, any static file server will do:
| File | What it is |
|---|---|
index.html, app.js, style.css | The page |
vendor/wrkz-crypto.js | Self-contained address and key primitives used by the wallet tools |
vendor/TurtleCoinUtils.js | Vendored client-side crypto helper used by Check Transaction |
test/ | Node test suites for the crypto module and the page wiring |
Explorer mode is not for a plain public node
Explorer routes walk database indexes and are not something a node should answer for anyone who asks. Put a token or a proxy in front of it, and note that explorer mode cannot be combined with lite mode.
Checkpoints¶
Checkpoints let a syncing node skip proof-of-work and ring-signature verification below the last one, which is most of what makes a first sync take hours rather than days. The daemon ships with compiled-in checkpoints and also accepts a CSV file:
The format is one height,hash line per checkpoint:
0,877e55b4e902b9bf4c9e0a7c16440f449339d56679c49d62261ae5c92596a6ce
1,93bb1fd850d9e904ca810cdb57935b6df45cd75fc3a86358a421e126c1ae7b51
Published checkpoints are at checkpoints.wrkz.work (direct CSV).
Generating your own¶
scripts/checkpoints/gen_checkpoints.sh walks a synced daemon over RPC and writes the file:
| Option | Default | Meaning |
|---|---|---|
-H, --host | 127.0.0.1 | Daemon RPC host |
-p, --port | 17856 | Daemon RPC port |
--token | X-API-Key value, if the daemon runs with an access token | |
-s, --start | 0, or the resume point | First checkpoint height |
-e, --end | top height minus confirmations | Last checkpoint height |
--step | 1 for csv, 1000 otherwise | Interval between checkpoints |
--confirmations | 180 | Stay this many blocks behind the tip. 0 goes to the top |
-c, --checkpoint-file | Existing file to resume from | |
-o, --output | checkpoints.csv | Output file, or - for stdout |
-m, --mode | csv | csv, append (C++ entries to paste into CHECKPOINTS), full (a complete CryptoNoteCheckpoints.h), or raw |
The --confirmations default exists so a checkpoint is never written for a block that could still be reorganised away.
wallet_capi — the embedder C API¶
The desktop, mobile and web wallets do not talk to wrkz-wallet-api over HTTP; they link wallet_capi, the wallet backend built as a shared library, and call it through FFI (or WebAssembly). It exposes around 70 wallet_* functions covering the whole wallet lifecycle, and returns the same error codes as every other surface, with wallet_error_code_to_string to render them.
Two entry points worth knowing:
wallet_set_tx_pow_server(host, port, ssl)— point the backend at a transaction PoW server. An empty host turns it off. The WASM bridge exposes the same call assetTxPowServer.wallet_capi_api_version/wallet_capi_version_string— check what a loaded library actually is before calling into it.
There is no generated reference for this API yet; src/walletcapi/wallet_capi.cpp is the source of truth, and Building the Wallet Apps covers producing the library.
ZMQ subscriber test script¶
scripts/zmq_sub_test.py is a working subscriber for the daemon's ZMQ publisher — the quickest way to confirm a build has ZeroMQ compiled in and that events are actually flowing.
Build and packaging scripts¶
| Path | What it does |
|---|---|
scripts/docker/ | One-command release packaging for Linux, Windows, Android and the wallet apps |
scripts/cross-platform/ | Linux-hosted cross-build flows for aarch64, Windows, Android and macOS |
scripts/build-linux-wallet-lib.sh | Static Linux wallet_capi |
scripts/cross-build-windows-wallet-lib.sh | Windows wallet_capi.dll from Linux |
scripts/cross-build-android-wallet.sh, scripts/build-libucontext-android.sh | Android wallet_capi and its dependency |
scripts/package-macos.sh, scripts/package-windows-x86_64.sh | Packaging steps for those targets |
scripts/scan-payment-id-tags.py | Audits extra sub-tag usage on chain — see Encrypted Payment IDs |
See Building from Source for how these fit together.