I. Introduction
A blockchain is a distributed data structure for recording transactions maintained by many nodes without a central authority [12]. In a blockchain, nodes agree on their shared states across a large network of untrusted participants. Blockchain was originally devised for Bitcoin cryptocurrency [28], however, recent systems focus on its unique features such as transparency, provenance, fault-tolerant, and authenticity to support a wide range of distributed applications. Bitcoin and other cryptocurrencies are permissionless blockchains. In a permissionless blockchain, the network is public, and anyone can participate without a specific identity. Many other distributed applications such as supply chain management [23] and healthcare [6], on the other hand, are deployed on permissioned blockchains consisting of a set of known, identified nodes that still do not fully trust each other.