RNode v0.7.1 offers validator bonding, cost accounting, a name registry, and a Rholang cheat sheet

Today we announce the newest release of our RChain node software: RNode v0.7.1. This is another of the pre-production release milestones toward the release of the RChain blockchain. Get started with RNode v0.7.1 at https://developer.rchain.coop.

About This Release

The RChain Cooperative in partnership with Pyrofex is pleased to announce the release of RNode v0.7.1. This is the latest of the pre-production release milestones toward the release of the RChain blockchain planned for delivery in the first quarter of 2019.

The previous version of RNode introduced features to support creation and validation of the genesis block to launch the RChain test net. RNode v0.7.1 introduces the name registry, validator bonding, and cost accounting. Additional work included in the release brings performance enhancements that include: a new threading model, fine-grained locking in the tuplespace, and in memory DAG storage. This release also delivers a Rholang cheat sheet designed to support developers in the use of Rholang.

See notable enhancements of RNode v0.7.1 below for a detailed description of these new features. Information about the project plan, key milestones, and plans for future releases is available at https://developer.rchain.coop.

As this is a pre-release version of RNode, we do not yet support backward compatibility with previous versions. However, we do offer release notes with this version to bring awareness to changes to the software and to support dApp developes’ use of the platform. Release notes are available at Release Notes — RNode v0.7

Planned patches for this release before the end of the month include removal of forgeable names from Rholang contracts and additional improvements to the threading model in both RSpace and the consensus protocol.

Developed by the Pyrofex development team in collaboration with members of the RChain Cooperative, the RChain platform is the brainchild of Greg Meredith and described in the RChain Platform Architecture. The goal of this project is to build a decentralized, economically secured, sustainable blockchain. When complete, the platform will include a modular, end-to-end design that is correct-by-construction, operates at a global scale, and supports a rich variety of decentralized applications, DApps.

Notable features and improvements in RNode v0.7.1

Validator bonding

The RChain platform has a pure proof of stake consensus system (PoS). To secure the network, validators must provide a bond, an amount of tokens, which is ‘locked’ into the PoS contract on the chain. We call this process validator bonding. During the test net phase there is no way to acquire tokens for the network. So to support validator bonding, this version of RNode offers a faucet to dispense the bond amount. To start the validator bonding process a RNode operator joins the network as an unbounded validating node. In this state it is in read-only mode and can obtain the state of the network from other nodes and deploy contracts to existing validator nodes. Next RNode operators invoke the ‘GenerateBondingDeploys’ client api. They provide a public/private key pair and bond amount through this api to generate the Rholang files required to create the bonding request. RNode operators then make the bond request by deploying the Rholang files to an already bonded validator by specifying the — grpc-host option along with the bonded validator’s’ IP address. The bonded validator proposes blocks containing the Rholang files. This updates the PoS contract to include the new validator’s identity and bond amount. The network then recognizes the new validator as bonded and supports the new validator proposing blocks.

Instructions for bonding to test net are available in the User Guide for Running RNode.

Name registry

The RChain blockchain runs smart contracts authored in Rholang. Rholang implements the object capabilities security model. To do this properly, the system supports the creation of deterministic unforgeable names. The name registry enables contract authors to register a name, such that the unforgeable name can be looked up. Contract authors can register names by using a public key or a UUID. Contract authors that want to update their contracts on the chain should use a public key for registering the contract. This mechanism will enable the author to update the contract 2 64 times. Contract authors that prefer a fixed reference to names in their contracts should use the UUID mechanism, as these cannot be modified. To see examples of how the name registry can be implemented in smart contracts, go to the RChain Github and explore the Rholang examples.

Cost accounting

As with all public blockchain platforms, there is an execution cost for performing transactions on the RChain platform. Miners, on the Bitcoin and Ethereum networks, and validators on the RChain platform receive transaction fees as payment for processing the transaction. These fees incentivize validators to provision hardware and stake the network.

Charging and distributing transaction fees requires a process for cost accounting within the platform. This version of RNode introduces cost accounting. Cost accounting includes evaluation of a Rholang file to determine an execution cost in Phlogiston, the base unit of cost in the RChain economic system. When users deploy a contract they specify both an amount of Phlogiston for the transaction, the ‘phlo-limit’, and the exchange rate for Phlogiston based on REV, the ‘phlo-price’. Because no wallets exist yet on the platform, a wallet address need not be specified to fund contract deployment. This feature will be available in a future release.

More information on cost accounting is available in the cost accounting specification.

Instructions for deploying contracts with specifications for ‘phlo-limit’ and ‘phlo-price’ are available in the User Guide for Running RNode.

Performance improvements

RChain has an ambitious goal of supporting Visa-level transactions on a public compute infrastructure. The team continues to investigate and implement performance improvements working toward a goal of 40,000 COMM events/second over all shards. As part of this release, the system now uses fine grained locking in the tuplespace, a new threading model, and an in memory DAG store.

Production engineering enhancements

RNode operators need tools to manage node instances. RNode 0.7.1 supports obtaining the GitHash version of RNode via a http request. MacOSX users can also use brew to install RNode on their system. The instructions for installing via Brew are available on https://developer.rchain.coop.

Instructions for running RNode are available in the User Guide for Running RNode.

Fixes for stability and usability

Since the release of RNode v0.4, the RChain community has been actively involved in weekly testing of the software. They developed skills as RNode operators, helped test the software, found bugs, and tested bug fixes. RNode v0.7.1 includes several of these fixes related to the consensus protocol and user-facing messaging. This dashboard shows bugs and their status.

Rholang cheat sheet

Rholang is a new language for writing smart contracts for the RChain platform. As the language develops along with the platform we are pleased to offer more resources to help developers get started and use Rholang. In addition to the Rholang cheat sheet, find a compilation of other resources at https://developer.rchain.coop.

Planned patches for RNode v0.7

Remove forgeable names

A name on the RChain blockchain is a reference to a Rholang process. It is important that each process have a unique name. Prior to this patch, a user could create multiple processes called ‘Hello_World’. However, on the chain, it’s important that each process be uniquely identifiable. Therefore, user defined names, known as forgeable names, must be avoided. To reference a name, it must first be registered in the registry.

Addition updates to the threading model

This work builds on the updates to the threading model delivered in RNode v0.7.1. This patch will bring similar threading improvements to both RSpace and the consensus protocol.

Get started with RNode v0.7.1

Download this release and find documentation at the RChain developer portal: https://developer.rchain.coop

We want to thank all community members for their continued support and invite everyone to test this new release.

We especially invite dApp developers and people interested in being validators to join us for community RNode testing sessions each Tuesday at 14:00 UTC. Information about these sessions and how to connect is available at RChain community RNode testing.

Direct questions and comments to the RChain developer forum. Bugs can be filed on our JIRA.

Read more about the RChain Cooperative.

Look for more releases in the coming weeks as we continue to build the RChain blockchain.