diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index e48e0ac4..140780db 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -2,9 +2,7 @@ name: main-ci on: workflow_dispatch: - push: - paths-ignore: - - 'README.md' + pull_request: jobs: build: diff --git a/.vitepress/config.ts b/.vitepress/config.ts index a6e94155..8714f543 100644 --- a/.vitepress/config.ts +++ b/.vitepress/config.ts @@ -101,7 +101,7 @@ export default withMermaid( // https://vitepress.dev/reference/default-theme-config nav: [ { text: 'Get Started', link: '/get-started/welcome' }, - { text: 'Guides', link: '/guides/build-iapp/' }, + { text: 'Guides', link: '/guides/build-iapp/build-&-deploy' }, { text: 'References', link: '/references/dataProtector' }, { component: 'ChainSelector', diff --git a/.vitepress/sidebar.ts b/.vitepress/sidebar.ts index 5df5d996..db1c5bf1 100644 --- a/.vitepress/sidebar.ts +++ b/.vitepress/sidebar.ts @@ -73,7 +73,7 @@ export function getSidebar() { }, { text: 'πŸͺ™ RLC Token', - link: '/get-started/rlc', + link: '/get-started/overview/rlc', }, ], }, @@ -477,10 +477,6 @@ export function getSidebar() { text: 'Advanced Configuration', link: '/references/dataProtector/advanced/advanced-configuration', }, - { - text: 'Sharing smart contract', - link: '/references/dataProtector/advanced/dps-smart-contract', - }, { text: 'Apps whitelist', link: '/references/dataProtector/advanced/apps-whitelist', diff --git a/README.md b/README.md index 8be4a0fb..87458fc4 100644 --- a/README.md +++ b/README.md @@ -79,7 +79,7 @@ steps to contribute: Fork this repository and ensure you're working on the `main` branch: -[![fork-button](./src/public/fork-button.png)](https://github.com/iExecBlockchainComputing/documentation/fork) +[![fork-button](/src/public/fork-button.png)](https://github.com/iExecBlockchainComputing/documentation/fork) ### 2. Set Up Your Development Environment @@ -168,19 +168,14 @@ for input parameters: ## TODO - Add an audit section for smart contracts -- Add Arbitrum support -- On arbitrum hide : DataProtector Sharing ?? - Adapt hardcoded address to feat with new contracts deployed on arbitrum - Add link to the new explorer feature Asset_Types in the guide => `handle-schemas-dataset-types` - Add link to remix for deploying whitelist -- complete `use-iapp` section -- Maybe split input and output in two diff sub section in build your iapp guide - SGX vs TDX need review - Explorer l'intΓ©gration de codeSpace -- complete `Protocol`section -- Add a Development workflow -- Update context7 when doc will be deployed +- Add a Development workflow section (1 - ProtectData, 2- ...) +- Update context7 when doc will be deployed (Martin) - Check theGraph Images with design Team - Update the Dune Dashboard to the final version - Add new section in `iexec-explorer.md` file to talk about: available chain on @@ -189,7 +184,10 @@ for input parameters: - Check how to pay guide to update with the launch on Arbitrum (RLC vs xRLC) - framework AI supportΓ© TDX vs SGX - check glossary -- migrate github SDK doc here +- migrate github iexec SDK doc here - migrate pay-per-task page into a guide - check pages (introduction & getting-started) for use-iapp guide +- explain TDX vs SGX +- Give recap of Workerpool address fo chains +- Talk about ENS on Bellecour(it's not supported on arbitrum) - Rework Advanced iApp building guides. (from "old" protocol doc) diff --git a/src/build-iapp/guides/build-&-deploy.md b/src/build-iapp/guides/build-&-deploy.md deleted file mode 100644 index e69de29b..00000000 diff --git a/src/components/AddressChip.vue b/src/components/AddressChip.vue index 568c6117..90598dac 100644 --- a/src/components/AddressChip.vue +++ b/src/components/AddressChip.vue @@ -15,8 +15,8 @@ + + diff --git a/src/components/ChainSelector.vue b/src/components/ChainSelector.vue index 1a903718..6be13e7c 100644 --- a/src/components/ChainSelector.vue +++ b/src/components/ChainSelector.vue @@ -77,8 +77,8 @@ if (!userStore.chainId) { userStore.setSelectedChain(walletChain); } } else { - // Otherwise, use Bellecour as default - const defaultChain = getChainById(0x86); // Bellecour + // Otherwise, use Arbitrum as default + const defaultChain = getChainById(42161); // Arbitrum if (defaultChain) { userStore.setSelectedChain(defaultChain); } diff --git a/src/components/TokenSymbol.vue b/src/components/TokenSymbol.vue new file mode 100644 index 00000000..5778577a --- /dev/null +++ b/src/components/TokenSymbol.vue @@ -0,0 +1,25 @@ + + + diff --git a/src/get-started/develop-with-ai.md b/src/get-started/develop-with-ai.md index faecb310..fe222cbe 100644 --- a/src/get-started/develop-with-ai.md +++ b/src/get-started/develop-with-ai.md @@ -7,13 +7,13 @@ description: # πŸ€– Develop with AI -Building privacy-first applications with iExec can be accelerated using +AI tools accelerate building privacy-first applications with iExec using AI-powered development tools. This guide covers how to effectively use AI assistants while maintaining security best practices. ## πŸ“š Documentation for LLMs and AI Code Editors -You can use some MCP (Model Control Protocol) servers like +You can use MCP (Model Control Protocol) servers like [Context7](https://context7.com/iexecblockchaincomputing/documentation-tools) to provide: @@ -23,12 +23,12 @@ provide: ## 🎨 Vibe Coding Integration -Vibe coding is a modern way to build applications by describing what you want in -plain language. An AI assistant (like Cursor or ChatGPT) then generates code -based on your description. +Vibe coding lets you build applications by describing what you want in plain +language. An AI assistant (like Cursor or ChatGPT) then generates code based on +your description. -It's fast, creative, and helps you prototype ideas quickly. Even if you're not a -technical expert you can: +It's fast, creative, and helps you prototype ideas quickly. Even non-technical +users can: - Write a prompt like: "I want to create a form able to protect my data with DataProtector" diff --git a/src/get-started/helloWorld.md b/src/get-started/helloWorld.md index 4b06eb3b..fa23f2e5 100644 --- a/src/get-started/helloWorld.md +++ b/src/get-started/helloWorld.md @@ -14,13 +14,9 @@ import ChainSelector from '@/components/ChainSelector.vue' > Reading time πŸ•’ 2 mins -
-
- 🌐 -

Select Your Network

-
-
- Network: +
+
+

🌐 Select Your Network :

@@ -41,7 +37,7 @@ import ChainSelector from '@/components/ChainSelector.vue'
πŸ“š

1 - iExec Overview

-

Discover how iExec technologies work and the problem they solves

+

Discover how iExec technologies work and the problems they solve

8 min read
@@ -100,21 +96,21 @@ Before you begin, make sure you have:
- 🦊 Ethereum Wallet - + 🦊 Ethereum Wallet +
Metamask Download β†’
- πŸ“¦ Node.js v20+ + πŸ“¦ Node.js v20+
Download β†’
- 🐳 Docker installed + 🐳 Docker installed
Download β†’ @@ -122,7 +118,7 @@ Before you begin, make sure you have:
- 🐳 DockerHub Account + 🐳 DockerHub Account
Sign Up β†’ diff --git a/src/get-started/helloWorld/1-overview.md b/src/get-started/helloWorld/1-overview.md index d416ccc7..ff5d3ee7 100644 --- a/src/get-started/helloWorld/1-overview.md +++ b/src/get-started/helloWorld/1-overview.md @@ -1,10 +1,9 @@ --- title: iExec Overview description: - Explore how iExec enables developers to build privacy-preserving dApps using - confidential computing, blockchain, and secure data management. Learn how - tools like DataProtector and iApps empower users to control, protect, and - monetize sensitive data across Web3 applications. + Explore how iExec's confidential computing toolkit helps developers build + privacy-preserving dApps. Learn how DataProtector and iApps let users control, + protect, and monetize sensitive data. --- # 🧐 iExec Overview @@ -66,8 +65,8 @@ description: ## πŸ‘· How do we Solve it? -Unlike traditional security solutions, iExec protects your data throughout its -entire lifecycle, during storage, transfer, and even while **being processed by +Unlike traditional tools, iExec protects your data throughout its entire +lifecycle - during storage, transfer, and even while **being processed by applications.** This is made possible thanks to @@ -128,8 +127,8 @@ applications: ### 1. Meet Bob: the dApp Developer πŸ‘¨β€πŸ’» -Bob is building a decentralized application that leverages iExec's technology. -His platform consists of: +Bob is building a decentralized application that uses iExec's technology. His +platform consists of: - A user-friendly interface for users. - A DataProtector SDK that's easy to integrate into any application. @@ -159,7 +158,7 @@ And many other use cases...

In this chapter, we covered the core concepts of iExec:

πŸ”’ -

Privacy-preserving Solution: iExec provides tools to protect sensitive data throughout its entire lifecycle - storage, transfer, and processing

+

Privacy-preserving Toolkit: iExec provides tools to protect sensitive data throughout its entire lifecycle - storage, transfer, and processing

πŸ’‘ diff --git a/src/get-started/helloWorld/2-protectData.md b/src/get-started/helloWorld/2-protectData.md index b7e7903d..0f6f743a 100644 --- a/src/get-started/helloWorld/2-protectData.md +++ b/src/get-started/helloWorld/2-protectData.md @@ -6,7 +6,7 @@ description: --- # πŸ›‘οΈ Let's Protect Data @@ -30,7 +30,7 @@ their dApps with these key features: - πŸ” **Data Privacy and Security** - Utilizes end-to-end encryption and decentralized storage + Uses end-to-end encryption and decentralized storage (IPFS or AR.io) to ensure protection and confidentiality, leveraging advanced confidential computing technology. @@ -95,11 +95,11 @@ button:
3 - The encrypted data is stored on IPFS + iExec's protocol stores the encrypted data on IPFS
4 - The symmetric key is stored in a secure enclave (TEE) in the Secret Management Service + iExec's protocol stores the symmetric key in a secure enclave (TEE) in the Secret Management Service
5 @@ -179,7 +179,8 @@ const { address: protectedDataAddress } = await dataProtectorCore.protectData({ - πŸ“¦ **Protected Data** is encrypted and stored on decentralized storage -- ⛓️ **Ownership** is stored on the blockchain and linked to your wallet +- ⛓️ **Ownership** iExec's protocol writes ownership on the blockchain and links + it to your wallet - πŸ”Œ **Integration** is simple with our developer tools diff --git a/src/get-started/helloWorld/4-manageDataAccess.md b/src/get-started/helloWorld/4-manageDataAccess.md index 7addca54..e937396d 100644 --- a/src/get-started/helloWorld/4-manageDataAccess.md +++ b/src/get-started/helloWorld/4-manageDataAccess.md @@ -6,8 +6,8 @@ description: --- diff --git a/src/get-started/helloWorld/5-bonusChapter.md b/src/get-started/helloWorld/5-bonusChapter.md index 1c04bd22..0897a677 100644 --- a/src/get-started/helloWorld/5-bonusChapter.md +++ b/src/get-started/helloWorld/5-bonusChapter.md @@ -58,7 +58,7 @@ description: diff --git a/src/get-started/overview/what-is-protected-data.md b/src/get-started/overview/what-is-protected-data.md index b77571da..29846cb8 100644 --- a/src/get-started/overview/what-is-protected-data.md +++ b/src/get-started/overview/what-is-protected-data.md @@ -1,16 +1,19 @@ --- title: What is Protected Data? -description: Understanding iExec's data protection mechanisms +description: + Learn about iExec's Protected Data - encrypted datasets that enable + privacy-preserving computation. Understand DataProtector encryption, access + controls, and secure data monetization. --- # ❓ What is Protected Data? Protected Data refers to any data encrypted using the **iExec Data Protector -tool**. This end-to-end encryption solution enables users to protect, manage and -monetize their data within the Web3 ecosystem. +tool**. This Turnkey Privacy encryption solution enables users to protect, +manage and monetize their data within the Web3 ecosystem effortlessly.
-

Unlike standard datasets, Protected Data exposes its data types on-chain (for example, indicating that it contains an email address or a photo). This allows anyone to identify entries with the corresponding types.

+

Unlike standard datasets, Protected Data exposes its data types on-chain (indicating types like email addresses or photos). This lets anyone identify entries with matching types.

## Key Concepts @@ -63,7 +66,7 @@ monetize their data within the Web3 ecosystem.
β€’
- Secret storage: Secrets stored in a TEE database. + Secret storage: iExec's protocol secrets in a TEE database.
@@ -127,7 +130,7 @@ monetize their data within the Web3 ecosystem.
5.
- Compute: Authorized users can compute on your data with the authorized iApps + Compute: Authorized users can compute on your data with authorized iApps
@@ -186,7 +189,7 @@ monetize their data within the Web3 ecosystem.
-

Ready to protect your data? Start with our DataProtector guides and learn how to secure your sensitive information while unlocking its value.

+

Ready to protect your data? Start with our DataProtector guides. Learn how to secure sensitive information while unlocking its value.

## Next Steps diff --git a/src/get-started/protocol/proof-of-contribution.md b/src/get-started/protocol/proof-of-contribution.md index f8a9ca83..b3d592e5 100644 --- a/src/get-started/protocol/proof-of-contribution.md +++ b/src/get-started/protocol/proof-of-contribution.md @@ -50,11 +50,11 @@ take the form of data, applications or computing power. Workers must achieve consensus on the execution result to get the requester’s funds. If consensus is not achieved, the requester is reimbursed. -Worker and scheduler must stake RLC to participate as a computing providers. Bad +Worker and scheduler must stake RLC to participate as computing providers. Bad behaviour from an actor results in a loss of stake. This is essential on the public blockchain, but all values can be set to 0 for -private blockchain solutions. +private blockchain networks. ### Permissioning @@ -766,9 +766,6 @@ An application can only perform result encryption inside an enclave. No encryption key will be provided by the SMS to an application that doesn't run outside an enclave. -(TODO: potential issue, key leaking to malicious application with the requester -attacking a beneficiary) - **[Dataset owner] How do I limit the usage of my dataset to a specific application?** @@ -820,7 +817,7 @@ A scheduler could therefore emit two kinds of workerpoolorder: ### Callback -Some requester might want an onchain callback with the result of the execution. +Some requesters might want an onchain callback with the result of the execution. The callback mechanism is based on [[EIP-1154]](proof-of-contribution.md#references-1). The result is a `bytes` value that is set during the `finalize`. The `IexecProxy` implements both side diff --git a/src/get-started/protocol/worker/manage-access.md b/src/get-started/protocol/worker/manage-access.md index b3631024..bba873b3 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 nRLC) | -| `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 specifig 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 ) | +| `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 specifig 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,3 +106,7 @@ 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 47f10e4e..340bde8e 100644 --- a/src/get-started/protocol/worker/quick-start.md +++ b/src/get-started/protocol/worker/quick-start.md @@ -14,12 +14,13 @@ 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 RLC for every properly computed tasks. +A worker will be rewarded with for every properly computed +tasks. Please note that: -- your wallet must be loaded with RLC. Some RLC must be deposited to your iExec - account in order to stake for incoming tasks. +- your wallet must be loaded with . Some must be + deposited to your iExec account in order to stake for incoming tasks. - your computer needs at least 2 CPUs. ## Start a worker @@ -33,14 +34,18 @@ configuration documentation of the For security reason, it is **highly recommended** to launch your worker in a virtual machine. -After having loaded some RLC and deposited them to your iExec account, you can -start your worker. +After loading some and depositing them to your iExec account, +you can start your worker. -When the worker initialization process is complete, the worker will be started -and you will get something like: **You worker is all set**. Your worker will now -be able to compute some tasks coming from the iExec network to earn some RLCs. +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 . ## 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/quick-start.md b/src/get-started/quick-start.md index afad97a4..9e3c2d32 100644 --- a/src/get-started/quick-start.md +++ b/src/get-started/quick-start.md @@ -102,7 +102,7 @@ learning and prototyping. -## Next StepsAfter Exploring our Starters and Sandboxes +## Next Steps After Exploring our Starters and Sandboxes 1. **Choose Your Framework**: Start with our Next.js template or wait for React/Vue options diff --git a/src/get-started/tooling-and-explorers/bridge.md b/src/get-started/tooling-and-explorers/bridge.md index f79c07d8..a37627ff 100644 --- a/src/get-started/tooling-and-explorers/bridge.md +++ b/src/get-started/tooling-and-explorers/bridge.md @@ -7,13 +7,12 @@ description: # RLC Bridge -**RLC** (RLC Token) is the essential cryptocurrency for interacting with the -iExec protocol. Whether you are executing tasks, accessing protected data, or -participating in the iExec decentralized confidential computing network, you -will need RLC tokens on the appropriate network. +**RLC** (RLC Token) powers all iExec protocol interactions. You need RLC tokens +whether you're executing tasks, accessing protected data, or participating in +the iExec confidential computing network. This guide helps you bridge RLC tokens to **Bellecour** (becoming xRLC) and -**Arbitrum** networks using dedicated bridge solutions. +**Arbitrum** networks using the Bellecour Bridge and Stargate Bridge. ## πŸ—‚οΈ Available Bridges diff --git a/src/get-started/use-cases.md b/src/get-started/use-cases.md index b370ac5f..68ddeea2 100644 --- a/src/get-started/use-cases.md +++ b/src/get-started/use-cases.md @@ -7,9 +7,9 @@ description: # Use Cases Showcase -Explore our demo applications showcasing iExec's privacy-preserving technologies -in action. Each use case demonstrates real-world applications of confidential -computing and decentralized data protection. +Explore our demo applications showcasing iExec's confidential computing toolkit +in action. Each use case shows real-world applications of privacy-preserving +technologies.

Welcome to iExec

@@ -13,17 +15,19 @@ description: ## πŸ€” Why iExec? -In a world where data privacy is more critical than ever, developers face a -tough challenge: how to build innovative applications without compromising -sensitive user data. +You shouldn't have to choose between innovation and privacy. **Every developer +deserves the power** to build groundbreaking applications while **keeping user +data completely secure**. Your users deserve **absolute confidence** that their +privacy is protected.
-

iExec solves this by providing a privacy-first toolkit that makes it simple to protect, manage, and compute data securely, even in untrusted environments. We believe privacy should be a built-in feature, not an afterthought.

+

iExec solves this with Turnkey Privacy - a toolkit that simplifies data protection, management, and secure computation, even in untrusted environments. We believe privacy should be plug-and-play simple, not an afterthought.

## πŸ› οΈ How we Make it Happen -iExec provides a complete toolkit that makes privacy simple and actionable: +iExec provides Turnkey Privacy tools that make confidential computing simple and +actionable:
@@ -48,7 +52,7 @@ iExec provides a complete toolkit that makes privacy simple and actionable:
πŸ”§
- Plug & Play tools: Fluide experience with comprehensive toolkit, SDKs, and ready-to-use components for seamless development + Activable Tools: Composable toolkit, SDKs, and ready-to-use components for straightforward development
@@ -152,7 +156,7 @@ Confidential Computing made easy
-

In the next chapters, we'll guide you through our Hello World journey, a 30 minutes start that will teach you everything about iExec, from protecting sensitive data to building and deploying confidential apps.

+

The next chapters guide you through our Hello World journey. This 30-minute start teaches you everything about iExec. You'll learn protecting sensitive data and building and deploying confidential apps.

## πŸš€ Start Building @@ -184,5 +188,12 @@ Ready to build privacy-first applications? Choose your path: --- -_Ready to transform how you handle sensitive data? Let's build something amazing -together._ +_**Join thousands of developers** who are already transforming the future of +privacy. **You have the power** to build the next generation of trust-first +applications. Let's build something amazing together._ πŸš€ + +
+

πŸ† Join the iExec Community

+

Be part of a growing movement of developers, data owners, and privacy advocates who are reshaping how the world handles sensitive data.

+

When you build with iExec, you're not just solving a technical challengeβ€”you're championing user rights and digital sovereignty. Every application you create makes the web more private, more secure, and more trustworthy for everyone.

+
diff --git a/src/guides/build-iapp/build-&-deploy.md b/src/guides/build-iapp/build-&-deploy.md index a655b1ad..06f99b98 100644 --- a/src/guides/build-iapp/build-&-deploy.md +++ b/src/guides/build-iapp/build-&-deploy.md @@ -7,8 +7,8 @@ description: # Create and Deploy an iApp iApps (iExec Applications) are decentralized applications that run on the iExec -network. They leverage confidential computing to ensure data privacy and -security while providing scalable off-chain computation. +network. They use confidential computing to ensure data privacy and security +while providing scalable off-chain computation. ## About iApp Generator @@ -194,86 +194,31 @@ After your tests pass and the package is built, you can deploy your iApp to a supported network. During deployment, you'll enter your DockerHub credentials, specify your app version, and push both standard and TEE-compatible images: - + + + ## Real Examples @@ -359,4 +304,169 @@ for month in range(12): diff --git a/src/guides/build-iapp/debugging.md b/src/guides/build-iapp/debugging.md index 80172c4a..6101f034 100644 --- a/src/guides/build-iapp/debugging.md +++ b/src/guides/build-iapp/debugging.md @@ -28,7 +28,7 @@ Understanding how your task progresses through the iExec network: ### iExec Explorer -Track your tasks at [explorer.iex.ec](https://explorer.iex.ec): +Track your tasks at [iExec Explorer](https://explorer.iex.ec): - Search by `taskId` or deal ID - Check status: `PENDING` β†’ `ACTIVE` β†’ `COMPLETED/FAILED` diff --git a/src/guides/build-iapp/how-to-get-and-decrypt-results.md b/src/guides/build-iapp/how-to-get-and-decrypt-results.md index cca00b1e..f56bef05 100644 --- a/src/guides/build-iapp/how-to-get-and-decrypt-results.md +++ b/src/guides/build-iapp/how-to-get-and-decrypt-results.md @@ -258,7 +258,7 @@ Error: Failed to decrypt result **Solutions**: -- Ensure you're using the correct wallet (beneficiary) +- Use the correct wallet (beneficiary) - Check if result was actually encrypted - Verify task completed successfully diff --git a/src/guides/build-iapp/index.md b/src/guides/build-iapp/index.md deleted file mode 100644 index c488ba73..00000000 --- a/src/guides/build-iapp/index.md +++ /dev/null @@ -1,47 +0,0 @@ ---- -title: Build iApp Guides -description: Complete guide collection for building privacy-first iApps on iExec ---- - -# πŸ› οΈ Build iApp Guides - -Welcome to the complete collection of guides for building privacy-first -applications on iExec. These guides will walk you through every aspect of -creating, testing, and deploying confidential iApps. - -## πŸš€ Getting Started - -- **[Build & Deploy](/guides/build-iapp/build-&-deploy)** - Your first iApp in - 15 minutes -- **[Inputs and Outputs](/guides/build-iapp/inputs-and-outputs)** - Handle data - flow in TEE environment -- **[Debugging](/guides/build-iapp/debugging)** - Troubleshoot execution issues - -## πŸ” Access Control & Management - -- **[Manage Access](/guides/build-iapp/manage-access)** - Control who can use - your iApp -- **[How to Get and Decrypt Results](/guides/build-iapp/how-to-get-and-decrypt-results)** - - Retrieve and use outputs - -## πŸ§ͺ Advanced Features - -- **[Using TDX (Experimental)](/guides/build-iapp/using-tdx)** - Next-gen TEE - technology - -## βš™οΈ Advanced iApp Building - -- **[Advanced Overview](/guides/build-iapp/advanced/overview)** - Deep dive: - Docker, SGX/TDX, SCONE/Gramine, datasets & E2E - -## πŸ“š What's Next? - -After mastering these guides, explore: - -- **[iApp Generator](/references/iapp-generator)** - Complete development - toolkit -- **[What is an iApp?](/get-started/overview/what-is-iapp)** - Core concepts and - TEE overview - -Ready to build your first privacy-preserving application? Start with the -[Build & Deploy](/guides/build-iapp/build-&-deploy) guide! diff --git a/src/guides/build-iapp/manage-access.md b/src/guides/build-iapp/manage-access.md index fad6bb19..a325c2a5 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 RLC for each execution +5. **You automatically receive** payment in for each execution ``` Deployed iApp + 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 RLC per execution -- `"500000000"` - 0.5 RLC per execution +- `"1000000000"` - 1 per execution +- `"500000000"` - 0.5 per execution ::: tip -1 RLC = 1,000,000,000 nRLC (10^9) +1 = 1,000,000,000 nano (10^9) ::: @@ -301,3 +301,7 @@ Next steps: Complete CLI reference - **[Official Orders Documentation](https://protocol.docs.iex.ec/for-developers/advanced/manage-your-apporders)** - Protocol-level order management + + diff --git a/src/guides/manage-data/manage-access.md b/src/guides/manage-data/manage-access.md index 7486e25e..13863327 100644 --- a/src/guides/manage-data/manage-access.md +++ b/src/guides/manage-data/manage-access.md @@ -190,7 +190,7 @@ yourself! Set to `0` for free access, or specify a price to monetize your data automatically. -**Example**: `pricePerAccess: 1_000_000_000` = 1 RLC per access +**Example**: `pricePerAccess: 1_000_000_000` = 1 per access β†’ **Want to learn more monetization capabilities?** See our detailed [Monetize Protected Data guide](/guides/manage-data/monetize-protected-data) @@ -228,3 +228,9 @@ steps: [schemas and dataset types](/guides/manage-data/handle-schemas-dataset-types) - **Monetize data**: Explore [data monetization strategies](/guides/manage-data/monetize-protected-data) + + diff --git a/src/guides/manage-data/monetize-protected-data.md b/src/guides/manage-data/monetize-protected-data.md index a544fb0e..3674b327 100644 --- a/src/guides/manage-data/monetize-protected-data.md +++ b/src/guides/manage-data/monetize-protected-data.md @@ -1,5 +1,8 @@ --- -title: Monetize Protected Data +title: + Monetize your encrypted data with iExec's DataProtector. Learn usage-based + payments with signed orders and time-based access subscriptions. Turn your + data into revenue streams securely. description: Explore different ways to monetize your protected data with signed orders (usage-based) and time-based access (time-period payments) @@ -9,7 +12,7 @@ description: **Your protected data can generate revenue automatically.** -iExec offers two fundamental approaches for monetizing your data: +iExec provides two fundamental approaches for monetizing your data: - **DataProtector Core**: **Signed orders** with pay-per-use counting - specify exact conditions, users pay for each individual data processing diff --git a/src/guides/use-iapp/add-inputs-to-execution.md b/src/guides/use-iapp/add-inputs-to-execution.md index 79469175..c9c6d3ba 100644 --- a/src/guides/use-iapp/add-inputs-to-execution.md +++ b/src/guides/use-iapp/add-inputs-to-execution.md @@ -333,6 +333,8 @@ const dbPassword = process.env.IEXEC_SECRET_2; // 'database-password' Now that you understand how to add inputs to iApp executions: - Learn about - [Using iApps with Protected Data](./use-iapp-with-protected-data.md) -- Explore [Different Ways to Execute](./different-ways-to-execute.md) iApps -- Check out our [How to Pay for Executions](./how-to-pay-executions.md) guide + [Using iApps with Protected Data](/guides/use-iapp/use-iapp-with-protected-data) +- Explore + [Different Ways to Execute](/guides/use-iapp/different-ways-to-execute) iApps +- Check out our + [How to Pay for Executions](/guides/use-iapp/how-to-pay-executions) guide diff --git a/src/guides/use-iapp/different-ways-to-execute.md b/src/guides/use-iapp/different-ways-to-execute.md index c9fbd30c..2cd2afd3 100644 --- a/src/guides/use-iapp/different-ways-to-execute.md +++ b/src/guides/use-iapp/different-ways-to-execute.md @@ -109,6 +109,7 @@ iapp test ## Next Steps - Learn how to - [use iApps with protected data](./use-iapp-with-protected-data.md) -- Discover how to [add inputs to execution](./add-inputs-to-execution.md) -- Understand [how to pay for executions](./how-to-pay-executions.md) + [use iApps with protected data](/guides/use-iapp/use-iapp-with-protected-data) +- Discover how to + [add inputs to execution](/guides/use-iapp/add-inputs-to-execution) +- Understand [how to pay for executions](/guides/use-iapp/how-to-pay-executions) diff --git a/src/guides/use-iapp/getting-started.md b/src/guides/use-iapp/getting-started.md index cbd9667e..12aa52eb 100644 --- a/src/guides/use-iapp/getting-started.md +++ b/src/guides/use-iapp/getting-started.md @@ -6,8 +6,8 @@ description: # πŸš€ Getting Started with iApps -Welcome to the world of secure, privacy-preserving computation! This guide gives -you a high-level overview of how to use iApps on the iExec network. +Welcome to secure, privacy-preserving computation! This guide shows you how to +use iApps on the iExec confidential computing network. ## Prerequisites @@ -15,9 +15,9 @@ Before you begin, make sure you have: - A Web3 wallet (MetaMask, WalletConnect, etc.) - Some RLC tokens for paying computation fees (or access to free vouchers - through learning programs) - [Learn about RLC tokens](/get-started/rlc) and + through learning programs) - + [Learn about RLC tokens](/get-started/overview/rlc) and [how to bridge them](/get-started/tooling-and-explorers/bridge) - - **Note**: On Arbitrum, you'll need AETH (Arbitrum ETH) instead of RLC - Basic understanding of blockchain transactions - iExec SDK installed @@ -67,21 +67,21 @@ orders: When you execute an iApp, the system matches your request with available orders from all three categories. For a deeper understanding of how orders work and how to manage them, see the -[Build & Deploy guide](/build-iapp/guides/build-&-deploy) in the Build iApp +[Build & Deploy guide](/guides/build-iapp/build-&-deploy) in the Build iApp section. ## Detailed Guides For step-by-step instructions, check out these guides: -- **[Different Ways to Execute](./different-ways-to-execute.md)** - iExec cli, - lib, and other execution methods -- **[Use iApps with Protected Data](./use-iapp-with-protected-data.md)** - +- **[Different Ways to Execute](/guides/use-iapp/different-ways-to-execute)** - + iExec cli, lib, and other execution methods +- **[Use iApps with Protected Data](/guides/use-iapp/use-iapp-with-protected-data)** - Working with sensitive data securely -- **[Add Inputs to Execution](./add-inputs-to-execution.md)** - How to provide - data and parameters to iApps -- **[How to Pay for Executions](./how-to-pay-executions.md)** - Understanding - costs and payment options +- **[Add Inputs to Execution](/guides/use-iapp/add-inputs-to-execution)** - How + to provide data and parameters to iApps +- **[How to Pay for Executions](/guides/use-iapp/how-to-pay-executions)** - + Understanding costs and payment options ## Quick Start diff --git a/src/guides/use-iapp/how-to-pay-executions.md b/src/guides/use-iapp/how-to-pay-executions.md index db41b230..08eb9754 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 iApps: -1. **RLC Tokens**: Direct payment using RLC (Request Compute Language) tokens +1. **RLC Tokens**: Direct payment using tokens 2. **Vouchers**: Pre-funded vouchers for simplified payment 3. **Mixed Payment**: Combination of RLC and vouchers @@ -86,7 +86,7 @@ iexec account show iexec account deposit 100 ``` -## Method 2: Paying with Vouchers +## Method 2: Paying with Vouchers Vouchers are pre-funded payment instruments that simplify the payment process and can be shared with others. @@ -120,10 +120,10 @@ const result = await dataProtectorCore.processProtectedData({ ::: tip -If your voucher doesn't have enough xRLC 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 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. ::: @@ -490,6 +490,13 @@ const executeWithPaymentRetry = async (params: any, maxRetries = 3) => { Now that you understand payment methods: -- Learn about [Adding Inputs to Execution](./add-inputs-to-execution.md) -- Explore [Using iApps with Protected Data](./use-iapp-with-protected-data.md) +- Learn about + [Adding Inputs to Execution](/guides/use-iapp/add-inputs-to-execution) +- Explore + [Using iApps with Protected Data](/guides/use-iapp/use-iapp-with-protected-data) - Review the pricing information above for detailed cost analysis + + diff --git a/src/guides/use-iapp/how-to-pay/how-to-pay-for-web3mail.md b/src/guides/use-iapp/how-to-pay/how-to-pay-for-web3mail.md index f74b1ee4..599832b1 100644 --- a/src/guides/use-iapp/how-to-pay/how-to-pay-for-web3mail.md +++ b/src/guides/use-iapp/how-to-pay/how-to-pay-for-web3mail.md @@ -2,21 +2,21 @@ title: How to Pay for Web3Mail description: Learn how to pay for Web3Mail's confidential computing power using vouchers - and xLC for secure, blockchain-based email communication. + and RLC for secure, blockchain-based email communication. --- # How to Pay for Web3Mail -[Web3Mail](/references/web3mail) dev tool offers secure, blockchain-based -communication by encrypting emails and protecting user privacy. +[Web3Mail](/references/web3mail) offers secure, blockchain-based communication +by encrypting emails and protecting user privacy. -The `sendEmail` function uses confidential computing power to encrypt and send -messages, ensuring secure and decentralized email exchanges. +The `sendEmail` function uses iExec's protocol to encrypt and send messages, +ensuring secure and decentralized email exchanges. -This guide explains how to pay for Web3Mail's computing power using **vouchers** -and **xRLC**, detailing the steps for each method. +This guide shows how to pay for Web3Mail using **vouchers** and +****. -## Using Vouchers for Web3Mail +## Using Vouchers for Web3Mail ### Step 1: Obtain a Voucher @@ -34,8 +34,8 @@ and **xRLC**, detailing the steps for each method. Builder dashboard screenshot -The iExec Builder Dashboard is a comprehensive tool for managing vouchers and -resources, providing an intuitive interface for: +The iExec Builder Dashboard manages vouchers and resources with an intuitive +interface for: - **Claiming Vouchers**: Builders can claim vouchers during the BUILD and EARN stages. @@ -52,8 +52,8 @@ contract to debit your account if the voucher 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 xRLC for fallback payment in Web3Mail, refer -to the **Using xRLC with Web3Mail** section. +For additional information on using for fallback payment in +Web3Mail, refer to the **Using with Web3Mail** section. ### Step 4: Execute Web3Mail's SendEmail Function @@ -73,56 +73,49 @@ const sendEmail = await web3mail.sendEmail({ }); ``` -## Using xRLC for Web3Mail +## Using for Web3Mail -If you choose to use xRLC to cover the computational cost of Web3Mail (or if you -need to cover data access costs such as retrieving the recipient's email -address), follow these steps: +If you choose to use to cover the computational cost of Web3Mail +(or if you need to cover data access costs such as retrieving the recipient's +email address), follow these steps: ### Install the iExec SDK To manage RLC tokens, developers must use the iExec SDK, which offers all the necessary tools for interacting with the iExec platform. This includes -depositing, withdrawing, and checking balances of RLC and xRLC +depositing, withdrawing, and checking balances of RLC and -- In your JS/TS project npm install iexec +- In your JS/TS project, run `npm install iexec` - Instantiate the iExec SDK (see the [doc](https://github.com/iExecBlockchainComputing/iexec-sdk/blob/master/docs/README.md#quick-start)) ```javascript import { IExec } from 'iexec'; -// connect injected provider +// Connect to injected provider const iexec = new IExec({ ethProvider: window.ethereum }); ``` ### Purchase RLC -Obtain RLC tokens from a supported cryptocurrency exchange. +Obtain RLC tokens from a supported cryptocurrency exchange. For detailed +information on how to buy RLC tokens, see our +[RLC Token guide](/get-started/overview/rlc) which covers all available DEX and +CEX options. -### Convert to xRLC +For detailed instructions on how to bridge RLC tokens between networks, see our +[Bridge guide](/get-started/tooling-and-explorers/bridge) which covers all +supported networks and bridging methods. -Use the iExec Bridge to convert your RLC into xRLC for use on iExec's sidechain. -The bridging operation follows the lock & mint / burn & unlock principle. When -sending tokens from Mainnet to Bellecour, the bridge locks the initial amount on -the source chain and mints the equivalent on the destination chain. When going -in the other direction, it burns tokens on the Sidechain and unlocks the same -amount on Mainnet. The bridged asset is called xRLC on Bellecour. +### Deposit -Users can send tokens from the Ethereum Mainnet to the iExec Sidechain or -vice-versa using the Account Manager -([iExec Explorer](https://explorer.iex.ec/bellecour) or -[POA Bridge UI](https://bridge-bellecour.iex.ec/)) available across all iExec -products. - -### Deposit xRLC - -Deposit the xRLC into your iExec account using the command: +Deposit the into your iExec account using the command: ```javascript -iexec.account.deposit(xRLC_amount); +iexec.account.deposit(RLC_amount); ``` -This converts xRLC into sRLC, used as proof of funds for task execution. +This converts into sRLC, used as proof of funds for task +execution. ### Check sRLC Balance @@ -135,7 +128,7 @@ iexec.account.show(); ### Execute sendEmail Set the `useVoucher` parameter to `false` when using Web3Mail's sendEmail -function to pay with xRLC: +function to pay with : ```ts twoslash import { IExecWeb3mail, getWeb3Provider } from '@iexec/web3mail'; @@ -153,7 +146,7 @@ const sendEmail = await web3mail.sendEmail({ ### Withdraw sRLC (If Desired) -Convert sRLC back to xRLC and withdraw to your wallet using: +Convert sRLC back to and withdraw to your wallet using: ```javascript iexec.account.withdraw(RLC_amount); @@ -162,4 +155,6 @@ iexec.account.withdraw(RLC_amount); diff --git a/src/guides/use-iapp/how-to-pay/how-to-pay-for-web3telegram.md b/src/guides/use-iapp/how-to-pay/how-to-pay-for-web3telegram.md index a22702db..e9a9d098 100644 --- a/src/guides/use-iapp/how-to-pay/how-to-pay-for-web3telegram.md +++ b/src/guides/use-iapp/how-to-pay/how-to-pay-for-web3telegram.md @@ -1,23 +1,22 @@ --- title: How to Pay for Web3Telegram description: - Learn how to pay for Web3Telegram using vouchers or xRLC. This guide walks you - through obtaining vouchers, managing RLC to xRLC conversion, and using both - methods for secure Telegram communication. + Learn how to pay for Web3Telegram's confidential computing power using + vouchers and RLC for secure, blockchain-based email communication. --- # How to Pay for Web3Telegram -[Web3Telegram](/references/web3telegram) dev tool offers secure, -blockchain-based communication by encrypting emails and protecting user privacy. +[Web3Telegram](/references/web3telegram) offers secure, blockchain-based +communication by encrypting messages and protecting user privacy. -The `sendTelegram` function uses confidential computing power to encrypt and -send messages, ensuring secure and decentralized email exchanges. +The `sendTelegram` function uses iExec's protocol to encrypt and send messages, +ensuring secure and decentralized email exchanges. -This guide explains how to pay for Web3Telegram's computing power using -**vouchers** and **xRLC**, detailing the steps for each method. +This guide shows how to pay for Web3Telegram using **vouchers** and +****. -## Using Vouchers for Web3Telegram +## Using Vouchers for Web3Telegram ### Step 1: Obtain a Voucher @@ -35,8 +34,8 @@ This guide explains how to pay for Web3Telegram's computing power using Builder dashboard screenshot -The iExec Builder Dashboard is a comprehensive tool for managing vouchers and -resources, providing an intuitive interface for: +The iExec Builder Dashboard manages vouchers and resources with an intuitive +interface for: - **Claiming Vouchers**: Builders can claim vouchers during the BUILD and EARN stages. @@ -53,8 +52,8 @@ contract to debit your account if the voucher 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 xRLC for fallback payment in Web3Telegram, -refer to the **Using xRLC with Web3Telegram** section. +For additional information on using for fallback payment in +Web3Telegram, refer to the **Using with Web3Telegram** section. ### Step 4: Execute Web3Telegram's `sendTelegram` Function @@ -71,7 +70,7 @@ const sendTelegram = await web3telegram.sendTelegram({ protectedData: '0x123abc...', telegramContent: 'My telegram message content', senderName: 'Awesome project team', - label: 'some-cutom-id', + label: 'some-custom-id', workerpoolAddressOrEns: 'prod-v8-bellecour.main.pools.iexec.eth', dataMaxPrice: 42, appMaxPrice: 42, @@ -80,56 +79,49 @@ const sendTelegram = await web3telegram.sendTelegram({ }); ``` -## Using xRLC for Web3Telegram +## Using for Web3Telegram -If you choose to use xRLC to cover the computational cost of Web3Telegram (or if -you need to cover data access costs such as retrieving the recipient's Chat Id), -follow these steps: +If you choose to use to cover the computational cost of +Web3Telegram (or if you need to cover data access costs such as retrieving the +recipient's Chat Id), follow these steps: ### Install the iExec SDK To manage RLC tokens, developers must use the iExec SDK, which offers all the necessary tools for interacting with the iExec platform. This includes -depositing, withdrawing, and checking balances of RLC and xRLC +depositing, withdrawing, and checking balances of RLC and -- In your JS/TS project npm install iexec +- In your JS/TS project, run `npm install iexec` - Instantiate the iExec SDK (see the [doc](https://github.com/iExecBlockchainComputing/iexec-sdk/blob/master/docs/README.md#quick-start)) ```javascript import { IExec } from 'iexec'; -// connect injected provider +// Connect to injected provider const iexec = new IExec({ ethProvider: window.ethereum }); ``` ### Purchase RLC -Obtain RLC tokens from a supported cryptocurrency exchange. +Obtain RLC tokens from a supported cryptocurrency exchange. For detailed +information on how to buy RLC tokens, see our +[RLC Token guide](/get-started/overview/rlc) which covers all available DEX and +CEX options. -### Convert to xRLC +For detailed instructions on how to bridge RLC tokens between networks, see our +[Bridge guide](/get-started/tooling-and-explorers/bridge) which covers all +supported networks and bridging methods. -Use the iExec Bridge to convert your RLC into xRLC for use on iExec's sidechain. -The bridging operation follows the lock & mint / burn & unlock principle. When -sending tokens from Mainnet to Bellecour, the bridge locks the initial amount on -the source chain and mints the equivalent on the destination chain. When going -in the other direction, it burns tokens on the Sidechain and unlocks the same -amount on Mainnet. The bridged asset is called xRLC on Bellecour. +### Deposit -Users can send tokens from the Ethereum Mainnet to the iExec Sidechain or -vice-versa using the Account Manager -([iExec Explorer](https://explorer.iex.ec/bellecour) or -[POA Bridge UI](https://bridge-bellecour.iex.ec/)) available across all iExec -products. - -### Deposit xRLC - -Deposit the xRLC into your iExec account using the command: +Deposit the into your iExec account using the command: ```javascript -iexec.account.deposit(xRLC_amount); +iexec.account.deposit(RLC_amount); ``` -This converts xRLC into sRLC, used as proof of funds for task execution. +This converts into sRLC, used as proof of funds for task +execution. ### Check sRLC Balance @@ -142,7 +134,7 @@ iexec.account.show(); ### Execute `sendTelegram` Set the `useVoucher` parameter to `false` when using Web3Telegram's sendTelegram -function to pay with xRLC: +function to pay with : ```ts twoslash import { IExecWeb3telegram, getWeb3Provider } from '@iexec/web3telegram'; @@ -155,7 +147,7 @@ const sendTelegram = await web3telegram.sendTelegram({ protectedData: '0x123abc...', telegramContent: 'My telegram message content', senderName: 'Awesome project team', - label: 'some-cutom-id', + label: 'some-custom-id', workerpoolAddressOrEns: 'prod-v8-bellecour.main.pools.iexec.eth', dataMaxPrice: 42, appMaxPrice: 42, @@ -166,7 +158,7 @@ const sendTelegram = await web3telegram.sendTelegram({ ### Withdraw sRLC (If Desired) -Convert sRLC back to xRLC and withdraw to your wallet using: +Convert sRLC back to and withdraw to your wallet using: ```javascript iexec.account.withdraw(RLC_amount); @@ -175,4 +167,6 @@ iexec.account.withdraw(RLC_amount); diff --git a/src/guides/use-iapp/introduction.md b/src/guides/use-iapp/introduction.md index 223cf203..5aef1167 100644 --- a/src/guides/use-iapp/introduction.md +++ b/src/guides/use-iapp/introduction.md @@ -53,7 +53,8 @@ When a deal is triggered, the following sequence occurs: 7. **Result Generation**: Computation results are generated 8. **Result Delivery**: Results are returned to the requester through the network -9. **Payment Settlement**: RLC tokens are distributed to all participants +9. **Payment Settlement**: tokens are distributed to all + participants ### Network Architecture Diagram @@ -70,8 +71,8 @@ When a deal is triggered, the following sequence occurs: 5. **Data Access**: iApp requests access to protected data through secure channels 6. **Computation**: iApp processes data within the TEE, maintaining privacy -7. **Payment Distribution**: RLC tokens are distributed to all participants - based on completed tasks +7. **Payment Distribution**: tokens are distributed to all + participants based on completed tasks This decentralized architecture ensures that no single entity has control over the entire process, while the use of TEEs guarantees that sensitive data remains @@ -80,5 +81,9 @@ protected throughout the computation. ## Getting Started Ready to start using iApps? Check out our -[Getting Started Guide](./getting-started.md) to learn how to find, execute, and -interact with iApps on the iExec network. +[Getting Started Guide](/guides/use-iapp/getting-started) to learn how to find, +execute, and interact with iApps on the iExec network. + + diff --git a/src/guides/use-iapp/use-iapp-with-protected-data.md b/src/guides/use-iapp/use-iapp-with-protected-data.md index 1b7ea5d9..3a501a1b 100644 --- a/src/guides/use-iapp/use-iapp-with-protected-data.md +++ b/src/guides/use-iapp/use-iapp-with-protected-data.md @@ -455,6 +455,8 @@ const taskResult = await dataProtectorCore.getResultFromCompletedTask({ Now that you understand how to use iApps with protected data: -- Learn about [Different Ways to Execute](./different-ways-to-execute.md) iApps -- Explore [How to Pay for Executions](./how-to-pay-executions.md) -- Check out our [Add Inputs to Execution](./add-inputs-to-execution.md) guide +- Learn about + [Different Ways to Execute](/guides/use-iapp/different-ways-to-execute) iApps +- Explore [How to Pay for Executions](/guides/use-iapp/how-to-pay-executions) +- Check out our + [Add Inputs to Execution](/guides/use-iapp/add-inputs-to-execution) guide diff --git a/src/index.md b/src/index.md index 8d7bf0ac..71ae80b7 100644 --- a/src/index.md +++ b/src/index.md @@ -23,31 +23,31 @@ features: - icon: πŸ” title: Protect & Manage Data details: - Secure your data with advanced encryption and control access while - maintaining privacy using DataProtector - link: /get-started/overview/what-is-protected-data + DataProtector encrypts and allows you to control access to your sensitive + data. Ready-to-use privacy toolkit for developers. + link: /guides/manage-data/manage-access - icon: πŸ€– title: Build iApps details: - Create decentralized applications that run on confidential computing - infrastructure with our iApp Generator - link: /get-started/overview/what-is-iapp + iApp Generator builds confidential applications that run in secure TEEs. + Custom confidentiality integration without managing infrastructure. + link: /guides/build-iapp/build-&-deploy - icon: ⚑ title: Use iApps details: - Execute existing iApps including Web3Mail, Web3Telegram for your - applications + Execute privacy-preserving apps like Web3Mail and Web3Telegram. Use what + others built, extend what you need. link: /guides/use-iapp/introduction - icon: πŸ’° title: Monetize Data details: Create revenue streams from your data while maintaining full control and privacy - link: /guides/use-iapp/how-to-pay/how-to-pay-for-web3mail + link: /guides/use-iapp/how-to-pay-executions - icon: 🧠 title: Protocols details: - Deep dive into the core concepts of the protocol and understand how iExec - enables privacy, governance, and monetization + Deep dive into core protocol concepts. Understand how iExec enables + privacy, governance, and monetization. link: /get-started/protocol/proof-of-contribution --- diff --git a/src/modules/helloWorld/CouponCode.vue b/src/modules/helloWorld/CouponCode.vue index db55dc4d..20e2549a 100644 --- a/src/modules/helloWorld/CouponCode.vue +++ b/src/modules/helloWorld/CouponCode.vue @@ -60,7 +60,7 @@ diff --git a/src/references/dataProtector/advanced/apps-whitelist.md b/src/references/dataProtector/advanced/apps-whitelist.md index b2a14726..2f22aab4 100644 --- a/src/references/dataProtector/advanced/apps-whitelist.md +++ b/src/references/dataProtector/advanced/apps-whitelist.md @@ -6,7 +6,7 @@ description: Environment (TEE) dApp and whitelist usage for secure data delivery. --- -# Apps Whitelist +# Apps Whitelist In order to consume a protected data, an iExec TEE dApp needs to be provided. @@ -21,13 +21,13 @@ The story goes as follow: 1. The collection owner adds a protected data to a collection. When doing so, they need to set an `addOnlyAppWhitelist` parameter (see - [here](../dataProtectorSharing/collection/addToCollection.md#addonlyappwhitelist)). + [here](/references/dataProtector/dataProtectorSharing/collection/addToCollection#addonlyappwhitelist)). This parameter is the address of a whitelist smart contract that contains applications allowed to consume the protected data. 2. When a user wants to consume the protected data, they need to provide the address of the application they want to use to consume the data (See - [consumeProtectedData](../dataProtectorSharing/consume/consumeProtectedData.md#app-param) + [consumeProtectedData](/references/dataProtector/dataProtectorSharing/consume/consumeProtectedData#app-param)  `app` parameter). This chosen application must be in the whitelist defined by the collection owner. @@ -78,3 +78,7 @@ See it in See it in [https://blockscout-bellecour.iex.ec/](https://blockscout-bellecour.iex.ec/address/0x1cb7D4F3FFa203F211e57357D759321C6CE49921) + + diff --git a/src/references/dataProtector/advanced/apps-whitelist/addAppToAddOnlyAppWhitelist.md b/src/references/dataProtector/advanced/apps-whitelist/addAppToAddOnlyAppWhitelist.md index e56acb39..db370135 100644 --- a/src/references/dataProtector/advanced/apps-whitelist/addAppToAddOnlyAppWhitelist.md +++ b/src/references/dataProtector/advanced/apps-whitelist/addAppToAddOnlyAppWhitelist.md @@ -5,7 +5,7 @@ description: data access control. --- -# addAppToAddOnlyAppWhitelist +# addAppToAddOnlyAppWhitelist Method to add an app (iExec TEE dApp) into the `AddOnlyAppWhitelist`. @@ -95,4 +95,10 @@ const isAddedToAddAppToAddOnlyAppWhitelist = import { type SuccessWithTransactionHash } from '@iexec/dataprotector'; ``` -See [`SuccessWithTransactionHash`](../../types.md#successwithtransactionhash) +See +[`SuccessWithTransactionHash`](/references/dataProtector/types#successwithtransactionhash) + + diff --git a/src/references/dataProtector/advanced/apps-whitelist/createAddOnlyAppWhitelist.md b/src/references/dataProtector/advanced/apps-whitelist/createAddOnlyAppWhitelist.md index 567f287a..935ee810 100644 --- a/src/references/dataProtector/advanced/apps-whitelist/createAddOnlyAppWhitelist.md +++ b/src/references/dataProtector/advanced/apps-whitelist/createAddOnlyAppWhitelist.md @@ -5,7 +5,7 @@ description: becomes the owner by default, with transferable ownership as an ERC721. --- -# createAddOnlyAppWhitelist +# createAddOnlyAppWhitelist Method to create an `AddOnlyAppWhitelist`. By default, the owner will be the caller of the `createAddOnlyAppWhitelist` method, but as the @@ -31,3 +31,7 @@ const isAddedToAddAppToAddOnlyAppWhitelist = ```ts twoslash import { type CreateAppWhitelistResponse } from '@iexec/dataprotector'; ``` + + diff --git a/src/references/dataProtector/advanced/apps-whitelist/getUserAddOnlyAppWhitelist.md b/src/references/dataProtector/advanced/apps-whitelist/getUserAddOnlyAppWhitelist.md index 9472a2b3..5d5842b3 100644 --- a/src/references/dataProtector/advanced/apps-whitelist/getUserAddOnlyAppWhitelist.md +++ b/src/references/dataProtector/advanced/apps-whitelist/getUserAddOnlyAppWhitelist.md @@ -5,7 +5,7 @@ description: app access control management. --- -# getUserAddOnlyAppWhitelist +# getUserAddOnlyAppWhitelist Method to get `AddOnlyAppWhitelist`, you can filter by user ethereum address. @@ -59,3 +59,8 @@ import { type GetUserAppWhitelistResponse } from '@iexec/dataprotector'; // Child types import { type AddOnlyAppWhitelist } from '@iexec/dataprotector'; ``` + + diff --git a/src/references/dataProtector/advanced/dps-smart-contract.md b/src/references/dataProtector/advanced/dps-smart-contract.md deleted file mode 100644 index 08f2e408..00000000 --- a/src/references/dataProtector/advanced/dps-smart-contract.md +++ /dev/null @@ -1,123 +0,0 @@ ---- -title: DataProtector Sharing Smart Contracts -description: - Learn about the DataProtector Sharing smart contract for managing and sharing - protected data via collections, subscriptions, rentals, and sales. Explore the - Solidity code and features in iExec's implementation. ---- - -# DataProtector Sharing Smart Contracts - -A specific smart contract has been developed to support all of the "Sharing" -module features. - -It mainly serves as **a storage for collections**, their associated protected -data, and their owners. - -## Code - -You can find the Solidity code -[here](https://github.com/iExecBlockchainComputing/dataprotector-sdk/tree/main/packages/sharing-smart-contract) - -## DataProtectorSharing - -This is a contract that provides a mechanism for managing and sharing protected -data through collections, subscriptions, rentals, and sales. This contract -extends several functionalities from OpenZeppelin libraries and incorporates -access control, token handling, and order management. - -::: tip FUNCTIONS - ---- - -#### General - -- `consumeProtectedData(protectedData, workerpoolOrder, app)` -- `getProtectedDataRenter(protectedData, renterAddress)` -- `getCollectionSubscriber(collectionTokenId, subscriberAddress)` -- `createCollection(to)` -- `addProtectedDataToCollection(collectionTokenId, protectedData, appWhitelist)` -- `removeProtectedDataFromCollection(protectedData)` - -#### Subscription - -- `subscribeToCollection(collectionTokenId, subscriptionParams)` -- `setProtectedDataToSubscription(protectedData)` -- `removeProtectedDataFromSubscription(protectedData)` -- `setSubscriptionParams(collectionTokenId, subscriptionParams)` - -#### Renting - -- `rentProtectedData(protectedData, rentingParams)` -- `setProtectedDataToRenting(protectedData, rentingParams)` -- `removeProtectedDataFromRenting(protectedData)` - -#### Sale - -- `buyProtectedData(protectedData, to, price)` -- `setProtectedDataForSale(protectedData, price)` -- `removeProtectedDataForSale(protectedData)` - -::: - -:::tip EVENTS - ---- - -#### General - -- `OwnershipTransferred(previousOwner, newOwner)` -- `ProtectedDataTransfer(protectedData, fromCollection, toCollection, appWhitelist)` - -#### Subscription - -- `NewSubscription(collectionTokenId, subscriber, endDate)` -- `ProtectedDataAddedForSubscription(collectionTokenId, protectedData)` -- `ProtectedDataRemovedFromSubscription(collectionTokenId, protectedData)` -- `NewSubscriptionParams(collectionTokenId, subscriptionParams)` - -#### Renting - -- `NewRental(collectionTokenId, protectedData, renter, endDate)` -- `ProtectedDataAddedForRenting(collectionTokenId, protectedData, rentingParams)` -- `ProtectedDataRemovedFromRenting(collectionTokenId, protectedData)` - -#### Sale - -- `ProtectedDataSold(collectionTokenId, newOwner, protectedData)` -- `ProtectedDataAddedForSale(collectionTokenId, protectedData, price)` -- `ProtectedDataRemovedFromSale(collectionTokenId, protectedData)` -- `ProtectedDataConsumed(dealid, protectedData, mode)` - -::: - -:::tip ERRORS - ---- - -#### General - -- `OnlyPocoCallerAuthorized(account)` -- `EmptyCallData()` - -#### Subscription - -- `InvalidSubscriptionParams(collectionTokenId, subscriptionParams)` -- `OnGoingCollectionSubscriptions(collectionTokenId)` -- `ProtectedDataAvailableInSubscription(collectionTokenId, protectedData)` - -#### Renting - -- `ProtectedDataCurrentlyBeingRented(protectedData)` -- `ProtectedDataNotAvailableForRenting(protectedData)` -- `DurationInvalid(duration)` -- `ProtectedDataAvailableForRenting(collectionTokenId, protectedData)` - -#### Sale - -- `ProtectedDataNotForSale(protectedData)` -- `InvalidPriceForPurchase(protectedData, price)` -- `WorkerpoolOrderNotFree(workerpoolOrder)` -- `NoValidRentalOrSubscription(collectionTokenId, protectedData)` - -::: diff --git a/src/references/dataProtector/dataProtectorCore/getGrantedAccess.md b/src/references/dataProtector/dataProtectorCore/getGrantedAccess.md index 2ee47134..08679c58 100644 --- a/src/references/dataProtector/dataProtectorCore/getGrantedAccess.md +++ b/src/references/dataProtector/dataProtectorCore/getGrantedAccess.md @@ -86,12 +86,12 @@ const listGrantedAccess = await dataProtectorCore.getGrantedAccess({ ::: tip If you specified an application whitelist when using -[`grantAccess`](./grantAccess.md), you must specify that same whitelist address -when using this filtering option. The `getGrantedAccess` method does not check -against whitelist smart contracts when aggregating results. If you granted -authorization to a whitelist but specify an application address for the -`authorizedApp` parameter, you will not receive any results unless you _also_ -explicitly granted access to that application address. +[`grantAccess`](/references/dataProtector/dataProtectorCore/grantAccess), you +must specify that same whitelist address when using this filtering option. The +`getGrantedAccess` method does not check against whitelist smart contracts when +aggregating results. If you granted authorization to a whitelist but specify an +application address for the `authorizedApp` parameter, you will not receive any +results unless you _also_ explicitly granted access to that application address. ::: @@ -216,4 +216,8 @@ smaller than the page size. **Type:** GrantedAccess -See [`GrantedAccess`](../types.md#grantedaccess) +See [`GrantedAccess`](/references/dataProtector/types#grantedaccess) + + diff --git a/src/references/dataProtector/dataProtectorCore/getProtectedData.md b/src/references/dataProtector/dataProtectorCore/getProtectedData.md index a25f42ae..ae9106d0 100644 --- a/src/references/dataProtector/dataProtectorCore/getProtectedData.md +++ b/src/references/dataProtector/dataProtectorCore/getProtectedData.md @@ -99,7 +99,8 @@ const listProtectedData = await dataProtectorCore.getProtectedData({ ``` -Available types are listed [here](./protectData#schema). +Available types are listed +[here](/references/dataProtector/dataProtectorCore/protectData#schema). ### owner @@ -190,4 +191,8 @@ const listProtectedData = await dataProtectorCore.getProtectedData({ import { type ProtectedData } from '@iexec/dataprotector'; ``` -See [`ProtectedData`](../types.md#protecteddata) +See [`ProtectedData`](/references/dataProtector/types#protecteddata) + + diff --git a/src/references/dataProtector/dataProtectorCore/getResultFromCompletedTask.md b/src/references/dataProtector/dataProtectorCore/getResultFromCompletedTask.md index 121b5152..6d1d869b 100644 --- a/src/references/dataProtector/dataProtectorCore/getResultFromCompletedTask.md +++ b/src/references/dataProtector/dataProtectorCore/getResultFromCompletedTask.md @@ -134,3 +134,11 @@ import { type GetResultFromCompletedTaskResponse } from '@iexec/dataprotector'; `ArrayBuffer` The actual content of the protected file. + +``` + + +``` diff --git a/src/references/dataProtector/dataProtectorCore/grantAccess.md b/src/references/dataProtector/dataProtectorCore/grantAccess.md index cfa8e79f..e83d8eb4 100644 --- a/src/references/dataProtector/dataProtectorCore/grantAccess.md +++ b/src/references/dataProtector/dataProtectorCore/grantAccess.md @@ -165,7 +165,7 @@ const grantedAccess = await dataProtectorCore.grantAccess({ ::: tip `pricePerAccess` is expressed in nano RLC (nRLC). nRLC is the smallest -subdivision of the RLC token, 1 RLC equals to 10^9 nRLC. +subdivision of the token, 1 equals to 10^9 nRLC. When provided, `pricePerAccess` must be a non-negative integer value. @@ -249,4 +249,10 @@ import { type GrantedAccess } from '@iexec/dataprotector'; The result of this method confirms the new access grant. It consists of a JSON `grantedAccess` object. -[`GrantedAccess`](../types.md#grantedaccess) +[`GrantedAccess`](/references/dataProtector/types#grantedaccess) + + diff --git a/src/references/dataProtector/dataProtectorCore/processProtectedData.md b/src/references/dataProtector/dataProtectorCore/processProtectedData.md index de1ca5b0..a6c7316d 100644 --- a/src/references/dataProtector/dataProtectorCore/processProtectedData.md +++ b/src/references/dataProtector/dataProtectorCore/processProtectedData.md @@ -14,7 +14,8 @@ application. > [!IMPORTANT] > > You must ensure this application has authorization to use the `protectedData`. -> You may grant this permission using the [`grantAccess`](./grantAccess.md) +> You may grant this permission using the +> [`grantAccess`](/references/dataProtector/dataProtectorCore/grantAccess) > method. ## Usage @@ -64,7 +65,7 @@ const processProtectedDataResponse = }); ``` -### app {#app-param} +### app **Type:** `AddressOrENS` @@ -128,7 +129,7 @@ const processProtectedDataResponse = }); ``` -### useVoucher +### useVoucher **Type:** `boolean` **Default:** `false` @@ -153,14 +154,14 @@ const processProtectedDataResponse = ::: tip -If your voucher doesn't have enough xRLC 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 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. ::: -### voucherOwner +### voucherOwner **Type:** `Address` @@ -469,7 +470,7 @@ Bellecour side chain. You can monitor task execution using the ::: tip The -[getResultFromCompletedTask()](../dataProtectorCore/getResultFromCompletedTask.md) +[getResultFromCompletedTask()](/references/dataProtector/dataProtectorCore/getResultFromCompletedTask) function allows you to retrieve the result of a completed task using its `taskId`. @@ -495,3 +496,10 @@ include a file named **content**, which corresponds to the protected data processed during the task. ::: + + diff --git a/src/references/dataProtector/dataProtectorCore/protectData.md b/src/references/dataProtector/dataProtectorCore/protectData.md index 16c798f3..f3355d9a 100644 --- a/src/references/dataProtector/dataProtectorCore/protectData.md +++ b/src/references/dataProtector/dataProtectorCore/protectData.md @@ -128,8 +128,8 @@ const protectedData = await dataProtectorCore.protectData({ ::: tip -If you'd like to **protect a file**, you first need to convert it to some kind -of buffer. To do so, you can use `createArrayBufferFromFile`. +If you'd like to **protect a file**, you first need to convert it to a buffer. +You can use `createArrayBufferFromFile` to do this. ```ts twoslash const file: File = new File([], 'emptyFile.txt'); @@ -218,7 +218,7 @@ The name is public and not encrypted. **Type:** `"ipfs" | "arweave"` **Default:** `"ipfs"` -Specify the storage solution to use for the protected data encrypted payload +Specify the storage platform to use for the protected data encrypted payload hosting. ```ts twoslash @@ -439,4 +439,6 @@ To further check your data was correctly created, you can inspect it on the diff --git a/src/references/dataProtector/dataProtectorCore/revokeAllAccess.md b/src/references/dataProtector/dataProtectorCore/revokeAllAccess.md index becf31c3..55e4977d 100644 --- a/src/references/dataProtector/dataProtectorCore/revokeAllAccess.md +++ b/src/references/dataProtector/dataProtectorCore/revokeAllAccess.md @@ -140,4 +140,9 @@ Once with `isDone: false`, and then with `isDone: true` import { type RevokedAccess } from '@iexec/dataprotector'; ``` -[`RevokedAccess[]`](../types.md#revokedaccess) +[`RevokedAccess[]`](/references/dataProtector/types#revokedaccess) + + diff --git a/src/references/dataProtector/dataProtectorCore/revokeOneAccess.md b/src/references/dataProtector/dataProtectorCore/revokeOneAccess.md index 866de9fe..c460c2ce 100644 --- a/src/references/dataProtector/dataProtectorCore/revokeOneAccess.md +++ b/src/references/dataProtector/dataProtectorCore/revokeOneAccess.md @@ -20,7 +20,8 @@ As this will generate a blockchain transaction, expect it to take a least 5sec The `revokeOneAccess` method requires a `grantedAccess` object as an input parameter. This object is retrieved from the -[`getGrantedAccess`](./getGrantedAccess.md) method. +[`getGrantedAccess`](/references/dataProtector/dataProtectorCore/getGrantedAccess) +method. ```ts twoslash import { IExecDataProtectorCore, getWeb3Provider } from '@iexec/dataprotector'; @@ -88,4 +89,8 @@ data). import { type RevokedAccess } from '@iexec/dataprotector'; ``` -[`RevokedAccess`](../types.md#revokedaccess) +[`RevokedAccess`](/references/dataProtector/types#revokedaccess) + + diff --git a/src/references/dataProtector/dataProtectorCore/transferOwnership.md b/src/references/dataProtector/dataProtectorCore/transferOwnership.md index 9ce7f33b..41d89eed 100644 --- a/src/references/dataProtector/dataProtectorCore/transferOwnership.md +++ b/src/references/dataProtector/dataProtectorCore/transferOwnership.md @@ -103,3 +103,7 @@ The ETH address of the new owner of the `protectedData`. 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). + + diff --git a/src/references/dataProtector/dataProtectorSharing.md b/src/references/dataProtector/dataProtectorSharing.md index 086fd6a6..25992d4a 100644 --- a/src/references/dataProtector/dataProtectorSharing.md +++ b/src/references/dataProtector/dataProtectorSharing.md @@ -6,7 +6,7 @@ description: maintaining control and privacy. --- -# DataProtector Sharing +# DataProtector Sharing The DataProtector Sharing module includes a set of methods for distributing and monetizing your protected data. These work seamlessly in your own applications @@ -31,7 +31,7 @@ is bundled by the user into one or more collections. Within the collection, the user may specify different sharing options for different pieces of data. This illustration shows the hierarchy of a Data Sharing smart contract: -![Data Sharing smart contract](./dataProtectorSharing/data-sharing-sc.png) +![Data Sharing smart contract](/references/dataProtector/dataProtectorSharing/data-sharing-sc.png) The Data Sharing smart contract enforces governance over the user's protected data based on their desired distribution choices. The user has complete control @@ -63,3 +63,7 @@ additional activity from the data owner. This has several key benefits distribution, only the consumer of the data signs their transaction - The data owner doesn't manage access, the Data Sharing smart contract automatically enforces the distribution and monetization choices + + diff --git a/src/references/dataProtector/dataProtectorSharing/collection.md b/src/references/dataProtector/dataProtectorSharing/collection.md index 55921734..d875283a 100644 --- a/src/references/dataProtector/dataProtectorSharing/collection.md +++ b/src/references/dataProtector/dataProtectorSharing/collection.md @@ -6,7 +6,7 @@ description: or selling to control how your data is shared and monetized. --- -# Data Sharing - Collection Methods +# Data Sharing - Collection Methods A collection is a way to group protected data for sharing by the Data Sharing module. The Data Sharing smart contract operates on data contained within a @@ -68,3 +68,7 @@ for any protected data in the collection. The collection owner may list any of their protected data for sale. This is especially useful for dealers of digital assets like NFTs. + + diff --git a/src/references/dataProtector/dataProtectorSharing/collection/addToCollection.md b/src/references/dataProtector/dataProtectorSharing/collection/addToCollection.md index 05ccde21..d590d522 100644 --- a/src/references/dataProtector/dataProtectorSharing/collection/addToCollection.md +++ b/src/references/dataProtector/dataProtectorSharing/collection/addToCollection.md @@ -6,7 +6,7 @@ description: the specified collection. --- -# addToCollection +# addToCollection Method to transfer one of your protected data to a collection of yours in the Data Sharing smart contract. @@ -117,7 +117,7 @@ For this `addOnlyAppWhitelist`, you are free to use `0x256bcd881c33bdf9df952f2a0148f27d439f2e64`. For more details on how to create and manage appsWhitelist, see -[Apps whitelist](../../advanced/apps-whitelist). +[Apps whitelist](/references/dataProtector/advanced/apps-whitelist). ::: @@ -163,4 +163,11 @@ Once with `isDone: false`, and then with `isDone: true` import { type SuccessWithTransactionHash } from '@iexec/dataprotector'; ``` -See [`SuccessWithTransactionHash`](../../types.md#successwithtransactionhash) +See +[`SuccessWithTransactionHash`](/references/dataProtector/types#successwithtransactionhash) + + diff --git a/src/references/dataProtector/dataProtectorSharing/collection/createCollection.md b/src/references/dataProtector/dataProtectorSharing/collection/createCollection.md index 9f48e64e..b880deaf 100644 --- a/src/references/dataProtector/dataProtectorSharing/collection/createCollection.md +++ b/src/references/dataProtector/dataProtectorSharing/collection/createCollection.md @@ -6,7 +6,7 @@ description: DataProtector Sharing. --- -# createCollection +# createCollection Method to create a new collection in the Data Sharing smart contract. @@ -34,3 +34,7 @@ const createCollectionResult = await dataProtectorSharing.createCollection(); ```ts twoslash import { type CreateCollectionResponse } from '@iexec/dataprotector'; ``` + + diff --git a/src/references/dataProtector/dataProtectorSharing/collection/removeCollection.md b/src/references/dataProtector/dataProtectorSharing/collection/removeCollection.md index 64a24b3f..b84d719f 100644 --- a/src/references/dataProtector/dataProtectorSharing/collection/removeCollection.md +++ b/src/references/dataProtector/dataProtectorSharing/collection/removeCollection.md @@ -6,7 +6,7 @@ description: the collection. --- -# removeCollection +# removeCollection Method to remove one of your collections in the Data Sharing smart contract. @@ -33,7 +33,7 @@ const { txHash } = await dataProtectorSharing.removeCollection({ - You must be the owner of the collection. - There should be no protected data in the collection. See - [`removeProtectedDataFromCollection`](./removeProtectedDataFromCollection.md). + [`removeProtectedDataFromCollection`](/references/dataProtector/dataProtectorSharing/collection/removeProtectedDataFromCollection). ## Parameters @@ -67,4 +67,10 @@ const { txHash } = await dataProtectorSharing.removeCollection({ import { type SuccessWithTransactionHash } from '@iexec/dataprotector'; ``` -See [`SuccessWithTransactionHash`](../../types.md#successwithtransactionhash) +See +[`SuccessWithTransactionHash`](/references/dataProtector/types#successwithtransactionhash) + + diff --git a/src/references/dataProtector/dataProtectorSharing/collection/removeProtectedDataFromCollection.md b/src/references/dataProtector/dataProtectorSharing/collection/removeProtectedDataFromCollection.md index fde983da..f33e24f6 100644 --- a/src/references/dataProtector/dataProtectorSharing/collection/removeProtectedDataFromCollection.md +++ b/src/references/dataProtector/dataProtectorSharing/collection/removeProtectedDataFromCollection.md @@ -6,7 +6,7 @@ description: the owner. --- -# removeProtectedDataFromCollection +# removeProtectedDataFromCollection Method to remove one of your protected data from a collection of yours in the Data Sharing smart contract. @@ -73,4 +73,10 @@ const { txHash } = await dataProtectorSharing.removeProtectedDataFromCollection( import { type SuccessWithTransactionHash } from '@iexec/dataprotector'; ``` -See [`SuccessWithTransactionHash`](../../types.md#successwithtransactionhash) +See +[`SuccessWithTransactionHash`](/references/dataProtector/types#successwithtransactionhash) + + diff --git a/src/references/dataProtector/dataProtectorSharing/consume/consumeProtectedData.md b/src/references/dataProtector/dataProtectorSharing/consume/consumeProtectedData.md index 944a7198..7467cbce 100644 --- a/src/references/dataProtector/dataProtectorSharing/consume/consumeProtectedData.md +++ b/src/references/dataProtector/dataProtectorSharing/consume/consumeProtectedData.md @@ -6,11 +6,7 @@ description: Service, and securely retrieving encrypted data from IPFS. --- - - -# consumeProtectedData +# consumeProtectedData Method to consume a protected data, ie. visualize it or download it. @@ -81,7 +77,7 @@ const consumeProtectedDataResult = }); ``` -### app {#app-param} +### app **Type:** `AddressOrENS` @@ -117,7 +113,8 @@ For this `app` parameter you can use the "Protected data delivery TEE dApp":
Please note: This application can only be used within the dataProtectorSharing module, as it is owned by the DataProtector Sharing smart contract. -For more details, see [Apps whitelist](../../advanced/apps-whitelist). +For more details, see +[Apps whitelist](/references/dataProtector/advanced/apps-whitelist). ::: @@ -126,7 +123,8 @@ For more details, see [Apps whitelist](../../advanced/apps-whitelist). If you want to provide **your own TEE dApp**, you will need to create a whitelist that contains your app. -For more details, see [Apps whitelist](../../advanced/apps-whitelist). +For more details, see +[Apps whitelist](/references/dataProtector/advanced/apps-whitelist). ::: @@ -339,3 +337,10 @@ Identifies the specific task associated with the deal. `ArrayBuffer` The actual content of the protected file. + + diff --git a/src/references/dataProtector/dataProtectorSharing/read/getCollectionOwners.md b/src/references/dataProtector/dataProtectorSharing/read/getCollectionOwners.md index f8bc117b..460dd499 100644 --- a/src/references/dataProtector/dataProtectorSharing/read/getCollectionOwners.md +++ b/src/references/dataProtector/dataProtectorSharing/read/getCollectionOwners.md @@ -5,7 +5,7 @@ description: in descending order. --- -# getCollectionOwners +# getCollectionOwners Method to get all collection owners. @@ -68,3 +68,8 @@ Type ↗️ `true` if you (logged-in user) have an active subscription to one of the collections. + + diff --git a/src/references/dataProtector/dataProtectorSharing/read/getCollectionSubscriptions.md b/src/references/dataProtector/dataProtectorSharing/read/getCollectionSubscriptions.md index 40f15f26..64a724fc 100644 --- a/src/references/dataProtector/dataProtectorSharing/read/getCollectionSubscriptions.md +++ b/src/references/dataProtector/dataProtectorSharing/read/getCollectionSubscriptions.md @@ -5,7 +5,7 @@ description: detailed information about subscription activity based on collection ID. --- -# getCollectionSubscriptions +# getCollectionSubscriptions Method to get all subscriptions for: @@ -104,3 +104,8 @@ import { type CollectionSubscription } from '@iexec/dataprotector'; See Type ↗️ + + diff --git a/src/references/dataProtector/dataProtectorSharing/read/getCollectionsByOwner.md b/src/references/dataProtector/dataProtectorSharing/read/getCollectionsByOwner.md index 06970e70..a3de9d0c 100644 --- a/src/references/dataProtector/dataProtectorSharing/read/getCollectionsByOwner.md +++ b/src/references/dataProtector/dataProtectorSharing/read/getCollectionsByOwner.md @@ -5,7 +5,7 @@ description: pagination options. --- -# getCollectionsByOwner +# getCollectionsByOwner Method to get all collections for a specific user. @@ -87,3 +87,9 @@ import type { See Type ↗️ + + diff --git a/src/references/dataProtector/dataProtectorSharing/read/getProtectedDataInCollections.md b/src/references/dataProtector/dataProtectorSharing/read/getProtectedDataInCollections.md index 1e77e275..9df3146d 100644 --- a/src/references/dataProtector/dataProtectorSharing/read/getProtectedDataInCollections.md +++ b/src/references/dataProtector/dataProtectorSharing/read/getProtectedDataInCollections.md @@ -6,7 +6,7 @@ description: timestamp in descending order. --- -# getProtectedDataInCollections +# getProtectedDataInCollections Method to get protected data that are in collections. @@ -227,3 +227,8 @@ import type { See Type ↗️ + + diff --git a/src/references/dataProtector/dataProtectorSharing/read/getProtectedDataPricingParams.md b/src/references/dataProtector/dataProtectorSharing/read/getProtectedDataPricingParams.md index 68e53d18..068acfd3 100644 --- a/src/references/dataProtector/dataProtectorSharing/read/getProtectedDataPricingParams.md +++ b/src/references/dataProtector/dataProtectorSharing/read/getProtectedDataPricingParams.md @@ -6,7 +6,7 @@ description: access. --- -# getProtectedDataPricingParams +# getProtectedDataPricingParams Method to get all distribution params for a protected data. @@ -63,3 +63,8 @@ import type { SubscriptionParams, RentingParams } from '@iexec/dataprotector'; See Type ↗️ + + diff --git a/src/references/dataProtector/dataProtectorSharing/read/getRentals.md b/src/references/dataProtector/dataProtectorSharing/read/getRentals.md index 7fe042ce..663e81cc 100644 --- a/src/references/dataProtector/dataProtectorSharing/read/getRentals.md +++ b/src/references/dataProtector/dataProtectorSharing/read/getRentals.md @@ -5,7 +5,7 @@ description: detailed rental information based on the protected data address. --- -# getRentals +# getRentals Method to get all rentals for: @@ -101,3 +101,8 @@ import type { ProtectedDataRental } from '@iexec/dataprotector'; See Type ↗️ + + diff --git a/src/references/dataProtector/dataProtectorSharing/renting.md b/src/references/dataProtector/dataProtectorSharing/renting.md index c6597a68..90495442 100644 --- a/src/references/dataProtector/dataProtectorSharing/renting.md +++ b/src/references/dataProtector/dataProtectorSharing/renting.md @@ -7,7 +7,7 @@ description: terms, even if modified by the owner. --- -# Data Sharing - Renting +# Data Sharing - Renting Rental agreements are one of the options given for distributing a collection owner's protected data. A rental agreement has the following attributes: @@ -40,3 +40,7 @@ The collection owner has a few options once they list protected data for rent: Making either of these chances is effective immediately but only for future rentals. The Data Sharing smart contract enforces any ongoing rental agreements until the terms expire. + + diff --git a/src/references/dataProtector/dataProtectorSharing/renting/removeProtectedDataFromRenting.md b/src/references/dataProtector/dataProtectorSharing/renting/removeProtectedDataFromRenting.md index 7bc1b923..92e8e7c1 100644 --- a/src/references/dataProtector/dataProtectorSharing/renting/removeProtectedDataFromRenting.md +++ b/src/references/dataProtector/dataProtectorSharing/renting/removeProtectedDataFromRenting.md @@ -6,7 +6,7 @@ description: honored until their rental period ends. --- -# removeProtectedDataFromRenting +# removeProtectedDataFromRenting Method to remove a protected data from renting. @@ -63,4 +63,10 @@ const notForRentingAnymoreResult = import { type SuccessWithTransactionHash } from '@iexec/dataprotector'; ``` -See [`SuccessWithTransactionHash`](../../types.md#successwithtransactionhash) +See +[`SuccessWithTransactionHash`](/references/dataProtector/types#successwithtransactionhash) + + diff --git a/src/references/dataProtector/dataProtectorSharing/renting/rentProtectedData.md b/src/references/dataProtector/dataProtectorSharing/renting/rentProtectedData.md index d717bfbb..a599853b 100644 --- a/src/references/dataProtector/dataProtectorSharing/renting/rentProtectedData.md +++ b/src/references/dataProtector/dataProtectorSharing/renting/rentProtectedData.md @@ -7,7 +7,7 @@ description: a transaction that would revert. --- -# rentProtectedData +# rentProtectedData Method to rent a protected data. @@ -95,7 +95,7 @@ const rentResult = await dataProtectorSharing.rentProtectedData({ ::: tip To get the renting price of the given protected data, you can use -[getProtectedDataPricingParams](../read/getProtectedDataPricingParams.md). +[getProtectedDataPricingParams](/references/dataProtector/dataProtectorSharing/read/getProtectedDataPricingParams). ::: @@ -126,7 +126,7 @@ const rentResult = await dataProtectorSharing.rentProtectedData({ ::: tip To get the renting duration of the given protected data, you can use -[getProtectedDataPricingParams](../read/getProtectedDataPricingParams.md). +[getProtectedDataPricingParams](/references/dataProtector/dataProtectorSharing/read/getProtectedDataPricingParams). ::: @@ -136,4 +136,10 @@ To get the renting duration of the given protected data, you can use import { type SuccessWithTransactionHash } from '@iexec/dataprotector'; ``` -See [`SuccessWithTransactionHash`](../../types.md#successwithtransactionhash) +See +[`SuccessWithTransactionHash`](/references/dataProtector/types#successwithtransactionhash) + + diff --git a/src/references/dataProtector/dataProtectorSharing/renting/setProtectedDataRentingParams.md b/src/references/dataProtector/dataProtectorSharing/renting/setProtectedDataRentingParams.md index 52cffaad..d66a297c 100644 --- a/src/references/dataProtector/dataProtectorSharing/renting/setProtectedDataRentingParams.md +++ b/src/references/dataProtector/dataProtectorSharing/renting/setProtectedDataRentingParams.md @@ -6,7 +6,7 @@ description: isn't listed for rent yet, it will be set for renting with the provided terms. --- -# setProtectedDataRentingParams +# setProtectedDataRentingParams Method to update a protected data renting params. @@ -114,4 +114,9 @@ const setForRentingResult = import { type SuccessWithTransactionHash } from '@iexec/dataprotector'; ``` -See [`SuccessWithTransactionHash`](../../types.md#successwithtransactionhash) +See +[`SuccessWithTransactionHash`](/references/dataProtector/types#successwithtransactionhash) + + diff --git a/src/references/dataProtector/dataProtectorSharing/renting/setProtectedDataToRenting.md b/src/references/dataProtector/dataProtectorSharing/renting/setProtectedDataToRenting.md index c430fbfb..c9033977 100644 --- a/src/references/dataProtector/dataProtectorSharing/renting/setProtectedDataToRenting.md +++ b/src/references/dataProtector/dataProtectorSharing/renting/setProtectedDataToRenting.md @@ -6,7 +6,7 @@ description: data is already listed for rent, it updates the terms accordingly. --- -# setProtectedDataToRenting +# setProtectedDataToRenting Method to allow a protected data to be rented. @@ -115,4 +115,10 @@ const setForRentingResult = import { type SuccessWithTransactionHash } from '@iexec/dataprotector'; ``` -See [`SuccessWithTransactionHash`](../../types.md#successwithtransactionhash) +See +[`SuccessWithTransactionHash`](/references/dataProtector/types#successwithtransactionhash) + + diff --git a/src/references/dataProtector/dataProtectorSharing/selling.md b/src/references/dataProtector/dataProtectorSharing/selling.md index 63f377ec..b9f4c257 100644 --- a/src/references/dataProtector/dataProtectorSharing/selling.md +++ b/src/references/dataProtector/dataProtectorSharing/selling.md @@ -5,7 +5,7 @@ description: through blockchain transactions, and manage data listing operations. --- -# Data Sharing - Selling +# Data Sharing - Selling The owner of protected data may list the data for sale. Upon completion of a sale, ownership of the protected data transfers to the buyer. This is a @@ -13,3 +13,7 @@ permanent operation enforced by the blockchain and executed by the Data Sharing smart contract. The data owner may de-list the protected data at any point until a sale is completed. The new owner of the protected data has full rights to distribute the protected data through any channels they desire. + + diff --git a/src/references/dataProtector/dataProtectorSharing/selling/buyProtectedData.md b/src/references/dataProtector/dataProtectorSharing/selling/buyProtectedData.md index 7a8bd0c9..9969ce89 100644 --- a/src/references/dataProtector/dataProtectorSharing/selling/buyProtectedData.md +++ b/src/references/dataProtector/dataProtectorSharing/selling/buyProtectedData.md @@ -6,7 +6,7 @@ description: the data as desired. --- -# buyProtectedData +# buyProtectedData Method to buy a protected data that is for sale. @@ -151,7 +151,7 @@ purpose of Content Creator usecase-demo. This `addOnlyAppWhitelist` is managed by iExec. For more details on how to create and manage appsWhitelist, see -[Apps whitelist](../../advanced/apps-whitelist). +[Apps whitelist](/references/dataProtector/advanced/apps-whitelist). ::: @@ -161,4 +161,11 @@ For more details on how to create and manage appsWhitelist, see import { type SuccessWithTransactionHash } from '@iexec/dataprotector'; ``` -See [`SuccessWithTransactionHash`](../../types.md#successwithtransactionhash) +See +[`SuccessWithTransactionHash`](/references/dataProtector/types#successwithtransactionhash) + + diff --git a/src/references/dataProtector/dataProtectorSharing/selling/removeProtectedDataForSale.md b/src/references/dataProtector/dataProtectorSharing/selling/removeProtectedDataForSale.md index 73b7b71a..6044f308 100644 --- a/src/references/dataProtector/dataProtectorSharing/selling/removeProtectedDataForSale.md +++ b/src/references/dataProtector/dataProtectorSharing/selling/removeProtectedDataForSale.md @@ -5,7 +5,7 @@ description: purchase transactions. --- -# removeProtectedDataForSale +# removeProtectedDataForSale Method to remove a protected data for sale. @@ -59,4 +59,10 @@ const notForSaleAnymoreResult = import { type SuccessWithTransactionHash } from '@iexec/dataprotector'; ``` -See [`SuccessWithTransactionHash`](../../types.md#successwithtransactionhash) +See +[`SuccessWithTransactionHash`](/references/dataProtector/types#successwithtransactionhash) + + diff --git a/src/references/dataProtector/dataProtectorSharing/selling/setProtectedDataForSale.md b/src/references/dataProtector/dataProtectorSharing/selling/setProtectedDataForSale.md index 7d0081d9..2d642382 100644 --- a/src/references/dataProtector/dataProtectorSharing/selling/setProtectedDataForSale.md +++ b/src/references/dataProtector/dataProtectorSharing/selling/setProtectedDataForSale.md @@ -6,7 +6,7 @@ description: their own pricing or retain the data for personal use." --- -# setProtectedDataForSale +# setProtectedDataForSale Method to set a protected data for sale. @@ -86,4 +86,10 @@ const setForSaleResult = await dataProtectorSharing.setProtectedDataForSale({ import { type SuccessWithTransactionHash } from '@iexec/dataprotector'; ``` -See [`SuccessWithTransactionHash`](../../types.md#successwithtransactionhash) +See +[`SuccessWithTransactionHash`](/references/dataProtector/types#successwithtransactionhash) + + diff --git a/src/references/dataProtector/dataProtectorSharing/subscription.md b/src/references/dataProtector/dataProtectorSharing/subscription.md index 206420ff..f2f2d913 100644 --- a/src/references/dataProtector/dataProtectorSharing/subscription.md +++ b/src/references/dataProtector/dataProtectorSharing/subscription.md @@ -6,7 +6,7 @@ description: modifying terms and protecting subscribers' access. --- -# Data Sharing - Subscription +# Data Sharing - Subscription Subscription agreements are one of the options for distributing a collection owner's protected data. Similar to the rental distribution terms, a subscription @@ -58,3 +58,7 @@ The collection owner has a few options to manage their subscription bundles: Making any of these changes is effective immediately. For any existing subscribers, updates to the subscription terms take effect upon renewal of the subscription. + + diff --git a/src/references/dataProtector/dataProtectorSharing/subscription/removeProtectedDataFromSubscription.md b/src/references/dataProtector/dataProtectorSharing/subscription/removeProtectedDataFromSubscription.md index a093cdb0..fa54fcc2 100644 --- a/src/references/dataProtector/dataProtectorSharing/subscription/removeProtectedDataFromSubscription.md +++ b/src/references/dataProtector/dataProtectorSharing/subscription/removeProtectedDataFromSubscription.md @@ -5,7 +5,7 @@ description: data to current and future subscribers, removing it from subscription access. --- -# removeProtectedDataFromSubscription +# removeProtectedDataFromSubscription Method to remove a protected data from your subscription. @@ -74,4 +74,10 @@ const { txHash } = import { type SuccessWithTransactionHash } from '@iexec/dataprotector'; ``` -See [`SuccessWithTransactionHash`](../../types.md#successwithtransactionhash) +See +[`SuccessWithTransactionHash`](/references/dataProtector/types#successwithtransactionhash) + + diff --git a/src/references/dataProtector/dataProtectorSharing/subscription/setProtectedDataToSubscription.md b/src/references/dataProtector/dataProtectorSharing/subscription/setProtectedDataToSubscription.md index 34673ef0..f35b16a6 100644 --- a/src/references/dataProtector/dataProtectorSharing/subscription/setProtectedDataToSubscription.md +++ b/src/references/dataProtector/dataProtectorSharing/subscription/setProtectedDataToSubscription.md @@ -6,7 +6,7 @@ description: access your data easily. --- -# setProtectedDataToSubscription +# setProtectedDataToSubscription Method to set a protected data as part of your subscription. @@ -63,4 +63,10 @@ const setToSubscriptionResult = import { type SuccessWithTransactionHash } from '@iexec/dataprotector'; ``` -See [`SuccessWithTransactionHash`](../../types.md#successwithtransactionhash) +See +[`SuccessWithTransactionHash`](/references/dataProtector/types#successwithtransactionhash) + + diff --git a/src/references/dataProtector/dataProtectorSharing/subscription/setSubscriptionParams.md b/src/references/dataProtector/dataProtectorSharing/subscription/setSubscriptionParams.md index 0d360eda..d31e44a2 100644 --- a/src/references/dataProtector/dataProtectorSharing/subscription/setSubscriptionParams.md +++ b/src/references/dataProtector/dataProtectorSharing/subscription/setSubscriptionParams.md @@ -6,7 +6,7 @@ description: using the Data Sharing smart contract. --- -# setSubscriptionParams +# setSubscriptionParams Method to set subscription parameters for a given collection of yours. @@ -111,4 +111,10 @@ const setSubscriptionParamsResult = import { type SuccessWithTransactionHash } from '@iexec/dataprotector'; ``` -See [`SuccessWithTransactionHash`](../../types.md#successwithtransactionhash) +See +[`SuccessWithTransactionHash`](/references/dataProtector/types#successwithtransactionhash) + + diff --git a/src/references/dataProtector/dataProtectorSharing/subscription/subscribeToCollection.md b/src/references/dataProtector/dataProtectorSharing/subscription/subscribeToCollection.md index 2ea2eac2..5d51a636 100644 --- a/src/references/dataProtector/dataProtectorSharing/subscription/subscribeToCollection.md +++ b/src/references/dataProtector/dataProtectorSharing/subscription/subscribeToCollection.md @@ -6,7 +6,7 @@ description: no automatic renewal, using the Data Sharing smart contract. --- -# subscribeToCollection +# subscribeToCollection Method to subscribe to a collection. @@ -132,4 +132,10 @@ const { txHash } = await dataProtectorSharing.subscribeToCollection({ import { type SuccessWithTransactionHash } from '@iexec/dataprotector'; ``` -See [`SuccessWithTransactionHash`](../../types.md#successwithtransactionhash) +See +[`SuccessWithTransactionHash`](/references/dataProtector/types#successwithtransactionhash) + + diff --git a/src/references/dataProtector/getting-started.md b/src/references/dataProtector/getting-started.md index 68e07cb2..4872e5f8 100644 --- a/src/references/dataProtector/getting-started.md +++ b/src/references/dataProtector/getting-started.md @@ -1,6 +1,9 @@ --- title: Getting Started -description: DataProtector getting started +description: + Get started with DataProtector - iExec's turnkey privacy toolkit for + encrypting, controlling, and monetizing sensitive data. Learn SDK setup, data + protection, and access controls in minutes. --- # Getting Started @@ -195,7 +198,7 @@ const dataProtectorSharing = dataProtector.sharing; #### Advanced Configuration To add optional parameters, see -[advanced configuration](./advanced/advanced-configuration.md). +[advanced configuration](/references/dataProtector/advanced/advanced-configuration). ::: info @@ -205,9 +208,9 @@ protected data in the experimental **intel TDX** environment. For more details see: -- [configure DataProtector TDX](./advanced/advanced-configuration.md#iexecoptions) -- [create TDX protected data](./dataProtectorCore/protectData.md#usage) -- [process TDX protected data](./dataProtectorCore/processProtectedData.md#workerpool) +- [configure DataProtector TDX](/references/dataProtector/advanced/advanced-configuration#iexecoptions) +- [create TDX protected data](/references/dataProtector/dataProtectorCore/protectData#usage) +- [process TDX protected data](/references/dataProtector/dataProtectorCore/processProtectedData#workerpool) ⚠️ Keep in mind: TDX mode is experimental and can be subject to instabilities or discontinuity. diff --git a/src/references/dataProtector/migrate-from-v1.md b/src/references/dataProtector/migrate-from-v1.md index a202d3f1..3ecf36cf 100644 --- a/src/references/dataProtector/migrate-from-v1.md +++ b/src/references/dataProtector/migrate-from-v1.md @@ -42,8 +42,8 @@ const dataProtector = new IExecDataProtectorCore(web3Provider); // [!code ++] ## Methods -Some methods were renamed in order to standardize the SDK, they still provide -the same functionalities as before. +Some methods were renamed to standardize the SDK, but they still provide the +same functionalities as before. ### Rename `fetchProtectedData` & Add New Filtering Param diff --git a/src/references/dataProtector/types.md b/src/references/dataProtector/types.md index db89799b..e586d99a 100644 --- a/src/references/dataProtector/types.md +++ b/src/references/dataProtector/types.md @@ -17,8 +17,8 @@ Types in DataProtector. ### datasetprice: `string` -- Price (iun nRLC) to charge the user specified in `requesterrestrict` for each - use of this `protectedData` +- Price (in n) to charge the user specified in + `requesterrestrict` for each use of this `protectedData` ### volume: `string` @@ -73,8 +73,9 @@ Types in DataProtector. ### schema: `DataSchema` - Data schema for the protected data as defined when the protected data was - created (see [protectedData](./dataProtectorCore/protectData.md)). `schema` - provides a structured representation of the protected data format and + created (see + [protectedData](/references/dataProtector/dataProtectorCore/protectData)). + `schema` provides a structured representation of the protected data format and attributes. This field plays a crucial role in understanding and interpreting the underlying structure of the sensitive information. @@ -122,3 +123,7 @@ _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/glossary.md b/src/references/glossary.md index 55f92760..00f8945f 100644 --- a/src/references/glossary.md +++ b/src/references/glossary.md @@ -38,7 +38,7 @@ Ensures computation confidentiality through mechanisms of memory encryption at the hardware level (in a Trusted Execution Environment or TEE). It can be used so that only authorized code can run inside a protected area and manipulate its data. In some cases, ensuring that code runs correctly without any third party -altering the execution, is even more important than hiding the computation's +altering the execution is even more important than hiding the computation's data. This concept is called Trusted Computing. These guarantees are critical for a diff --git a/src/references/iapp-generator.md b/src/references/iapp-generator.md index 25990a96..fc5dc478 100644 --- a/src/references/iapp-generator.md +++ b/src/references/iapp-generator.md @@ -1,32 +1,28 @@ --- title: iApp Generator description: - Build privacy-first applications that run in secure TEE environments. Your - complete toolkit for creating, testing, and deploying confidential iApps on - the iExec network. + iApp Generator CLI toolkit for building confidential computing applications. + Create privacy-preserving AI, data analysis, and Web3 apps that run in secure + TEE environments. Deploy in minutes --- # πŸ€– iApp Generator -**Build privacy-first applications that run in secure TEE environments.** iApp -Generator is your complete toolkit for creating, testing, and deploying -confidential iApps on the iExec network. - -Transform your ideas into production-ready privacy-preserving applications in -minutes, not months. +**Here's the tool, what it does, and how to use it.** iApp Generator is a CLI +that builds applications running inside TEEs. You write code, we handle the +confidential computing setup. ## What is iApp Generator? -**iApp Generator** is a CLI tool that simplifies building **iExec Applications -(iApps)** - applications that run inside **Trusted Execution Environments -(TEE)** for maximum privacy and security. +**iApp Generator** builds confidential applications. Your code runs in Intel +SGX/TDX secure enclaves where data stays private during processing. -### What you Can Build +### What you get -- **AI models** that process sensitive data privately -- **Data analysis** tools that protect user information -- **Custom algorithms** with confidential inputs and outputs -- **Privacy-preserving services** for Web3 applications +- **Project scaffolding** - Complete setup, ready to deploy +- **Local testing** - Debug in simulation mode before going live +- **Simple deployment** - One command deploys to TEE workers +- **Data integration** - Works with encrypted datasets out of the box ### What iApp Generator Provides @@ -67,30 +63,30 @@ Ready for production? Dive into specialized topics: - **[Using TDX (Experimental)](/guides/build-iapp/using-tdx)** - Next-gen TEE technology -- **[Complete Guides Overview](/guides/build-iapp/)** - All development guides - in one place +- **[Complete Guides Overview](/guides/build-iapp/build-&-deploy)** - All + development guides in one place ## Why Choose iApp Generator? -### πŸ”’ **Privacy by Design** +### Privacy without infrastructure overhead -Your applications run in hardware-secured enclaves where even the infrastructure -provider can't access your data or code. +Your code runs in Intel SGX/TDX enclaves. Even the worker running your app can't +see what's happening inside. -### ⚑ **Developer-Friendly** +### You build, we handle the TEE complexity -Focus on your application logic while iApp Generator handles the complex TEE -setup, deployment, and execution infrastructure. +Write normal application code. iApp Generator handles secure deployment, worker +coordination, and result encryption. -### 🌍 **Decentralized Infrastructure** +### Runs everywhere TEEs exist -Deploy on a global network of TEE-enabled workers without managing servers or -cloud infrastructure. +Deploy across Intel-enabled workers globally. No server management, no cloud +provider lock-in. -### πŸ”§ **Complete Toolkit** +### Complete toolkit -From local development to production deployment, everything you need is included -in one CLI tool. +Development, testing, deployment, and execution - everything included in one +CLI. ## Ready to Build? @@ -109,7 +105,8 @@ applications: ### Need Help? -- **[Complete Guides](/guides/build-iapp/)** - All development guides +- **[Complete Guides](/guides/build-iapp/build-&-deploy)** - All development + guides - **[iExec Discord](https://discord.com/invite/pbt9m98wnU)** - Community support - **[Protocol Documentation](https://protocol.docs.iex.ec)** - Technical deep dive diff --git a/src/references/iapp-generator/building-your-iexec-app.md b/src/references/iapp-generator/building-your-iexec-app.md index 41994eb6..b3491741 100644 --- a/src/references/iapp-generator/building-your-iexec-app.md +++ b/src/references/iapp-generator/building-your-iexec-app.md @@ -167,7 +167,7 @@ securely within a **Trusted Execution Environment (TEE)**. ::: info -πŸ§ͺ While **TEE** iApp are base on **intel SGX** technology by default, iApp has +πŸ§ͺ While **TEE** iApp are based on **intel SGX** technology by default, iApp has an experimental support for **intel TDX** applications. TDX mode is enabled by setting the environment variable diff --git a/src/references/iapp-generator/deserializer.md b/src/references/iapp-generator/deserializer.md index 11c61f32..2bb5d4e6 100644 --- a/src/references/iapp-generator/deserializer.md +++ b/src/references/iapp-generator/deserializer.md @@ -15,8 +15,8 @@ schema. To simplify this process, you can use our lightweight utility package, `@iexec/dataprotector-deserializer`, in your iApp. This package streamlines the -deserialization of protected data, making it easy for you to access and utilize -the information securely. +deserialization of protected data, making it easy for you to access and use the +information securely. ## Overview @@ -30,9 +30,9 @@ If you want to build your iApp in another language, you need to know how to deserialize a protected data. Under the hood, protected data are **zip files** replicating the tree structure -of the original data object. Each value is stored in a dedicated file, binary -values are stored as is while boolean, numbers, and strings are serialized with -borsh. +of the original data object. iExec's protocol stores each value in a dedicated +file, binary values are stored as is while boolean, numbers, and strings are +serialized with borsh. To access a value from a protected data, your app will need to unzip the iExec dataset file at `$IEXEC_IN/$IEXEC_DATASET_FILENAME`. Then for `'bool'`, `'f64'`, diff --git a/src/references/web3mail.md b/src/references/web3mail.md index cfff7c07..5dbd2bef 100644 --- a/src/references/web3mail.md +++ b/src/references/web3mail.md @@ -16,7 +16,7 @@ The Web3Mail tool offers a secure method to manage email-based communications via the blockchain. This mechanism helps protect the personal information of the email recipients through use of Ethereum addresses. -The email address is stored as a `protectedData` entity using the +iExec's protocol stores the email address as a `protectedData` entity using the [iExec Data Protector tool](/references/dataProtector). Through this mechanism, users have complete control over which applications may use their email address for sending communications. Sending a user a message, therefore, requires diff --git a/src/references/web3mail/methods/fetchMyContacts.md b/src/references/web3mail/methods/fetchMyContacts.md index 5b90ff02..2df575e3 100644 --- a/src/references/web3mail/methods/fetchMyContacts.md +++ b/src/references/web3mail/methods/fetchMyContacts.md @@ -65,3 +65,7 @@ import { type Contact } from '@iexec/web3mail'; ``` [`Contact[]`](/references/dataProtector/types#contact) + + diff --git a/src/references/web3mail/methods/fetchUserContacts.md b/src/references/web3mail/methods/fetchUserContacts.md index f030a46f..e128c857 100644 --- a/src/references/web3mail/methods/fetchUserContacts.md +++ b/src/references/web3mail/methods/fetchUserContacts.md @@ -85,3 +85,7 @@ import { type Contact } from '@iexec/web3mail'; ``` [`Contract[]`](/references/dataProtector/types#contact) + + diff --git a/src/references/web3mail/methods/sendEmail.md b/src/references/web3mail/methods/sendEmail.md index 02cce046..39d3cdfc 100644 --- a/src/references/web3mail/methods/sendEmail.md +++ b/src/references/web3mail/methods/sendEmail.md @@ -10,19 +10,19 @@ description: This method allows an authorized entity to send an email message to a user without needing to know their email address. -The recipient email address is stored 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 +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 [Data Protector `grantAccess`](/references/dataProtector/dataProtectorCore/grantAccess) documentation for more details. ::: tip -For executing the `sendEmail` method with a voucher or xRLC, refer to the -dedicated section in the documentation under +For executing the `sendEmail` method with a voucher or , refer to +the dedicated section in the documentation under "[How to Pay for web3mail](/guides/use-iapp/how-to-pay/how-to-pay-for-web3mail)". ::: @@ -112,7 +112,7 @@ const sendEmail = await web3mail.sendEmail({ }); ``` -### useVoucher +### useVoucher **Type:** `boolean` **Default:** `false` @@ -136,10 +136,10 @@ const sendEmail = await web3mail.sendEmail({ ::: tip -If your voucher doesn't have enough xRLC 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 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. ::: @@ -209,7 +209,7 @@ const sendEmail = await web3mail.sendEmail({ protectedData: '0x123abc...', emailSubject: 'My email subject', emailContent: 'My email content', - label: 'some-cutom-id', // [!code focus] + label: 'some-custom-id', // [!code focus] }); ``` @@ -390,3 +390,10 @@ For any other errors, you'll get a `WorkflowError` error in the form of: errorCause: } ``` + + diff --git a/src/references/web3telegram.md b/src/references/web3telegram.md index 10094200..f485ee1d 100644 --- a/src/references/web3telegram.md +++ b/src/references/web3telegram.md @@ -16,10 +16,10 @@ Web3Telegram offers a secure method to manage telegram communications via the blockchain. This mechanism helps protect the personal information of the telegram chat ID recipients through use of Ethereum addresses. -The telegram chat ID address is stored as a `protectedData` entity using +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](./web3telegram/integration-guide.md#_1-get-your-users-to-retrieve-their-chat-id) +[chat ID](/references/web3telegram/integration-guide#_1-get-your-users-to-retrieve-their-chat-id) for sending communications. Sending a user a message, therefore, requires knowledge of the Ethereum address diff --git a/src/references/web3telegram/getting-started.md b/src/references/web3telegram/getting-started.md index a6825d72..36fedb09 100644 --- a/src/references/web3telegram/getting-started.md +++ b/src/references/web3telegram/getting-started.md @@ -45,8 +45,8 @@ bun add @iexec/web3telegram **This package is an ESM package. Your project needs to use ESM too.**  [**Read more**](https://gist.github.com/sindresorhus/a39789f98801d908bbc7ff3ecc99d99c) -If you use it with **Webpack**, some polyfills will be needed. You will find -later a working project +If you use it with **Webpack**, some polyfills will be needed. You will find a +working project later. ### Instantiate SDK diff --git a/src/references/web3telegram/methods/fetchMyContacts.md b/src/references/web3telegram/methods/fetchMyContacts.md index 9cfaec5f..ae976356 100644 --- a/src/references/web3telegram/methods/fetchMyContacts.md +++ b/src/references/web3telegram/methods/fetchMyContacts.md @@ -65,3 +65,7 @@ import { type Contact } from '@iexec/web3telegram'; ``` [`Contact[]`](/references/dataProtector/types#contact) + + diff --git a/src/references/web3telegram/methods/fetchUserContacts.md b/src/references/web3telegram/methods/fetchUserContacts.md index 8cf0011d..815514a3 100644 --- a/src/references/web3telegram/methods/fetchUserContacts.md +++ b/src/references/web3telegram/methods/fetchUserContacts.md @@ -85,3 +85,7 @@ import { type Contact } from '@iexec/web3telegram'; ``` [`Contract[]`](/references/dataProtector/types#contact) + + diff --git a/src/references/web3telegram/methods/sendTelegram.md b/src/references/web3telegram/methods/sendTelegram.md index 88f43340..c14135ac 100644 --- a/src/references/web3telegram/methods/sendTelegram.md +++ b/src/references/web3telegram/methods/sendTelegram.md @@ -21,8 +21,8 @@ documentation for more details. ::: tip -For executing the `sendTelegram` method with a voucher or xRLC, refer to the -dedicated section in the documentation under +For executing the `sendTelegram` method with a voucher or , refer +to the dedicated section in the documentation under "[How to Pay for web3telegram](/guides/use-iapp/how-to-pay/how-to-pay-for-web3telegram)". ::: @@ -40,7 +40,7 @@ const sendTelegram = await web3telegram.sendTelegram({ protectedData: '0x123abc...', telegramContent: 'My telegram message content', senderName: 'Awesome project team', - label: 'some-cutom-id', + label: 'some-custom-id', workerpoolAddressOrEns: 'prod-v8-bellecour.main.pools.iexec.eth', dataMaxPrice: 42, appMaxPrice: 42, @@ -117,7 +117,7 @@ const sendTelegram = await web3telegram.sendTelegram({ }); ``` -### useVoucher +### useVoucher **Type:** `boolean` **Default:** `false` @@ -136,7 +136,7 @@ const sendTelegram = await web3telegram.sendTelegram({ protectedData: '0x123abc...', telegramContent: 'My telegram message content', senderName: 'Awesome project team', - label: 'some-cutom-id', + label: 'some-custom-id', workerpoolAddressOrEns: 'prod-v8-bellecour.main.pools.iexec.eth', dataMaxPrice: 42, appMaxPrice: 42, @@ -147,10 +147,10 @@ const sendTelegram = await web3telegram.sendTelegram({ ::: tip -If your voucher doesn't have enough xRLC 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 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. ::: @@ -172,7 +172,7 @@ const sendTelegram = await web3telegram.sendTelegram({ protectedData: '0x123abc...', senderName: 'Arthur', telegramContent: 'My telegram message content', - label: 'some-cutom-id', // [!code focus] + label: 'some-custom-id', // [!code focus] }); ``` @@ -293,3 +293,9 @@ import { type SendTelegramResponse } from '@iexec/web3telegram'; 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). + + diff --git a/src/utils/bellecourChainConfig.ts b/src/utils/bellecourChainConfig.ts deleted file mode 100644 index 156eb43f..00000000 --- a/src/utils/bellecourChainConfig.ts +++ /dev/null @@ -1,22 +0,0 @@ -import { type Chain } from 'viem'; - -export const bellecour = { - id: 0x86, - name: 'iExec Sidechain', - nativeCurrency: { - decimals: 18, - name: 'xRLC', - symbol: 'xRLC', - }, - rpcUrls: { - public: { http: ['https://bellecour.iex.ec'] }, - default: { http: ['https://bellecour.iex.ec'] }, - }, - blockExplorers: { - etherscan: { - name: 'Blockscout', - url: 'https://blockscout-bellecour.iex.ec', - }, - default: { name: 'Blockscout', url: 'https://blockscout-bellecour.iex.ec' }, - }, -} as const satisfies Chain; diff --git a/src/utils/chain.utils.ts b/src/utils/chain.utils.ts index eed3f0ad..491c4230 100644 --- a/src/utils/chain.utils.ts +++ b/src/utils/chain.utils.ts @@ -1,5 +1,5 @@ import { arbitrum } from 'viem/chains'; -import { bellecour } from './bellecourChainConfig'; +import { bellecour } from './wagmiNetworks'; import arbitrumLogo from '@/assets/icons/arbitrum.svg'; import iexecLogo from '@/assets/icons/iexec-logo.png'; @@ -36,12 +36,19 @@ export function getSupportedChains(): Chain[] { blockExplorers: arbitrum.blockExplorers, }, { - id: bellecour.id, + id: Number(bellecour.id), name: bellecour.name, icon: iexecLogo, nativeCurrency: bellecour.nativeCurrency, rpcUrls: bellecour.rpcUrls, - blockExplorers: bellecour.blockExplorers, + blockExplorers: { + default: { + name: bellecour.blockExplorers?.default?.name || 'Blockscout', + url: + bellecour.blockExplorers?.default?.url || + 'https://blockscout-bellecour.iex.ec', + }, + }, }, ]; } diff --git a/src/utils/injected-wallet-provider/injected-wallet-provider.ts b/src/utils/injected-wallet-provider/injected-wallet-provider.ts index 0a657294..f6b6c637 100644 --- a/src/utils/injected-wallet-provider/injected-wallet-provider.ts +++ b/src/utils/injected-wallet-provider/injected-wallet-provider.ts @@ -3,7 +3,7 @@ import { EIP6963AnnounceProviderEvent, EIP6963ProviderDetail, EIP6963RequestProviderEvent, -} from './types'; +} from '@/utils/injected-wallet-provider/types'; // This class extends EventEmitter to be able to emit events and give our DApp an interface to subscribe to export class InjectedWalletProvider extends EventEmitter { diff --git a/src/utils/wagmiConfig.ts b/src/utils/wagmiConfig.ts index c4fd8918..c78f72a4 100644 --- a/src/utils/wagmiConfig.ts +++ b/src/utils/wagmiConfig.ts @@ -2,9 +2,9 @@ import { createAppKit } from '@reown/appkit/vue'; import { WagmiAdapter } from '@reown/appkit-adapter-wagmi'; import { http, CreateConnectorFn } from '@wagmi/vue'; import { injected } from '@wagmi/vue/connectors'; -import wagmiNetworks from './wagmiNetworks.ts'; -import { InjectedWalletProvider } from './injected-wallet-provider/injected-wallet-provider.ts'; -import { EIP6963ProviderDetail } from './injected-wallet-provider/types.ts'; +import wagmiNetworks from '@/utils/wagmiNetworks'; +import { InjectedWalletProvider } from '@/utils/injected-wallet-provider/injected-wallet-provider'; +import { EIP6963ProviderDetail } from '@/utils/injected-wallet-provider/types'; import { AppKitNetwork } from '@reown/appkit/networks'; export const projectId = import.meta.env.VITE_REOWN_PROJECT_ID as string;