Skip to main content
parallax-wallet is the offline wallet management tool for the Parallax client suite. It consolidates the keystore-directory operations previously offered by parallaxd account … and the single-keyfile tool previously shipped as parallaxkey into a single binary, modeled after Bitcoin Core’s bitcoin-wallet. parallax-wallet never talks to a running node. Every command operates directly on files on disk, which makes it safe to run on air-gapped machines for cold-signing workflows. For commands that require a running daemon (newaccount, unlock, sign, sendtx against a live IPC socket), use parallax-cli instead.

Installation

parallax-wallet ships alongside parallaxd and parallax-cli in every release bundle. Building from source:
or, for the whole suite:

Subcommands

Keystore-directory operations

These commands operate on the keystore directory at <datadir>/keystore (override with --keystore).

Single-keyfile operations

These commands operate on a single keyfile path — useful when you want a portable, self-contained key outside the keystore.

Passwords

For every command that decrypts a keyfile, parallax-wallet either prompts interactively or reads the password from the file passed with --passwordfile (for keyfile commands) or --password (for keystore-directory commands). The first non-empty line of the file is used as the password.

JSON output

Where applicable, the --json flag switches output to structured JSON.

Examples

Create a new account

Cold-sign a transaction on an air-gapped machine

Given the account’s current nonce (looked up on a live node: parallax-cli nonce 0x…), the current gas price, and the target chain ID (2110 for mainnet):
Copy the resulting 0x… raw transaction to an internet-connected host and broadcast it with parallax-cli sendraw.

Sign a Parallax Desktop offline signing request

signrequest is the command-line counterpart of Parallax Desktop’s offline signer. The desktop app (on the online, watch-only machine) exports a signing request; signrequest validates and signs it on the air-gapped machine and writes a signed-transaction document for the desktop app to broadcast. A request looks like this (all integers are decimal strings; id is the EIP-155 signing hash of the unsigned transaction and binds every signed field; createdAt and memo are informational and not signed):
Before the key is used, the request must pass every check: plain LAX transfers only (no data), chain 2110 unless --chainid names another, 21000 ≤ gasLimit ≤ 30000000, a non-zero gas price, a maximum fee (gasLimit × gasPriceWei) no higher than --feecap, checksummed addresses, an id that matches the recomputed signing hash, and a from that matches the keyfile. A summary with a fingerprint (the first eight hex digits of id, e.g. 3FA2-91C0) is printed to stderr; compare it with the fingerprint shown in Parallax Desktop before answering the Sign this transaction? [y/N] prompt.
The output is the document Parallax Desktop imports:
raw is an ordinary signed transaction, so it can also be broadcast with parallax-cli sendraw.

Message requests

signrequest also signs a message request, as an EIP-191 personal message (the same hash signmessage signs). id is the message’s EIP-191 hash, 0x + keccak256("\x19Ethereum Signed Message:\n" + byte length + message); there is no chain ID, so --chainid and --feecap are ignored.
The message must be valid UTF-8, 1 to 1024 bytes, with no control characters other than line feed and tab (no \r, NUL or escape sequences), so what is shown is everything that is signed. from must be a checksummed, non-zero address matching the keyfile, and id must match the message. The whole message is printed to stderr, one line per message line, with tabs, backslashes and invisible characters escaped, followed by its byte length and fingerprint; confirm with Sign this message? [y/N] (or --yes). The output:
The signature can be checked anywhere with parallax-wallet verifymessage <address> <signature> <message>, which accepts it as is as well as the signmessage form (no 0x, v 0/1).

Back up and restore a keystore

The dump contains every keyfile in its encrypted JSON form — the dump itself is safe to move between machines so long as the account passwords are handled independently.
  • parallax-cli — talks to a running daemon over IPC (JSON-RPC). Hosts the live newaccount, unlock, sign and sendtx sugar commands, all of which require a node.
  • clef — long-running external signer daemon with a rule engine and interactive approval UI. Different problem domain from parallax-wallet: it’s a service called by other processes, not a one-shot CLI.