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 (http://truffleframework.com/) to create this event state machine. Look at the subproject named eventmachine in the GitHub repository (https://github.com/chanwit/eventmachine).
Here's a smart contract under the entities/
directory, TransferState.sol
. This smart contract maintains the states of each transfer transaction. Each transaction is initialized with NONE, then STARTED, PENDING, and finally COMPLETED. The following diagram illustrates the smart contractTransferState
working together with its repository implementation:
Figure 8.10...