GithubHelp home page GithubHelp logo

nion-network / core Goto Github PK

View Code? Open in Web Editor NEW
13.0 2.0 0.0 3.75 MB

Nion is a blockchain based cloud infrastructure for the future of Web3. With a lightweight protocol it aims to build a decentralized and global network for IoT and Edge computing applications, optimising network's resource allocation in a transparent and verifiable way.

Home Page: https://nion.network

License: MIT License

Dockerfile 0.57% Shell 1.36% Kotlin 98.07%
blockchain p2p-node decentralized docker-container autonomous application orchestration-framework

core's People

Contributors

dormage avatar mihaelbercic avatar

Stargazers

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

Watchers

 avatar  avatar

core's Issues

Adding verifiability of running applications

Progress:

  • Quorum selection
  • Periodic snapshot generation
  • Snapshot submission to blocks
  • Subset of validator selection for verification
  • Backtracing and finding nearest snapshot
  • Querying the subset to retrieve states
  • Attempt to restore
  • Submit votes to the block producer via aggregation through clusters

Currently, there is no verification being done on nodes running containers. To account for byzantine behavior in public networks, verifying the state of containers to make sure they are running is crucial. Otherwise, malicious nodes may simply extract keys from containers and submit signed proofs without actually running the container.

The suggested protocol is as follows:

  • Nodes running containers must periodically extract the state using CRIU, and submit the hash of the state to be saved in the block.
  • Each k slots, a new subset of validators $V$ self-elects into the a new roles "quorum member". These nodes form a quorum $Q$.
  • Each slot, the quorum uses the same RNG to select one or more nodes ${k_0, ... k_n } โ‚ฌ K$ for verification such that $K \subset V$, $n \lt |Q|$ and $k \notin Q$
  • For each $k_n$, Quorum members trace-back the chain to find the last state verification proof $k_p = hash( proof(k_n, block))$
  • Quorum members query $k_n$ using the obtained proof $k_p$ to receive the actual CRIU state, which is verified again with $k_p$,
  • Quorum members attempt to restore the container given the state.
  • Quorum members submit their votes based on the success of restoration, the aggregated vote is included in the next block.
  • Validators verify the votes.

To produce periodic proofs, nodes must continuously submit valid state proofs. The only reasonable way to produce valid CRIU states is for nodes to actually run the container, and store the submitted proofs locally pending verification.

There are a few parameters that need to be defined pending some simulations and testing such as:

  • Determine the best quorum size, and frequency of election (likely not per slot).
  • How many nodes should be verified per each Quorum.
  • What is the retention rate enforced on nodes to store the CRIU state considering storage. This must reflect the Quorum proof selection algorithm.

Dynamic ports

Let OS choose ports used for communications between nodes.

Allow for nodes to use preferred Kademlia port.

Kademlia

Implement Kademlia protocol:

  • - Buckets
  • - Lookup
  • - Bootstrap
  • - Replace old nodes
  • - Ping old nodes upon arrival of new candidates

Client application

An application with the capability to connect to nodes and observe the network state while also handling new information and eventually pushing applications into the network can serve various purposes and provide valuable functionalities in a distributed computing environment.

Allow additional configuration file to be used

Have a few options on how to apply configurations

  • Command line arguments for simple overrides
  • Pass file path of the configuration file
  • Read current destination for configuration file

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.