Runner up for the 2017 PROSE Award in Computing and Information Sciences, Association of American Publishers.
### About the book
_Bitcoin and Cryptocurrency Technologies_ provides a comprehensive introduction to the revolutionary yet often misunderstood new technologies of digital currency. Whether you are a student, software developer, tech entrepreneur, or researcher in computer science, this authoritative and self-contained book tells you everything you need to know about the new global money for the Internet age.
How do Bitcoin and its blockchain actually work? How secure are your bitcoins? How anonymous are users of cryptocurrencies? Can cryptocurrencies be regulated? These are some of the many questions this book answers. It begins by tracing the history and development of Bitcoin and cryptocurrencies, and then gives the conceptual and practical foundations you need to engineer secure software that interacts with the Bitcoin network as well as to integrate ideas from Bitcoin into your own projects. Topics include decentralization, mining, the politics of Bitcoin, altcoins and the cryptocurrency ecosystem, the future of Bitcoin, and more.
### Courses that use the book
The book has been used in over 120 courses worldwide, including courses at
Berkeley,
Cornell,
George Mason University,
New York University,
Stanford,
TU Delft,
University of California, Davis,
University of Illinois at Urbana Champaign,
University of Virginia,
and
Hong Kong University of Science & Technology.
Arvind Narayanan is an Associate Professor of Computer Science at Princeton.
Arvind Narayanan is an Associate Professor of Computer Science at Princeton. Narayanan leads the Princeton Web Transparency and Accountability project that aims to uncover how companies are collecting and using our personal information. He also leads a research group studying the security, anonymity, and stability of Bitcoin and cryptocurrencies. His doctoral research showed that data anonymization is broken in fundamental ways, for which he jointly received the 2008 Privacy Enhancing Technologies Award.
Joseph Bonneau is a Technology Fellow at the Electronic Frontier Foundation and Postdoctoral Researcher at Stanford.
Joseph Bonneau is a Technology Fellow at the Electronic Frontier Foundation and Postdoctoral Researcher at Stanford. In addition to researching Bitcoin and cryptocurrencies he has worked on passwords and web authentication, secure messaging tools, and HTTPS for secure web browsing. Earlier he was as a Postdoctoral Fellow at CITP, Princeton and he has previously worked at Google, Yahoo, and Cryptography Research Inc. He received a PhD from the University of Cambridge and an MS from Stanford.
#### [Edward W. Felten](https://www.cs.princeton.edu/~felten/) [@EdFelten](http://twitter.com/EdFelten)
Edward Felten is a Professor of Computer Science and Public Affairs at Princeton, and the founding Director of the Center for Information Technology Policy.
Edward Felten is a Professor of Computer Science and Public Affairs at Princeton, and the founding Director of the Center for Information Technology Policy. In 2011-12 he served as the first Chief Technologist at the U.S. Federal Trade Commission. His research interests include computer security and privacy, and technology law and policy. He has published more than 100 papers in the research literature, and two books. His research on topics such as Internet security, privacy, copyright and copy protection, and electronic voting has been covered extensively in the popular press.
Andrew Miller is an Assistant Professor of Computer Science at the University of Illinois at Urbana-Champaign.
Andrew Miller is an Assistant Professor of Computer Science at the University of Illinois at Urbana-Champaign, and previously received his Ph.D. from the University of Maryland. He has studied cryptocurrencies since 2011, and has authored scholarly papers on a wide range of original research, including new proof-of-work puzzle constructions, programming languages for block chain data structures, and peer-to-peer network measurement and simulation techniques. He is an Associate Director of the Initiative for Cryptocurrencies and Contracts (IC3) at Cornell and an advisor to the Zcash project.
Steven Goldfeder is a PhD student in the Department of Computer Science at Princeton University, advised by Arvind Narayanan.
Steven Goldfeder is a PhD student in the Department of Computer Science at Princeton University, advised by Arvind Narayanan. He is a member of the Security & Privacy Research Group, a CITP Graduate Student Fellow, and a National Science Foundation Graduate Research Fellow. His research interests include cryptography, security, and privacy, especially decentralized digital currencies. His current work involves increasing the security of Bitcoin wallets.
Jeremy Clark contributed the foreword. He is an Assistant Professor at the Concordia Institute for Information Systems Engineering in Montreal.
Jeremy Clark is is an Assistant Professor at the Concordia Institute for Information Systems Engineering in Montreal. He received his PhD from the University of Waterloo in 2011, where he applied cryptography to designing and deploying verifiable voting systems, including Scantegrity — the first use of an end-to-end verifiable system in a public sector election. He became interested in Bitcoin in 2010 and published one of the first academic papers in the area. Beyond research, he has worked with several municipalities on voting technology and testified to the Canadian Senate on Bitcoin.
### Translations
Chinese and Japanese versions of the book are available. A Korean version is in preparation.
### Free pre-publication draft
A pre-publication draft of the book is available for download here. The published version is better in a several ways: it is peer-reviewed, professionally edited and typeset.
### Coursera course
The Coursera course Bitcoin and Cryptocurrency Technologies is a useful complement to this textbook. It has a series of video lectures that closely follow the textbook content, plus programming assignments and quizzes.
### Programming assignments
There are three programming assignments which will take you through the steps of designing and building a basic cryptocurrency. The programming language we use for the assignments is Java. This is not because we're fans of Java, but because the infrastructure we used for creating grading scripts is Java-based.
The zip file contains three folders. In each folder, the assignment specification is provided as a PDF file. You're also provided starter code in the form of .java files.
We've used these assignment in courses that we've taught, but there may still be bugs in them. We appreciate your understanding and would be grateful for any bug reports. Email us at [bitcoinbook@lists.cs.princeton.edu](mailto:bitcoinbook@lists.cs.princeton.edu).
We also have grading scripts for each of these assignments. If you're an instructor and would like access to the grading scripts, please send us a brief email in which you introduce yourself and tell us about your course.
### Exercises
Coming soon.
### For instructors
Email us at [bitcoinbook@lists.cs.princeton.edu](mailto:bitcoinbook@lists.cs.princeton.edu) for additional instructional materials.
### Errata
If you find an error in our book, please email us at bitcoinbook@lists.cs.princeton.edu.
The errata page lists all known substantive errors (typo corrections are also welcome, but not listed there).
### Video lectures
### Feedback
Comments? Questions? Typos? Email us at [bitcoinbook@lists.cs.princeton.edu](mailto:bitcoinbook@lists.cs.princeton.edu).