  Public blockchains are decentralized networks where each participating node
executes the same decision-making process. This form of decentralization does
not scale well because the same data are stored on each network node, and
because all nodes must validate each transaction prior to their confirmation.
One solution approach decomposes the nodes of a blockchain network into subsets
called "shards", each shard processing and storing disjoint sets of
transactions in parallel. To fully benefit from the parallelism of sharded
blockchains, the processing load of shards must be evenly distributed. However,
the problem of computing balanced workloads is theoretically hard and further
complicated in practice as transaction processing times are unknown prior to be
assigned to shards. In this paper we introduce a dynamic workload-balancing
algorithm where the allocation strategy of transactions to shards is
periodically adapted based on the recent workload history of shards. Our
algorithm is an adaptation to sharded blockchains of a consensus-based
load-balancing algorithm. It is a fully distributed algorithm inline with
network based applications such as blockchains. Some preliminary results are
reported based on simulations that shard transactions of three well-known
blockchain platforms.
