Giter Club home page Giter Club logo

roadmap's People

Contributors

zhyatt avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

roadmap's Issues

Vote storage

Summary
Allow nodes to be configured for storage and republishing of Principal Representative votes for blocks.

What problem would be solved by this feature?
Currently, any node that isn't able to observe enough votes to confirm a block from the initial vote publishing and rebroadcasting done during elections send all vote requests directly to Principal Representatives, who must spend resources responding (and sometimes regenerating the votes). This can reduce the network throughput during heavy traffic times as nodes falling out of sync rely heavily on PR responses to catch them back up. Vote storage allows secure response to vote requests by non-PRs, thus reduces PR load and is anticipated to help keep throughput maximized during high traffic times.

Dependencies

  • Network overlay (DHT-based) - how votes are storage and requested would be based on network structures established by the network overlay implementation

Bounded block backlog

Summary
The backlog of potential blocks to confirm can be considered unbounded due to writing blocks to the ledger on disk. This persisting of unconfirmed blocks on disk may not be necessary so options for bounding the backlog, such as keeping unconfirmed blocks only in memory, are being explored.

What problem would be solved by this feature?
By keeping the backlog bounded, disk usage or unconfirmed blocks can be reduced.

Related resources

Ledger Pruning

Summary
Allow optional pruning of ledger blocks, excluding pending blocks, possibly down to a configurable amount of depth starting at and including the frontier block on each account, as well as after a configurable amount of time. Related CLI, RPC and other changes will be needed to support this.

What problem would be solved by this feature?
With the ever increasing ledger size and high throughput capabilities of the network, over time the amount of disk space required to store the full ledger will increase the cost of hardware required to do so. Pruning will help reduce the storage required by only keeping the most recent blocks, each of which contain the full state of the account.

Dependencies

  • Experimental Ledger Pruning - the initial implementation of ledger pruning for experimentation and further expansion (does not allow pruning on voting nodes)
  • State block version 2 activation - the final version of ledger pruning may require activation of state block version 2 in order to most efficiently filter block traffic for older blocks based on the newly added block height field in v2 blocks. This is still under evaluation.

Related Links

Timestamps in votes

Summary
Updating votes to replace current incrementing sequence number with a monotonically increasing timestamp of the same size (64-bit).

What problem would be solved by this feature?

  • Provides a method for evaluating the age of votes for filtering and prioritizing purposes
  • Allows votes from different representatives within the same election to be temporally related to each other, useful for historical consensus evaluation when non-PR vote storage is available

Related links

Consensus improvements

Summary
Research related to removing the ability for conflicting votes to be overlapping is being done, specifically around the inclusion of time and duration for votes.

What problem would be solved by this feature?
Currently there are two distinct voting rounds with non-final and final votes to help prevent conflicting votes from overlapping. Alternatives to this approach to make it more efficient and robust are being investigated.

Related resources

RocksDB production ready

Summary
RockDB experimental support was added in V20.0 and further improvements made in V21. This milestone would approve the RocksDB implementation as ready for use in production nodes on the main network, including representatives.

What problem would be solved by this feature?
Improved disk IO in various operational conditions, including with larger ledger sizes. Also adds second backend support for some redundancy in the case of broad failures with LMDB.

Related Links

QUIC protocol

Summary
Determine if QUIC protocol is a viable alternative to TCP for live network activity

What problem would be solved by this feature?
More efficient traffic handling for live network.

State block version 2 activation

Summary
Support for the new state block (version 2) to be added. Activation will be done using canary blocks to start the generation, parsing and publishing of the blocks (de-peering earlier version nodes), followed by a new distribution of epoch blocks to ensure all accounts in the ledger contain a block with the proper version.

Related Links

Final Votes

Summary

Provides a special designation for votes that set their timestamp to the maximum value to be treated as "final votes". Nodes will issue only one final vote per root, and only final votes will be used to confirm transactions (and thus set confirmation height on the account).

What problem would be solved by this feature?

With current voting behavior there is no indication of whether a particular vote can be considered the final decision made by the representative. If all votes are observed for an election, the latest vote (higher sequence number/timestamp) will be considered the last decision made, but once the confirmation is complete there is no way to reliably determine whether a set of votes from the past was the final decision made. Thus the representatives must be queried directly for their votes from the past - for instance during bootstrap when confirming past blocks.

By adding a specific final vote and performing confirmation against those only, it allows the votes to be stored by non-representatives and used for accurate historical reference of consensus decisions. There are also some benefits to resource usage when resolving forks as nodes can help reduce oscillation of the winning block by issuing final votes.

Related Links

Refactoring, code and test cases cleanup

Summary
A much needed cleanup of various areas of the nano node codebase including unit test cases.

What problem would be solved by this feature?
This will help provide a more stable and robust test setup as well as improve the readability of code for easier improvements in the future.

Related resources

RPC 2.0 Phase 2

Summary
A refactor of the RPC implementation to include removing unnecessary endpoints, providing more consistent responses, expanding the usefulness of responses and errors, and adding new endpoints.

This second phase will expand the scope from the first phase (#29) to include a second tier of endpoints and functionality. More details to be defined as targeted release gets closer.

What problem would be solved by this feature?
Better RPC performance, more consistent input and output handling and expanded functionality for various use cases.

Dependencies

Related Links

Network overlay (DHT-based)

Summary
Provide a structured network overlay of nodes on the network through a distributed hash table.

What problem would be solved by this feature?
Decreased connection count for nodes, better Distributed Denial-of-Service (DDoS) protection and reduced network bandwidth.

Related Links

TaaC & P4Q

Summary
The Time-as-a-Currency (TaaC) and Proof of Stake for Quality of Service (P4Q) proposal aims to introduce a new method for throttling transactions taking into account the time gaps in activity, balances and more.

What problem would be solved by this feature?
This aims to ensure the quality of service on the network remains high even during heavy network activity.

Related resources

Move node wallet out of node process

Summary
Move the developer wallet packaged with the node into its own process, separate from the existing node process.

What problem would be solved by this feature?
The attack surface of the wallet can be reduced by isolating the process handling its functions away from the node.

RPC 2.0 Phase 1

Summary
A refactor of the RPC implementation to include removing unnecessary endpoints, providing more consistent responses, expanding the usefulness of responses and errors, and adding new endpoints.

This first phase will have limited scope, focusing on the most popular and problematic endpoints for the initial, optional v2 setup. More details to be defined as targeted release gets closer.

What problem would be solved by this feature?
Better RPC performance, more consistent input and output handling and expanded functionality for various use cases.

Related Links

New work generation algorithm

Summary
Implement a new work generation algorithm aligned with goals required for usefulness in Nano: small proof, fast verification, memory-hardness, adjustability of difficulty, free of amortization, etc. Additional details about the goals and current leading contender in Equihash can be found in this algorithm research update.

What problem would be solved by this feature?
Improve the Quality of Service on the network through increased spam costs.

Related Links

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.