IOTA Smart Contracts Protocol Alpha Release

The release of the IOTA Smart Contracts Protocol (ISCP) Alpha marks a significant milestone in the development of the ISCP. The scale and nature of improvements over the previous pre-Alpha version are significant and we now feel confident with the current state to release the Alpha version.

The fundamental and most notable change to the ISCP since its pre-Alpha release is the integration of a multi-chain environment, secured by the Tangle, the Layer 1: Subnetworks (comprised of Wasp nodes) are called “committees” and can run many blockchains in parallel on top of it without losing perspective of the environments that secures IOTA digital assets, the Tangle. Each such chain, being a functional equivalent of one Ethereum blockchain, is capable of hosting many smart contracts.

Structure of a smart contract

The IOTA Foundation’s approach to smart contracts represents a shift away from existing architectures and addresses their inefficiencies, such as the inability for parallel and scalable execution, the inability to run “foreign” smart contracts on different virtual machines, and being hindered by volatile and sometimes prohibitive fees, to name just a few.

With the IOTA Smart Contracts Protocol, developers and enterprises are free to define their own, flexible environments matching their requirements (smart contract languages/virtual machines) as well as sizes of validating committees that match their required or desired level of decentralization and security. The IOTA Smart Contract Protocol allows them to run a permissioned smart contract chain e.g. validated by a committee of their own nodes or define a committee of nodes among consortium partners. ISCP is also built with the intention of running fully "permissionless", meaning that a committee of validators can be selected on an open market of validators. All Smart Contract Chains – whether open or private – benefit from the inherent security and interoperability of anchoring any smart contract state and their results on IOTA’s feeless base layer.

IOTA Smart Contracts, therefore, don’t require all nodes in the network to execute all smart contracts but allow for a more flexible, sensible definition matching the smart contract owner’s requirements, which will drastically reduce cost and energy being spent, while highly increasing flexibility and not having to compromise on individual security requirements and the composability and interoperability required by decentralized applications (dApps).

Multiple chains in ISCP

This is the first major release allowing developers to begin to leverage the flexibility and scalability of a DAG-based distributed ledger for smart contracts. While much will probably change as the protocol further matures, this is a significant opportunity to display creative applications on the IOTA network such as native digital assets, decentralized exchanges (AMMs), NFT marketplaces, liquidity platforms, and smart contracts that leverage IOTA Oracles.

The most anticipated aspect of the Alpha release is that developers can now create IOTA-based smart contracts and dApps, deploy smart contract chains run by Wasp nodes and deploy smart contracts on those chains. After the finalization of the current integration of the Mana module into the Coordicide testnet in its current Pollen stage, IOTA Smart Contracts will be able to be deployed using Wasp nodes. The current integration of the Mana module into Pollen represents a major building block of the leaderless consensus algorithm of the future IOTA protocol. Therefore, the ISCP team decided to focus on the ability to deploy smart contracts on Wasp nodes until after the Mana module integration has been finalized in the coming weeks.

The main components constituting the Alpha release are:

  • Our first specification of the protocol in the form of the IOTA Smart Contract Protocol Architecture description document, reflecting the current status and all elements of the ISCP of the pre-alpha release and after.
  • The Wasp node version 0.1.1., implementing the current status of the ISCP, including a secure DKG (distributed key generation) based on the Rabin-Genarro algorithm.
  • An early version of an ISCP toolset, allowing developers to write and compile smart contracts, deploy and run them in the testing environment as well as including introductory tutorials.
  • Almost 400 unit and integration tests

Note that the current implementation of the ISCP is based on GoShimmer nodes (the Pollen version, our current Coordicide testnet) of the Tangle. The implementation should be considered as experimental: Due to ongoing work and integration of the remaining aspects, Wasp nodes and other ISCP software will see significant improvements and changes until its production release with Coordicide (IOTA 2.0).

The development toolset released with ISCP Alpha contains:

  • A Rust environment to write smart contracts and compile it into the WebAssembly (wasm) binaries for later deployment on the chain.
  • The Cluster tool, allowing isolated testnets to be run with one GoShimmer (with mocked token ledger) and many Wasp nodes to deploy chains, deploy smart contracts, run front-ends of dApps, etc, as well as running integration tests.
  • The Solo tool, a powerful tool for writing unit tests for smart contracts and dApps.
  • The Wasp-cli, a command-line interface (CLI) front-end (a wallet) for interacting with Wasp nodes, deploying chains and smart contracts, working with tokens on addresses and on-chain accounts.
  • The Wasp Explorer, a simple dashboard allowing anyone to explore a node configuration, deployed chains, smart contracts and on-chain accounts.
  • APIs and an API library for front-end applications
Rust smart contract program - Compiled to Wasm

Future plans

With the Alpha release, the IOTA Smart Contract Protocol is finally taking shape. Our short-term goal, spanning the next few months, is to further align with the development of GoShimmer, the Coordicide protocol and the Chrysalis mainnet upgrade. We will also develop further showcases and a demonstration net including smart contracts and native assets. In fact, we already started doing that together with the community.

Going beyond the immediate next steps, the following ones are our main directions for our further efforts:

Development environment

The next level of Rust development environment and tools, including a platform-neutral data schema definition and a new functional language for smart contract programming: with verifiability properties

Virtual Machine

Exploring the Virtual Machine (VM)-agnostic nature of the ISCP and integrating the Ethereum Virtual Machine (EVM) into the ISCP sandbox, which we call “Virtual Ethereum”. The goal is a binary compatibility with the Ethereum ecosystem, including the ability to use tools and smart contract languages such as Solidity on the IOTA network.

Building bridges

A framework for inter-chain atomic swaps with native and external blockchains, such as Ethereum as well as familiar decentralized finance (DeFi) use cases such as AMM and DeX (like Uniswap), on-chain tokenization based on ERC-20, and so on.

Core algorithms

A revised and improved consensus algorithm based on classical BFT to replace the proprietary one implemented for testing purposes now, as well as Merkle proofs in the chain state, to ensure independence from snapshots on the base layer.

Permissionless market for chain validators

Layer 1 and Layer 2 support for staking and committee rotation as well as core contracts for market infrastructure. Note that this task is still being actively researched and will be expanded upon in future updates.

Resources

Watch the presentation with Evaldas Drąsutis, lead developer for ISCP:


We encourage everybody to review the documentation and try it out yourself. Share your comments and feedback on #smartcontracts-discussion on our Discord server! It's also an opportunity to chat directly with Evaldas Drąsutis.

This blog post has been updated. to replace a reference to "colored coins" with "native assets"