Giter VIP home page Giter VIP logo

pools-sol's Introduction

Features

  • Deposited funds cannot be locked or stolen (non-custodial and non-restrictive)
  • Zero knowledge proofs secure user's privacy
  • Users have the freedom to choose an anonymity set upon withdrawal
  • Removing illicit deposits from an anonymity subset accomplished two things:
    • Proves a withdrawal is clean without violating the privacy of the specific user, and
    • Reduces the anonymity sets of hackers, acting as a deterrent and as a dampening force for illicit activity
  • Enables customizable community driven anti blackhat and anti money laundering coordination in a credibly neutral way

Read More

You can read more about privacy pools in docs.

Dependencies

Install and Test Locally

Only tested on a UNIX-like OS (linux or mac).

Clone the Repo

$ git clone https://github.com/ameensol/privacy-pools
$ cd privacy-pools

Install Dependencies

$ yarn

or

$ npm install .

Setup Circuit Locally

$ bash ./scripts/setup.sh

Run the Tests

$ hardhat test

Setup and Run Slither

Install the solc compiler. If you're on linux and use apt you can install it this way:

$ sudo add-apt-repository ppa:ethereum/ethereum
$ sudo apt-get update
$ sudo apt-get install solc

Setup python virtual environment:

$ python3 -m venv venv
$ source ./venv/bin/activate
(venv) $ pip3 install -r requirements.txt

Run slither:

(venv) $ slither --hardhat-cache-directory=./build/cache --hardhat-artifacts-directory=./build/artifacts .

If you don't activate the python venv you can use:

$ ./venv/bin/slither --hardhat-cache-directory=./build/cache --hardhat-artifacts-directory=./build/artifacts .

Working To Do List

  1. AccessList Lib
    • Add compression
    • Extend js unit tests
    • NFT api: deploy, mint, upload to IPFS
    • Define IPFS Metadata interface
    • Deposit event listener + AccessList maintainer
  2. AccessList NFT Contract
    • ERC721 NFT contract for storing access lists on chain
    • Currently maintains blocknumber + treeType per subsetRoot
    • Need to add chainId and contractAddress
    • Optional to add asset and denomination
    • Integrate Owner.sol
    • Integrate an initial bootstrap list of sus addresses
  3. Interface and testnet deployment
    • Simple UI
    • Deposit and withdraw
    • Simple subsetRoot table
    • Testnet deployment
    • Answer open questions
      • Public registry of relayer IPs?
      • Should it display the connected wallet's status (e.g. if its sanctioned)?
      • Should it display any deposits that have been flagged by the list providers as being sus?
      • Should it display a list of the user's deposits?
      • Should it give an anonymity estimate based on number of new deposits?
  4. Relayer server
    • Only accepts withdrawals from roots that are publicly posted in chosen NFT contracts
    • Tracks the deposits and subsets internally
    • Public registry of relayer IPs, permissionless listing? Since we want to make a static site, there should be some route for relayers to add themselves to the list without needing to update the site
    • I can probably think of multiple ways to decentralize this but probably for the initial demo we should just have one and ignore unknown subset roots

pools-sol's People

Contributors

ameensol 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.