  We propose Shard Scheduler, a system for object placement and migration in
account-based sharded blockchains. Our system calculates optimal placement and
decides of object migrations across shards and supports complex multi-account
transactions caused by smart contracts. Placement and migration decisions made
by Shard Scheduler are fully deterministic, verifiable, and can be made part of
the consensus protocol. Shard Scheduler reduces the number of costly
cross-shard transactions, ensures balanced load distribution and maximizes the
number of processed transactions for the blockchain as a whole. It leverages a
novel incentive model motivating miners to maximize the global throughput of
the entire blockchain rather than the throughput of a specific shard. Shard
Scheduler reduces the number of costly cross-shard transactions by half in our
simulations, ensuring equal load and increasing the throughput 3 fold when
using 60 shards. We also implement and evaluate Shard Scheduler on Chainspace,
more than doubling its throughput and reducing user-perceived latency by 70%
when using 10 shards.
