In this project, we first describe different attacks on blockchain-based cryptocurrencies with a focus on Bitcoin. Examples are the 51% attack, different block withholding attacks, the Goldfinger attack, the feather forking attack, the big fee attack, or the dust attack. After these attacks, prominent programming errors and problems, like the integer overflow bug, the accidental rule change bug or transaction malleability are discussed. Following this section, different techniques used in security analyses of blockchain-based cryptocurrencies are introduced. Examples are techniques used in the Bitcoin whitepaper, game theory, and the chain growth, chain quality and common prefix property, which ensure liveness and persistence, two essential features of a robust system.