An event state machine with a blockchain

We use an Ethereum blockchain as the event state machine for the money transfer system. A blockchain in this role is used for storing the following:

  • The mapping between telephone numbers and bank accounts
  • The overall state of each transfer transaction

Inside the blockchain, there are two kinds of smart contracts. The first one implements the repository pattern, and the second one implements the entity model.

We use Truffle ( to create this event state machine. Look at the subproject named eventmachine in the GitHub repository (

Here's a smart contract under the entities/ directory, TransferState.sol. This smart contract maintains ...

Get Docker for Serverless Applications now with O’Reilly online learning.

O’Reilly members experience live online training, plus books, videos, and digital content from 200+ publishers.