  Blockchains offer a useful abstraction: a trustworthy, decentralized log of
totally ordered transactions. Traditional blockchains have problems with
scalability and efficiency, preventing their use for many applications. These
limitations arise from the requirement that all participants agree on the total
ordering of transactions. To address this fundamental shortcoming, we introduce
Charlotte, a system for maintaining decentralized, authenticated data
structures, including transaction logs. Each data structurestructure -- indeed,
each block -- specifies its own availability and integrity properties, allowing
Charlotte applications to retain the full benefits of permissioned or
permissionless blockchains. In Charlotte, a block can be atomically appended to
multiple logs, allowing applications to be interoperable when they want to,
without inefficiently forcing all applications to share one big log. We call
this open graph of interconnected blocks a blockweb. We allow new kinds of
blockweb applications that operate beyond traditional chains. We demonstrate
the viability of Charlotte applications with proof-of-concept servers running
interoperable blockchains. Using performance data from our prototype, we
estimate that when compared with traditional blockchains, Charlotte offers
multiple orders of magnitude improvement in speed and energy efficiency.
