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
| Flag | Short | Description |
|---|
--destination | -d | Destination DAG address |
--amount | -a | Amount of DAG to send (in whole DAG units; multiplied by 1e8 unless --normalized) |
--fee | — | Transaction fee (default: 0) |
--normalized | -n | Flag: treat amount as already normalized (i.e., in datum units) |
--prevTxPath | -p | Path to the previously created transaction JSON file (omit for the first transaction) |
--nextTxPath | -f | Path 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
| Flag | Short | Description |
|---|
--amount | -a | Amount of DAG to lock |
--fee | — | Token lock fee (default: 0) |
--parent | -p | Parent lock reference file (formatted as API response) |
--currencyId | -c | Metagraph currency address (default: DAG) |
--unlockEpoch | -u | Epoch at which tokens unlock (default: infinite) |
--replace | -r | Hash 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
| Flag | Short | Description |
|---|
--amount | -a | Amount of DAG to stake (must match the token lock amount) |
--token-lock | — | Hash reference to an active token lock |
--nodeId | — | ID of the node to delegate to (defaults to self) |
--fee | — | Delegated stake fee (default: 0) |
--parent | -p | Parent 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>
| Flag | Description |
|---|
--stake-ref | Hash 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
| Flag | Default | Description |
|---|
--reward-fraction | 0.05 | Fraction of delegated stake rewards going to the node operator (e.g., 0.05 = 5%) |
--name | node_name | Human-readable node name |
--description | node_description | Node description |
--parent | -p | Parent reference file |
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
| Flag | Short | Description |
|---|
--address | -a | DAG address of the owner |
--metagraphId | -m | Metagraph identifier address |
--parentOrdinal | -o | Ordinal of the parent message |
--output | -f | Output 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
| Flag | Short | Description |
|---|
--address | -a | DAG address for staking |
--metagraphId | -m | Metagraph identifier address |
--parentOrdinal | -o | Ordinal of the parent message |
--output | -f | Output 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
| Flag | Short | Description |
|---|
| (positional args) | — | One or more message files to merge |
--output | -f | Output 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:
- For the first transaction from an address, omit
--prevTxPath.
- For all subsequent transactions, pass the output file of the previous transaction as
--prevTxPath.
- 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.