Node 0.12 Release Plan

Reference

Document status

COMPLETE

Release status

RELEASE

Related pages


Milestones

Start date

 

Sprint 28 (2 weeks)

 

Sprint 29 (2 weeks) 

Release

 

Stakeholders

Name

Role

Reviewed?

Medha ParlikarCTO
  •  
Mrinal ManoharCEO
  •  

Development team

Program manager

Project manager

Developer

Developer

Developer

SRE

Ashok RanadivePiotr DziubeckiMichael BirchAkosh FarkasHenry TillTom Vasile

Marketing team

Marketing lead

Content owner

TBDTBD

Release Overview

Simple Overview


We are proud to announce that CasperLabs now supports Smart Contract development in both Rust and AssemblyScript.  

We also present our first version of a contract development kit, that enables developers to run smart contracts in the CasperLabs runtime environment, enabling the use of Rust development tools like Cargo and CLion. 

The kit includes the system (Genesis contracts) and several example contracts, such as an ERC20 example and a set of integration tests.  Rust developers can use familiar tools and workflows to build their contracts and run them in the engine in the order they desire and observe the effects of contract execution in the global state (the shared database that is the blockchain) -all from within an IDE of their choice.


Placeholder for Consensus:

The Highway Protocol implements a partially synchronous liveness strategy for CBC-Casper.  As we run up to our TestNet launch, we completed the work in consensus to implement Eras, Rounds and leaders, along with an efficient fork choice rule.  

Detailed Overview

Execution Engine Enhancements

  • Contracts 'SDK' (Contract API for the EE & cargo.toml for use with IDE)
  • Preliminary support for Contracts in AssemblyScript


key summary assignee status
Loading...
Refresh


Consensus & Node Features

  • Eras, Leaders, Efficient Fork Choice (not releasing until 13)
  • GraphQL Enhancements
    • Account Balances in GraphQL
    • Validator / Blocks relationships 

key summary assignee status
Loading...
Refresh


EcoSystem:

  • CLarity Enhancements
  • dApp developer guide for writing smart contracts in Rust.
  • Blog posts
  • Token vesting contracts example

key summary assignee status
Loading...
Refresh


Test & Operations:

key summary assignee status
Loading...
Refresh


Tickets for this Release

Features/Stories

key summary assignee status sprint
Loading...
Refresh

Defects Fixed

key summary assignee status
Loading...
Refresh

Metric for tracking the success:

What is special about this release?

For dApp Developers 

In this release, we are pleased to offer 2 large features to support dApp developers  - Assemblyscript contracts, and a Rust contract development runtime environment and documentation.  

Introducing cargo casperlabs

Developers wanting to use Rust (recommended for financial applications) can create a crates project for their smart contracts and run their contracts in a testing framework that has the CasperLabs contract runtime environment with it.  This enables developers to use a seamless workflow for authoring and testing their smart contracts.  This environment can also be used for continuous integration, enabling Rust smart contracts to be managed using development best practices.  The documentation on how to use cargo casperlabs is documented on Github (https://github.com/CasperLabs/CasperLabs/blob/dev/execution-engine/cargo-casperlabs/README.md )

As part of the Rust development environment enhancements, we also present Rustdocs for the contracts library.  The  Rustdocs are available at: https://docs.rs/crate/casperlabs-contract/0.1.0

Smart contracts in Assembly Script

For those  developers that  would prefer to use  a scripting type language,  the W3C foundation has implemented AssemblyScript https://docs.assemblyscript.org/ for Webassembly.  We have created a contracts library that enables developers to create smart contracts for Webassembly using AssemblyScript.  Quite often AssemblyScript is conflated with TypeScript, and while these 2 languages are both scripting languages, there are several differences which are documented and contract developers should be aware of these differences.

GraphQL enhancements:

We offer new relationships in GraphQL that support retrieving the child relationships given a block hash. 

query {
  block(blockHashBase16Prefix: "a3016e93f101da2781eae0696064df8c1ca770058b1d1eae261cfd4034f47547") {
    blockHash
    parents {
      children {
        blockHash
      }
    }
  }
}

Response:

{
  "data": {
    "block": {
      "blockHash": "a3016e93f101da2781eae0696064df8c1ca770058b1d1eae261cfd4034f47547",
      "parents": [
        {
          "children": [
            {
              "blockHash": "a3016e93f101da2781eae0696064df8c1ca770058b1d1eae261cfd4034f47547"
            }
          ]
        }
      ]
    }
  }
}

The GraphQL interface is available on every node, and public DevNet interface is at http://devnet-graphql.casperlabs.io:40403/graphql


Building Highway- Paving a path to the Future

We are making great progress towards our first production implementation of Highway with Eras, with rounds and leaders, Proposal messages, Confirmation responses, and Witness messages. The Round exponents can be configured but there is no auto-adjustment.  We expect that this will allow us to deploy the Alpha Testnet and to the test environment so that we can study its behavior under different conditions and identify opportunities to stabilize, harden and optimize the protocol while we also build the additional security and reward distribution parts.

Getting Ready for our next big milestone.

We are preparing to embark on a round of performance testing, optimizing and tuning of the protocol as we integrate it into the node in the coming weeks. To support these efforts, the team has been working hard on preparing extensive test infrastructure.  Launching a permissionless blockchain, open to hostile actors is a non-trivial matter, and we need test infrastructure to meet this challenge.  

Launching a blockchain network within a hostile permission-less setting is non-trivial. The elevated risk profile of such an undertaking requires a concomitant level of sophistication in respect of system testing. Casper Labs is currently building out the STests platform to enable teams to perform system testing both at scale and in detail. The platform is being designed in an extensible fashion and aims to square the circle between simulations at the dApp and game theoretical levels. Note that the platform is under heavy development for the next 2 - 3 weeks and may undergo non-trivial changes.

Next week we will publish our specification to Github (Github.com/CasperLabs) for the system we are creating to test the platform.  Stay tuned!

Are we doing something differently? If so, why are we doing it this way?

Most platforms don't support native development workflows, developers need to run full or light nodes in order to develop contracts.  Custom IDE's have been built for custom programming languages, requiring developers to use several tools to develop applications for businesses.  Our Contracts Development Kit leverages the existing Rust development toolchains and ecosystem, and will work with any IDE that supports Rust development. 

Before these features were available, what were developers able to do?

Developers had to run a node locally and deploy their contracts to a node in order to test their smart contracts.  Developers could only write contracts in Rust.  

After these features launch, what will developers be able (and not able) to do?

Developers can use the Contract Development Kit for Rust to create their smart contract project and test their smart contracts in a local CasperLabs contract runtime environment.   Developers can write contracts in AssemblScript and Rust.

Description of release packaging

Release packaging will include:

  • Docker image (Supported on Linux only)
  • Debian package 
  • RPM package
  • Brew installation
  • tar.gz file

Where do developers go to learn more and get started?

Where will bugs be filed?

Github - part of the public release.

Where do developers go for support? What is the SLA? Who is on point?

Discord