T-X (Development) Release Plan

Reference

Document status

DRAFT

Release status

PLANNING

Related pages


Milestones

Start date


Sprint


Sprint


Demo


Release

  

Stakeholders

Name

Role

Reviewed?

Medha ParlikarCEO, CasperLabs
  •  
Former user (Deleted)COO, Adaptive Holdings
  •  

Release summary

Simple overview

This release will be the last release prior to launching the test net.  To review the non-software components of Testnet, they are here.

With the launch of the test net, we will demonstrate the functionality of the system in the following manner:  We will perform a series of token transfer operations via an automated test.  The token transfer operation will have 2 parts.  Setting up / creation &  funding of the accounts, and then transfer of the token from one set of accounts to another.  As the harness <The internal tooling we are using is Gatling, which is used for performance tests> sends the deployments to the system, metrics can be observed in the Grafana dashboard of the network processing the transactions.  Once the system has processed the account portion of the demonstration, the token transfer transactions are kicked off.  Again, as the harness sends the transactions, processing of the transactions is monitored on the Grafana dashboard, and it is possible to observe the network process the transfers.  Once complete, we share the following data:

  • Total number of transactions processed
  • Time to finalization / transaction
  • Clique safety of the transactions


Requirements: 

  • Permissionless, Decentralized Proof of Stake consensus
  • Economically secure (some proofs and models to support this)
  • Liveness & Safety proofs for the consensus protocol
  • Node's logs can be scraped using splunk, or other log scraping tool
  • Read only nodes (on the network but does not participate in consensus protocol, i.e not bonded)


Detailed list of items (from specification)

  • Casper cbc consensus
    • Token Contract
    • Proof of Stake contract
    • Validator Bonding
    • Validator Unbonding
    • Validator Rewards from fees
    • Validator Slashing (see spec for all the slashing conditions) Incomplete!
    • Nodes gossip their fork choice tip
    • Nodes restore their local state after a restart (not including synching up to the current state)
    • Block gossiping (efficient)
    • Nodes store blocks locally (persistent memory)
    • Node re-proposes blocks that don't get 'finalized'
    • A node proposes blocks at some configurable interval.
  • Genesis
    • An account (with accompany purse) for all launch validators
    • Support token issuance
    • Support a testnet faucet for bonding & funding of deploys
    • Genesis validators have an account for rewards
    • Genesis ceremony, launching of the network.
  • Validator Rewards
    • Validators are paid for validation
    • Payments are held until validators propose blocks with block in justifications tree.
    • Seignorage on bond amounts paid into reward accounts
    • Rewards paid into a separate account
  • Support Deployments
    • Accounts- with identity based security access
    • Pass in an email or account → get funded via faucet
    • Secure deployment support (submit payment code + hash of deployment)
    • Confirmation of deployment
    • Confirmation of inclusion in a block → returns hash of block that contains the transaction
  • Data Retrieval
    • View a transaction given its id
    • Query the global state of the distributed computer
    • View the contents of a blockId
    • View the parents of a block
    • View the braid
    • Observe the safety of a block
  • Peer to Peer Network (Communications Layer)
    • Gossiping of deployments over the network
    • De-duplication of deployments that are gossiped
    • Formation of a P2P network
    • Generation of a node identity
    • Node Discovery via Kademlia
    • Secure node to node communication
    • Peer table updates when a node fails to respond.
    • Configurable proposal strategy
  •  Execution
    • WASM based execution engine
    • Concurrent execution of contracts (local state)
    • Block commutation (non-conflicting blocks)
    • Non-commuting deploys land in a separate block.
    • Accounts: creation, recovery & Secure Enclave integration
    • Capability based security between accounts
    • immutability based Contract security 
  • Ecosystem
    • Block Explorer
    • Testnet Monitoring Grafana Dashboard
      • gas processed across the network
      • Block creation times
      • Deploys / block
      • Deploys / interval of time
      • Nodes online
    • Web3 interface
    • Reference dApps
    • Developer interfaces?
    • Reference mobile app? Mobile libraries?



Consensus Features





Node Features


End User features

  • The ability to create accounts on a cell phone (simulator is fine)
  • Tools to help with Deployments
  • Document how account recovery will work on the CL Blockchain

Metric for tracking success (Internal only)

  • Features added to help DApp developers
    • Account creation tools 
    • Account recovery documentation
    • Tools to help with deployments?
  • Features added to help node operators (metrics to monitor node health)
    • Demonstrate 1000 token transfer transactions / second across the network of 100 nodes. Nodes are stable under this level of load
      • Total gas processed metric
      • Storage metrics for DAG store
    • Single Docker image
  • Number of things we have learned about the performance of the node as a result of the work in this release?
    • Let's fill this in by the time we ship. 
  • Gas processed / 5 seconds <node op or DApp>


Technical overview


  


What is special about this release?


Are we doing something differently? If so, why are we doing it this way?

Before these features were available, what were developers able to do?


After these features launch, what will developers be able (and not able) to do?

Developers will be able to author simple smart contracts in RUST and run these contracts on the node.  Developers cannot create blocks or interact with the blockchain state. 

Description of release packaging

Release packaging will include:


Where do developers go to learn more and get started?

At release, links to installation packages and relevant documentation is available at 


Where will bugs be filed?

Report a bug

Where do developers go for support? What is the SLA? Who is on point?

NA



Open areas of Risk

  • Protocol Liveness
    • Synchrony condition? 
    • validator reward structured to encourage liveness?
    • Burn stake? (problem with nascent network)
      • Stake burning starts 12 months after the network is launched.
  • Protocol specifics
    • Finality oracle & proof
    • Slashing conditions
  • Accounts & Secure Enclave support
  • Block Merging
    • Commutative property and algebras
  • State query mechanism
    • API's
  • State storage- basic state trie
  • Booting the network
    • Validator public keys that launch the network
    • Hash of the genesis block
  • Economics
    • Fee schedule
  • Node
    • Max deploys / second supported
      • What is the UX when a deploy exceeds the max #