Use the iExec decentralized marketplace for off-chain computing from your terminal.
All three major OS are supported (linux, OSX, windows).
npm -g install iexec # install the cli
iexec --version
iexec --help
Requirements: Docker.
# For Linux users
echo 'alias iexec='"'"'docker run -e DEBUG=$DEBUG --interactive --tty --rm -v /tmp:/tmp -v $(pwd):/iexec-project -v /home/$(whoami)/.ethereum/keystore:/home/node/.ethereum/keystore -w /iexec-project iexechub/iexec-sdk:latest'"'"'' >> ~/.bash_aliases && source ~/.bashrc
# For Mac OSX users
echo 'alias iexec='"'"'docker run -e DEBUG=$DEBUG --interactive --tty --rm -v /tmp:/tmp -v $(pwd):/iexec-project -v /Users/$(whoami)/Library/Ethereum/keystore:/home/node/.ethereum/keystore -w /iexec-project iexechub/iexec-sdk:latest'"'"'' >> ~/.bash_profile && source ~/.bash_profile
Now run iexec --version
to check all is working.
- Nodejs: run
npm -g install iexec
- Docker: run
docker pull iexechub/iexec-sdk
- Init project
- SDK CLI for Dapp developers
- SDK CLI for Dataset providers
- SDK CLI for Workerpools
- SDK CLI for Requesters
- SDK CLI for workers
required steps before following any other workflow.
iexec init # create all required files
iexec wallet show # show your wallet
iexec storage init # initialize your remote storage
NB: iExec SDK CLI access the public blockchain (mainnet) through ethers to connect different backends (Alchemy, Etherscan, INFURA).
Default API keys for backend services are provided for convenience. As these keys are shared across all users and are subject to rate limits, you must use your own API keys or better your own node.
Get API keys for backend services:
Once you created your access, you can add your API keys in the
chains.json
configuration file:{ "default": ..., "chains": { ... }, "providers": { "infura": { "projectId": "INFURA_PROJECT_ID", "projectSecret": "INFURA_PROJECT_SECRET" }, "etherscan": "ETHERSCAN_API_KEY", "alchemy": "ALCHEMY_API_KEY" } }If you run your own node, you can add an
host
key in thechains.json
configuration file to target your node:{ "default": ..., "chains": { ... "mainnet": { "id": "1", "host": "http://localhost:8545" } } }Check your current host:
iexec info
First go through Init project
iexec app count # check if you have already deployed apps
iexec app init # reset app fields in iexec.json
iexec app deploy # deploy app on Ethereum and get an address
iexec app show # show details of deployed app
iexec app run [address] # run an application on iExec at market price
iexec orderbook app <address> # check if you have valid sell orders for your app on the Marketplace
iexec app publish [address] # publish an apporder on the Marketplace and get an orderHash
iexec order show --app [orderHash] # show your order on the Marketplace
iexec order cancel --app <orderHash> # cancel your order
First go through Init project
cp 'myAwesomeDataset.file' ./datasets/original # copy your dataset file or folder into the dataset/original/ folder
iexec dataset encrypt # generate a secret key for each file or folder in dataset/original/ and encrypt it, also output the encrypted file checksum to use for deployment.
cat ./.secrets/dataset/myAwesomeDataset.file.secret # this is the secret key for decrypting the dataset
cat ./datasets/encrypted/myAwesomeDataset.file.enc # this is the encrypted dataset, you must share this file at a public url
iexec dataset count # check if you have already deployed datasets
iexec dataset init # reset dataset fields in iexec.json
iexec dataset deploy # deploy dataset on Ethereum
iexec dataset show # show details of deployed dataset
Disclaimer: The secrets pushed in the Secret Management Service will be shared with the worker to process the dataset in the therms your specify in the dataset order. Make sure to always double check your selling policy in the dataset order before signing it.
iexec dataset push-secret # Push the secret in the Secret Management Service (sms)
iexec orderbook dataset <address> # check if you have valid sell orders for your dataset on the Marketplace
iexec dataset publish [address] --tag tee --app-restrict <address> # publish a datasetorder (restricted to specific app running in Trusted Execution Environment) on the Marketplace and get an orderHash
iexec order show --dataset [orderHash] # show your order on the Marketplace
iexec order cancel --dataset <orderHash> # cancel your order
First go through Init project
iexec workerpool count # check if you have already deployed workerpools
iexec workerpool init # reset workerpool fields in iexec.json
iexec workerpool deploy # deploy workerpool on Ethereum
iexec workerpool show # show details of deployed workerpool
iexec orderbook workerpool [address] --category <id> # check if you have valid sell orders for your workerpool on the Marketplace
iexec workerpool publish # publish a workerpoolorder on the Marketplace and get an orderHash
iexec order cancel --workerpool <orderHash> # cancel your order
iexec orderbook requester --category <id> # find a requestorder ask you want to fill in your category
iexec orderbook app <address> # find a compatible apporder
iexec orderbook dataset <address> # find a compatible datasetorder
iexec order init --workerpool # reset workerpoolorder fields in iexec.json
iexec order sign --workerpool # sign your workerpoolorder
iexec order fill --request <orderHash> --app <orderHash> --dataset <orderHash> # send the orders and get a dealid
iexec deal show <dealid> # show the detail of the deal you concludes
First go through Init project
iexec account show # show your iExec account
iexec account deposit 200 # deposit RLC from your wallet to your account
iexec account show # make sure you have enough staked RCL to buy computation
iexec app run [address] [--dataset [address] --args <args> --category <id> --input-files <fileURLs> --secret <secretMapping...>] # run an iExec application at market price
iexec app request-execution [address] [--dataset [address] --args <args> --category <id> --input-files <fileURLs> --secret <secretMapping...>] # publish a requestorder on the Marketplace and get an orderHash
iexec order show --request <orderHash> --deals # show your order on the Marketplace and check the deals
iexec deal show <dealid> # show your deal details, get the taskids
iexec task show <taskid> # show the status of your task
iexec task show <taskid> --watch # wait until the task is COMPLETED or FAILED
iexec task show <taskid> --download [fileName] # download the result of your COMPLETED task
iexec result generate-encryption-keypair # generate private/public RSA key pair for result encryption
iexec result push-encryption-key # share the public RSA key with the secret management service, all your results will be encrypted with this key
# Go through the normal buy process and download the result of the computation #
iexec result decrypt [encryptedResultsFilePath] # decrypt the result with the private RSA key
First go through Init project
iexec account deposit 200 # deposit RLC from your wallet to your account
iexec account show # make sure you have enough stake to join a workerpool
iexec account show # view your available stake
iexec account withdraw 1000 # withdraw RLC from your account to your wallet
iExec SDK
Usage:
iexec [command] [options]
Options:
option | description |
---|---|
-V, --version | output the version number |
Commands:
- init
- iexec wallet
- iexec account
- iexec voucher
- iexec app
- iexec dataset
- iexec workerpool
- iexec requester
- iexec order
- iexec orderbook
- iexec deal
- iexec task
- iexec storage
- iexec result
- iexec ens
- iexec category
- info
init a new project
Usage:
iexec init [options]
Options:
option | description |
---|---|
--raw | use raw output |
--quiet | stop prompting updates |
--password <password> | password used to encrypt the wallet (unsafe) |
--unencrypted | generate unsafe unencrypted wallet in working directory (--keystoredir option is ignored) |
--keystoredir <path> | specify the wallet directory <"global"|"local"|custom> |
--force | force perform action without prompting user |
--skip-wallet | skip creating a new wallet |
manage local ethereum wallet
Usage:
iexec wallet <command> [options]
Commands:
create a new wallet
Usage:
iexec wallet create [options]
Options:
option | description |
---|---|
--raw | use raw output |
--quiet | stop prompting updates |
--password <password> | password used to encrypt the wallet (unsafe) |
--unencrypted | generate unsafe unencrypted wallet in working directory (--keystoredir option is ignored) |
--keystoredir <path> | specify the wallet directory <"global"|"local"|custom> |
--force | force wallet creation even if old wallet exists |
import a wallet from an ethereum private key
Usage:
iexec wallet import <privateKey> [options]
Options:
option | description |
---|---|
--raw | use raw output |
--quiet | stop prompting updates |
--password <password> | password used to encrypt the wallet (unsafe) |
--unencrypted | generate unsafe unencrypted wallet in working directory (--keystoredir option is ignored) |
--keystoredir <path> | specify the wallet directory <"global"|"local"|custom> |
--force | force wallet creation even if old wallet exists |
show address wallet details
Usage:
iexec wallet show [address] [options]
Options:
option | description |
---|---|
--raw | use raw output |
--quiet | stop prompting updates |
--password <password> | password used to encrypt the wallet (unsafe) |
--wallet-file <walletFileName> | specify the name of the wallet file to use |
--wallet-address <walletAddress> | specify the address of the wallet to use |
--keystoredir <path> | specify the wallet directory <"global"|"local"|custom> |
--chain <name> | chain name from "chain.json" |
--show-private-key | allow displaying wallet private key |
Alias: sendETH
send ether to an address (default unit ether)
Usage:
iexec wallet send-ether <amount> [unit] [options]
Options:
option | description |
---|---|
--raw | use raw output |
--quiet | stop prompting updates |
--password <password> | password used to encrypt the wallet (unsafe) |
--wallet-file <walletFileName> | specify the name of the wallet file to use |
--wallet-address <walletAddress> | specify the address of the wallet to use |
--keystoredir <path> | specify the wallet directory <"global"|"local"|custom> |
--chain <name> | chain name from "chain.json" |
--gas-price <amount unit...> | set custom gas price for transactions (default unit wei) |
--confirms <blockCount> | set custom block count to wait for transactions confirmation (default 1 block) |
--force | force perform action without prompting user |
--to <address> | receiver address |
send RLC to an address (default unit RLC)
Usage:
iexec wallet send-RLC <amount> [unit] [options]
Options:
option | description |
---|---|
--raw | use raw output |
--quiet | stop prompting updates |
--password <password> | password used to encrypt the wallet (unsafe) |
--wallet-file <walletFileName> | specify the name of the wallet file to use |
--wallet-address <walletAddress> | specify the address of the wallet to use |
--keystoredir <path> | specify the wallet directory <"global"|"local"|custom> |
--chain <name> | chain name from "chain.json" |
--gas-price <amount unit...> | set custom gas price for transactions (default unit wei) |
--confirms <blockCount> | set custom block count to wait for transactions confirmation (default 1 block) |
--force | force perform action without prompting user |
--to <address> | receiver address |
send all ether and RLC to an address
Usage:
iexec wallet sweep [options]
Options:
option | description |
---|---|
--raw | use raw output |
--quiet | stop prompting updates |
--password <password> | password used to encrypt the wallet (unsafe) |
--wallet-file <walletFileName> | specify the name of the wallet file to use |
--wallet-address <walletAddress> | specify the address of the wallet to use |
--keystoredir <path> | specify the wallet directory <"global"|"local"|custom> |
--chain <name> | chain name from "chain.json" |
--gas-price <amount unit...> | set custom gas price for transactions (default unit wei) |
--confirms <blockCount> | set custom block count to wait for transactions confirmation (default 1 block) |
--force | force perform action without prompting user |
--to <address> | receiver address |
send RLC from the mainchain to the sidechain (default unit nRLC)
Usage:
iexec wallet bridge-to-sidechain <amount> [unit] [options]
Options:
option | description |
---|---|
--raw | use raw output |
--quiet | stop prompting updates |
--password <password> | password used to encrypt the wallet (unsafe) |
--wallet-file <walletFileName> | specify the name of the wallet file to use |
--wallet-address <walletAddress> | specify the address of the wallet to use |
--keystoredir <path> | specify the wallet directory <"global"|"local"|custom> |
--chain <name> | chain name from "chain.json" |
--gas-price <amount unit...> | set custom gas price for transactions (default unit wei) |
--confirms <blockCount> | set custom block count to wait for transactions confirmation (default 1 block) |
--force | force perform action without prompting user |
send RLC from the sidechain to the mainchain (default unit nRLC)
Usage:
iexec wallet bridge-to-mainchain <amount> [unit] [options]
Options:
option | description |
---|---|
--raw | use raw output |
--quiet | stop prompting updates |
--password <password> | password used to encrypt the wallet (unsafe) |
--wallet-file <walletFileName> | specify the name of the wallet file to use |
--wallet-address <walletAddress> | specify the address of the wallet to use |
--keystoredir <path> | specify the wallet directory <"global"|"local"|custom> |
--chain <name> | chain name from "chain.json" |
--gas-price <amount unit...> | set custom gas price for transactions (default unit wei) |
--confirms <blockCount> | set custom block count to wait for transactions confirmation (default 1 block) |
--force | force perform action without prompting user |
[DEPRECATED see send-RLC] send RLC to an address (WARNING! default unit nRLC)
Usage:
iexec wallet sendRLC <amount> [unit] [options]
Options:
option | description |
---|---|
--raw | use raw output |
--quiet | stop prompting updates |
--password <password> | password used to encrypt the wallet (unsafe) |
--wallet-file <walletFileName> | specify the name of the wallet file to use |
--wallet-address <walletAddress> | specify the address of the wallet to use |
--keystoredir <path> | specify the wallet directory <"global"|"local"|custom> |
--chain <name> | chain name from "chain.json" |
--gas-price <amount unit...> | set custom gas price for transactions (default unit wei) |
--confirms <blockCount> | set custom block count to wait for transactions confirmation (default 1 block) |
--force | force perform action without prompting user |
--to <address> | receiver address |
manage iExec account
Usage:
iexec account <command> [options]
Commands:
deposit RLC onto your iExec account (default unit nRLC)
Usage:
iexec account deposit <amount> [unit] [options]
Options:
option | description |
---|---|
--raw | use raw output |
--quiet | stop prompting updates |
--password <password> | password used to encrypt the wallet (unsafe) |
--wallet-file <walletFileName> | specify the name of the wallet file to use |
--wallet-address <walletAddress> | specify the address of the wallet to use |
--keystoredir <path> | specify the wallet directory <"global"|"local"|custom> |
--chain <name> | chain name from "chain.json" |
--gas-price <amount unit...> | set custom gas price for transactions (default unit wei) |
--confirms <blockCount> | set custom block count to wait for transactions confirmation (default 1 block) |
withdraw RLC from your iExec account (default unit nRLC)
Usage:
iexec account withdraw <amount> [unit] [options]
Options:
option | description |
---|---|
--raw | use raw output |
--quiet | stop prompting updates |
--password <password> | password used to encrypt the wallet (unsafe) |
--wallet-file <walletFileName> | specify the name of the wallet file to use |
--wallet-address <walletAddress> | specify the address of the wallet to use |
--keystoredir <path> | specify the wallet directory <"global"|"local"|custom> |
--chain <name> | chain name from "chain.json" |
--gas-price <amount unit...> | set custom gas price for transactions (default unit wei) |
--confirms <blockCount> | set custom block count to wait for transactions confirmation (default 1 block) |
show account iExec details
Usage:
iexec account show [address] [options]
Options:
option | description |
---|---|
--raw | use raw output |
--quiet | stop prompting updates |
--password <password> | password used to encrypt the wallet (unsafe) |
--wallet-file <walletFileName> | specify the name of the wallet file to use |
--wallet-address <walletAddress> | specify the address of the wallet to use |
--keystoredir <path> | specify the wallet directory <"global"|"local"|custom> |
--chain <name> | chain name from "chain.json" |
approve spender to spend up to amount of RLC from your iExec account (default unit nRLC)
Usage:
iexec account approve <amount> <spender> [unit] [options]
Options:
option | description |
---|---|
--raw | use raw output |
--quiet | stop prompting updates |
--password <password> | password used to encrypt the wallet (unsafe) |
--wallet-file <walletFileName> | specify the name of the wallet file to use |
--wallet-address <walletAddress> | specify the address of the wallet to use |
--keystoredir <path> | specify the wallet directory <"global"|"local"|custom> |
--chain <name> | chain name from "chain.json" |
--gas-price <amount unit...> | set custom gas price for transactions (default unit wei) |
--confirms <blockCount> | set custom block count to wait for transactions confirmation (default 1 block) |
check the amount of allowance approved for the specified spender to use your iExec account (specify --user to see another user's allowance)
Usage:
iexec account allowance <spender> [options]
Options:
option | description |
---|---|
--raw | use raw output |
--quiet | stop prompting updates |
--password <password> | password used to encrypt the wallet (unsafe) |
--wallet-file <walletFileName> | specify the name of the wallet file to use |
--wallet-address <walletAddress> | specify the address of the wallet to use |
--keystoredir <path> | specify the wallet directory <"global"|"local"|custom> |
--chain <name> | chain name from "chain.json" |
--user <address> | custom user address |
revoke the approval for the spender to use your iExec account
Usage:
iexec account revoke <spender> [options]
Options:
option | description |
---|---|
--raw | use raw output |
--quiet | stop prompting updates |
--password <password> | password used to encrypt the wallet (unsafe) |
--wallet-file <walletFileName> | specify the name of the wallet file to use |
--wallet-address <walletAddress> | specify the address of the wallet to use |
--keystoredir <path> | specify the wallet directory <"global"|"local"|custom> |
--chain <name> | chain name from "chain.json" |
--gas-price <amount unit...> | set custom gas price for transactions (default unit wei) |
--confirms <blockCount> | set custom block count to wait for transactions confirmation (default 1 block) |
manage iExec voucher
Usage:
iexec voucher <command> [options]
Commands:
show voucher iExec details
Usage:
iexec voucher show [options]
Options:
option | description |
---|---|
--raw | use raw output |
--quiet | stop prompting updates |
--password <password> | password used to encrypt the wallet (unsafe) |
--wallet-file <walletFileName> | specify the name of the wallet file to use |
--wallet-address <walletAddress> | specify the address of the wallet to use |
--keystoredir <path> | specify the wallet directory <"global"|"local"|custom> |
--chain <name> | chain name from "chain.json" |
--user <address> | custom user address |
authorize requester to use the voucher
Usage:
iexec voucher authorize <requester> [options]
Options:
option | description |
---|---|
--raw | use raw output |
--quiet | stop prompting updates |
--password <password> | password used to encrypt the wallet (unsafe) |
--wallet-file <walletFileName> | specify the name of the wallet file to use |
--wallet-address <walletAddress> | specify the address of the wallet to use |
--keystoredir <path> | specify the wallet directory <"global"|"local"|custom> |
--chain <name> | chain name from "chain.json" |
revoke authorization to use the voucher
Usage:
iexec voucher revoke <requester> [options]
Options:
option | description |
---|---|
--raw | use raw output |
--quiet | stop prompting updates |
--password <password> | password used to encrypt the wallet (unsafe) |
--wallet-file <walletFileName> | specify the name of the wallet file to use |
--wallet-address <walletAddress> | specify the address of the wallet to use |
--keystoredir <path> | specify the wallet directory <"global"|"local"|custom> |
--chain <name> | chain name from "chain.json" |
manage iExec apps
Usage:
iexec app <command> [options]
Commands:
init a new app
Usage:
iexec app init [options]
Options:
option | description |
---|---|
--raw | use raw output |
--quiet | stop prompting updates |
--password <password> | password used to encrypt the wallet (unsafe) |
--wallet-file <walletFileName> | specify the name of the wallet file to use |
--wallet-address <walletAddress> | specify the address of the wallet to use |
--keystoredir <path> | specify the wallet directory <"global"|"local"|custom> |
--tee | use the Trusted Execution Environment template |
--tee-framework <name> | specify the TEE framework to use |
deploy a new app
Usage:
iexec app deploy [options]
Options:
option | description |
---|---|
--raw | use raw output |
--quiet | stop prompting updates |
--password <password> | password used to encrypt the wallet (unsafe) |
--wallet-file <walletFileName> | specify the name of the wallet file to use |
--wallet-address <walletAddress> | specify the address of the wallet to use |
--keystoredir <path> | specify the wallet directory <"global"|"local"|custom> |
--chain <name> | chain name from "chain.json" |
--gas-price <amount unit...> | set custom gas price for transactions (default unit wei) |
--confirms <blockCount> | set custom block count to wait for transactions confirmation (default 1 block) |
show user app details
Usage:
iexec app show [addressOrIndex] [options]
Options:
option | description |
---|---|
--raw | use raw output |
--quiet | stop prompting updates |
--password <password> | password used to encrypt the wallet (unsafe) |
--wallet-file <walletFileName> | specify the name of the wallet file to use |
--wallet-address <walletAddress> | specify the address of the wallet to use |
--keystoredir <path> | specify the wallet directory <"global"|"local"|custom> |
--chain <name> | chain name from "chain.json" |
--user <address> | custom user address |
get user app count
Usage:
iexec app count [options]
Options:
option | description |
---|---|
--raw | use raw output |
--quiet | stop prompting updates |
--password <password> | password used to encrypt the wallet (unsafe) |
--wallet-file <walletFileName> | specify the name of the wallet file to use |
--wallet-address <walletAddress> | specify the address of the wallet to use |
--keystoredir <path> | specify the wallet directory <"global"|"local"|custom> |
--chain <name> | chain name from "chain.json" |
--user <address> | custom user address |
check if a secret exists in the secret management service
Usage:
iexec app check-secret [appAddress] [options]
Options:
option | description |
---|---|
--raw | use raw output |
--quiet | stop prompting updates |
--chain <name> | chain name from "chain.json" |
--tee-framework <name> | specify the TEE framework to use |
push the app secret to the secret management service
Usage:
iexec app push-secret [appAddress] [options]
Options:
option | description |
---|---|
--raw | use raw output |
--quiet | stop prompting updates |
--password <password> | password used to encrypt the wallet (unsafe) |
--wallet-file <walletFileName> | specify the name of the wallet file to use |
--wallet-address <walletAddress> | specify the address of the wallet to use |
--keystoredir <path> | specify the wallet directory <"global"|"local"|custom> |
--chain <name> | chain name from "chain.json" |
--secret-value <secretValue> | secret value (unsafe) |
--tee-framework <name> | specify the TEE framework to use |
publish a apporder on the marketplace to make the app publicly available (use options to set custom usage restriction)
Usage:
iexec app publish [appAddress] [options]
Options:
option | description |
---|---|
--raw | use raw output |
--quiet | stop prompting updates |
--password <password> | password used to encrypt the wallet (unsafe) |
--wallet-file <walletFileName> | specify the name of the wallet file to use |
--wallet-address <walletAddress> | specify the address of the wallet to use |
--keystoredir <path> | specify the wallet directory <"global"|"local"|custom> |
--chain <name> | chain name from "chain.json" |
--force | force perform action without prompting user |
--price <amount unit...> | price per task (default unit nRLC) |
--volume <volume> | number of run |
--tag <tag> | specify tags * usage: --tag tag1,tag2 |
--dataset-restrict <address> | restrict usage to specific dataset |
--workerpool-restrict <address> | restrict usage to specific workerpool |
--requester-restrict <address> | restrict usage to specific requester |
--skip-preflight-check | skip preflight check, this may result in task execution fail |
unpublish last published apporder for from the marketplace
Usage:
iexec app unpublish [appAddress] [options]
Options:
option | description |
---|---|
--raw | use raw output |
--quiet | stop prompting updates |
--password <password> | password used to encrypt the wallet (unsafe) |
--wallet-file <walletFileName> | specify the name of the wallet file to use |
--wallet-address <walletAddress> | specify the address of the wallet to use |
--keystoredir <path> | specify the wallet directory <"global"|"local"|custom> |
--chain <name> | chain name from "chain.json" |
--force | force perform action without prompting user |
--all | unpublish all orders |
run an iExec application at market price (default run last deployed app)
Usage:
iexec app run [appAddress] [options]
Options:
option | description |
---|---|
--raw | use raw output |
--quiet | stop prompting updates |
--password <password> | password used to encrypt the wallet (unsafe) |
--wallet-file <walletFileName> | specify the name of the wallet file to use |
--wallet-address <walletAddress> | specify the address of the wallet to use |
--keystoredir <path> | specify the wallet directory <"global"|"local"|custom> |
--chain <name> | chain name from "chain.json" |
--gas-price <amount unit...> | set custom gas price for transactions (default unit wei) |
--confirms <blockCount> | set custom block count to wait for transactions confirmation (default 1 block) |
--force | force perform action without prompting user |
--watch | watch execution status changes |
--dataset <address|"deployed"> | dataset address, use "deployed" to use last deployed from "deployed.json" |
--workerpool <address|"deployed"> | workerpool address, use "deployed" to use last deployed from "deployed.json" |
--args <string> | specify the arguments to pass to the app |
--input-files <fileUrl> | specify the URL of input files to be used by the app * usage: --input-files https://example.com/foo.txt,https://example.com/bar.zip |
--secret <secretMapping...> | specify the requester secrets mappings (<appSecretKey>=<requesterSecretName>) to use in the app (only available for TEE tasks, use with --tag tee) * usage: * [command] [args] --secret 1=login 2=password * [command] [args] --secret 1=login --secret 2=password * [command] --secret 1=login --secret 2=password -- [args] * please note that this option is variadic, any number of mappings can be passed, use -- to stop the list |
--category <id> | id of the task category |
--tag <tag> | specify tags * usage: --tag tag1,tag2 |
--storage-provider <"ipfs"|"dropbox"> | specify the storage to use to store the result archive |
--callback <address> | specify the callback address of the request |
--encrypt-result | encrypt the result archive with the beneficiary public key (only available for TEE tasks, use with --tag tee) |
--trust <integer> | trust level |
--beneficiary <address> | specify the beneficiary of the request (default user address) |
--params <json> | specify the params of the request * usage: --params '{"iexec_args":"do stuff","iexec_input_files":["https://example.com/file.zip"\]}' |
--skip-preflight-check | skip preflight check, this may result in task execution fail |
--use-voucher | use the voucher to cover the costs of matching orders |
request an iExec application execution at limit price
Usage:
iexec app request-execution <appAddress> [options]
Options:
option | description |
---|---|
--raw | use raw output |
--quiet | stop prompting updates |
--password <password> | password used to encrypt the wallet (unsafe) |
--wallet-file <walletFileName> | specify the name of the wallet file to use |
--wallet-address <walletAddress> | specify the address of the wallet to use |
--keystoredir <path> | specify the wallet directory <"global"|"local"|custom> |
--chain <name> | chain name from "chain.json" |
--force | force perform action without prompting user |
--dataset <address> | dataset address |
--workerpool <address> | workerpool address |
--app-price <amount unit...> | app price per task (default unit nRLC) |
--dataset-price <amount unit...> | dataset price per task (default unit nRLC) |
--workerpool-price <amount unit...> | workerpool price per task (default unit nRLC) |
--args <string> | specify the arguments to pass to the app |
--input-files <fileUrl> | specify the URL of input files to be used by the app * usage: --input-files https://example.com/foo.txt,https://example.com/bar.zip |
--secret <secretMapping...> | specify the requester secrets mappings (<appSecretKey>=<requesterSecretName>) to use in the app (only available for TEE tasks, use with --tag tee) * usage: * [command] [args] --secret 1=login 2=password * [command] [args] --secret 1=login --secret 2=password * [command] --secret 1=login --secret 2=password -- [args] * please note that this option is variadic, any number of mappings can be passed, use -- to stop the list |
--category <id> | id of the task category |
--tag <tag> | specify tags * usage: --tag tag1,tag2 |
--volume <volume> | number of run |
--storage-provider <"ipfs"|"dropbox"> | specify the storage to use to store the result archive |
--callback <address> | specify the callback address of the request |
--encrypt-result | encrypt the result archive with the beneficiary public key (only available for TEE tasks, use with --tag tee) |
--trust <integer> | trust level |
--beneficiary <address> | specify the beneficiary of the request (default user address) |
--params <json> | specify the params of the request * usage: --params '{"iexec_args":"do stuff","iexec_input_files":["https://example.com/file.zip"\]}' |
--skip-preflight-check | skip preflight check, this may result in task execution fail |
transfer the ownership of the app to an address
Usage:
iexec app transfer <appAddress> [options]
Options:
option | description |
---|---|
--raw | use raw output |
--quiet | stop prompting updates |
--password <password> | password used to encrypt the wallet (unsafe) |
--wallet-file <walletFileName> | specify the name of the wallet file to use |
--wallet-address <walletAddress> | specify the address of the wallet to use |
--keystoredir <path> | specify the wallet directory <"global"|"local"|custom> |
--chain <name> | chain name from "chain.json" |
--gas-price <amount unit...> | set custom gas price for transactions (default unit wei) |
--confirms <blockCount> | set custom block count to wait for transactions confirmation (default 1 block) |
--force | force perform action without prompting user |
--to <address> | receiver address |
manage iExec datasets
Usage:
iexec dataset <command> [options]
Commands:
init a new dataset
Usage:
iexec dataset init [options]
Options:
option | description |
---|---|
--raw | use raw output |
--quiet | stop prompting updates |
--password <password> | password used to encrypt the wallet (unsafe) |
--wallet-file <walletFileName> | specify the name of the wallet file to use |
--wallet-address <walletAddress> | specify the address of the wallet to use |
--keystoredir <path> | specify the wallet directory <"global"|"local"|custom> |
--encrypted | init datasets folder tree for dataset encryption |
--tee | use the Trusted Execution Environment template |
--dataset-keystoredir <path> | specify dataset TEE key directory |
--original-dataset-dir <path> | specify the original dataset directory |
--encrypted-dataset-dir <path> | specify the encrypted dataset directory |
deploy a new dataset
Usage:
iexec dataset deploy [options]
Options:
option | description |
---|---|
--raw | use raw output |
--quiet | stop prompting updates |
--password <password> | password used to encrypt the wallet (unsafe) |
--wallet-file <walletFileName> | specify the name of the wallet file to use |
--wallet-address <walletAddress> | specify the address of the wallet to use |
--keystoredir <path> | specify the wallet directory <"global"|"local"|custom> |
--chain <name> | chain name from "chain.json" |
--gas-price <amount unit...> | set custom gas price for transactions (default unit wei) |
--confirms <blockCount> | set custom block count to wait for transactions confirmation (default 1 block) |
show user dataset details
Usage:
iexec dataset show [addressOrIndex] [options]
Options:
option | description |
---|---|
--raw | use raw output |
--quiet | stop prompting updates |
--password <password> | password used to encrypt the wallet (unsafe) |
--wallet-file <walletFileName> | specify the name of the wallet file to use |
--wallet-address <walletAddress> | specify the address of the wallet to use |
--keystoredir <path> | specify the wallet directory <"global"|"local"|custom> |
--chain <name> | chain name from "chain.json" |
--user <address> | custom user address |
get user dataset count
Usage:
iexec dataset count [options]
Options:
option | description |
---|---|
--raw | use raw output |
--quiet | stop prompting updates |
--password <password> | password used to encrypt the wallet (unsafe) |
--wallet-file <walletFileName> | specify the name of the wallet file to use |
--wallet-address <walletAddress> | specify the address of the wallet to use |
--keystoredir <path> | specify the wallet directory <"global"|"local"|custom> |
--chain <name> | chain name from "chain.json" |
--user <address> | custom user address |
for each file in the original dataset directory, generate a key, create an encrypted copy of the file in the encrypted dataset directory and compute the encrypted file's checksum
Usage:
iexec dataset encrypt [options]
Options:
option | description |
---|---|
--raw | use raw output |
--quiet | stop prompting updates |
--force | force perform action without prompting user |
--dataset-keystoredir <path> | specify dataset TEE key directory |
--original-dataset-dir <path> | specify the original dataset directory |
--encrypted-dataset-dir <path> | specify the encrypted dataset directory |
push the dataset secret to the secret management service (default push the last secret generated, use --secret-path <secretPath> to overwrite)
Usage:
iexec dataset push-secret [datasetAddress] [options]
Options:
option | description |
---|---|
--raw | use raw output |
--quiet | stop prompting updates |
--password <password> | password used to encrypt the wallet (unsafe) |
--wallet-file <walletFileName> | specify the name of the wallet file to use |
--wallet-address <walletAddress> | specify the address of the wallet to use |
--keystoredir <path> | specify the wallet directory <"global"|"local"|custom> |
--chain <name> | chain name from "chain.json" |
--secret-path <secretPath> | push the secret from a file |
--tee-framework <name> | specify the TEE framework to use |
check if a secret exists in the secret management service
Usage:
iexec dataset check-secret [datasetAddress] [options]
Options:
option | description |
---|---|
--raw | use raw output |
--quiet | stop prompting updates |
--chain <name> | chain name from "chain.json" |
--tee-framework <name> | specify the TEE framework to use |
publish a datasetorder on the marketplace to make the dataset publicly available (use options to set custom usage restriction)
Usage:
iexec dataset publish [datasetAddress] [options]
Options:
option | description |
---|---|
--raw | use raw output |
--quiet | stop prompting updates |
--password <password> | password used to encrypt the wallet (unsafe) |
--wallet-file <walletFileName> | specify the name of the wallet file to use |
--wallet-address <walletAddress> | specify the address of the wallet to use |
--keystoredir <path> | specify the wallet directory <"global"|"local"|custom> |
--chain <name> | chain name from "chain.json" |
--force | force perform action without prompting user |
--price <amount unit...> | price per task (default unit nRLC) |
--volume <volume> | number of run |
--tag <tag> | specify tags * usage: --tag tag1,tag2 |
--app-restrict <address> | restrict usage to specific app |
--workerpool-restrict <address> | restrict usage to specific workerpool |
--requester-restrict <address> | restrict usage to specific requester |
--skip-preflight-check | skip preflight check, this may result in task execution fail |
unpublish last published datasetorder for from the marketplace
Usage:
iexec dataset unpublish [datasetAddress] [options]
Options:
option | description |
---|---|
--raw | use raw output |
--quiet | stop prompting updates |
--password <password> | password used to encrypt the wallet (unsafe) |
--wallet-file <walletFileName> | specify the name of the wallet file to use |
--wallet-address <walletAddress> | specify the address of the wallet to use |
--keystoredir <path> | specify the wallet directory <"global"|"local"|custom> |
--chain <name> | chain name from "chain.json" |
--force | force perform action without prompting user |
--all | unpublish all orders |
transfer the ownership of the dataset to an address
Usage:
iexec dataset transfer <datasetAddress> [options]
Options:
option | description |
---|---|
--raw | use raw output |
--quiet | stop prompting updates |
--password <password> | password used to encrypt the wallet (unsafe) |
--wallet-file <walletFileName> | specify the name of the wallet file to use |
--wallet-address <walletAddress> | specify the address of the wallet to use |
--keystoredir <path> | specify the wallet directory <"global"|"local"|custom> |
--chain <name> | chain name from "chain.json" |
--gas-price <amount unit...> | set custom gas price for transactions (default unit wei) |
--confirms <blockCount> | set custom block count to wait for transactions confirmation (default 1 block) |
--force | force perform action without prompting user |
--to <address> | receiver address |
manage iExec workerpools
Usage:
iexec workerpool <command> [options]
Commands:
init a new workerpool
Usage:
iexec workerpool init [options]
Options:
option | description |
---|---|
--raw | use raw output |
--quiet | stop prompting updates |
--password <password> | password used to encrypt the wallet (unsafe) |
--wallet-file <walletFileName> | specify the name of the wallet file to use |
--wallet-address <walletAddress> | specify the address of the wallet to use |
--keystoredir <path> | specify the wallet directory <"global"|"local"|custom> |
deploy a new workerpool
Usage:
iexec workerpool deploy [options]
Options:
option | description |
---|---|
--raw | use raw output |
--quiet | stop prompting updates |
--password <password> | password used to encrypt the wallet (unsafe) |
--wallet-file <walletFileName> | specify the name of the wallet file to use |
--wallet-address <walletAddress> | specify the address of the wallet to use |
--keystoredir <path> | specify the wallet directory <"global"|"local"|custom> |
--chain <name> | chain name from "chain.json" |
--gas-price <amount unit...> | set custom gas price for transactions (default unit wei) |
--confirms <blockCount> | set custom block count to wait for transactions confirmation (default 1 block) |
declare the workerpool API URL on the blockchain
Usage:
iexec workerpool set-api-url <apiUrl> [workerpoolAddress] [options]
Options:
option | description |
---|---|
--raw | use raw output |
--quiet | stop prompting updates |
--password <password> | password used to encrypt the wallet (unsafe) |
--wallet-file <walletFileName> | specify the name of the wallet file to use |
--wallet-address <walletAddress> | specify the address of the wallet to use |
--keystoredir <path> | specify the wallet directory <"global"|"local"|custom> |
--chain <name> | chain name from "chain.json" |
--gas-price <amount unit...> | set custom gas price for transactions (default unit wei) |
--confirms <blockCount> | set custom block count to wait for transactions confirmation (default 1 block) |
show user workerpool details
Usage:
iexec workerpool show [addressOrIndex] [options]
Options:
option | description |
---|---|
--raw | use raw output |
--quiet | stop prompting updates |
--password <password> | password used to encrypt the wallet (unsafe) |
--wallet-file <walletFileName> | specify the name of the wallet file to use |
--wallet-address <walletAddress> | specify the address of the wallet to use |
--keystoredir <path> | specify the wallet directory <"global"|"local"|custom> |
--chain <name> | chain name from "chain.json" |
--user <address> | custom user address |
get user workerpool count
Usage:
iexec workerpool count [options]
Options:
option | description |
---|---|
--raw | use raw output |
--quiet | stop prompting updates |
--password <password> | password used to encrypt the wallet (unsafe) |
--wallet-file <walletFileName> | specify the name of the wallet file to use |
--wallet-address <walletAddress> | specify the address of the wallet to use |
--keystoredir <path> | specify the wallet directory <"global"|"local"|custom> |
--chain <name> | chain name from "chain.json" |
--user <address> | custom user address |
publish a workerpoolorder on the marketplace to make the workerpool publicly available (use options to set custom usage restriction)
Usage:
iexec workerpool publish [workerpoolAddress] [options]
Options:
option | description |
---|---|
--raw | use raw output |
--quiet | stop prompting updates |
--password <password> | password used to encrypt the wallet (unsafe) |
--wallet-file <walletFileName> | specify the name of the wallet file to use |
--wallet-address <walletAddress> | specify the address of the wallet to use |
--keystoredir <path> | specify the wallet directory <"global"|"local"|custom> |
--chain <name> | chain name from "chain.json" |
--force | force perform action without prompting user |
--category <id> | id of the task category |
--price <amount unit...> | price per task (default unit nRLC) |
--volume <volume> | number of run |
--tag <tag> | specify tags * usage: --tag tag1,tag2 |
--trust <integer> | trust level |
--app-restrict <address> | restrict usage to specific app |
--dataset-restrict <address> | restrict usage to specific dataset |
--requester-restrict <address> | restrict usage to specific requester |
unpublish last published workerpoolorder for from the marketplace
Usage:
iexec workerpool unpublish [workerpoolAddress] [options]
Options:
option | description |
---|---|
--raw | use raw output |
--quiet | stop prompting updates |
--password <password> | password used to encrypt the wallet (unsafe) |
--wallet-file <walletFileName> | specify the name of the wallet file to use |
--wallet-address <walletAddress> | specify the address of the wallet to use |
--keystoredir <path> | specify the wallet directory <"global"|"local"|custom> |
--chain <name> | chain name from "chain.json" |
--force | force perform action without prompting user |
--all | unpublish all orders |
transfer the ownership of the workerpool to an address
Usage:
iexec workerpool transfer <workerpoolAddress> [options]
Options:
option | description |
---|---|
--raw | use raw output |
--quiet | stop prompting updates |
--password <password> | password used to encrypt the wallet (unsafe) |
--wallet-file <walletFileName> | specify the name of the wallet file to use |
--wallet-address <walletAddress> | specify the address of the wallet to use |
--keystoredir <path> | specify the wallet directory <"global"|"local"|custom> |
--chain <name> | chain name from "chain.json" |
--gas-price <amount unit...> | set custom gas price for transactions (default unit wei) |
--confirms <blockCount> | set custom block count to wait for transactions confirmation (default 1 block) |
--force | force perform action without prompting user |
--to <address> | receiver address |
commands for the requester
Usage:
iexec requester <command> [options]
Commands:
push a requester named secret to the secret management service
Usage:
iexec requester push-secret <secretName> [options]
Options:
option | description |
---|---|
--raw | use raw output |
--quiet | stop prompting updates |
--password <password> | password used to encrypt the wallet (unsafe) |
--wallet-file <walletFileName> | specify the name of the wallet file to use |
--wallet-address <walletAddress> | specify the address of the wallet to use |
--keystoredir <path> | specify the wallet directory <"global"|"local"|custom> |
--chain <name> | chain name from "chain.json" |
--secret-value <secretValue> | secret value (unsafe) |
--tee-framework <name> | specify the TEE framework to use |
check if a secret exists in the secret management service
Usage:
iexec requester check-secret <secretName> [requesterAddress] [options]
Options:
option | description |
---|---|
--raw | use raw output |
--quiet | stop prompting updates |
--password <password> | password used to encrypt the wallet (unsafe) |
--wallet-file <walletFileName> | specify the name of the wallet file to use |
--wallet-address <walletAddress> | specify the address of the wallet to use |
--keystoredir <path> | specify the wallet directory <"global"|"local"|custom> |
--chain <name> | chain name from "chain.json" |
--tee-framework <name> | specify the TEE framework to use |
manage iExec marketplace orders
Usage:
iexec order <command> [options]
Commands:
init a new order
Usage:
iexec order init [options]
Options:
option | description |
---|---|
--raw | use raw output |
--quiet | stop prompting updates |
--password <password> | password used to encrypt the wallet (unsafe) |
--wallet-file <walletFileName> | specify the name of the wallet file to use |
--wallet-address <walletAddress> | specify the address of the wallet to use |
--keystoredir <path> | specify the wallet directory <"global"|"local"|custom> |
--chain <name> | chain name from "chain.json" |
--app | init an app sell order |
--dataset | init a dataset sell order |
--workerpool | init a workerpool sell order |
--request | init a buy request order |
sign orders from "iexec.json" and store them into "orders.json"
Usage:
iexec order sign [options]
Options:
option | description |
---|---|
--raw | use raw output |
--quiet | stop prompting updates |
--password <password> | password used to encrypt the wallet (unsafe) |
--wallet-file <walletFileName> | specify the name of the wallet file to use |
--wallet-address <walletAddress> | specify the address of the wallet to use |
--keystoredir <path> | specify the wallet directory <"global"|"local"|custom> |
--chain <name> | chain name from "chain.json" |
--force | force perform action without prompting user |
--app | sign an selling apporder |
--dataset | sign a selling datasetorder |
--workerpool | sign a selling workerpoolorder |
--request | sign a buying requestorder |
--skip-preflight-check | skip preflight check, this may result in task execution fail |
fill an order to execute a work
Usage:
iexec order fill [options]
Options:
option | description |
---|---|
--raw | use raw output |
--quiet | stop prompting updates |
--password <password> | password used to encrypt the wallet (unsafe) |
--wallet-file <walletFileName> | specify the name of the wallet file to use |
--wallet-address <walletAddress> | specify the address of the wallet to use |
--keystoredir <path> | specify the wallet directory <"global"|"local"|custom> |
--chain <name> | chain name from "chain.json" |
--gas-price <amount unit...> | set custom gas price for transactions (default unit wei) |
--confirms <blockCount> | set custom block count to wait for transactions confirmation (default 1 block) |
--force | force perform action without prompting user |
--app <orderHash> | specify the app order from the marketplace to fill |
--dataset <orderHash> | specify the dataset order from the marketplace to fill |
--workerpool <orderHash> | specify the workerpool order from the marketplace to fill |
--request <orderHash> | specify the requestorder from the marketplace to fill |
--params <json> | specify the params of the request, existing request order will be ignored * usage: --params '{"iexec_args":"do stuff","iexec_input_files":["https://example.com/file.zip"\]}' |
--skip-preflight-check | skip preflight check, this may result in task execution fail |
--use-voucher | use the voucher to cover the costs of matching orders |
publish a signed order
Usage:
iexec order publish [options]
Options:
option | description |
---|---|
--raw | use raw output |
--quiet | stop prompting updates |
--password <password> | password used to encrypt the wallet (unsafe) |
--wallet-file <walletFileName> | specify the name of the wallet file to use |
--wallet-address <walletAddress> | specify the address of the wallet to use |
--keystoredir <path> | specify the wallet directory <"global"|"local"|custom> |
--chain <name> | chain name from "chain.json" |
--force | force perform action without prompting user |
--app | publish a signed apporder on iExec marketplace |
--dataset | publish a signed datasetorder on iExec marketplace |
--workerpool | publish a signed workerpoolorder on iExec marketplace |
--request | publish a signed requestorder on iExec marketplace |
--skip-preflight-check | skip preflight check, this may result in task execution fail |
unpublish a signed order
Usage:
iexec order unpublish [options]
Options:
option | description |
---|---|
--raw | use raw output |
--quiet | stop prompting updates |
--password <password> | password used to encrypt the wallet (unsafe) |
--wallet-file <walletFileName> | specify the name of the wallet file to use |
--wallet-address <walletAddress> | specify the address of the wallet to use |
--keystoredir <path> | specify the wallet directory <"global"|"local"|custom> |
--chain <name> | chain name from "chain.json" |
--force | force perform action without prompting user |
--app [orderHash] | unpublish a signed apporder from iExec marketplace |
--dataset [orderHash] | unpublish a signed datasetorder from iExec marketplace |
--workerpool [orderHash] | unpublish a signed workerpoolorder from iExec marketplace |
--request [orderHash] | unpublish a signed requestorder from iExec marketplace |
cancel an order
Usage:
iexec order cancel [options]
Options:
option | description |
---|---|
--raw | use raw output |
--quiet | stop prompting updates |
--password <password> | password used to encrypt the wallet (unsafe) |
--wallet-file <walletFileName> | specify the name of the wallet file to use |
--wallet-address <walletAddress> | specify the address of the wallet to use |
--keystoredir <path> | specify the wallet directory <"global"|"local"|custom> |
--chain <name> | chain name from "chain.json" |
--gas-price <amount unit...> | set custom gas price for transactions (default unit wei) |
--confirms <blockCount> | set custom block count to wait for transactions confirmation (default 1 block) |
--force | force perform action without prompting user |
--app | cancel a signed apporder |
--dataset | cancel a signed datasetorder |
--workerpool | cancel a signed workerpoolorder |
--request | cancel a signed requestorder |
show marketplace order details
Usage:
iexec order show [options]
Options:
option | description |
---|---|
--raw | use raw output |
--quiet | stop prompting updates |
--chain <name> | chain name from "chain.json" |
--app [orderHash] | show an apporder |
--dataset [orderHash] | show a datasetorder |
--workerpool [orderHash] | show a workerpoolorder |
--request [orderHash] | show a requestorder |
--deals | show the deals produced by the order |
show marketplace orderbook
Usage:
iexec orderbook <command> [options]
Commands:
show marketplace app orderbook details
Usage:
iexec orderbook app <address> [options]
Options:
option | description |
---|---|
--raw | use raw output |
--quiet | stop prompting updates |
--chain <name> | chain name from "chain.json" |
--tag <tag> | specify exact tags * usage: --tag tag1,tag2 |
--require-tag <tag> | specify minimum required tags * usage: --require-tag tag1,tag2 |
--max-tag <tag> | specify maximum tags (exclude not listed tags) * usage: --max-tag tag1,tag2 |
--min-volume <integer> | specify minimum volume |
--dataset <address> | include private orders for specified dataset |
--workerpool <address> | include private orders for specified workerpool |
--requester <address> | include private orders for specified requester |
--dataset-strict | fetch orders created strictly for the specified dataset |
--workerpool-strict | fetch orders created strictly for the specified workerpool |
--requester-strict | fetch orders created strictly for the specified requester |
show marketplace dataset orderbook details
Usage:
iexec orderbook dataset <address> [options]
Options:
option | description |
---|---|
--raw | use raw output |
--quiet | stop prompting updates |
--chain <name> | chain name from "chain.json" |
--tag <tag> | specify exact tags * usage: --tag tag1,tag2 |
--require-tag <tag> | specify minimum required tags * usage: --require-tag tag1,tag2 |
--max-tag <tag> | specify maximum tags (exclude not listed tags) * usage: --max-tag tag1,tag2 |
--min-volume <integer> | specify minimum volume |
--app <address> | include private orders for specified app |
--workerpool <address> | include private orders for specified workerpool |
--requester <address> | include private orders for specified requester |
--app-strict | fetch orders created strictly for the specified app |
--requester-strict | fetch orders created strictly for the specified requester |
--workerpool-strict | fetch orders created strictly for the specified workerpool |
show marketplace workerpools orderbook details
Usage:
iexec orderbook workerpool [address] [options]
Options:
option | description |
---|---|
--raw | use raw output |
--quiet | stop prompting updates |
--chain <name> | chain name from "chain.json" |
--category <id> | specify the work category |
--tag <tag> | specify exact tags * usage: --tag tag1,tag2 |
--require-tag <tag> | specify minimum required tags * usage: --require-tag tag1,tag2 |
--max-tag <tag> | specify maximum tags (exclude not listed tags) * usage: --max-tag tag1,tag2 |
--min-volume <integer> | specify minimum volume |
--min-trust <integer> | specify minimum trust |
--app <address> | include private orders for specified app |
--dataset <address> | include private orders for specified dataset |
--requester <address> | include private orders for specified requester |
--dataset-strict | fetch orders created strictly for the specified dataset |
--app-strict | fetch orders created strictly for the specified app |
--requester-strict | fetch orders created strictly for the specified requester |
show marketplace requesters orderbook details
Usage:
iexec orderbook requester [address] [options]
Options:
option | description |
---|---|
--raw | use raw output |
--quiet | stop prompting updates |
--chain <name> | chain name from "chain.json" |
--category <id> | specify the work category |
--tag <tag> | specify exact tags * usage: --tag tag1,tag2 |
--require-tag <tag> | specify minimum required tags * usage: --require-tag tag1,tag2 |
--max-tag <tag> | specify maximum tags (exclude not listed tags) * usage: --max-tag tag1,tag2 |
--min-volume <integer> | specify minimum volume |
--max-trust <integer> | specify maximum trust |
--app <address> | filter by app |
--dataset <address> | filter by dataset |
--beneficiary <address> | filter by beneficiary |
--workerpool <address> | include private orders for specified workerpool |
--workerpool-strict | fetch orders created strictly for the specified workerpool |
manage iExec deals
Usage:
iexec deal <command> [options]
Commands:
show user deal details
Usage:
iexec deal show <dealid> [options]
Options:
option | description |
---|---|
--raw | use raw output |
--quiet | stop prompting updates |
--password <password> | password used to encrypt the wallet (unsafe) |
--wallet-file <walletFileName> | specify the name of the wallet file to use |
--wallet-address <walletAddress> | specify the address of the wallet to use |
--keystoredir <path> | specify the wallet directory <"global"|"local"|custom> |
--chain <name> | chain name from "chain.json" |
--watch | watch execution status changes |
claim a deal that is not COMPLETED
Usage:
iexec deal claim <dealid> [options]
Options:
option | description |
---|---|
--raw | use raw output |
--quiet | stop prompting updates |
--password <password> | password used to encrypt the wallet (unsafe) |
--wallet-file <walletFileName> | specify the name of the wallet file to use |
--wallet-address <walletAddress> | specify the address of the wallet to use |
--keystoredir <path> | specify the wallet directory <"global"|"local"|custom> |
--chain <name> | chain name from "chain.json" |
--gas-price <amount unit...> | set custom gas price for transactions (default unit wei) |
--confirms <blockCount> | set custom block count to wait for transactions confirmation (default 1 block) |
manage iExec tasks
Usage:
iexec task <command> [options]
Commands:
show user task details
Usage:
iexec task show <taskid> [options]
Options:
option | description |
---|---|
--raw | use raw output |
--quiet | stop prompting updates |
--password <password> | password used to encrypt the wallet (unsafe) |
--wallet-file <walletFileName> | specify the name of the wallet file to use |
--wallet-address <walletAddress> | specify the address of the wallet to use |
--keystoredir <path> | specify the wallet directory <"global"|"local"|custom> |
--chain <name> | chain name from "chain.json" |
--watch | watch execution status changes |
--download [fileName] | download a task result data to local filesystem, if completed |
--decrypt | decrypt an encrypted result |
--beneficiary-keystoredir <path> | specify beneficiary TEE keys directory |
--beneficiary-key-file <fileName> | specify beneficiary TEE key file to use |
show task debug information
Usage:
iexec task debug <taskid> [options]
Options:
option | description |
---|---|
--raw | use raw output |
--quiet | stop prompting updates |
--password <password> | password used to encrypt the wallet (unsafe) |
--wallet-file <walletFileName> | specify the name of the wallet file to use |
--wallet-address <walletAddress> | specify the address of the wallet to use |
--keystoredir <path> | specify the wallet directory <"global"|"local"|custom> |
--chain <name> | chain name from "chain.json" |
--logs | show application logs |
claim a task that is not COMPLETED
Usage:
iexec task claim <taskid> [options]
Options:
option | description |
---|---|
--raw | use raw output |
--quiet | stop prompting updates |
--password <password> | password used to encrypt the wallet (unsafe) |
--wallet-file <walletFileName> | specify the name of the wallet file to use |
--wallet-address <walletAddress> | specify the address of the wallet to use |
--keystoredir <path> | specify the wallet directory <"global"|"local"|custom> |
--chain <name> | chain name from "chain.json" |
--gas-price <amount unit...> | set custom gas price for transactions (default unit wei) |
--confirms <blockCount> | set custom block count to wait for transactions confirmation (default 1 block) |
manage remote storage
Usage:
iexec storage <command> [options]
Commands:
initialize the remote storage
Usage:
iexec storage init [provider] [options]
Options:
option | description |
---|---|
--raw | use raw output |
--quiet | stop prompting updates |
--password <password> | password used to encrypt the wallet (unsafe) |
--wallet-file <walletFileName> | specify the name of the wallet file to use |
--wallet-address <walletAddress> | specify the address of the wallet to use |
--keystoredir <path> | specify the wallet directory <"global"|"local"|custom> |
--chain <name> | chain name from "chain.json" |
--force-update | update if already exists |
--token <token> | storage provider authorization token (unsafe) |
--tee-framework <name> | specify the TEE framework to use |
check if the remote storage is initialized
Usage:
iexec storage check [provider] [options]
Options:
option | description |
---|---|
--raw | use raw output |
--quiet | stop prompting updates |
--password <password> | password used to encrypt the wallet (unsafe) |
--wallet-file <walletFileName> | specify the name of the wallet file to use |
--wallet-address <walletAddress> | specify the address of the wallet to use |
--keystoredir <path> | specify the wallet directory <"global"|"local"|custom> |
--chain <name> | chain name from "chain.json" |
--user <address> | custom user address |
--tee-framework <name> | specify the TEE framework to use |
manage results encryption
Usage:
iexec result <command> [options]
Commands:
Alias: generate-keys
generate a beneficiary key pair to encrypt and decrypt the results
Usage:
iexec result generate-encryption-keypair [options]
Options:
option | description |
---|---|
--raw | use raw output |
--quiet | stop prompting updates |
--password <password> | password used to encrypt the wallet (unsafe) |
--wallet-file <walletFileName> | specify the name of the wallet file to use |
--wallet-address <walletAddress> | specify the address of the wallet to use |
--keystoredir <path> | specify the wallet directory <"global"|"local"|custom> |
--force | force perform action without prompting user |
--beneficiary-keystoredir <path> | specify beneficiary TEE keys directory |
decrypt encrypted results with beneficiary key
Usage:
iexec result decrypt [encryptedResultsPath] [options]
Options:
option | description |
---|---|
--raw | use raw output |
--quiet | stop prompting updates |
--password <password> | password used to encrypt the wallet (unsafe) |
--wallet-file <walletFileName> | specify the name of the wallet file to use |
--wallet-address <walletAddress> | specify the address of the wallet to use |
--keystoredir <path> | specify the wallet directory <"global"|"local"|custom> |
--force | force perform action without prompting user |
--beneficiary-keystoredir <path> | specify beneficiary TEE keys directory |
--beneficiary-key-file <fileName> | specify beneficiary TEE key file to use |
Alias: push-secret
push the public encryption key to the secret management service
Usage:
iexec result push-encryption-key [options]
Options:
option | description |
---|---|
--raw | use raw output |
--quiet | stop prompting updates |
--password <password> | password used to encrypt the wallet (unsafe) |
--wallet-file <walletFileName> | specify the name of the wallet file to use |
--wallet-address <walletAddress> | specify the address of the wallet to use |
--keystoredir <path> | specify the wallet directory <"global"|"local"|custom> |
--chain <name> | chain name from "chain.json" |
--force-update | update if already exists |
--secret-path <secretPath> | push the secret from a file |
--tee-framework <name> | specify the TEE framework to use |
Alias: check-secret
check if a secret exists in the secret management service
Usage:
iexec result check-encryption-key [address] [options]
Options:
option | description |
---|---|
--raw | use raw output |
--quiet | stop prompting updates |
--password <password> | password used to encrypt the wallet (unsafe) |
--wallet-file <walletFileName> | specify the name of the wallet file to use |
--wallet-address <walletAddress> | specify the address of the wallet to use |
--keystoredir <path> | specify the wallet directory <"global"|"local"|custom> |
--chain <name> | chain name from "chain.json" |
--tee-framework <name> | specify the TEE framework to use |
manage ENS names
Usage:
iexec ens <command> [options]
Commands:
resolve an ENS name to an address
Usage:
iexec ens resolve <name> [options]
Options:
option | description |
---|---|
--raw | use raw output |
--quiet | stop prompting updates |
--chain <name> | chain name from "chain.json" |
lookup for the ENS name of an address
Usage:
iexec ens lookup <address> [options]
Options:
option | description |
---|---|
--raw | use raw output |
--quiet | stop prompting updates |
--chain <name> | chain name from "chain.json" |
find the the owner address of an ENS name
Usage:
iexec ens get-owner <name> [options]
Options:
option | description |
---|---|
--raw | use raw output |
--quiet | stop prompting updates |
--chain <name> | chain name from "chain.json" |
register an ENS if needed and setup both ENS resolution and reverse resolution
Usage:
iexec ens register <label> [options]
Options:
option | description |
---|---|
--raw | use raw output |
--quiet | stop prompting updates |
--password <password> | password used to encrypt the wallet (unsafe) |
--wallet-file <walletFileName> | specify the name of the wallet file to use |
--wallet-address <walletAddress> | specify the address of the wallet to use |
--keystoredir <path> | specify the wallet directory <"global"|"local"|custom> |
--chain <name> | chain name from "chain.json" |
--force | force perform action without prompting user |
--gas-price <amount unit...> | set custom gas price for transactions (default unit wei) |
--confirms <blockCount> | set custom block count to wait for transactions confirmation (default 1 block) |
--domain <domain> | use the specified ENS domain (default users.iexec.eth )- if the ENS name (label.domain) is not owned by the user, the domain must be controlled by a FIFS registrar - if the ENS name (label.domain) is already owned by the user, the registration will be skipped |
--for <address> | register for an owned iExec app, dataset or workerpool |
manage iExec categories
Usage:
iexec category <command> [options]
Commands:
init a new category
Usage:
iexec category init [options]
Options:
option | description |
---|---|
--raw | use raw output |
--quiet | stop prompting updates |
create a new category
Usage:
iexec category create [options]
Options:
option | description |
---|---|
--raw | use raw output |
--quiet | stop prompting updates |
--password <password> | password used to encrypt the wallet (unsafe) |
--wallet-file <walletFileName> | specify the name of the wallet file to use |
--wallet-address <walletAddress> | specify the address of the wallet to use |
--keystoredir <path> | specify the wallet directory <"global"|"local"|custom> |
--chain <name> | chain name from "chain.json" |
--gas-price <amount unit...> | set custom gas price for transactions (default unit wei) |
--confirms <blockCount> | set custom block count to wait for transactions confirmation (default 1 block) |
show category details
Usage:
iexec category show <index> [options]
Options:
option | description |
---|---|
--raw | use raw output |
--quiet | stop prompting updates |
--chain <name> | chain name from "chain.json" |
count protocol categories
Usage:
iexec category count [options]
Options:
option | description |
---|---|
--raw | use raw output |
--quiet | stop prompting updates |
--chain <name> | chain name from "chain.json" |
show iExec contracts addresses
Usage:
iexec info [options]
Options:
option | description |
---|---|
--raw | use raw output |
--quiet | stop prompting updates |
--chain <name> | chain name from "chain.json" |
To write on the blockchain, prove their identity and manage their assets, iExec's users need a wallet.
Wallet files are generated by iexec init and iexec wallet commands and stored in the Ethereum keystore.
The keystore location depends on your OS:
- Linux : ~/.ethereum/keystore
- Mac: ~/Library/Ethereum/keystore
- Windows: ~/AppData/Roaming/Ethereum/keystore
The iexec.json
file, located in every iExec project, describes the parameters used when creating a [app|dataset|category|workerpool], or when signing an order.
{
"app": {
"owner": "0xF048eF3d7E3B33A465E0599E641BB29421f7Df92",
"name": "VanityGen",
"type": "DOCKER",
"multiaddr": "registry.hub.docker.com/iexechub/vanitygen:1.0.0",
"checksum": "0x762a451c05e0d8097b35d6376e748798b5dc6a13290439cf67d5202f7c6f695f"
},
"dataset": {
"owner": "0xF048eF3d7E3B33A465E0599E641BB29421f7Df92",
"name": "my-dataset",
"multiaddr": "/ipfs/QmW2WQi7j6c7UgJTarActp7tDNikE4B2qXtFCfLPdsgaTQ",
"checksum": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
"workerpool": {
"owner": "0xF048eF3d7E3B33A465E0599E641BB29421f7Df92",
"description": "my workerpool"
},
"category": {
"name": "CAT1",
"description": "my category N°1",
"workClockTimeRef": 100
},
"order": {
"apporder": {
"app": "0x0000000000000000000000000000000000000000",
"appprice": "0",
"volume": "1",
"tag": "0x0000000000000000000000000000000000000000000000000000000000000000",
"datasetrestrict": "0x0000000000000000000000000000000000000000",
"workerpoolrestrict": "0x0000000000000000000000000000000000000000",
"requesterrestrict": "0x0000000000000000000000000000000000000000"
},
"datasetorder": {
"dataset": "0x0000000000000000000000000000000000000000",
"datasetprice": "0",
"volume": "1",
"tag": "0x0000000000000000000000000000000000000000000000000000000000000000",
"apprestrict": "0x0000000000000000000000000000000000000000",
"workerpoolrestrict": "0x0000000000000000000000000000000000000000",
"requesterrestrict": "0x0000000000000000000000000000000000000000"
},
"workerpoolorder": {
"workerpool": "0x0000000000000000000000000000000000000000",
"workerpoolprice": "0",
"volume": "1",
"category": "1",
"trust": "100",
"tag": "0x0000000000000000000000000000000000000000000000000000000000000000",
"apprestrict": "0x0000000000000000000000000000000000000000",
"datasetrestrict": "0x0000000000000000000000000000000000000000",
"requesterrestrict": "0x0000000000000000000000000000000000000000"
},
"requestorder": {
"app": "0x0000000000000000000000000000000000000000",
"appmaxprice": "0",
"dataset": "0x0000000000000000000000000000000000000000",
"datasetmaxprice": "0",
"workerpool": "0x0000000000000000000000000000000000000000",
"workerpoolmaxprice": "0",
"volume": "1",
"category": "1",
"trust": "100",
"tag": "0x0000000000000000000000000000000000000000000000000000000000000000",
"beneficiary": "0x0000000000000000000000000000000000000000",
"callback": "0x0000000000000000000000000000000000000000",
"params": "{ \"iexec_args\": \"--help\" }"
}
}
}
The chain.json
file, located in every iExec project, describes the parameters used when communicating with ethereum nodes and iExec Secret Management Services. They are ordered by chain name, accessible by using the --chain <chainName>
option for each command of the SDK.
default
set the default chain used by the SDK cli.chains
set the available chains- optional key
host
set the url of the ethereum node used by the SDK cli on each chain (overwrite default value). - optional key
hub
set the address of the hub used by the SDK cli on each chain (overwrite default value). - optional key
sms
set the url of the Secret Management Service used by the SDK cli on each chain (overwrite default value), this key accepts a string or a mapping TEE framework - SMS url. - optional key
resultProxy
set the url of the Result Proxy used by the SDK cli on each chain (overwrite default value). - optional key
iexecGateway
set the url of the iexec marketplace gateway used by the SDK cli on each chain (overwrite default value). - optional key
ipfsGateway
set the url of the IPFS gateway used by the SDK cli on each chain (overwrite default value). - optional key
pocoSubgraph
set the url of the PoCo subgraph used by the SDK cli on each chain (overwrite default value). - optional key
voucherSubgraph
set the url of the voucher subgraph used by the SDK cli on each chain (overwrite default value). - optional key
bridge
set the bridge used by the SDK cli when working with bridged networks (sidechain).bridge.contract
set the address of the RLC bridge on the chain,bridge.bridgedChainName
set the reference to the bridged network. - optional key
voucherHub
set the address of the voucher hub contract used by the SDK cli on each chain (overwrite default value). - optional key
native
specify whether or not the chain native token is RLC (overwrite default value: chain value orfalse
). - optional key
useGas
specify whether or not the chain requires to spend gas to send a transaction (overwrite default value: chain value ortrue
).
- optional key
- optional key
providers
set the backends for public chains- optional key
alchemy
set Alchemy API Token - optional key
etherscan
set Etherscan API Token - optional key
infura
set INFURA Project ID or ProjectID and Project Secret - optional key
quorum
set minimum number of backends that must agree before forwarding blockchain responses
- optional key
{
"default": "bellecour",
"chains": {
"dev": {
"host": "http://localhost:8545",
"id": "65535",
"sms": {
"scone": "http://localhost:5000"
},
"resultProxy": "http://localhost:8089",
"ipfsGateway": "http://localhost:8080",
"hub": "0xC129e7917b7c7DeDfAa5Fff1FB18d5D7050fE8ca",
"bridge": {
"contract": "0x1e32aFA55854B6c015D284E3ccA9aA5a463A1418",
"bridgedChainName": "dev-sidechain"
}
},
"dev-sidechain": {
"host": "http://localhost:18545",
"id": "123456",
"sms": {
"scone": "http://localhost:15000"
},
"resultProxy": "http://localhost:18089",
"ipfsGateway": "http://localhost:18080",
"native": true,
"useGas": false,
"hub": "0xC129e7917b7c7DeDfAa5Fff1FB18d5D7050fE8ca",
"bridge": {
"contract": "0x1e32aFA55854B6c015D284E3ccA9aA5a463A1418",
"bridgedChainName": "development"
}
},
"mainnet": {},
"bellecour": {}
},
"providers": {
"alchemy": "ALCHEMY_API_KEY",
"etherscan": "ETHERSCAN_API_KEY",
"infura": {
"projectId": "INFURA_PROJECT_ID",
"projectSecret": "INFURA_PROJECT_SECRET"
},
"quorum": 1
}
}
The deployed.json
file, located in iExec project, locally stores your latest deployed resources address. These address are used when you run a command without specifying a resource address (example: iexec app show
will show the app in deployed.json
).
{
"app": {
"42": "0xa760FEfAd0a38D494890501120cB79f5EEAFeE28"
},
"workerpool": {
"42": "0xFb346A453C4D34AbA0038c274D1bd3C98099962c"
},
"dataset": {
"42": "0xB9c7647ECd48d795A9031d6fe8292C13E73372F7"
}
}
The orders.json
file, located in iExec project, locally stores your latest signed orders. This file is used when you publish an order on the Marketplace and when you fill orders without specified orders from the Marketplace.
{
"42": {
"apporder": {
"app": "0x0000000000000000000000000000000000000000",
"appprice": "0",
"volume": "1",
"tag": "0x0000000000000000000000000000000000000000000000000000000000000000",
"datasetrestrict": "0x0000000000000000000000000000000000000000",
"workerpoolrestrict": "0x0000000000000000000000000000000000000000",
"requesterrestrict": "0x0000000000000000000000000000000000000000",
"salt": "0x0000000000000000000000000000000000000000000000000000000000000000",
"sign": "0x"
},
"datasetorder": {
"dataset": "0x0000000000000000000000000000000000000000",
"datasetprice": "0",
"volume": "1",
"tag": "0x0000000000000000000000000000000000000000000000000000000000000000",
"apprestrict": "0x0000000000000000000000000000000000000000",
"workerpoolrestrict": "0x0000000000000000000000000000000000000000",
"requesterrestrict": "0x0000000000000000000000000000000000000000",
"salt": "0x0000000000000000000000000000000000000000000000000000000000000000",
"sign": "0x"
},
"workerpoolorder": {
"workerpool": "0x0000000000000000000000000000000000000000",
"workerpoolprice": "0",
"volume": "1",
"category": "1",
"trust": "100",
"tag": "0x0000000000000000000000000000000000000000000000000000000000000000",
"apprestrict": "0x0000000000000000000000000000000000000000",
"datasetrestrict": "0x0000000000000000000000000000000000000000",
"requesterrestrict": "0x0000000000000000000000000000000000000000",
"salt": "0x0000000000000000000000000000000000000000000000000000000000000000",
"sign": "0x"
},
"requestorder": {
"app": "0x0000000000000000000000000000000000000000",
"appmaxprice": "0",
"dataset": "0x0000000000000000000000000000000000000000",
"datasetmaxprice": "0",
"workerpool": "0x0000000000000000000000000000000000000000",
"workerpoolmaxprice": "0",
"volume": "1",
"category": "1",
"trust": "100",
"tag": "0x0000000000000000000000000000000000000000000000000000000000000000",
"beneficiary": "0x0000000000000000000000000000000000000000",
"callback": "0x0000000000000000000000000000000000000000",
"params": "--help",
"requester": "0x0000000000000000000000000000000000000000",
"salt": "0x0000000000000000000000000000000000000000000000000000000000000000",
"sign": "0x"
}
}
}
This folder is created when running iexec result generate-encryption-keypair
or iexec dataset init --tee
and is intended to store credentials generated by the iexec SDK CLI.
This folder stores the key pair to use for result encryption and decryption.
A key pair is generated when running iexec result generate-encryption-keypair
Public keys name follow the pattern userAddress_key.pub , this key is shared with the workers when running iexec result push-encryption-key
Private keys name follow the pattern userAddress_key this should never be shared with third party, the private key is used by the SDK CLI to decrypt a result when running iexec result decrypt
.
This folder stores the AES keys used for dataset encryption.
A key is generated for each dataset file when running iexec dataset encrypt
.
The key file is named after the dataset file name, last key generated is also stored in ./secrets/datasets/dataset.key
to be used as default secret to share with workers when running iexec dataset push-secret
.
This folder is created when running iexec dataset init --tee
and is intended to store datasets files.
Paste your original dataset files in this folder and run iexec dataset encrypt
to encrypt them.
This folder stores the encrypted datasets files.
An encrypted dataset file is created for each dataset file when running iexec dataset encrypt
.
The encrypted dataset file is named after the dataset file name.
The encrypted dataset files must be upload on a public file system and referenced in multiaddr when running iexec dataset deploy
.
If your program is not written in javascript, your last option to use the SDK would be to spawn it as a separate process (sometimes called FORK operation). After each SDK run you should check the exit code returned by the SDK to know if the operation was successful or not echo $?
:
- 0 = successful
- 1 = error
Finally, you could choose to parse the SDK stdout/stderr to access more information. Use the global option --raw to get json formatted output.
ex:
iexec wallet show --raw &> out.json
iexec wallet show --raw | jq .
Warning:
- The stdout/stderr is subject to changes (this is what makes this solution brittle)
- The node and docker version have some slight differences in their stdout/stderr