Let's focus purely on design, and not talk about price, profitability, popularity, people/parties involved. Design aspects include;
  • consensus model
  • protocol
  • proof of work algorithm
  • difficulty adjustment algorithm
  • smart contracts
  • utxo/account model
  • block size
  • block interval
  • block chain or graph
  • codebase
  • security
  • censorship resistance
  • scalability
  • use of zero knowledge proofs
  • resource consumption for full nodes or light clients
    • disk usage
    • memory usage
    • bandwidth usage
    • sync from scratch
  • decentralization
  • emission
  • fees
  • spam resistance
  • (avoiding) wealth concentration
  • supply auditability
  • cryptographic assumptions
  • quantum resistance
  • design complexity
  • privacy aspects like
    • confidentiality (hiding amounts)
    • stealth addresses
    • tx graph obfuscation/hiding
Simple & Secure Design
Simple emission Simply fair. Simply disinflationary. Decentralize the wealth. Simple block interval One minute. 60 seconds. 60 coin subsidy. Simple consensus Proof of Work. Most cumulative difficulty wins. Simple protocol In (pure) Mimblewimble, outputs are Pedersen commitments r*G+v*H combining value v and blinding factor r into a single curve point. The blinding factor serves both to hide the value and to control ownership. Simple audit Σ unspent-outputs = Σ kernel + offset * G + height * 60e9 * H Each kernel is a provable commitment to 0 (as is offset * G) height * 60e9 is the expected number of nanocoins emitted in height blocks. Simple PoW algorithm Cuckatoo Cycle. Find a 42-cycle in a huge random graph. Instantly verifiable in 42 lines of code. Simple Difficulty Adjustment diff’ = diff * 4-hours / (4-hours - 60-seconds + last_block_time) Simple mixing CoinSwap can non-interactively mix thousands of self spends each day or hour. Simple scripting No scripts, aka scriptless scripts. Supports nearly all Bitcoin script functionality, with none of the complexity: multi-signatures, atomic swaps, discreet log contracts, bidirectional payment channels, etc. Simple implementations Small Rust and C++ codebases. Simple security Complexity is the enemy of security. Keep it simple to keep it secure.