Skip to main content
The wallet module is a command-line interface for interacting with the Constellation Network DAG layer. It reads a PKCS12 keystore to derive your node/wallet identity and can sign transactions, query addresses, and manage staking operations without running a full node.

Running the wallet CLI

All wallet commands share a set of common environment flags:
java -jar wallet.jar \
  --keystore ./key.p12 \
  --alias alias \
  --password yourpassword \
  <command> [command-flags]
If your keystore uses separate store and key passwords:
java -jar wallet.jar \
  --keystore ./key.p12 \
  --alias alias \
  --storepass storePwd \
  --keypass keyPwd \
  <command> [command-flags]
The wallet JAR is available inside Docker containers at /tessellation/jars/wallet.jar. It is used internally by the entrypoint script to derive node IDs: java -jar /tessellation/jars/wallet.jar show-id.

Identity commands

show-address

Derive and print the DAG address for the key in the keystore.
java -jar wallet.jar --keystore ./key.p12 --alias alias --password pw \
  show-address
Outputs a DAG address (e.g., DAG4abc...).

show-id

Derive and print the node ID (uncompressed public key as hex). This is the identifier used when joining a cluster.
java -jar wallet.jar --keystore ./key.p12 --alias alias --password pw \
  show-id

show-public-key

Print the raw public key bytes in hex format.
java -jar wallet.jar --keystore ./key.p12 --alias alias --password pw \
  show-public-key

Transaction commands

create-transaction

Sign and serialize a DAG transaction to a file. Transactions form an ordinal chain — each transaction references the previous one via --prevTxPath.
java -jar wallet.jar --keystore ./key.p12 --alias alias --password pw \
  create-transaction \
  --destination DAG4destinationAddress \
  --amount 10 \
  --fee 0 \
  --prevTxPath ./prev-tx.json \
  --nextTxPath ./next-tx.json
FlagShortDescription
--destination-dDestination DAG address
--amount-aAmount of DAG to send (in whole DAG units; multiplied by 1e8 unless --normalized)
--feeTransaction fee (default: 0)
--normalized-nFlag: treat amount as already normalized (i.e., in datum units)
--prevTxPath-pPath to the previously created transaction JSON file (omit for the first transaction)
--nextTxPath-fPath where the new signed transaction JSON is written
Tessellation transactions form an ordinal chain. Each transaction must reference the previous one (by hash and ordinal). Always pass the output of the previous create-transaction call as --prevTxPath for subsequent transactions.

Staking commands

create-token-lock

Lock DAG tokens as a prerequisite to delegated staking.
java -jar wallet.jar --keystore ./key.p12 --alias alias --password pw \
  create-token-lock \
  --amount 500 \
  --fee 0 \
  --parent ./prev-lock.json \
  --unlockEpoch 1000000
FlagShortDescription
--amount-aAmount of DAG to lock
--feeToken lock fee (default: 0)
--parent-pParent lock reference file (formatted as API response)
--currencyId-cMetagraph currency address (default: DAG)
--unlockEpoch-uEpoch at which tokens unlock (default: infinite)
--replace-rHash of an existing token lock to replace

create-delegated-stake

Create a delegated stake referencing an active token lock.
java -jar wallet.jar --keystore ./key.p12 --alias alias --password pw \
  create-delegated-stake \
  --amount 500 \
  --token-lock <token-lock-hash> \
  --nodeId <node-id> \
  --parent ./prev-stake.json
FlagShortDescription
--amount-aAmount of DAG to stake (must match the token lock amount)
--token-lockHash reference to an active token lock
--nodeIdID of the node to delegate to (defaults to self)
--feeDelegated stake fee (default: 0)
--parent-pParent reference file

withdraw-delegated-stake

Withdraw an existing delegated stake.
java -jar wallet.jar --keystore ./key.p12 --alias alias --password pw \
  withdraw-delegated-stake \
  --stake-ref <stake-hash>
FlagDescription
--stake-refHash reference to the active delegated stake to withdraw

Node parameter commands

create-node-params

Set node parameters such as the reward fraction and display name. These are submitted on-chain and affect delegated staking reward distribution.
java -jar wallet.jar --keystore ./key.p12 --alias alias --password pw \
  create-node-params \
  --reward-fraction 0.05 \
  --name "My Node" \
  --description "Main validator node" \
  --parent ./prev-params.json
FlagDefaultDescription
--reward-fraction0.05Fraction of delegated stake rewards going to the node operator (e.g., 0.05 = 5%)
--namenode_nameHuman-readable node name
--descriptionnode_descriptionNode description
--parent-pParent reference file

Metagraph ownership commands

These commands are used during metagraph genesis to establish ownership and staking authorization.

create-owner-signing-message

Creates a signed ownership message that authorizes a DAG address as the owner of a metagraph. Used during genesis to set the metagraph owner.
java -jar wallet.jar --keystore ./key.p12 --alias alias --password pw \
  create-owner-signing-message \
  --address DAG4yourAddress \
  --metagraphId DAG4metagraphAddress \
  --parentOrdinal 0 \
  --output ./owner-message.json
FlagShortDescription
--address-aDAG address of the owner
--metagraphId-mMetagraph identifier address
--parentOrdinal-oOrdinal of the parent message
--output-fOutput file path for the signed message

create-staking-signing-message

Creates a signed staking message that authorizes a DAG address to participate in metagraph staking. Used during genesis to configure the staking address.
java -jar wallet.jar --keystore ./key.p12 --alias alias --password pw \
  create-staking-signing-message \
  --address DAG4yourAddress \
  --metagraphId DAG4metagraphAddress \
  --parentOrdinal 0 \
  --output ./staking-message.json
FlagShortDescription
--address-aDAG address for staking
--metagraphId-mMetagraph identifier address
--parentOrdinal-oOrdinal of the parent message
--output-fOutput file path for the signed message

merge-messages

Merges multiple signing message files into a single output file. Useful when combining owner and staking messages for metagraph genesis.
java -jar wallet.jar --keystore ./key.p12 --alias alias --password pw \
  merge-messages \
  ./owner-message.json ./staking-message.json \
  --output ./merged-messages.json
FlagShortDescription
(positional args)One or more message files to merge
--output-fOutput file path (existing file is overwritten)

Transaction chain model

Tessellation transactions use an ordinal chain model. Each transaction references the previous one, forming an append-only chain per sender address:
[Genesis tx] → [tx ordinal=1] → [tx ordinal=2] → ...
When creating transactions with the wallet CLI:
  1. For the first transaction from an address, omit --prevTxPath.
  2. For all subsequent transactions, pass the output file of the previous transaction as --prevTxPath.
  3. The signed output file (written to --nextTxPath) becomes the input for the next transaction.
This chain must be maintained to prevent double-spend and replay attacks.

Build docs developers (and LLMs) love