diff --git a/.vitepress/config.ts b/.vitepress/config.ts index b893e81..3899e22 100644 --- a/.vitepress/config.ts +++ b/.vitepress/config.ts @@ -103,6 +103,7 @@ export default withMermaid( { text: 'Get Started', link: '/get-started/welcome' }, { text: 'Guides', link: '/guides/build-iapp/build-&-test' }, { text: 'References', link: '/references/dataProtector' }, + { text: 'Protocol', link: '/protocol/proof-of-contribution' }, { component: 'ChainSelector', props: { diff --git a/.vitepress/sidebar.ts b/.vitepress/sidebar.ts index a14553b..4f0e1b1 100644 --- a/.vitepress/sidebar.ts +++ b/.vitepress/sidebar.ts @@ -102,59 +102,6 @@ export function getSidebar() { }, ], }, - { - text: 'PROTOCOL', - items: [ - { - text: '๐Ÿ›ก๏ธ Proof of Contribution', - link: '/get-started/protocol/proof-of-contribution', - }, - { - text: 'Pay Per Task Model', - link: '/get-started/protocol/pay-per-task', - }, - { - text: 'Oracle', - link: '/get-started/protocol/oracle', - }, - { - text: 'Workers & Workerpools', - collapsed: true, - items: [ - { - text: 'Worker Quick Start', - link: '/get-started/protocol/worker/quick-start', - }, - { - text: 'Manage Workerpool Access', - link: '/get-started/protocol/worker/manage-access', - }, - ], - }, - { - text: '๐Ÿ”’ TEE Technology', - collapsed: true, - items: [ - { - text: 'Introduction to TEE Technologies', - link: '/get-started/protocol/tee/introduction', - }, - { - text: 'Intel SGX Technology', - link: '/get-started/protocol/tee/intel-sgx', - }, - { - text: 'Intel TDX Technology', - link: '/get-started/protocol/tee/intel-tdx', - }, - { - text: 'SGX vs TDX Comparison', - link: '/get-started/protocol/tee/sgx-vs-tdx', - }, - ], - }, - ], - }, ], '/guides/': [ { @@ -203,20 +150,20 @@ export function getSidebar() { collapsed: true, items: [ { - text: 'Quick Start for Developers', - link: '/guides/build-iapp/advanced/quick-start-for-developers', + text: 'Quick Start', + link: '/guides/build-iapp/advanced/quick-start', }, { text: 'Build your first application', - link: '/guides/build-iapp/advanced/your-first-app', + link: '/guides/build-iapp/advanced/build-your-first-iapp', }, { text: 'Build your first SGX app', - link: '/guides/build-iapp/advanced/create-your-first-sgx-app', + link: '/guides/build-iapp/advanced/build-your-first-sgx-iapp', }, { text: 'End-to-end Encryption', - link: '/guides/build-iapp/advanced/end-to-end-encryption', + link: '/guides/build-iapp/advanced/protect-the-result', }, { text: 'Access Confidential Assets', @@ -224,7 +171,7 @@ export function getSidebar() { }, { text: 'Build Intel TDX app', - link: '/guides/build-iapp/advanced/create-your-first-tdx-app', + link: '/guides/build-iapp/advanced/build-your-first-tdx-iapp', }, ], }, @@ -586,5 +533,60 @@ export function getSidebar() { link: '/references/glossary', }, ], + '/protocol/': [ + { + text: 'PROTOCOL', + items: [ + { + text: '๐Ÿ›ก๏ธ Proof of Contribution', + link: '/protocol/proof-of-contribution', + }, + { + text: 'Pay Per Task Model', + link: '/protocol/pay-per-task', + }, + { + text: 'Oracle', + link: '/protocol/oracle', + }, + { + text: 'Workers & Workerpools', + collapsed: true, + items: [ + { + text: 'Worker Quick Start', + link: '/protocol/worker/quick-start', + }, + { + text: 'Manage Workerpool Access', + link: '/protocol/worker/manage-access', + }, + ], + }, + { + text: '๐Ÿ”’ TEE Technology', + collapsed: true, + items: [ + { + text: 'Introduction to TEE Technologies', + link: '/protocol/tee/introduction', + }, + { + text: 'Intel SGX Technology', + link: '/protocol/tee/intel-sgx', + }, + { + text: 'Intel TDX Technology', + link: '/protocol/tee/intel-tdx', + }, + { + text: 'SGX vs TDX Comparison', + link: '/protocol/tee/sgx-vs-tdx', + }, + ], + }, + ], + }, + ], } as DefaultTheme.Sidebar; } diff --git a/src/get-started/helloWorld/1-overview.md b/src/get-started/helloWorld/1-overview.md index 4863a05..692adc8 100644 --- a/src/get-started/helloWorld/1-overview.md +++ b/src/get-started/helloWorld/1-overview.md @@ -70,7 +70,7 @@ lifecycle - during storage, transfer, and even while **being processed by applications.** This is made possible thanks to -Trusted +Trusted Execution Environment (TEE) and Confidential Computing technologies. diff --git a/src/get-started/helloWorld/3-buildIApp.md b/src/get-started/helloWorld/3-buildIApp.md index 6ab83a9..32da000 100644 --- a/src/get-started/helloWorld/3-buildIApp.md +++ b/src/get-started/helloWorld/3-buildIApp.md @@ -394,8 +394,8 @@ iapp run To sum up the process, we take the **iApp** and wrap it in the iExec framework, allowing it to run securely in a **Trusted Execution Environment (TEE)** for -**confidential computing**. If you want to explore further, you can check the -protocol documentation [here](https://protocol.docs.iex.ec/). +**confidential computing**. To learn more, check out the +[advanced iApp build documentation](/guides/build-iapp/advanced/quick-start).

๐ŸŽ‰ Congratulations! You've successfully deployed and run your first iApp on iExec. This is a significant milestone - your application is now ready to securely process confidential data in a trusted environment.

diff --git a/src/guides/build-iapp/advanced/access-confidential-assets.md b/src/guides/build-iapp/advanced/access-confidential-assets.md index 4518cd9..fce0ea7 100644 --- a/src/guides/build-iapp/advanced/access-confidential-assets.md +++ b/src/guides/build-iapp/advanced/access-confidential-assets.md @@ -1,17 +1,17 @@ --- -title: Access Confidential Assets from Your App +title: Access Confidential Assets from Your iApp description: Learn how to access confidential assets including secrets, protected data, and requester secrets from your iExec application using the Secret Management Service --- -# Access confidential assets from your app +# Access confidential assets from your iApp ::: warning Before going any further, make sure you managed to -[Build your first application with Scone framework](create-your-first-sgx-app.md). +[Build your first application with Scone framework](build-your-first-sgx-iapp.md). ::: @@ -53,8 +53,8 @@ graph TD ProtectedDataOwn[ProtectedData owner] -->|1.c. Push secret| SMS Req --> |2 . Buy task| Chain Chain[Blockchain] --> |3 . Notify task to compute| Worker[Worker/Workerpool] - Worker --> |4 . Launch TEE application| App[TEE application] - App --> |5.a. Get secrets for task| SMS + Worker --> |4 . Launch TEE application| iApp[TEE application] + iApp --> |5.a. Get secrets for task| SMS SMS --> |5.b. Check authorization for secrets| Chain ``` diff --git a/src/guides/build-iapp/advanced/your-first-app.md b/src/guides/build-iapp/advanced/build-your-first-iapp.md similarity index 81% rename from src/guides/build-iapp/advanced/your-first-app.md rename to src/guides/build-iapp/advanced/build-your-first-iapp.md index 0fc9a29..ced9833 100644 --- a/src/guides/build-iapp/advanced/your-first-app.md +++ b/src/guides/build-iapp/advanced/build-your-first-iapp.md @@ -1,14 +1,14 @@ --- -title: Build Your First Application +title: Build Your First iApp description: - In this section we will show you how you can create a Docker dapp over the - iExec infrastructure. + In this section we will show you how you can create an iApp over the iExec + infrastructure. --- -# Build your first application +# Build your first iApp -> In this section we will show you how you can create a Docker dapp over the -> iExec infrastructure. +> In this section we will show you how you can create an iApp (iExec +> confidential application) over the iExec infrastructure. ::: tip Prerequisites @@ -16,15 +16,14 @@ description: client. - [Dockerhub](https://hub.docker.com/) account. - [iExec SDK](https://www.npmjs.com/package/iexec) 8.0.0 or higher. - [Install the iExec SDK](quick-start-for-developers.md#install-the-iexec-sdk). -- [Quickstart](quick-start-for-developers.md) tutorial completed +- [Quickstart](./quick-start.md) tutorial completed ::: -In this guide, we will prepare an iExec app based on an existing docker image +In this guide, we will prepare an iExec iApp based on an existing docker image and we will run it on iExec decentralized infrastructure. -## Understand what is an iExec decentralized application? +## Understand what is an iExec decentralized application (iApp)? iExec leverage [Docker](https://www.docker.com/why-docker) containers to ensure the execution of your application on a decentralized infrastructure. iExec @@ -46,19 +45,19 @@ supports Linux-based docker images. Today you can run any application as a task. This means services are not supported for now. -## Build your app +## Build your iApp Create the folder tree for your application in `~/iexec-projects/`. ```bash cd ~/iexec-projects -mkdir hello-world-app -cd hello-world-app +mkdir hello-world-iapp +cd hello-world-iapp mkdir src touch Dockerfile ``` -### Write the app +### Write the iApp ::: warning @@ -137,7 +136,7 @@ application. Execution logs are accessible by: ::: -### Dockerize your app +### Dockerize your iApp **Copy the following content** in `Dockerfile` . @@ -192,7 +191,7 @@ way to name the image to reuse it in the next steps. **Congratulations you built your first docker image for iExec!** -## Test your app locally +## Test your iApp locally ### Basic test @@ -261,9 +260,9 @@ docker run \ arg1 arg2 arg3 ``` -## Test your app on iExec +## Test your iApp on iExec -### Push your app to Dockerhub +### Push your iApp to Dockerhub Login to your Dockerhub account. @@ -289,12 +288,12 @@ Push the image to Dockerhub. docker push /hello-world:1.0.0 ``` -**Congratulations, your app is ready to be deployed on iExec!** +**Congratulations, your iApp is ready to be deployed on iExec!** -### Deploy your app on iExec +### Deploy your iApp on iExec -You already learned how to deploy the default app on iExec in the -[previous tutorial](quick-start-for-developers.md). +You already learned how to deploy the default iApp on iExec in the +[previous tutorial](./quick-start.md). Go back to the `iexec-project` folder. @@ -302,17 +301,17 @@ Go back to the `iexec-project` folder. cd ~/iexec-projects/ ``` -You will need a few configurations in `iexec.json` to deploy your app: +You will need a few configurations in `iexec.json` to deploy your iApp: -- Replace app **name** with your application name \(display only\) -- Replace app **multiaddr** with your app image download URI \(should looks like - `docker.io//hello-world:1.0.0`\) -- Replace app **checksum** with your application image checksum \(see tip +- Replace iApp **name** with your application name \(display only\) +- Replace iApp **multiaddr** with your iApp image download URI \(should looks + like `docker.io//hello-world:1.0.0`\) +- Replace iApp **checksum** with your application image checksum \(see tip below\) ::: info -The checksum of your app is the sha256 digest of the docker image prefixed with +The checksum of your iApp is the sha256 digest of the docker image prefixed with `0x` , you can use the following command to get it. ```bash @@ -321,19 +320,19 @@ docker pull /hello-world:1.0.0 | grep "Digest: sha256:" | sed ' ::: -Deploy your app on iExec +Deploy your iApp on iExec ```bash twoslash iexec app deploy --chain {{chainName}} ``` -Verify the deployed app \(name, multiaddr, checksum, owner\) +Verify the deployed iApp \(name, multiaddr, checksum, owner\) ```bash twoslash iexec app show --chain {{chainName}} ``` -### Run your app on iExec +### Run your iApp on iExec ```bash twoslash iexec app run --chain {{chainName}} --workerpool {{workerpoolAddress}} --watch @@ -343,19 +342,19 @@ iexec app run --chain {{chainName}} --workerpool {{workerpoolAddress}} --watch **Using arguments:** -You can pass arguments to the app using `--args ` option. +You can pass arguments to the iApp using `--args ` option. -With `--args "dostuff --with-option"` the app will receive +With `--args "dostuff --with-option"` the iApp will receive `["dostuff", "--with-option"]` as process args. **Using input files:** -You can pass input files to the app using `--input-files ` option. +You can pass input files to the iApp using `--input-files ` option. With `--input-files https://example.com/file-A.txt,https://example.com/file-B.zip` -the iExec worker will download the files before running the app in `IEXEC_IN`, -and let the app access them through variables: +the iExec worker will download the files before running the iApp in `IEXEC_IN`, +and let the iApp access them through variables: - `file-A.txt` as`IEXEC_INPUT_FILE_NAME_1` - `file-B.zip` as`IEXEC_INPUT_FILE_NAME_2` @@ -370,9 +369,9 @@ iexec task show --chain {{chainName}} --download my-app-result \ && unzip my-app-result.zip -d my-app-result ``` -**Congratulations your app successfully ran on iExec!** +**Congratulations your iApp successfully ran on iExec!** -## Manage your app's output +## Manage your iApp's output iExec enables running apps producing output files, you will need a place for storing your apps outputs. @@ -390,12 +389,12 @@ the[iExec SDK](https://github.com/iExecBlockchainComputing/iexec-sdk). ::: -## Access to app and task logs on iExec +## Access to iApp and task logs on iExec Sometimes things don't work out right the first time and you may need to [Debug your tasks](/guides/build-iapp/debugging). -## Publish your app on the iExec marketplace +## Publish your iApp on the iExec marketplace ```bash twoslash iexec app publish --chain {{chainName}} @@ -405,14 +404,14 @@ iexec app publish --chain {{chainName}} ## What's next? -In this tutorial you learned about the key concepts for building an app on +In this tutorial you learned about the key concepts for building an iApp on iExec: -- iExec app inputs and outputs -- iExec app must produce a `computed.json` file \(required for the proof of +- iExec iApp inputs and outputs +- iExec iApp must produce a `computed.json` file \(required for the proof of execution\) -- using docker to package your app with all its dependencies -- testing an iExec app locally +- using docker to package your iApp with all its dependencies +- testing an iExec iApp locally - publishing on dockerhub diff --git a/src/references/web3telegram.md b/src/references/web3telegram.md index b203490..2707c18 100644 --- a/src/references/web3telegram.md +++ b/src/references/web3telegram.md @@ -19,8 +19,8 @@ telegram chat ID recipients through use of Ethereum addresses. iExec's protocol the telegram chat ID as a `protectedData` entity using [iExec Data Protector](/references/dataProtector). Through this mechanism, users have complete control over which applications may use their -[chat ID](/guides/use-iapp/web3-messaging#retrieve-chat-id) for sending -communications. +[chat ID](/guides/use-iapp/integrate-web3-messaging#retrieve-chat-id) for +sending communications. Sending a user a message, therefore, requires knowledge of the Ethereum address of their `protectedData` as well as an explicit authorization for your account