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:
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):
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):
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.
\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:
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
Related tools
parallax-cli— talks to a running daemon over IPC (JSON-RPC). Hosts the livenewaccount,unlock,signandsendtxsugar commands, all of which require a node.clef— long-running external signer daemon with a rule engine and interactive approval UI. Different problem domain fromparallax-wallet: it’s a service called by other processes, not a one-shot CLI.

