open-index/open-npm huggingface dataset:
npm package: @iexec/dataprotector
Description: This product enables users to confidentially store data–such as mail address, documents, personal information ...
Author: iExec
Latest version: 2.0.0-beta.25

<p align="center">
  <a href="https://iex.ec/" rel="noopener" target="_blank"><img width="150" src="/logo-iexec.png" alt="iExec logo"/></a>
</p>

<h1 align="center">DataProtector</h1>

**DataProtector** offers developers methods to create apps that give users unparalleled ownership and privacy over their data.

Through DataProtector, users may allow apps to use their data–without ever revealing the data itself. This revolutionary approach to data management relies on:

- end-to-end encryption backed by a confidential computing technology that prevents apps from accessing users’ unencrypted data
- smart contracts that manage apps’ rights to use users’ encrypted data

<div align="center">

[![npm](https://img.shields.io/badge/npm-2.0.0--beta-blue)](https://www.npmjs.com/package/@iexec/dataprotector) [![license](https://img.shields.io/badge/license-Apache%202-blue)](/packages/sdk/LICENSE)

</div>

## Installation

DataProtector is available as an [npm package](https://www.npmjs.com/package/@iexec/dataprotector).

**npm:**

```sh
npm install @iexec/dataprotector@beta
```

**yarn:**

```sh
yarn add @iexec/dataprotector@beta
```

## Get started

Depending on your project's requirements, you can instantiate the SDK using the
umbrella module for full functionality or opt for one of the submodules to
access specific sets of features.

### Instantiate using the umbrella module

For projects requiring the full functionality of the SDK.

#### Browser

```ts
import { IExecDataProtector } from '@iexec/dataprotector';

const web3Provider = window.ethereum;
// Instantiate using the umbrella module for full functionality
const dataProtector = new IExecDataProtector(web3Provider);

const dataProtectorCore = dataProtector.core;
```

#### NodeJS

```ts
import { IExecDataProtector, getWeb3Provider } from '@iexec/dataprotector';

const { PRIVATE_KEY } = process.env;
// Get Web3 provider from a private key
const web3Provider = getWeb3Provider(PRIVATE_KEY);

// Instantiate using the umbrella module for full functionality
const dataProtector = new IExecDataProtector(web3Provider);

const dataProtectorCore = dataProtector.core; // access to core methods
```

## Documentation

- [DataProtector documentation](https://documentation-tools.vercel.app/)
- [iExec Protocol documentation](https://protocol.docs.iex.ec)

## License

This project is licensed under the terms of the
[Apache 2.0](/packages/sdk/LICENSE).
npm package: @iexec/iexec-oracle-factory-wrapper
Description: A wrapper for creating API based oracles for ethereum on the top of iExec
Author: iExec
Latest version: 2.6.0

<p align="center">
  <a href="https://iex.ec/" rel="noopener" target="_blank"><img width="150" src="./logo-iexec.png" alt="iExec logo"/></a>
</p>

<h1 align="center">OracleFactory</h1>

**OracleFactory**

Oracle Factory introduces a streamlined and efficient way for developers to integrate real-world data into blockchain applications. Leveraging the power of the iExec decentralized cloud infrastructure, Oracle Factory ensures the creation of reliable and trustworthy oracles.

Key features of Oracle Factory include:

- **Create Oracle** — This method allows for the creation of custom oracles from any API, with a limitation of one data return per oracle. This feature is pivotal in fetching specific, relevant data for decentralized applications.

- **Update Oracle** — This method ensures that the oracle stays current by fetching the latest data from its linked API. It maintains the oracle's relevance and accuracy, crucial for real-time data-dependent applications.

- **Read Oracle** — This method allows users to retrieve the value from the oracle.

With its cross-chain functionality, extending from the iExec Sidechain to networks like Ethereum and Polygon, Oracle Factory demonstrates remarkable versatility. It is a critical tool for developers looking to bridge the gap between blockchain and the real world, democratizing access to reliable data for DApps.

<div align="center">

[![npm](https://img.shields.io/npm/v/@iexec/iexec-oracle-factory-wrapper)](https://www.npmjs.com/package/@iexec/iexec-oracle-factory-wrapper) [![license](https://img.shields.io/badge/license-Apache%202-blue)](/LICENSE)

</div>

## Installation

OracleFactory is available as an [npm package](https://www.npmjs.com/package/@iexec/iexec-oracle-factory-wrapper).

**npm:**

```sh
npm i @iexec/iexec-oracle-factory-wrapper
```

**yarn:**

```sh
yarn add @iexec/iexec-oracle-factory-wrapper
```

## Get started

### Browser

```ts
import { IExecOracleFactory } from "@iexec/iexec-oracle-factory-wrapper";

const web3Provider = window.ethereum;
const factory = new IExecOracleFactory(web3Provider);
```

### NodeJS

```ts
import { IExecOracleFactory, utils } from "@iexec/iexec-oracle-factory-wrapper";

const { PRIVATE_KEY } = process.env;
const signer = utils.getSignerFromPrivateKey(
  "https://bellecour.iex.ec",
  "your-private-key"
);
const factory = new IExecOracleFactory(signer);
```

## Documentation

- [OracleFactory documentation](https://tools.docs.iex.ec/tools/oracle-factory)
- [iExec Protocol documentation](https://protocol.docs.iex.ec)

## License

This project is licensed under the terms of the
[Apache 2.0](/LICENSE).
npm package: @iexec/poco
Description: iExec Proof of Contribution protocol smart contracts
Author: iExec
Latest version: 6.1.0

# iExec PoCo Smart Contracts

[![codecov](https://codecov.io/github/iExecBlockchainComputing/PoCo/graph/badge.svg)](https://codecov.io/github/iExecBlockchainComputing/PoCo)
[![npm version](https://img.shields.io/npm/v/@iexec/poco.svg)](https://www.npmjs.com/package/@iexec/poco)

## Introduction

This repository contains the smart contract implementation of iExec's Proof of Contribution protocol.

### Related articles

-   [PoCo Series #1 — About Trust and Agents Incentives](https://medium.com/iex-ec/about-trust-and-agents-incentives-4651c138974c)
-   [PoCo Series #2 — On the use of staking to prevent attacks](https://medium.com/iex-ec/poco-series-2-on-the-use-of-staking-to-prevent-attacks-2a5c700558bd)
-   [PoCo Series #3 — PoCo protocol update](https://medium.com/iex-ec/poco-series-3-poco-protocole-update-a2c8f8f30126)
-   [PoCo Series #4 — Enclaves and Trusted Executions](https://medium.com/iex-ec/poco-series-4-sgx-enclaves-and-trusted-executions-6f2ebed8d4fa)
-   [PoCo Series #5 — Open decentralized brokering on the iExec platform](https://medium.com/iex-ec/poco-series-5-open-decentralized-brokering-on-the-iexec-platform-67b266e330d8)
-   [PoCo Series #6 — Smart Contract Upgradeability and Governance](https://medium.com/iex-ec/poco-series-6-smart-contract-upgradeability-and-governance-68d2cdecd120)
-   [PoCo Series #8 — Future-proofing iExec - Smart Contract Interoperability and Modularity](https://medium.com/iex-ec/poco-series-8-future-proofing-iexec-smart-contract-interoperability-and-modularity-37a3d3613f11)
-   [iExec PoCo v6 — Building the diamond foundation](https://www.iex.ec/news/iexec-poco-v6-building-the-diamond-foundation)

## Documentation

-   [iExec technical documentation](https://docs.iex.ec/)
-   [Protocol specific documentation](https://docs.iex.ec/protocol/proof-of-contribution)
-   [Solidity contracts API](./docs/README.md#solidity-contracts-api)
-   [Technical README](./docs/README.md)

## Resources

-   **NPM Package**: [@iexec/poco](https://www.npmjs.com/package/@iexec/poco) includes all smart contract source code, ABIs, and deployment artifacts.
-   **ABIs**: available in the `abis/` directory of this repository and the published NPM package.<br>
    Note: ⚠️ `artifacts/` folder is deprecated and will be removed in future versions.
-   **Deployment addresses**: available in the `deployments/` folder of this repository and the published NPM package.
-   **Subgraph**: the Subgraph indexing Arbitrum deployments is available on [The Graph Explorer](https://thegraph.com/explorer/):
    -   [Arbitrum Mainnet](https://thegraph.com/explorer/subgraphs/B1comLe9SANBLrjdnoNTJSubbeC7cY7EoNu6zD82HeKy?view=Query&chain=arbitrum-one)
    -   [Arbitrum Sepolia Testnet](https://thegraph.com/explorer/subgraphs/2GCj8gzLCihsiEDq8cYvC5nUgK6VfwZ6hm3Wj8A3kcxz?view=Query&chain=arbitrum-one)

## Audits

All contract audit files can be found in [audits/](./audits/) folder.
npm package: @iexec/voucher-contracts
Description: Contracts related to iExec Voucher
Author: iExec
Latest version: 1.0.1

# iExec Voucher contracts

[![codecov](https://codecov.io/github/iExecBlockchainComputing/iexec-voucher-contracts/graph/badge.svg)](https://codecov.io/github/iExecBlockchainComputing/iexec-voucher-contracts)

Contracts of iExec Voucher project.

### API Documentation

The API documentation can be found in [docs/](./docs/index.md).

### UML diagram

UML class diagram for voucher contracts can be found [here](./docs/class-diagram.svg).
Raw version is available [here](./docs/class-diagram.svg?raw=true) for better readability.

### How to deploy?

Edit `config/deployment.json` file to provide deployment configuration of the target
chain if missing.

Deployment configuration can also be provided/overridden using env variables:

* `IEXEC_POCO_ADDRESS`
* `IEXEC_VOUCHER_MANAGER_ACCOUNT_INDEX`
* `IEXEC_VOUCHER_MINTER_ACCOUNT_INDEX`

Run:

```
npx hardhat deploy --network <name>
```

#### Local Bellecour fork

Complete the `.env` file with the following variables:

```
IS_LOCAL_FORK=true
MNEMONIC=<mnemonic>
```

If a `MNEMONIC` is not provided, the default Hardhat one will be used.

```
npx hardhat node
```

#### Bellecour

With appropriate deployer key:

```
npx hardhat deploy --network bellecour
```

### Verify contracts

```
npx hardhat run ./scripts/verify.ts --network bellecour
```

Once a Voucher (proxy) is deployed, it can be verified with:

```
npx hardhat verify <voucherProxyAddress> --network bellecour <beaconAddress>
```

Note: no need to verify all VoucherProxy contracts because Blockscout automatically
matches all similar contracts with the submitted source code.

## Audits

All contract audit files can be found in [audit/](./audit/) folder.
npm package: @iexec/web3mail
Description: This product enables users to confidentially store data–such as mail address, documents, personal information ...
Author: iExec
Latest version: 1.7.4

<p align="center">
  <a href="https://iex.ec/" rel="noopener" target="_blank"><img width="150" src="./logo-iexec.png" alt="iExec logo"/></a>
</p>

<h1 align="center">Web3mail</h1>

**Web3mail** offers developers methods to create apps that:

- enable an entity (such as a (d)app provider or an end-user) to email an Ethereum account holder without knowing her/his email address
- eliminate the need for end-users to share their email address with multiple third-parties, reducing the risk of data breaches and spam.

Web3mail is composed of 2 methods:

- **fetchMyContacts** — that enables an entity to retrieve a list of Ethereum accounts whose owners have authorized the entity to email them
- **sendEmail** — that allows an entity to email a user (previously fetched via the fetchMyContacts method) knowing only her/his Ethereum account.

<div align="center">

[![npm](https://img.shields.io/npm/v/@iexec/web3mail)](https://www.npmjs.com/package/@iexec/web3mail)[![license](https://img.shields.io/badge/license-Apache%202-blue)](/LICENSE)

</div>

## Installation

Web3mail is available as an [npm package](https://www.npmjs.com/package/@iexec/web3mail).

**npm:**

```sh
npm install @iexec/web3mail
```

**yarn:**

```sh
yarn add @iexec/web3mail
```

## Get started

### Browser

```ts
import { IExecWeb3mail } from "@iexec/web3mail";

const web3Provider = window.ethereum;
const web3mail = new IExecWeb3mail(web3Provider);
```

### NodeJS

```ts
import { IExecWeb3mail, getWeb3Provider } from "@iexec/web3mail";

const { PRIVATE_KEY } = process.env; 

const web3Provider = getWeb3Provider(PRIVATE_KEY);
const web3mail = new IExecWeb3mail(web3Provider);
```

## Documentation

- [Web3mail documentation](https://tools.docs.iex.ec/tools/web3mail)
- [Web3mail technical design](./technical-design/index.md)
- [iExec Protocol documentation](https://protocol.docs.iex.ec)

## License

This project is licensed under the terms of the [Apache 2.0](/LICENSE).
npm package: @iexec/web3telegram
Description: Enables secure, blockchain-based messaging by encrypting Telegram user IDs for privacy. It lets users message Ethereum account holders without knowing their Telegram details.
Author: iExec
Latest version: 0.1.0-alpha.11

<p align="center">
  <a href="https://iex.ec/" rel="noopener" target="_blank"><img width="150" src="./logo-iexec.png" alt="iExec logo"/></a>
</p>

<h1 align="center">Web3Telegram</h1>

**Web3Telegram** offers developers methods to create apps that:

- enable an entity (such as a (d)app provider or an end-user) to message an Ethereum account holder without knowing her/his chatId or telegram username.
- eliminate the need for end-users to share their chatId or telegram username with multiple third-parties, reducing the risk of data breaches and spam.

Web3Telegram is composed of 3 methods:

- **fetchMyContacts** — that enables an entity to retrieve a list of Ethereum accounts whose owners have authorized the entity to message them
- **fetchUserContacts** — that enables an entity to retrieve a list of Ethereum accounts whose owners have authorized the provided user to message them
- **sendTelegram** — that allows an entity to message a user on telegram (previously fetched via the fetchMyContacts method) knowing only her/his Ethereum account.

<div align="center">

[![npm](https://img.shields.io/npm/v/@iexec/web3telegram)](https://www.npmjs.com/package/@iexec/web3telegram)[![license](https://img.shields.io/badge/license-Apache%202-blue)](/LICENSE)

</div>

## Installation

Web3Telegram is available as an [npm package](https://www.npmjs.com/package/@iexec/web3telegram).

**npm:**

```sh
npm install @iexec/web3telegram
```

**yarn:**

```sh
yarn add @iexec/web3telegram
```

## Get started

### Browser

```ts
import { IExecWeb3telegram } from '@iexec/web3telegram';

const web3Provider = window.ethereum;
const web3telegram = new IExecWeb3telegram(web3Provider);
```

### NodeJS

```ts
import { IExecWeb3telegram, getWeb3Provider } from '@iexec/web3telegram';

const { PRIVATE_KEY } = process.env;

const web3Provider = getWeb3Provider(PRIVATE_KEY);
const web3telegram = new IExecWeb3telegram(web3Provider);
```

## Documentation

- [Web3telegram documentation](https://tools.docs.iex.ec/tools/web3telegram)
- [Web3telegram technical design](./technical-design/index.md)
- [iExec Protocol documentation](https://protocol.docs.iex.ec)

## License

This project is licensed under the terms of the [Apache 2.0](/LICENSE).