Code Monkey home page Code Monkey logo

coti-sdk-typescript-examples's Introduction

COTI V2 Confidentiality Preserving L2 | SDKs and Examples

All repositories specified below contain smart contracts that implement confidentiality features using the COTI V2 protocol. The contracts provide examples for various use cases, such as Non-Fungible Tokens (NFTs), ERC20 tokens, Auction, and Identity management.

These contracts demonstrate how to leverage the confidentiality features of the COTI V2 protocol to enhance privacy and security in decentralized applications. The contracts are of Solidity and can be compiled and deployed using popular development tools like Hardhat and Foundry (Work in progress).

Important Links:

Docs | Devnet Explorer | Discord | Faucet

Interact with the network using any of the following:

  1. Python SDK | Python SDK Examples
  2. Typescript SDK | Typescript SDK Examples
  3. Hardhat Dev Environment

The following contracts are available in each of the packages:

Contract python sdk hardhat sdk typescript sdk Contract Description
AccountOnboard deployment ✅ * Onboard a EOA account - During onboard network creates AES unique for that EOA which is used for decrypting values sent back from the network
AccountOnboard execution "
ERC20Example deployment Confidential ERC20 - deploy and transfer encrypted amount of funds
ERC20Example execution "
NFTExample deployment Confidential NFT example - saving encrypted data
NFTExample execution "
ConfidentialAuction deployment Confidential auction - encrypted bid amount
ConfidentialAuction execution "
ConfidentialIdentityRegistry deployment Confidential Identity Registry - Encrypted identity data
ConfidentialIdentityRegistry execution "
DataOnChain deployment Basic encryption and decryption - Good place to start explorining network capabilties
DataOnChain execution "
Precompile deployment Thorough examples of the precompile functionality
Precompile execution "

(*) no deployment needed (system contract)

Note

Due to the nature of ongoing development, future version might break existing functionality

Faucet

🤖 To request devnet/testnet funds use our faucet

COTI v2 Typescript SDK Examples

Examples that described above resides in [coti-sdk-typescript/src/examples], the solidity contracts are in the confidentiality-contracts repo that is imported as a git submodule.

The following examples are available for execution:

Contract Contract Description
AccountOnboard Onboard a EOA account - During onboard network creates AES unique for that EOA which is used for decrypting values sent back from the network
ERC20Example Confidential ERC20 - deploy and transfer encrypted amount of funds
DataOnChain Basic encryption and decryption - Good place to start explorining network capabilties

Usage

ERC20

The following process will help you run the erc20.ts example from the COTI Typescript SDK Examples project. The script includes functions for transferring tokens, approving allowances, and handling confidential transactions. The script uses various utilities from the SDK to manage confidential accounts, decrypt values, and ensure correct balances and allowances during transactions. It will also:

  • Create a EOA (Externally Owned Account)
  • Validate minimum balance

Note

Ensure your environment meets all the pre-requisites. Visit the pre-requisites section of the readme.

  1. Clone the Typescript examples repo along with its submodules into your desired location

    git clone --recurse-submodules [email protected]:coti-io/coti-sdk-typescript-examples.git
  2. Change directory to the newly create one

    cd coti-sdk-typescript-examples
  3. Install dependencies

    yarn
  4. Run erc20.ts script

    yarn erc20


    Running this test will automatically create an account and a key/value pair with name: SIGNING_KEY (visible in the .env file). The script will output something like this:\

    yarn run v1.22.22
    $ ts-node src/main.ts erc20
    ************* Created new account  0x87c13D0f5903a68bE8288E52b23A220CeC6b1aB6  and saved into .env file *************
    /Users/user/projects/coti-sdk-typescript-examples/src/util/onboard.ts:13
          throw new Error(`Please use faucet to fund account ${wallet.address}`)
                ^
    Error: Please use faucet to fund account 0x87c13D0f5903a68bE8288E52b23A220CeC6b1aB6


    It is normal to receive the exception Error: Please use faucet to fund account on the first run. This will be resolved once the account is funded.

  5. Head to the faucet at https://faucet.coti.io to get devnet funds.
    Send the following message to the BOT using your newly created account, visible in the fourth line of the response Created new account 0x87c13D0f5903a68bE8288E52b23A220CeC6b1aB6 [...]

    devnet <account address>

    The bot will reply with the message:

    <username> faucet transferred 5 COTIv2 (devnet)

  6. Run erc20.ts script once more

    yarn erc20

Pending enhancements

  • Extending examples such as confidential ERC20 minting, confidential NFT (deployment and actions) and more.

To report issues, please create a github issue

coti-sdk-typescript-examples's People

Contributors

vladi-coti avatar danielgruesso avatar gmesika-coti avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.