  Verifiable ledger databases protect data history against malicious tampering.
Existing systems, such as blockchains and certificate transparency, are based
on transparency logs -- a simple abstraction allowing users to verify that a
log maintained by an untrusted server is append-only. They expose a simple
key-value interface. Building a practical database from transparency logs, on
the other hand, remains a challenge.
  In this paper, we explore the design space of verifiable ledger databases
along three dimensions: abstraction, threat model, and performance. We survey
existing systems and identify their two limitations, namely, the lack of
transaction support and the inferior efficiency. We then present GlassDB, a
distributed database that addresses these limitations under a practical threat
model. GlassDB inherits the verifiability of transparency logs, but supports
transactions and offers high performance. It extends a ledger-like key-value
store with a data structure for efficient proofs, and adds a concurrency
control mechanism for transactions. GlassDB batches independent operations from
concurrent transactions when updating the core data structures. In addition, we
design a new benchmark for evaluating verifiable ledger databases, by extending
YCSB and TPC-C benchmarks. Using this benchmark, we compare GlassDB against
four baselines: reimplemented versions of three verifiable databases, and a
verifiable map backed by a transparency log. Experimental results demonstrate
that GlassDB is an efficient, transactional, and verifiable ledger database.
