Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
11 changes: 10 additions & 1 deletion .vitepress/config.mts
Original file line number Diff line number Diff line change
@@ -1,13 +1,16 @@
import { transformerTwoslash } from '@shikijs/vitepress-twoslash';
import tailwindcss from '@tailwindcss/vite';
import { defineConfig } from 'vitepress';
import { defineConfig, loadEnv } from 'vitepress';
import { fileURLToPath, URL } from 'node:url';
import { getSidebar } from './sidebar';
import {
groupIconMdPlugin,
groupIconVitePlugin,
} from 'vitepress-plugin-group-icons';

// Charger les variables d'environnement
const env = loadEnv('', process.cwd());

// https://vitepress.dev/reference/site-config
export default defineConfig({
title: 'iExec documentation',
Expand All @@ -23,6 +26,12 @@ export default defineConfig({
'@': fileURLToPath(new URL('../src', import.meta.url)),
},
},
// Expose environment variables to the client
define: {
'import.meta.env.VITE_REOWN_PROJECT_ID': JSON.stringify(
env.VITE_REOWN_PROJECT_ID
),
},
},
srcDir: './src',
markdown: {
Expand Down
79 changes: 36 additions & 43 deletions .vitepress/sidebar.ts
Original file line number Diff line number Diff line change
Expand Up @@ -16,16 +16,16 @@ export function getSidebar() {
link: '/overview/helloWorld/1-overview',
},
{
text: 'Protect data',
text: 'Protect Data',
link: '/overview/helloWorld/2-protectData',
},
{ text: 'Build iApp', link: '/overview/helloWorld/3-buildIApp' },
{
text: 'Manage data access',
text: 'Manage Data Access',
link: '/overview/helloWorld/4-manageDataAccess',
},
{
text: 'Bonus chapter!',
text: 'Bonus Chapter !',
link: '/overview/helloWorld/5-bonusChapter',
},
],
Expand Down Expand Up @@ -79,15 +79,15 @@ export function getSidebar() {
text: 'PROTECT AND MANAGE DATA',
items: [
{
text: '❓  What Is Protected Data?',
text: '❓  What is Protected Data?',
link: '/manage-data/what-is-protected-data',
},
{
text: '📖 Guides',
items: [
{
text: 'Create and Share Access to Protected Data',
link: '/manage-data/guides/create-and-share-access',
text: 'Manage Access',
link: '/manage-data/guides/manage-access',
},
{
text: 'Handle Schemas and Dataset Types',
Expand Down Expand Up @@ -254,7 +254,7 @@ export function getSidebar() {
],
},
{
text: 'Read data',
text: 'Read Data',
collapsed: true,
items: [
{
Expand Down Expand Up @@ -320,24 +320,6 @@ export function getSidebar() {
},
],
},
{
text: 'iApp',
link: '/manage-data/dataProtector/advanced/iApp',
collapsed: true,
items: [
{
text: 'DataProtector Deserializer',
link: '/manage-data/dataProtector/advanced/iApp/deserializer',
collapsed: true,
items: [
{
text: 'getValue',
link: '/manage-data/dataProtector/advanced/iApp/deserializer/getValue',
},
],
},
],
},
],
},
{
Expand All @@ -353,34 +335,34 @@ export function getSidebar() {
{
text: 'BUILD YOUR iAPP',
items: [
{ text: '❓ What Is an iApp?', link: '/build-iapp/what-is-iapp' },
{ text: '❓ What is an iApp?', link: '/build-iapp/what-is-iapp' },
{
text: '📖 Guides',
items: [
{
text: 'Build and Deploy your iApps',
link: '/build-iapp/guides/build-&-deploy-iapp',
text: 'Build and Deploy',
link: '/build-iapp/guides/build-&-deploy',
},
{
text: 'Manage your iApps',
link: '/build-iapp/guides/manage-iapp',
text: 'Manage Access',
link: '/build-iapp/guides/manage-access',
},
{
text: 'Inputs and Outputs (types, differences, formats)',
text: 'Inputs and Outputs',
link: '/build-iapp/guides/inputs-and-outputs',
},
{
text: 'Debugging Your iApp',
link: '/build-iapp/guides/debugging-your-iapp',
},
{
text: 'Using TDX (Trusted Execution) [EXPERIMENTAL]',
link: '/build-iapp/guides/using-tdx-experimental',
text: 'Using TDX',
link: '/build-iapp/guides/using-tdx',
},
{
text: 'How to Get and Decrypt Results',
link: '/build-iapp/guides/how-to-get-and-decrypt-results',
},
{
text: 'Debugging',
link: '/build-iapp/guides/debugging',
},
],
},
{
Expand All @@ -392,9 +374,20 @@ export function getSidebar() {
link: '/build-iapp/iapp-generator/getting-started',
},
{
text: 'Building Your iApp',
text: 'Building your iApp',
link: '/build-iapp/iapp-generator/building-your-iexec-app',
},
{
text: 'Deserialize ProtectedData',
link: '/build-iapp/iapp-generator/deserializer',
collapsed: true,
items: [
{
text: 'getValue',
link: '/build-iapp/iapp-generator/deserializer/getValue',
},
],
},
],
},
],
Expand All @@ -410,11 +403,11 @@ export function getSidebar() {
text: '📖 Guides',
items: [
{
text: 'Different ways to execute an iApp',
text: 'Different Ways to Execute an iApp',
link: '/use-iapp/guides/different-ways-to-execute',
},
{
text: 'Add inputs to the execution',
text: 'Add Inputs to the Execution',
link: '/use-iapp/guides/add-inputs-to-execution',
},
{
Expand All @@ -426,7 +419,7 @@ export function getSidebar() {
link: '/use-iapp/guides/find-iapps',
},
{
text: 'How to pay the executions',
text: 'How to Pay the Executions',
link: '/use-iapp/guides/how-to-pay-executions',
},
],
Expand All @@ -435,11 +428,11 @@ export function getSidebar() {
text: '💰 How to Pay',
items: [
{
text: 'How to Pay for Web3mail',
text: 'How to Pay for Web3Mail',
link: '/use-iapp/how-to-pay/how-to-pay-for-web3mail',
},
{
text: 'How to Pay for Web3telegram',
text: 'How to Pay for Web3Telegram',
link: '/use-iapp/how-to-pay/how-to-pay-for-web3telegram',
},
{
Expand Down
8 changes: 1 addition & 7 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -155,22 +155,16 @@ Fork this repository and ensure you're working on the `main` branch:
- Add link to the new explorer feature Asset_Types in the guide =>
`handle-schemas-dataset-types`
- Add link to remix for deploying whitelist
- Move `manage-data/dataProtector/advanced/iApp` (Deserializer doc) in an other
way to be more visible (may in build-iApp section)
- complete `use-iapp` section
- complete `explorer` 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 `build-iapp` section
- complete `Protocol`section
- What about Bridge ?
- Made a page on RLC
- Add Dune dashboard
- Add a Development workflow
- Update context7 when doc will be deployed
- 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
the UI + SRLC/RLC on account section feature of the protocol
- 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)
Original file line number Diff line number Diff line change
@@ -1,21 +1,24 @@
---
title: Build and Deploy an iApp?
title: Create and Deploy an iApp
description:
How to build an confidential iexec application and deploy it on iexec protocol
How to create a confidential iExec application and deploy it on iExec protocol
---

## iApp Generator: Your Development Tool
# Create and Deploy an iApp

Bootstrap TEE-compatible applications in minutes without any hardcoding skills,
iApp Generator handles all the low-level complexity for you.

- **Access to TEEs easily** - No need to dive into low-level requirements, build
iApps that connect to TEEs in minutes.
- **Check and deploy iApps quickly** - iApp Generator checks that your iApp
complies with the iExec Framework and streamlines its deployment.
- **Select your project mode & language** - Get started with either a basic or
advanced setup, depending on your experience with the iExec framework. You can
use Python or JavaScript—whichever you prefer!
- **Develop your iApp effortlessly** - Write your application logic using
familiar programming languages while the generator handles all TEE-specific
configurations.
- **Access to TEEs easily** - No need to dive into low-level requirements,
create iApps that connect to TEEs in minutes.
- **Check and deploy iApps quickly** - iApp Generator checks that your iApp
complies with the iExec Framework and streamlines its deployment.

```bash
# Create your iApp (Python or Node.js supported)
Expand All @@ -37,21 +40,13 @@ iapp deploy
Here are some real-world examples of iApps to help you understand how they work
in practice.

**Email Notification iApp**
### Email Notification iApp

This iApp lets you send updates to your contacts without ever seeing their email
addresses, privacy is preserved by design.

::: code-group

```python [Python]
# User runs: "Send updates to my contacts about my project"
contacts = load_protecteddata() # User's protected contact list
for contact in contacts:
send_email(contact, project_update_message)
# → Emails sent directly, you never see the addresses
```

```js [Node.js]
/* User runs: "Send updates to my contacts about my project" */
const contacts = loadProtectedData(); // User's protected contact list
Expand All @@ -61,15 +56,31 @@ contacts.forEach((contact) => {
// → Emails sent directly, you never see the addresses
```

```python [Python]
# User runs: "Send updates to my contacts about my project"
contacts = load_protecteddata() # User's protected contact list
for contact in contacts:
send_email(contact, project_update_message)
# → Emails sent directly, you never see the addresses
```

:::

**Oracle Update iApp**
### Oracle Update iApp

This iApp securely updates a price oracle using private trading data, ensuring
sensitive information stays confidential.

::: code-group

```js [Node.js]
// User runs: "Update price oracle with my private trading data"
const tradingData = loadProtectedData(); // User's protected trading history
const averagePrice = calculateWeightedAverage(tradingData);
updateOracleContract(averagePrice);
// → Oracle updated with real data, trading history stays private
```

```python [Python]
# User runs: "Update price oracle with my private trading data"
trading_data = load_protecteddata() # User's protected trading history
Expand All @@ -78,14 +89,6 @@ update_oracle_contract(average_price)
# → Oracle updated with real data, trading history stays private
```

```js [Node.js]
/* User runs: "Update price oracle with my private trading data" */
const tradingData = loadProtectedData(); // User's protected trading history
const averagePrice = calculateWeightedAverage(tradingData);
updateOracleContract(averagePrice);
// → Oracle updated with real data, trading history stays private
```

:::

**Automated Transactions iApp**
Expand All @@ -95,21 +98,21 @@ financial information remains private.

::: code-group

```python [Python]
# User runs: "Automate payments every month"
payment_info = load_protecteddata() # User's payment details
for month in range(12):
process_payment(payment_info)
# → Payments processed, payment details stay private
```

```js [Node.js]
/* User runs: "Automate payments every month" */
// User runs: "Automate payments every month"
const paymentInfo = loadProtectedData(); // User's payment details
for (let month = 0; month < 12; month++) {
processPayment(paymentInfo);
}
// → Payments processed, payment details stay private
```

```python [Python]
# User runs: "Automate payments every month"
payment_info = load_protecteddata() # User's payment details
for month in range(12):
process_payment(payment_info)
# → Payments processed, payment details stay private
```

:::
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
---
title: Debugging Your iApp
title: Debugging your iApp
description:
Troubleshoot and optimize your iApp execution in the TEE environment
---

# 🐛 Debugging Your iApp
# 🐛 Debugging

**When your iApp doesn't work as expected, debugging in the TEE environment
requires specific techniques.** This guide helps you identify issues and
Expand All @@ -24,7 +24,7 @@ Understanding how your task progresses through the iExec network:

**Most failures happen during stages 2-4**

## Monitoring Your Tasks
## Monitoring your Tasks

### iExec Explorer

Expand Down Expand Up @@ -112,7 +112,7 @@ with open(f"{os.environ['IEXEC_OUT']}/computed.json", 'w') as f:
json.dump(computed, f)
```

### ⚠️ **Dataset type unmatching**
### ⚠️ **Dataset Type Unmatching**

- **Cause**: The dataset type specified in the frontend (protectData) does not
match with the dataset type specified in the iApp
Expand Down
Loading