@@ -32,28 +32,26 @@ Oracles are systems designed to solve this problem: providing the blockchain
3232with data from the real world in the most secure and robust way possible. It
3333turns out we at iExec have been working on this problem for a long time. Indeed
3434an update to an Oracle \( for example the price of a stock or the average
35- temperature for a day\) can appear as the result of a specific type of
36- off-chain computation, one that would involve calling an API and processing the
37- response to return the final result. As a result the iExec infrastructure is
38- perfectly suited to build an efficient and secure Oracle system: the iExec
39- Oracle.
35+ temperature for a day\) can appear as the result of a specific type of off-chain
36+ computation, one that would involve calling an API and processing the response
37+ to return the final result. As a result the iExec infrastructure is perfectly
38+ suited to build an efficient and secure Oracle system: the iExec Oracle.
4039
4140## The iExec solution: the Decentralized Oracle \( Oracle\)
4241
4342For two years iExec has been working on the design of the
44- [ Proof of Contribution protocol] ( /get-started/key-concepts /proof-of-contribution.md ) ,
43+ [ Proof of Contribution protocol] ( /get-started/protocol /proof-of-contribution.md ) ,
4544which provides a flexible and highly robust solution to the problem of off-chain
4645computation. At its core it is a simple Schelling game between off-chain
4746computation providers \( Workers\) : a given number of Workers are randomly chosen
48- in a much bigger group, and receive the same computation. Each of them
49- proposes a result, and the result that proposed by the biggest number of
50- workers becomes the overall computation result \( see PoCo documentation for
51- more details\) .
47+ in a much bigger group, and receive the same computation. Each of them proposes
48+ a result, and the result that proposed by the biggest number of workers becomes
49+ the overall computation result \( see PoCo documentation for more details\) .
5250
5351The PoCo is both flexible and robust: the trust level for the computation \( e.g.
54- for the Oracle update in the Oracle case\) can set arbitrarily, and
55- determines the number of replications. It also includes a coherent on-chain
56- incentive mechanism, that protects the whole system against any \( financially
52+ for the Oracle update in the Oracle case\) can set arbitrarily, and determines
53+ the number of replications. It also includes a coherent on-chain incentive
54+ mechanism, that protects the whole system against any \( financially
5755sustainable\) attack. Last but not least, it is cheap and scalable: the more
5856Workers join the iExec platform, the more secure and the cheaper running a
5957Oracle will be. iExec Oracle relies on random sampling among all the Workers on
@@ -99,18 +97,18 @@ execute between the workers of the worker-pool they manage. Each side of the
9997iExec platform \( worker-pool, computation requester\) create and sign orders
10098that describe the kind of transaction they are willing to enter \( type of
10199hardware, minimum price, etc…\) . When several orders of different types are
102- compatible they match together on the blockchain, to create a deal. Once a
103- deal creates, the scheduler that is part of the deal will choose a set of
104- workers in his workerpool to execute the task. Each worker will download the
105- dApp \( a docker container\) and run it. Upon execution of the task, each worker
106- sends back two values on the blockchain:
100+ compatible they match together on the blockchain, to create a deal. Once a deal
101+ creates, the scheduler that is part of the deal will choose a set of workers in
102+ his workerpool to execute the task. Each worker will download the dApp \( a
103+ docker container\) and run it. Upon execution of the task, each worker sends
104+ back two values on the blockchain:
107105
108106- a hash of the result.
109107- after consensus reaches, the corresponding result.
110108
111- A normal execution ends when the deal finalizes; all the stakeholders are
112- paid, and the computation requester is free to download the data pointed to by
113- the results field of the ` Deal ` object on the blockchain.
109+ A normal execution ends when the deal finalizes; all the stakeholders are paid,
110+ and the computation requester is free to download the data pointed to by the
111+ results field of the ` Deal ` object on the blockchain.
114112
115113### iExec d'Oracle: general architecture
116114
@@ -122,8 +120,8 @@ contract and a classical iExec dApp \(packaged in a docker container\).
122120
123121** Off-chain component:**
124122
125- The off-chain part of a Oracle is a classical iExec dApp, that will execute
126- on the iExec platform and replicate on several workers as part of an iExec
123+ The off-chain part of a Oracle is a classical iExec dApp, that will execute on
124+ the iExec platform and replicate on several workers as part of an iExec
127125computation deal. It contains the oracle logic, for example to query a web API
128126and process the result. Whenever an operator wishes to update the Oracle, it
129127requests a computation like in a normal iExec deal, specifying the Oracle app as
@@ -182,8 +180,8 @@ iExec will then achieve PoCo consensus on the hash of the `callback-data` value,
182180and will then submit ` callback-data` values on-chain, in the ` Task` object on
183181the ` IexecProxy` smart contract.
184182
185- Once your oracle dApp writes, you can build it into a Docker image and make
186- it available on the iExec platform as explained here.
183+ Once your oracle dApp writes, you can build it into a Docker image and make it
184+ available on the iExec platform as explained here.
187185
188186# ## The Oracle generic contract
189187
@@ -305,12 +303,12 @@ public
305303}
306304` ` `
307305
308- The PriceFeed Oracle also declares an event ` ValueChange` , that fires
309- whenever an update creates.
306+ The PriceFeed Oracle also declares an event ` ValueChange` , that fires whenever
307+ an update creates.
310308
311- - An ` updateEnv` function, that can use by the owner of the Oracle to update
312- its parameters. It simply calls the ` _iexecDoracleUpdateSettings` function of
313- its parent ` IexecDoracle` contract.
309+ - An ` updateEnv` function, that can use by the owner of the Oracle to update its
310+ parameters. It simply calls the ` _iexecDoracleUpdateSettings` function of its
311+ parent ` IexecDoracle` contract.
314312
315313` ` ` text
316314function updateEnv(
0 commit comments