Learn what it takes to create a basic blockchain, explore ways to break it, and look at some attacks on production blockchains and smart contracts. This talk will demonstrate the properties and source code of a basic blockchain in Python. Theoretical weaknesses and potential attacks are discussed, then implemented and executed. With this foundation in place, we will look at various attacks in the wild on production blockchains and their machinery, such as smart contracts. Finally, we'll discuss some best practices and mitigations for your own blockchain projects.