At Oasis Labs we’re building a platform that brings the benefits of confidentiality and decentralized computing to developers irrespective of their experience with blockchain technology. To make our platform more accessible, our next release, includes a few fundamental changes to the core experience with our new Oasis Development SDK. Along with this release, we're also launching an upgraded developer network — Devnet 2.0.
Our new development experience allows seasoned blockchain developers, developers learning to build on blockchain platforms, and even cloud developers, to seamlessly build and take advantage of integrity, confidentiality, and privacy built into the Oasis network.
Thanks to all the developers who provided meaningful feedback via phone calls, Gitter, GitHub and more –– your feedback to make our platform better has been critical to understand the updates we should make to our platform.
Get started building with the new Oasis Development SDK by following our quickstart guide.
Here’s a summary of what’s changing:
From “Smart Contracts” to “Services”
Throughout our updated documentation you’ll notice that we now refer to contracts as services, starting in this release. We would like to think of smart contracts as services that can be deployed and interacted with. A service provides a well-defined piece of functionality with application backends composed of a single service or multiple interacting services. For example, a service may be a single-use smart contract to execute an atomic trade between two tokens, or a set of interacting smart contracts that support holding collateralized debt positions.
Image 1: Building blocks of the Oasis Network. Oasis Dashboard and Oasis CLI are frontend tools to manage services on the Oasis Network. We are introducing Oasis client SDK and Oasis gateway to simplify interacting with the Oasis Network and the services deployed on the Oasis Network.
In this release we are deprecating web3c. As a result, Solidity contracts will no longer have the same confidentiality guarantees going forward. All Solidity contracts will be non-confidential while continuing to benefit from better performance compared to other Solidity platforms. Existing services and clients using web3 will continue to work in Devnet 2.0 against the web3 gateway. For future Ethereum contracts, we recommend either web3.js or ether.js.
With the new Development SD, rust developers will be able to write and test their contracts using cargo, test against a local blockchain, and deploy on our Devnet 2.0, testing their deployments with a new client SDK and CLI.
Writing services: We have a brand new library for service development in Rust that hides many of the blockchain specific patterns tied to writing smart contracts to make it easier to write services in Rust.
Interacting with services: We have a new client, Oasis-client, for deploying and interacting with Rust services. The new client works with the new developer gateway and is a replacement for web3c, our client to support confidential transactions prior to this release. The new client is easier to use because it is a simpler RPC API than web3c and integrates with Deoxys II, a constant-time cryptographic primitive for authenticated encryption which provides stronger security properties than those provided with web3c.
Developer gateway: The new developer gateway, Oasis-gateway, supports the new client and exposes an API that can be used by developers to create a public API to consume their deployed services.
Starting with this release we have a new WASM runtime with support for a blockchain-flavored WebAssembly System Interface (WASI). Using a WASI-based WASM environment not only gives us the sandboxing abilities inherent to WASM, but also portable binaries that can build anywhere and run in our Devnet. This makes it possible for us to leverage the wider WASM ecosystem of developer tools and libraries in Oasis services.
Prior to this release, the developer flow for funds to deploy and run transactions was by visiting our faucet and funding a wallet. This has been replaced by an auto-funding model that automatically funds each developer up to 1 DEV a day with automatic top-off. If the developer needs more funds they can send a request to [email protected] and we will increase their limits. This reduces friction, taking us a step closer to making our platform accessible to both blockchain and non-blockchain developers.
With this release, we have made multiple refinements to improve user experience on the Dashboard.
- Simpler flow to upload and deploy new services
- Project-level analytics of active users and cost based on recent usage
- The new Oasis Explorer to debug transactions within the dashboard
- After Devnet 2.0 is launched, migrate your contracts to use the new runtime and re-deploy on Devnet 2.0 by September 30.
- Devnet 1.0 will no longer be supported after September 30.
- Devnet 2.0 deployment and our new flow will work end-to-end starting July 19, our Beta release.
- For all new development, use our new libraries.
- Beta Release in July
- Provide early feedback on this latest release.
- Use the new toolchain to build and deploy services.
- Launch Devnet 2.0 in August.
- Dashboard upgrade supporting Devnet 2.0 runtime. Dashboard 2.0 will support deploying services using new runtime only
Legacy support for 60 days
- Legacy contracts are served through the old Dashboard. A link will be available from the main Dashboard for up to 2 months
- During this time, contracts deployed on Devnet 1.0 and their state will remain accessible. We encourage developers to migrate their contracts to our new platform in this time
- Devnet 2.0 will have fresh state and state maintained in Devnet 1.0 is non-portable
- Old Dashboard is sunset.
- Devnet 1.0 is sunset.
Over the next few months, we are heavily focusing on increasing ease of use and efficiency for developers. Here are a few things that are on our priority list to drive this goal.
Additional language support
With the change to WASI for the system interface in our WASM runtime, we have the ability to support languages that can be compiled to WASI. This opens the possibility to support languages like C, C++, Java, and Go. If you have a specific need for your use-case, please send us a note at [email protected] to help us prioritize.
Enhancements to the local developer toolchain
The local chain enables testing of services with state. We have a number of additions planned for the future including,
- More precise cost profiling of services
- Enhancements to measure additional cost for confidential services
Current end-user flows in blockchain have been clunky and limited because of existing wallets. Typically, users end up self-authenticating to the blockchain and paying for usage by signing the transaction with a single wallet key. We are exploring new models that help developers build better end-user engagement.
We're working on updates to the oasis-gateway, where the identity for the end-user would be separated from the identity for transaction payment. This allows hybrid models where different wallets can be used to identify the end user and to pay for the transaction.
Stay tuned for more on this feature soon.
Launching a Public Testnet
Over the course of the next two quarters we expect to deploy a Public Testnet and allow more developers to deploy nodes on our network. More on this to come in future releases and blog posts.
Lastly, our priorities are driven by developer needs and would love to hear from you.
If there are any particular needs for your use-cases that you would like to see in future releases, please reach out to us at [email protected].