CasperLabs, builders of the fully decentralized and scalable next-generation blockchain implementing pure CBC-Casper Proof of Stake (PoS) protocol, has released Node 0.5. With this release, it is now possible to add nodes to the network and participate in consensus by sending a bonding request. CasperLabs’ Node 0.5 includes all of the necessary features to support a public DevNet with the introduction of validator bonding, unbonding, and the Proof of Stake contract. Together, they enable one of the defining characteristics of CBC-Casper: participants in consensus can join and leave the network without going through any proxy voting process. Also known as being “permissionless,” this feature is an essential property of high security blockchains.
The CasperLabs blockchain supports smart contracts that compile to WASM. Presently, compilation targets for Rust are available. Medha Parlikar, CEO at CasperLabs, shared, “I am thrilled to announce the release of Node 0.5 which paves the way to our public DevNet release next week.” Parlikar added, “Our incredible development team continues to make solid progress towards the public release of our network later this year.” Highlights of the CasperLabs Node 0.5 release include, sending Deployments (transactions) must now be signed using the public key associated with the account performing the deployment. Transactions being executed from a given account must employ a sequential nonce, to prevent replay attacks and to ensure deterministic transaction execution for a given account. It also includes accounts and Purses.
The CasperLabs blockchain uses accounts, which is where tokens are stored, within purses. Accounts are only created in conjunction with a token transfer request and are secured with an ed25519 compatible key pair. When an account is created, a purse is created in the mint, tokens are transferred to the new purse, and a new account object is written to the global state under the passed PublicKey. The account also includes additional fields for thresholds, associated_keys, and account_activity, which will be important for account recovery, a feature planned for a future release.
In addtion as deploys are received from an account, the account public key is used to access the execution pre-state context from global state. The contract is executed, the execution effects are applied to the pre-state to compute the post-state and the post-state is stored in global state under the account’s public key. This post-state will now be the “pre-state” for the next deploy for the account. Another new addition is validator Bonding and Unbonding — CBC-Casper Proof of Stake enables validators to join and leave the network by sending a request to the network in the form of a special transaction known as a “bonding or unbonding request.
Finally is finalizing Transactions — The CBC-Casper protocol is provably safe. This means that a mathematical proof exists for the algorithm demonstrating that transactions, once finalized by CBC-Casper, cannot be reversed. The Casper protocol achieves this by using a special algorithm to measure the level of finality achieved for a given block. Once a transaction has been submitted, it is possible to use the GraphQL interface located at port 40403 to obtain finalization information.
Additional technical details and coding examples, as well as links to the GitHub developer package and documentation, can be found in the CasperLabs’ official announcement.