nillion
The nillion tool is a command line version of the Nillion Client that can be used to 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.
Usage: nillion [OPTIONS] -b <BOOTNODES> <COMMAND>
Commands:
store-secrets Store secrets in the network
retrieve-secret Retrieve a secret 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
preprocessing-pool-status Fetch the preprocessing pool status for a cluster
inspect-ids Display the node/user ids derived from the provided keys
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.
-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).
--payments-rpc-endpoint <RPC_ENDPOINT>
RPC endpoint URL
--payments-sc-address <PAYMENTS_SC_ADDRESS>
Payments smart contract address
--blinding-factors-manager-sc-address <BLINDING_FACTORS_MANAGER_SC_ADDRESS>
Blinding factors manager smart contract address
--payments-private-key <PRIVATE_KEY>
Wallet signer private key
--payments-chain-id <CHAIN_ID>
Wallet signer chain ID
--blockchain-config-path <BLOCKCHAIN_CONFIG_PATH>
Path to a configuration file containing the blockchain configurations
-h, --help
Print help (see a summary with '-h')
-V, --version
Print version
Store secrets with nillion
Store secrets from a secrets file or by passing them into the command directly.
store-secrets usage
nillion --user-key <YOUR_USER_KEY> \
--node-key <YOUR_NODE_KEY> \
-b <BOOTNODES> \
--payments-private-key <PRIVATE_KEY> \
--payments-chain-id <CHAIN_ID> \
--payments-rpc-endpoint <BLOCKCHAIN_RPC_ENDPOINT> \
--payments-sc-address <PAYMENTS_SC_ADDRESS> \
--blinding-factors-manager-sc-address <BLINDING_FACTORS_MANAGER_SC_ADDRESS> \
store-secrets \
[OPTIONS] \
--cluster-id <CLUSTER_ID> \
--dealer-name <DEALER_NAME> \
[PROGRAM_ID]
# Arguments:
[PROGRAM_ID]
The program id that the store is for, if any
Options:
--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
-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
--dealer-name <DEALER_NAME>
Dealer name is used by the program to identify the input owners
-h, --help
Print help (see a summary with '-h')
Example secrets file
# Secrets file with 2 secrets of type SecretInteger
integers:
my_secret1: 6
my_secret2: 4
Retrieve a secret with nillion
Retrieve a secret by store id and secret id
retrieve-secret usage
nillion --user-key <YOUR_USER_KEY> \
--node-key <YOUR_NODE_KEY> \
-b <BOOTNODES> \
--payments-private-key <PRIVATE_KEY> \
--payments-chain-id <CHAIN_ID> \
--payments-rpc-endpoint <BLOCKCHAIN_RPC_ENDPOINT> \
--payments-sc-address <PAYMENTS_SC_ADDRESS> \
--blinding-factors-manager-sc-address <BLINDING_FACTORS_MANAGER_SC_ADDRESS> \
retrieve-secret \
--cluster-id <CLUSTER_ID> \
--store-id <STORE_ID> \
--secret-id <SECRET_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 --user-key <YOUR_USER_KEY> \
--node-key <YOUR_NODE_KEY> \
-b <BOOTNODES> \
--payments-private-key <PRIVATE_KEY> \
--payments-chain-id <CHAIN_ID> \
--payments-rpc-endpoint <BLOCKCHAIN_RPC_ENDPOINT> \
--payments-sc-address <PAYMENTS_SC_ADDRESS> \
--blinding-factors-manager-sc-address <BLINDING_FACTORS_MANAGER_SC_ADDRESS> \
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 --user-key <YOUR_USER_KEY> \
--node-key <YOUR_NODE_KEY> \
-b <BOOTNODES> \
--payments-private-key <PRIVATE_KEY> \
--payments-chain-id <CHAIN_ID> \
--payments-rpc-endpoint <BLOCKCHAIN_RPC_ENDPOINT> \
--payments-sc-address <PAYMENTS_SC_ADDRESS> \
--blinding-factors-manager-sc-address <BLINDING_FACTORS_MANAGER_SC_ADDRESS> \
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')
Example public variables file
# Public variables file with 2 public variables of type PublicVariableInteger
integers:
my_public_variable1: 20
my_public_variable2: 12
Get cluster information with nillion
Get info about the cluster
cluster-information usage
nillion --user-key <YOUR_USER_KEY> \
--node-key <YOUR_NODE_KEY> \
-b <BOOTNODES> \
--payments-private-key <PRIVATE_KEY> \
--payments-chain-id <CHAIN_ID> \
--payments-rpc-endpoint <BLOCKCHAIN_RPC_ENDPOINT> \
--payments-sc-address <PAYMENTS_SC_ADDRESS> \
--blinding-factors-manager-sc-address <BLINDING_FACTORS_MANAGER_SC_ADDRESS> \
cluster-information \
<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 --user-key <YOUR_USER_KEY> \
--node-key <YOUR_NODE_KEY> \
-b <BOOTNODES> \
--payments-private-key <PRIVATE_KEY> \
--payments-chain-id <CHAIN_ID> \
--payments-rpc-endpoint <BLOCKCHAIN_RPC_ENDPOINT> \
--payments-sc-address <PAYMENTS_SC_ADDRESS> \
--blinding-factors-manager-sc-address <BLINDING_FACTORS_MANAGER_SC_ADDRESS> \
preprocessing-pool-status \
<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 --user-key <YOUR_USER_KEY> \
--node-key <YOUR_NODE_KEY> \
-b <BOOTNODES> \
--payments-private-key <PRIVATE_KEY> \
--payments-chain-id <CHAIN_ID> \
--payments-rpc-endpoint <BLOCKCHAIN_RPC_ENDPOINT> \
--payments-sc-address <PAYMENTS_SC_ADDRESS> \
--blinding-factors-manager-sc-address <BLINDING_FACTORS_MANAGER_SC_ADDRESS> \
inspect-ids
Options:
-h, --help Print help