diff --git a/.vitepress/config.mts b/.vitepress/config.mts index 616014d7..3aa45736 100644 --- a/.vitepress/config.mts +++ b/.vitepress/config.mts @@ -98,9 +98,9 @@ export default defineConfig({ themeConfig: { // https://vitepress.dev/reference/default-theme-config nav: [ - { text: 'Documentation', link: '/documentation/welcome' }, - { text: 'Guides', link: '/' }, - { text: 'References', link: '/' }, + { text: 'Get Started', link: '/get-started/welcome' }, + { text: 'Guides', link: '/guides/build-iapp/' }, + { text: 'References', link: '/references/dataProtector' }, { component: 'ChainSelector', props: { diff --git a/.vitepress/sidebar.ts b/.vitepress/sidebar.ts index 4c011d9c..e27784e4 100644 --- a/.vitepress/sidebar.ts +++ b/.vitepress/sidebar.ts @@ -2,577 +2,569 @@ import type { DefaultTheme } from 'vitepress'; export function getSidebar() { return { - '/documentation/': [ + '/get-started/': [ { text: 'GET STARTED', items: [ - { text: '💡 Welcome', link: '/documentation/welcome' }, + { text: '💡 Welcome', link: '/get-started/welcome' }, + { + text: '🛠️ Toolkit', + link: '/get-started/toolkit', + }, { text: '👋 Hello World', - link: '/documentation/helloWorld', + link: '/get-started/helloWorld', collapsed: true, items: [ { text: 'iExec Overview', - link: '/documentation/helloWorld/1-overview', + link: '/get-started/helloWorld/1-overview', }, { text: 'Protect Data', - link: '/documentation/helloWorld/2-protectData', + link: '/get-started/helloWorld/2-protectData', }, { text: 'Build iApp', - link: '/documentation/helloWorld/3-buildIApp', + link: '/get-started/helloWorld/3-buildIApp', }, { text: 'Manage Data Access', - link: '/documentation/helloWorld/4-manageDataAccess', + link: '/get-started/helloWorld/4-manageDataAccess', }, { text: 'Bonus Chapter !', - link: '/documentation/helloWorld/5-bonusChapter', + link: '/get-started/helloWorld/5-bonusChapter', }, ], }, { text: '🚀 Quick Start', - link: '/documentation/quick-start', + link: '/get-started/quick-start', }, { text: '📋 Use Cases', - link: '/documentation/use-cases', + link: '/get-started/use-cases', + }, + { + text: '🤖 Develop with AI', + link: '/get-started/develop-with-ai', + }, + ], + }, + { + text: 'iExec OVERVIEW', + items: [ + { + text: '❓ What is iExec ?', + link: '/get-started/overview/what-is-iexec', + }, + { + text: '❓  What is Protected Data ?', + link: '/get-started/overview/what-is-protected-data', + }, + { + text: '❓ What is an iApp ?', + link: '/get-started/overview/what-is-iapp', + }, + { + text: '❓ What is a Workerpool ?', + link: '/get-started/overview/what-is-workerpool', }, { text: '🪙 RLC Token', - link: '/documentation/rlc', + link: '/get-started/rlc', }, + ], + }, + { + text: 'TOOLING & EXPLORERS', + items: [ { - text: '🤖 Develop with AI', - link: '/documentation/develop-with-ai', + text: 'iExec Explorer', + link: '/get-started/tooling-and-explorers/iexec-explorer', + }, + { + text: 'Builder Dashboard', + link: '/get-started/tooling-and-explorers/builder-dashboard', + }, + { + text: 'RLC Bridge', + link: '/get-started/tooling-and-explorers/bridge', + }, + { + text: 'Subgraph Explorer', + link: '/get-started/tooling-and-explorers/subgraph-explorer', + }, + { + text: 'Blockchain Explorer', + link: '/get-started/tooling-and-explorers/blockchain-explorer', }, ], }, + { + text: 'PROTOCOL', + items: [ + { + text: '🛡️ Proof of Contribution', + link: '/get-started/protocol/proof-of-contribution', + }, + { + text: '💸 Pay Per Task Model', + link: '/get-started/protocol/pay-per-task', + }, + { + text: '⚙️ Workers & Workerpools', + collapsed: true, + items: [ + { + text: '🚀 Worker Quick Start', + link: '/get-started/protocol/worker/quick-start', + }, + { + text: '🔒 Manage Workerpool Access', + link: '/get-started/protocol/worker/manage-access', + }, + ], + }, + ], + }, + ], + '/guides/': [ { text: 'PROTECT AND MANAGE DATA', items: [ { - text: '❓  What is Protected Data ?', - link: '/documentation/manage-data/what-is-protected-data', + text: 'Manage Access', + link: '/guides/manage-data/manage-access', + }, + { + text: 'Handle Schemas and Dataset Types', + link: '/guides/manage-data/handle-schemas-dataset-types', + }, + { + text: 'Monetize Protected Data', + link: '/guides/manage-data/monetize-protected-data', + }, + ], + }, + { + text: 'BUILD YOUR iAPP', + items: [ + { + text: 'Build and Deploy', + link: '/guides/build-iapp/build-&-deploy', + }, + { + text: 'Manage Access', + link: '/guides/build-iapp/manage-access', }, { - text: '📖 Guides', + text: 'Inputs and Outputs', + link: '/guides/build-iapp/inputs-and-outputs', + }, + { + text: 'Using TDX', + link: '/guides/build-iapp/using-tdx', + }, + { + text: 'How to Get and Decrypt Results', + link: '/guides/build-iapp/how-to-get-and-decrypt-results', + }, + { + text: 'Debugging', + link: '/guides/build-iapp/debugging', + }, + ], + }, + { + text: 'USE AN iAPP', + items: [ + { + text: '📝 Introduction', + link: '/guides/use-iapp/introduction', + }, + { + text: '🚀 Getting Started', + link: '/guides/use-iapp/getting-started', + }, + { + text: 'Different Ways to Execute an iApp', + link: '/guides/use-iapp/different-ways-to-execute', + }, + { + text: 'Add Inputs to the Execution', + link: '/guides/use-iapp/add-inputs-to-execution', + }, + { + text: 'Use iApp with Protected Data', + link: '/guides/use-iapp/use-iapp-with-protected-data', + }, + { + text: 'Find iApps to Use', + link: '/guides/use-iapp/find-iapps', + }, + { + text: 'How to Pay the Executions', + link: '/guides/use-iapp/how-to-pay-executions', + }, + { + text: '💰 How to Pay', collapsed: true, items: [ { - text: 'Manage Access', - link: '/documentation/manage-data/guides/manage-access', + text: 'How to Pay for Web3Mail', + link: '/guides/use-iapp/how-to-pay/how-to-pay-for-web3mail', }, { - text: 'Handle Schemas and Dataset Types', - link: '/documentation/manage-data/guides/handle-schemas-dataset-types', + text: 'How to Pay for Web3Telegram', + link: '/guides/use-iapp/how-to-pay/how-to-pay-for-web3telegram', }, { - text: 'Monetize Protected Data', - link: '/documentation/manage-data/guides/monetize-protected-data', + text: 'Pricing Considerations', + link: '/guides/use-iapp/how-to-pay/pricing-considerations', + }, + { + text: 'Voucher', + link: '/guides/use-iapp/how-to-pay/voucher', }, ], }, + ], + }, + ], + '/references/': [ + { + text: '🔐 DataProtector', + link: '/references/dataProtector', + collapsed: true, + items: [ { - text: '🔐 DataProtector', - link: '/documentation/manage-data/dataProtector', + text: 'Getting Started', + link: '/references/dataProtector/getting-started', + }, + { + text: 'DataProtector Core', + link: '/references/dataProtector/dataProtectorCore', collapsed: true, items: [ { - text: 'Getting Started', - link: '/documentation/manage-data/dataProtector/getting-started', + text: 'protectData', + link: '/references/dataProtector/dataProtectorCore/protectData', + }, + { + text: 'getProtectedData', + link: '/references/dataProtector/dataProtectorCore/getProtectedData', + }, + { + text: 'transferOwnership', + link: '/references/dataProtector/dataProtectorCore/transferOwnership', + }, + { + text: 'grantAccess', + link: '/references/dataProtector/dataProtectorCore/grantAccess', + }, + { + text: 'getGrantedAccess', + link: '/references/dataProtector/dataProtectorCore/getGrantedAccess', + }, + { + text: 'revokeOneAccess', + link: '/references/dataProtector/dataProtectorCore/revokeOneAccess', + }, + { + text: 'revokeAllAccess', + link: '/references/dataProtector/dataProtectorCore/revokeAllAccess', }, { - text: 'DataProtector Core', - link: '/documentation/manage-data/dataProtector/dataProtectorCore', + text: 'processProtectedData', + link: '/references/dataProtector/dataProtectorCore/processProtectedData', + }, + { + text: 'getResultFromCompletedTask', + link: '/references/dataProtector/dataProtectorCore/getResultFromCompletedTask', + }, + ], + }, + { + text: 'DataProtector Sharing', + link: '/references/dataProtector/dataProtectorSharing', + collapsed: true, + items: [ + { + text: 'Collection', + link: '/references/dataProtector/dataProtectorSharing/collection', collapsed: true, items: [ { - text: 'protectData', - link: '/documentation/manage-data/dataProtector/dataProtectorCore/protectData', + text: 'createCollection', + link: '/references/dataProtector/dataProtectorSharing/collection/createCollection', }, { - text: 'getProtectedData', - link: '/documentation/manage-data/dataProtector/dataProtectorCore/getProtectedData', + text: 'removeCollection', + link: '/references/dataProtector/dataProtectorSharing/collection/removeCollection', }, { - text: 'transferOwnership', - link: '/documentation/manage-data/dataProtector/dataProtectorCore/transferOwnership', + text: 'addToCollection', + link: '/references/dataProtector/dataProtectorSharing/collection/addToCollection', }, { - text: 'grantAccess', - link: '/documentation/manage-data/dataProtector/dataProtectorCore/grantAccess', - }, - { - text: 'getGrantedAccess', - link: '/documentation/manage-data/dataProtector/dataProtectorCore/getGrantedAccess', + text: 'removeProtectedDataFromCollection', + link: '/references/dataProtector/dataProtectorSharing/collection/removeProtectedDataFromCollection', }, + ], + }, + { + text: 'Renting', + link: '/references/dataProtector/dataProtectorSharing/renting', + collapsed: true, + items: [ { - text: 'revokeOneAccess', - link: '/documentation/manage-data/dataProtector/dataProtectorCore/revokeOneAccess', + text: 'setProtectedDataToRenting', + link: '/references/dataProtector/dataProtectorSharing/renting/setProtectedDataToRenting', }, { - text: 'revokeAllAccess', - link: '/documentation/manage-data/dataProtector/dataProtectorCore/revokeAllAccess', + text: 'setProtectedDataRentingParams', + link: '/references/dataProtector/dataProtectorSharing/renting/setProtectedDataRentingParams', }, { - text: 'processProtectedData', - link: '/documentation/manage-data/dataProtector/dataProtectorCore/processProtectedData', + text: 'rentProtectedData', + link: '/references/dataProtector/dataProtectorSharing/renting/rentProtectedData', }, { - text: 'getResultFromCompletedTask', - link: '/documentation/manage-data/dataProtector/dataProtectorCore/getResultFromCompletedTask', + text: 'removeProtectedDataFromRenting', + link: '/references/dataProtector/dataProtectorSharing/renting/removeProtectedDataFromRenting', }, ], }, { - text: 'DataProtector Sharing', - link: '/documentation/manage-data/dataProtector/dataProtectorSharing', + text: 'Selling', + link: '/references/dataProtector/dataProtectorSharing/selling', collapsed: true, items: [ { - text: 'Collection', - link: '/documentation/manage-data/dataProtector/dataProtectorSharing/collection', - collapsed: true, - items: [ - { - text: 'createCollection', - link: '/documentation/manage-data/dataProtector/dataProtectorSharing/collection/createCollection', - }, - { - text: 'removeCollection', - link: '/documentation/manage-data/dataProtector/dataProtectorSharing/collection/removeCollection', - }, - { - text: 'addToCollection', - link: '/documentation/manage-data/dataProtector/dataProtectorSharing/collection/addToCollection', - }, - { - text: 'removeProtectedDataFromCollection', - link: '/documentation/manage-data/dataProtector/dataProtectorSharing/collection/removeProtectedDataFromCollection', - }, - ], + text: 'setProtectedDataForSale', + link: '/references/dataProtector/dataProtectorSharing/selling/setProtectedDataForSale', + }, + { + text: 'buyProtectedData', + link: '/references/dataProtector/dataProtectorSharing/selling/buyProtectedData', }, { - text: 'Renting', - link: '/documentation/manage-data/dataProtector/dataProtectorSharing/renting', - collapsed: true, - items: [ - { - text: 'setProtectedDataToRenting', - link: '/documentation/manage-data/dataProtector/dataProtectorSharing/renting/setProtectedDataToRenting', - }, - { - text: 'setProtectedDataRentingParams', - link: '/documentation/manage-data/dataProtector/dataProtectorSharing/renting/setProtectedDataRentingParams', - }, - { - text: 'rentProtectedData', - link: '/documentation/manage-data/dataProtector/dataProtectorSharing/renting/rentProtectedData', - }, - { - text: 'removeProtectedDataFromRenting', - link: '/documentation/manage-data/dataProtector/dataProtectorSharing/renting/removeProtectedDataFromRenting', - }, - ], + text: 'removeProtectedDataForSale', + link: '/references/dataProtector/dataProtectorSharing/selling/removeProtectedDataForSale', }, + ], + }, + { + text: 'Subscription', + link: '/references/dataProtector/dataProtectorSharing/subscription', + collapsed: true, + items: [ { - text: 'Selling', - link: '/documentation/manage-data/dataProtector/dataProtectorSharing/selling', - collapsed: true, - items: [ - { - text: 'setProtectedDataForSale', - link: '/documentation/manage-data/dataProtector/dataProtectorSharing/selling/setProtectedDataForSale', - }, - { - text: 'buyProtectedData', - link: '/documentation/manage-data/dataProtector/dataProtectorSharing/selling/buyProtectedData', - }, - { - text: 'removeProtectedDataForSale', - link: '/documentation/manage-data/dataProtector/dataProtectorSharing/selling/removeProtectedDataForSale', - }, - ], + text: 'setProtectedDataToSubscription', + link: '/references/dataProtector/dataProtectorSharing/subscription/setProtectedDataToSubscription', }, { - text: 'Subscription', - link: '/documentation/manage-data/dataProtector/dataProtectorSharing/subscription', - collapsed: true, - items: [ - { - text: 'setProtectedDataToSubscription', - link: '/documentation/manage-data/dataProtector/dataProtectorSharing/subscription/setProtectedDataToSubscription', - }, - { - text: 'setSubscriptionParams', - link: '/documentation/manage-data/dataProtector/dataProtectorSharing/subscription/setSubscriptionParams', - }, - { - text: 'subscribeToCollection', - link: '/documentation/manage-data/dataProtector/dataProtectorSharing/subscription/subscribeToCollection', - }, - { - text: 'removeProtectedDataFromSubscription', - link: '/documentation/manage-data/dataProtector/dataProtectorSharing/subscription/removeProtectedDataFromSubscription', - }, - ], + text: 'setSubscriptionParams', + link: '/references/dataProtector/dataProtectorSharing/subscription/setSubscriptionParams', }, { - text: 'Consume', - collapsed: true, - items: [ - { - text: 'consumeProtectedData', - link: '/documentation/manage-data/dataProtector/dataProtectorSharing/consume/consumeProtectedData', - }, - ], + text: 'subscribeToCollection', + link: '/references/dataProtector/dataProtectorSharing/subscription/subscribeToCollection', }, { - text: 'Read Data', - collapsed: true, - items: [ - { - text: 'getProtectedDataInCollections', - link: '/documentation/manage-data/dataProtector/dataProtectorSharing/read/getProtectedDataInCollections', - }, - { - text: 'getProtectedDataPricingParams', - link: '/documentation/manage-data/dataProtector/dataProtectorSharing/read/getProtectedDataPricingParams', - }, - { - text: 'getCollectionOwners', - link: '/documentation/manage-data/dataProtector/dataProtectorSharing/read/getCollectionOwners', - }, - { - text: 'getCollectionsByOwner', - link: '/documentation/manage-data/dataProtector/dataProtectorSharing/read/getCollectionsByOwner', - }, - { - text: 'getCollectionSubscriptions', - link: '/documentation/manage-data/dataProtector/dataProtectorSharing/read/getCollectionSubscriptions', - }, - { - text: 'getRentals', - link: '/documentation/manage-data/dataProtector/dataProtectorSharing/read/getRentals', - }, - ], + text: 'removeProtectedDataFromSubscription', + link: '/references/dataProtector/dataProtectorSharing/subscription/removeProtectedDataFromSubscription', }, ], }, { - text: 'Types', - link: '/documentation/manage-data/dataProtector/types', + text: 'Consume', + collapsed: true, + items: [ + { + text: 'consumeProtectedData', + link: '/references/dataProtector/dataProtectorSharing/consume/consumeProtectedData', + }, + ], }, { - text: 'Advanced', + text: 'Read Data', collapsed: true, items: [ { - text: 'Advanced Configuration', - link: '/documentation/manage-data/dataProtector/advanced/advanced-configuration', + text: 'getProtectedDataInCollections', + link: '/references/dataProtector/dataProtectorSharing/read/getProtectedDataInCollections', }, { - text: 'Sharing smart contract', - link: '/documentation/manage-data/dataProtector/advanced/dps-smart-contract', + text: 'getProtectedDataPricingParams', + link: '/references/dataProtector/dataProtectorSharing/read/getProtectedDataPricingParams', }, { - text: 'Apps whitelist', - link: '/documentation/manage-data/dataProtector/advanced/apps-whitelist', - collapsed: true, - items: [ - { - text: 'createAddOnlyAppWhitelist', - link: '/documentation/manage-data/dataProtector/advanced/apps-whitelist/createAddOnlyAppWhitelist', - }, - { - text: 'addAppToAddOnlyAppWhitelist', - link: '/documentation/manage-data/dataProtector/advanced/apps-whitelist/addAppToAddOnlyAppWhitelist', - }, - { - text: 'getUserAddOnlyAppWhitelist', - link: '/documentation/manage-data/dataProtector/advanced/apps-whitelist/getUserAddOnlyAppWhitelist', - }, - ], + text: 'getCollectionOwners', + link: '/references/dataProtector/dataProtectorSharing/read/getCollectionOwners', + }, + { + text: 'getCollectionsByOwner', + link: '/references/dataProtector/dataProtectorSharing/read/getCollectionsByOwner', + }, + { + text: 'getCollectionSubscriptions', + link: '/references/dataProtector/dataProtectorSharing/read/getCollectionSubscriptions', + }, + { + text: 'getRentals', + link: '/references/dataProtector/dataProtectorSharing/read/getRentals', }, ], }, - { - text: 'Migrate from v1 to v2', - link: '/documentation/manage-data/dataProtector/migrate-from-v1', - }, ], }, - ], - }, - { - text: 'BUILD YOUR iAPP', - items: [ { - text: '❓ What is an iApp ?', - link: '/documentation/build-iapp/what-is-iapp', - }, - { - text: '📖 Guides', - collapsed: true, - items: [ - { - text: 'Build and Deploy', - link: '/documentation/build-iapp/guides/build-&-deploy', - }, - { - text: 'Manage Access', - link: '/documentation/build-iapp/guides/manage-access', - }, - { - text: 'Inputs and Outputs', - link: '/documentation/build-iapp/guides/inputs-and-outputs', - }, - { - text: 'Using TDX', - link: '/documentation/build-iapp/guides/using-tdx', - }, - { - text: 'How to Get and Decrypt Results', - link: '/documentation/build-iapp/guides/how-to-get-and-decrypt-results', - }, - { - text: 'Debugging', - link: '/documentation/build-iapp/guides/debugging', - }, - ], + text: 'Types', + link: '/references/dataProtector/types', }, { - text: '🤖 iApp Generator', - link: '/documentation/build-iapp/iapp-generator', + text: 'Advanced', collapsed: true, items: [ { - text: 'Getting Started', - link: '/documentation/build-iapp/iapp-generator/getting-started', + text: 'Advanced Configuration', + link: '/references/dataProtector/advanced/advanced-configuration', }, { - text: 'Building your iApp', - link: '/documentation/build-iapp/iapp-generator/building-your-iexec-app', + text: 'Sharing smart contract', + link: '/references/dataProtector/advanced/dps-smart-contract', }, { - text: 'Deserialize ProtectedData', - link: '/documentation/build-iapp/iapp-generator/deserializer', + text: 'Apps whitelist', + link: '/references/dataProtector/advanced/apps-whitelist', collapsed: true, items: [ { - text: 'getValue', - link: '/documentation/build-iapp/iapp-generator/deserializer/getValue', + text: 'createAddOnlyAppWhitelist', + link: '/references/dataProtector/advanced/apps-whitelist/createAddOnlyAppWhitelist', + }, + { + text: 'addAppToAddOnlyAppWhitelist', + link: '/references/dataProtector/advanced/apps-whitelist/addAppToAddOnlyAppWhitelist', + }, + { + text: 'getUserAddOnlyAppWhitelist', + link: '/references/dataProtector/advanced/apps-whitelist/getUserAddOnlyAppWhitelist', }, ], }, ], }, + { + text: 'Migrate from v1 to v2', + link: '/references/dataProtector/migrate-from-v1', + }, ], }, { - text: 'USE AN iAPP', + text: '🤖 iApp Generator', + link: '/references/iapp-generator', items: [ { - text: '📝 Introduction', - link: '/documentation/use-iapp/introduction', + text: 'Getting Started', + link: '/references/iapp-generator/getting-started', }, { - text: '🚀 Getting Started', - link: '/documentation/use-iapp/getting-started', + text: 'Building your iApp', + link: '/references/iapp-generator/building-your-iexec-app', }, { - text: '📖 Guides', + text: 'Deserialize ProtectedData', + link: '/references/iapp-generator/deserializer', collapsed: true, items: [ { - text: 'Different Ways to Execute an iApp', - link: '/documentation/use-iapp/guides/different-ways-to-execute', - }, - { - text: 'Add Inputs to the Execution', - link: '/documentation/use-iapp/guides/add-inputs-to-execution', - }, - { - text: 'Use iApp with Protected Data', - link: '/documentation/use-iapp/guides/use-iapp-with-protected-data', - }, - { - text: 'Find iApps to Use', - link: '/documentation/use-iapp/guides/find-iapps', - }, - { - text: 'How to Pay the Executions', - link: '/documentation/use-iapp/guides/how-to-pay-executions', - }, - ], - }, - { - text: '💰 How to Pay', - collapsed: true, - items: [ - { - text: 'How to Pay for Web3Mail', - link: '/documentation/use-iapp/how-to-pay/how-to-pay-for-web3mail', - }, - { - text: 'How to Pay for Web3Telegram', - link: '/documentation/use-iapp/how-to-pay/how-to-pay-for-web3telegram', - }, - { - text: 'Pricing Considerations', - link: '/documentation/use-iapp/how-to-pay/pricing-considerations', - }, - { - text: 'Voucher', - link: '/documentation/use-iapp/how-to-pay/voucher', + text: 'getValue', + link: '/references/iapp-generator/deserializer/getValue', }, ], }, + ], + }, + { + text: '✉ Web3Mail', + link: '/references/web3mail', + items: [ { - text: '✉ Web3Mail', - link: '/use-iapp/web3mail', - collapsed: true, - items: [ - { - text: 'Getting Started', - link: '/documentation/use-iapp/web3mail/getting-started', - }, - { - text: 'Methods', - collapsed: true, - items: [ - { - text: 'fetchMyContacts', - link: '/documentation/use-iapp/web3mail/methods/fetchMyContacts', - }, - { - text: 'fetchUserContacts', - link: '/documentation/use-iapp/web3mail/methods/fetchUserContacts', - }, - { - text: 'sendEmail', - link: '/documentation/use-iapp/web3mail/methods/sendEmail', - }, - ], - }, - { - text: 'Advanced Configuration', - link: '/documentation/use-iapp/web3mail/advanced-configuration', - }, - ], + text: 'Getting Started', + link: '/references/web3mail/getting-started', }, { - text: '💬 Web3Telegram', - link: '/documentation/use-iapp/web3telegram', + text: 'Methods', collapsed: true, items: [ { - text: 'Getting Started', - link: '/documentation/use-iapp/web3telegram/getting-started', + text: 'fetchMyContacts', + link: '/references/web3mail/methods/fetchMyContacts', }, { - text: 'Methods', - collapsed: true, - items: [ - { - text: 'fetchMyContacts', - link: '/documentation/use-iapp/web3telegram/methods/fetchMyContacts', - }, - { - text: 'fetchUserContacts', - link: '/documentation/use-iapp/web3telegram/methods/fetchUserContacts', - }, - { - text: 'sendTelegram', - link: '/documentation/use-iapp/web3telegram/methods/sendTelegram', - }, - ], + text: 'fetchUserContacts', + link: '/references/web3mail/methods/fetchUserContacts', }, { - text: 'Integration Guide', - link: '/documentation/use-iapp/web3telegram/integration-guide', - }, - { - text: 'Advanced Configuration', - link: '/documentation/use-iapp/web3telegram/advanced-configuration', + text: 'sendEmail', + link: '/references/web3mail/methods/sendEmail', }, ], }, - ], - }, - { - text: 'TOOLING & EXPLORERS', - items: [ - { - text: 'iExec Explorer', - link: '/documentation/tooling-and-explorers/iexec-explorer', - }, - { - text: 'Builder Dashboard', - link: '/documentation/tooling-and-explorers/builder-dashboard', - }, - { - text: 'RLC Bridge', - link: '/documentation/tooling-and-explorers/bridge', - }, - { - text: 'Subgraph Explorer', - link: '/documentation/tooling-and-explorers/subgraph-explorer', - }, { - text: 'Blockchain Explorer', - link: '/documentation/tooling-and-explorers/blockchain-explorer', + text: 'Advanced Configuration', + link: '/references/web3mail/advanced-configuration', }, ], }, { - text: 'PROTOCOL', + text: '💬 Web3Telegram', + link: '/references/web3telegram', items: [ { - text: '🔧 iExec SDK', - link: '/documentation/protocol/sdk', + text: 'Getting Started', + link: '/references/web3telegram/getting-started', }, { - text: '⚙️ Workers & Workerpools', + text: 'Methods', collapsed: true, items: [ { - text: '🚀 Worker Quick Start', - link: '/documentation/protocol/worker/quick-start', + text: 'fetchMyContacts', + link: '/references/web3telegram/methods/fetchMyContacts', }, { - text: '🔒 Manage Workerpool Access', - link: '/documentation/protocol/worker/manage-access', - }, - ], - }, - { - text: '⛓️‍💥 PoCo', - collapsed: true, - items: [ - { - text: '💸 Pay Per Task Model', - link: '/documentation/protocol/poco/pay-per-task', + text: 'fetchUserContacts', + link: '/references/web3telegram/methods/fetchUserContacts', }, { - text: '🛡️ Proof of Contribution', - link: '/documentation/protocol/poco/proof-of-contribution', + text: 'sendTelegram', + link: '/references/web3telegram/methods/sendTelegram', }, ], }, { - text: '�📖 Glossary', - link: '/documentation/protocol/glossary', + text: 'Integration Guide', + link: '/references/web3telegram/integration-guide', + }, + { + text: 'Advanced Configuration', + link: '/references/web3telegram/advanced-configuration', }, ], }, + { + text: '🔧 iExec SDK', + link: '/references/sdk', + }, + { + text: '�📖 Glossary', + link: '/references/glossary', + }, ], - '/guides/': [], - '/references/': [], } satisfies DefaultTheme.Sidebar; } diff --git a/README.md b/README.md index 751fcb44..96b44dc9 100644 --- a/README.md +++ b/README.md @@ -169,3 +169,7 @@ Fork this repository and ensure you're working on the `main` branch: - Update or add design illustrations based on the new design system - 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 pay-per-task page into a guide +- check pages (introduction & getting-started) for use-iapp guide diff --git a/package-lock.json b/package-lock.json index fabb7040..e84543e2 100644 --- a/package-lock.json +++ b/package-lock.json @@ -8,10 +8,10 @@ "name": "iexec-documentation", "version": "0.0.0", "dependencies": { - "@iexec/dataprotector": "^2.0.0-beta.17", + "@iexec/dataprotector": "^2.0.0-beta.19", "@iexec/dataprotector-deserializer": "^0.1.1", - "@iexec/web3mail": "^1.2.2", - "@iexec/web3telegram": "^0.1.0-alpha.1", + "@iexec/web3mail": "^1.5.0", + "@iexec/web3telegram": "^0.1.0-alpha.4", "@reown/appkit": "^1.7.17", "@reown/appkit-adapter-wagmi": "^1.7.17", "@tailwindcss/vite": "^4.1.11", @@ -761,7 +761,9 @@ } }, "node_modules/@iexec/dataprotector": { - "version": "2.0.0-beta.17", + "version": "2.0.0-beta.19", + "resolved": "https://registry.npmjs.org/@iexec/dataprotector/-/dataprotector-2.0.0-beta.19.tgz", + "integrity": "sha512-nKfM8H2AGFPmSHt96FhNSOIctqRWyQt34zh9chVeI7PSy6TVFQMnEV4rj1ce+O8yFO9TM/8YXxu+V2izBO00WQ==", "license": "Apache-2.0", "dependencies": { "@ethersproject/bytes": "^5.7.0", @@ -773,7 +775,7 @@ "debug": "^4.3.4", "ethers": "^6.13.2", "graphql-request": "^6.0.0", - "iexec": "^8.16.0", + "iexec": "^8.18.0", "jszip": "^3.7.1", "kubo-rpc-client": "^4.1.1", "magic-bytes.js": "^1.0.15", @@ -783,6 +785,8 @@ }, "node_modules/@iexec/dataprotector-deserializer": { "version": "0.1.1", + "resolved": "https://registry.npmjs.org/@iexec/dataprotector-deserializer/-/dataprotector-deserializer-0.1.1.tgz", + "integrity": "sha512-CSz1JWnslm2X3gjL1cx/qqovnmvJSFWDyJMw0ZGvqnYnNatgIqHn+Aky2iO4K0HsArfqmgV3ySIpdPfu/N2M0w==", "license": "Apache-2.0", "dependencies": { "borsh": "^2.0.0", @@ -846,7 +850,9 @@ } }, "node_modules/@iexec/web3mail": { - "version": "1.2.2", + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@iexec/web3mail/-/web3mail-1.5.0.tgz", + "integrity": "sha512-ohgPocAidWreTOchamwMiuwIt0Nns290vS/KbcLbhOB4ZUDtQGS8V5lES3s9WUZjMvf+bWByN4RQdoaNhgIPAw==", "license": "Apache-2.0", "dependencies": { "@ethersproject/bytes": "^5.7.0", @@ -854,13 +860,15 @@ "buffer": "^6.0.3", "ethers": "^6.13.2", "graphql-request": "^6.1.0", - "iexec": "^8.13.1", + "iexec": "^8.18.0", "kubo-rpc-client": "^4.1.1", "yup": "^1.1.1" } }, "node_modules/@iexec/web3telegram": { - "version": "0.1.0-alpha.1", + "version": "0.1.0-alpha.4", + "resolved": "https://registry.npmjs.org/@iexec/web3telegram/-/web3telegram-0.1.0-alpha.4.tgz", + "integrity": "sha512-JYWjLpV7Ufi8wjlHlwCOYnjHf1oRGh9GycfKuhIq2TZDK4JrEG/tUytMagakn3C9T0UOByrM9DM/hMMoxVcG6A==", "license": "Apache-2.0", "dependencies": { "@ethersproject/bytes": "^5.7.0", @@ -868,7 +876,7 @@ "buffer": "^6.0.3", "ethers": "^6.8.1", "graphql-request": "^6.1.0", - "iexec": "^8.13.1", + "iexec": "^8.18.0", "kubo-rpc-client": "^4.1.3", "yup": "^1.1.1" } @@ -7962,7 +7970,9 @@ "license": "BSD-3-Clause" }, "node_modules/iexec": { - "version": "8.17.0", + "version": "8.18.0", + "resolved": "https://registry.npmjs.org/iexec/-/iexec-8.18.0.tgz", + "integrity": "sha512-lj2La67p0IKyCHhpV4F2SZD7kmE1AFhGmD26jf8si7/sTelrXun3wNTun6WAOEO9uMi49J0AlA6MxUNBxuCflg==", "license": "Apache-2.0", "dependencies": { "@ensdomains/ens-contracts": "^1.2.5", diff --git a/package.json b/package.json index e805e9b9..10d5c266 100644 --- a/package.json +++ b/package.json @@ -9,10 +9,10 @@ "format": "prettier --ignore-path .gitignore --write ." }, "dependencies": { - "@iexec/dataprotector": "^2.0.0-beta.17", + "@iexec/dataprotector": "^2.0.0-beta.19", "@iexec/dataprotector-deserializer": "^0.1.1", - "@iexec/web3mail": "^1.2.2", - "@iexec/web3telegram": "^0.1.0-alpha.1", + "@iexec/web3mail": "^1.5.0", + "@iexec/web3telegram": "^0.1.0-alpha.4", "@reown/appkit": "^1.7.17", "@reown/appkit-adapter-wagmi": "^1.7.17", "@tailwindcss/vite": "^4.1.11", diff --git a/src/components/ChainSelector.vue b/src/components/ChainSelector.vue index fde4a4ea..1a903718 100644 --- a/src/components/ChainSelector.vue +++ b/src/components/ChainSelector.vue @@ -68,8 +68,26 @@ const userStore = useUserStore(); // Data const supportedChains = getSupportedChains(); +// Default initialization: check first if wallet is connected +if (!userStore.chainId) { + if (chainId.value) { + // If wallet is connected, use its chain + const walletChain = getChainById(chainId.value); + if (walletChain) { + userStore.setSelectedChain(walletChain); + } + } else { + // Otherwise, use Bellecour as default + const defaultChain = getChainById(0x86); // Bellecour + if (defaultChain) { + userStore.setSelectedChain(defaultChain); + } + } +} + // Computed const selectedChain = computed(() => { + // Priority: 1. Connected wallet chain, 2. Selected chain in store const currentChainId = chainId.value || userStore.chainId; return currentChainId ? getChainById(currentChainId) : undefined; }); @@ -91,6 +109,7 @@ const selectedChainId = computed({ }, }); +// Watch to synchronize store with wallet chain watch(chainId, (newChainId) => { if (newChainId) { const chain = getChainById(newChainId); diff --git a/src/documentation/build-iapp/guides/index.md b/src/documentation/build-iapp/guides/index.md deleted file mode 100644 index 8fca2266..00000000 --- a/src/documentation/build-iapp/guides/index.md +++ /dev/null @@ -1,43 +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](/documentation/build-iapp/guides/build-&-deploy)** - Your - first iApp in 15 minutes -- **[Inputs and Outputs](/documentation/build-iapp/guides/inputs-and-outputs)** - - Handle data flow in TEE environment -- **[Debugging](/documentation/build-iapp/guides/debugging)** - Troubleshoot - execution issues - -## 🔐 Access Control & Management - -- **[Manage Access](/documentation/build-iapp/guides/manage-access)** - Control - who can use your iApp -- **[How to Get and Decrypt Results](/documentation/build-iapp/guides/how-to-get-and-decrypt-results)** - - Retrieve and use outputs - -## 🧪 Advanced Features - -- **[Using TDX (Experimental)](/documentation/build-iapp/guides/using-tdx)** - - Next-gen TEE technology - -## 📚 What's Next? - -After mastering these guides, explore: - -- **[iApp Generator](/documentation/build-iapp/iapp-generator)** - Complete - development toolkit -- **[What is an iApp?](/documentation/build-iapp/what-is-iapp)** - Core concepts - and TEE overview - -Ready to build your first privacy-preserving application? Start with the -[Build & Deploy](/documentation/build-iapp/guides/build-&-deploy) guide! diff --git a/src/documentation/use-iapp/guides/index.md b/src/documentation/use-iapp/guides/index.md deleted file mode 100644 index 8541a822..00000000 --- a/src/documentation/use-iapp/guides/index.md +++ /dev/null @@ -1,53 +0,0 @@ ---- -title: Use iApp Guides -description: Complete guide collection for using iApps on the iExec network ---- - -# 🚀 Use iApp Guides - -Welcome to the complete collection of guides for using iApps on the iExec -network. These guides will help you find, execute, and interact with -privacy-preserving applications. - -## 🔍 Finding & Using iApps - -- **[Find iApps](/documentation/use-iapp/guides/find-iapps)** - Discover - available applications -- **[Different Ways to Execute](/documentation/use-iapp/guides/different-ways-to-execute)** - - Multiple execution methods -- **[Use iApp with Protected Data](/documentation/use-iapp/guides/use-iapp-with-protected-data)** - - Secure data processing - -## 💰 Payment & Execution - -- **[How to Pay for Executions](/documentation/use-iapp/guides/how-to-pay-executions)** - - Payment methods and costs -- **[Add Inputs to Execution](/documentation/use-iapp/guides/add-inputs-to-execution)** - - Provide data and parameters - -## 📧 Communication Apps - -- **[Web3Mail](/documentation/use-iapp/web3mail)** - Send encrypted emails -- **[Web3Telegram](/documentation/use-iapp/web3telegram)** - Send encrypted - Telegram messages - -## 🆓 Getting Started - -- **[Getting Started](/documentation/use-iapp/getting-started)** - Essential - steps for beginners -- **[How to Pay for Web3Mail](/documentation/use-iapp/how-to-pay/how-to-pay-for-web3mail)** - - Free email service -- **[How to Pay for Web3Telegram](/documentation/use-iapp/how-to-pay/how-to-pay-for-web3telegram)** - - Free messaging service - -## 📚 What's Next? - -After mastering these guides, explore: - -- **[Data Protector](/documentation/manage-data/dataProtector)** - Protect your - own data -- **[Build iApps](/documentation/build-iapp/what-is-iapp)** - Create your own - applications - -Ready to start using iApps? Begin with the -[Getting Started](/documentation/use-iapp/getting-started) guide! diff --git a/src/documentation/develop-with-ai.md b/src/get-started/develop-with-ai.md similarity index 100% rename from src/documentation/develop-with-ai.md rename to src/get-started/develop-with-ai.md diff --git a/src/documentation/helloWorld.md b/src/get-started/helloWorld.md similarity index 94% rename from src/documentation/helloWorld.md rename to src/get-started/helloWorld.md index eb12705c..4b06eb3b 100644 --- a/src/documentation/helloWorld.md +++ b/src/get-started/helloWorld.md @@ -7,12 +7,24 @@ description: # 👋 Welcome to iExec > Reading time 🕒 2 mins +
+
+ 🌐 +

Select Your Network

+
+
+ Network: + +
+
+

Start Your Web3 Privacy Journey

And learn how to build Privacy-preserving decentralized applications (dApps) with iExec in this interactive guide.

diff --git a/src/documentation/helloWorld/1-overview.md b/src/get-started/helloWorld/1-overview.md similarity index 98% rename from src/documentation/helloWorld/1-overview.md rename to src/get-started/helloWorld/1-overview.md index c603ca4d..d416ccc7 100644 --- a/src/documentation/helloWorld/1-overview.md +++ b/src/get-started/helloWorld/1-overview.md @@ -85,7 +85,7 @@ Computing technologies. iExec combines three fundamental elements that work together seamlessly: -#### 1. Protect Data with our Devtool [DataProtector](/documentation/manage-data/dataProtector/getting-started) +#### 1. Protect Data with our Devtool [DataProtector](/references/dataProtector/getting-started) - Encrypt your sensitive data and store it securely on Arweave or IPFS - Only you control who can access it and when diff --git a/src/documentation/helloWorld/2-protectData.md b/src/get-started/helloWorld/2-protectData.md similarity index 94% rename from src/documentation/helloWorld/2-protectData.md rename to src/get-started/helloWorld/2-protectData.md index af4b0ae8..b7e7903d 100644 --- a/src/documentation/helloWorld/2-protectData.md +++ b/src/get-started/helloWorld/2-protectData.md @@ -45,10 +45,6 @@ their dApps with these key features: Features an SDK for easy integration into your DApp, enhancing functionality and user experience. -
-

DataProtector interacts with iExec's Bellecour sidechain, which is gasless, meaning you can use it completely free without needing any tokens!

-
- ## 🧩 Let's Create Protected Data diff --git a/src/documentation/helloWorld/3-buildIApp.md b/src/get-started/helloWorld/3-buildIApp.md similarity index 53% rename from src/documentation/helloWorld/3-buildIApp.md rename to src/get-started/helloWorld/3-buildIApp.md index 31538fe8..849e9c17 100644 --- a/src/documentation/helloWorld/3-buildIApp.md +++ b/src/get-started/helloWorld/3-buildIApp.md @@ -9,13 +9,9 @@ description: > Reading time 🕒 10 mins - -

Time to build!

-

Let's build an iApp that can process protected data in a secure environment using the iExec iApp generator tool. This tool helps you create, test and deploy iApps with just a few commands.

+

Let's build an iApp that can process protected data in a secure environment using the iExec iApp generator tool. This tool helps you create, test and deploy iApps with just a few commands.

If you wanna explore and deep dive in the CLI. You can check the @@ -63,23 +59,23 @@ Here are some popular use cases: Send privacy-preserving emails to registered Ethereum account holders without knowing or storing their email addresses. [Github](https://github.com/iExecBlockchainComputing/web3mail-sdk/tree/main/dapp) -| [Documentation](../use-iapp/web3mail) +| [Documentation](/references/web3mail) ### 💬 Web3 Telegram Send privacy-preserving Telegram messages without knowing or storing their Telegram handles. [Github](https://github.com/iExecBlockchainComputing/web3telegram-sdk/tree/main/dapp) -| [Documentation](../use-iapp/web3telegram) +| [Documentation](/references/web3telegram) ### 🌐 Content Delivery Transfer, sell or rent protected content to authorized users. [Github](https://github.com/iExecBlockchainComputing/dataprotector-sdk/tree/main/packages/protected-data-delivery-dapp) -| [Documentation](/documentation/manage-data/dataProtector/dataProtectorSharing) +| [Documentation](/references/dataProtector/dataProtectorSharing)
-

These are just a few examples, the possibilities are endless. Want to explore iApp Generator? Check out our documentation and see what you can build!

+

These are just a few examples, the possibilities are endless. Want to explore iApp Generator? Check out our documentation and see what you can build!

## 💾 Installation (Win / Mac / Linux) @@ -130,19 +126,53 @@ iapp init You will be prompted with the following message: -```txt - ___ _ ____ ____ - |_ _| / \ | _ \| _ \ - | | / _ \ | |_) | |_) | - | | / ___ \| __/| __/ - |___/_/ \_\_| |_| - -✔ What's your project name? (A folder with this name will be created) … hello-world -✔ Which language do you want to use? › JavaScript -? What kind of project do you want to init? › - Use arrow-keys. Return to submit. -❯ Hello World - iapp quick start - advanced -``` +
@@ -151,10 +181,6 @@ You will be prompted with the following message:
-```txt -? What's your project name? (A folder with this name will be created) ... -``` -
2 @@ -162,12 +188,6 @@ You will be prompted with the following message:
-```txt -? Which language do you want to use? › - Use arrow-keys. Return to submit. -❯ JavaScript - Python -``` -
3 @@ -175,22 +195,10 @@ You will be prompted with the following message:
-```txt -? What kind of project do you want to init? › - Use arrow-keys. Return to submit. -❯ Hello World - iapp quick start - advanced -``` -

We recommend selecting "Hello World" to quickly discover how iApp works! use advanced only if you are familiar with iExec.

-```txt -✔ [Chosen language] app setup complete. -✔ Generated ethereum wallet (0xD4A28d.........................) - -``` - - An iApp project is setup with the selected language - An ethereum wallet has been created (we use it to sign the iApp creation onchain) @@ -199,26 +207,87 @@ You will be prompted with the following message: ## 🧪 Test your iApp -To test your iApp, run `iapp test` command - -```sh -iapp test -``` - -It uses your local docker to build and execute the app. +To test your iApp, run the `iapp test` command. This will build a Docker image +and run your application locally to simulate the TEE environment. You'll see the +following steps: + + + +The `iapp test` command uses your local Docker to build and execute the app, +simulating how it will run in the iExec network's TEE environment.
-

- If you have Error: Docker daemon is not accessible Make sure Docker is installed and running.

-
-

- If you have Error: Failed to locate iApp project root error: Ensure you are in your project folder before proceeding.

+

Common Issues:

+

- If you get Error: Docker daemon is not accessible: Make sure Docker is installed and running.

+

- If you get Error: Failed to locate iApp project root: Ensure you are in your project folder before proceeding.

-You can see the output of the computation by saying yes to the question: - -```txt -? Would you like to see the result? (View ./output/) (Y/n) -``` - ### 🧩 Using Arguments You can pass arguments to your iApp using the `--args` option. This allows you @@ -272,12 +341,33 @@ Deploy your iApp on the iExec protocol.
-Once you have your token, you can deploy your iApp using the following command: - -```sh -# You need your username and the access token (it can take a few minutes to deploy) -iapp deploy -``` +Once you have your token, you can deploy your iApp. + + + +

📝 Make sure to save your iApp address after deployment - you'll need it later!

@@ -322,3 +412,173 @@ protocol documentation [here](https://protocol.docs.iex.ec/).

Next up: Alice will learn how to authorize the iApp and Bob to access and use her protected data! 🚀

+ + diff --git a/src/documentation/helloWorld/4-manageDataAccess.md b/src/get-started/helloWorld/4-manageDataAccess.md similarity index 98% rename from src/documentation/helloWorld/4-manageDataAccess.md rename to src/get-started/helloWorld/4-manageDataAccess.md index 6ec51501..7addca54 100644 --- a/src/documentation/helloWorld/4-manageDataAccess.md +++ b/src/get-started/helloWorld/4-manageDataAccess.md @@ -115,7 +115,7 @@ Want to see it in action? Check out our - Track your earnings For more technical details, see the -[DataProtector Sharing](/documentation/manage-data/dataProtector/dataProtectorSharing) +[DataProtector Sharing](/references/dataProtector/dataProtectorSharing) documentation.
diff --git a/src/documentation/helloWorld/5-bonusChapter.md b/src/get-started/helloWorld/5-bonusChapter.md similarity index 91% rename from src/documentation/helloWorld/5-bonusChapter.md rename to src/get-started/helloWorld/5-bonusChapter.md index fba85313..1c04bd22 100644 --- a/src/documentation/helloWorld/5-bonusChapter.md +++ b/src/get-started/helloWorld/5-bonusChapter.md @@ -5,11 +5,6 @@ description: Hello World tutorial series. --- - - # 🎉 Bonus Chapter > Reading time 🕒 4 mins @@ -37,7 +32,8 @@ import Button from '@/components/ui/Button.vue';

Need help setting up or got some questions? Join our Discord Community for support!

-## 🎁 Claim your Voucher + + + diff --git a/src/documentation/build-iapp/what-is-iapp.md b/src/get-started/overview/what-is-iapp.md similarity index 57% rename from src/documentation/build-iapp/what-is-iapp.md rename to src/get-started/overview/what-is-iapp.md index 25260129..06f051fe 100644 --- a/src/documentation/build-iapp/what-is-iapp.md +++ b/src/get-started/overview/what-is-iapp.md @@ -7,8 +7,8 @@ description: Privacy-first applications that run on decentralized infrastructure An iExec Application (iApp) is your regular application code (Python script, AI model, data processor, ...) that can securely process protected data (created by -[DataProtector](/documentation/manage-data/dataProtector)) inside a confidential -computing environment called TEE (a Trusted Execution Environment). +[DataProtector](/references/dataProtector)) inside a confidential computing +environment called TEE (a Trusted Execution Environment). ## Why iApps Matter ? @@ -99,105 +99,63 @@ guarantees** that privacy is preserved within the TEE execution environment. ## Use Cases -
-
-
- 📧 -

Private Communication

-
-

Users send emails, notifications, or messages using their protected contact lists without exposing recipient information.

+
+
+

🏥 Healthcare

+

Process medical data for AI diagnosis without exposing patient information

- -
-
- 🔮 -

Trustworthy Oracles

-
-

Users contribute real data to oracles while keeping their private information confidential.

+
+

💰 Finance

+

Analyze financial data for credit scoring while maintaining privacy

- -
-
- 🤖 -

Personal AI Assistants

-
-

Users let AI models perform actions based on their private data - trading, scheduling, recommendations...

+
+

🎬 Media

+

Content recommendation engines that don't track user behavior

- -
-
- -

Automated Actions

-
-

Users let AI models perform actions based on their private data - trading, scheduling, recommendations...

+
+

🔬 Research

+

Collaborative research on sensitive datasets across institutions

-## ❓ Frequently Asked Questions - -::: details 📦 What can I build with iApps? - -Anything that runs in Docker! AI models, data processing scripts, web scrapers, -image processing, financial calculations, etc. If it runs in a container, it can -be an iApp. - -::: - -::: details ⚡How fast are iApps? - -Initial task scheduling takes a few seconds (depending on the resources the -worker download, congestion etc), then your code runs at normal speed depending -on complexity. - -::: +## Getting Started -::: details 🛡️ Are iApps really secure? - -Yes! Code runs in Intel SGX or TDX secure enclaves. Even the worker running your -iApp can't see what's happening inside the enclave. +
+

Time to build!

+

Let's build an iApp that can process protected data in a secure environment using the iExec iApp generator tool. This tool helps you create, test and deploy iApps with just a few commands.

+
-::: +### Quick Start Path -::: details 🚀 How do I deploy my first iApp? +1. **Protect your data** with [DataProtector](/references/dataProtector) +2. **Build your iApp** using the [iApp Generator](/references/iapp-generator) +3. **Deploy and test** your application +4. **Process protected data** securely -Try our [Hello World](/documentation/helloWorld) for a quick start, or check the -[iApp Generator](/documentation/build-iapp/iapp-generator) section for detailed -instructions. +### What You'll Learn -::: +- How to create a Docker container for your application +- How to handle inputs and outputs securely +- How to deploy to the iExec network +- How to process protected data in TEE environments -::: details 🔧 What programming languages are supported? +
+

These are just a few examples, the possibilities are endless. Want to explore iApp Generator? Check out our documentation and see what you can build!

+
-iApps can be built in any language that runs in Docker (Python, JavaScript, R, -Java, Go, etc.). However, **iApp Generator** currently supports only Python and -Node.js for simplified development. +## Technical Requirements -::: +- **Docker**: Your application must be containerized +- **Input/Output**: Define clear input and output schemas +- **TEE Compatibility**: Ensure your code runs in secure enclaves +- **Network Access**: Configure any external API calls or dependencies ## Next Steps -
- -
-
-
📚
-
- Learn More - iApp Generator: - Complete DataProtector Documentation -
-
-
-
🚀
-
- Getting Started - deploy your first iApp: - DataProtector Quick Start Guide -
-
-
- -
- ---- +Ready to build your first privacy-preserving application? Start with our +[Hello World tutorial](/get-started/helloWorld) or dive into the +[iApp Generator documentation](/references/iapp-generator). -**TL;DR**: iApps = Your code + Secure execution + User privacy + Verifiable -results. Cloud computing, but nobody can spy on your stuff. 🔒 +For more technical details, see the +[DataProtector Sharing](/references/dataProtector/dataProtectorSharing) +documentation. diff --git a/src/get-started/overview/what-is-iexec.md b/src/get-started/overview/what-is-iexec.md new file mode 100644 index 00000000..11f43eb5 --- /dev/null +++ b/src/get-started/overview/what-is-iexec.md @@ -0,0 +1,57 @@ +--- +title: What is iExec? +description: + Learn about iExec, the decentralized computing platform that enables + privacy-preserving applications +--- + +# What is iExec? + +iExec is a **decentralized computing platform** that enables developers to build +and deploy privacy-preserving applications using confidential computing +technology. + +## 🎯 **Mission** + +iExec's mission is to democratize access to **confidential computing** by +providing a decentralized infrastructure that combines: + +- **🔐 Privacy Protection** - Data remains encrypted during computation +- **⚡ Scalable Computing** - Access to distributed computing resources +- **💰 Monetization** - Fair compensation for computing providers +- **🌐 Decentralization** - No single point of failure or control + +## 🏗️ **Core Architecture** + +### **Three Main Components:** + +1. **🤖 iApps (iExec Applications)** + - Confidential computing applications + - Run in secure enclaves (TEEs) + - Process encrypted data without exposing it + +2. **🔐 DataProtector** + - End-to-end encryption solution + - Manage data access and sharing + - Monetize protected datasets + +3. **⚙️ Worker Network** + - Distributed computing providers + - Execute iApps securely + - Earn RLC tokens for contributions + +## 🚀 **Key Features** + +- **TEE (Trusted Execution Environment)** support +- **Zero-knowledge computation** +- **Decentralized marketplace** for computing resources +- **RLC token** for payments and governance +- **Cross-chain compatibility** + +## 🔗 **Get Started** + +Ready to explore iExec? Check out: + +- [What is Protected Data?](/get-started/overview/what-is-protected-data) +- [What is an iApp?](/get-started/overview/what-is-iapp) +- [Hello World Tutorial](/get-started/helloWorld) diff --git a/src/documentation/manage-data/what-is-protected-data.md b/src/get-started/overview/what-is-protected-data.md similarity index 94% rename from src/documentation/manage-data/what-is-protected-data.md rename to src/get-started/overview/what-is-protected-data.md index c768cf78..b77571da 100644 --- a/src/documentation/manage-data/what-is-protected-data.md +++ b/src/get-started/overview/what-is-protected-data.md @@ -196,13 +196,13 @@ monetize their data within the Web3 ecosystem.
🚀
diff --git a/src/get-started/overview/what-is-workerpool.md b/src/get-started/overview/what-is-workerpool.md new file mode 100644 index 00000000..3ef69aa9 --- /dev/null +++ b/src/get-started/overview/what-is-workerpool.md @@ -0,0 +1,11 @@ +--- +title: What is a Workerpool? +description: + Learn about workerpools in iExec - the computing resources that execute iApps +--- + +# What is a Workerpool? + +This page is under development. + + diff --git a/src/documentation/protocol/poco/pay-per-task.md b/src/get-started/protocol/pay-per-task.md similarity index 100% rename from src/documentation/protocol/poco/pay-per-task.md rename to src/get-started/protocol/pay-per-task.md diff --git a/src/documentation/protocol/poco/proof-of-contribution.md b/src/get-started/protocol/proof-of-contribution.md similarity index 99% rename from src/documentation/protocol/poco/proof-of-contribution.md rename to src/get-started/protocol/proof-of-contribution.md index 821073b3..f8a9ca83 100644 --- a/src/documentation/protocol/poco/proof-of-contribution.md +++ b/src/get-started/protocol/proof-of-contribution.md @@ -76,7 +76,7 @@ consensus on a given result. Its logic is detailed in two blog articles: The [nominal workflow](https://github.com/iExecBlockchainComputing/iexec-doc/raw/master/techreport/nominalworkflow-ODB.png) -is also available in the [technical report section](../glossary.md) +is also available in the [technical report section](/references/glossary) Below are the details of the implementations: @@ -621,21 +621,21 @@ Orders compatibility required: **1. The worker pool’s category and the requester’s category must be equal.** -```sol +```text require(_requestorder.category == _workerpoolorder.category); ``` **2. The worker pool’s trust must be greater or equal to the requester’s trust.** -```sol +```text require(_requestorder.trust == _workerpoolorder.trust); ``` **3. The app’s, dataset’s and worker pool’s prices must be less or equal to the requester’s appmaxprice, datasetmaxprice and workerpoolmaxprice.** -```sol +```text require(_requestorder.appmaxprice >= _apporder.appprice); require(_requestorder.datasetmaxprice >= _datasetorder.datasetprice); require(_requestorder.workerpoolmaxprice >= _workerpoolorder.workerpoolprice); @@ -644,42 +644,42 @@ require(_requestorder.workerpoolmaxprice >= _workerpoolorder.workerpoolprice); **4. The worker pool’s tag must enable all the features required by the app’s tag, the dataset’s tag and the worker pool’s tag.** -```sol +```text require(tag & ~_workerpoolorder.tag == 0x0); require(tag & ~_workerpoolorder.tag == 0x0); ``` **5. If TEE tag is required, then application must be TEE compatible.** -```sol +```text require((tag ^ _apporder.tag)[31] & 0x01 == 0x0); ``` **6. The app provided by the apporder must match the one required by the requester.** -```sol +```text require(_requestorder.app == _apporder.app); ``` **7. The dataset provided by the datasetorder must match the one required by the requester.** -```sol +```text require(_requestorder.dataset == _datasetorder.dataset); ``` **8. If the requester specified a worker pool restriction, the worker pool must match this value or be part of the corresponding group.** -```sol +```text require(_checkIdentity(_requestorder.workerpool, _workerpoolorder.workerpool, GROUPMEMBER_PURPOSE)); ``` **9. The application must fit the dataset’s and the worker pool’s application restrictions (if any).** -```sol +```text require(_checkIdentity(_datasetorder.apprestrict, _apporder.app, GROUPMEMBER_PURPOSE)); require(_checkIdentity(_workerpoolorder.apprestrict, _apporder.app, GROUPMEMBER_PURPOSE)); ``` @@ -687,7 +687,7 @@ require(_checkIdentity(_workerpoolorder.apprestrict, _apporder.app, GROUPMEMBER_ **10. The dataset must fit the application’s and the worker pool’s restrictions (if any).** -```sol +```text require(_checkIdentity(_apporder.datasetrestrict, _datasetorder.dataset, GROUPMEMBER_PURPOSE)); require(_checkIdentity(_workerpoolorder.datasetrestrict, _datasetorder.dataset, GROUPMEMBER_PURPOSE)); ``` @@ -695,7 +695,7 @@ require(_checkIdentity(_workerpoolorder.datasetrestrict, _datasetorder.dataset, **11. The worker pool must fit the application’s and the dataset’s restrictions (if any).** -```sol +```text require(_checkIdentity(_apporder.workerpoolrestrict, _workerpoolorder.workerpool, GROUPMEMBER_PURPOSE)); require(_checkIdentity(_datasetorder.workerpoolrestrict, _workerpoolorder.workerpool, GROUPMEMBER_PURPOSE)); ``` @@ -703,7 +703,7 @@ require(_checkIdentity(_datasetorder.workerpoolrestrict, _workerpoolorder.worker **12. The requester must fit the application’s, the dataset’s and the worker pool’s restrictions (if any).** -```sol +```text require(_checkIdentity(_apporder.requesterrestrict, _requestorder.requester, GROUPMEMBER_PURPOSE)); require(_checkIdentity(_datasetorder.requesterrestrict, _requestorder.requester, GROUPMEMBER_PURPOSE)); require(_checkIdentity(_workerpoolorder.requesterrestrict, _requestorder.requester, GROUPMEMBER_PURPOSE)); @@ -711,7 +711,7 @@ require(_checkIdentity(_workerpoolorder.requesterrestrict, _requestorder.request **13. All resources must be registered in the corresponding registries.** -```sol +```text require(m_appregistry.isRegistered(_apporder.app)); require(m_datasetregistry.isRegistered(_datasetorder.dataset)); require(m_workerpoolregistry.isRegistered(_workerpoolorder.workerpool)); @@ -719,7 +719,7 @@ require(m_workerpoolregistry.isRegistered(_workerpoolorder.workerpool)); **14. All orders must be signed or presigned.** -```sol +```text require(_checkPresignatureOrSignature(App(_apporder.app).m_owner(), _apporder.hash(), _apporder.sign)); require(_checkPresignatureOrSignature(Dataset(_datasetorder.dataset).m_owner(), _datasetorder.hash(), _datasetorder.sign)); require(_checkPresignatureOrSignature(Workerpool(_workerpoolorder.workerpool).m_owner(), _workerpoolorder.hash(), _workerpoolorder.sign)); diff --git a/src/documentation/protocol/worker/manage-access.md b/src/get-started/protocol/worker/manage-access.md similarity index 97% rename from src/documentation/protocol/worker/manage-access.md rename to src/get-started/protocol/worker/manage-access.md index 28b5815c..b3631024 100644 --- a/src/documentation/protocol/worker/manage-access.md +++ b/src/get-started/protocol/worker/manage-access.md @@ -68,8 +68,8 @@ The supported tags for workerpool orders are: 1. Do not publish workerpool orders with a tag value out of the specified list. Such an order could produce undesirable and unpredictable behaviors. The - [iExec SDK](../sdk.md) implements all required preflight checks to avoid - erroneous orders publishing. + [iExec SDK](/references/sdk) implements all required preflight checks to + avoid erroneous orders publishing. 2. Currently, TEE workflow do not support tasks replication on several workers. TEE workerpool orders must be published with `trust` value equal to `1`. 3. TEE tasks with Gramine TEE framework are not supported yet. Do not publish diff --git a/src/documentation/protocol/worker/quick-start.md b/src/get-started/protocol/worker/quick-start.md similarity index 100% rename from src/documentation/protocol/worker/quick-start.md rename to src/get-started/protocol/worker/quick-start.md diff --git a/src/documentation/quick-start.md b/src/get-started/quick-start.md similarity index 100% rename from src/documentation/quick-start.md rename to src/get-started/quick-start.md diff --git a/src/documentation/rlc.md b/src/get-started/rlc.md similarity index 97% rename from src/documentation/rlc.md rename to src/get-started/rlc.md index 0de20f57..166063ec 100644 --- a/src/documentation/rlc.md +++ b/src/get-started/rlc.md @@ -121,8 +121,8 @@ Ready to dive into the iExec ecosystem? Here are the next steps: networks - **[Start Using iExec](./quick-start.md)** - Begin your confidential computing journey -- **[Earn RLC](/documentation/manage-data/guides/manage-access)** - Become a - provider and monetize your resources +- **[Earn RLC](/guides/manage-data/manage-access)** - Become a provider and + monetize your resources