Blockchain educational resources curated by the OpenZeppelin team
# awesome-openzeppelin

[![Awesome](https://awesome.re/badge.svg)](https://awesome.re)
[![standard-readme compliant](https://img.shields.io/badge/readme%20style-standard-brightgreen.svg)](https://github.com/RichardLitt/standard-readme)

> Blockchain educational resources curated by the OpenZeppelin team.

[OpenZeppelin](https://openzeppelin.com) builds key infrastructure to develop and operate smart contract systems. We work on:
* [OpenZeppelin Contracts](https://openzeppelin.com/contracts): a package for secure smart contract development. 
* [OpenZeppelin SDK](https://openzeppelin.com/sdk): a platform to develop, deploy and operate smart contract projects on Ethereum and every other EVM and eWASM-powered blockchain.
* [Audits](https://openzeppelin.com/security-audits/): verification of key projects for the decentralized ecosystem.

This repository contains links to resources that have been important parts of our learnings and that influence how we work on our projects. If you want to join the OpenZeppelin team, [we are hiring!](https://openzeppelin.com/jobs/).

## Table of Contents

* [Bitcoin](#bitcoin)
* [Community Management](#community-management)
* [Cryptoeconomics](#cryptoeconomics)
* [Cryptography](#cryptography)
* [Cypherpunk](#cypherpunk)
* [Design](#design)
* [Diversity](#diversity)
* [Ethereum](#ethereum)
* [Legal](#legal)
* [Linux](#linux)
* [Organizations](#organizations)
* [Programming Languages](#programming-languages)
  * [Go](#go)
  * [Javascript](#javascript)
  * [Python](#python)
  * [Solidity](#solidity)
  * [Typescript](#typescript)
* [Remote](#remote)
* [Security](#security)
* [Software Development](#software-development)

## [Bitcoin](https://en.wikipedia.org/wiki/Bitcoin)

### Books

* [Mastering Bitcoin](https://github.com/bitcoinbook/bitcoinbook), by Andreas Antonopoulos.

### Courses

* [Introduction to Digital Currencies](https://digitalcurrency.unic.ac.cy/free-introductory-mooc/), by Andreas Antonopoulos and Antonis Polemitis.

## [Community Management](https://en.wikipedia.org/wiki/Community_Management)

Talk about this topic with [elopio](https://github.com/elopio).

### Books

* [The Art of Community](http://www.artofcommunityonline.org/), by Jono Bacon.

## [Cryptoeconomics](https://en.wikipedia.org/wiki/Cryptoeconomics)

Talk about this topic with [Alejo Salles](https://github.com/fiiiu).

### Books

* [Cryptoassets](https://www.goodreads.com/en/book/show/36197082-cryptoassets), by Chris Burniske and Jack Tatar: Good, basic book with a broad view of the crypto world addressed to investors new to the space.

* [Governing the Commons: The Evolution of Institutions for Collective Action](https://www.goodreads.com/book/show/1048424.Governing_the_Commons), by Elinor Ostrom.

### Courses

* Game Theory, by Matthew O. Jackson, Kevin Leyton-Brown and Yoav Shoham:

  * [Part I](https://www.coursera.org/learn/game-theory-1).

  * [Part II](https://www.coursera.org/learn/game-theory-2).

* [Cryptoeconomics.study](https://cryptoeconomics.study/), by Karl Floersch & community efforts

### Posts

* [Cryptoasset Valuations](https://medium.com/@cburniske/cryptoasset-valuations-ac83479ffca7), by Chris Burniske.

* [Governance in 0x Protocol](https://blog.0xproject.com/governance-in-0x-protocol-86779ae5809e), by Will Warren.

* [Leverage Points: Places to Intervene in a System](http://donellameadows.org/archives/leverage-points-places-to-intervene-in-a-system/), by Donella Meadows.

* [On Medium-of-Exchange Token Valuations](https://vitalik.ca/general/2017/10/17/moe.html), by Vitalik Buterin.

* [On Value, Velocity and Monetary Theory](https://medium.com/blockchannel/on-value-velocity-and-monetary-theory-a-new-approach-to-cryptoasset-valuations-32c9b22e3b6f), by Alex Evans.

* [Thoughts on Liberal Radicalism](https://medium.com/@lkngtn/thoughts-on-liberal-radicalism-2c76eaa397ec), by Luke Duncan.

* [Token-Curated Registries 1.0](https://medium.com/@ilovebagels/token-curated-registries-1-0-61a232f8dac7), by Mike Goldin.

* Token Engineering Series, by Trent McConaghy:

  * [Can Blockchains Go Rogue?](https://blog.oceanprotocol.com/can-blockchains-go-rogue-5134300ce790)

  * [Towards a Practice of Token Engineering](https://blog.oceanprotocol.com/towards-a-practice-of-token-engineering-b02feeeff7ca)

  * [Token Engineering Case Studies](https://blog.oceanprotocol.com/token-engineering-case-studies-b44267e68f4)

### Talks

* [Introduction to Cryptoeconomics](https://www.youtube.com/watch?v=pKqdjaH1dRo), by Vitalik Buterin.

* [The Pretence of Knowledge](https://www.nobelprize.org/prizes/economic-sciences/1974/hayek/lecture/), by Friedrich von Hayek.

### Whitepapers

* [Livepeer Whitepaper](https://github.com/livepeer/wiki/blob/master/WHITEPAPER.md), by Doug Petkanics and Eric Tang: Details the cryptoeconomics of the Livepeer protocol, users pay, either for broadcasting or consuming. Transcoders are chosen through DPoS.

* [Panvala](https://www.panvala.com/panvala-whitepaper.pdf): Introduces a system of token-mediated auditing. “Token Capacitor” is a cryptoeconomic primitive that progressively releases tokens, which can be directed to different destinations by the token holders; and “Michelin stars” are used for code safety.

## [Cryptography](https://en.wikipedia.org/wiki/Cryptography)

### Posts
* [How Not to Use ECDSA](https://yondon.blog/2019/01/01/how-not-to-use-ecdsa/), by Yondon Fu.
* [Bitcoin Transaction Malleability](https://eklitzke.org/bitcoin-transaction-malleability), by Evan Klitzke.

### Courses

* [Cryptography I](https://www.coursera.org/learn/crypto), by Dan Boneh.

### Challenges

* [Cryptopals](https://cryptopals.com/): learn crypto by doing challenges, where you build and break popular ciphers.

## [Cypherpunk](https://en.wikipedia.org/wiki/Cypherpunk)

### Books

* [Free Culture](http://www.free-culture.cc/), by Lawrence Lessig.

* [Free Software, Free Society](https://www.gnu.org/philosophy/fsfs/rms-essays.pdf), by Richard Stallman.

* [Proposed Roads to Freedom](http://www.gutenberg.org/ebooks/690), by Bertrand Russell.

### Talks

* [The Art of Asking](https://www.youtube.com/watch?v=xMj_P_6H69g), by Amanda Palmer.

* [Decentralize, Democratize, or Die](https://youtu.be/JE4yoU6ssi8), by Corey Doctorow.

## Design

### Books

* [The Design of Everyday Things](https://en.wikipedia.org/wiki/The_Design_of_Everyday_Things), by Donald Norman.

* [Less is Enough: On Architecture and Asceticism](https://www.goodreads.com/book/show/21167757-less-is-enough), by Pier Vittorio Aureli.

### Courses

* [Interaction Design Specialization](https://www.coursera.org/specializations/interaction-design), by Scott Klemmer, Elizabeth Gerber and Jacob O. Wobbrock.

### Posts

* [Designing Welcome Mats to Invite User Privacy](https://www.eff.org/deeplinks/2019/02/designing-welcome-mats-invite-user-privacy-0), by Alexis Hancock.

## Diversity

### Courses

* [Inclusive Speaker Orientation](https://training.linuxfoundation.org/training/inclusive-speaker-orientation/), by The Linux Foundation and the National Center for Women & Information Technology.

### Posts

* [How Duolingo achieved a 50:50 gender ratio for new software engineer hires](http://making.duolingo.com/how-duolingo-achieved-a-5050-gender-ratio-for-new-software-engineer-hires), by Jeesoo Sohn.

* [How I work with someone who is learning](https://blog.mapbox.com/how-i-work-with-someone-who-is-learning-d6c53e460625), by Emily McAfee.

* [How to answer questions in a helpful way](https://jvns.ca/blog/answer-questions-well/), by Julia Evans.

* [How to ask good questions](https://jvns.ca/blog/good-questions/), by Julia Evans.

* [Not Applicable: What Your Job Post is Really Saying](https://where.coraline.codes/blog/not_applicable/), by Coraline Ada Ehmke.

## [Ethereum](https://en.wikipedia.org/wiki/Ethereum)

(see also [Solidity](#solidity)).

### Books

* [Mastering Ethereum](https://github.com/ethereumbook/ethereumbook), by Andreas Antonopoulos (in progress).

### Posts

* [A Prehistory of the Ethereum Protocol](https://vitalik.ca/general/2017/09/14/prehistory.html), by Vitalik Buterin.

* [Decentralised Oracles: a comprehensive overview](https://medium.com/fabric-ventures/decentralised-oracles-a-comprehensive-overview-d3168b9a8841), by Julien Thevenard.

* [Ethereum in Depth series](https://blog.openzeppelin.com/ethereum-in-depth-part-1-968981e6f833), by OpenZeppelin.

* [Making Sense of Ethereum’s Layer 2 Scaling Solutions: State Channels, Plasma, and Truebit](https://medium.com/l4-media/making-sense-of-ethereums-layer-2-scaling-solutions-state-channels-plasma-and-truebit-22cb40dcc2f4), by Josh Stark.

* [Stablecoins: designing a price-stable cryptocurrency](https://hackernoon.com/stablecoins-designing-a-price-stable-cryptocurrency-6bf24e2689e5), by Haseeb Qureshi.

* [Why another stablecoin?](https://medium.com/reserve-currency/why-another-stablecoin-866f774afede), Nevin Freeman.

### Videos

* [Smart Accounts](https://www.youtube.com/watch?v=-Gc_cQgPCL8), by Philippe Castonguay and Panashe Mahachi.

## Legal

### Courses

* Intellectual Property Law and Policy, by R. Polk Wagner:

  * [Part 1](https://www.edx.org/course/intellectual-property-law-policy-part-1-pennx-iplaw1x-0).

  * [Part 2](https://www.edx.org/course/intellectual-property-law-policy-part-2-pennx-iplaw2x-0).

## Linux

### Courses

* [Introduction to Linux](https://www.edx.org/course/introduction-to-linux), by The Linux Foundation.

## Organizations

Talk about this topic with [Demi](https://twitter.com/demibrener).

### Books

* [The Manager's Path](https://www.goodreads.com/book/show/34616805-the-manager-s-path), by Camille Fournier.
* [The Sovereign Individual](https://www.goodreads.com/book/show/82256.The_Sovereign_Individual), by  James Dale Davidson and William Rees-Mogg.

### Talks

* [The Network State](https://www.youtube.com/watch?v=KiLUPvUsdXg), by Balaji Srinivasan.

* [Voice vs. Exit](https://www.youtube.com/watch?v=cOubCHLXT6A), by Balaji Srinivasan.

## Programming Languages

### Go

#### Books

* [The Go Programming Language](https://www.oreilly.com/library/view/the-go-programming/9780134190570/), by Brian W. Kernighan and Alan A. A. Donovan.

### Javascript

#### Books

* [JavaScript: The Good Parts](http://shop.oreilly.com/product/9780596517748.do), by Douglas Crockford.

### Python

#### Books

* [Dive into Python 3](https://www.apress.com/gp/book/9781430224150), by Mark Pilgrim.

* [Effective Python: 59 Specific Ways to Write Better Python](https://www.oreilly.com/library/view/effective-python-59/9780134034416/), by Brett Slatkin.

### Solidity

#### Websites

* [CryptoZombies](https://cryptozombies.io/), by Loom Network.

* [Solidity Koans](https://soliditykoans.org/), by Nicole Zhu.

#### Challenges / CTF

* **[Ethernaut](https://ethernaut.openzeppelin.com/), by OpenZeppelin**.

* [Blockchain CTF](https://blockchain-ctf.securityinnovation.com), by Security Innovation.

* [GOAT Casino](https://github.com/nccgroup/GOATCasino), by NCC Group.

#### Posts

* **[Deconstructing a Solidity contract series](https://blog.openzeppelin.com/deconstructing-a-solidity-contract-part-i-introduction-832efd2d7737), by Alejandro Santander from the OpenZeppelin team**.

#### Smart contract security

* **[OpenZeppelin audits reports](https://blog.openzeppelin.com/security-audits), by OpenZeppelin**.

* [Smart Contract Security bibliography](https://consensys.github.io/smart-contract-best-practices/bibliography/), by Consensys.

* [Smart Contract Weakness Classification Registry](https://smartcontractsecurity.github.io/SWC-registry/), maintained by the [Mythril](https://mythril.ai/) team.

* [List of known attack vectors and common anti-patterns in smart contracts](https://github.com/sigp/solidity-security-blog), by AgeManning.

* [List of Risks and Vulnerabilities in ERC20 Token contracts](https://github.com/sec-bit/awesome-buggy-erc20-tokens/blob/master/ERC20_token_issue_list.md), by Secbit

* [DEF CON 25 - Hacking Smart Contracts talk](https://www.youtube.com/watch?v=WIEessi3ntk), by Konstantinos Karagiannis.

### Typescript

#### Courses

* [Understanding TypeScript](https://www.udemy.com/understanding-typescript/), by Maximilian Schwarzmüller.

## Remote

### Posts

* [The presence prison](https://m.signalvnoise.com/the-presence-prison-4c776292c8d2), by Jason Fried.

* [Don't work "remotely"](http://blairreeves.me/2018/11/09/dont-work-remotely/), by Blair Reeves.

## Security

### Posts

* [Trusted Third Parties Are Security Holes](https://nakamotoinstitute.org/trusted-third-parties/), by Nick Szabo.

* [Why Openness Is The Greatest Path To Security](https://www.forbes.com/sites/martenmickos/2018/09/26/why-openness-is-the-greatest-path-to-security/#aadef305f7f5), by  Marten Mickos.

### Talks

* [Reflections on Trusting Trust](https://www.archive.ece.cmu.edu/~ganger/712.fall02/papers/p761-thompson.pdf), by Ken Thompson.

## OPSEC

* [Operations Security](https://en.wikipedia.org/wiki/Operations_security), from Wikipedia.
* [A modest privacy protection proposal](https://medium.com/s/story/a-modest-privacy-protection-proposal-5b47631d7f4c), by Jameson Lopp.
* [Ignorance is strength](https://grugq.github.io/blog/2013/06/13/ignorance-is-strength/), by [@grugq](https://github.com/grugq).
* [Operational security and the real world](https://medium.com/@thegrugq/operational-security-and-the-real-world-3c07e7eeb2e8), by [@grugq](https://github.com/grugq).
* [New York's Finest OPSEC](https://grugq.github.io/blog/2014/02/13/new-yorks-finest-opsec/), by [@grugq](https://github.com/grugq).
* [A Fistful of Surveillance](https://grugq.github.io/blog/2014/02/10/a-fistful-of-surveillance/), by [@grugq](https://github.com/grugq).
* [Operations Security Intelligence Threat Handbook, Section 1 - Introduction](https://fas.org/irp/nsa/ioss/threat96/part01.htm), by [The Interagency OPSEC Support Staff](https://fas.org/irp/nsa/ioss/index.html).
* [Why you should get a burner phone number, even if you aren't a spy](https://www.popsci.com/burner-phone-number), by David Nield.
* [Burner Phone Best Practices](https://b3rn3d.herokuapp.com/blog/2014/01/22/burner-phone-best-practices/), by [B3RN3D](https://b3rn3d.herokuapp.com/).
* [Some remarkably good OPSEC advice, for a 1996 non-computer book](https://blog.cyberwar.nl/2015/02/some-remarkably-good-opsec-advice-from-a-1996-book/), by Matthijs R. Koot.
* [How The Intercept Outed Reality Winner](https://blog.erratasec.com/2017/06/how-intercept-outed-reality-winner.html), by Robert Graham.
* [Extremist Forums Provide Digital OpSec Training](https://ctc.usma.edu/extremist-forums-provide-digital-opsec-training/), by Aaron Brantly & Muhammad al-Ubaydi.
* [Some elements of Intelligence work](https://grugq.github.io/resources/some_elements_of_intelligence_work-dulles.txt), by [@grugq](https://github.com/grugq).
* [Twitter Activist Security](https://medium.com/@thegrugq/twitter-activist-security-7c806bae9cb0), by [@grugq](https://github.com/grugq).
* [How to Vanish](http://www.howtovanish.com/new-to-how-to-vanish-start-here/)
* [Agent Handling](https://en.wikipedia.org/wiki/Agent_handling), from Wikipedia.
* [Online Privacy Through OPSEC and Compartmentalization: Part 2](https://www.ivpn.net/privacy-guides/online-privacy-through-opsec-and-compartmentalization-part-2)
* [It Was DPR, in the Tor HS, with the BTC](https://grugq.github.io/blog/2013/10/09/it-was-dpr/), by [@grugq](https://github.com/grugq).
* [Hacker OPSEC with The Grugq](https://blogsofwar.com/hacker-opsec-with-the-grugq/), by Blogs of War.
* [Digital Security](https://gijn.org/digital-security/), by the Global Investigative Journalism Network.
* [Managing pseudonyms better than DPR](https://b3rn3d.herokuapp.com/blog/2014/01/08/managing-pseudonyms/), by [B3RN3D](https://b3rn3d.herokuapp.com/).
* [Did you ask him about his Threat Model?](https://b3rn3d.herokuapp.com/blog/2014/01/10/ask-him-about-his-threat-model/), by [B3RN3D](https://b3rn3d.herokuapp.com/).
* [OPSEC Required Reading section](https://grugq.github.io/blog/2013/11/06/required-reading/), by [@grugq](https://github.com/grugq).

### Intelligence

* [Intelligence Literature: suggested reading list](https://www.cia.gov/library/intelligence-literature/), by the United State's CIA.

### Spycraft

* [CIA Operative teaches Spycraft and psychology](https://b3rn3d.herokuapp.com/blog/2014/03/09/irl-spycraft/), by [B3RN3D](https://b3rn3d.herokuapp.com/).

### Cryptocurrency related

* [MyCrypto’s security guide for dummies and smart people too](https://medium.com/mycrypto/mycryptos-security-guide-for-dummies-and-smart-people-too-ab178299c82e), by Taylor Monahan.

### For developers

* [Defeating Forensic Analysis on Unix](https://grugq.github.io/docs/phrack-59-06.txt), by [@grugq](https://github.com/grugq).

### Private Browsing

* [Tor](https://www.torproject.org/)
  * You can use [Brave Browser](https://brave.com/) to open a private window with Tor
  * With Tor, you can browse dark web sites like:
    * Hidden Wiki: http://zqktlwiuavvvqqt4ybvgvi7tyo4hjl5xgfuvpdf6otjiycgwqbym2qad.onion
  * Some deep web forums
    * Dread forum: http://dreadditevelidot.onion

### Privacy-related useful services

* Online payments 
  * [Privacy](https://privacy.com/)
* Private communications
  * [Hushed](https://hushed.com/)
* Email
  * [ProtonMail](https://protonmail.com/)
  * [Thatoneprivacysite's email comparison](https://thatoneprivacysite.net/email-section/)
* Virtual Private Networks
  * [Thatoneprivacysite's VPN comparison](https://thatoneprivacysite.net/vpn-section/)

## Software Development

Talk about this topic with [elopio](https://github.com/elopio).

### Books

* [Agile Estimating and Planning](https://www.mountaingoatsoftware.com/books/agile-estimating-and-planning), by Mike Cohn.

* [Agile Testing](https://www.oreilly.com/library/view/agile-testing-a/9780321616944/), by Janet Gregory and Lisa Crispin.

* [Clean Code](https://www.oreilly.com/library/view/clean-code/9780136083238/), by Robert C. Martin.

* [Refactoring: Improving the Design of Existing Code](https://martinfowler.com/books/refactoring.html), by Martin Fowler.

* [Succeeding with Agile: Software Development Using Scrum](https://www.mountaingoatsoftware.com/books/succeeding-with-agile-software-development-using-scrum), by Mike Cohn.

* [Test Driven Development: By Example](https://www.oreilly.com/library/view/test-driven-development/0321146530/), by Kent Beck.

* [User Stories Applied](https://www.mountaingoatsoftware.com/books/user-stories-applied), by Mike Cohn.

* [Working Effectively with Legacy Code](https://www.oreilly.com/library/view/working-effectively-with/0131177052/), by Michael Feathers.

* [xUnit Test Patterns](https://martinfowler.com/books/meszaros.html), by Gerard Meszaros.

### Posts

* [Methodologies for measuring project health](https://nadiaeghbal.com/project-health), by Nadia Eghbal.

## Maintainers

* [elopio](https://github.com/elopio)
* [tinchoabbate](https://github.com/tinchoabbate)

## Contributing

[Share your awesome links with us!](https://github.com/OpenZeppelin/awesome-openzeppelin/issues/new)

## License

[![CC0](http://mirrors.creativecommons.org/presskit/buttons/88x31/svg/cc-zero.svg)](https://creativecommons.org/publicdomain/zero/1.0/)

To the extent possible under law, [OpenZeppelin](https://openzeppelin.com) has waived all copyright and related or neighboring rights to this work.
