diff --git a/.vitepress/sidebar.ts b/.vitepress/sidebar.ts index 15f6e7b..9f81491 100644 --- a/.vitepress/sidebar.ts +++ b/.vitepress/sidebar.ts @@ -8,7 +8,7 @@ export function getSidebar() { items: [ { text: '💡 Welcome', link: '/get-started/welcome' }, { - text: '🛠️ Toolkit', + text: 'Toolkit', link: '/get-started/toolkit', }, { @@ -39,15 +39,15 @@ export function getSidebar() { ], }, { - text: '🚀 Quick Start', + text: 'Quick Start', link: '/get-started/quick-start', }, { - text: '📋 Use Cases', + text: 'Use Cases', link: '/get-started/use-cases', }, { - text: '🤖 Develop with AI', + text: 'Develop with AI', link: '/get-started/develop-with-ai', }, ], @@ -72,7 +72,7 @@ export function getSidebar() { link: '/get-started/overview/workerpool', }, { - text: '🪙 RLC Token', + text: 'RLC Token', link: '/get-started/overview/rlc', }, ], @@ -202,10 +202,6 @@ export function getSidebar() { text: 'Advanced', collapsed: true, items: [ - { - text: 'Overview', - link: '/guides/build-iapp/advanced/overview', - }, { text: 'Quick Start for Developers', link: '/guides/build-iapp/advanced/quick-start-for-developers', @@ -215,17 +211,13 @@ export function getSidebar() { link: '/guides/build-iapp/advanced/your-first-app', }, { - text: 'Build your first SGX app (SCONE)', + text: 'Build your first SGX app', link: '/guides/build-iapp/advanced/create-your-first-sgx-app', }, { text: 'End-to-end Encryption', link: '/guides/build-iapp/advanced/end-to-end-encryption', }, - { - text: 'SGX Encrypted Dataset', - link: '/guides/build-iapp/advanced/sgx-encrypted-dataset', - }, { text: 'Access Confidential Assets', link: '/guides/build-iapp/advanced/access-confidential-assets', @@ -242,11 +234,11 @@ export function getSidebar() { text: 'USE AN iAPP', items: [ { - text: '📝 Introduction', + text: 'Introduction', link: '/guides/use-iapp/introduction', }, { - text: '🚀 Getting Started', + text: 'Getting Started', link: '/guides/use-iapp/getting-started', }, { @@ -585,7 +577,7 @@ export function getSidebar() { ], }, { - text: '🔧 iExec SDK', + text: 'iExec SDK', link: '/references/sdk', }, { diff --git a/src/assets/explorer-dataset-example.png b/src/assets/explorer-dataset-example.png deleted file mode 100644 index 8041b03..0000000 Binary files a/src/assets/explorer-dataset-example.png and /dev/null differ diff --git a/src/assets/rlc/dune-dashboard.png b/src/assets/rlc/dune-dashboard.png deleted file mode 100644 index fdb858b..0000000 Binary files a/src/assets/rlc/dune-dashboard.png and /dev/null differ diff --git a/src/components/TokenSymbol.vue b/src/components/TokenSymbol.vue deleted file mode 100644 index 5778577..0000000 --- a/src/components/TokenSymbol.vue +++ /dev/null @@ -1,25 +0,0 @@ - - - diff --git a/src/get-started/overview/rlc.md b/src/get-started/overview/rlc.md index 0b6177b..ebcb51a 100644 --- a/src/get-started/overview/rlc.md +++ b/src/get-started/overview/rlc.md @@ -17,6 +17,14 @@ confidential computation requires RLC. Every piece of protected data consumed requires RLC. Every app execution requires RLC. The more builders use our tools, the more utility RLC gains in real applications. +::: tip Info + +On the iExec sidechain (Bellecour), the RLC token symbol becomes **xRLC**. xRLC +is the native token of the Bellecour chain and is used for all transactions and +payments on this network. + +::: + ## 🎯 Why RLC Matters **Stack adoption = token usage.** When developers build with iExec tools, RLC @@ -82,13 +90,6 @@ ecosystem requires RLC: - Confidential computations need RLC for execution - Staking mechanisms lock RLC, reducing circulating supply - - ## 🔄 Getting RLC You can acquire RLC tokens through several methods: @@ -150,10 +151,8 @@ Ready to dive into the iExec ecosystem? Here are the next steps: monetize your resources diff --git a/src/get-started/protocol/oracle.md b/src/get-started/protocol/oracle.md index e3a8a7d..556e049 100644 --- a/src/get-started/protocol/oracle.md +++ b/src/get-started/protocol/oracle.md @@ -1,4 +1,5 @@ --- +title: iExec Oracle description: A flexible and secure Oracle Solution --- @@ -130,7 +131,7 @@ dApp, and the parameters if applicable. The Oracle result writes in the ```bash $ cat ${IEXEC_OUT}/computed.json -{ 'callback-data': '0x48656c6c6f2c20776f726c6421'} +{ 'callback-data': '0x456def...'} ``` When the computation ends the worker will send both this `callback-data` diff --git a/src/get-started/protocol/tee/intel-sgx.md b/src/get-started/protocol/tee/intel-sgx.md index 125ef5e..f21db09 100644 --- a/src/get-started/protocol/tee/intel-sgx.md +++ b/src/get-started/protocol/tee/intel-sgx.md @@ -142,7 +142,7 @@ graph TD **Ready to build with SGX?** Check out the practical guides: -- **[Build & Deploy](/guides/build-iapp/build-&-deploy)** - Create your first - SGX application +- **[Deploy & Run](/guides/build-iapp/deploy-&-run)** - Create your first SGX + application - **[Advanced SGX Development](/guides/build-iapp/advanced/create-your-first-sgx-app)** - Deep dive into SGX development diff --git a/src/get-started/protocol/tee/intel-tdx.md b/src/get-started/protocol/tee/intel-tdx.md index d7e2fb4..1263f0b 100644 --- a/src/get-started/protocol/tee/intel-tdx.md +++ b/src/get-started/protocol/tee/intel-tdx.md @@ -144,5 +144,5 @@ graph TD **For production applications, use SGX**: -- **[Build & Deploy](/guides/build-iapp/build-&-deploy)** - Create - production-ready SGX applications +- **[Deploy & Run](/guides/build-iapp/deploy-&-run)** - Create production-ready + SGX applications diff --git a/src/get-started/protocol/tee/introduction.md b/src/get-started/protocol/tee/introduction.md index d3c35b0..ea209af 100644 --- a/src/get-started/protocol/tee/introduction.md +++ b/src/get-started/protocol/tee/introduction.md @@ -121,5 +121,5 @@ TEE technologies have evolved to address different use cases: - **[Build Intel TDX App (Experimental)](/guides/build-iapp/advanced/create-your-first-tdx-app)** - Build TDX applications with traditional deployment and iApp Generator -- **[Build & Deploy](/guides/build-iapp/build-&-deploy)** - Create your first - TEE application +- **[Deploy & Run](/guides/build-iapp/deploy-&-run)** - Create your first TEE + application diff --git a/src/get-started/protocol/tee/sgx-vs-tdx.md b/src/get-started/protocol/tee/sgx-vs-tdx.md index 43d28ab..d33bf49 100644 --- a/src/get-started/protocol/tee/sgx-vs-tdx.md +++ b/src/get-started/protocol/tee/sgx-vs-tdx.md @@ -81,5 +81,5 @@ technology** for advanced use cases. - **[Build Intel TDX App (Experimental)](/guides/build-iapp/advanced/create-your-first-tdx-app)** - Build TDX applications with traditional deployment and iApp Generator -- **[Build & Deploy](/guides/build-iapp/build-&-deploy)** - Create your first - TEE application +- **[Deploy & Run](/guides/build-iapp/deploy-&-run)** - Create your first TEE + application diff --git a/src/get-started/protocol/worker/manage-access.md b/src/get-started/protocol/worker/manage-access.md index de601f3..ce4b59b 100644 --- a/src/get-started/protocol/worker/manage-access.md +++ b/src/get-started/protocol/worker/manage-access.md @@ -41,17 +41,17 @@ iexec order init --workerpool Edit the `workerpoolorder` part in `iexec.json` to set the conditions to use your workerpool: -| key | description | -| ------------------- | ------------------------------------------------------------------------------------- | -| `workerpool` | workerpool address | -| `workerpoolprice` | price to charge the requester for each execution of the app (in nano ) | -| `volume` | number of authorized uses, each use decreases this number | -| `tag` | restrict usage to a specific runtime such as **Scone** or **Gramine** TEE frameworks | -| `category` | Order category, will define the deal `workClockTimeRef` and its deadlines | -| `trust` | Trust level of the execution, impacts the number of replicates | -| `apprestrict` | restrict the workerpool usage to a specific app (1) | -| `datasetrestrict` | restrict the workerpool usage to a specific dataset (1) | -| `requesterrestrict` | restrict the workerpool usage to a specific requester (1) | +| key | description | +| ------------------- | ------------------------------------------------------------------------------------ | +| `workerpool` | workerpool address | +| `workerpoolprice` | price to charge the requester for each execution of the app (in nano RLC) | +| `volume` | number of authorized uses, each use decreases this number | +| `tag` | restrict usage to a specific runtime such as **Scone** or **Gramine** TEE frameworks | +| `category` | Order category, will define the deal `workClockTimeRef` and its deadlines | +| `trust` | Trust level of the execution, impacts the number of replicates | +| `apprestrict` | restrict the workerpool usage to a specific app (1) | +| `datasetrestrict` | restrict the workerpool usage to a specific dataset (1) | +| `requesterrestrict` | restrict the workerpool usage to a specific requester (1) | 1. the restriction is disabled by default with 0x0000000000000000000000000000000000000000. @@ -106,7 +106,3 @@ cancel command. ```bash iexec order cancel --workerpool ``` - - diff --git a/src/get-started/protocol/worker/quick-start.md b/src/get-started/protocol/worker/quick-start.md index 340bde8..df23dab 100644 --- a/src/get-started/protocol/worker/quick-start.md +++ b/src/get-started/protocol/worker/quick-start.md @@ -14,13 +14,12 @@ The iExec Worker participates in a workerpool by computing tasks purchased by requesters on the iExec marketplace. The iExec Worker must connect to the iExec Core Scheduler of the workerpool to actively participate in the computation. -A worker will be rewarded with for every properly computed -tasks. +A worker will be rewarded with RLC for every properly computed tasks. Please note that: -- your wallet must be loaded with . Some must be - deposited to your iExec account in order to stake for incoming tasks. +- your wallet must be loaded with RLC. Some RLC must be deposited to your iExec + account in order to stake for incoming tasks. - your computer needs at least 2 CPUs. ## Start a worker @@ -34,18 +33,14 @@ configuration documentation of the For security reason, it is **highly recommended** to launch your worker in a virtual machine. -After loading some and depositing them to your iExec account, -you can start your worker. +After loading some RLC and depositing them to your iExec account, you can start +your worker. When the worker initialization process is complete, the worker will start and you will get: **Your worker is all set**. Your worker will now be able to -compute tasks from the iExec network to earn . +compute tasks from the iExec network to earn RLC. ## Wallet restriction An exclusive wallet must be associated to your worker. You need N wallets if you want N workers. - - diff --git a/src/get-started/tooling-and-explorers/bridge.md b/src/get-started/tooling-and-explorers/bridge.md index c7ac632..3479ff5 100644 --- a/src/get-started/tooling-and-explorers/bridge.md +++ b/src/get-started/tooling-and-explorers/bridge.md @@ -120,7 +120,8 @@ requiring intermediate chains or wrapped tokens. The RLC multichain bridge implementation has been thoroughly audited by [**Halborn**](https://www.halborn.com/), a leading blockchain security firm. The -audit report is accessible at [halborn.com/audits](https://halborn.com/audits). +audit report is accessible at +[halborn.com/audits](https://www.halborn.com/audits/iexec/rlc-multichain-bridge-979ae0). ### Open Source diff --git a/src/get-started/tooling-and-explorers/iexec-explorer.md b/src/get-started/tooling-and-explorers/iexec-explorer.md index af44feb..63da614 100644 --- a/src/get-started/tooling-and-explorers/iexec-explorer.md +++ b/src/get-started/tooling-and-explorers/iexec-explorer.md @@ -14,10 +14,17 @@ explore apps and protectedData—all in one powerful dashboard. +::: tip + +Before searching or exploring, make sure to select your desired network. The +Explorer displays data for the network you choose. + +::: + ## 🎯 What you Can Explore @@ -72,7 +79,7 @@ explore apps and protectedData—all in one powerful dashboard. @@ -98,7 +105,7 @@ explore apps and protectedData—all in one powerful dashboard. @@ -114,14 +121,14 @@ Browse and analyze all tasks across the iExec network: @@ -150,7 +157,7 @@ Browse and analyze all tasks across the iExec network: @@ -165,7 +172,7 @@ Explore the iExec application marketplace: @@ -182,7 +189,7 @@ Navigate the protected data landscape: @@ -195,9 +202,19 @@ Explore the decentralized computing infrastructure: - **Usage Statistics**: Analyze workerpool utilization diff --git a/src/guides/build-iapp/advanced/create-your-first-tdx-app.md b/src/guides/build-iapp/advanced/create-your-first-tdx-app.md index 92040ca..91742fb 100644 --- a/src/guides/build-iapp/advanced/create-your-first-tdx-app.md +++ b/src/guides/build-iapp/advanced/create-your-first-tdx-app.md @@ -1,4 +1,11 @@ -# 🛡️ Build Intel TDX App (Experimental) +--- +title: Build Intel TDX App (Experimental) +description: + Learn how to build and run Confidential Computing applications with Intel TDX + technology using both traditional deployment and the iApp Generator +--- + +# 🛡️ Build Intel TDX App (Experimental) In this tutorial, you will learn how to build and run a Confidential Computing application with Intel TDX technology using both traditional deployment and the @@ -103,7 +110,7 @@ Your `iexec.json` should now look like this example: "checksum": "", // starts with 0x, update it with your own image digest "mrenclave": { "framework": "TDX", // TEE framework (keep default value) - } + } }, ... } @@ -211,7 +218,7 @@ declaration await dataProtector.core.processProtectedData({ protectedData: protectedData.address, workerpool: 'tdx-labs.pools.iexec.eth', - app: '0x1919ceb0c6e60f3B497936308B58F9a6aDf071eC', + app: '0x456def...', }); ``` @@ -296,8 +303,8 @@ EXPERIMENTAL_TDX_APP=true iapp run **[Intel SGX Technology](/get-started/protocol/tee/intel-sgx)** for production - **[Create Your First SGX App](/guides/build-iapp/advanced/create-your-first-sgx-app)** - Build production-ready SGX applications -- **[Build & Deploy](/guides/build-iapp/build-&-deploy)** - Standard iApp - deployment guide +- **[Deploy & Run](/guides/build-iapp/deploy-&-run)** - Standard iApp deployment + guide ### 🔗 **Related Resources** @@ -307,5 +314,9 @@ EXPERIMENTAL_TDX_APP=true iapp run Generator documentation - **[DataProtector SDK](/references/dataProtector)** - Work with protected data in TDX -- **[Advanced iApp Building](/guides/build-iapp/advanced/overview)** - Advanced - development techniques +- **[Advanced iApp Building](/guides/build-iapp/advanced/quick-start-for-developers)** - + Advanced development techniques + + diff --git a/src/guides/build-iapp/advanced/end-to-end-encryption.md b/src/guides/build-iapp/advanced/end-to-end-encryption.md index 5f7f19b..3c9b0d1 100644 --- a/src/guides/build-iapp/advanced/end-to-end-encryption.md +++ b/src/guides/build-iapp/advanced/end-to-end-encryption.md @@ -1,3 +1,10 @@ +--- +title: End-to-End Encryption +description: + Learn how to implement end-to-end encryption for your Confidential Computing + applications to protect results and ensure complete data privacy +--- + # Protect the result In previous tutorials, we saw how to build @@ -64,22 +71,23 @@ private key in the file `<0x-your-wallet-address>_key`. Now, push the public key to the SMS: -```bash -iexec result push-encryption-key --tee-framework scone +```bash twoslash +iexec result push-encryption-key --tee-framework --chain {{chainName}} scone ``` And check it using: -```bash -iexec result check-encryption-key --tee-framework scone +```bash twoslash +iexec result check-encryption-key --tee-framework --chain {{chainName}} scone ``` Now to see that in action, you'd need to trigger a task and specify yourself as the beneficiary in the command: -```bash +```bash twoslash iexec app run <0x-your-app-address> \ - --workerpool debug-v8-learn.main.pools.iexec.eth \ + --chain {{chainName}} + --workerpool {{workerpoolAddress}} \ --tag tee,scone \ --encrypt-result \ --watch @@ -87,8 +95,8 @@ iexec app run <0x-your-app-address> \ Wait for the task to be `COMPLETED` and download the result: -```bash -iexec task show <0x-your-task-id> --download +```bash twoslash +iexec task show --chain {{chainName}} <0x-your-task-id> --download ``` If you extract the obtained zip and try to read the content of the file @@ -103,9 +111,9 @@ mkdir /tmp/trash && \ `iexec_out/result.zip` : ```bash -)3�Xq��Yv��ȿzE�fRu<\�ݵm�m���疞r���c��(a���{{'��ܼ���͛�q/[{����H�t>��������h��gD$g��\.�k��j�����"�s?"�h�J�_Q41�_[{��X��������Ԛ��a�蘟v���E����r����肽 -�����Յ]9W�TL�*��� - �t��d���z��O`����!���e�&snoL3�K6L9���% +)3XqYvȿzEfRu<\ݵmm疞rc(a{{'ܼ͛q/[{Ht>hgD$g\.kj"s?"hJ_Q41_[{XԚa蘟vEr肽 +Յ]9WTL* + tdzO`!e&snoL3K6L9% ``` Now you should decrypt the result by running: @@ -134,3 +142,17 @@ the dataset, and the result. You can go to the advanced section and learn more about managing orders on the iExec to effectively monetize your applications and datasets. + + diff --git a/src/guides/build-iapp/advanced/overview.md b/src/guides/build-iapp/advanced/overview.md deleted file mode 100644 index 995a531..0000000 --- a/src/guides/build-iapp/advanced/overview.md +++ /dev/null @@ -1,32 +0,0 @@ ---- -title: Advanced iApp Building -description: - Legacy, low-level guides for building confidential iApp (Docker, SGX, TDX, - SCONE/Gramine, E2E encryption) ---- - -# ⚙️ Advanced iApp Building - -::: warning Important - -This section contains legacy, low-level material. Please note: - -- Terminology and some concepts may have changed in the current documentation. -- These topics are intentionally advanced and can be complex to understand. -- In most cases, you should not need to dive into this section — we’ve - simplified and streamlined recommended paths elsewhere in the docs. - -If you believe you truly need these advanced flows or you’re unsure which path -to take, please contact our support so we can understand your use case and help -you efficiently: [Join our Discord](https://discord.gg/9h25DQFSCU). - -::: - -- **[Quick Start for Developers](./quick-start-for-developers)** -- **[Build your first application](./your-first-app)** -- **[Intel SGX Technology](/get-started/protocol/tee/intel-sgx)** -- **[Build your first SGX app (SCONE)](./create-your-first-sgx-app)** -- **[End-to-end Encryption](./end-to-end-encryption)** -- **[SGX Encrypted Dataset](./sgx-encrypted-dataset)** -- **[Access Confidential Assets](./access-confidential-assets)** -- **[Build Intel TDX app](./create-your-first-tdx-app)** diff --git a/src/guides/build-iapp/advanced/quick-start-for-developers.md b/src/guides/build-iapp/advanced/quick-start-for-developers.md index 2c3564b..0d044dc 100644 --- a/src/guides/build-iapp/advanced/quick-start-for-developers.md +++ b/src/guides/build-iapp/advanced/quick-start-for-developers.md @@ -1,3 +1,10 @@ +--- +title: Quick Start for Developers +description: + Learn how to create and deploy decentralized applications on the iExec + infrastructure using the iExec SDK command-line interface +--- + # Quick Start > In this tutorial we will show you how you can create decentralized application @@ -64,7 +71,7 @@ Ethereum wallet. See iExec SDK documentation Create a new folder for your iExec project and initialize the project: -```text +```bash mkdir ~/iexec-projects cd ~/iexec-projects iexec init --skip-wallet @@ -80,12 +87,14 @@ The iExec SDK creates the minimum configuration files: ::: -You can now connect to the blockchain. In the following steps, we will use the -[iExec sidechain (also called Bellecour)](/get-started/tooling-and-explorers/blockchain-explorer#bellecour) +You can now connect to the desired supported blockchain. In the following steps, +we will use the chosen blockchain to deploy and run your iExec app. See the +[supported blockchains](/get-started/tooling-and-explorers/blockchain-explorer) +for a full list. You can now check your wallet content: -```text +```bash iexec wallet show ``` @@ -100,7 +109,7 @@ Let's deploy an iExec app! Initialize a new application -```text +```bash iexec app init ``` @@ -132,22 +141,22 @@ iExec. You will now deploy your app on iExec, this will be your first transaction on the blockchain: -```text -iexec app deploy +```bash twoslash +iexec app deploy --chain arbitrum-mainnet ``` ::: tip While running `iexec app deploy` you sent your first transaction on the -bellecour blockchain. +arbitrum-mainnet blockchain. ::: You can check your deployed apps with their index, let's check your last deployed app: -```text -iexec app show +```bash twoslash +iexec app show --chain arbitrum-mainnet ``` ## Run your app on iExec @@ -171,21 +180,21 @@ At any time you can: - view your balance -```sh -iexec account show +```bash twoslash +iexec account show --chain arbitrum-mainnet ``` - deposit RLC from your wallet to your iExec Account -```sh -iexec account deposit +```bash twoslash +iexec account deposit --chain arbitrum-mainnet ``` - withdraw RLC from your iExec account to your wallet \(only stake can be withdrawn\) -```sh -iexec account withdraw +```bash twoslash +iexec account withdraw --chain arbitrum-mainnet ``` ::: @@ -195,8 +204,8 @@ to pay for the computation. Everything is ready to run your application! -```text -iexec app run --args --workerpool prod-v8-learn.main.pools.iexec.eth --watch +```bash twoslash +iexec app run --chain arbitrum-mainnet --args --workerpool {{workerpoolAddress}} --watch ``` ::: info @@ -208,7 +217,7 @@ Useful options: - `--args ` specify the app execution arguments - `--watch` watch execution status changes - `--workerpool
` specify the workerpool to use (for example: - `--workerpool prod-v8-learn.main.pools.iexec.eth`) + `--workerpool {{workerpoolAddress}}`) Discover more option with `iexec app run --help` @@ -251,14 +260,14 @@ is a 32Bytes hexadecimal string\). Download the result of your task -```text -iexec task show --download my-result +```bash twoslash +iexec task show --chain arbitrum-mainnet --download my-result ``` You can get your taskid with the command: -```text -iexec deal show +```bash twoslash +iexec deal show --chain arbitrum-mainnet ``` ::: info @@ -272,7 +281,7 @@ produce an text file in `result.txt`. Let's discover the result of the computation. -```text +```bash unzip my-result.zip -d my-result cat my-result/result.txt ``` @@ -299,13 +308,13 @@ The conditions to use an app are defined in the **apporder**. Publish a new apporder for your application. -```text -iexec app publish +```bash twoslash +iexec app publish --chain arbitrum-mainnet ``` ::: info -`iexec app publish` options allows to define custom access rules to the app +`iexec app publish` command allows to define custom access rules to the app \(run `iexec app publish --help` to discover all the possibilities\). You will learn more about orders management later, keep the apporder default @@ -318,18 +327,14 @@ conditions defined in apporder. You can check the published apporders for your app -```text -iexec orderbook app +```bash twoslash +iexec orderbook app --chain arbitrum-mainnet ``` Congratulation you just created a decentralized application! Anyone can now trigger an execution of your application on the iExec decentralized infrastructure. -- With the iexec SDK CLI - `iexec app run --workerpool prod-v8-learn.main.pools.iexec.eth` -- On iExec marketplace - ## What's next? You are now familiar with the following key iExec concepts for developers: @@ -344,3 +349,17 @@ You are now familiar with the following key iExec concepts for developers: Continue with these guides: - [Learn how to build your first application running on iExec](your-first-app.md) + + diff --git a/src/guides/build-iapp/advanced/sgx-encrypted-dataset.md b/src/guides/build-iapp/advanced/sgx-encrypted-dataset.md deleted file mode 100644 index 8eb068b..0000000 --- a/src/guides/build-iapp/advanced/sgx-encrypted-dataset.md +++ /dev/null @@ -1,365 +0,0 @@ -# Access a confidential dataset - -In this tutorial, you will learn how to leverage an encrypted dataset by using -the `IEXEC_DATASET_FILENAME` environment variable in your application. - -::: tip Prerequisites: - -- Familiarity with the basic concepts of - [Intel® SGX](/get-started/protocol/tee/intel-sgx) and - [SCONE](https://scontain.com) framework. -- [Build With a Scone TEE application](create-your-first-sgx-app.md) - -::: - -Trusted Execution Environments offer a huge advantage from a security -perspective. They guarantee that the behavior of execution does not change even -when launched on an untrusted remote machine. The data inside this type of -environment is also protected, which allows its monetization while preventing -leakage. - -With iExec, it is possible to authorize only applications you trust to use your -datasets and get paid for it. Data is encrypted using standard encryption -mechanisms and the plain version never leaves your machine. The encrypted -version is made available for usage and the encryption key is pushed into the -[SMS](/get-started/protocol/tee/intel-sgx#secret-management-service-sms). After -you deploy the dataset on iExec it is you, and only you, who decides which -application is allowed to get the secret to decrypt it. - -::: warning - -Datasets are only decrypted inside authorized -[enclaves](/get-started/protocol/tee/intel-sgx) and never leave them. The same -thing applies to secrets. - -::: - -::: info - -Your secrets are transferred with the SDK from your machine to the SMS over a -TLS channel. - -::: - -Let's see how to do all of that! - -## Encrypt the dataset - -Before starting, let's make sure we are inside the `~/iexec-projects` folder -previously created during the [quick start](./quick-start-for-developers.md) -tutorial. - -```bash -cd ~/iexec-projects -mkdir tee-dataset-app && cd tee-dataset-app -iexec init --skip-wallet -``` - -Make sure your `chain.json` content is the same as the one described -[here](create-your-first-sgx-app.md#update-chain-json). - -Init the dataset configuration. - -```bash -iexec dataset init --encrypted -``` - -This command will create the `datasets/encrypted`, `datasets/original` and -`.secrets/datasets` folders. A new `dataset` section will be added to the -`iexec.json` file as well. - -```bash -. -├── datasets -│ ├── encrypted -│ └── original -└── .secrets - └── datasets -``` - -We will create a dummy file that has `"Hello, world!"` as content inside -`datasets/original`. Alternatively, you can put your own dataset file. - -```bash -echo "Hello, confidential world!" > datasets/original/my-first-dataset.txt -``` - -```bash -datasets -├── encrypted -└── original - └── my-first-dataset.txt -``` - -Now run the following command to encrypt the file: - -```bash -iexec dataset encrypt -``` - -::: info - -`iexec dataset encrypt` will output a checksum, keep this value for a later use. - -::: - -```bash -datasets -├── encrypted -│ └── my-first-dataset.txt.enc -└── original - └── my-first-dataset.txt -``` - -As you can see, the command generated the file -`datasets/encrypted/my-first-dataset.txt.enc`. That file is the encrypted -version of your dataset, you should push it somewhere accessible because the -worker will download it during the execution process. You will enter this file's -URI in the `iexec.json`file (`multiaddr` attribute) when you will deploy your -dataset. Make sure that the URI is a **DIRECT** download link (not a link to a -web page for example). - -::: info - -You can use Github for example to publish the file but you should add **/raw/** -to the URI like this: -[https://github.com/<username>/<repo>/raw/master/my-first-dataset.txt.enc](https://github.com///raw/master/my-first-dataset.txt.enc) - -::: - -The file `.secrets/datasets/my-first-dataset.txt.key` is the encryption key, -make sure to back it up securely. The file `.secrets/datasets/dataset.key` is -just an "alias" in the sense that it is the key of the last encrypted dataset. - -```bash -.secrets -└── datasets - ├── dataset.key - └── my-first-dataset.txt.key -``` - -## Deploy the dataset - -Fill in the fields of the `iexec.json` file. Choose a `name` for your dataset, -put the encrypted file's URI in `multiaddr` (the URI you got after publishing -the file) and fill the `checksum` field. The `checksum` of the dataset consists -of a `0x` prefix followed by the `sha256sum` of the dataset. This `checksum` is -printed when running the `iexec dataset encrypt` command. If you missed it, you -can retrieve the `sha256sum` of the dataset by running -`sha256sum datasets/encrypted/my-first-dataset.txt.enc`. - -```bash -$ cat iexec.json -{ - "description": "My iExec ressource description...", - - ... - - "dataset": { - "owner": "0x-your-wallet-address", - "name": "Encrypted hello world dataset", - "multiaddr": "/ipfs/QmW2WQi7j6c7UgJTarActp7tDNikE4B2qXtFCfLPdsgaTQ", - "checksum": "<0x-sha256sum-of-the-dataset>" // starts with 0x - } -} -``` - -To deploy your dataset run: - -```bash -iexec dataset deploy -``` - -You will get a hexadecimal address for your deployed dataset. Use that address -to push the encryption key to the [SMS](/get-started/protocol/tee/intel-sgx) so -it is available for authorized applications. - -For simplicity, we will use the dataset with a TEE-debug app on a debug -workerpool. The debug workerpool is connected to a debug Secret Management -Service so we will send the dataset encryption key to this SMS (this is fine for -debugging but do not use to store production secrets). - -### Push the dataset secret to the SMS - -```bash -iexec dataset push-secret -``` - -### Check secret availability on the SMS - -```bash -iexec dataset check-secret -``` - -We saw in this section how to encrypt a dataset and deploy it on iExec. In -addition, we learned how to push the encryption secret to the -[SMS](/get-started/protocol/tee/intel-sgx). Now we need to build the application -that is going to consume this dataset. - -## Prepare your application - -::: warning - -For demo purposes, we omitted some development best practices in these examples. - -Make sure to check your field's best practices before going to production. - -::: - -Let's create a directory tree for this app in `~/iexec-projects/`. - -```bash -cd ~/iexec-projects/tee-dataset-app -mkdir src -touch Dockerfile -touch sconify.sh -chmod +x sconify.sh -``` - -In the folder `src/` create the file `app.js` or `app.py` then copy this code -inside: - -The application reads the content of the dataset and writes it into the result's -folder: - -::: code-group - -```javascript [src/app.js] -const fsPromises = require('fs').promises; - -(async () => { - try { - const iexecOut = process.env.IEXEC_OUT; - const iexecIn = process.env.IEXEC_IN; - const datasetFileName = process.env.IEXEC_DATASET_FILENAME; - - // Use some confidential assets - let text = ''; - try { - const confidentialFile = await fsPromises.readFile( - `${iexecIn}/${datasetFileName}` - ); - text = confidentialFile.toString(); - } catch (e) { - console.log('confidential file does not exist'); - } - // Append some results - await fsPromises.writeFile(`${iexecOut}/result.txt`, text); - console.log(text); - // Declare everything is computed - const computedJsonObj = { - 'deterministic-output-path': `${iexecOut}/result.txt`, - }; - await fsPromises.writeFile( - `${iexecOut}/computed.json`, - JSON.stringify(computedJsonObj) - ); - } catch (e) { - console.log(e); - process.exit(1); - } -})(); -``` - -```python [src/app.py] -import json -import os - -iexec_out = os.environ['IEXEC_OUT'] -iexec_in = os.environ['IEXEC_IN'] -dataset_filename = os.environ['IEXEC_DATASET_FILENAME'] - -text = '' - -# Check the confidential file exists and open it -try: - dataset_file = open(iexec_in + '/' + dataset_filename, 'r') - dataset = dataset_file.read() - text = dataset -except OSError: - print('confidential file does not exists') - exit(1) - -print(text) - -# Append some results in /iexec_out/ -with open(iexec_out + '/result.txt', 'w+') as fout: - fout.write(text) - -# Declare everything is computed -with open(iexec_out + '/computed.json', 'w+') as f: - json.dump({"deterministic-output-path": iexec_out + '/result.txt'}, f) -``` - -::: - -## Build the TEE docker image - -Create the `Dockerfile` as described in -[Build your first application](./your-first-app.md#dockerize-your-app). - -Build the Docker image: - -```bash -docker build . --tag /hello-world-with-dataset:1.0.0 -``` - -Follow the steps described in -[Build Scone app > Build the TEE docker image](create-your-first-sgx-app.md#build-the-tee-docker-image). - -Update the `sconify.sh` script with the variables as follow: - -```bash -# declare related variables -IMG_NAME=tee-scone-hello-world-with-dataset -IMG_FROM=/hello-world-with-dataset:1.0.0 -IMG_TO=/${IMG_NAME}:1.0.0-debug -``` - -Run the `sconify.sh` script to build the Scone TEE application: - -```bash -./sconify.sh -``` - -```bash -docker push /tee-scone-hello-world-with-dataset:1.0.0-debug -``` - -## Test your app on iExec - -At this stage, your application is ready to be tested on iExec. - -### Deploy the TEE app on iExec - -Deploy the application as described in -[Build Scone app](create-your-first-sgx-app.md#deploy-the-tee-app-on-iexec). - -### Run the TEE app - -Specify the tag `--tag tee,scone` and the dataset to use -`--dataset ` in `iexec app run` command to run a tee app with a -dataset. - -One last thing, in order to run a **TEE-debug** app you will also need to select -a debug workerpool, use the debug workerpool -`debug-v8-learn.main.pools.iexec.eth`. - -You are now ready to run the app - -```bash -iexec app run \ - --tag tee,scone \ - --dataset \ - --workerpool debug-v8-learn.main.pools.iexec.eth \ - --watch -``` - -## Next step? - -Thanks to the explained confidential computing workflow, you now know how to use -an encrypted dataset in a Confidential Computing application. - -To go further, check out how to: - -- [Protect the result](end-to-end-encryption.md) diff --git a/src/guides/build-iapp/advanced/your-first-app.md b/src/guides/build-iapp/advanced/your-first-app.md index e3dd5a8..0fc9a29 100644 --- a/src/guides/build-iapp/advanced/your-first-app.md +++ b/src/guides/build-iapp/advanced/your-first-app.md @@ -1,5 +1,6 @@ --- -description: >- +title: Build Your First Application +description: In this section we will show you how you can create a Docker dapp over the iExec infrastructure. --- @@ -322,20 +323,20 @@ docker pull /hello-world:1.0.0 | grep "Digest: sha256:" | sed ' Deploy your app on iExec -```bash -iexec app deploy +```bash twoslash +iexec app deploy --chain {{chainName}} ``` Verify the deployed app \(name, multiaddr, checksum, owner\) -```bash -iexec app show +```bash twoslash +iexec app show --chain {{chainName}} ``` ### Run your app on iExec -```bash -iexec app run --workerpool debug-v8-learn.main.pools.iexec.eth --watch +```bash twoslash +iexec app run --chain {{chainName}} --workerpool {{workerpoolAddress}} --watch ``` ::: info @@ -364,8 +365,8 @@ and let the app access them through variables: Once the run is completed copy the taskid from `iexec app run` output to download and check the result -```bash -iexec task show --download my-app-result \ +```bash twoslash +iexec task show --chain {{chainName}} --download my-app-result \ && unzip my-app-result.zip -d my-app-result ``` @@ -396,8 +397,8 @@ Sometimes things don't work out right the first time and you may need to ## Publish your app on the iExec marketplace -```bash -iexec app publish +```bash twoslash +iexec app publish --chain {{chainName}} ``` **Congratulations your application is now available on iExec!** @@ -413,3 +414,17 @@ iExec: - using docker to package your app with all its dependencies - testing an iExec app locally - publishing on dockerhub + + diff --git a/src/guides/build-iapp/deploy-&-run.md b/src/guides/build-iapp/deploy-&-run.md index f1c1b00..0dfb151 100644 --- a/src/guides/build-iapp/deploy-&-run.md +++ b/src/guides/build-iapp/deploy-&-run.md @@ -53,7 +53,7 @@ Here is an example: ```json [ { - "sconifiedImage": "robiniexec/iapp:0.0.1-tee-scone-5.9.1-v16-debug-5aea8b4aa71d", + "sconifiedImage": "robiniexec/iapp:0.0.1-tee-scone-5.9.1-v16-5aea8b4aa71d", "appContractAddress": "0x9665136c599ec361C8eE627eC4F35A23fBa94897", "owner": "0xbabE8270aC9857Af3aaC06877888F1939FbeC578", "date": "2025-08-12T13:16:18.252Z" diff --git a/src/guides/build-iapp/manage-access.md b/src/guides/build-iapp/manage-access.md index eecc0c4..ecb6425 100644 --- a/src/guides/build-iapp/manage-access.md +++ b/src/guides/build-iapp/manage-access.md @@ -40,7 +40,7 @@ Here's the simplified process: 2. **You sign the order** with your wallet 3. **You publish the order** on the iExec marketplace 4. **Users can discover** and execute your iApp according to your conditions -5. **You automatically receive** payment in for each execution +5. **You automatically receive** payment in RLC for each execution ``` Deployed iApp + Published Signed App Order = Application accessible on iExec @@ -231,12 +231,12 @@ Here's the detailed description of each parameter: **Common values:** - `"0"` - Free -- `"1000000000"` - 1 per execution -- `"500000000"` - 0.5 per execution +- `"1000000000"` - 1 RLC per execution +- `"500000000"` - 0.5 RLC per execution ::: tip -1 = 1,000,000,000 nano (10^9) +1 RLC = 1,000,000,000 nano RLC (10^9) ::: @@ -246,9 +246,9 @@ Here's the detailed description of each parameter: **Examples:** -- `"1"` - Single use -- `"100"` - Limited campaign -- `"10000"` - Virtually unlimited usage +- `1` - Single use +- `100` - Limited campaign +- `10000` - Virtually unlimited usage ### `tag` @@ -270,20 +270,19 @@ All restrictions use `0x0000000000000000000000000000000000000000` to indicate **Description:** Restrict usage to a specific dataset -**Typical usage:** `"0x0000000000000000000000000000000000000000"` (no -restriction) +**Typical usage:** `0x0000000000000000000000000000000000000000` (no restriction) #### `workerpoolrestrict` **Description:** Restrict execution to a specific workerpool -**Example:** `"prod-v8-bellecour.main.pools.iexec.eth"` for the main workerpool +**Example:** `{{ workerpoolAddress }}` for the main workerpool #### `requesterrestrict` **Description:** Restrict usage to a specific user -**Typical usage:** `"0x0000000000000000000000000000000000000000"` (open to all) +**Typical usage:** `0x0000000000000000000000000000000000000000` (open to all) ## What's Next? @@ -303,5 +302,14 @@ Next steps: Protocol-level order management diff --git a/src/guides/manage-data/manage-access.md b/src/guides/manage-data/manage-access.md index 8f2ecde..920e9bd 100644 --- a/src/guides/manage-data/manage-access.md +++ b/src/guides/manage-data/manage-access.md @@ -135,12 +135,12 @@ you can specify a whitelist contract that contains multiple app versions. Very useful for when you need to upgrade your iApp, without losing all the granted access. -```ts +```text twoslash // Single app -authorizedApp: 'web3mail.apps.iexec.eth'; +authorizedApp: {{web3MailAddress}}; // Or use a whitelist (recommended for production) -authorizedApp: '0x781482C39CcE25546583EaC4957Fb7Bf04C277D2'; // Web3Mail whitelist +authorizedApp: {{web3MailAppWhitelist}}; // Web3Mail whitelist ``` #### authorizedUser @@ -169,7 +169,7 @@ yourself! Set to `0` for free access, or specify a price to monetize your data automatically. -**Example**: `pricePerAccess: 1_000_000_000` = 1 per access +**Example**: `pricePerAccess: 1_000_000_000` = 1 RLC per access → **Want to learn more monetization capabilities?** See our detailed [Monetize Protected Data guide](/guides/manage-data/monetize-protected-data) @@ -209,7 +209,17 @@ steps: [data monetization strategies](/guides/manage-data/monetize-protected-data) diff --git a/src/guides/use-iapp/how-to-pay-executions.md b/src/guides/use-iapp/how-to-pay-executions.md index ec96ffb..6ab24d1 100644 --- a/src/guides/use-iapp/how-to-pay-executions.md +++ b/src/guides/use-iapp/how-to-pay-executions.md @@ -14,7 +14,7 @@ and cost management strategies. iExec supports multiple payment methods for executing iApp: -1. **RLC Tokens**: Direct payment using tokens +1. **RLC Tokens**: Direct payment using RLC tokens 2. **Vouchers**: Pre-funded vouchers for simplified payment 3. **Mixed Payment**: Combination of RLC and vouchers @@ -28,7 +28,7 @@ your wallet to pay for executions. For detailed information on how to obtain RLC tokens, see our [RLC guide](/get-started/overview/rlc.md). -### Step 2: Transfer to iExec Sidechain +### Step 2: Stake RLC to Power Your iExec Tasks RLC tokens need to be staked on the iExec protocol to allow task payment. To do this, you should use the [iExec SDK](/references/sdk.md). @@ -37,7 +37,7 @@ this, you should use the [iExec SDK](/references/sdk.md). import { IExec, utils } from 'iexec'; const ethProvider = utils.getSignerFromPrivateKey( - 'bellecour', // blockchain node URL + 'chain', // blockchain node URL 'PRIVATE_KEY' ); const iexec = new IExec({ @@ -49,7 +49,7 @@ const balance = await iexec.account.checkBalance('0xa0c15e...'); console.log('Nano RLC staked:', balance.stake.toString()); console.log('Nano RLC locked:', balance.locked.toString()); -// Deposit RLC to the sidechain +// Lock RLC in your account in the iExec protocol await iexec.account.deposit(1_000_000_000); // Deposit 1 RLC ``` @@ -103,8 +103,8 @@ balance is insufficient. This ensures that if the voucher alone doesn't cover the execution cost, the remaining balance is automatically deducted from your account. -For additional information on using for fallback payment in -Web3Mail, refer to the **Using with Web3Mail** section. +For additional information on using RLC for fallback payment in Web3Mail, refer +to the **Using RLC with Web3Mail** section. ### Step 4: Use Voucher @@ -136,7 +136,6 @@ const sendTelegram = await web3telegram.sendTelegram({ telegramContent: 'My telegram message content', senderName: 'Awesome project team', label: 'some-custom-id', - workerpoolAddressOrEns: 'prod-v8-bellecour.main.pools.iexec.eth', dataMaxPrice: 42, appMaxPrice: 42, workerpoolMaxPrice: 42, @@ -161,10 +160,10 @@ const result = await dataProtectorCore.processProtectedData({ ::: tip -If your voucher doesn't have enough to cover the deal, the SDK -will automatically get the required amount to your iExec account. Ensure that -your voucher is authorized to access your iExec account and that your account -has sufficient funds for this transfer to proceed. +If your voucher doesn't have enough RLC to cover the deal, the SDK will +automatically get the required amount to your iExec account. Ensure that your +voucher is authorized to access your iExec account and that your account has +sufficient funds for this transfer to proceed. ::: @@ -239,7 +238,6 @@ Now that you understand payment methods: diff --git a/src/guides/use-iapp/run-iapp-without-ProtectedData.md b/src/guides/use-iapp/run-iapp-without-ProtectedData.md index 0d008e9..53ac2e2 100644 --- a/src/guides/use-iapp/run-iapp-without-ProtectedData.md +++ b/src/guides/use-iapp/run-iapp-without-ProtectedData.md @@ -47,7 +47,7 @@ blockchain. import { IExec, utils } from 'iexec'; const ethProvider = utils.getSignerFromPrivateKey( - 'bellecour', // blockchain node URL + 'chain', // blockchain node URL 'PRIVATE_KEY' ); const iexec = new IExec({ @@ -59,7 +59,7 @@ const requestorderToSign = await iexec.order.createRequestorder({ app: '0x456def...', category: 0, appmaxprice: 10, - workerpool: '0xa5de76...', // ENS address for iExec's debug workerpool + workerpool: '0xa5de76...', params: 'arg1 arg2 arg3', // Command-line arguments // Other parameters have default values }); @@ -98,7 +98,7 @@ execution. import { IExec, utils } from 'iexec'; const ethProvider = utils.getSignerFromPrivateKey( - 'bellecour', // blockchain node URL + 'chain', // blockchain node URL 'PRIVATE_KEY' ); const iexec = new IExec({ @@ -110,7 +110,7 @@ const requestorderToSign = await iexec.order.createRequestorder({ app: '0x456def...', category: 0, // Required: category for the request appmaxprice: 10, - workerpool: '0xa5de76...', // ENS address for iExec's debug workerpool + workerpool: '0xa5de76...', params: { iexec_input_files: [ 'https://example.com/config.json', @@ -155,7 +155,7 @@ securely and made available to the iApp as environment variables. import { IExec, utils } from 'iexec'; const ethProvider = utils.getSignerFromPrivateKey( - 'bellecour', // blockchain node URL + 'chain', // blockchain node URL 'PRIVATE_KEY' ); const iexec = new IExec({ @@ -167,7 +167,7 @@ const requestorderToSign = await iexec.order.createRequestorder({ app: '0x456def...', category: 0, // Required: category for the request appmaxprice: 10, - workerpool: '0xa5de76...', // ENS address for iExec's debug workerpool + workerpool: '0xa5de76...', params: { iexec_secrets: { 1: 'api-key-12345', diff --git a/src/references/dataProtector/advanced/advanced-configuration.md b/src/references/dataProtector/advanced/advanced-configuration.md index b6cbcde..780fc0e 100644 --- a/src/references/dataProtector/advanced/advanced-configuration.md +++ b/src/references/dataProtector/advanced/advanced-configuration.md @@ -74,8 +74,7 @@ import { IExecDataProtector, getWeb3Provider } from '@iexec/dataprotector'; const web3Provider = getWeb3Provider('PRIVATE_KEY'); // ---cut--- const dataProtector = new IExecDataProtector(web3Provider, { - subgraphUrl: - 'https://thegraph-product.iex.ec/subgraphs/name/bellecour/dataprotector', // [!code focus] + subgraphUrl: 'subgraph-url', // [!code focus] }); ``` @@ -94,7 +93,7 @@ import { IExecDataProtector, getWeb3Provider } from '@iexec/dataprotector'; const web3Provider = getWeb3Provider('PRIVATE_KEY'); // ---cut--- const dataProtector = new IExecDataProtector(web3Provider, { - ipfsNode: 'https://ipfs-upload.v8-bellecour.iex.ec', // [!code focus] + ipfsNode: 'ipfs-node-url', // [!code focus] }); ``` @@ -114,7 +113,7 @@ import { IExecDataProtector, getWeb3Provider } from '@iexec/dataprotector'; const web3Provider = getWeb3Provider('PRIVATE_KEY'); // ---cut--- const dataProtector = new IExecDataProtector(web3Provider, { - ipfsGateway: 'https://ipfs-gateway.v8-bellecour.iex.ec', // [!code focus] + ipfsGateway: 'ipfs-gateway-url', // [!code focus] }); ``` @@ -130,7 +129,7 @@ import { IExecDataProtector, getWeb3Provider } from '@iexec/dataprotector'; const web3Provider = getWeb3Provider('PRIVATE_KEY'); // ---cut--- const dataProtector = new IExecDataProtector(web3Provider, { - iexecOptions: { smsURL: 'https://sms.scone-prod.v8-bellecour.iex.ec' }, // [!code focus] + iexecOptions: { smsURL: 'sms-url' }, // [!code focus] }); ``` diff --git a/src/references/dataProtector/advanced/apps-whitelist.md b/src/references/dataProtector/advanced/apps-whitelist.md index c71c0db..e245e22 100644 --- a/src/references/dataProtector/advanced/apps-whitelist.md +++ b/src/references/dataProtector/advanced/apps-whitelist.md @@ -76,9 +76,6 @@ See it in See it in [https://explorer.iex.ec/bellecour](https://explorer.iex.ec/bellecour/app/0x1cb7d4f3ffa203f211e57357d759321c6ce49921) -See it in -[https://blockscout-bellecour.iex.ec/](https://blockscout-bellecour.iex.ec/address/0x1cb7D4F3FFa203F211e57357D759321C6CE49921) - diff --git a/src/references/dataProtector/dataProtectorCore/grantAccess.md b/src/references/dataProtector/dataProtectorCore/grantAccess.md index 67462f0..c24d444 100644 --- a/src/references/dataProtector/dataProtectorCore/grantAccess.md +++ b/src/references/dataProtector/dataProtectorCore/grantAccess.md @@ -92,14 +92,13 @@ const grantedAccess = await dataProtectorCore.grantAccess({ You may authorize a specific app or a whitelist of apps to use the protected data. -iExec uses the ENS `web3mail.apps.iexec.eth` for the latest version of the -Web3Mail decentralized application. +The latest version of the iExec Web3Mail decentralized application is +`{{web3MailAddress}}`. iExec also maintains a whitelist for current and past versions of Web3Mail iApp. Granting access to this whitelist allows use of an email `protectedData` with all versions of the Web3Mail application, ensuring you only have to grant this -access once. The ETH address for this whitelist is -**0x781482C39CcE25546583EaC4957Fb7Bf04C277D2**. +access once. The ETH address for this whitelist is **{{web3MailAppWhitelist}}**. ::: @@ -165,7 +164,7 @@ const grantedAccess = await dataProtectorCore.grantAccess({ ::: tip `pricePerAccess` is expressed in nano RLC (nRLC). nRLC is the smallest -subdivision of the token, 1 equals to 10^9 nRLC. +subdivision of the RLC token, 1 RLC equals to 10^9 nRLC. When provided, `pricePerAccess` must be a non-negative integer value. @@ -252,7 +251,17 @@ The result of this method confirms the new access grant. It consists of a JSON [`GrantedAccess`](/references/dataProtector/types#grantedaccess) diff --git a/src/references/dataProtector/dataProtectorCore/processProtectedData.md b/src/references/dataProtector/dataProtectorCore/processProtectedData.md index a6c7316..e13c036 100644 --- a/src/references/dataProtector/dataProtectorCore/processProtectedData.md +++ b/src/references/dataProtector/dataProtectorCore/processProtectedData.md @@ -154,10 +154,10 @@ const processProtectedDataResponse = ::: tip -If your voucher doesn't have enough to cover the deal, the SDK -will automatically get the required amount to your iExec account. Ensure that -your voucher is authorized to access your iExec account and that your account -has sufficient funds for this transfer to proceed. +If your voucher doesn't have enough RLC to cover the deal, the SDK will +automatically get the required amount to your iExec account. Ensure that your +voucher is authorized to access your iExec account and that your account has +sufficient funds for this transfer to proceed. ::: @@ -208,7 +208,8 @@ const processProtectedDataResponse = Do not use this to provide any sensitive information to the application. All arguments passed this way are visible in plain text using the -[iExec blockchain explorer](https://explorer.iex.ec). +iExec blockchain +explorer . ::: @@ -265,24 +266,19 @@ const processProtectedDataResponse = await dataProtectorCore.processProtectedDat ### workerpool **Type:** `AddressOrENS | 'any'` -**Default:** `prod-v8-bellecour.main.pools.iexec.eth` +**Default:** `{{ workerpoolAddress }}` -The ETH address or Ethereum Name Service (ENS) address for the iExec workerpool. It's the confidential computer on which the iExec application will run. ::: tip -iExec currently offers a production workerpool located at the Ethereum Name -Service (ENS) address `prod-v8-bellecour.main.pools.iexec.eth`. This is the -default workerpool for running confidential computations on the iExec platform. - -If you don't specify a workerpool preference, -0x0000000000000000000000000000000000000000 represents any randomly available -workerpool. +iExec currently offers a workerpool located at the address +`{{ workerpoolAddress }}`. This is the default workerpool for running +confidential computations on the iExec platform. ::: -::: info +::: info TDX 🧪 While protected data are processed in **TEE** by **intel SGX** technology by default, `@iexec/dataprotector` can be configured to create and process @@ -451,7 +447,9 @@ import { type ProcessProtectedDataResponse } from '@iexec/dataprotector'; `string` The ID of the transaction that happened on iExec's side chain. You may view -details on the transaction using the [iExec explorer](https://explorer.iex.ec). +details on the transaction using the +iExec blockchain +explorer . ### dealId @@ -464,8 +462,9 @@ Identifies the specific deal associated with this transaction. `string` A unique identifier associated with a task currently running on the iExec -Bellecour side chain. You can monitor task execution using the -[iExec blockchain explorer](https://explorer.iex.ec). +protocol. You can monitor task execution using the +iExec blockchain +explorer . ::: tip @@ -498,8 +497,18 @@ processed during the task. ::: diff --git a/src/references/dataProtector/dataProtectorCore/protectData.md b/src/references/dataProtector/dataProtectorCore/protectData.md index 528f47f..005131e 100644 --- a/src/references/dataProtector/dataProtectorCore/protectData.md +++ b/src/references/dataProtector/dataProtectorCore/protectData.md @@ -393,24 +393,25 @@ The multiaddr field is the IPFS path of your encrypted data. You can access your encrypted IPFS data with the link: -`https://ipfs-gateway.v8-bellecour.iex.ec/ipfs/abc123...` +`{{ipfsGateway}}/ipfs/abc123...` `abc123...` is the second part of the returned string `/p2p/abc123...` ::: -## Created Protected Data + diff --git a/src/references/dataProtector/dataProtectorSharing/consume/consumeProtectedData.md b/src/references/dataProtector/dataProtectorSharing/consume/consumeProtectedData.md index 53615b2..1c37c2b 100644 --- a/src/references/dataProtector/dataProtectorSharing/consume/consumeProtectedData.md +++ b/src/references/dataProtector/dataProtectorSharing/consume/consumeProtectedData.md @@ -156,9 +156,9 @@ const consumeProtectedDataResult = ### workerpool **Type:** `AddressOrENS` -**Default:** `prod-v8-bellecour.main.pools.iexec.eth` +**Default:** `{{ workerpoolAddress }}` (iExec's workerpool) -Address or ENS of the workerpool. +Address or ENS of the workerpool on which your confidential task will run. ```ts twoslash import { @@ -173,18 +173,10 @@ const consumeProtectedDataResult = await dataProtectorSharing.consumeProtectedData({ protectedData: '0x123abc...', app: '0x456def...', - workerpool: 'prod-v8-bellecour.main.pools.iexec.eth', // [!code focus] + workerpool: '0xa5de76...', // [!code focus] }); ``` -::: tip - -iExec currently offers a production workerpool located at the Ethereum Name -Service (ENS) address `prod-v8-bellecour.main.pools.iexec.eth`. This is the -default workerpool for running confidential computations on the iExec platform. - -::: - ### maxPrice **Type:** `number` @@ -339,8 +331,18 @@ Identifies the specific task associated with the deal. The actual content of the protected file. diff --git a/src/references/dataProtector/types.md b/src/references/dataProtector/types.md index e586d99..eb5edd8 100644 --- a/src/references/dataProtector/types.md +++ b/src/references/dataProtector/types.md @@ -17,8 +17,8 @@ Types in DataProtector. ### datasetprice: `string` -- Price (in n) to charge the user specified in - `requesterrestrict` for each use of this `protectedData` +- Price (in nRLC) to charge the user specified in `requesterrestrict` for each + use of this `protectedData` ### volume: `string` @@ -123,7 +123,3 @@ _Hash example:_ `0xc9c2d58fc01fe54149b7daf49a0026d4ab1fdd3d10fb7c76350790fff03fe You can read more about he iExec Explorer [here](https://protocol.docs.iex.ec/for-developers/toolbox/iexec-explorer). - - diff --git a/src/references/iapp-generator/building-your-iexec-app.md b/src/references/iapp-generator/building-your-iexec-app.md index f8bdf98..8df7861 100644 --- a/src/references/iapp-generator/building-your-iexec-app.md +++ b/src/references/iapp-generator/building-your-iexec-app.md @@ -181,7 +181,6 @@ Your iApp is now running on iExec! Once your application is **stable** and **functional**, you can: -- Contact **iExec** to move to **production mode** (Full Privacy). - Learn how to **manage orders** and integrate with the **iExec protocol**. #### 📚 Recommended Resources diff --git a/src/references/web3mail/advanced-configuration.md b/src/references/web3mail/advanced-configuration.md index 177b220..0adbfa6 100644 --- a/src/references/web3mail/advanced-configuration.md +++ b/src/references/web3mail/advanced-configuration.md @@ -23,19 +23,13 @@ import { type Web3MailConfigOptions } from '@iexec/web3mail'; The Ethereum contract address or ENS (Ethereum Name Service) for the web3mail iApp. -If not provided, the default ENS `web3mail.apps.iexec.eth` pointing to the -latest version of the web3mail iApp provided by iExec will be used. - -You can find the corresponding iApp address with Bellecour explorer: -[https://explorer.iex.ec/bellecour/search/web3mail.apps.iexec.eth](https://explorer.iex.ec/bellecour/search/web3mail.apps.iexec.eth). - ```ts twoslash import { IExecWeb3mail, getWeb3Provider } from '@iexec/web3mail'; const web3Provider = getWeb3Provider('PRIVATE_KEY'); // ---cut--- const web3mail = new IExecWeb3mail(web3Provider, { - dappAddressOrENS: 'web3mail.apps.iexec.eth', // [!code focus] + dappAddressOrENS: '0x456def...', // [!code focus] }); ``` @@ -54,13 +48,10 @@ import { IExecWeb3mail, getWeb3Provider } from '@iexec/web3mail'; const web3Provider = getWeb3Provider('PRIVATE_KEY'); // ---cut--- const web3mail = new IExecWeb3mail(web3Provider, { - dappWhitelistAddress: '0x781482C39CcE25546583EaC4957Fb7Bf04C277D2', // [!code focus] + dappWhitelistAddress: '0x456def...', // [!code focus] }); ``` -See it in -[https://blockscout-bellecour.iex.ec/](https://blockscout-bellecour.iex.ec/address/0x781482C39CcE25546583EaC4957Fb7Bf04C277D2) - ### dataProtectorSubgraph The subgraph URL for querying data. @@ -74,8 +65,7 @@ import { IExecWeb3mail, getWeb3Provider } from '@iexec/web3mail'; const web3Provider = getWeb3Provider('PRIVATE_KEY'); // ---cut--- const web3mail = new IExecWeb3mail(web3Provider, { - dataProtectorSubgraph: - 'https://thegraph-product.iex.ec/subgraphs/name/bellecour/dataprotector', // [!code focus] + dataProtectorSubgraph: 'subgraph-url', // [!code focus] }); ``` @@ -92,7 +82,7 @@ import { IExecWeb3mail, getWeb3Provider } from '@iexec/web3mail'; const web3Provider = getWeb3Provider('PRIVATE_KEY'); // ---cut--- const web3mail = new IExecWeb3mail(web3Provider, { - ipfsNode: 'https://ipfs-upload.v8-bellecour.iex.ec', // [!code focus] + ipfsNode: 'ipfs-node-url', // [!code focus] }); ``` @@ -110,7 +100,7 @@ import { IExecWeb3mail, getWeb3Provider } from '@iexec/web3mail'; const web3Provider = getWeb3Provider('PRIVATE_KEY'); // ---cut--- const web3mail = new IExecWeb3mail(web3Provider, { - ipfsGateway: 'https://ipfs-gateway.v8-bellecour.iex.ec', // [!code focus] + ipfsGateway: 'ipfs-gateway-url', // [!code focus] }); ``` diff --git a/src/references/web3mail/methods/sendEmail.md b/src/references/web3mail/methods/sendEmail.md index 4eefbaa..2aed89b 100644 --- a/src/references/web3mail/methods/sendEmail.md +++ b/src/references/web3mail/methods/sendEmail.md @@ -14,15 +14,15 @@ The recipient email address in a `protectedData` entity. The user receiving the email must explicitly authorize you to send them email communications and permission must be granted for the `Web3Mail` tool to use the `protectedData` entity containing their email address. This is best done by granting -authorization to the Web3Mail app whitelist -`0x781482C39CcE25546583EaC4957Fb7Bf04C277D2` as `authorizedApp`. Refer to the +authorization to the Web3Mail app whitelist `{{web3MailAppWhitelist}}` as +`authorizedApp`. Refer to the [Data Protector `grantAccess`](/references/dataProtector/dataProtectorCore/grantAccess) documentation for more details. ::: tip -For executing the `sendEmail` method with a voucher or , refer to -the dedicated section in the documentation under +For executing the `sendEmail` method with a voucher or RLC, refer to the +dedicated section in the documentation under "[How to Pay for Executions](/guides/use-iapp/how-to-pay-executions.md)". ::: @@ -136,10 +136,10 @@ const sendEmail = await web3mail.sendEmail({ ::: tip -If your voucher doesn't have enough to cover the deal, the SDK -will automatically get the required amount to your iExec account. Ensure that -your voucher is authorized to access your iExec account and that your account -has sufficient funds for this transfer to proceed. +If your voucher doesn't have enough RLC to cover the deal, the SDK will +automatically get the required amount to your iExec account. Ensure that your +voucher is authorized to access your iExec account and that your account has +sufficient funds for this transfer to proceed. ::: @@ -216,7 +216,7 @@ const sendEmail = await web3mail.sendEmail({ ### workerpoolAddressOrEns **Type:** `workerpoolAddressOrEns` -**Default:** iExec's production workerpool +**Default:** `{{workerpoolAddress}}` (iExec's workerpool) Allows specifying the workerpool that will run the Web3Mail application. @@ -230,18 +230,10 @@ const sendEmail = await web3mail.sendEmail({ protectedData: '0x123abc...', emailSubject: 'My email subject', emailContent: 'My email content', - workerpoolAddressOrEns: 'prod-v8-bellecour.main.pools.iexec.eth', // [!code focus] + workerpoolAddressOrEns: '0xa5de76...', // [!code focus] }); ``` -::: tip - -iExec currently offers a production workerpool located at the Ethereum Name -Service (ENS) address `prod-v8-bellecour.main.pools.iexec.eth`. This is the -default workerpool for running confidential computations on the iExec platform. - -::: - ### dataMaxPrice **Type:** `number` @@ -321,7 +313,8 @@ import { type SendEmailResponse } from '@iexec/web3mail'; This uniquely identifies the email task on the iExec side chain. You can view the status of the `sendEmail` method by monitoring the task on the -[iExec Explorer](https://explorer.iex.ec/bellecour). +iExec blockchain +explorer . ## Error Handling @@ -392,8 +385,19 @@ For any other errors, you'll get a `WorkflowError` error in the form of: ``` diff --git a/src/references/web3telegram/advanced-configuration.md b/src/references/web3telegram/advanced-configuration.md index b522940..bef05da 100644 --- a/src/references/web3telegram/advanced-configuration.md +++ b/src/references/web3telegram/advanced-configuration.md @@ -23,11 +23,8 @@ import { type Web3TelegramConfigOptions } from '@iexec/web3telegram'; The Ethereum contract address or ENS (Ethereum Name Service) for the web3telegram iApp. -If not provided, the default ENS `web3telegram.apps.iexec.eth` pointing to the -latest version of the web3telegram iApp provided by iExec will be used. - -You can find the corresponding iApp address with Bellecour explorer: -[https://explorer.iex.ec/bellecour/search/web3telegram.apps.iexec.eth](https://explorer.iex.ec/bellecour/search/web3telegram.apps.iexec.eth). +If not provided, the default ENS web3telegram iApp provided by iExec will be +used. ```ts twoslash import { IExecWeb3telegram, getWeb3Provider } from '@iexec/web3telegram'; @@ -35,7 +32,7 @@ import { IExecWeb3telegram, getWeb3Provider } from '@iexec/web3telegram'; const web3Provider = getWeb3Provider('PRIVATE_KEY'); // ---cut--- const web3telegram = new IExecWeb3telegram(web3Provider, { - dappAddressOrENS: 'web3telegram.apps.iexec.eth', // [!code focus] + dappAddressOrENS: '0x456def...', // [!code focus] }); ``` @@ -54,13 +51,10 @@ import { IExecWeb3telegram, getWeb3Provider } from '@iexec/web3telegram'; const web3Provider = getWeb3Provider('PRIVATE_KEY'); // ---cut--- const web3telegram = new IExecWeb3telegram(web3Provider, { - dappWhitelistAddress: '0x192C6f5AccE52c81Fcc2670f10611a3665AAA98F', // [!code focus] + dappWhitelistAddress: '0x456def...', // [!code focus] }); ``` -See it in -[https://blockscout-bellecour.iex.ec/](https://blockscout-bellecour.iex.ec/address/0x192C6f5AccE52c81Fcc2670f10611a3665AAA98F) - ### dataProtectorSubgraph The subgraph URL for querying data. @@ -74,8 +68,7 @@ import { IExecWeb3telegram, getWeb3Provider } from '@iexec/web3telegram'; const web3Provider = getWeb3Provider('PRIVATE_KEY'); // ---cut--- const web3telegram = new IExecWeb3telegram(web3Provider, { - dataProtectorSubgraph: - 'https://thegraph-product.iex.ec/subgraphs/name/bellecour/dataprotector', // [!code focus] + dataProtectorSubgraph: 'subgraph-url', // [!code focus] }); ``` @@ -92,7 +85,7 @@ import { IExecWeb3telegram, getWeb3Provider } from '@iexec/web3telegram'; const web3Provider = getWeb3Provider('PRIVATE_KEY'); // ---cut--- const web3telegram = new IExecWeb3telegram(web3Provider, { - ipfsNode: 'https://ipfs-upload.v8-bellecour.iex.ec', // [!code focus] + ipfsNode: 'ipfs-node-url', // [!code focus] }); ``` @@ -110,7 +103,7 @@ import { IExecWeb3telegram, getWeb3Provider } from '@iexec/web3telegram'; const web3Provider = getWeb3Provider('PRIVATE_KEY'); // ---cut--- const web3telegram = new IExecWeb3telegram(web3Provider, { - ipfsGateway: 'https://ipfs-gateway.v8-bellecour.iex.ec', // [!code focus] + ipfsGateway: 'ipfs-gateway-url', // [!code focus] }); ``` diff --git a/src/references/web3telegram/methods/fetchUserContacts.md b/src/references/web3telegram/methods/fetchUserContacts.md index 815514a..863939d 100644 --- a/src/references/web3telegram/methods/fetchUserContacts.md +++ b/src/references/web3telegram/methods/fetchUserContacts.md @@ -21,7 +21,7 @@ const web3Provider = getWeb3Provider('PRIVATE_KEY'); const web3telegram = new IExecWeb3telegram(web3Provider); // ---cut--- const contactsList = await web3telegram.fetchUserContacts({ - userAddress: '0xF048eF3d7E3B33A465E0599E641BB29421f7Df92', + userAddress: '0x789cba...', }); ``` @@ -33,7 +33,7 @@ import { type FetchUserContactsParams } from '@iexec/web3telegram'; ### userAddress -`Address` +**Type:** `Address` The entity for which you wish to obtain the list of contacts. @@ -44,7 +44,7 @@ const web3Provider = getWeb3Provider('PRIVATE_KEY'); const web3telegram = new IExecWeb3telegram(web3Provider); // ---cut--- const contactsList = await web3telegram.fetchUserContacts({ - userAddress: '0xF048eF3d7E3B33A465E0599E641BB29421f7Df92', // [!code focus] + userAddress: '0x789cba...', // [!code focus] }); ``` diff --git a/src/references/web3telegram/methods/sendTelegram.md b/src/references/web3telegram/methods/sendTelegram.md index 6b9e145..bd0a835 100644 --- a/src/references/web3telegram/methods/sendTelegram.md +++ b/src/references/web3telegram/methods/sendTelegram.md @@ -14,15 +14,15 @@ The recipient Chat ID is stored in a `protectedData` entity. The user receiving message must explicitly authorize you to send them telegram communications and permission must be granted for the `Web3Telegram` tool to use the `protectedData` entity containing their chat ID. This is best done by granting -authorization to the Web3Telegram app whitelist -`0x192C6f5AccE52c81Fcc2670f10611a3665AAA98F` as `authorizedApp`. Refer to the +authorization to the Web3Telegram app whitelist `{{web3TelegramAppWhitelist}}` +as `authorizedApp`. Refer to the [Data Protector `grantAccess`](/references/dataProtector/dataProtectorCore/grantAccess) documentation for more details. ::: tip -For executing the `sendTelegram` method with a voucher or , refer -to the dedicated section in the documentation under +For executing the `sendTelegram` method with a voucher or RLC, refer to the +dedicated section in the documentation under "[How to Pay for Executions](/guides/use-iapp/how-to-pay-executions.md)". ::: @@ -41,7 +41,6 @@ const sendTelegram = await web3telegram.sendTelegram({ telegramContent: 'My telegram message content', senderName: 'Awesome project team', label: 'some-custom-id', - workerpoolAddressOrEns: 'prod-v8-bellecour.main.pools.iexec.eth', dataMaxPrice: 42, appMaxPrice: 42, workerpoolMaxPrice: 42, @@ -56,7 +55,7 @@ import { type SendTelegramParams } from '@iexec/web3telegram'; ### protectedData -`Address` +**Type:** `Address` The address of the `protectedData` holding the contact's telegram chat ID. @@ -76,7 +75,7 @@ const sendTelegram = await web3telegram.sendTelegram({ ### senderName -`string` +**Type:** `string` The name of the telegram message sender. @@ -96,9 +95,7 @@ const sendTelegram = await web3telegram.sendTelegram({ ### telegramContent -`string` - -_maximum size_: 512 kb +**Type:**`string` **Maximum siz:** `512 kb` The telegram message content that needs to be sent. The content is limited to 512 kb in size. Telegram content is encrypted and stored in IPFS. @@ -119,7 +116,8 @@ const sendTelegram = await web3telegram.sendTelegram({ ### useVoucher -**Type:** `boolean` +**Type:** `boolean` + **Default:** `false` This optional param allows you to pay for the deal using your voucher. Make sure @@ -137,7 +135,6 @@ const sendTelegram = await web3telegram.sendTelegram({ telegramContent: 'My telegram message content', senderName: 'Awesome project team', label: 'some-custom-id', - workerpoolAddressOrEns: 'prod-v8-bellecour.main.pools.iexec.eth', dataMaxPrice: 42, appMaxPrice: 42, workerpoolMaxPrice: 42, @@ -147,16 +144,16 @@ const sendTelegram = await web3telegram.sendTelegram({ ::: tip -If your voucher doesn't have enough to cover the deal, the SDK -will automatically get the required amount to your iExec account. Ensure that -your voucher is authorized to access your iExec account and that your account -has sufficient funds for this transfer to proceed. +If your voucher doesn't have enough RLC to cover the deal, the SDK will +automatically get the required amount to your iExec account. Ensure that your +voucher is authorized to access your iExec account and that your account has +sufficient funds for this transfer to proceed. ::: ### label -`string | undefined` +**Type:** `string | undefined` Allows adding a custom public label. The Web3telegram tool writes this onchain as `iexec_args` in the deal params. @@ -178,9 +175,9 @@ const sendTelegram = await web3telegram.sendTelegram({ ### workerpoolAddressOrEns -`workerpoolAddressOrEns | undefined` +**Type:** `workerpoolAddressOrEns | undefined` -_default_: iExec's production workerpool +**Default:** `{{workerpoolAddress}}` (iExec's workerpool) Allows specifying the workerpool that will run the Web3Telegram application. @@ -195,23 +192,15 @@ const sendTelegram = await web3telegram.sendTelegram({ protectedData: '0x123abc...', senderName: 'Arthur', telegramContent: 'My telegram message content', - workerpoolAddressOrEns: 'prod-v8-bellecour.main.pools.iexec.eth', // [!code focus] + workerpoolAddressOrEns: '0xa5de76...', // [!code focus] }); ``` -::: tip - -iExec currently offers a production workerpool located at the Ethereum Name -Service (ENS) address `prod-v8-bellecour.main.pools.iexec.eth`. This is the -default workerpool for running confidential computations on the iExec platform. - -::: - ### dataMaxPrice -`number | undefined` +**Type:** `number | undefined` -_default_: `0` +**Default:** `0` Allows specifying the maximum amount (in nRLC) you are willing to pay the telegram chat ID owner for using their data. The owner of the protected chat ID @@ -234,9 +223,9 @@ const sendTelegram = await web3telegram.sendTelegram({ ### appMaxPrice -`number | undefined` +**Type:** `number | undefined` -_default_: `0` +**Default:** `0` Allows specifying the maximum amount (in nRLC) you are willing to pay the Web3telegram app provider (iExec) for using the Web3telegram application. @@ -258,9 +247,9 @@ const sendTelegram = await web3telegram.sendTelegram({ ### workerpoolMaxPrice -`number | undefined` +**Type:** `number | undefined` -_default_: `0` +**Default:** `0` Allows specifying the maximum amount you want to pay the workerpool provider for using their infrastructure to run the web3telegram app in nRLC. @@ -288,14 +277,26 @@ import { type SendTelegramResponse } from '@iexec/web3telegram'; ### taskId -`Addess` +**Type:** `Address` This uniquely identifies the telegram task on the iExec side chain. You can view the status of the `sendTelegram` method by monitoring the task on the -[iExec Explorer](https://explorer.iex.ec/bellecour). +iExec blockchain +explorer . diff --git a/src/utils/chain.utils.ts b/src/utils/chain.utils.ts index 491c423..5c8f4ca 100644 --- a/src/utils/chain.utils.ts +++ b/src/utils/chain.utils.ts @@ -23,6 +23,14 @@ export interface Chain { url: string; }; }; + chainName: string; + iexecExplorerUrl: string; + workerpoolAddress: string; + ipfsGateway: string; + web3MailAddress: string; + web3MailAppWhitelist: string; + web3TelegramAddress: string; + web3TelegramAppWhitelist: string; } export function getSupportedChains(): Chain[] { @@ -34,6 +42,14 @@ export function getSupportedChains(): Chain[] { nativeCurrency: arbitrum.nativeCurrency, rpcUrls: arbitrum.rpcUrls, blockExplorers: arbitrum.blockExplorers, + chainName: 'arbitrum-mainnet', + iexecExplorerUrl: 'https://explorer.iex.ec/arbitrum-mainnet', + workerpoolAddress: '0x2C06263943180Cc024dAFfeEe15612DB6e5fD248', + ipfsGateway: 'https://ipfs-gateway.arbitrum-mainnet.iex.ec', + web3MailAddress: '0x9E37767A18B7E7ac2bbeba0900e3B5b0613FA385', + web3MailAppWhitelist: '0xD5054a18565c4a9E5c1aa3cEB53258bd59d4c78C', + web3TelegramAddress: '0xD8614ad70A73A426A15F6474EB4aE633e0015805', + web3TelegramAppWhitelist: '0x53AFc09a647e7D5Fa9BDC784Eb3623385C45eF89', }, { id: Number(bellecour.id), @@ -49,6 +65,14 @@ export function getSupportedChains(): Chain[] { 'https://blockscout-bellecour.iex.ec', }, }, + chainName: 'bellecour', + iexecExplorerUrl: 'https://explorer.iex.ec/bellecour', + workerpoolAddress: 'prod-v8-bellecour.main.pools.iexec.eth', + ipfsGateway: 'https://ipfs-gateway.v8-bellecour.iex.ec', + web3MailAddress: 'web3mail.apps.iexec.eth', + web3MailAppWhitelist: '0x781482C39CcE25546583EaC4957Fb7Bf04C277D2', + web3TelegramAddress: 'web3telegram.apps.iexec.eth', + web3TelegramAppWhitelist: '0x192C6f5AccE52c81Fcc2670f10611a3665AAA98F', }, ]; }