{"id":13459971,"url":"https://github.com/openblockchains/awesome-blockchains","last_synced_at":"2025-05-14T22:09:01.802Z","repository":{"id":45781097,"uuid":"103458675","full_name":"openblockchains/awesome-blockchains","owner":"openblockchains","description":"A collection about awesome blockchains - open distributed public databases w/ crypto hashes incl. git ;-).  Blockchains are the new tulips :tulip::tulip::tulip:. Distributed is the new centralized. ","archived":false,"fork":false,"pushed_at":"2023-02-10T16:37:58.000Z","size":2593,"stargazers_count":3753,"open_issues_count":0,"forks_count":444,"subscribers_count":141,"default_branch":"master","last_synced_at":"2025-05-07T21:01:59.212Z","etag":null,"topics":["blockchain","content-addressable-storage","cryptohash","distributed-database","ethereum","git","merkletree","proof-of-waste","proof-of-work","sha256","transactions","tulipmania","tx","universum"],"latest_commit_sha":null,"homepage":"","language":"Ruby","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"cc0-1.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/openblockchains.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.md","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null}},"created_at":"2017-09-13T22:33:56.000Z","updated_at":"2025-05-05T10:17:11.000Z","dependencies_parsed_at":"2023-02-17T20:31:04.019Z","dependency_job_id":null,"html_url":"https://github.com/openblockchains/awesome-blockchains","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/openblockchains%2Fawesome-blockchains","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/openblockchains%2Fawesome-blockchains/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/openblockchains%2Fawesome-blockchains/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/openblockchains%2Fawesome-blockchains/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/openblockchains","download_url":"https://codeload.github.com/openblockchains/awesome-blockchains/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":254101581,"owners_count":22014905,"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":["blockchain","content-addressable-storage","cryptohash","distributed-database","ethereum","git","merkletree","proof-of-waste","proof-of-work","sha256","transactions","tulipmania","tx","universum"],"created_at":"2024-07-31T10:00:33.206Z","updated_at":"2025-05-14T22:09:01.757Z","avatar_url":"https://github.com/openblockchains.png","language":"Ruby","readme":"\nMining Digital Gold one Block at a Time?! • Don't Expect to Get Insanely Rich (Quick) • Tulips :tulip::tulip::tulip: (like Blockchains) are Great and Gorgeous (and will Endure)\n\n```ruby\nb0 = Block.first(\n        { from: \"Dutchgrown\", to: \"Vincent\", what: \"Tulip Bloemendaal Sunset\", qty: 10 },\n        { from: \"Keukenhof\",  to: \"Anne\",    what: \"Tulip Semper Augustus\",    qty: 7  } )\n\nb1 = Block.next( b0,\n        { from: \"Flowers\",    to: \"Ruben\",   what: \"Tulip Admiral van Eijck\",  qty: 5  },\n        { from: \"Vicent\",     to: \"Anne\",    what: \"Tulip Bloemendaal Sunset\", qty: 3  },\n        { from: \"Anne\",       to: \"Julia\",   what: \"Tulip Semper Augustus\",    qty: 1  },\n        { from: \"Julia\",      to: \"Luuk\",    what: \"Tulip Semper Augustus\",    qty: 1  } )\n...\n```\n\n(Source: [`blockchain_with_transactions.rb`](blockchain.rb/blockchain_with_transactions.rb))\n\n\n# Awesome Blockchains\n\nA collection about awesome blockchains - open distributed databases w/ crypto hashes incl. git ;-).  Blockchains are the new tulips :tulip::tulip::tulip:.\n\nContents:\n\n- [Frequently Asked Questions (F.A.Q.s) \u0026 Answers](#frequently-asked-questions-faqs--answers)\n- [Do-It-Yourself (DIY) - Build Your Own Blockchain](#do-it-yourself-diy---build-your-own-blockchain)\n  - [Python](#python) • [Ruby](#ruby) • [JavaScript](#javascript) • [Java](#java) • [Go](#go)\n- [Blockchain Articles](#blockchain-articles)\n- [Blockchain Books](#blockchain-books)\n- [Blockchain (Lite) Crypto Hash Libraries](#blockchain-lite-crypto-hash-libraries)\n- [Git, Git, Git - The Stupid Content Tracker with Crypto Hashes](#git-git-git---the-stupid-content-tracker-with-crypto-hashes)\n- [Classic Tulip Mania](#classic-tulip-mania)\n- [Awesome Awesomeness](#awesome-awesomeness)\n\n\n\n## What's News?\n\nFor blockchain books, see the new [**Best of Crypto Books page »**](https://openblockchains.github.io/crypto-books/)\n\n### The Open Blockchains Book of the Year 2020 Award Goes To...\n\n![](i/libra-shrugged.png)\n[**Libra Shrugged: How Facebook Tried to Take Over the Money**](https://davidgerard.co.uk/blockchain/libra/)\nby David Gerard, November 2020, 182 Pages --\n_Introduction: Taking over the money  ++\nA user's guide to Libra   ++\nThe genesis of Libra: Beller's blockchain ++\nTo launch a Libra: Let’s start a crypto  ++\nBitcoin: why Libra is like this  ++\nThe Libra White Papers  ++\nBanking the unbanked  ++\nThe Libra Reserve plan and economic stability ++\nLibra, privacy and your digital identity  ++\nThe regulators recoil in horror  ++\nDavid Marcus before the US House and Senate ++\nJuly to September 2019: Libra runs the gauntlet  ++\nOctober 2019: Libra's bad month  ++\nMark Zuckerberg before the US House  ++\nNovember 2019: The comedown  ++\nCentral bank digital currencies  ++\nEpilogue: Libra 2.0: not dead yet  ++\nAppendix: 2010–2013: The rise and fall of Facebook Credits_\n\nFor more about Diem (formerly Libra), see the [Awesome Diem (formerly Libra) and Move page »](https://github.com/openblockchains/awesome-diem)\n\n---\n\nFor crypto quotes, see the new [**100+ Best of Crypto Quotes - I HODL, you HODL, we HODL! - BREAKING: BITCOIN JUST BROKE $22 000! page »**](https://github.com/openblockchains/crypto-quotes)\n\n### The Best Crypto Quote \"Oracle Saying\" of the Year 2020 Award Goes To...\n\n\u003e SEC Investor Education:\n\u003e - Don't understand an investment?\n\u003e - Don't invest in it.\n\nYes, but what if there's only 21 million of it?\n\n  \\- Trolly McTrollface\n\n\n\n## Frequently Asked Questions (F.A.Q.s) \u0026 Answers\n\n\n**Q: What's a Blockchain?**\n\nA: A blockchain is a distributed database with a list (that is, chain) of records (that is, blocks) linked and secured by\ndigital fingerprints (that is, cryptho hashes).\nExample from [`blockchain.rb`](blockchain.rb/blockchain.rb):\n\n```\n[#\u003cBlock:0x1eed2a0\n  @timestamp     = 1637-09-15 20:52:38,\n  @data          = \"Genesis\",\n  @previous_hash = \"0000000000000000000000000000000000000000000000000000000000000000\",\n  @hash          = \"edbd4e11e69bc399a9ccd8faaea44fb27410fe8e3023bb9462450a0a9c4caa1b\"\u003e,\n #\u003cBlock:0x1eec9a0\n  @timestamp     = 1637-09-15 21:02:38,\n  @data          = \"Transaction Data...\",\n  @previous_hash = \"edbd4e11e69bc399a9ccd8faaea44fb27410fe8e3023bb9462450a0a9c4caa1b\",\n  @hash          = \"eb8ecbf6d5870763ae246e37539d82e37052cb32f88bb8c59971f9978e437743\"\u003e,\n #\u003cBlock:0x1eec838\n  @timestamp     = 1637-09-15 21:12:38,\n  @data          = \"Transaction Data......\",\n  @previous_hash = \"eb8ecbf6d5870763ae246e37539d82e37052cb32f88bb8c59971f9978e437743\",\n  @hash          = \"be50017ee4bbcb33844b3dc2b7c4e476d46569b5df5762d14ceba9355f0a85f4\"\u003e,\n  ...\n```\n\n![](i/blockchain-jesus.png)\n\n\n**Q: What's a Hash? What's a (One-Way) Crypto(graphic) Hash Digest Checksum**?\n\nA: A hash e.g. `eb8ecbf6d5870763ae246e37539d82e37052cb32f88bb8c59971f9978e437743`\nis a small digest checksum calculated\nwith a one-way crypto(graphic) hash digest checksum function\ne.g. SHA256 (Secure Hash Algorithm 256 Bits)\nfrom the data. Example from [`blockchain.rb`](blockchain.rb/blockchain.rb):\n\n```ruby\ndef calc_hash\n  sha = Digest::SHA256.new\n  sha.update( @timestamp.to_s + @previous_hash + @data )\n  sha.hexdigest   ## returns \"eb8ecbf6d5870763ae246e37539d82e37052cb32f88bb8c59971f9978e437743\"\nend\n```\n\nA blockchain uses\n\n- the block timestamp (e.g. `1637-09-15 20:52:38`) and\n- the hash from the previous block (e.g. `edbd4e11e69bc399a9ccd8faaea44fb27410fe8e3023bb9462450a0a9c4caa1b`) and finally\n- the block data (e.g. `Transaction Data...`)\n\nto calculate the new hash digest checksum, that is, the hash\ne.g. `be50017ee4bbcb33844b3dc2b7c4e476d46569b5df5762d14ceba9355f0a85f4`.\n\n\n**Q: What's a Merkle Tree?**\n\nA: A Merkle tree is a hash tree named after Ralph Merkle who patented the concept in 1979\n(the patent expired in 2002). A hash tree is a generalization of hash lists or hash chains where every leaf node (in the tree) is labelled with a data block and every non-leaf node (in the tree)\nis labelled with the crypto(graphic) hash of the labels of its child nodes. For more see the [Merkle tree](https://en.wikipedia.org/wiki/Merkle_tree) Wikipedia Article.\n\nNote: By adding crypto(graphic) hash functions you can \"merkelize\" any data structure.\n\n\n**Q: What's a Merkelized DAG (Directed Acyclic Graph)?**\n\nA: It's a blockchain secured by crypto(graphic) hashes that uses a directed acyclic graph data structure (instead of linear \"classic\" linked list).\n\nNote: Git uses merkelized dag (directed acyclic graph)s for its blockchains.\n\n\n**Q: Is the Git Repo a Blockchain?**\n\nA: Yes, every branch in the git repo is a blockchain.\nThe \"classic\" Satoshi-blockchain is like a git repo with a single master branch (only).\n\n\n\n## Do-It-Yourself (DIY) - Build Your Own Blockchain\n\n![](i/fake-dilbert-blockchain.png)\n\n\n[Python](#python) •\n[Ruby](#ruby) •\n[JavaScript](#javascript) •\n[Java](#java) •\n[Go](#go)\n\n\n### Python\n\n**Let's Build the Tiniest Blockchain in Python Series** by Gerald Nash\n\n- [**Let's Build the Tiniest Blockchain In Less Than 50 Lines of Python (Part 1)**](https://medium.com/crypto-currently/lets-build-the-tiniest-blockchain-e70965a248b), July 2016\n- [**Let's Make the Tiniest Blockchain Bigger With More Lines of Python (Part 2)**](https://medium.com/crypto-currently/lets-make-the-tiniest-blockchain-bigger-ac360a328f4d), July 2016\n\n\u003c!-- break --\u003e\n\n[**Build Your Own Blockchain: A Python Tutorial**](http://ecomunsing.com/build-your-own-blockchain)\nby Eric Munsing, March 2017, [(Source)](https://github.com/emunsing/tutorials/blob/master/BuildYourOwnBlockchain.ipynb)\n\n\n[**Learn Blockchains by Building One (in Python)**](https://hackernoon.com/learn-blockchains-by-building-one-117428612f46)\nby Daniel van Flymen, September 2017, [(Source)](https://github.com/dvf/blockchain) -- The fastest way to learn how Blockchains work is to build one\n\n\n**Build Your Own Blockchain (in Python 3) Series** by Jack Schultz, [(Source)](https://github.com/jackschultz/jbc)\n\n- [**Part 1: Creating, Storing, Syncing, Displaying, Mining, and Proving Work**](https://bigishdata.com/2017/10/17/write-your-own-blockchain-part-1-creating-storing-syncing-displaying-mining-and-proving-work/), October 2017\n- [**Part 2: Syncing Chains From Different Nodes**](https://bigishdata.com/2017/10/27/build-your-own-blockchain-part-2-syncing-chains-from-different-nodes/), October 2017\n- [**Part 3: Writing Nodes that Mine and Talk**](https://bigishdata.com/2017/11/02/build-your-own-blockchain-part-3-writing-nodes-that-mine/), November 2017\n\n\u003c!-- break --\u003e\n\n[**A Practical Introduction to Blockchain with Python**](http://adilmoujahid.com/posts/2018/03/intro-blockchain-bitcoin-python/)\nby Adil Moujahid, March 2018, [(Source)](https://github.com/adilmoujahid/blockchain-python-tutorial)\n\n\n### Ruby\n\n[**How Does Bitcoin Force Consensus Among Byzantine Generals?**](http://www.akitaonrails.com/2017/11/01/how-does-bitcoin-force-consensus-among-byzantine-generals) by Fabio Akita, November 2017\n\n[**blockchain-lite - Build your own blockchains with crypto hashes; revolutionize the world with blockchains, blockchains, blockchains one block at a time!**](https://planetruby.github.io/calendar/advent2017/01-blockchain-lite) by Gerald Bauer, Ruby Advent Calendar 2017 / Day 1, December 2017\n\n[**merkletree library - Build Your Own Crypto Hash Trees; Grow Your Own Money on Trees**](https://planetruby.github.io/calendar/advent2017/19-merkletree.html) by Gerald Bauer, Ruby Advent Calendar 2017 / Day 19, December 2017\n\n[**centralbank command line tool (and library) - Print Your Own Money / Cryptocurrency; Run Your Own Federated Central Bank Nodes on the Blockchain Peer-to-Peer over HTTP**](https://planetruby.github.io/calendar/advent2017/24-centralbank.html) by Gerald Bauer, Ruby Advent Calendar 2017 / Day 24, December 2017\n\n[**A guide to building a blockchain \u0026 cryptocurrency from scratch**](https://antoinefink.com/building-a-blockchain-and-cryptocurrency-in-ruby) [(Source)](https://github.com/antoinefink/melon) by Antoine Fink, April 2021\n\n\n### Crystal\n\n[**Write your own blockchain and Proof-of-Work (PoW) algorithm using Crystal**](https://medium.com/@bradford_hamilton/write-your-own-blockchain-and-pow-algorithm-using-crystal-d53d5d9d0c52) by Bradford Lamson-Scribner, May 2018,\n[(Source)](https://github.com/bradford-hamilton/crystal-blockchain)\n\n\n### JavaScript\n\n[**Writing a Tiny Blockchain in JavaScript**](https://www.savjee.be/2017/07/Writing-tiny-blockchain-in-JavaScript/)\nby Xavier Decuyper, July 2017\n\n[**Node.js Blockchain Imlementation: BrewChain: Chain+WebSockets+HTTP Server**](http://www.darrenbeck.co.uk/blockchain/nodejs/nodejscrypto/) by Darren Beck, November 2017, [(Source)](https://github.com/dbbddb/BrewChain) -- Protecting the tea making ledger from unscrupulous colleagues\n\n[**Build your own Blockchain in Javascript/Visualization of Blockchains**](https://github.com/nambrot/blockchain-in-js) by Nam Chu Hoai,  January 2018\n\n\n### TypeScript\n\n[**Naivecoin: a tutorial for building a cryptocurrency**](https://lhartikk.github.io) by Lauri Hartikka, [(Source)](https://github.com/lhartikk/naivecoin)\n\n\n### Java\n\n[**Creating Your First Blockchain with Java, Part 1**](https://medium.com/programmers-blockchain/create-simple-blockchain-java-tutorial-from-scratch-6eeed3cb03fa) by Kass, December 2017, [(Source)](https://github.com/CryptoKass/NoobChain-Tutorial-Part-1)\n\n### Kotlin\n\n[**Let's implement a cryptocurrency in Kotlin**](https://medium.com/@vasilyf/lets-implement-a-cryptocurrency-in-kotlin-part-1-blockchain-8704069f8580) by Vasily Fomin, July 2018,\n[(Source)](https://github.com/VasilyFomin/kCoin)\n\n\n### SQL\n\n[**Blockchain by Example in SQL Server**](https://medium.com/@benjaminsky/blockchain-by-example-in-sql-server-8376b410128) by Benjamin Campbell, December 2017, [(Source)](https://github.com/benjaminsky/BlockchainMessenger)\n\n\n### Rust\n\n**Building Blockchain in Rust Series** by Jacob Lindahl, GeekLaunch, [(Source)](https://github.com/GeekLaunch/blockchain-rust), [(Slide Decks in PDF)](https://github.com/GeekLaunch/slides)\n- [**Part 1: Blocks and Hashing**](https://medium.com/geeklaunch/blockchain-in-rust-01-blocks-hashing-4192f2265d3d), January 2019\n- [**Part 2: Mining**](https://medium.com/geeklaunch/blockchain-in-rust-02-mining-companion-guide-9106b7a7696d), January 2019\n- [**Part 3: Chains and Checks**](https://medium.com/geeklaunch/blockchain-in-rust-03-chains-checks-companion-guide-2714e1a76654), January 2019\n\n### Go\n\n**Building Blockchain in Go Series** by Ivan Kuznetsov, [(Source)](https://github.com/Jeiwan/blockchain_go)\n\n- [**Part 1: Basic Prototype**](https://jeiwan.cc/posts/building-blockchain-in-go-part-1/), August 2017\n- [**Part 2: Proof-of-Work**](https://jeiwan.cc/posts/building-blockchain-in-go-part-2/), August 2017\n- [**Part 3: Persistence and CLI**](https://jeiwan.cc/posts/building-blockchain-in-go-part-3/), August 2017\n- [**Part 4: Transactions 1**](https://jeiwan.cc/posts/building-blockchain-in-go-part-4/), September 2017\n- [**Part 5: Addresses**](https://jeiwan.cc/posts/building-blockchain-in-go-part-5/), September 2017\n- [**Part 6: Transactions 2**](https://jeiwan.cc/posts/building-blockchain-in-go-part-6/), September 2017\n- [**Part 7: Network**](https://jeiwan.cc/posts/building-blockchain-in-go-part-7/), October 2017\n\n\u003c!-- break --\u003e\n\nBlockchain Series in Go by by Coral Health [(Source)](https://github.com/mycoralhealth/blockchain-tutorial)\n\n- [**Code your own blockchain in less than 200 lines of Go!**](https://medium.com/@mycoralhealth/code-your-own-blockchain-in-less-than-200-lines-of-go-e296282bcffc) by Coral Health, January 2018\n- [**Part 2: Networking — Code your own blockchain in less than 200 lines of Go!**](https://medium.com/@mycoralhealth/part-2-networking-code-your-own-blockchain-in-less-than-200-lines-of-go-17fe1dad46e1) by Coral Health, February 2018\n- [**Code your own blockchain mining algorithm in Go!**](https://medium.com/@mycoralhealth/code-your-own-blockchain-mining-algorithm-in-go-82c6a71aba1f) by Coral Health, March 2018\n\n\n\u003c!--\n  it's more about bitcoin (and not about blockchain really)\n### C#\n\n[**Programming The Blockchain in C#**](https://programmingblockchain.gitbooks.io/programmingblockchain/)\n--\u003e\n\n\n### Talk Notes\n\n- [**Blockchain! Blockchain! Blockchain! - Build Your Own Blockchains in JavaScript from Zero (Scratch)**](https://github.com/geraldb/talks/blob/master/blockchain.md) by Gerald Bauer, Vienna.js, September 2017\n- [**Blockchain! Blockchain! Blockchain! - Build Your Own Blockchains in Ruby from Zero (Scratch)**](https://github.com/geraldb/talks/blob/master/blockchain_ruby.md) by Gerald Bauer, Vienna.rb, Dezember 2017\n- [**Blockchain vs (Hyper) Ledger -- Inside (Hyper) Ledger Lite - Add Transactions One Block at a Time and Balance the Accounts (Books)**](https://github.com/geraldb/talks/blob/master/hyperledger.md) by Gerald Bauer, Hyperledger Vienna, March 2018\n- [**Blockchain! Blockchain! Blockchain! - Build Your Own Blockchains in Go from Zero (Scratch)**](https://github.com/geraldb/talks/blob/master/blockchain_go.md) by Gerald Bauer, Vienna.go, April 2018\n\n\n### More\n\nSee [**Build your own Blockchain / Cryptocurrency**](https://github.com/danistefanovic/build-your-own-x#build-your-own-blockchain--cryptocurrency) @ Build your own (insert technology here)\n\n\n\n\n### Samples\n\n#### Blockchain from Scratch - Ruby Version\n\n```ruby\nclass Block\n\n  attr_reader :timestamp\n  attr_reader :data\n  attr_reader :previous_hash\n  attr_reader :hash\n\n  def initialize(data, previous_hash)\n    @timestamp     = Time.now\n    @data          = data\n    @previous_hash = previous_hash\n    @hash          = calc_hash\n  end\n\n  def self.first( data=\"Genesis\" )    # create genesis (big bang! first) block\n    ## note: uses all zero for previous_hash (\"0\")\n    Block.new( data, \"0000000000000000000000000000000000000000000000000000000000000000\" )\n  end\n\n  def self.next( previous, data=\"Transaction Data...\" )\n    Block.new( data, previous.hash )\n  end\n\nprivate\n\n  def calc_hash\n    sha = Digest::SHA256.new\n    sha.update( @timestamp.to_s + @previous_hash + @data )\n    sha.hexdigest\n  end\n\nend  # class Block\n\n\n#####\n## let's get started\n##   build a blockchain a block at a time\n\nb0 = Block.first( \"Genesis\" )\nb1 = Block.next( b0, \"Transaction Data...\" )\nb2 = Block.next( b1, \"Transaction Data......\" )\nb3 = Block.next( b2, \"More Transaction Data...\" )\n\nblockchain = [b0, b1, b2, b3]\n\npp blockchain\n\n```\n\n(Source: [`blockchain.rb`](blockchain.rb/blockchain.rb))\n\nwill pretty print (pp) something like:\n\n```\n[#\u003cBlock:0x1eed2a0\n  @timestamp     = 1637-09-15 20:52:38,\n  @data          = \"Genesis\",\n  @previous_hash = \"0000000000000000000000000000000000000000000000000000000000000000\",\n  @hash          = \"edbd4e11e69bc399a9ccd8faaea44fb27410fe8e3023bb9462450a0a9c4caa1b\"\u003e,\n #\u003cBlock:0x1eec9a0\n  @timestamp     = 1637-09-15 21:02:38,\n  @data          = \"Transaction Data...\",\n  @previous_hash = \"edbd4e11e69bc399a9ccd8faaea44fb27410fe8e3023bb9462450a0a9c4caa1b\",\n  @hash          = \"eb8ecbf6d5870763ae246e37539d82e37052cb32f88bb8c59971f9978e437743\"\u003e,\n #\u003cBlock:0x1eec838\n  @timestamp     = 1637-09-15 21:12:38,\n  @data          = \"Transaction Data......\",\n  @previous_hash = \"eb8ecbf6d5870763ae246e37539d82e37052cb32f88bb8c59971f9978e437743\",\n  @hash          = \"be50017ee4bbcb33844b3dc2b7c4e476d46569b5df5762d14ceba9355f0a85f4\"\u003e,\n #\u003cBlock:0x1eec6d0\n  @timestamp     = 1637-09-15 21:22:38,\n  @data          = \"More Transaction Data...\",\n  @previous_hash = \"be50017ee4bbcb33844b3dc2b7c4e476d46569b5df5762d14ceba9355f0a85f4\",\n  @hash          = \"5ee2981606328abfe0c3b1171440f0df746c1e1f8b3b56c351727f7da7ae5d8d\"\u003e]\n```\n\n\nComments from the [reddit ruby posting](https://www.reddit.com/r/ruby/comments/70c30f/build_your_own_blockchain_in_20_lines_of_ruby/):\n\n\u003e Wait, so a blockchain is just a linked list?\n\u003e\n\u003e\u003e No. A linked list is only required to have a reference to the previous element, a block must\n\u003e\u003e have an identifier depending on the previous block's identifier, meaning that you cannot\n\u003e\u003e replace a block without recomputing every single block that comes after.\n\u003e\u003e In this implementation that happens as the previous digest is input in the calc_hash method.\n\n\n\n**What about Proof of Work / Waste?**\n\nLet's add a proof of work / waste to the blockchain. In the classic blockchain you have to compute a block hash that starts with leading zeros (`00`). The more leading zeros the harder (more difficult) to compute. Let's keep it easy to compute with two leading zeros (`00`), that is, 16^2 = 256 possibilites (^1,2). Three leading zeros (`000`) would be 16^3 = 4_096 possibilites and four zeros (`0000`) would be 16^4 = 65_536 and so on.\n\n(^1): 16 possibilties because it's a hex or hexadecimal or base 16 number, that is, `0` `1` `2` `3` `4` `6` `7` `8` `9` `a` (10) `b` (11) `c` (12) `d` (13) `e` (14) `f` (15).\n\n(^2): A random secure hash algorithm needs on average 256 tries (might be lets say 305 tries, for example, because it's NOT a perfect statistic distribution of possibilities).\n\n\nExample:\n\n```ruby\ndef compute_hash_with_proof_of_work( difficulty=\"00\" )\n  nonce = 0\n  loop do\n    hash = calc_hash_with_nonce( nonce )\n    if hash.start_with?( difficulty )\n      return [nonce,hash]     ## bingo! proof of work if hash starts with leading zeros (00)\n    else\n      nonce += 1              ## keep trying (and trying and trying)\n    end\n  end\nend\n\ndef calc_hash_with_nonce( nonce=0 )\n  sha = Digest::SHA256.new\n  sha.update( nonce.to_s + @timestamp.to_s + @previous_hash + @data )\n  sha.hexdigest\nend\n```\n\n(Source: [`blockchain_with_proof_of_work.rb`](blockchain.rb/blockchain_with_proof_of_work.rb))\n\nLet's rerun the sample with the proof of work machinery added.\nNow the sample will pretty print (pp) something like:\n\n```\n[#\u003cBlock:0x1e204f0\n  @timestamp     = 1637-09-20 20:13:38,\n  @data          = \"Genesis\",\n  @previous_hash = \"0000000000000000000000000000000000000000000000000000000000000000\",\n  @nonce         = 242,\n  @hash          = \"00b8e77e27378f9aa0afbcea3a2882bb62f6663771dee053364beb1887e18bcf\"\u003e,\n #\u003cBlock:0x1e56e20\n  @timestamp     = 1637-09-20 20:23:38,\n  @data          = \"Transaction Data...\",\n  @previous_hash = \"00b8e77e27378f9aa0afbcea3a2882bb62f6663771dee053364beb1887e18bcf\",\n  @nonce         = 46,\n  @hash          = \"00aae8d2e9387e13c71b33f8cd205d336ac250d2828011f5970062912985a9af\"\u003e,\n #\u003cBlock:0x1e2bd58\n  @timestamp     = 1637-09-20 20:33:38,\n  @data          = \"Transaction Data......\",\n  @previous_hash = \"00aae8d2e9387e13c71b33f8cd205d336ac250d2828011f5970062912985a9af\",\n  @nonce         = 350,\n  @hash          = \"00ea45e0f4683c3bec4364f349ee2b6816be0c9fd95cfd5ffcc6ed572c62f190\"\u003e,\n #\u003cBlock:0x1fa8338\n  @timestamp     = 1637-09-20 20:43:38,\n  @data          = \"More Transaction Data...\",\n  @previous_hash = \"00ea45e0f4683c3bec4364f349ee2b6816be0c9fd95cfd5ffcc6ed572c62f190\",\n  @nonce         = 59,\n  @hash          = \"00436f0fca677652963e904ce4c624606a255946b921132d5b1f70f7d86c4ab8\"\u003e]\n```\n\nSee the difference? All hashes now start with leading zeros (`00`) and the nonce is the random \"lucky number\"\nthat makes it happen. That's the magic behind the proof of work.\n\n\n##### Blockchain from Scratch - JavaScript Version\n\n```js\nclass Block {\n\n  constructor(data, previousHash) {\n    this.timestamp    = new Date()\n    this.data         = data\n    this.previousHash = previousHash\n    this.hash         = this.calcHash()\n  }\n\n  calcHash() {\n    var sha = SHA256.create()\n    sha.update( this.timestamp.toString() + this.previousHash + this.data )\n    return sha.hex()\n  }\n\n  static first( data=\"Genesis\" ) {    // create genesis (big bang! first) block\n    // uses all-zero previousHash\n    return new Block( data, \"0000000000000000000000000000000000000000000000000000000000000000\" )\n  }\n\n  static next( previous, data=\"Transaction Data...\" ) {\n    return new Block( data, previous.hash )\n  }\n}\n\n\n//////\n// let's get started\n//   build a blockchain a block at a time\n\nb0 = Block.first( \"Genesis\" )\nb1 = Block.next( b0, \"Transaction Data...\" )\nb2 = Block.next( b1, \"Transaction Data......\" )\nb3 = Block.next( b2, \"More Transaction Data...\" )\n\n\nblockchain = [b0, b1, b2, b3]\n\nconsole.log( blockchain )\n```\n\n(Source: [`blockchain.js`](blockchain.js/blockchain.js))\n\nwill log something like:\n\n```\n[ Block {\n     timestamp    : 1637-09-18 08:25:54,\n     data         : 'Genesis',\n     previousHash : '0000000000000000000000000000000000000000000000000000000000000000',\n     hash         : 'c396de4c03ddb5275661982adc75ce5fc5905d2a2457d1266c74436c1f3c50f1' },\n   Block {\n     timestamp    : 1637-09-18 08:35:54,\n     data         : 'Transaction Data...',\n     previousHash : 'c396de4c03ddb5275661982adc75ce5fc5905d2a2457d1266c74436c1f3c50f1',\n     hash         : '493131e09c069645c82795c96e4715cea0f5558be514b5096d853a5b9899154a' },\n   Block {\n     timestamp    : 1637-09-18 08:45:54,\n     data         : 'Transaction Data......',\n     previousHash : '493131e09c069645c82795c96e4715cea0f5558be514b5096d853a5b9899154a',\n     hash         : '97aa3cb5052615d60ff8e6b41bef606562588c4874f011970ac2f218e2f0f4a8' },\n   Block {\n     timestamp    : 1637-09-18 08:55:54,\n     data         : 'More Transaction Data...',\n     previousHash : '97aa3cb5052615d60ff8e6b41bef606562588c4874f011970ac2f218e2f0f4a8',\n     hash         : 'e10e020f832e46c2b60e1c3c0412bd370b2fde5f0f782c16eb87d0313ea0d3a3' } ]\n```\n\n\n\n## Blockchain Articles\n\n[**Reflections on the Blockchain**](http://rufuspollock.com/2016/07/02/reflections-on-the-blockchain) by Rufus Pollock (Open Knowledge Foundation), July 2016 --\n_The DAO: Code is not Law – and It’s Dangerous to Think So ++\nThe Internet changed the world - surely the Blockchain will too? ++\nGold-rush or Internet-rush? ++\nGovernance Matters in Bitcoin ++\nThe Myth of a Costless, Ownerless Network ++\nLessons from History_\n\n[**On the Dangers of a Blockchain Monoculture**](https://tonyarcieri.com/on-the-dangers-of-a-blockchain-monoculture) by Tony Arcieri, January 2016 --\n_The Bitcoin blockchain: the world's worst database ++\nNext-generation protocols ++\nDecentralized ledger protocols ++\nBitcoin-NG ++\nBlockchain! Blockchain! Blockchain! ++\nThe great decentralized database in the sky_\n\n\n[**I Don’t Believe in Blockchain**](https://www.tbray.org/ongoing/When/201x/2017/05/13/Not-Believing-in-Blockchain) by Tim Bray, May 2017\n\n\n[**Minimum Viable Blockchain**](https://www.igvita.com/2014/05/05/minimum-viable-block-chain/) by Ilya Grigorik, May 2014 --\n_Securing transactions with triple-entry bookkeeping ++\nSecuring transactions with PKI ++\nBalance = Σ(receipts) ++\nMulti-party transfers \u0026 verification ++\nDouble-spending and distributed consensus -\n Requirements for a distributed consensus network;\n Protecting the network from Sybil attacks;\nProof-of-work as a participation requirement ++\nBuilding the minimum viable blockchain -\n Adding \"blocks\" \u0026 transaction fee incentives;\n Racing to claim the transaction fees;\n Resolving chain conflicts;\n Blocks are never final ++\nProperties of the (minimum viable) blockchain_\n\n[**Blockchains by analogies and applications: How blockchain compares to Git, Raft, and other technologies.**](https://www.oreilly.com/ideas/blockchains-by-analogies-and-applications)\nby Kieren James-Lubin, January 2016 --\n_Blockchains are databases ++\nUnderstanding transactions ++\nPersistent, replicated databases (related technology: Git) ++\nPeer-to-peer networks (related technology: BitTorrent) ++\nDistributed consensus (related technology: distributed databases, Raft) ++\nMinting new coins (mining) ++\nEmbedded identities (related technology: TLS) ++\nSmart contracts: Like SQL expressions \u0026 triggers ++\nWhat can we really do with blockchains?_\n\n\n\n## Blockchain Books\n\n[**Attack of the 50 Foot Blockchain: Bitcoin, Blockchain, Ethereum \u0026 Smart Contracts**](https://davidgerard.co.uk/blockchain/table-of-contents/) by David Gerard, London, 2017 --\n_What is a bitcoin? ++\nThe Bitcoin ideology ++\nThe incredible promises of Bitcoin! ++\nEarly Bitcoin: the rise to the first bubble ++\nHow Bitcoin mining centralised ++\nWho is Satoshi Nakamoto? ++\nSpending bitcoins in 2017 ++\nTrading bitcoins in 2017: the second crypto bubble ++\nAltcoins ++\nSmart contracts, stupid humans ++\nBusiness bafflegab, but on the Blockchain ++\nCase study: Why you can’t put the music industry on a blockchain_\n\n\n[**Mastering Bitcoin - Programming the Open Blockchain**](https://github.com/bitcoinbook/bitcoinbook/blob/second_edition/ch09.asciidoc) 2nd Edition,\nby Andreas M. Antonopoulos, 2017 - FREE (Online Source Version) --\n_What Is Bitcoin? ++\nHow Bitcoin Works ++\nBitcoin Core: The Reference Implementation ++\nKeys, Addresses ++\nWallets ++\nTransactions ++\nAdvanced Transactions and Scripting ++\nThe Bitcoin Network ++\nThe Blockchain ++\nMining and Consensus ++\nBitcoin Security ++\nBlockchain Applications_\n\n---\n\n![](i/trolly-ponzi.png)\n\n**BEWARE: Bitcoin is a gigantic ponzi scheme¹.\nTo the moon!? The new gold standard!?\nDo NOT \"invest\" trying to get-rich-quick HODLing.\nWhy not? The bitcoin code is archaic and out-of-date.\nBurn, baby, burn! Proof-of-work / waste is a global\nenergy environmental disaster\nusing 300 kW/h per bitcoin transaction (!) that's about 179 kilograms of CO₂ emissions².\nProgrammable money (or the internet of value)\nfor all future generations with (bitcoin) script\nwithout loops and jumps (gotos) and all \"stateless\"!? LOL.**\n\n¹: (Source: [Best of Bitcoin Maximalist - Scammers, Morons, Clowns, Shills \u0026 BagHODLers - Inside The New New Crypto Ponzi Economics](https://bitsblocks.github.io/bitcoin-maximalist))\n\n²: Assuming let's say 0.596 kilograms of CO₂ per kW/h\n(that's the energy efficiency in Germany) that's\nabout 179 kilograms of CO₂ per bitcoin transaction (300 kW/h × 0.596 kg). For more insights see the [Bitcoin Energy Consumption Index](https://digiconomist.net/bitcoin-energy-consumption).\n\n---\n\n\n[**Programming Bitcoin from Scratch**](https://github.com/jimmysong/programmingbitcoin) by Jimmy Song, 2019 - FREE (Online Source Version) -- _[Chapter 6 - Script](https://github.com/jimmysong/programmingbitcoin/blob/master/ch06.asciidoc) - How Script Works • Example Operations • Parsing the Script Fields • Combining the Script Fields • Standard Scripts • p2pk • Problems with p2pk • Solving the Problems with p2pkh • Scripts Can Be Arbitrarily Constructed • Conclusion ++_\n_[Chapter 8 - Pay-to-Script Hash](https://github.com/jimmysong/programmingbitcoin/blob/master/ch08.asciidoc) - Bare Multisig • Coding OP_CHECKMULTISIG • Problems with Bare Multisig • Pay-to-Script-Hash (p2sh) • Coding p2sh • Conclusion ++_\n_[Chapter 13 - Segregated Witness](https://github.com/jimmysong/programmingbitcoin/blob/master/ch13.asciidoc) - Pay-to-Witness-Pubkey-Hash (p2wpkh) • p2wpkh Transactions • p2sh-p2wpkh • Coding p2wpkh and p2sh-p2wpkh • Pay-to-Witness-Script-Hash (p2wsh) • p2sh-p2wsh • Coding p2wsh and p2sh-p2wsh • Other Improvements • Conclusion_\n\n\n[**Programming Bitcoin Script Transaction (Crypto) Contracts Step-by-Step ( Beta / Rough Draft )**](https://github.com/openblockchains/programming-bitcoin-script)\nby Gerald Bauer et al, 2019 - FREE (Online Version) --\n_Let's start with building your own bitcoin stack machine from zero / scratch and let's run your own bitcoin ops (operations)..._\n\n\n[**Programming Blockchains in Ruby from Scratch Step-by-Step Starting w/ Crypto Hashes... ( Beta / Rough Draft )**](https://github.com/yukimotopress/programming-blockchains-step-by-step)\nby Gerald Bauer et al, 2018 - FREE (Online Version) --\n_(Crypto) Hash ++\n(Crypto) Block ++\n(Crypto) Block with Proof-of-Work ++\nBlockchain! Blockchain! Blockchain! ++\nBlockchain Broken? ++\nTimestamping ++\nMining, Mining, Mining - What's Your Hash Rate? ++\nBitcoin, Bitcoin, Bitcoin ++\n(Crypto) Block with Transactions (Tx)_\n\n[**Mastering Ethereum - Building Contract Services and Decentralized Apps on the Blockchain**](https://github.com/ethereumbook/ethereumbook) -\nby Andreas M. Antonopoulos, Gavin Wood, 2018 - FREE (Online Source Version)\n_What is Ethereum ++\nIntroduction ++\nEthereum Clients ++\nEthereum Testnets ++\nKeys and Addresses ++\nWallets\t++\nTransactions ++\nContract Services ++\nTokens ++\nOracles ++\nAccounting \u0026 Gas ++\nEVM (Ethereum Virtual Machine) ++\nConsensus ++\nDevP2P (Peer-To-Peer) Protocol ++\nDev Tools and Frameworks ++\nDecentralized Apps ++\nEthereum Standards (EIPs/ERCs)_\n\n\n[**Building Decentralized Apps on the Ethereum Blockchain**](https://www.manning.com/books/building-ethereum-dapps) by Roberto Infante, 2018 - FREE chapter 1 --\n_Understanding decentralized applications ++\nThe Ethereum blockchain ++\nBuilding contract services in (JavaScript-like) Solidity ++\nRunning contract services on the Ethereum blockchain ++\nDeveloping Ethereum Decentralized apps with Truffle ++\nBest design and security practice_\n\n[**Programming Crypto Blockchain Contracts Step-by-Step Book / Guide ( Beta / Rough Draft )**](https://github.com/openblockchains/programming-cryptocontracts) by Gerald Bauer et al, 2019 - FREE (Online Version) --\n_Let's Start with Ponzi \u0026 Pyramid Schemes. Run Your Own Lotteries, Gambling Casinos and more on the Blockchain World Computer..._\n\n\n[**Programming Cryptocurrencies and Blockchains in Ruby ( Beta / Rough Draft )**](http://yukimotopress.github.io/blockchains)\nby Gerald Bauer et al, 2018 - FREE (Online Version) @ Yuki \u0026 Moto Press Bookshelf --\n_Digital $$$ Alchemy - What's a Blockchain? -\nHow-To Turn Digital Bits Into $$$ or €€€? •\nDecentralize Payments. Decentralize Transactions. Decentralize Blockchains. •\nThe Proof of the Pudding is ... The Bitcoin (BTC) Blockchain(s)\n++\nBuilding Blockchains from Scratch -\nA Blockchain in Ruby in 20 Lines! A Blockchain is a Data Structure  •\nWhat about Proof-of-Work? What about Consensus?   •\nFind the Lucky Number - Nonce == Number Used Once\n++\nAdding Transactions -\nThe World's Worst Database - Bitcoin Blockchain Mining  •\nTulips on the Blockchain! Adding Transactions\n++\nBlockchain Lite -\nBasic Blocks  •\nProof-of-Work Blocks  •\nTransactions\n++\nMerkle Tree -\nBuild Your Own Crypto Hash Trees; Grow Your Own Money on Trees  •\nWhat's a Merkle Tree?   •\nTransactions\n++\nCentral Bank -\nRun Your Own Federated Central Bank Nodes on the Blockchain Peer-to-Peer over HTTP  •\nInside Mining - Printing Cryptos, Cryptos, Cryptos on the Blockchain\n++\nAwesome Crypto\n++\nCase Studies - Dutch Gulden  • Shilling  • CryptoKitties (and CryptoCopycats)_\n\n\n\n[**Blockchain for Dummies, IBM Limited Edition**](https://www.ibm.com/blockchain/what-is-blockchain.html) by Manav Gupta, 2017 - FREE (Digital Download w/ Email) --\n_Grasping Blockchain Fundamentals ++\nTaking a Look at How Blockchain Works ++\nPropelling Business with Blockchains ++\nBlockchain in Action: Use Cases ++\nHyperledger, a Linux Foundation Project ++\nTen Steps to Your First Blockchain application_\n\n\n[**Get Rich Quick \"Business Blockchain\" Bible - The Secrets of Free Easy Money**](https://github.com/bitsblocks/get-rich-quick-bible), 2018 - FREE --\n_Step 1: Sell hot air. How? ++\nStep 2: Pump up your tokens. How? ++\nStep 3: Revolutionize the World. How?_\n\n\n[**Best of Bitcoin Maximalist - Scammers, Morons, Clowns, Shills \u0026 BagHODLers - Inside The New New Crypto Ponzi Economics**](https://github.com/bitsblocks/bitcoin-maximalist) by Trolly McTrollface, et al, 2018 - FREE\n\n[**Crypto Facts - Decentralize Payments - Efficient, Low Cost, Fair, Clean - True or False?**](https://github.com/bitsblocks/crypto-facts) by Nouriel Roubini, David Gerard, et al, 2018 - FREE\n\n[**Crypto is the Mother of All Scams and (Now Busted) Bubbles - While Blockchain Is The Most Over-Hyped Technology Ever, No Better than a Spreadsheet/Database**](https://github.com/bitsblocks/crypto-bubbles) by Nouriel Roubini, 2018 - FREE\n\n[**IslandCoin White Paper - A Pen and Paper Cash System - How to Run a Blockchain on a Deserted Island**](https://github.com/bitsblocks/islandcoin-whitepaper)\nby Tal Kol --\n_Motivation ++\nConsensus ++\nTransaction and Block Specification -\nTransaction format •\nBlock format •\nGenesis block ++\nReferences_\n\n\n\n\n## Blockchain (Lite) Crypto Hash Libraries\n\n[Ruby](#ruby) •\n[JavaScript](#javascript)\n\n\n### Ruby\n\n**blockchain.lite** (github: [openblockchains/blockchain.lite.rb](https://github.com/openblockchains/blockchain.lite.rb),\ngem: [blockchain-lite](https://rubygems.org/gems/blockchain-lite)) -\nbuild your own blockchain with crypto hashes -\nrevolutionize the world with blockchains, blockchains, blockchains one block at a time\n\n```ruby\nrequire 'blockchain-lite'\n\nb0 = Block.first( \"Genesis\" )\nb1 = Block.next( b0, \"Transaction Data...\" )\nb2 = Block.next( b1, \"Transaction Data......\" )\nb3 = Block.next( b2, \"More Transaction Data...\" )\n\nblockchain = [b0, b1, b2, b3]\n\npp blockchain\n```\n\nwill pretty print (pp) something like:\n\n```\n[#\u003cBlock:0x1eed2a0\n  @timestamp     = 1637-09-15 20:52:38,\n  @data          = \"Genesis\",\n  @previous_hash = \"0000000000000000000000000000000000000000000000000000000000000000\",\n  @hash          = \"edbd4e11e69bc399a9ccd8faaea44fb27410fe8e3023bb9462450a0a9c4caa1b\"\u003e,\n #\u003cBlock:0x1eec9a0\n  @timestamp     = 1637-09-15 21:02:38,\n  @data          = \"Transaction Data...\",\n  @hash          = \"eb8ecbf6d5870763ae246e37539d82e37052cb32f88bb8c59971f9978e437743\",\n  @previous_hash = \"edbd4e11e69bc399a9ccd8faaea44fb27410fe8e3023bb9462450a0a9c4caa1b\"\u003e,\n  ...\n```\n\n\n### JavaScript\n\n**blockchain.lite** (github: [openblockchains/blockchain.lite.js](https://github.com/openblockchains/blockchain.lite.js),\nnpm: [blockchain-lite](https://www.npmjs.com/package/blockchain-lite)) -\nbuild your own blockchain with crypto hashes -\nrevolutionize the world with blockchains, blockchains, blockchains one block at a time\n\n```js\nconst Blocks = require( \"blockchain-lite\" )\n\n// use basic block\nlet Block = Blocks.basic\n\nlet b0 = Block.first( 'Genesis' )\nlet b1 = Block.next( b0, 'Transaction Data...' )\nlet b2 = Block.next( b1, 'Transaction Data......' )\nlet b3 = Block.next( b2, 'More Transaction Data...' )\n\nlet blockchain = [b0, b1, b2, b3]\n\nconsole.log( blockchain )\n```\n\nwill log something like:\n\n```\n[ Block {\n    timestamp:     2017-09-25 17:03:38,\n    data:         'Genesis',\n    previousHash: '0000000000000000000000000000000000000000000000000000000000000000',\n    hash:         '08f4fa71628c5bc6b430228738bc8c41afaf508ece0b1cf9c9cac53d02e11829' },\n  Block {\n    timestamp:     2017-09-25 17:13:38,\n    data:         'Transaction Data...',\n    previousHash: '08f4fa71628c5bc6b430228738bc8c41afaf508ece0b1cf9c9cac53d02e11829',\n    hash:         '740a4aeb3441484c96d1e7f63d31b716220ccee3b6fe94547cae2afbb6010626' },\n  Block {\n    timestamp:     2017-09-25 17:23:38,\n    data:         'Transaction Data......',\n    previousHash: '740a4aeb3441484c96d1e7f63d31b716220ccee3b6fe94547cae2afbb6010626',\n    hash:         '28b6892a069e2ff7f1c3128ab495d7cd9b9b1636a51a7f69db93a14b1ee6b1a7' },\n  Block {\n    timestamp:     2017-09-25 17:33:38,\n    data:         'More Transaction Data...',\n    previousHash: '28b6892a069e2ff7f1c3128ab495d7cd9b9b1636a51a7f69db93a14b1ee6b1a7',\n    hash:         '4cc0329b2c0cb32e0451fa3179bd944d4cd0fcf410939172f979e9fd2aa9f5f3' } ]\n```\n\n\n## Git, Git, Git - The Stupid Content Tracker with Crypto Hashes\n\n_Everything is local. Distributed is the new centralized._\n\n![](i/xkcd1597.png)\n\n\n### Quotes - Blockchains and Git\n\n\u003e Yep, that's the joke. Nobody has been able to explain to me how the \"blockchain\" buzzword is significantly different to \"git repo\".\n\u003e -- [Yaakov](https://twitter.com/yaakov_h/status/902659507255312384)\n\u003e\n\u003e But if you said \"let's build a currency where all transactions are stored in a git repo\"\n\u003e you wouldn't be taken seriously for even 24 hrs.\n\u003e -- [Yaakov](https://twitter.com/yaakov_h/status/902659847224664064)\n\n\u003e Soon explaining git like \"a git repo is like a blockchain with commits instead of blocks\".\n\u003e -- [Nicolás Berger](https://twitter.com/nicoberger/status/901776907418697729)\n\u003e\n\u003e \"A local branch is like a state channel. It can be pushed and merged into the master blockchain at any moment.\"\n\u003e -- [Nicolás Berger](https://twitter.com/nicoberger/status/901777571456614400)\n\n\u003e The #Blockchain has changed the world. Here I make the argument that the #Blockchain is just like #git.\n\u003e -- [Jackson Kelley](https://twitter.com/sjkelleyjr/status/901464041163341824)\n\n\u003e `git merge [-m REF] [-g BLOB] --push`\n\u003e  Merge and push all signed commits to the blockchain.\n\u003e -- [Git Commands](https://twitter.com/git_commands/status/935574015015612416)\n\n\n### Books\n\n[**Learn Enough Git to Be Dangerous**](https://learnenough.com/git-tutorial) by Michael Hartl - FREE (Online Version) --\n_Getting started ++\nBacking up and sharing ++\nIntermediate workflow ++\nCollaborating ++\nConclusion ++\nAdvanced setup_\n\n\n[**Pro Git**](https://git-scm.com/book) by Scott Chacon and Ben Straub, 2nd Edition, 2014 - FREE (Online Version) --\n_Getting Started ++\nGit Basics ++\nGit Branching ++\nGit on the Server ++\nDistributed Git ++\nGitHub ++\nGit Tools ++\nCustomizing Git ++\nGit and Other Systems ++\nGit Internals ++\nA1: Git in Other Environments ++\nA2: Embedding Git in your Applications ++\nA3: Git Commands_\n\n\n\u003e Git gets easier once you get the basic idea that branches are homeomorphic endofunctors\n\u003e mapping submanifolds of a Hilbert space.\n\u003e -- Anonymous\n\n\n### Open Distributed Databases on Git\n\n[**football.db**](https://github.com/openfootball) - open public domain football datasets (incl. clubs, national teams, leagues, match schedules, etc.)\n\n[**world.db**](https://github.com/openmundi) - open public domain world (country) datasets\n\n[**beer.db**](https://github.com/openbeer) - open public domain beer \u0026 brewery datasets\n\n\u003e Add a beer transaction to the #blockchain on #git and win a free Wiener Lager beer! Cheers. Prost.\n\u003e -- [Gerald Bauer @ Austria Codes](https://twitter.com/austriacodes/status/907240018435088384)\n\n\n\n### Open Distributed (Hyper) Ledger Books on Git\n\n[**Shilling (or Schilling)**](https://github.com/bitshilling/bitshilling) - Shilling on the Blockchain! - Rock-Solid Alpine Dollar from Austria\n\n[**Tulips**](TULIPS.md) - Tulips on the Blockchain! - Learn by Example from the Real World (Anno 1637) - Buy! Sell! Hold! Enjoy the Beauty of Admiral of Admirals, Semper Augustus, and More\n\n\n\n## Classic Tulip Mania\n\n_A period in the Dutch Golden Age during which contract prices for bulbs of the recently introduced tulip reached extraordinarily high levels and then dramatically collapsed in February 1637._\n\n![](i/tulipmania-ii.png)\n\n\n### Quotes - Blockchains are the next Internets / Tulips\n\n\u003e People who compare digital tokens to tulips are essentially saying digital tokens are a bubble backed\n\u003e by nothing but pure hype and speculation.\n\u003e\n\u003e What they fail to understand is that tulips come from dirt, not a blockchain.\n\u003e\n\u003e And as we all know, blockchain is possibly the best technological innovation since the internet.\n\u003e It will have a tremendous impact on global business and society in general.\n\u003e -- [TulipToken](http://tuliptoken.com)\n\n\n### Books\n\n**Tulipomania: The Story of the World's Most Coveted Flower \u0026 the Extraordinary Passions It Aroused** by Mike Dash, 2001 --\n_A Mania for Tulips ++\nThe Valley of Tien Shan ++\nWithin the Abode of Bliss ++\nStranger from the East ++\nClusius ++\nLeiden ++\nAn Adornment to the Cleavage ++\nThe Tulip in the Mirror ++\nFlorists ++\nBoom ++\nAt the Sign of the Golden Grape ++\nThe Orphans of Wouter Winkel ++\nBust ++\nGoddess of Whores ++\nAt the Court of the Tulip King ++\nLate Flowering_\n\n**Tulipmania: Money, Honor, and Knowledge in the Dutch Golden Age** by Anne Goldgar, 2007  --\n_Something Strange ++\nArt \u0026 Flowers ++\nBloemisten ++\nGrieving Money ++\nBad Faith ++\nCabbage Fever ++\nGlossary ++\nA Note on Money_\n\n![](i/tulipmania.png)\n\n\n## Breaking News: CryptoKitties (Yes, Cute Little Cartoon Cats) on the Blockchain!\n\nCollectible. Breedable. Adorable.\n\nCollect and breed digital cats. Start meow. Buy! Sell! Hold!\n\nLearn more @ [cryptokitties.co](https://cryptokitties.co)\n\n\n![](i/cryptokitties-top10-sales.png)\n\n\n\u003c!-- note: changed pic; was:\n   ![](i/cryptokitties.png)\n  --\u003e\n\nLatest (and Greatest) Investment Opportunity!\n\n\u003e Blockchain has unlocked the magic of digital scarcity, and combining that with the power of\n\u003e making the digital goods persistent gives them a potential value that is only limited by how much\n\u003e prestige a wealthy person might place on ownership of the item.\n\u003e\n\u003e -- [Justin Poirier](https://twitter.com/tokenizedcap/status/938460753589424128)‏\n\n\u003e All I want for Christmas is a CryptoKitty.\n\u003e\n\u003e -- [Kayla Williams](https://twitter.com/kaylaw/status/938590748655550464)\n\n\u003e I got a fever. And the only prescription is more CryptoKitties.\n\u003e\n\u003e -- [Eduardo Salazar](https://twitter.com/ceduardosalazar/status/938558630663634944)\n\n\u003e My Gen 7 CryptoKitty #104375. The Future is Meow.\n\u003e\n\u003e -- [Anshul Dhawan](https://twitter.com/TheAnshulDhawan/status/938551642202324993)\n\n\n![](i/cryptokitties-genes01.png)\n\n\u003e - Fabulous Persian Spock Gerbil Gold Cottoncandy - Extremely rare gen 5 swift virgin | 2.9 ETH\n\u003e - Rarity: 0.00264% Gen 5 JAGUAR FABULOUS GOLD DALI!! VIRGIN!\n\u003e - Rarity: 0.0015% Princess Bubblegum is now for sale! Gen 12 | Brisk | Virgin | Chartreux | Bubblegum | Otaku | Emeraldgreen | Saycheese | Mauveover | Spock - Starts ETH 20/Ends ETH 10\n\u003e - Gold ducat, Gen 5, Virgin, Swift. Very cheap\n\u003e - Cheap Gen 1 cute kittie with rare genes! Only 0.125 ETH\n\u003e - UNIQUE Virgin Peach Googly Gold Mauveover gen:2 cooldown:1 0.87992% RARE\n\u003e - SUPER CHEAP: Gerbil, Ragdoll, Scarlet, Chestnut, Cotton Candy!!! 0.02 ETH (~$14)\n\u003e - I'm giving away a Gen 1 FAST Gold for free...\n\u003e\n\u003e -- [CrypoKittiesMarket](https://www.reddit.com/r/CryptoKittiesMarket)\n\n### Awesome CryptoKitties (and CryptoCopycats)\n\n![](i/cryptokitties-modernart-paintings.png)\n\nA collection about Awesome CryptoKitties (Yes, Cute Little Cartoon Cats) on the Blockchain! and CryptoCopycats - digital collectibles secured on a distributed public databases w/ crypto hashes. Are CryptoPuppies the new CryptoKitties? Learn by Example from the Real World (Anno 2017) - Buy! Sell! Hodl!\n\nMore @ [cryptocopycats/awesome-cryptokitties](https://github.com/cryptocopycats/awesome-cryptokitties)\n\n![](i/cryptokitties-modernart-paintings-iii.png)\n\n\n\n## Events, Meetups, Orgs\n\n_Revolutionize the world one country at a time. Blockchainers of the world, unite!_\n\n- [**Blockchain Austria • Blockkette Österreich**](https://github.com/austriacodes/blockchain-austria) -- distributed centralized page for blockchain meetups \u0026 orgs in Austria (Central Europe)\n\n\n\n## Awesome Awesomeness\n\n_A curated list of awesome lists._\n\n- [**Blockchain Stuff**](https://github.com/Xel/Blockchain-stuff) -- a curated list of blockchain and general cryptocurrency resources\n- [**Blockchain Roadmap**](https://roadmap.sh/blockchain) -- a step-by-step roadmap / guide to become a blockchain programmer\n- [**Awesome Blockchain**](https://github.com/igorbarinov/awesome-blockchain) by Igor Barinov et al -- a curated list of the bitcoin blockchain services\n- [**Awesome Blockchain**](https://github.com/imbaniac/awesome-blockchain) by Tim Reznich et al -- a curated list of blockchain services and exchanges\n- [**Awesome Blockchain**](https://github.com/istinspring/awesome-blockchain) by `istinspring` et al -- a curated list of awesome projects and services based on blockchain technology\n- [**Awesome Coins**](https://github.com/kennethreitz/awesome-coins) by Kenneth Reitz et al -- a guide to crypto-currencies and their algos\n- [**Awesome CryptoKitties (and CryptoCopycats)**](https://github.com/openblockchains/awesome-cryptokitties) by Gerald Bauer et al -- a curated list about the awesome crypto kitties and copycats\n- [**Awesome Git**](https://github.com/dictcp/awesome-git) by Dick Tang et al -- a curated list of amazingly awesome Git tools, resources and shiny things\n- [**Awesome**](https://github.com/sindresorhus/awesome) by Sindre Sorhus et al -- a curated list of awesome lists\n\n\n\n## Meta\n\n**License**\n\n![](https://publicdomainworks.github.io/buttons/zero88x31.png)\n\nThe awesome list is dedicated to the public domain. Use it as you please with no restrictions whatsoever.\n","funding_links":[],"categories":["Uncategorized","Ruby","Technical","To Sort","GitHub Repositories","Acknowledgement: Awesome Awesomeness","Ruby (88)","Other Lists","Awesome Awesomeness","Awesome of awesome blockchain related stuff"],"sub_categories":["Uncategorized","awesome-*","TeX Lists","News \u0026 Updates"],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fopenblockchains%2Fawesome-blockchains","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fopenblockchains%2Fawesome-blockchains","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fopenblockchains%2Fawesome-blockchains/lists"}