@@ -67,275 +67,6 @@ Ethereum wallet. See iExec SDK documentation
6767
6868:::
6969
70- ## Initialize your iExec project
71-
72- Create a new folder for your iExec project and initialize the project:
73-
74- ``` bash
75- mkdir ~ /iexec-projects
76- cd ~ /iexec-projects
77- iexec init --skip-wallet
78- ```
79-
80- ::: info
81-
82- The iExec SDK creates the minimum configuration files:
83-
84- - ` iexec.json ` contains the project configuration
85- - ` chain.json ` contains the blockchain connection configuration
86- - use ` --skip-wallet ` to skip wallet creation as we already created it
87-
88- :::
89-
90- You can now connect to the desired supported blockchain. In the following steps,
91- the tutorial uses the chosen blockchain to deploy and run your iExec app. See
92- the
93- [ supported blockchains] ( /get-started/tooling-and-explorers/blockchain-explorer )
94- for a full list.
95-
96- You can now check your wallet content:
97-
98- ``` bash
99- iexec wallet show
100- ```
101-
102- ## Deploy your app on iExec
103-
104- iExec enables decentralized deployment of dockerized applications. The
105- applications deployed on iExec are Smart Contracts identified by their Ethereum
106- address and referencing a public docker image. Each iExec app has an owner who
107- can set the execution permissions on iExec platform.
108-
109- Let's deploy an iExec app!
110-
111- Initialize a new app
112-
113- ``` bash
114- iexec app init
115- ```
116-
117- The iExec SDK writes the minimum app configuration in ` iexec.json `
118-
119- | ** key** | ** description** |
120- | --------- | --------------------------------------------------------------------------- |
121- | owner | app owner ethereum address \( default your wallet address\) |
122- | name | name of the app |
123- | type | type of app \( "DOCKER" for docker container\) |
124- | multiaddr | download URI of the app \( a public docker registry\) |
125- | checksum | checksum of the app \( "0x" + docker image digest\) |
126- | mrenclave | app fingerprint used for confidential computing use cases \( default empty\) |
127-
128- ::: info
129-
130- The default app is the public docker image
131- [ iexechub/python-hello-world] ( https://hub.docker.com/repository/docker/iexechub/python-hello-world ) .
132-
133- Given an input string, the app generates an ASCII art greeting.
134-
135- :::
136-
137- You can deploy this app on iExec, it will run out of the box. When you are
138- confident with iExec concept, you can read
139- [ Build and Test an iApp] ( ../build-&-test ) and learn how to setup your own app on
140- iExec.
141-
142- You will now deploy your app on iExec, this will be your first transaction on
143- the blockchain:
144-
145- ``` bash twoslash
146- iexec app deploy --chain arbitrum-mainnet
147- ```
148-
149- ::: tip
150-
151- While running ` iexec app deploy ` you sent your first transaction on the
152- arbitrum-mainnet blockchain.
153-
154- :::
155-
156- You can check your deployed apps with their index, let's check your last
157- deployed app:
158-
159- ``` bash twoslash
160- iexec app show --chain arbitrum-mainnet
161- ```
162-
163- ## Run your app on iExec
164-
165- iExec allows you to run applications on a decentralized infrastructure with
166- payment in ** RLC** tokens \( the native cryptocurrency of iExec\) .
167-
168- ::: info
169-
170- To run an app you must have enough RLC staked on your iExec account to pay for
171- the computing resources.
172-
173- Your iExec account is managed by smart contracts \( and not owned by iExec\) .
174-
175- When you request an execution the price for the task is locked from your
176- account's stake then transferred to accounts of the workers contributing to the
177- task \( read more about [ Proof of Contribution] ( /protocol/proof-of-contribution )
178- protocol\) .
179-
180- At any time you can:
181-
182- - view your balance
183-
184- ``` bash twoslash
185- iexec account show --chain arbitrum-mainnet
186- ```
187-
188- - deposit RLC from your wallet to your iExec Account
189-
190- ``` bash twoslash
191- iexec account deposit --chain arbitrum-mainnet < amount>
192- ```
193-
194- - withdraw RLC from your iExec account to your wallet \( only stake can be
195- withdrawn\)
196-
197- ``` bash twoslash
198- iexec account withdraw --chain arbitrum-mainnet < amount>
199- ```
200-
201- :::
202-
203- Currently, iExec sponsors applications running on Bellecour, and you won't have
204- to pay for the computation.
205-
206- Everything is ready to run your app!
207-
208- ``` bash twoslash
209- iexec app run --chain arbitrum-mainnet --args < your-name-here> --workerpool {{workerpoolAddress}} --watch
210- ```
211-
212- ::: info
213-
214- ` iexec app run ` allows to run an application on iExec at the market price.
215-
216- Useful options:
217-
218- - ` --args <args> ` specify the app execution arguments
219- - ` --watch ` watch execution status changes
220- - ` --workerpool <address> ` specify the workerpool to use (for example:
221- ` --workerpool {{workerpoolAddress}} ` )
222-
223- Discover more option with ` iexec app run --help `
224-
225- :::
226-
227- ::: tip Congratulation you requested the execution of
228- [ iexechub/python-hello-world] ( https://hub.docker.com/repository/docker/iexechub/python-hello-world ) .
229-
230- This will generate an ASCII art greeting with your name.
231-
232- :::
233-
234- The execution of tasks on the iExec network is asynchronous by design.
235-
236- ``` mermaid
237- graph TD
238- Requester["Requester (or anyone)"] --> |"1 . Match compatible orders \n(request, application, dataset & workerpool orders) \n & Wait result" | Blockchain
239- Blockchain --> |2 . Notify new deal with tasks to compute| Scheduler
240- Worker --> |3 . Request new task to compute| Scheduler
241- Worker --> |4 . Run application| Application[Application image]
242- Worker --> |5.a. Push result| ResultStorage["Result Storage"]
243- Worker --> |5.b. Commit result proof| Blockchain
244- Workerpool --> |6 . Publish result link or callback| Blockchain
245-
246- subgraph Workerpool
247- Scheduler
248- Worker
249- Application
250- end
251- ```
252-
253- Guaranties about completion times (fast/slow) are available in the
254- [ category section] ( /protocol/pay-per-task ) :
255-
256- - maximum deal/task time
257- - maximum computing time
258-
259- Once the task is completed copy the taskid from ` iexec app run ` output \( taskid
260- is a 32Bytes hexadecimal string\) .
261-
262- Download the result of your task
263-
264- ``` bash twoslash
265- iexec task show --chain arbitrum-mainnet < taskid> --download my-result
266- ```
267-
268- You can get your taskid with the command:
269-
270- ``` bash twoslash
271- iexec deal show --chain arbitrum-mainnet < dealid>
272- ```
273-
274- ::: info
275-
276- A task result is a zip file containing the output files of the application.
277-
278- :::
279-
280- [ iexechub/python-hello-world] ( https://hub.docker.com/repository/docker/iexechub/python-hello-world )
281- produce an text file in ` result.txt ` .
282-
283- Let's discover the result of the computation.
284-
285- ``` bash
286- unzip my-result.zip -d my-result
287- cat my-result/result.txt
288- ```
289-
290- Congratulations! You successfully executed your application on iExec!
291-
292- ## Publish your app on the iExec Marketplace
293-
294- You deployed your app on iExec and completed an execution on iExec. For now,
295- only you can request an execution of your application. The next step is to
296- publish it on the iExec Marketplace, making it available for anyone to use.
297-
298- As the owner of this application, you can define the conditions under which it
299- can be used
300-
301- ::: info
302-
303- iExec uses orders signed by the resource owner's wallet to ensure resources
304- governance.
305-
306- The conditions to use an app are defined in the ** apporder** .
307-
308- :::
309-
310- Publish a new apporder for your application.
311-
312- ``` bash twoslash
313- iexec app publish --chain arbitrum-mainnet
314- ```
315-
316- ::: info
317-
318- ` iexec app publish ` command allows to define custom access rules to the app
319- \( run ` iexec app publish --help ` to discover all the possibilities\) .
320-
321- You will learn more about orders management later, keep the apporder default
322- values for now.
323-
324- :::
325-
326- Your application is now available for everyone on iExec marketplace on the
327- conditions defined in apporder.
328-
329- You can check the published apporders for your app
330-
331- ``` bash twoslash
332- iexec orderbook app --chain arbitrum-mainnet < your app address>
333- ```
334-
335- Congratulation you just created a decentralized application! Anyone can now
336- trigger an execution of your application on the iExec decentralized
337- infrastructure.
338-
33970## What's next?
34071
34172You are now familiar with the following key iExec concepts for developers:
0 commit comments