Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

Reference

Document status

Status
colourGreen
titleApproved

Release status

Status
colourGreen
titleRELEASERELEASED

Related pages

Cryptography Specification

Node metrics specification

Rholang specification

RChain consensus specification


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 
Code Block
--bonds-file
  • Propose new blocks to the network
Code Block
--propose
  • Deploy Rholang contracts across the network
Code Block
--deploy
  • Block explorer
Code Block
--show-block
  • 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

Jira Legacy
serverSystem JIRA
columnskey,summary,assignee,status
maximumIssues1000
jqlQueryproject=rhol and labels ='node-0.4' and issuetype=story
serverId50130123-f232-3df4-bccb-c16e7d83cd3e

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

Jira Legacy
serverSystem JIRA
columnskey,summary,assignee,status
maximumIssues20
jqlQueryproject = CORE AND fixVersion = node-0.4 AND "Epic Link" = CORE-195 ORDER BY created DESC
serverId50130123-f232-3df4-bccb-c16e7d83cd3e

  • 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.

Jira Legacy
serverSystem JIRA
columnskey,summary,assignee,status
maximumIssues20
jqlQueryparentepic= core-319 and (fixVersion = node-0.4 or labels = 'node-0.4')
serverId50130123-f232-3df4-bccb-c16e7d83cd3e

  • 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

Jira Legacy
serverSystem JIRA
columnskey,summary,assignee,status
maximumIssues20
jqlQueryproject = RHOL AND labels = node-0.4 AND "Epic Link" = RHOL-261
serverId50130123-f232-3df4-bccb-c16e7d83cd3e

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?

Jira Legacy
serverSystem JIRA
columnskey,summary,type,created,updated,due,assignee,reporter,priority,status,resolution
maximumIssues20
jqlQuerystatus in ("In Progress", "In Review", "To Do") AND labels = known_issue OR issuetype = bug ORDER BY created DESC
serverId50130123-f232-3df4-bccb-c16e7d83cd3e

Developers will be able to use cryptographic features in Rholang.  Developers will also be able to create and call methods in Rholang.  

  •  Medha Parlikar (Unlicensed): List the new language features that will be implemented during this release.  Depends on the work done by Rholang team.

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


Jira Legacy
serverSystem JIRA
columnskey,summary,assignee,status,sprint,epic link
maximumIssues1000
jqlQueryfixVersion = node-0.4 OR labels=node-0.4 ORDER BY "Epic Link"
serverId50130123-f232-3df4-bccb-c16e7d83cd3e