Azure Blockchain Workbench

Background

Azure Blockchain Workbench is a packaged solution that allows users to spin up end-to-end blockchain applications integrated with a number of Azure services with minimal effort on their part. The users provide Workbench with an Ethereum smart contract and associated metadata, and Workbench spins up the requisite Azure infrastructure. Users can authenticate and sign transactions using their AAD identities, submit transactions into the blockchain and consume events and transactions from the blockchain through the event grid as well as through a SQL database with no additional development effort on their part.

Challenge

Ethereum Transaction Submitter is the component within Workbench responsible for submitting transactions into the blockchain. Blockchains are distributed systems where user-submitted transactions are eventually included (or mined) into the blockchain. The node through which the transaction is submitted is typically not the one that mines it and can, in fact, even die before gossiping about the transaction to the rest of the network. This requires periodic resubmissions of transactions if they’re not mined. Blockchains also exhibit forks where history can be rewound. In that case, transactions that were successfully mined previously need to be submitted again. Writing a high-throughput service component that can reliably submit transactions into the blockchain is thus a harder problem than it first appears.

Solution and Coyote’s key advantages

An initial version of the Ethereum Transaction Submitter was facing a number of reliability issues and missed corner cases, so the team decided to write the service component using Coyote. The use of Coyote helped the team in a number of ways.