GithubHelp home page GithubHelp logo

vegaprotocol / wendy Goto Github PK

View Code? Open in Web Editor NEW
10.0 7.0 2.0 2.02 MB

Wendy, the good little fairness widget

Home Page: https://vega.xyz/background#published-papers

License: MIT License

Go 100.00%
ordering fairness sequencing blockchain

wendy's Introduction

w

The good little fairness widget

Build Go Reference Tag License: MIT

Wendy acts as an additional widget for an existing blockchain, and is largely agnostic to the underlying blockchain and its security assumptions. Furthermore, it is possible to apply it to the protocol only for a subset of the transactions, and thus run several independent fair markets on the same chain. We have implemented Wendy to run on a simulator to get first performance estimates. As Wendy runs parallel to the actual blockchain, the core impact it has (apart from adding some network traffic) is that some transactions are put into a later block than they would be without fairness.

This repository contains a simulation of Wendy, a protocol for implementing different concepts of fairness. This implementation is not close to production ready, but it does demonstrate how Wendy impacts performance given various parameters.

Research paper

Dr Klaus Kursawe's original research paper is available on IACR or on the Vega website. Or you can watch him talk through the paper on YouTube:

Wendy, the good little fairness widget

Tendermint

We are currently working on a Wendy implementation for Tendermint. Wendy is implemented as a mempool replacement.

Notes

The initial Wendy implementation can be found under v0.0.1 tag.

wendy's People

Contributors

campbellssource avatar candida-d avatar edd avatar gordsport avatar jeremyletang avatar rebeccajsimmonds avatar vegaklaus avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar

Forkers

zuluprotocol

wendy's Issues

Learn about seed nodes and PEX reactor.

Wendy voting system might have specific topology requirements.
We need to understand how these requirements can be achieved. Investigate how customizable is the topology in Tendermint. One particular point to investigate are seeds nodes and PEX reactor.

Implement Recompute

Recompute is an internal function that's triggered on new vote, new tx or new block and it evaluates if there are unblocked tx that are ready to be written in a block.

Gossip Voting

Along with Tx broadcasting, Wendy need to broadcast a vote each time a node sees a new Tx (seeing a tx in the mempool, not in the block).
It is likely that the reactor needs to be connected to the mempool and be notified when a new Tx is broadcasted.

The fields that the vote needs to provide are:
sequence_number, tx_hash, time (when seen), pubkey, signature

Handle full blocks

Wendy needs to handle full blocks. This is covered in the spec.

Two thing to consider:

  • Full blocks from a single bucket
  • Full blocks, multiple buckets

Fix reactor bug.

When adding a new reactor (with a new custom namespace) using the CustomReactor API the channels are not registered on the peer, making the communication to fail.

Consider this feature is only needed if we need to make use of the Tendermint's gossip protocol.

Add changelog, project board Github actions and linked PR action version

To align with discussed processes in other repos and new processes discussed we will:

Add the GH Action to move new issues to the new project board for triage
Add the linked PR GH Action
Add a GH Action to validate the changelog is updated
Back date the changelog so it can be updated moving forward from now on

Implement IsBlockedBy(tx1, tx2)

IsBlockedBy determines if tx2 might have priority over tx1.
We say that tx1 is NOT blocked by tx2 if there are t+1 (Honest parties) votes reporting tx1 before tx2.

Implement IsBlocked(tx)

IsBlockedBy determines if tx2 might have priority over tx1.
We say that tx1 is NOT blocked by tx2 if there are t+1 votes reporting tx1 before tx2.

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.