Reference
Document status |
| ||||||||
Release status |
| ||||||||
Related pages |
Milestones
Start date |
|
Sprint 28 (2 weeks) |
|
Sprint 29 (2 weeks) | |
Release |
|
Development team
Program manager | Project manager | Developer | Developer | Developer | SRE |
Ashok Ranadive | Piotr Dziubecki | Michael Birch | Akosh Farkas | Henry Till | Tom Vasile |
Marketing team
Marketing lead | Content owner |
TBD | TBD |
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
Jira Legacy | ||||||||||
---|---|---|---|---|---|---|---|---|---|---|
|
Consensus & Node Features
- Eras, Leaders, Efficient Fork Choice (not releasing until 13)
- GraphQL Enhancements
- Account Balances in GraphQL
- Validator / Blocks relationships
Jira Legacy | ||||||||||
---|---|---|---|---|---|---|---|---|---|---|
|
EcoSystem:
- CLarity Enhancements
- dApp developer guide for writing smart contracts in Rust.
- Blog posts
- Token vesting contracts example
Jira Legacy | ||||||||||
---|---|---|---|---|---|---|---|---|---|---|
|
Test & Operations:
Jira Legacy | ||||||||||
---|---|---|---|---|---|---|---|---|---|---|
|
Tickets for this Release
Features/Stories
Jira Legacy | ||||||||||
---|---|---|---|---|---|---|---|---|---|---|
|
Defects Fixed
Jira Legacy | ||||||||||
---|---|---|---|---|---|---|---|---|---|---|
|
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.
Code Block |
---|
query { block(blockHashBase16Prefix: "a3016e93f101da2781eae0696064df8c1ca770058b1d1eae261cfd4034f47547") { blockHash parents { children { blockHash } } } } |
Response:
Code Block |
---|
{ "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
Ashok Ranadive (Unlicensed) you can put your content hereWe 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. We will be publishing our specification for our test platform in the coming days
For Node Operators
.
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 - and don't have access to an IDE. (work in progress still). 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?
- At release, links to installation packages and relevant documentation is available at
- Packages available at: http://github.com/CasperLabs/releases
- Docs available on GitHub.
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?
Gitter developer channelDiscord