In the “Getting started with Azure Consortium Blockchain” article, we discussed how to configure private blockchain network on Azure. In this article, we are going to look into the architecture of Azure Consortium Blockchain network.
The network created using Azure Consortium Blockchain template consists of shared transaction nodes and mining nodes. User application will interact with transaction nodes for any operation like submit transaction etc. For each consortium member (the number of members is specified while configuring), and a specified number of mining nodes are created. Mining nodes record all the transactions being executed within the network.
Mining Nodes
Mining nodes assigned to a member are kept in a separate subnet. Nodes in individual subnets communicate with each other by application gateways. As members need to record transactions, mining subnet is also facilitated with storage. As it is a private network, inbound traffic (only public internet traffic) is not allowed on mining nodes. Nodes communicate with each other using Ethereum’s Discovery Protocol.
The default VM in a subnet is configured as a boot node for discoverability of the subnet nodes. "Go Ethereum" client software (Geth) is installed on each mining node. Software is configured to enable these nodes to be mining nodes. These nodes use the Ethereum address of the default account, termed as “coinbase”. When mining nodes mine the block, mining reward is added to this account. Mining nodes communicate with other mining nodes to come to the consensus on the state of the underlying distributed ledger.
If the network size (number of users in the network) is more, then the number of mining nodes also should be more to avoid approximately 51% issues. Currently, a template supports maximum 15 mining nodes per consortium member. All nodes have the latest stable "Go Ethereum" (Geth) client software and are configured to maintain a complete copy of the distributed ledger.
Transaction Nodes
Consortium members (mining nodes) share a set of transaction nodes from transaction subnet. All transaction nodes are load-balanced to obtain high availability. Currently, a template supports maximum 5 transaction nodes per network.
Unlike mining nodes, public internet traffic is allowed on transaction nodes so that the applications can use these nodes to submit transactions or execute smart contracts within the blockchain networks. These nodes use the “coinbase” account.
To avoid race condition, the nodes that accept transactions and the nodes that mine transactions are explicitly separated.
This was about the architecture of Azure Ethereum Consortium network. In our next article, we will look into creating applications on top of this network. Until then, keep mining for blockchain.