  The Bitcoin network has offered a new way of securely performing financial
transactions over the insecure network. Nevertheless, this ability comes with
the cost of storing a large (distributed) ledger, which has become unsuitable
for personal devices of any kind. Although the simplified payment verification
(SPV) clients can address this storage issue, a Bitcoin SPV client has to rely
on other Bitcoin nodes to obtain its transaction history and the current
approaches offer no privacy guarantees to the SPV clients.
  This work presents $T^3$, a trusted hardware-secured Bitcoin full client that
supports efficient oblivious search/update for Bitcoin SPV clients without
sacrificing the privacy of the clients. In this design, we leverage the trusted
execution and attestation capabilities of a trusted execution environment (TEE)
and the ability to hide access patterns of oblivious random access memory
(ORAM) to protect SPV clients' requests from a potentially malicious server.
The key novelty of $T^3$ lies in the optimizations introduced to conventional
ORAM, tailored for expected SPV client usages. In particular, by making a
natural assumption about the access patterns of SPV clients, we are able to
propose a two-tree ORAM construction that overcomes the concurrency limitation
associated with traditional ORAMs. We have implemented and tested our system
using the current Bitcoin Unspent Transaction Output database. Our experiment
shows that the system is feasible to be deployed in practice while providing
strong privacy and security guarantees to Bitcoin SPV clients.
