Meet Hyperledger Composer

Today, we’re proud to announce that Hyperledger Composer has been accepted into incubation by the Technical Steering Committee. Composer is a collaboration tool for building “blockchain business networks,” accelerating the development of smart contracts and their deployment across a distributed ledger.

All work done on Composer to date has been done on top of Hyperledger Fabric. However, Composer has been designed so that it can be ported to run on other distributed ledger technologies, such as Hyperledger Iroha or Hyperledger Sawtooth.

Why?

All “blockchain business networks” share certain elements  – namely assets, participants, identities, transactions, and registries. With existing blockchain or distributed ledger technologies, it can be difficult for organizations to take a blockchain business use case and map these concepts into running code. In the same way that the software world was accelerated by the arrival of software modelling tools, the primary goal of the Composer project is to accelerate the development of business networks built on blockchain technology.

Technical details of Composer

The main components are:

  • The modelling language; simple but expressive business-centric (the language features keywords such as asset and participant) language that allows non-developers and developers to model their business network. The modelling language also supports modelling of relationships and data validation rules.
  • The ability to encode business logic as transaction processor functions that are written in standard JavaScript. We chose JavaScript because it is a modern, rapidly evolving programming language that is used by millions of developers around the world, as well as giving us the ability to run the code anywhere that supports standard JavaScript.
  • Declarative access control using access control lists, that allows developers to describe what resources can be accessed by which participants. Access control is automatically enforced by the runtime.
  • Client and administrative APIs, as well as a “composer” CLI application that allows developers and operators to deploy and interact with business networks from Node.js applications or automation scripts.
  • A web based “playground” that allows new and experienced users to learn the language, model their business network, and test that network from the comfort of their web browser. The playground can work in both “disconnected” mode, using a simulated network, and when connected to real running network.
  • REST API support and integration capabilities; a LoopBack connector for business networks has been developed that exposes a running network as a REST API which can easily be consumed by client applications.
  • Syntax highlighting support for two popular open-source editors, Atom and VS Code, with future plans about how we could include testing/debugging capabilities.
  • Application generation using the Yeoman framework; client application developers can quickly generate a skeleton Angular 2 or CLI application to use as a starting point, allowing them to focus on UI/UX rather than business network interactions.

Who will work on Composer?

The initial maintainer community is comprised of Simon Stone, Daniel Selman and Kathryn Harrison of IBM, and Cong Tang and others from Oxchains. Of course everyone is encouraged to get involved, we want to see the contributor and maintainer community grow. There is a bi-weekly Hyperledger Composer community call. Please join the mailing list https://lists.hyperledger.org/mailman/listinfo/hyperledger-composer to receive notifications about Composer.

Getting started

Documentation for Composer, including a tutorial for first time users, is available from the public website: https://hyperledger.github.io/composer/

Composer is currently hosted under the Hyperledger organization on GitHub: https://github.com/hyperledger?q=composer. All of our work, both planned and in-progress, is managed using GitHub issues: https://github.com/hyperledger/composer/issues

The current list of repositories is:

  • composer – the majority of the code (including APIs, runtime, and UI)
  • composer-sample-networks – a collection of sample business network definitions
  • composer-sample-applications – a collection of sample applications
  • composer-sample-models – a collection of sample model files
  • composer-atom-plugin the plugin for the Atom editor
  • composer-vscode-plugin – the plugin for the VS Code editor
  • composer-tools – additional tools that are not part of the Composer “core”

The project was initially called “Fabric Composer”, and was renamed to simply “Composer” so as to encourage the other DLT framework efforts at Hyperledger to take a look and consider helping us implement support for them. However you will likely still see the terms “Fabric Composer” used in the documentation and source code until we get around to cleaning that up.

The majority of the Composer source code is JavaScript, and can be built and tested using the standard npm toolchain (“npm install” and “npm test”). We have aimed to use standard JavaScript tools as part of our development process: npm, Mocha (test driver), Chai (test assertions), Sinon (mocks), Istanbul (code coverage), etc.

What’s next?

By working with the community, we would like to continue to develop Composer to be a powerful and complete development framework that allows users to easily and rapidly build blockchain business networks.

Future work that the community is currently considering includes:

  • First class support for events; being able to model the structure of events, being able to publish events from a blockchain and allowing client applications to subscribe to and receive those events.
  • Links between multiple running business networks; for example, allowing one network to reference assets that are stored in another network.
  • Complex and historical query support, to allow powerful queries over assets, participants, and transactions and the relationships between those resources that have been recorded.
  • Investigate adding support for Iroha and Sawtooth Lake. Composer already includes a pluggable adapter layer that makes this possible. The majority of the Composer codebase is runtime agnostic. The runtime specific code is restricted to the connector implementations (client to blockchain) and the runtime container implementations (blockchain to common runtime).
  • Automatic, formal verification of Composer business logic. The smart contracts generated by Composer would be analyzed against the user-specified requirements written in the modelling language. The verification tool would output a statement that the smart contract is correct, or it would output a counterexample, explaining some way in which the smart contract does not meet its specification.

For those interested in additional information about Composer or any of the other frameworks or modules under Hyperledger, please reach out to: [email protected]. As always, we encourage developers to join our efforts via GitHub, Rocket.Chat the wiki or the mailing lists. You can also follow Hyperledger on Twitter.