Coder Social home page Coder Social logo

explorer's Introduction

UniRep Protocol

Github license Linter eslint Code style prettier Circle CI

UniRep

​

πŸ’‘ About UniRep

UniRep is a private and non-repudiable data system. Users can receive attestations from attesters, and voluntarily prove facts about their data without revealing the data itself. Moreover, users cannot refuse to receive attestations from an attester.

πŸ“˜ Documentation

Read the medium article to know more about the concept of Unirep protocol. For more information, refer to the documentation.

πŸ“¦ Project Structure

  • Package Version Description
    core NPM version Unirep protocol related functions.
    contracts NPM version Unirep smart contracts, ZKP verifiers and contract related functions.
    circuits NPM version Unirep circom circuits and circuit related functions.
    utils NPM version Utils which are used in unirep protocol.

​

πŸ”‹ Requirements

πŸ›  Install and test

  • Install

    yarn install
  • Build with trusted setup keys

    yarn circuits keys && yarn build

    Or build with phase 1 trusted setup circuits

    yarn build

    If you want to contribute to the circuits Please run yarn circuits buildOverwrite to update keys

  • Run test

    yarn test

🎯 Contributing

Contributions are always welcome! Feel free to open any issue or send a pull request. Go to CONTRIBUTING.md and CODE_OF_CONDUCT.md to learn about how to contribute to Unirep project!

πŸ™ŒπŸ» Join our community

  • Discord server:
  • Twitter account:
  • Telegram group:

Privacy & Scaling Explorations

This project is supported by Privacy & Scaling Explorations and the Ethereum Foundation. See more projects on: https://pse.dev/projects.

explorer's People

Contributors

0xwoland avatar cj-rose avatar kittybest avatar vimwitch avatar vivianjeng avatar

Stargazers

 avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar

explorer's Issues

[Protocol] Replacement data format

The replacement data field will consist of index and data
https://developer.unirep.io/docs/next/protocol/data#replacement-field

  • 205 bits data (upper bits)
  • 48 bits index (lower bits)

For beta 3

  • 206 bits data (lower bits)
  • 48 bits index (upper bits)

Some data doesn't use up to 205 bits and index will be counted from 1
so we don't have to display the whole 253 bits
e.g.
https://explorer.unirep.io/epochKey/0x234dc39bd51d43d2863585b5229749c8b23f1523059c13f01d783ccb38e75259

current version

epochKey field Index data Timestamp
0x234d...75259 5 0x22c000000000000000000000000000000000000000000000000003 2 months ago

proposed solution

epochKey field Index data index data Timestamp
0x234d...75259 5 0x22c 0x03 2 months ago

[Feature] Attester info description

  • give ECDSA signature using attester deployer key
  • sign text description to be shown to attester

For the initial version, we will sign a short text description about an attester site. This issue will entail ERC-1271 which describes how a smart contract can verify if a signature can sign on its behalf. However, the attester should implement this EIP, but we should check if it has been implemented or not using ERC-165. We then verify the signed message against the smart contract and update explorer.

In a follow-up issue, we can create a util that parses a stringified JSON literal.

[Design] Update data visualization

Right now we show reputation as positive/negative numbers. In Unirep/Unirep#286 we'll make the data fields more generic allowing them to be used for things other than positive/negative reputation.

So for example, an application might use the first field to store a counter for user likes (64 bits), a counter for the number of post creations (64 bits), and a counter for the number of comments created (64 bits). In this example only the first data field is being used.

The empty user data field looks like this (in binary):

00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000

When a user likes something they receive the following attestation:

00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001

When a user creates a post they receive the following attestation:

00000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000

When these are combined (using addition) the user has a data value of

00000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000001

We can interpret this as two values stored in the data field, but only if we know how the application interprets the data. If we look at the above as raw numbers we see the following (respectively):

0
1
36893488147419103232
36893488147419103233

So it's important to look at this as data instead of numbers (like positive/negative reputation). I think on the home screen we can show total number of bytes that have been given in attestations?

Copy update

  1. Update the left side panel text (Terminal) - > Explorer
  2. image

[frontend] Paging

Each page should display e.g. 10 data
and it should display the current page

Support releases deployment

We are targeting to release a public version V0.1 on Feb 22, would need to have following support:

  • create a URL : "explorer.unirep.io"
  • FE will be host on cloudflare, please update DNS as well
  • (cluster EC2 - need more info from @vimwitch )

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.