RNode v0.6.1 supports launch of the RChain test net

Features introduced in RNode v0.6.1 support the creation and validation of the genesis block to launch the RChain test net on September 5, 2018.

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

About This Release

The previous version of RNode completed delivery of the core features needed for dApp developers to write smart contracts on the RChain platform. This version supports the launch of the RChain test net with features that include the genesis block creation and approval process. This release also includes improvements to the communications module and bug fixes improving consensus functionality and RNode operator usability. Planned patches for this release will be delivered before the end of the month and include the RChain name registry and client APIs to retrieve data from the blockchain.

See notable enhancements of RNode v0.6.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.

Developed by the Core team at Pyrofex and RChain 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.6.1

RChain genesis block creation, approval, and network launch

The RChain launch process — for both for test net and main net — fulfills the RChain Cooperative’s goal to launch a community-sponsored blockchain platform. RChain and Pyrofex developed a decentralized, transparent, and validator-driven launch process for creating and approving the genesis block. The process begins with the creation of a genesis block by the bootstrap node. Following the creation of this block, all validators have the opportunity to generate a genesis block independently from source code and compare it to the one provided by the bootstrap node. To facilitate this, the bootstrap node will start up in a special mode and send the genesis block to a node that has a matching signature in the bonds file (a genesis validator). If the genesis block in the message matches the genesis block generated locally, the validating node will send a cryptographic signature and approval message back to the bootstrap node. The bootstrap node will tally up the signatures received. The network launches when the bootstrap node receives the required number of signatures and the required amount of time passes. The software includes a gRPC challenge protocol for this purpose. PR #1284 describes this process in code.

Initializing the Blockchain — Protocol for generating the Genesis block further describes this process.

Additionally, this version of RNode demonstrates the process for issuing REV based on RHOC balances held on the Ethereum blockchain. At main net launch REV will be the currency of the RChain platform. In a members only sale in 2017, the RChain Cooperative issued RHOC, an ERC20 style token on Ethereum. As part of the main net launch, the genesis block will issue REV based on RHOC balances shown on Ethereum at a specified block height. The main net genesis block will contain new RChain addresses and REV balances that correspond to those RHOC balances and Ethereum addresses. These RChain addresses are backward compatible with Ethereum, enabling RHOC holders to use existing primary keys to retrieve their newly issued REV. More information about the issuance of REV at the launch of main net is available at https://developer.rchain.coop/token-swap.

Updates to the communications module

RNode v0.6 includes improvements to the communications module to enhance functionality and stability. The RChain network operates over a peer to peer network. A peer to peer network requires a mechanism for nodes to discover peers in the network first, and then connect to these peers. The prototype RChain communications layer implemented the Kademlia node discovery protocol over UDP. The introduction of TCP in the RChain Protocol necessitated, a refactor of the Kadelmia portion of the prototype implementation. The Communications Module Specification further describes the RChain protocol and the refactoring work completed in this release. The RChain protocol uses gRPC protobufs for lowel level communication pipeline. A previous implementation defaulted to a 4MB frame size. In this release we increased the frame size to 100 MB, to support larger block sizes. Before the launch of main net, we will remove this size limitation.

Configuration file

The RNode software offers multiple configuration flags for flexibility and ease of use. This release introduces support for a TOML file to capture these configuration flags. The file name is ‘rnode.toml’ and the file needs to be located in the rnode data directory. RNode does not ship with a default TOML file yet. Operators will have to create the file from scratch. More information on the RNode options can be found here. Command line options used during rnode startup will override options in the TOML file, giving operators the flexibility they need to quickly adjust configurations as needed.

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.6 includes several of these fixes related to the consensus protocol and user-facing messaging. This dashboard shows bugs and their status.

Planned patches for RNode v0.6

The launch of test net takes place on September 5th at RCon3. We will patch Node v0.6 with client APIs to retrieve data from the blockchain, a RChain name registry, and an integrated block store, which are requirements test net. These patches will be in place by Aug. 30. A more detailed description of these patches is below.

Client APIs to retrieve data from the blockchain

These features support dApp developers and other users who want to run a distributed application on the RChain platform and obtain data from the blockchain. RNode v0.6 introduces transaction receipts giving dApp developers a way to listen for deploys with a name or set of names from their code API on the blockchain. Obtaining Data further describes this feature.

RChain name registry

The name registry is essential to allow protected public access to unforgeable names. For test net, we will support universally unique identifier (UUID) registration and pubkey registration. The Name registry specification further describes this feature.

Integrated Block Store

In RNode v0.6.1 the node stores finalized blocks in memory. Users execute ‘show-blocks’ or ‘show-block <portion of block hash>’ gRPC calls to see these blocks. Storing all of this in memory is not sustainable in the long-run. A patch to RNode v0.6.1 will implement storage of the blockchain on disk.

Get started with RNode v0.6.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 Coop.

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