RNode v0.5.1 offers all features needed for dApp developers to write and transact smart contracts on the platform Nash Foster Follow Jul 16, 2018 · 4 min read

RNode v0.5.1 completes delivery of the core features needed for dApp developers to write smart contracts on the RChain platform. Get started with RNode v0.5.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.5.1. This is the latest of the pre-production release milestones toward the release of the RChain blockchain planned for delivery in the fourth quarter of this year.

The previous version of RNode demonstrated proposal and acceptance of blocks over the RChain peer to peer network. RNode v0.5.1 builds on this and now introduces the ability for users to use private (unforgeable) names in Rholang contracts, create a genesis block, deploy a wallet contract, and execute transactions between wallets with new features in the consensus protocol, Rholang, and RSpace.

See notable enhancements of RNode v0.5.1 below for a detailed description of these new features. You can also watch a demonstration of RNode v0.5.1 features delivered during the July 11 RChain community debrief. Information about the project plan, key milestones, and plans for future releases is available at https://developer.rchain.coop.

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 enhancements of RNode v0.5.1

Much of the new work in RNode v0.5.1 supports the consensus protocol and transactions on the platform.

Checkpoint and rollback

The structure of the RChain blockchain is a Block DAG (Directed Acyclic Graph). It requires a specific set of features for the internal representation of the blockchain as blocks are processed and validated where the state of the machine will ‘roll back’ and ‘snapshot’ to apply the results of consensus (agreement on a block). The creation of the block DAG in the RChain platform takes place in the consensus protocol. RSpace now supports the ability to take a “checkpoint” or “snapshot” of its contents and “reset” or “roll back” to this checkpoint at any given time.

Execution traces

The RChain blockchain has a unique event, inherent to the concurrency of the RChain platform. A COMM event occurs when a listening process and a sending process synchronize, substituting the messages for variables in the body of the listening process, and execution continues. The RChain architecture derives from the Reflective Higher Order π-Calculus, enabling Rholang processes to reduce and execute independently of each other. The execution of a Rholang contract can involve a single COMM event or several. Each COMM event can execute independently of others within the tuple space, so concurrency doesn’t just exist across smart contracts, it also exists within any given smart contract. This concurrency and non-determinism of the platform and the Rholang language has implications on the blockchain. Validators have to update their state as part of their work; in order for this to happen in the same way for all validators, RSpace has been enhanced to include execution traces, which are included in the block data structure. When a validator receives a block, the execution trace is used as a ‘map’ to the proposing validator’s state. These execution traces also communicate any unforgeable names that are part of the block to the validator set.

Unforgeable names

The Rholan language and RChain platform support unforgeable names. An unforgeable name is a core concept in the object capability security model. An object is a process that listens on a name for method invocations. If a process is in possession of the name, operations can be performed on the object. In an object capability language, it is impossible to get hold of an unforgeable name unless the process created it itself or the process received the name in a message. Using the ‘new’ operator within a Rholang smart contract will generate an unforgeable name during the deployment process.

Here’s what you can do now with RNode v0.5.1

With the implementation of the features described above, users and developers working with RNode can create this scenario.

Setup requirements

A test network of 3–5 nodes running the software.

A set of public / private keys for your validating nodes to use.

Steps:

Using the repl, author and test your Rholang smart contract.

Using the deploy API, deploy your smart contract.

Propose a block and observe the validators in your test net accepting the block.

Invoke your Rholang smart contract by sending a transaction to it.

Observe the clique safety of the blocks.

Get started with RNode v0.5.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. Building and testing a network of nodes at every stage of the development process is key to the success of delivering a blockchain with industrial-scale utility. Direct questions and comments to the RChain developer forum. Bugs can be filed on our JIRA.

Look for more releases in the coming weeks as we continue to build the RChain blockchain at https://developer.rchain.coop.