Deep dive into this release on Nash Foster’s Medium page.
Notable RNode v0.7.1 updates:
- Validator bonding
- Cost account
- Name registry
- Rholang cheat sheet
RNode v0.7.1, released on October 19, 2018, is the latest pre-production release milestone of the RChain node software by the Cooperative in partnership with Pyrofex. Release notes for v0.7 can be found at Release Notes — RNode v0.7. The previous version of RNode introduced features to support the creation and validation of the genesis block to launch the RChain test net.
Additional v0.7.1 performance enhancements: new threading model, fine-grained locking in the tuplespace, and in-memory DAG storage.
Information about the project plan, key milestones, and plans for future releases are available here.
As this is a pre-release version of RNode, it does not support backward compatibility with previous versions. Planned patches before the end of the month include removal of forgeable names from Rholang contracts and improvements to the threading model in both RSpace and the consensus protocol.
When complete, the project will include a modular, end-to-end design that is correct-by-construction, operates at a global scale, and supports a rich variety of dApps.
Notable features and improvements in RNode v0.7.1
The RChain platform employs a pure proof of stake (PoS) consensus system. To secure the network, validators must provide a bond (some amount of RHOC), which is ‘locked’ into the PoS contract on the chain. This process is known as validator bonding. Since there is no way to acquire tokens during the test net phase, to support validator bonding, this update provides a faucet to dispense the bond amount.
To initiate validator bonding, an RNode operator joins the network as an unbonded validator node. This is a read-only mode that allows the operator to obtain the state of the network from other nodes and deploy contracts. Next, the operator invokes the ‘GenerateBondingDeploys’ client API. The operator then provides a public/private key pair and bond amount, through this API, to generate the Rholang files required to create the bonding request. A bond request is made by deploying the Rholang files to an already bonded validator by specifying the gRPC-host option and bonded validator’s IP address. The bonded validator proposes blocks containing the Rholang files, updating the PoS contract to include the new validator’s identity and bond amount. The network then recognizes the new validator as bonded and supports their proposals of new blocks.
Instructions for bonding to test net are available in the User Guide for Running RNode.
The RChain platform runs smart contracts authored in Rholang, which implements the object capabilities security model. For proper implementation, Rholang uses deterministic unforgeable names. The name registry enables contract authors to register unforgeable names, making them available for lookup. Authors can register names by using a public key or UUID. Public keys must be used by authors who want to update their contracts on-chain. This mechanism will allow the author to update a contract 264 times. Authors who prefer a fixed reference to names in contracts should instead use a UUID; 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.
Like other public blockchain platforms, there is an execution cost for performing transactions on the RChain blockchain. Validators on the RChain platform are incentivized to provision hardware and stake the network through these transaction fees.
This version of RNode introduces cost accounting for charging and distributing transaction fees. A Rholang file is evaluated to determine the execution cost in Phlogiston (analogous to Gas in Ethereum), the base unit of cost in the RChain economic system. When deploying a contract, users specify an amount of Phlogiston, the ‘phlo-limit’, and the exchange rate for Phlogiston based in REV, the ‘phlo-price’. Currently, there are no wallets on the platform, so no wallet address needs to be specified, but once wallets are added in a later release, one will need to specify a wallet address as well.
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.
The development team continues to investigate and implement performance improvements working toward a goal of 40,000 COMM events/second across all shards. As part of this release, the system now uses fine-grained locking in the tuplespace, a new threading model, and 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 an http request. MacOSX users can also use Brew to install RNode on their system. The instructions for installing via Brew are available here.
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, finding bugs, and testing 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 smart contract language 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 here.
Getting Started with RNode v0.7.1
Download this release and find documentation here.
We want to thank all community members for their continued support and invite everyone to test this new release, especially dApp developers and people interested in being validators.
RNode testing sessions run every Tuesday at 14:00 UTC. Information about these sessions and how to connect is available at RChain community RNode testing.
Stay tuned for more releases as we continue to build the platform!