  Sidechains are an appealing innovation devised to enable blockchain
scalability and extensibility. The basic idea is simple yet powerful: construct
a parallel chain -- sidechain -- with desired features, and provide a way to
transfer coins between the mainchain and the sidechain.
  In this paper, we introduce Zendoo, a construction for Bitcoin-like
blockchain systems that allows the creation and communication with sidechains
of different types without knowing their internal structure. We consider a
parent-child relationship between the mainchain and sidechains, where sidechain
nodes directly observe the mainchain while mainchain nodes only observe
cryptographically authenticated certificates from sidechain maintainers. We use
zk-SNARKs to construct a universal verifiable transfer mechanism that is used
by sidechains.
  Moreover, we propose a specific sidechain construction, named Latus, that can
be built on top of this infrastructure, and realizes a decentralized verifiable
blockchain system for payments. We leverage the use of recursive composition of
zk-SNARKs to generate succinct proofs of sidechain state progression that are
used to generate certificates' validity proofs. This allows the mainchain to
efficiently verify all operations performed in the sidechain without knowing
any details about those operations.
