ChainSafe / ChainSafe/denode

Proposed Voting Process for (In)valid Nodes

Open
#11 0 comments 0 reactions 1 assignee Claimed by @ansermino View on GitHub
Dominant language
No language data
Stars
22
Forks
2
PR merge metrics
No merged PRs in 30d

Description

This is an attempt to formally outline the mechanism for establishing which nodes on the network are `valid`. There is huge potential for bad actors to pretend to be running a full node on the network to get the participation reward, and as such we must query and validate the response from every node.

Currently the intent is to have every node query every other node at some interval. While this might not be scalable, it should be sufficient for the time being until a better approximation and mechanism can be arranged.The exact interval has not been defined at this time as it will likely be a function of other parameters in the system (eg. how often new nodes are introduced).

### Requirements for validity
- Running
- Responding to requests with data that matches the response of all other queried nodes on the Ethereum network

### Assumptions
- The nodes' account (presumably coinbase) must always have a balance greater than `x` where `x` is equal to the amount of wei required to submit `N/2` votes to the DAO (`N` being the total number of nodes on the system). This should provide adequate measure to prevent a 51% attack inside the system.

### TBD

- [ ] How often voting should occur
- [ ] The number of requests/node that should be made in any 1 vote
- [ ] Should a node retry if the response does not match the state of network?
- [ ] DAO submission specifics (what info, what function, cost...)
- [ ] Do nodes need to stop responding to requests when in voting mode?

![submitting-votes-for-invalid-nodes](https://user-images.githubusercontent.com/14164624/46587334-ee5ff900-ca58-11e8-85a9-ce4c901b899b.png)
Source: https://drive.google.com/open?id=1MD7Jz5gY5Yel6pmBguLrdvto1Ln12nD_

Contributor guide

No contributing guide indexed for this repository

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.