{"id":20458402,"url":"https://github.com/unbalancedparentheses/practical_cryptography_and_distributed_ledgers","last_synced_at":"2025-12-06T05:01:59.365Z","repository":{"id":65110830,"uuid":"582062390","full_name":"unbalancedparentheses/practical_cryptography_and_distributed_ledgers","owner":"unbalancedparentheses","description":null,"archived":false,"fork":false,"pushed_at":"2022-12-27T13:28:55.000Z","size":254,"stargazers_count":172,"open_issues_count":1,"forks_count":12,"subscribers_count":7,"default_branch":"main","last_synced_at":"2025-01-16T00:16:26.883Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":null,"has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/unbalancedparentheses.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2022-12-25T14:11:22.000Z","updated_at":"2025-01-09T13:28:03.000Z","dependencies_parsed_at":"2023-01-13T15:39:24.535Z","dependency_job_id":null,"html_url":"https://github.com/unbalancedparentheses/practical_cryptography_and_distributed_ledgers","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/unbalancedparentheses%2Fpractical_cryptography_and_distributed_ledgers","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/unbalancedparentheses%2Fpractical_cryptography_and_distributed_ledgers/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/unbalancedparentheses%2Fpractical_cryptography_and_distributed_ledgers/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/unbalancedparentheses%2Fpractical_cryptography_and_distributed_ledgers/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/unbalancedparentheses","download_url":"https://codeload.github.com/unbalancedparentheses/practical_cryptography_and_distributed_ledgers/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":242014617,"owners_count":20057875,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-11-15T12:12:18.036Z","updated_at":"2025-12-06T05:01:54.322Z","avatar_url":"https://github.com/unbalancedparentheses.png","language":null,"funding_links":[],"categories":[],"sub_categories":[],"readme":"# Practical Cryptography and Distributed Ledgers\n\n- Pablo Deymonnaz\n- Diego Kingston\n- Federico Carrone\n\nDisclaimer: We're still organizing everything. Some links might be in an incorrect section. We will finish organizing everything in the next 8 weeks.\n\n# 1. Foundations of Cryptography\n- Groups, Rings and Fields\n- Finite Fields\n- Modular Arithmetic\n- Polynomials over a Field\n- P versus NP problem\n- Computationally Hard Problems: Factorization and the Discrete Logarithm\n- Elliptic Curves\n- Elliptic Curves Pairings and Field Extensions\n\n## Readings\n- [Chapter entitled Cryptography: Sections on Symmetric Crypto Primitives - Anderson Security Engineering](https://www.cl.cam.ac.uk/~rja14/Papers/SEv2-c05.pdf)\n- [A (Relatively Easy To Understand) Primer on Elliptic Curve Cryptography - Nick Sullivan](https://blog.cloudflare.com/a-relatively-easy-to-understand-primer-on-elliptic-curve-cryptography/)\n- [Exploring Elliptic Curve Pairings - Vitalik Buterin](https://vitalik.ca/general/2017/01/14/exploring_ecp.html)\n- [Pairing](https://www.zeroknowledgeblog.com/index.php/the-pinocchio-protocol/pairing)\n- [Ben Lynn's notes on cryptography, abstract algebra and number theory](https://crypto.stanford.edu/pbc/notes/)\n- [Reed Solomon](https://mazzo.li/posts/reed-solomon.html)\n- [Reed–Solomon codes for coders](https://en.wikiversity.org/wiki/Reed%E2%80%93Solomon_codes_for_coders)\n\n## Exercises\n- [Programming Bitcoin: Learn How to Program Bitcoin from Scratch - Jimmy Song]()\n\n# 2 Symmetric encryption\n- Stream ciphers and block ciphers\n- AES\n- ChaCha20\n\n# 3. Asymmetric encryption\n- Diffie-Hellman Key Exchange\n- ECDH\n- ElGamal\n- RSA\n\n## Readings\n- [Twenty Years of Attacks on the RSA Cryptosystem - Dan Boneh](https://crypto.stanford.edu/~dabo/papers/RSA-survey.pdf)\n\n# 4. Hash Functions and Signatures\n- MD5\n- SHA1\n- Keccak - SHA3\n- ECDSA signature\n- Schnor signature\n- BLS signature\n\n## Readings\n- [What is a Cryptographic Hash Function? - Alin Tomescu](https://decentralizedthoughts.github.io/2020-08-28-what-is-a-cryptographic-hash-function/)\n- [What is the BLS signature scheme? - David Wong](https://www.cryptologie.net/article/472/what-is-the-bls-signature-scheme/)\n- [BLS Signatures - Remco Bloemen](https://xn--2-umb.com/22/bls-signatures/)\n\n# 5. What is Money?\n- [A Brief History of Money](https://nakamoto.com/a-brief-history-of-money/)\n- [Shelling Out: The Origins of Money - Nick Szabo](https://nakamotoinstitute.org/shelling-out/)\n- [What is Money anyway - Lyn Alden](https://www.lynalden.com/what-is-money/)\n- [Money in the modern economy: an introduction](https://www.bankofengland.co.uk/-/media/boe/files/quarterly-bulletin/2014/money-in-the-modern-economy-an-introduction.pdf?la=en\u0026hash=E43CDFDBB5A23D672F4D09B13DF135E6715EEDAC)\n- [Money creation in the modern economy](https://www.bankofengland.co.uk/-/media/boe/files/quarterly-bulletin/2014/money-creation-in-the-modern-economy.pdf?la=en\u0026hash=9A8788FD44A62D8BB927123544205CE476E01654)\n- [The Cypherpunks](https://nakamoto.com/the-cypherpunks)\n\n# 6. Introduction to blockchains and cryptocurrencies\n- What is a blockchain?\n- State Machines\n- Consensus\n- Merkle Trees\n\n## Readings\n- [Why cryptocurrencies are interesting?](https://mirror.xyz/0xaFaBa30769374EA0F971300dE79c62Bf94B464d5/us0MyyUNYwSXazM0YCrGscbRWr18s0aIIZqyHBbTWfM)\n- [Cancelled Nickel Trades on the LME](https://youtu.be/tHXF5LyLI4M)\n- [What is a Blockchain - Ittai Abraham](https://decentralizedthoughts.github.io/2022-09-05-what-is-a-blockchain/)\n- [How does everything tie together?](https://mirror.xyz/0xaFaBa30769374EA0F971300dE79c62Bf94B464d5/nsEwS5WZjLeydpX2x9XybTpu7dA5LpLNyayj93HnovA)\n- [Blockchains as Cryptographic Data Structures - Pramod Viswanath](https://courses.grainger.illinois.edu/ece598pv/sp2021/lectureslides2021/ECE_598_PV_course_notes2.pdf)\n- [Hash functions](https://nakamoto.com/hash-functions/)\n- [Merkle Tree](https://nakamoto.com/merkle-trees/)\n- [What is a Merkle Tree](https://decentralizedthoughts.github.io/2020-12-22-what-is-a-merkle-tree/)\n- [What is Consensus? - Kartik Nayak, Ittai Abraham](https://decentralizedthoughts.github.io/2019-06-27-defining-consensus/)\n- [Flavours of State Machine Replication - Ittai Abraham](https://decentralizedthoughts.github.io/2019-10-25-flavours-of-state-machine-replication/)\n- [Consensus for State Machine Replication - Kartik Nayak, Ittai Abraham](https://decentralizedthoughts.github.io/2019-10-15-consensus-for-state-machine-replication/)\n- [From Single-Shot Agreement to State Machine Replication](https://decentralizedthoughts.github.io/2022-11-19-from-single-shot-to-smr/)\n\n## Videos\n- [E48: The role of decentralization, China/US break down \u0026 more with Bestie Guestie Balaji Srinivasan](https://youtu.be/B2iNXMiGEms) \n\n# 7. Bitcoin\n- Two general's Problem\n- What Is the Byzantine Generals Problem?\n\n## Readings\n- [The Byzantine Generals Problem](https://dl.acm.org/doi/10.1145/357172.357176)\n- [Blockchain Basics \u0026 Consensus - MIT 15.S12 Blockchain and Money - Gary Gensler](https://www.youtube.com/watch?v=w7HDA8gUbpQ\u0026list=PLUl4u3cNGP63UUkfL0onkxF6MYgVa04Fn)\n- [Paxos(etcd) vs. Nakamoto(Bitcoin): consensus](https://gyuho.dev/paxos-etcd-vs-nakamoto-bitcoin-consensus.html)\n- [Nakamoto's Longest-Chain Wins Protocol](https://decentralizedthoughts.github.io/2021-10-15-Nakamoto-Consensus/)\n- [Learning-Bitcoin-from-the-Command-Line](https://github.com/BlockchainCommons/Learning-Bitcoin-from-the-Command-Line)\n- [Bitcoin: A Peer-to-Peer Electronic Cash System](https://bitcoin.org/bitcoin.pdf)\n- [But how does bitcoin actually work?](https://youtu.be/bBC-nXj3Ng4) \n- [Cryptoeconomics In 30 Minutes by Vitalik Buterin](https://youtu.be/GQR1xjQn5Pg)\n\n# 8. Ethereum\n- Solidity\n- ERC20\n- ERC721\n- ERC-1155\n- Merkle Patricia Trie Tree\n\n## Readings\n- [DEVCON1: Understanding the Ethereum Blockchain Protocol - Vitalik Buterin](https://youtu.be/gjwr-7PgpN8)\n- [Ethereum Whitepaper](https://ethereum.org/en/whitepaper/)\n- [Learn Solidity in Y Minutes](https://learnxinyminutes.com/docs/solidity/)\n- [Getting Started with Solidity](https://cryptomarketpool.com/getting-started-with-solidity/)\n- [OpenZeppelin](https://docs.openzeppelin.com/contracts/4.x/)\n- [Go Ethereum](https://geth.ethereum.org/docs)\n- [Trie, Merkle, Patricia: A Blockchain Story](https://kronosapiens.github.io/blog/2018/07/04/patricia-trees.html)\n- [Ethereum development made easy with Foundry](https://www.notamonadtutorial.com/ethereum-development-made-easy-with-foundry/)\n- [scaffold-eth: 🏗 forkable Ethereum dev stack focused on fast product iterations](https://github.com/scaffold-eth/scaffold-eth)\n- [Scaffold-Eth Challenges](https://github.com/scaffold-eth/scaffold-eth-challenges)\n\n# 9. Wallets, Dapps and DeFi\n- DEX: Uniswap\n- Lending: Aave\n- Stablecoin: Maker/DAI\n- dYdX\n- [Metamask and other wallets]()\n- DEMO: Uniswap, Curve, OpenSea NFTs, Maker/Oasis, Multisig\n- [lil web3: Small, focused, utility-based smart contracts](https://github.com/m1guelpf/lil-web3)\n- [Programming DeFi: Uniswap V2. Part 1](https://jeiwan.net/posts/programming-defi-uniswapv2-1/)\n- [The Problems with DeFi \u0026 Crypto](https://www.lynalden.com/defi-problems/)\n- [Programming DeFi: Uniswap V2. Part 1](https://ethereum.org/en/developers/tutorials/uniswap-v2-annotated-code/)\n- [Programming DeFi: Uniswap V2. Part 2](https://jeiwan.net/posts/programming-defi-uniswapv2-2/)\n- [Programming DeFi: Uniswap V2. Part 3](https://jeiwan.net/posts/programming-defi-uniswapv2-3/)\n- [Uniswap V3 Development Book](https://uniswapv3book.com/)\n\n# 9. Oracles, Bridges and Rollups\n- Oracles\n- Bridges\n- [An Incomplete Guide to Rollups](https://vitalik.ca/general/2021/01/05/rollup.html)\n\n# 10. EVM\n- [EVM codes](https://www.evm.codes/?fork=merge)\n- [EVM: From Solidity to byte code, memory and storage](https://youtu.be/RxL_1AfV7N4)\n- [Ethereum Virtual Machine](https://www.youtube.com/watch?v=BsDq2mzC5tk)\n- [EVM Deep Dives: The Path to Shadowy Super Coder 🥷 💻 - Part 1](https://noxx.substack.com/p/evm-deep-dives-the-path-to-shadowy)\n- [ABI]()\n\n# 11. Security\n- [Capture the Ether](https://capturetheether.com/challenges/)\n- [Ethernaut](https://ethernaut.openzeppelin.com/)\n- [Damn Vulnerable DeFi](https://www.damnvulnerabledefi.xyz/)\n- [Solidity Security: Comprehensive list of known attack vectors and common anti-patterns](https://blog.sigmaprime.io/solidity-security.html)\n\n## Tools\n- [echidna - Ethereum smart contract fuzzer](https://github.com/crytic/echidna)\n- [manticore - Symbolic execution tool](https://github.com/trailofbits/manticore)\n- [mythril - Security analysis tool for EVM bytecode](https://github.com/ConsenSys/mythril)\n\n# 12. MEV\n- [MEV](https://research.paradigm.xyz/MEV)\n- [How To Get Front-Run on Ethereum mainnet](https://www.youtube.com/watch?v=UZ-NNd6yjFM)\n- [Video: Honeypots in Ethereum And How To Avoid Them With Tenderly.co Transaction Simulation](https://youtu.be/DDn5mksOUCc)\n\n# 13. Zcash, SNARKs and Privacy in blockchains**\n- [Zcash]()\n- [Aztec]()\n\n# 14. Scaling blockchains\n- Data Availability\n- Optimistic versus Zero Knoweledge Rollups\n- Circom, Cairo, Noir\n\n## Readings\n- [Data, Consensus, Execution: Three Scalability Bottlenecks for State Machine Replication - Ittai Abraham](https://decentralizedthoughts.github.io/2019-12-06-dce-the-three-scalability-bottlenecks-of-state-machine-replication)\n- [Understanding Blockchain Latency and Throughput - Lefteris Kokoris-Kogias](https://www.paradigm.xyz/2022/07/consensus-throughput)\n- [(Almost) Everything you need to know about Optimistic Rollup - Georgios Konstantopoulos](https://www.paradigm.xyz/2021/01/almost-everything-you-need-to-know-about-optimistic-rollup)\n- [Why rollups + data shards are the only sustainable solution for high scalability - Polynya](https://polynya.medium.com/why-rollups-data-shards-are-the-only-sustainable-solution-for-high-scalability-c9aabd6fbb48)\n- [Volitions: best of all worlds - Polynya](https://polynya.medium.com/volitions-best-of-all-worlds-cfd313aec9a8)\n\n# 15. Tendermint, HotStuff and Narwhal\n- [What is the difference between PBFT, Tendermint, SBFT and HotStuff? - Ittai Abraham](https://decentralizedthoughts.github.io/2019-06-23-what-is-the-difference-between/)\n- [DAG Meets BFT - The Next Generation of BFT Consensus - Ittai Abraham](https://decentralizedthoughts.github.io/2022-06-28-DAG-meets-BFT/)\n\n# 16. Bitcoin: SegWit, Taproot, Lightning Network and Covenants\n- [Segregated Witness](https://github.com/bitcoin/bips/blob/master/bip-0141.mediawiki)\n- [Taproot: SegWit version 1 spending rules](https://github.com/bitcoin/bips/blob/master/bip-0341.mediawiki)\n- [Covenants: CHECKTEMPLATEVERIFY]()\n- [A Look at the Lightning Network - Lyn Alden](https://www.lynalden.com/lightning-network/)\n- [The Bitcoin Lightning Network: Scalable Off-Chain Instant Payments](https://berkeley-defi.github.io/assets/material/lightning-network-paper.pdf)\n\n# Books\n- [Bitcoin and Cryptocurrency Technologies: A Comprehensive Introduction - Arvind Narayanan, Joseph Bonneau, Edward Felten, Andrew Miller, and Steven Goldfeder](https://press.princeton.edu/books/hardcover/9780691171692/bitcoin-and-cryptocurrency-technologies)\n- [Security Engineering — Ross Anderson](https://www.cl.cam.ac.uk/~rja14/book.html)\n\n## Blockchain\n- [Foundations of Distributed: Consensus and Blockchains - Elaine Shi](http://elaineshi.com/docs/blockchain-book.pdf)\n\n## Cryptography\n- [Handbook of Applied Cryptography -  Menezes, van Oorschot and Vanstone]()\n- [Crypto 101 - lvh]()\n\n## Abstract Algebra and Number Theory\n- [An Introduction to Mathematical Cryptography - Jeffrey Hoffstein, Jill Pipher, Joseph H. Silverman]()\n- [A Course in Number Theory and Cryptography - Neal Koblitz]()\n- [Algebra for Applications - Arkadii Slinko]()\n- [A Computational Introduction to Number Theory and Algebra - Victor Shoup]()\n- [Elliptic Curves Number Theory and Cryptography - Lawrence C. Washington]()\n- [The prime number conspiracy - Thomas Lin]()\n\n# Courses\n- [Practical Cryptographic Systems - Matthew Green](https://github.com/matthewdgreen/practicalcrypto/wiki/Spring-2020-Syllabus)\n- [Cryptocurrency Class 2022 - Patrick McCorry](https://cryptocurrencyclass.github.io/)\n- [Principles of Blockchains - Pramod Viswanath](https://courses.grainger.illinois.edu/ece598pv/sp2021/)\n- [Blockchain And Money - Gary Gensler](https://ocw.mit.edu/courses/15-s12-blockchain-and-money-fall-2018/video_galleries/video-lectures/)\n- [Decentralized Finance MOOC - Dan Boneh, Arthur Gervais, Andrew Miller, Christine Parlour and\tDawn Song](https://defi-learning.org/f22)\n- [Stanford CS 251 Blockchain Technologies - Dan Boneh](https://cs251.stanford.edu/syllabus.html)\n- [Stanford EE374 Blockchain Foundations - David Tse, Dionysis Zindros](https://web.stanford.edu/class/ee374/)\n- [ECE595 Foundations of Blockchain Systems - Sreeram Kannan](https://ece595uwseattle.github.io/schedule)\n- [CS598CAL Consensus Algorithms - Ling Ren](https://sites.google.com/view/cs598cal?pli=1)\n\n---\n# Missing topics\n- Light Clients \n- UTXO vs Account model\n- The Blockchain Trilemma\n- PoS vs PoW\n- Soft Forks vs Hard Forks\n- Onchain vs offchain computation\n- Chinese remainder theorem\n- One Time Pad\n- MAC\n- Account Abstraction (argent x)\n- Finality\n- muun, non custodial wallets\n- life depends onl https://twitter.com/argentHQ/status/1513488734498525184\n\n**Links to add**\n- [](https://ethereum.org/en/developers/tutorials/uniswap-v2-annotated-code/)\n- https://crypto.stanford.edu/~dabo/courses/OnlineCrypto/\n- https://www.youtube.com/channel/UCqeIoMMTKl9PK9O8BcEpNhQ\n- https://youtu.be/-6BtBUbiUIU\n- https://github.com/decrypto-org/blockchain-papers\n- https://blog.ethereum.org/2016/05/09/on-settlement-finality/\n- https://medium.com/mechanism-labs/finality-in-blockchain-consensus-d1f83c120a9a#:~:text=In%20the%20blockchain%20setting%2C%20finality,be%20arbitrarily%20changed%20or%20reversed\n- https://github.com/Mechanism-Labs/MetaAnalysis-of-Alternative-Consensus-Protocols\n- https://www.youtube.com/watch?v=O1Iq27ItGGg\n- https://medium.com/@lightcoin/the-differences-between-a-hard-fork-a-soft-fork-and-a-chain-split-and-what-they-mean-for-the-769273f358c9\n- https://dspace.mit.edu/handle/1721.1/127476\n- https://medium.facilelogin.com/the-mystery-behind-block-time-63351e35603a\n- https://dankradfeist.de/ethereum/2021/05/20/what-everyone-gets-wrong-about-51percent-attacks.html\n- https://dinhtta.github.io/flpcap/\n- https://www.the-paper-trail.org/post/2012-03-25-flp-and-cap-arent-the-same-thing/\n- https://youtu.be/mDyBbGCiBUU\n- https://medium.com/@alxlpsc/critical-privacy-vulnerability-getting-exposed-by-metamask-693c63c2ce94\n- https://www.cnbc.com/2021/08/23/people-are-paying-millions-of-dollars-for-digital-pictures-of-rocks.html\n- https://mudit.blog/miso-war-room/\n- https://github.com/ConsenSys/surya\n- https://youtu.be/DlNDYMNJ5zQ\n- [Hayden Adams Explains Uniswap and the Rise of DeFi](https://open.spotify.com/episode/3TT6aFeMWnFPZTlfy5fxvv?si=KCw3uWvJQAaeBCZoH1RwNw\u0026dl_branch=1)\n- https://cryptomarketpool.com/getting-started-with-solidity/\n- https://www.youtube.com/watch?v=U6q5gBnxgS0\u0026list=PL9lJNCwSDOhVEf0ajBHkNNICFqNnoGx7r\u0026index=4\n- https://twitter.com/guiltygyoza/status/1447641997012082693?s=12\n- https://blog.zkga.me/announcing-darkforest\n- https://github.com/Rari-Capital/solmate\n- https://youtu.be/7Kq3YWsysc0\n- https://youtu.be/RxL_1AfV7N4\n- https://dune.xyz/queries/1161\n- https://www.youtube.com/watch?v=B2iNXMiGEms\n- https://medium.com/starkware/volition-and-the-emerging-data-availability-spectrum-87e8bfa09bb\n- https://jacob-eliosoff.medium.com/whats-the-simplest-possible-decentralized-stablecoin-4a25262cf5e8\n- https://writings.flashbots.net/writings/the-anatomy-of-an-inspector/\n- https://twitter.com/siegerhino2/status/1445024119112835073?s=21\n- https://app.umbra.cash/faq#how-does-umbra-compare-to-tornado-cash-and-aztec\n- https://www.samchepal.com/the-hidden-world-of/\n- https://www.youtube.com/watch?v=cizLhxSKrAc\u0026t=215s\n- https://www.youtube.com/watch?v=Ehm-OYBmlPM\n- https://github.com/Mikerah/awesome-foundations-of-DeFi\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Funbalancedparentheses%2Fpractical_cryptography_and_distributed_ledgers","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Funbalancedparentheses%2Fpractical_cryptography_and_distributed_ledgers","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Funbalancedparentheses%2Fpractical_cryptography_and_distributed_ledgers/lists"}