A worker will be rewarded with RLCs for every properly computed tasks.
Please note that:
your wallet must be loaded with ETH and RLC must be deposited to your iExec account in order to stake for incoming tasks.
your computer needs at least 2 CPUs.
You will find a list of workerpools at https://pools.iex.ec/
After having loaded some ETH and deposited some RLC to your iExec account, you can start your worker.
You have different ways to join a workerpool:
with a Virtual Machine
with Join-Workerpool scripts
For security reason, it is highly recommended to use the virtual machine.
The Docker containers run on top of the host kernel by design, but from the point of view of security it can be seen as a risk that needs to be mitigated. As a worker, you have no control on applications that should run on your machine.
A VM is ready to make you join the public workerpool.
Download the VM
Install Virtual Box
Get or create a wallet
Keep your wallet in a safe place, you will need it later. Same advice for your wallet password, you will need it later. Go to the 'Wallet Management' section for more information
Top up some ETH & RLC and make a RLC deposit to your iExec account
Launch the VM
To import the VM, just click on iexec-worker.ova file. You will see the “Import Virtual Appliance” window. If you only have 4GB of RAM, please change the RAM to 2,048MB in this window. Delete the previous version if you had installed any in the past. Click on the ‘Import’ button.
Double click on ‘iExec-Worker’ (or click on ‘start’).
Copy your wallet from your host computer to the VM
Open the ‘keystore’ folder, then copy/paste the content of your wallet file from your host computer into the ‘wallet.json’ file of the VM.
Start your worker
Click on the “Launch Worker” icon on the VM desktop and follow instructions.
When the worker initialization process is complete, the worker will be started and you will get something like: You worker is all set. Your worker will now be able to compute some tasks comming from the iExec network to earn some RLCs.
1 -Export your private from your wallet manager, metasmask.
2 - Install iexec sdk (password: iexec)
Right click on the desktop, and open a terminal
sudo apt-get install && sudo npm install -g iexec
3 - Import your wallet with the iExec SDK.
iexec wallet import your_private_key
4 - Launch your worker, the script will automatically use the imported wallet.
When available, click on the “Join Worker Pool” button on the top left of the dashboard page and follow instructions.
An exclusive wallet must be associated to your worker. You need N wallets if you want N workers.
Gas price on the Ethereum network is constantly changing. A high traffic could potentially increase average gas price since some people might want to get their transactions mined very fast. By taking a look at https://ethgasstation.info/, you will see a Median Gas Price (gwei) which will be different in few hours.
For each transaction, the worker will look at the current gas price and will multiply it by a K factor in order to send [cheap & slow] or [expensive & fast] transactions. You can tune that in the config of your worker. This K factor is called IEXEC_GAS_PRICE_MULTIPLIER and it default value is 1.3 (which means a little faster than some other guys).
To avoid sending super expensive transactions, you can cap the value NETWORK_GAS_PRICE * IEXEC_GAS_PRICE_MULTIPLIER. This cap value is called IEXEC_GAS_PRICE_CAP and the default value is 22Gwei (you can change it too). (edited)
One Task bought by a requester will result in one to many Replicates depending on the level of trust set by the requester. For a given task, each worker involved will have it own Replicate containing the description of the task to compute inside. The whole computation of a Replicate is made of several stages. Each stage completed by a worker will result to an update of its Replicate status.
Here are the different possible statuses for a replicate:
CREATED: A new replicate is assigned to your worker just after it asked for new one
RUNNING: Your worker confirms is going to work on this replicate
APP_DOWNLOADING: Your worker is downloaing the application
APP_DOWNLOADED: The download of the application is completed
APP_DOWNLOAD_FAILED: The download of the application failed
DATA_DOWNLOADING: Your worker is downloaing the dataset
DATA_DOWNLOADED: The download of the dataset is completed
DATA_DOWNLOAD_FAILED: The download of the dataset failed
COMPUTING: Your worker is computing the task
COMPUTED: The computation is completed
COMPUTE_FAILED: The computation failed
CAN_CONTRIBUTE: Your worker can contribute the fingerprint of the computed result on chain
CANT_CONTRIBUTE_SINCE_STAKE_TOO_LOW: Your worker hasn’t enought RLC in its account to contribute (30% of the task in RLC by default)
CANT_CONTRIBUTE_SINCE_TASK_NOT_ACTIVE: The task is not active on chain. This status usually happens when different workers have contributed on the same task but the consensus has been reached before your contribution.
CANT_CONTRIBUTE_SINCE_AFTER_DEADLINE: The deadline for the contribution is reached
CANT_CONTRIBUTE_SINCE_CONTRIBUTION_ALREADY_SET: Your worker already contributed for this task
CONTRIBUTING: Your worker sent the “contribute(..)” transaction (fingerprint of the result) on chain
CONTRIBUTE_FAILED: The contribute transaction failed
CONTRIBUTED: Your worker has contributed on chain
CANT_REVEAL: Your worker cant reveal the proof that it is the owner of the fingerprint of the computed result
REVEALING: Your worker sent the “reveal(..)” transactions (proof that he is the owner of the fingerprint of the result)
REVEALED: Your worker has revealed the proof on chain
REVEAL_FAILED: The reveal transaction failed
RESULT_UPLOAD_REQUESTED: Your worker has been called for uploading the result to a remote filesystem
RESULT_UPLOAD_REQUEST_FAILED: Your worker did not accept to be called for uploading the result
RESULT_UPLOADING: Your worker is uploading the result
RESULT_UPLOADED: The result is uploaded (to an iExec Result Repository or to IPFS)
RESULT_UPLOAD_FAILED: The upload of the result failed
COMPLETED: The whole task is completed meaning the task is finalized. You have been rewarded if you are part of the consensus
REVEAL_TIMEOUT: Your worker took too long to reveal its proof (more than 2 period after the consensus)
WORKER_LOST: Your worker didn’t ping the iexec-core scheduler for a while. It is considered as out for this task
ABORTED_ON_CONSENSUS_REACHED: The consensus is reached but you are not part of it
ABORTED_ON_CONTRIBUTION_TIMEOUT: Your worker took too long to contribute (7 periods after the purchase of the task)
FAILED: Your worker failed to participate to the task
OUT_OF_GAS: Your worker needs some ETH, please refill its wallet
RECOVERING: Your worker has been stop, it is starting back from where it stop
As a worker you need SGX-compatible hardware if you want to perform TEE-based computations.
An unofficial list of SGX enabled CPU is available here. Basically if your computer was built after 2016 it should be good. In addition to an SGX-compatible CPU you also need to make sure the BIOS of your machine support the SGX extension. Most mainstream brand of computer (Dell, HP,…) do. If the SGX option is available in your BIOS then you need to enable it.
The next step is to install the drivers from Intel for the SGX extension. This can be done in one command line using the following script (on Ubuntu):
# curl -fssl https://raw.githubusercontent.com/SconeDocs/SH/master/install_sgx_driver.sh | bash
That’s it! Now you can register at your scheduler as an SGX compatible worker, and you’ll soon receive requests for SGX jobs.