Hello World, Meet Seth (Sawtooth Ethereum)

Guest post: Adam Ludvik, Bitwise IO, Casey Kuhlman, Monax

One of the dreams of bringing multiple distributed ledger projects together under a single roof at Hyperledger is that we would find ways to collaborate, learn, and grow to the benefit of all projects involved. To this end, an initial proof-of-concept integration between the Hyperledger Sawtooth and Hyperledger Burrow projects was recently completed. As a result of this integration, “simple” EVM smart contracts can now be deployed to Hyperledger Sawtooth using the “Seth” (Sawtooth Ethereum) Transaction Family.

The Seth family consists of a new client, `seth`, that is used to construct and submit transactions to the network and a new transaction processor, `seth-tp`, that runs the Burrow Ethereum Virtual machine. Thanks to the modular design of Hyperledger Sawtooth, getting the Hyperledger Burrow EVM running under Hyperledger Sawtooth was relatively easy. Transaction processors run in a separate process and communicate with the validation process over a network interface. The Hyperledger Burrow EVM code was wrapped in an adapter but was otherwise left unmodified.

While working together on common ground, a cross-pollination of ideas took place to the benefit of both projects. Hyperledger Sawtooth gained an EVM implementation and added plans for the following new core features:

  • Core and family-defined Events
  • Transaction execution receipts
  • Batch injection
  • On-chain block validation rules

These core features will enrich the toolset available to application developers and enable Hyperledger Sawtooth to move the Hyperledger Burrow EVM integration past the initial proof-of-concept phase. The next step in this integration is enabling developers with existing web applications and smart contracts to seamlessly transition their work to the Hyperledger Sawtooth platform. A major part of making this transition possible will be the creation of a `seth-rpc` server that supports the Public Ethereum and Burrow JSON-RPC interfaces. The architecture of the integration after this step is shown below.

Hyperledger Burrow benefited from the integration in two major areas. First by working with the Sawtooth team and leveraging its capacity to offer parallel processing of transactions the effort represents the very first iteration towards non-serialized processing of EVM based transactions. Within the EVM community it has long been understood that one of the most important aspects of scaling is the need to move beyond strictly serial processing of transactions. The Hyperledger Sawtooth-Burrow integration is the first tangible code which addresses this giant need within the community of EVM users.

Secondly, Hyperledger Burrow has long been positioned to provide a core EVM that would then be utilized by other Hyperledger projects. This integration validates that positioning and establishes a strong upstream-downstream relationship between the Sawtooth and Burrow projects. Successful open source endeavours are community driven, collaborative efforts and this linkage between the Hyperledger Sawtooth and Hyperledger Burrow teams reinforces that ethos.  

If you’d like to learn more about Seth, visit: https://github.com/hyperledger/sawtooth-core/blob/master/docker/compose/sawtooth-seth.yaml or join the discussion on Rocket.Chat. As always, we encourage developers to join our efforts on these projects. You can plug into the Hyperledger community at github, Rocket.Chat the wiki or our mailing list. You can also follow Hyperledger on Twitter or email us with any questions: info@hyperledger.org.