Decentralized
Off-chain Computing

iExec expands the capabilities of applications running on Ethereum smart contracts, allowing for off-chain computations on-demand.

When you develop decentralized applications, you may use iExec to overcome blockchain limitations by executing more complex logic on the iExec decentralized infrastructure.

The iExec marketplace is similar in function to the oil market. It offers uniform and standardized access to computing resources, regardless of provider.

Demo Overview

iExec leverages Linux-based Docker containers to ensure the execution of your application on a decentralized infrastructure. As of now, you can only run applications as a task, this means services are not currently supported.

In this demo, the featured Dapp takes an image and applies a custom cartoon filter using the GIMP software. You can consult the source code for gimpfu-cartoon here.

Click on the button below to inspect the Dapp blockchain data :

Storage Set-up

iExec enables running apps to produce output files. By default, files are uploaded to IPFS. This platform ensures your result to be publicly accessible through a decentralized network. As you may not want all your data to be exposed to the world, iExec enables both optional result encryption or pushing results to private storage providers.

Click on the button below to initialize your remote storage repository :

Step 0

Resource Providers Orders Check

Application providers can monetize their applications and algorithms by setting a fixed-fee for each single usage of their software (also known as a “pay-per-task” model).

Developers also benefit from the freedom to adjust resource allocation. By not having to maintain any servers, developers deploy applications that can rapidly upscale/downscale based on user-demand.

The iExec protocol uses an order system to handle resource matchmaking. App providers create sell orders of their app, while workerpool managers create sell orders for their resources, allowing end users to buy Dapp executions with request orders.

Orders contain the conditions of use of a resource, they are signed by the resource owner's wallet to ensure its governance.

Click on the button below to inspect our Dapp's execution conditions :

Within the iExec network, providers of computing power are called ‘Workers’. As a worker, you can connect your machine to the network and provide computing power.

Your machine executes computational tasks in exchange for a reward in RLC tokens. Workers can be individuals or companies. Anyone owning computing resources can make them available by joining a “workerpool” and renting computing power to the network.

When a workerpool has enough workers ready to run some computation, the workerpool manager will create workerpool orders to describe the category of resources they are offering as well as the trust level used to certify the results.

Click on the button below to inspect the workerpool's execution conditions :

Step 1

Request Order Buy

A user with a request will select the offer they find most relevant from the order book. The user has a variety of choices to make, including deciding which computing resources to use and what price they are willing to pay. A user can answer a specific workerpool's ask and provide the details of the required execution.

RLC tokens will be used to access the resources provided through iExec. It is the unique method of payment between application providers, computing resources providers and data providers. In order to pay for test executions, free RLC tokens are available through the sidechain testnet faucet.

Buying a request order closes a market deal, which is an agreement between a user, a Dapp developper and a workerpool manager. This creates a deal from the request order from the Dapp and parameters that the workerpool will now have to run.

Fill the image URL parameters and click on the button below to pay for the execution of our Dapp :


Step 2

Deal Assignation

A deal is a commitment from different parties (dapp developper, workerpool and user). Once a deal is committed to on the Blockchain thanks to the iExec Marketplace, requester funds are locked to ensure all resource providers are paid for their contributions.

iExec uses the PoCo protocol, which is a set of communication patterns that the actors in the iExec platform are to follow. One fundamental aspect of PoCo is that the protocol is not an arbitration mechanism, but rather a set of on-chain contracts that ensure auditability, and that incentivize good behavior among participants (stake & reputation).

Click on the button below to inspect the agreement between participants :

Step 3

Task Execution

Now that a deal has been settled, the workerpool is in charge of providing a valid result to the user. The iexec-core software takes care of handling tasks described in a deal and will randomly distribute them to alive workers.

In order to avoid false results on a given task, workers must follow PoCo rules, which ensures that workers have not coordinated to purposively produce a fake result.

When a worker has successfully completed the task computation, it will send a commit/reveal contribution on the Blockchain without disclosing their result at this stage.

Click on the button below to inspect the contribution of the worker(s) :

Step 4

Finalization

Once a consensus is reached on the contributions made by each worker, the final result will be uploaded by workers, and the workerpool manager will be able to finalize the task. This call unlocks all stakes and rewards / penalize all actors depending on their role and contributions. At this final stage, the user is able to download the results, which contain intrinscally an auditable proof of execution.

Click on the button below to fetch the Dapp results from IPFS :