Paper 2016/168

Town Crier: An Authenticated Data Feed for Smart Contracts

Fan Zhang, Ethan Cecchetti, Kyle Croman, Ari Juels, and Elaine Shi


Smart contracts are programs that execute autonomously on blockchains. Their key envisioned uses (e.g. financial instruments) require them to consume data from outside the blockchain (e.g. stock quotes). Trustworthy data feeds that support a broad range of data requests will thus be critical to smart contract ecosystems. We present an authenticated data feed system called Town Crier (TC). TC acts as a bridge between smart contracts and existing web sites, which are already commonly trusted for non-blockchain applications. It combines a blockchain front end with a trusted hardware back end to scrape HTTPS- enabled websites and serve source-authenticated data to re- lying smart contracts. TC also supports confidentiality; it enables private data requests with encrypted parameters and secure use of user credentials to scrape access-controlled on- line data sources. We describe TC’s design principles and architecture and report on an implementation that uses Intel’s recently introduced Software Guard Extensions (SGX) to furnish data to the Ethereum smart contract system. We formally model TC and define and prove its basic security properties in the Universal Composability (UC) framework. Our results include definitions and techniques of general interest relating to resource consumption (Ethereum’s “gas” fee system) and TCB minimization. We also report on experiments with three example applications. We plan to launch TC soon as an online public service.

Note: Fixed a typo in Definition 2.

Available format(s)
Publication info
Preprint. MINOR revision.
applicationsSGXsmart contracts
Contact author(s)
juels @ cornell edu
2017-08-28: last of 6 revisions
2016-02-19: received
See all versions
Short URL
Creative Commons Attribution


      author = {Fan Zhang and Ethan Cecchetti and Kyle Croman and Ari Juels and Elaine Shi},
      title = {Town Crier: An Authenticated Data Feed for Smart Contracts},
      howpublished = {Cryptology ePrint Archive, Paper 2016/168},
      year = {2016},
      note = {\url{}},
      url = {}
Note: In order to protect the privacy of readers, does not use cookies or embedded third party content.