nillion
The nillion
tool is a command line version of the Nillion Client. We refer to the tool as the CLI Client.
The nillion tool can be used to generate user keys, generate node keys, store secrets, retrieve a secret, store a program, compute on a program, get cluster information, check the preprocessing pool status, and display node and user ids from keys.
nillion can be run against the Nillion Network or against a local cluster spun up with nillion-devnet. If nillion is running against your local cluster, use the cluster id, bootnodes, smart contract addresses, chain id, rpc url endpoint values that are local cluster outputs as nillion options.
Installation
Follow instructions to install the Nillion SDK and Tools, which include nillion
tool installation
Usage
Usage: nillion [OPTIONS] -b <BOOTNODES> <COMMAND>
Commands:
store-values Store values in the network
retrieve-value Retrieve a value from the network
store-program Store a program in the network
compute Perform a computation in the network
cluster-information Fetch the cluster's information
delete-values Delete values from the network
preprocessing-pool-status Fetch the preprocessing pool status for a cluster
inspect-ids Display the node/user ids derived from the provided keys
shell-completions Generate shell completions
node-key-gen Generate Node keys
user-key-gen Generate User keys
retrieve-permissions Retrieve permissions for stored secrets
set-permissions Set permissions on a stored secrets
help Print this message or the help of the given subcommand(s)
Options:
--user-key <USER_KEY>
The user key in base58
--user-key-seed <USER_KEY_SEED>
The seed to be used to derive user key
-u, --user-key-path <USER_KEY_PATH>
The path to the file that contains the user key in base58
--node-key <NODE_KEY>
The node key in base58
--node-key-seed <NODE_KEY_SEED>
The seed to be used to derive node key
-n, --node-key-path <NODE_KEY_PATH>
The path to the file that contains the node key in base58
-b <BOOTNODES>
A list of bootnodes to connect to.
This needs to use libp2p multiaddress format.
-w <WEBSOCKET_BOOTNODES>
A list of websocket bootnode addresses to connect to.
This needs to use libp2p multiaddress format.
-l, --listen-address <LISTEN_ADDRESS>
The address to listen on.
If none is provided, the client will be expected to dial all of its peers (not receive incoming connections).
--nilchain-rpc-endpoint <NILCHAIN_RPC_ENDPOINT>
The nilchain RPC endpoint
--nilchain-private-key <NILCHAIN_PRIVATE_KEY>
The nilchain payments private key
--gas-price <GAS_PRICE>
The gas price to use, in unil units
-h, --help
Print help (see a summary with '-h')
-V, --version
Print version
Generate user key with nillion
Generate a Nillion user key and store it in a file
user-key-gen usage
nillion user-key-gen <FILENAME>
Arguments:
<FILENAME> key filename
Options:
-s, --seed <SEED> seed to generate the key
-h, --help Print help
Generate node key with nillion
Generate a Nillion node key and store it in a file
node-key-gen usage
nillion node-key-gen <FILENAME>
Arguments:
<FILENAME> key filename
Options:
-s, --seed <SEED> seed to generate the key
-h, --help Print help
Store values with nillion
Store values in the network
store-values usage
nillion \
-b <YOUR_BOOTNODE> \
--nilchain-private-key <YOUR_PRIVATE_KEY> \
--nilchain-rpc-endpoint <YOUR_RPC_ENDPOINT> \
--node-key-seed <YOUR_NODE_KEY_SEED> \
--user-key-seed <YOUR_USER_KEY_SEED> \
store-values \
--secret-integer <name>=<value> \
--cluster-id <YOUR_CLUSTER_ID> \
--ttl-days <NUM_DAYS>
Arguments:
[PROGRAM_ID]
The program id that the store is for, if any
Options:
-i, --public-integer <INTEGERS>
An integer public variable.
These must follow the pattern `<name>=<value>`.
--public-unsigned-integer <UNSIGNED_INTEGERS>
An unsigned integer public variable.
These must follow the pattern `<name>=<value>`.
[aliases: ui]
--secret-integer <SECRET_INTEGERS>
An integer secret.
These must follow the pattern `<name>=<value>`.
[aliases: si]
--secret-unsigned-integer <SECRET_UNSIGNED_INTEGERS>
An unsigned integer secret.
These must follow the pattern `<name>=<value>`.
[aliases: sui]
--array-public-integer <ARRAY_INTEGERS>
An array of integer public variables
The expected pattern is `<name>=<comma-separated-value>`.
Example: array1=1,2,3
[aliases: ai]
--array-public-unsigned-integer <ARRAY_UNSIGNED_INTEGERS>
An array of unsigned integer public variables
The expected pattern is `<name>=<comma-separated-value>`.
Example: array1=1,2,3
[aliases: aui]
--array-secret-integer <ARRAY_SECRET_INTEGERS>
An array of integer secrets
The expected pattern is `<name>=<comma-separated-value>`.
Example: array1=1,2,3
[aliases: asi]
--array-secret-unsigned-integer <ARRAY_SECRET_UNSIGNED_INTEGERS>
An array of unsigned integer secrets
The expected pattern is `<name>=<comma-separated-value>`.
Example: array1=1,2,3
[aliases: asui]
--secret-blob <SECRET_BLOBS>
A blob secret.
These must follow the pattern `<name>=<value>` and the value must be encoded in base64.
[aliases: sb]
--nada-values-path <NADA_VALUES_PATH>
A path to load secrets from
-t, --ttl-days <TTL_DAYS>
The time to live for the values in days
-c, --cluster-id <CLUSTER_ID>
The cluster id to perform the operation on
--authorize-user-execution <AUTHORIZE_USER_EXECUTION>
Give execution access to this user on the secret we're uploading
-h, --help
Print help (see a summary with '-h')
Retrieve a value with nillion
Retrieve a value from the network
retrieve-secret usage
nillion \
-b <YOUR_BOOTNODE> \
--nilchain-private-key <YOUR_PRIVATE_KEY> \
--nilchain-rpc-endpoint <YOUR_RPC_ENDPOINT> \
--node-key-seed <YOUR_NODE_KEY_SEED> \
--user-key-seed <YOUR_USER_KEY_SEED> \
retrieve-value \
--cluster-id <YOUR_CLUSTER_ID> \
--secret-id <YOUR_SECRET_NAME> \
--store-id <YOUR_STORE_ID>
Options:
-c, --cluster-id <CLUSTER_ID> The cluster id to perform the operation on
--store-id <STORE_ID> The store id to retrieve
--secret-id <SECRET_ID> The specific secret id to be retrieved
-h, --help Print help
Store a program with nillion
Name and store a compiled Nada program on the network.
store-program usage
nillion \
-b <YOUR_BOOTNODE> \
--nilchain-private-key <YOUR_PRIVATE_KEY> \
--nilchain-rpc-endpoint <YOUR_RPC_ENDPOINT> \
--node-key-seed <YOUR_NODE_KEY_SEED> \
--user-key-seed <YOUR_USER_KEY_SEED> \
store-program \
--cluster-id <CLUSTER_ID> \
<PROGRAM_PATH> <PROGRAM_NAME>
Arguments:
<PROGRAM_PATH>
<PROGRAM_NAME> The name of the program
Compute on a program with nillion
Compute on a stored program by program id with stored secrets, secrets and public variables from files, or secrets and public variables input directly in the command
compute usage
nillion \
-b <YOUR_BOOTNODE> \
--nilchain-private-key <YOUR_PRIVATE_KEY> \
--nilchain-rpc-endpoint <YOUR_RPC_ENDPOINT> \
--node-key-seed <YOUR_NODE_KEY_SEED> \
--user-key-seed <YOUR_USER_KEY_SEED> \
compute \
[OPTIONS] \
--cluster-id <CLUSTER_ID> \
<PROGRAM_ID>
Arguments:
<PROGRAM_ID>
The id of the program to be run
Options:
-c, --cluster-id <CLUSTER_ID>
The cluster id to perform the operation on
--store-id <STORE_IDS>
A store secret id to be used..
--result-node <RESULT_NODES>
A result node's party id.
Not providing any result nodes means the dealer node will be the defaulted as the result node.
--result-node-name <RESULT_NODE_NAMES>
A result node's name
--bind-dealer <BIND_DEALER>
--int-secret <INTEGER_SECRETS>
An integer secret.
These must follow the pattern `<name>=<value>`.
[aliases: i]
--uint-secret <UNSIGNED_INTEGER_SECRETS>
An unsigned integer secret.
These must follow the pattern `<name>=<value>`.
[aliases: ui]
--secrets-path <SECRETS_PATH>
A path to load secrets from
--int-public-variable <INTEGER_PUBLIC_VARIABLES>
An integer public variable.
These must follow the pattern `<name>=<value>`.
[aliases: ip]
--uint-public-variable <UNSIGNED_INTEGER_PUBLIC_VARIABLES>
An unsigned integer public variable.
These must follow the pattern `<name>=<value>`.
[aliases: uip]
--public-variables-path <PUBLIC_VARIABLES_PATH>
A path to load secrets from
-h, --help
Print help (see a summary with '-h')
Get cluster information with nillion
Get info about the cluster
cluster-information usage
nillion \
-b <YOUR_BOOTNODE> \
--nilchain-private-key <YOUR_PRIVATE_KEY> \
--nilchain-rpc-endpoint <YOUR_RPC_ENDPOINT> \
--node-key-seed <YOUR_NODE_KEY_SEED> \
--user-key-seed <YOUR_USER_KEY_SEED> \
cluster-information \
--cluster-id <CLUSTER_ID> \
Arguments:
<CLUSTER_ID> The cluster id to query for
Options:
-h, --help Print help
Check the preprocessing pool status with nillion
Fetch the preprocessing pool status for a cluster
preprocessing-pool-status usage
nillion \
-b <YOUR_BOOTNODE> \
--nilchain-private-key <YOUR_PRIVATE_KEY> \
--nilchain-rpc-endpoint <YOUR_RPC_ENDPOINT> \
--node-key-seed <YOUR_NODE_KEY_SEED> \
--user-key-seed <YOUR_USER_KEY_SEED> \
preprocessing-pool-status \
--cluster-id <CLUSTER_ID> \
Arguments:
<CLUSTER_ID> The cluster id to query for
Options:
-h, --help Print help
Display node and user ids with nillion
Check the peer id of the node and the user id of the user.
inspect-ids usage
nillion \
-b <YOUR_BOOTNODE> \
--nilchain-private-key <YOUR_PRIVATE_KEY> \
--nilchain-rpc-endpoint <YOUR_RPC_ENDPOINT> \
--node-key-seed <YOUR_NODE_KEY_SEED> \
--user-key-seed <YOUR_USER_KEY_SEED> \
inspect-ids
--cluster-id <CLUSTER_ID> \
Options:
-h, --help Print help