node-0.4 release plan

Milestones

Start date 
Sprint #9 
Demo 
Release 

Note - sprint 9 will run for 4 weeks.

Development team


Marketing team

Marketing leadContent owner
Kelly Foster

Stakeholders

NameRoleReviewed?
President, RChain Coop
  •  
CEO, Pyrofex
  •  


Release summary

Simple overview

This version of RNode introduces deployment of Rholang contracts across the network and an explicit call to propose a new block in the blockchain.   Included in this are the necessary cryptographic functions, creation of a basic genesis block, a block explorer, and support for validator bonds.  This release also contains a broader set of metrics which can be used by node operators to monitor node health and performance. 

Technical overview

The RChain consensus algorithm uses a proof-of-stake protocol, where validators are required to bond with stake. Bonding and unbonding contracts need access to cryptographic functions to support signing with the validator key. Developers who want to deploy different tokens on the RChain platform will also need access to cryptographic functions to support their unique token cryptography.

Cryptographic functions are available to Rholang via a system cryptography channel and a cryptography module, available as a .jar file in the project. With the cryptography module in place, contract authors can use the following methods:

  • ed25519.verify
  • curve25519.encrypt
  • sha256.hash
  • keccak256.hash
  • blake2b256.hash

Support for secp256k1.verify will be available in a future release.

Consensus on the blockchain is a key aspect of the updates made to this version of RNode. In RNode v0.4 using the gRPC interface with RNode, developers can:

  • Establish validators and stake 
  • Propose new blocks to the network
  • Deploy Rholang contracts across the network
  • Block explorer
  • Observe nodes in the network recognizing when there are missing blocks, requesting blocks from peers, peers sending those blocks, and then receipt of the missing bloc.
  • Observe a fork choice based on the outcome of the Casper consensus protocol

Additional performance metrics are available from RNode and RSpace via a gRPC service.

These include:

CPU % utilization for the rNode process

RAM (in MB)

  • amount of memory being utilized by RNode.
  • amount being consumed by RSpace

Disk consumption (in MB)

  • by RNode (blockchain storage) 
  • by RSpace (tuplespace storage)

Network core metrics at the core level

  • Messages by message type (include the message type in the metric)
  • Response time for network messages - raw numbers only

JVM performance

  • Heap performance
  • Garbage collection
  • Size of memory pools
  • Consumption of memory pools

Updates to EVAL mode to support sending file contains over the wire. For example, a client can be in one place and the server in another and files can be sent between the two.

Introduction of transport layer security (TLS) for communications and node identity instead of the previously used UDP.  TLS offers both better performance and security for RNode. This release supports secp256r1 cryptography. This will be updated to support secp256k1 in a future release.

What is this release able to demonstrate?

Invoking a method from the Crytpo library: Lead: Kyle Butt

  • Demonstrate a contract calling a method from the crypto library and returning some data to STDOUT.

Additional Rholang language features: Lead: Kyle Butt 

  • Support for Methods, including nth of list and toByteArray 
  • Support for Logical connectives in the matcher 
  • Examples of new language features and updated tutorial

Enhanced Metrics: Lead: Pawel Szulc (Unlicensed)

  • Demonstrate a GRPC service that returns the raw data for the metrics.
  • Demonstrate Prometheus charts for each of these metrics.
    • CPU % utilization for the rNode process
    • RAM (in MB)
      • amount of memory being Utilized by rNode.
      • amount being consumed by rSpace
    • Disk consumption (in MB)
      • by rNode (blockchain storage) 
      • by rSpace (tuplespace storage)
    • Network core metrics at the core level
      • Messages by message type (include the message type in the metric)
      • Response time for network messages - raw numbers only
    • JVM performance
      • Heap performance
      • Garbage collection
      • Size of memory pools
      • Consumption of memory pools

  • Transport Layer Security for Communications & Node Identities: Lead: Pawel Szulc (Unlicensed)
    • Demonstrate TLS Handshake between 2 nodes, and exchange of certificates (and shared secret exchange?)
    • Demonstrate public key storage for the node
    • Demonstrate the rejection of a handshake because of an invalid / bad certificate.
    • Demonstrate that a nodes identity is' its public key and not its IP address.

  • Blocks of Rholang: Lead: Michael Birch (Unlicensed)
    • Demonstrate identification of validators
    • Demonstrate setting parameters for stake in validators
    • Demonstrate signature of messages as a validator
    • Demonstrate proposal of a new block to the network
    • Demonstrate deployment and receipt of Rholang contracts across the network
    • Demonstrate identification, request for, sending, and receipt of missing blocks between peers
    • Demonstrate fork choice based on the Casper consensus protocol
    • Demonstrate a block explorer

Metric for tracking success

See section above 'What is this release able to demonstrate?" 

What is special about this release?

The RChain blockchain will store Rholang code as part of the RChain state.  This release demonstrates a contract deployment, and inclusion of the contract code inside a proposed block.  Nodes will accept the proposed block and update their fork choice rule in the process.  Nodes missing blocks will also ask for blocks from their peers.

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

While it does not impact the way users and developers interact with RNode, this version of RNode demonstrates a change in the transport layer from UDP to TLS. TLS offers better performance and security. 

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

In the previous version of the node, RNode v0.3 demonstrated consensus messages over the RChain peer to peer network.  

Are there any known issues with this release?

Description of release packaging

Release packaging will include:

  • Docker image 
  • Debian package 
  • RMP package
  • .zip file
  • tar.gz file

Where do developers go to learn more and get started?

At release, links to installation packages and relevant documentation is available at https://developer.rchain.coop.

Where will bugs be filed?

Developers can report bugs here.

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

Developers can post questions to the RChain developer forum: https://forum.rchain.coop. This forum is monitored and developers can expect a response within 24 hours.

What license will this be released under?

The RChain software is licensed under Apache License, version 2.0

Rholang is licensed under the MIT License (MIT)

The Docker image is licensed under the GPL 2.0 License

JIRA issues in this release