Code Monkey home page Code Monkey logo

parallel-pow's Introduction

Parallel Proof-of-Work: A cumulative security system for proof-of-work blockchains

Abstract
Exogenous mining power presents an ongoing threat to the security of independent blockchains. Two or more independent blockchains implementing a single proof-of-work algorithm will result in only one strongly secure blockchain because no economic incentive prevents mining nodes on the strongest blockchain from attacking a weaker one. Parallel proof-of-work combines the cumulative work done in all participating networks, removing wasted competition, and bringing all networks to consensus by adding up their work.

Introduction

Include deeper discussion on the current state of PoW security

We propose a proof-of-work system separating a block into two distinct logical categories. First, a header containing proof-of-work and a transaction tree, called the consensus proof. Second, a set of blocks called parallel blocks, each one containing the set of transactions from a corresponding participating blockchain. Nodes compete to find proof-of-work to secure all parallel blocks.

Background

Merge mining/auxiliary proof of work namecoin
51% attack costs https://www.crypto51.app/
Sharding paradigms/IBC

Definitions

b is a parallel blockchain, a blockchain participating in the parallel proof-of-work system.
B is the set of all parallel blockchains such that B = (b0, b1, …, bn).
hash(P) is the hash digest of preimage data P.
nonce is the field of data used to satisfy the difficulty requirement for a consensus proof.
prev is the hash of the previous consensus proof.
Tb is a set of transactions waiting to be mined in a parallel blockchain b.
root(T) is the merkle root of all transactions within the set of transactions T.
R is a merkle root containing all T within B such that R = root(root(T0), root(T1), … root(Tn)).

Example

Consider a system with two parallel blockchains, b0 and b1.

ConsensusProof = hash(nonce, prev, R)
ParallelBlock(b0) = hash(ConsensusProof, T0, root(T0))
ParallelBlock(b1) = hash(ConsensusProof, T1, root(T1))

ppow

The steps to construct the blockchain are mostly the same as classic proof-of-work:

  1. New transactions from blockchain b0 are broadcast to all other b0-aware nodes.
  2. Nodes attempting to find proof-of-work collect all transactions from all blockchains.
  3. When a node finds proof-of-work for a consensus proof, it can issue parallel blocks for each blockchain it has collected transactions for, earning rewards from each.

Result

The result is collaboration between multiple blockchains using the same mining algorithm. Mining nodes that find a valid consensus proof are able to construct parallel blocks for each participating blockchain in the network, generating coins in each blockchain.

Discussion

What happens to miners on each separate chain?

Miners are now mining for a single nonce that validates the blocks of all parallel chains.

Who gets rewarded for mining now?

Miners get to reward themselves a coinbase for every parallel blockchain in the system if they find valid proof-of-work.

What does "exogeneous mining power is a threat" mean?

Exogeneous mining power is a threat means when DOGE hashrate falls, the LTC hashrate is a threat to the DOGE security model, because LTC miners have no incentive to not attack the DOGE chain. (DOGE and LTC both have ~200TH right now, but if DOGE falls lower, they are vulnerable to attack).

Don't network protocols need to be compatible for this to work?

Network protocols definitely need to be compatible, practically speaking, this would be merging a few coins' networks together.

How does transaction verification work?

We're using the same method of checking transactions as bitcoin, litecoin, etc.

Do all nodes need to have the same difficulty and blocktime rules?

Yes. Fundamentally this isn't an issue because blocktime isn't significant, cumulative work over time is what is really significant.

Doesn't this make the the chain as strong as the weakest link?

No. Actually, this solution came about to solve that exact issue. When all miners are mining to find the same nonce, and all blockchains are using that nonce to consider their blocks valid, there is no weakest or strongest chain. They are all secured by the same hashrate.

References

parallel-pow's People

Contributors

metacoin avatar shrutefarms avatar

Stargazers

Roman Hossain Shaon avatar Will Pankiewicz avatar

Watchers

 avatar  avatar

Forkers

shrutefarms

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.