1075 lines
96 KiB
Plaintext
1075 lines
96 KiB
Plaintext
|
||
[38;5;12mMining 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)[39m
|
||
|
||
[48;5;235m[38;5;249mb0 = Block.first([49m[39m[48;5;235m[38;5;249m [49m[39m
|
||
[48;5;235m[38;5;249m { from: "Dutchgrown", to: "Vincent", what: "Tulip Bloemendaal Sunset", qty: 10 },[49m[39m[48;5;235m[38;5;249m [49m[39m
|
||
[48;5;235m[38;5;249m { from: "Keukenhof", to: "Anne", what: "Tulip Semper Augustus", qty: 7 } )[49m[39m
|
||
[48;5;235m[38;5;249m[49m[39m[48;5;235m[38;5;249m [49m[39m
|
||
[48;5;235m[38;5;249mb1 = Block.next( b0,[49m[39m[48;5;235m[38;5;249m [49m[39m
|
||
[48;5;235m[38;5;249m { from: "Flowers", to: "Ruben", what: "Tulip Admiral van Eijck", qty: 5 },[49m[39m[48;5;235m[38;5;249m [49m[39m
|
||
[48;5;235m[38;5;249m { from: "Vicent", to: "Anne", what: "Tulip Bloemendaal Sunset", qty: 3 },[49m[39m[48;5;235m[38;5;249m [49m[39m
|
||
[48;5;235m[38;5;249m { from: "Anne", to: "Julia", what: "Tulip Semper Augustus", qty: 1 },[49m[39m[48;5;235m[38;5;249m [49m[39m
|
||
[48;5;235m[38;5;249m { from: "Julia", to: "Luuk", what: "Tulip Semper Augustus", qty: 1 } )[49m[39m
|
||
[48;5;235m[38;5;249m...[49m[39m[48;5;235m[38;5;249m [49m[39m
|
||
|
||
[38;5;12m(Source: [39m[48;5;235m[38;5;249m[1mblockchain_with_transactions.rb[0m[38;5;12m (blockchain.rb/blockchain_with_transactions.rb))[39m
|
||
|
||
|
||
[38;5;12m [39m[38;2;255;187;0m[1m[4mAwesome Blockchains[0m
|
||
|
||
[38;5;12mA collection about awesome blockchains - open distributed databases w/ crypto hashes incl. git ;-). Blockchains are the new tulips :tulip::tulip::tulip:.[39m
|
||
|
||
[38;5;12mContents:[39m
|
||
|
||
[38;5;12m- [39m[38;5;14m[1mFrequently Asked Questions (F.A.Q.s) & Answers[0m[38;5;12m (#frequently-asked-questions-faqs--answers)[39m
|
||
[38;5;12m- [39m[38;5;14m[1mDo-It-Yourself (DIY) - Build Your Own Blockchain[0m[38;5;12m (#do-it-yourself-diy---build-your-own-blockchain)[39m
|
||
[38;5;12m - [39m[38;5;14m[1mPython[0m[38;5;12m (#python) • [39m[38;5;14m[1mRuby[0m[38;5;12m (#ruby) • [39m[38;5;14m[1mJavaScript[0m[38;5;12m (#javascript) • [39m[38;5;14m[1mJava[0m[38;5;12m (#java) • [39m[38;5;14m[1mGo[0m[38;5;12m (#go)[39m
|
||
[38;5;12m- [39m[38;5;14m[1mBlockchain Articles[0m[38;5;12m (#blockchain-articles)[39m
|
||
[38;5;12m- [39m[38;5;14m[1mBlockchain Books[0m[38;5;12m (#blockchain-books)[39m
|
||
[38;5;12m- [39m[38;5;14m[1mBlockchain (Lite) Crypto Hash Libraries[0m[38;5;12m (#blockchain-lite-crypto-hash-libraries)[39m
|
||
[38;5;12m- [39m[38;5;14m[1mGit, Git, Git - The Stupid Content Tracker with Crypto Hashes[0m[38;5;12m (#git-git-git---the-stupid-content-tracker-with-crypto-hashes)[39m
|
||
[38;5;12m- [39m[38;5;14m[1mClassic Tulip Mania[0m[38;5;12m (#classic-tulip-mania)[39m
|
||
[38;5;12m- [39m[38;5;14m[1mAwesome Awesomeness[0m[38;5;12m (#awesome-awesomeness)[39m
|
||
|
||
|
||
|
||
[38;2;255;187;0m[4mWhat's News?[0m
|
||
|
||
[38;5;12mFor blockchain books, see the new [39m[38;5;12mBest of Crypto Books page »[39m[38;5;12m (https://openblockchains.github.io/crypto-books/)[39m
|
||
|
||
[38;2;255;187;0m[4mThe Open Blockchains Book of the Year 2020 Award Goes To...[0m
|
||
|
||
[38;5;12m![39m[38;5;12m (i/libra-shrugged.png)[39m
|
||
[38;5;12mLibra Shrugged: How Facebook Tried to Take Over the Money[39m[38;5;12m (https://davidgerard.co.uk/blockchain/libra/)[39m
|
||
[38;5;12mby David Gerard, November 2020, 182 Pages --[39m
|
||
[38;5;12m_Introduction: Taking over the money ++[39m
|
||
[38;5;12mA user's guide to Libra ++[39m
|
||
[38;5;12mThe genesis of Libra: Beller's blockchain ++[39m
|
||
[38;5;12mTo launch a Libra: Let’s start a crypto ++[39m
|
||
[38;5;12mBitcoin: why Libra is like this ++[39m
|
||
[38;5;12mThe Libra White Papers ++[39m
|
||
[38;5;12mBanking the unbanked ++[39m
|
||
[38;5;12mThe Libra Reserve plan and economic stability ++[39m
|
||
[38;5;12mLibra, privacy and your digital identity ++[39m
|
||
[38;5;12mThe regulators recoil in horror ++[39m
|
||
[38;5;12mDavid Marcus before the US House and Senate ++[39m
|
||
[38;5;12mJuly to September 2019: Libra runs the gauntlet ++[39m
|
||
[38;5;12mOctober 2019: Libra's bad month ++[39m
|
||
[38;5;12mMark Zuckerberg before the US House ++[39m
|
||
[38;5;12mNovember 2019: The comedown ++[39m
|
||
[38;5;12mCentral bank digital currencies ++[39m
|
||
[38;5;12mEpilogue: Libra 2.0: not dead yet ++[39m
|
||
[38;5;12mAppendix: 2010–2013: The rise and fall of Facebook Credits_[39m
|
||
|
||
[38;5;12mFor more about Diem (formerly Libra), see the [39m[38;5;14m[1mAwesome Diem (formerly Libra) and Move page »[0m[38;5;12m (https://github.com/openblockchains/awesome-diem)[39m
|
||
|
||
[38;5;238m――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――[39m
|
||
|
||
[38;5;12mFor crypto quotes, see the new [39m[38;5;12m100+ Best of Crypto Quotes - I HODL, you HODL, we HODL! - BREAKING: BITCOIN JUST BROKE $22 000! page »[39m[38;5;12m (https://github.com/openblockchains/crypto-quotes)[39m
|
||
|
||
[38;2;255;187;0m[4mThe Best Crypto Quote "Oracle Saying" of the Year 2020 Award Goes To...[0m
|
||
|
||
[38;5;11m[1m▐[0m[38;5;12m [39m[38;5;12mSEC Investor Education:[39m
|
||
[38;5;11m[1m▐[0m[38;5;12m [39m[38;5;12m- Don't understand an investment?[39m
|
||
[38;5;11m[1m▐[0m[38;5;12m [39m[38;5;12m- Don't invest in it.[39m
|
||
|
||
[38;5;12mYes, but what if there's only 21 million of it?[39m
|
||
|
||
[38;5;12m \- Trolly McTrollface[39m
|
||
|
||
|
||
|
||
[38;2;255;187;0m[4mFrequently Asked Questions (F.A.Q.s) & Answers[0m
|
||
|
||
|
||
[38;5;14m[1mQ: What's a Blockchain?[0m
|
||
|
||
[38;5;12mA: A blockchain is a distributed database with a list (that is, chain) of records (that is, blocks) linked and secured by[39m
|
||
[38;5;12mdigital fingerprints (that is, cryptho hashes).[39m
|
||
[38;5;12mExample from [39m[48;5;235m[38;5;249m[1mblockchain.rb[0m[38;5;12m (blockchain.rb/blockchain.rb):[39m
|
||
|
||
[48;5;235m[38;5;249m**#<Block:0x1eed2a0[49m[39m[48;5;235m[38;5;249m [49m[39m
|
||
[48;5;235m[38;5;249m @timestamp = 1637-09-15 20:52:38,[49m[39m[48;5;235m[38;5;249m [49m[39m
|
||
[48;5;235m[38;5;249m @data = "Genesis",[49m[39m[48;5;235m[38;5;249m [49m[39m
|
||
[48;5;235m[38;5;249m @previous_hash = "0000000000000000000000000000000000000000000000000000000000000000",[49m[39m[48;5;235m[38;5;249m [49m[39m
|
||
[48;5;235m[38;5;249m @hash = "edbd4e11e69bc399a9ccd8faaea44fb27410fe8e3023bb9462450a0a9c4caa1b">,[49m[39m
|
||
[48;5;235m[38;5;249m #<Block:0x1eec9a0[49m[39m[48;5;235m[38;5;249m [49m[39m
|
||
[48;5;235m[38;5;249m @timestamp = 1637-09-15 21:02:38,[49m[39m[48;5;235m[38;5;249m [49m[39m
|
||
[48;5;235m[38;5;249m @data = "Transaction Data...",[49m[39m[48;5;235m[38;5;249m [49m[39m
|
||
[48;5;235m[38;5;249m @previous_hash = "edbd4e11e69bc399a9ccd8faaea44fb27410fe8e3023bb9462450a0a9c4caa1b",[49m[39m[48;5;235m[38;5;249m [49m[39m
|
||
[48;5;235m[38;5;249m @hash = "eb8ecbf6d5870763ae246e37539d82e37052cb32f88bb8c59971f9978e437743">,[49m[39m
|
||
[48;5;235m[38;5;249m #<Block:0x1eec838[49m[39m[48;5;235m[38;5;249m [49m[39m
|
||
[48;5;235m[38;5;249m @timestamp = 1637-09-15 21:12:38,[49m[39m[48;5;235m[38;5;249m [49m[39m
|
||
[48;5;235m[38;5;249m @data = "Transaction Data......",[49m[39m[48;5;235m[38;5;249m [49m[39m
|
||
[48;5;235m[38;5;249m @previous_hash = "eb8ecbf6d5870763ae246e37539d82e37052cb32f88bb8c59971f9978e437743",[49m[39m[48;5;235m[38;5;249m [49m[39m
|
||
[48;5;235m[38;5;249m @hash = "be50017ee4bbcb33844b3dc2b7c4e476d46569b5df5762d14ceba9355f0a85f4">,[49m[39m
|
||
[48;5;235m[38;5;249m ...[49m[39m[48;5;235m[38;5;249m [49m[39m
|
||
|
||
[38;5;12m![39m[38;5;12m (i/blockchain-jesus.png)[39m
|
||
|
||
|
||
[38;5;14m[1mQ: What's a Hash? What's a (One-Way) Crypto(graphic) Hash Digest Checksum[0m[38;5;12m?[39m
|
||
|
||
[38;5;12mA: A hash e.g. [39m[48;5;235m[38;5;249meb8ecbf6d5870763ae246e37539d82e37052cb32f88bb8c59971f9978e437743[49m[39m
|
||
[38;5;12mis a small digest checksum calculated[39m
|
||
[38;5;12mwith a one-way crypto(graphic) hash digest checksum function[39m
|
||
[38;5;12me.g. SHA256 (Secure Hash Algorithm 256 Bits)[39m
|
||
[38;5;12mfrom the data. Example from [39m[48;5;235m[38;5;249m[1mblockchain.rb[0m[38;5;12m (blockchain.rb/blockchain.rb):[39m
|
||
|
||
[48;5;235m[38;5;249mdef calc_hash[49m[39m[48;5;235m[38;5;249m [49m[39m
|
||
[48;5;235m[38;5;249m sha = Digest::SHA256.new[49m[39m[48;5;235m[38;5;249m [49m[39m
|
||
[48;5;235m[38;5;249m sha.update( @timestamp.to_s + @previous_hash + @data )[49m[39m[48;5;235m[38;5;249m [49m[39m
|
||
[48;5;235m[38;5;249m sha.hexdigest ## returns "eb8ecbf6d5870763ae246e37539d82e37052cb32f88bb8c59971f9978e437743"[49m[39m
|
||
[48;5;235m[38;5;249mend[49m[39m[48;5;235m[38;5;249m [49m[39m
|
||
|
||
[38;5;12mA blockchain uses[39m
|
||
|
||
[38;5;12m- the block timestamp (e.g. [39m[48;5;235m[38;5;249m1637-09-15 20:52:38[49m[39m[38;5;12m) and[39m
|
||
[38;5;12m- the hash from the previous block (e.g. [39m[48;5;235m[38;5;249medbd4e11e69bc399a9ccd8faaea44fb27410fe8e3023bb9462450a0a9c4caa1b[49m[39m[38;5;12m) and finally[39m
|
||
[38;5;12m- the block data (e.g. [39m[48;5;235m[38;5;249mTransaction Data...[49m[39m[38;5;12m)[39m
|
||
|
||
[38;5;12mto calculate the new hash digest checksum, that is, the hash[39m
|
||
[38;5;12me.g. [39m[48;5;235m[38;5;249mbe50017ee4bbcb33844b3dc2b7c4e476d46569b5df5762d14ceba9355f0a85f4[49m[39m[38;5;12m.[39m
|
||
|
||
|
||
[38;5;14m[1mQ: What's a Merkle Tree?[0m
|
||
|
||
[38;5;12mA: A Merkle tree is a hash tree named after Ralph Merkle who patented the concept in 1979[39m
|
||
[38;5;12m(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)[39m
|
||
[38;5;12mis labelled with the crypto(graphic) hash of the labels of its child nodes. For more see the [39m[38;5;14m[1mMerkle tree[0m[38;5;12m (https://en.wikipedia.org/wiki/Merkle_tree) Wikipedia Article.[39m
|
||
|
||
[38;5;12mNote: By adding crypto(graphic) hash functions you can "merkelize" any data structure.[39m
|
||
|
||
|
||
[38;5;14m[1mQ: What's a Merkelized DAG (Directed Acyclic Graph)?[0m
|
||
|
||
[38;5;12mA: It's a blockchain secured by crypto(graphic) hashes that uses a directed acyclic graph data structure (instead of linear "classic" linked list).[39m
|
||
|
||
[38;5;12mNote: Git uses merkelized dag (directed acyclic graph)s for its blockchains.[39m
|
||
|
||
|
||
[38;5;14m[1mQ: Is the Git Repo a Blockchain?[0m
|
||
|
||
[38;5;12mA: Yes, every branch in the git repo is a blockchain.[39m
|
||
[38;5;12mThe "classic" Satoshi-blockchain is like a git repo with a single master branch (only).[39m
|
||
|
||
|
||
|
||
[38;2;255;187;0m[4mDo-It-Yourself (DIY) - Build Your Own Blockchain[0m
|
||
|
||
[38;5;12m![39m[38;5;12m (i/fake-dilbert-blockchain.png)[39m
|
||
|
||
|
||
[38;5;14m[1mPython[0m[38;5;12m (#python) •[39m
|
||
[38;5;14m[1mRuby[0m[38;5;12m (#ruby) •[39m
|
||
[38;5;14m[1mJavaScript[0m[38;5;12m (#javascript) •[39m
|
||
[38;5;14m[1mJava[0m[38;5;12m (#java) •[39m
|
||
[38;5;14m[1mGo[0m[38;5;12m (#go)[39m
|
||
|
||
|
||
[38;2;255;187;0m[4mPython[0m
|
||
|
||
[38;5;14m[1mLet's Build the Tiniest Blockchain in Python Series[0m[38;5;12m by Gerald Nash[39m
|
||
|
||
[38;5;12m- [39m[38;5;12mLet's Build the Tiniest Blockchain In Less Than 50 Lines of Python (Part 1)[39m[38;5;12m (https://medium.com/crypto-currently/lets-build-the-tiniest-blockchain-e70965a248b), July 2016[39m
|
||
[38;5;12m- [39m[38;5;12mLet's Make the Tiniest Blockchain Bigger With More Lines of Python (Part 2)[39m[38;5;12m (https://medium.com/crypto-currently/lets-make-the-tiniest-blockchain-bigger-ac360a328f4d), July 2016[39m
|
||
|
||
|
||
|
||
[38;5;12mBuild Your Own Blockchain: A Python Tutorial[39m[38;5;12m (http://ecomunsing.com/build-your-own-blockchain)[39m
|
||
[38;5;12mby Eric Munsing, March 2017, [39m[38;5;14m[1m(Source)[0m[38;5;12m (https://github.com/emunsing/tutorials/blob/master/BuildYourOwnBlockchain.ipynb)[39m
|
||
|
||
|
||
[38;5;12mLearn Blockchains by Building One (in Python)[39m[38;5;12m (https://hackernoon.com/learn-blockchains-by-building-one-117428612f46)[39m
|
||
[38;5;12mby Daniel van Flymen, September 2017, [39m[38;5;14m[1m(Source)[0m[38;5;12m (https://github.com/dvf/blockchain) -- The fastest way to learn how Blockchains work is to build one[39m
|
||
|
||
|
||
[38;5;14m[1mBuild Your Own Blockchain (in Python 3) Series[0m[38;5;12m by Jack Schultz, [39m[38;5;14m[1m(Source)[0m[38;5;12m (https://github.com/jackschultz/jbc)[39m
|
||
|
||
[38;5;12m- [39m[38;5;12mPart 1: Creating, Storing, Syncing, Displaying, Mining, and Proving Work[39m[38;5;12m (https://bigishdata.com/2017/10/17/write-your-own-blockchain-part-1-creating-storing-syncing-displaying-mining-and-proving-work/), October 2017[39m
|
||
[38;5;12m- [39m[38;5;12mPart 2: Syncing Chains From Different Nodes[39m[38;5;12m (https://bigishdata.com/2017/10/27/build-your-own-blockchain-part-2-syncing-chains-from-different-nodes/), October 2017[39m
|
||
[38;5;12m- [39m[38;5;12mPart 3: Writing Nodes that Mine and Talk[39m[38;5;12m (https://bigishdata.com/2017/11/02/build-your-own-blockchain-part-3-writing-nodes-that-mine/), November 2017[39m
|
||
|
||
|
||
|
||
[38;5;12mA Practical Introduction to Blockchain with Python[39m[38;5;12m (http://adilmoujahid.com/posts/2018/03/intro-blockchain-bitcoin-python/)[39m
|
||
[38;5;12mby Adil Moujahid, March 2018, [39m[38;5;14m[1m(Source)[0m[38;5;12m (https://github.com/adilmoujahid/blockchain-python-tutorial)[39m
|
||
|
||
|
||
[38;2;255;187;0m[4mRuby[0m
|
||
|
||
[38;5;12mHow Does Bitcoin Force Consensus Among Byzantine Generals?[39m[38;5;12m (http://www.akitaonrails.com/2017/11/01/how-does-bitcoin-force-consensus-among-byzantine-generals) by Fabio Akita, November 2017[39m
|
||
|
||
[38;5;12mblockchain-lite - Build your own blockchains with crypto hashes; revolutionize the world with blockchains, blockchains, blockchains one block at a time![39m
|
||
[38;5;12m (https://planetruby.github.io/calendar/advent2017/01-blockchain-lite) by Gerald Bauer, Ruby Advent Calendar 2017 / Day 1, December 2017[39m
|
||
|
||
[38;5;12mmerkletree library - Build Your Own Crypto Hash Trees; Grow Your Own Money on Trees[39m[38;5;12m (https://planetruby.github.io/calendar/advent2017/19-merkletree.html) by Gerald Bauer, Ruby Advent Calendar 2017 / Day 19, December 2017[39m
|
||
|
||
[38;5;12mcentralbank 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[39m
|
||
[38;5;12m (https://planetruby.github.io/calendar/advent2017/24-centralbank.html) by Gerald Bauer, Ruby Advent Calendar 2017 / Day 24, December 2017[39m
|
||
|
||
[38;5;12mA guide to building a blockchain & cryptocurrency from scratch[39m[38;5;12m (https://antoinefink.com/building-a-blockchain-and-cryptocurrency-in-ruby) [39m[38;5;14m[1m(Source)[0m[38;5;12m (https://github.com/antoinefink/melon) by Antoine Fink, April 2021[39m
|
||
|
||
|
||
[38;2;255;187;0m[4mCrystal[0m
|
||
|
||
[38;5;12mWrite your own blockchain and Proof-of-Work (PoW) algorithm using Crystal[39m[38;5;12m (https://medium.com/@bradford_hamilton/write-your-own-blockchain-and-pow-algorithm-using-crystal-d53d5d9d0c52) by Bradford Lamson-Scribner, May 2018,[39m
|
||
[38;5;14m[1m(Source)[0m[38;5;12m (https://github.com/bradford-hamilton/crystal-blockchain)[39m
|
||
|
||
|
||
[38;2;255;187;0m[4mJavaScript[0m
|
||
|
||
[38;5;12mWriting a Tiny Blockchain in JavaScript[39m[38;5;12m (https://www.savjee.be/2017/07/Writing-tiny-blockchain-in-JavaScript/)[39m
|
||
[38;5;12mby Xavier Decuyper, July 2017[39m
|
||
|
||
[38;5;12mNode.js[39m[38;5;12m [39m[38;5;12mBlockchain[39m[38;5;12m [39m[38;5;12mImlementation:[39m[38;5;12m [39m[38;5;12mBrewChain:[39m[38;5;12m [39m[38;5;12mChain+WebSockets+HTTP[39m[38;5;12m [39m[38;5;12mServer[39m[38;5;12m [39m[38;5;12m(http://www.darrenbeck.co.uk/blockchain/nodejs/nodejscrypto/)[39m[38;5;12m [39m[38;5;12mby[39m[38;5;12m [39m[38;5;12mDarren[39m[38;5;12m [39m[38;5;12mBeck,[39m[38;5;12m [39m[38;5;12mNovember[39m[38;5;12m [39m[38;5;12m2017,[39m[38;5;12m [39m[38;5;14m[1m(Source)[0m[38;5;12m [39m[38;5;12m(https://github.com/dbbddb/BrewChain)[39m[38;5;12m [39m[38;5;12m--[39m[38;5;12m [39m[38;5;12mProtecting[39m[38;5;12m [39m[38;5;12mthe[39m[38;5;12m [39m[38;5;12mtea[39m[38;5;12m [39m[38;5;12mmaking[39m[38;5;12m [39m
|
||
[38;5;12mledger[39m[38;5;12m [39m[38;5;12mfrom[39m[38;5;12m [39m[38;5;12munscrupulous[39m[38;5;12m [39m[38;5;12mcolleagues[39m
|
||
|
||
[38;5;12mBuild your own Blockchain in Javascript/Visualization of Blockchains[39m[38;5;12m (https://github.com/nambrot/blockchain-in-js) by Nam Chu Hoai, January 2018[39m
|
||
|
||
|
||
[38;2;255;187;0m[4mTypeScript[0m
|
||
|
||
[38;5;12mNaivecoin: a tutorial for building a cryptocurrency[39m[38;5;12m (https://lhartikk.github.io) by Lauri Hartikka, [39m[38;5;14m[1m(Source)[0m[38;5;12m (https://github.com/lhartikk/naivecoin)[39m
|
||
|
||
|
||
[38;2;255;187;0m[4mJava[0m
|
||
|
||
[38;5;12mCreating[39m[38;5;12m [39m[38;5;12mYour[39m[38;5;12m [39m[38;5;12mFirst[39m[38;5;12m [39m[38;5;12mBlockchain[39m[38;5;12m [39m[38;5;12mwith[39m[38;5;12m [39m[38;5;12mJava,[39m[38;5;12m [39m[38;5;12mPart[39m[38;5;12m [39m[38;5;12m1[39m[38;5;12m [39m[38;5;12m(https://medium.com/programmers-blockchain/create-simple-blockchain-java-tutorial-from-scratch-6eeed3cb03fa)[39m[38;5;12m [39m[38;5;12mby[39m[38;5;12m [39m[38;5;12mKass,[39m[38;5;12m [39m[38;5;12mDecember[39m[38;5;12m [39m[38;5;12m2017,[39m[38;5;12m [39m[38;5;14m[1m(Source)[0m[38;5;12m [39m
|
||
[38;5;12m(https://github.com/CryptoKass/NoobChain-Tutorial-Part-1)[39m
|
||
|
||
[38;2;255;187;0m[4mKotlin[0m
|
||
|
||
[38;5;12mLet's implement a cryptocurrency in Kotlin[39m[38;5;12m (https://medium.com/@vasilyf/lets-implement-a-cryptocurrency-in-kotlin-part-1-blockchain-8704069f8580) by Vasily Fomin, July 2018,[39m
|
||
[38;5;14m[1m(Source)[0m[38;5;12m (https://github.com/VasilyFomin/kCoin)[39m
|
||
|
||
|
||
[38;2;255;187;0m[4mSQL[0m
|
||
|
||
[38;5;12mBlockchain by Example in SQL Server[39m[38;5;12m (https://medium.com/@benjaminsky/blockchain-by-example-in-sql-server-8376b410128) by Benjamin Campbell, December 2017, [39m[38;5;14m[1m(Source)[0m[38;5;12m (https://github.com/benjaminsky/BlockchainMessenger)[39m
|
||
|
||
|
||
[38;2;255;187;0m[4mRust[0m
|
||
|
||
[38;5;14m[1mBuilding Blockchain in Rust Series[0m[38;5;12m by Jacob Lindahl, GeekLaunch, [39m[38;5;14m[1m(Source)[0m[38;5;12m (https://github.com/GeekLaunch/blockchain-rust), [39m[38;5;14m[1m(Slide Decks in PDF)[0m[38;5;12m (https://github.com/GeekLaunch/slides)[39m
|
||
[38;5;12m- [39m[38;5;12mPart 1: Blocks and Hashing[39m[38;5;12m (https://medium.com/geeklaunch/blockchain-in-rust-01-blocks-hashing-4192f2265d3d), January 2019[39m
|
||
[38;5;12m- [39m[38;5;12mPart 2: Mining[39m[38;5;12m (https://medium.com/geeklaunch/blockchain-in-rust-02-mining-companion-guide-9106b7a7696d), January 2019[39m
|
||
[38;5;12m- [39m[38;5;12mPart 3: Chains and Checks[39m[38;5;12m (https://medium.com/geeklaunch/blockchain-in-rust-03-chains-checks-companion-guide-2714e1a76654), January 2019[39m
|
||
|
||
[38;2;255;187;0m[4mGo[0m
|
||
|
||
[38;5;14m[1mBuilding Blockchain in Go Series[0m[38;5;12m by Ivan Kuznetsov, [39m[38;5;14m[1m(Source)[0m[38;5;12m (https://github.com/Jeiwan/blockchain_go)[39m
|
||
|
||
[38;5;12m- [39m[38;5;12mPart 1: Basic Prototype[39m[38;5;12m (https://jeiwan.cc/posts/building-blockchain-in-go-part-1/), August 2017[39m
|
||
[38;5;12m- [39m[38;5;12mPart 2: Proof-of-Work[39m[38;5;12m (https://jeiwan.cc/posts/building-blockchain-in-go-part-2/), August 2017[39m
|
||
[38;5;12m- [39m[38;5;12mPart 3: Persistence and CLI[39m[38;5;12m (https://jeiwan.cc/posts/building-blockchain-in-go-part-3/), August 2017[39m
|
||
[38;5;12m- [39m[38;5;12mPart 4: Transactions 1[39m[38;5;12m (https://jeiwan.cc/posts/building-blockchain-in-go-part-4/), September 2017[39m
|
||
[38;5;12m- [39m[38;5;12mPart 5: Addresses[39m[38;5;12m (https://jeiwan.cc/posts/building-blockchain-in-go-part-5/), September 2017[39m
|
||
[38;5;12m- [39m[38;5;12mPart 6: Transactions 2[39m[38;5;12m (https://jeiwan.cc/posts/building-blockchain-in-go-part-6/), September 2017[39m
|
||
[38;5;12m- [39m[38;5;12mPart 7: Network[39m[38;5;12m (https://jeiwan.cc/posts/building-blockchain-in-go-part-7/), October 2017[39m
|
||
|
||
|
||
|
||
[38;5;12mBlockchain Series in Go by by Coral Health [39m[38;5;14m[1m(Source)[0m[38;5;12m (https://github.com/mycoralhealth/blockchain-tutorial)[39m
|
||
|
||
[38;5;12m- [39m[38;5;12mCode your own blockchain in less than 200 lines of Go![39m[38;5;12m (https://medium.com/@mycoralhealth/code-your-own-blockchain-in-less-than-200-lines-of-go-e296282bcffc) by Coral Health, January 2018[39m
|
||
[38;5;12m- [39m[38;5;12mPart 2: Networking — Code your own blockchain in less than 200 lines of Go![39m[38;5;12m (https://medium.com/@mycoralhealth/part-2-networking-code-your-own-blockchain-in-less-than-200-lines-of-go-17fe1dad46e1) by Coral Health, February 2018[39m
|
||
[38;5;12m- [39m[38;5;12mCode your own blockchain mining algorithm in Go![39m[38;5;12m (https://medium.com/@mycoralhealth/code-your-own-blockchain-mining-algorithm-in-go-82c6a71aba1f) by Coral Health, March 2018[39m
|
||
|
||
|
||
[38;5;12m<!--[39m
|
||
[38;5;12m it's more about bitcoin (and not about blockchain really)[39m
|
||
[38;2;255;187;0m[4mC#[0m
|
||
|
||
[38;5;12mProgramming The Blockchain in C#[39m[38;5;12m (https://programmingblockchain.gitbooks.io/programmingblockchain/)[39m
|
||
[38;5;12m-->[39m
|
||
|
||
|
||
[38;2;255;187;0m[4mTalk Notes[0m
|
||
|
||
[38;5;12m- [39m[38;5;12mBlockchain! Blockchain! Blockchain! - Build Your Own Blockchains in JavaScript from Zero (Scratch)[39m[38;5;12m (https://github.com/geraldb/talks/blob/master/blockchain.md) by Gerald Bauer, Vienna.js, September 2017[39m
|
||
[38;5;12m- [39m[38;5;12mBlockchain! Blockchain! Blockchain! - Build Your Own Blockchains in Ruby from Zero (Scratch)[39m[38;5;12m (https://github.com/geraldb/talks/blob/master/blockchain_ruby.md) by Gerald Bauer, Vienna.rb, Dezember 2017[39m
|
||
[38;5;12m- [39m[38;5;12mBlockchain vs (Hyper) Ledger -- Inside (Hyper) Ledger Lite - Add Transactions One Block at a Time and Balance the Accounts (Books)[39m[38;5;12m (https://github.com/geraldb/talks/blob/master/hyperledger.md) by Gerald Bauer, Hyperledger Vienna, March 2018[39m
|
||
[38;5;12m- [39m[38;5;12mBlockchain! Blockchain! Blockchain! - Build Your Own Blockchains in Go from Zero (Scratch)[39m[38;5;12m (https://github.com/geraldb/talks/blob/master/blockchain_go.md) by Gerald Bauer, Vienna.go, April 2018[39m
|
||
|
||
|
||
[38;2;255;187;0m[4mMore[0m
|
||
|
||
[38;5;12mSee [39m[38;5;12mBuild your own Blockchain / Cryptocurrency[39m[38;5;12m (https://github.com/danistefanovic/build-your-own-x#build-your-own-blockchain--cryptocurrency) @ Build your own (insert technology here)[39m
|
||
|
||
|
||
|
||
|
||
[38;2;255;187;0m[4mSamples[0m
|
||
|
||
[38;2;255;187;0m[4mBlockchain from Scratch - Ruby Version[0m
|
||
|
||
[48;5;235m[38;5;249mclass Block[49m[39m[48;5;235m[38;5;249m [49m[39m
|
||
[48;5;235m[38;5;249m[49m[39m[48;5;235m[38;5;249m [49m[39m
|
||
[48;5;235m[38;5;249m attr_reader :timestamp[49m[39m[48;5;235m[38;5;249m [49m[39m
|
||
[48;5;235m[38;5;249m attr_reader :data[49m[39m[48;5;235m[38;5;249m [49m[39m
|
||
[48;5;235m[38;5;249m attr_reader :previous_hash[49m[39m[48;5;235m[38;5;249m [49m[39m
|
||
[48;5;235m[38;5;249m attr_reader :hash[49m[39m[48;5;235m[38;5;249m [49m[39m
|
||
[48;5;235m[38;5;249m[49m[39m[48;5;235m[38;5;249m [49m[39m
|
||
[48;5;235m[38;5;249m def initialize(data, previous_hash)[49m[39m[48;5;235m[38;5;249m [49m[39m
|
||
[48;5;235m[38;5;249m @timestamp = Time.now[49m[39m[48;5;235m[38;5;249m [49m[39m
|
||
[48;5;235m[38;5;249m @data = data[49m[39m[48;5;235m[38;5;249m [49m[39m
|
||
[48;5;235m[38;5;249m @previous_hash = previous_hash[49m[39m[48;5;235m[38;5;249m [49m[39m
|
||
[48;5;235m[38;5;249m @hash = calc_hash[49m[39m[48;5;235m[38;5;249m [49m[39m
|
||
[48;5;235m[38;5;249m end[49m[39m[48;5;235m[38;5;249m [49m[39m
|
||
[48;5;235m[38;5;249m[49m[39m[48;5;235m[38;5;249m [49m[39m
|
||
[48;5;235m[38;5;249m def self.first( data="Genesis" ) # create genesis (big bang! first) block[49m[39m[48;5;235m[38;5;249m [49m[39m
|
||
[48;5;235m[38;5;249m ## note: uses all zero for previous_hash ("0")[49m[39m[48;5;235m[38;5;249m [49m[39m
|
||
[48;5;235m[38;5;249m Block.new( data, "0000000000000000000000000000000000000000000000000000000000000000" )[49m[39m
|
||
[48;5;235m[38;5;249m end[49m[39m[48;5;235m[38;5;249m [49m[39m
|
||
[48;5;235m[38;5;249m[49m[39m[48;5;235m[38;5;249m [49m[39m
|
||
[48;5;235m[38;5;249m def self.next( previous, data="Transaction Data..." )[49m[39m[48;5;235m[38;5;249m [49m[39m
|
||
[48;5;235m[38;5;249m Block.new( data, previous.hash )[49m[39m[48;5;235m[38;5;249m [49m[39m
|
||
[48;5;235m[38;5;249m end[49m[39m[48;5;235m[38;5;249m [49m[39m
|
||
[48;5;235m[38;5;249m[49m[39m[48;5;235m[38;5;249m [49m[39m
|
||
[48;5;235m[38;5;249mprivate[49m[39m[48;5;235m[38;5;249m [49m[39m
|
||
[48;5;235m[38;5;249m[49m[39m[48;5;235m[38;5;249m [49m[39m
|
||
[48;5;235m[38;5;249m def calc_hash[49m[39m[48;5;235m[38;5;249m [49m[39m
|
||
[48;5;235m[38;5;249m sha = Digest::SHA256.new[49m[39m[48;5;235m[38;5;249m [49m[39m
|
||
[48;5;235m[38;5;249m sha.update( @timestamp.to_s + @previous_hash + @data )[49m[39m[48;5;235m[38;5;249m [49m[39m
|
||
[48;5;235m[38;5;249m sha.hexdigest[49m[39m[48;5;235m[38;5;249m [49m[39m
|
||
[48;5;235m[38;5;249m end[49m[39m[48;5;235m[38;5;249m [49m[39m
|
||
[48;5;235m[38;5;249m[49m[39m[48;5;235m[38;5;249m [49m[39m
|
||
[48;5;235m[38;5;249mend # class Block[49m[39m[48;5;235m[38;5;249m [49m[39m
|
||
[48;5;235m[38;5;249m[49m[39m[48;5;235m[38;5;249m [49m[39m
|
||
[48;5;235m[38;5;249m[49m[39m[48;5;235m[38;5;249m [49m[39m
|
||
[48;5;235m[38;5;249m#####[49m[39m[48;5;235m[38;5;249m [49m[39m
|
||
[48;5;235m[38;5;249m## let's get started[49m[39m[48;5;235m[38;5;249m [49m[39m
|
||
[48;5;235m[38;5;249m## build a blockchain a block at a time[49m[39m[48;5;235m[38;5;249m [49m[39m
|
||
[48;5;235m[38;5;249m[49m[39m[48;5;235m[38;5;249m [49m[39m
|
||
[48;5;235m[38;5;249mb0 = Block.first( "Genesis" )[49m[39m[48;5;235m[38;5;249m [49m[39m
|
||
[48;5;235m[38;5;249mb1 = Block.next( b0, "Transaction Data..." )[49m[39m[48;5;235m[38;5;249m [49m[39m
|
||
[48;5;235m[38;5;249mb2 = Block.next( b1, "Transaction Data......" )[49m[39m[48;5;235m[38;5;249m [49m[39m
|
||
[48;5;235m[38;5;249mb3 = Block.next( b2, "More Transaction Data..." )[49m[39m[48;5;235m[38;5;249m [49m[39m
|
||
[48;5;235m[38;5;249m[49m[39m[48;5;235m[38;5;249m [49m[39m
|
||
[48;5;235m[38;5;249mblockchain = **b0, b1, b2, b3** [49m[39m[48;5;235m[38;5;249m [49m[39m
|
||
[48;5;235m[38;5;249m[49m[39m[48;5;235m[38;5;249m [49m[39m
|
||
[48;5;235m[38;5;249mpp blockchain[49m[39m[48;5;235m[38;5;249m [49m[39m
|
||
[48;5;235m[38;5;249m[49m[39m[48;5;235m[38;5;249m [49m[39m
|
||
|
||
[38;5;12m(Source: [39m[48;5;235m[38;5;249m[1mblockchain.rb[0m[38;5;12m (blockchain.rb/blockchain.rb))[39m
|
||
|
||
[38;5;12mwill pretty print (pp) something like:[39m
|
||
|
||
[48;5;235m[38;5;249m**#<Block:0x1eed2a0[49m[39m[48;5;235m[38;5;249m [49m[39m
|
||
[48;5;235m[38;5;249m @timestamp = 1637-09-15 20:52:38,[49m[39m[48;5;235m[38;5;249m [49m[39m
|
||
[48;5;235m[38;5;249m @data = "Genesis",[49m[39m[48;5;235m[38;5;249m [49m[39m
|
||
[48;5;235m[38;5;249m @previous_hash = "0000000000000000000000000000000000000000000000000000000000000000",[49m[39m[48;5;235m[38;5;249m [49m[39m
|
||
[48;5;235m[38;5;249m @hash = "edbd4e11e69bc399a9ccd8faaea44fb27410fe8e3023bb9462450a0a9c4caa1b">,[49m[39m[48;5;235m[38;5;249m [49m[39m
|
||
[48;5;235m[38;5;249m #<Block:0x1eec9a0[49m[39m[48;5;235m[38;5;249m [49m[39m
|
||
[48;5;235m[38;5;249m @timestamp = 1637-09-15 21:02:38,[49m[39m[48;5;235m[38;5;249m [49m[39m
|
||
[48;5;235m[38;5;249m @data = "Transaction Data...",[49m[39m[48;5;235m[38;5;249m [49m[39m
|
||
[48;5;235m[38;5;249m @previous_hash = "edbd4e11e69bc399a9ccd8faaea44fb27410fe8e3023bb9462450a0a9c4caa1b",[49m[39m[48;5;235m[38;5;249m [49m[39m
|
||
[48;5;235m[38;5;249m @hash = "eb8ecbf6d5870763ae246e37539d82e37052cb32f88bb8c59971f9978e437743">,[49m[39m[48;5;235m[38;5;249m [49m[39m
|
||
[48;5;235m[38;5;249m #<Block:0x1eec838[49m[39m[48;5;235m[38;5;249m [49m[39m
|
||
[48;5;235m[38;5;249m @timestamp = 1637-09-15 21:12:38,[49m[39m[48;5;235m[38;5;249m [49m[39m
|
||
[48;5;235m[38;5;249m @data = "Transaction Data......",[49m[39m[48;5;235m[38;5;249m [49m[39m
|
||
[48;5;235m[38;5;249m @previous_hash = "eb8ecbf6d5870763ae246e37539d82e37052cb32f88bb8c59971f9978e437743",[49m[39m[48;5;235m[38;5;249m [49m[39m
|
||
[48;5;235m[38;5;249m @hash = "be50017ee4bbcb33844b3dc2b7c4e476d46569b5df5762d14ceba9355f0a85f4">,[49m[39m[48;5;235m[38;5;249m [49m[39m
|
||
[48;5;235m[38;5;249m #<Block:0x1eec6d0[49m[39m[48;5;235m[38;5;249m [49m[39m
|
||
[48;5;235m[38;5;249m @timestamp = 1637-09-15 21:22:38,[49m[39m[48;5;235m[38;5;249m [49m[39m
|
||
[48;5;235m[38;5;249m @data = "More Transaction Data...",[49m[39m[48;5;235m[38;5;249m [49m[39m
|
||
[48;5;235m[38;5;249m @previous_hash = "be50017ee4bbcb33844b3dc2b7c4e476d46569b5df5762d14ceba9355f0a85f4",[49m[39m[48;5;235m[38;5;249m [49m[39m
|
||
[48;5;235m[38;5;249m @hash = "5ee2981606328abfe0c3b1171440f0df746c1e1f8b3b56c351727f7da7ae5d8d">** [49m[39m
|
||
|
||
|
||
[38;5;12mComments from the [39m[38;5;14m[1mreddit ruby posting[0m[38;5;12m (https://www.reddit.com/r/ruby/comments/70c30f/build_your_own_blockchain_in_20_lines_of_ruby/):[39m
|
||
|
||
[38;5;11m[1m▐[0m[38;5;12m [39m[38;5;12mWait, so a blockchain is just a linked list?[39m
|
||
[38;5;11m[1m▐[0m[38;5;12m [39m
|
||
[38;5;12m>> No. A linked list is only required to have a reference to the previous element, a block must[39m
|
||
[38;5;12m>> have an identifier depending on the previous block's identifier, meaning that you cannot[39m
|
||
[38;5;12m>> replace a block without recomputing every single block that comes after.[39m
|
||
[38;5;12m>> In this implementation that happens as the previous digest is input in the calc_hash method.[39m
|
||
|
||
|
||
|
||
[38;5;14m[1mWhat about Proof of Work / Waste?[0m
|
||
|
||
[38;5;12mLet's[39m[38;5;12m [39m[38;5;12madd[39m[38;5;12m [39m[38;5;12ma[39m[38;5;12m [39m[38;5;12mproof[39m[38;5;12m [39m[38;5;12mof[39m[38;5;12m [39m[38;5;12mwork[39m[38;5;12m [39m[38;5;12m/[39m[38;5;12m [39m[38;5;12mwaste[39m[38;5;12m [39m[38;5;12mto[39m[38;5;12m [39m[38;5;12mthe[39m[38;5;12m [39m[38;5;12mblockchain.[39m[38;5;12m [39m[38;5;12mIn[39m[38;5;12m [39m[38;5;12mthe[39m[38;5;12m [39m[38;5;12mclassic[39m[38;5;12m [39m[38;5;12mblockchain[39m[38;5;12m [39m[38;5;12myou[39m[38;5;12m [39m[38;5;12mhave[39m[38;5;12m [39m[38;5;12mto[39m[38;5;12m [39m[38;5;12mcompute[39m[38;5;12m [39m[38;5;12ma[39m[38;5;12m [39m[38;5;12mblock[39m[38;5;12m [39m[38;5;12mhash[39m[38;5;12m [39m[38;5;12mthat[39m[38;5;12m [39m[38;5;12mstarts[39m[38;5;12m [39m[38;5;12mwith[39m[38;5;12m [39m[38;5;12mleading[39m[38;5;12m [39m[38;5;12mzeros[39m[38;5;12m [39m[38;5;12m([39m[48;5;235m[38;5;249m00[49m[39m[38;5;12m).[39m[38;5;12m [39m[38;5;12mThe[39m[38;5;12m [39m[38;5;12mmore[39m[38;5;12m [39m[38;5;12mleading[39m[38;5;12m [39m[38;5;12mzeros[39m[38;5;12m [39m[38;5;12mthe[39m[38;5;12m [39m[38;5;12mharder[39m[38;5;12m [39m[38;5;12m(more[39m[38;5;12m [39m[38;5;12mdifficult)[39m[38;5;12m [39m[38;5;12mto[39m[38;5;12m [39m[38;5;12mcompute.[39m[38;5;12m [39m[38;5;12mLet's[39m[38;5;12m [39m[38;5;12mkeep[39m[38;5;12m [39m[38;5;12mit[39m[38;5;12m [39m[38;5;12measy[39m[38;5;12m [39m[38;5;12mto[39m[38;5;12m [39m[38;5;12mcompute[39m[38;5;12m [39m[38;5;12mwith[39m
|
||
[38;5;12mtwo[39m[38;5;12m [39m[38;5;12mleading[39m[38;5;12m [39m[38;5;12mzeros[39m[38;5;12m [39m[38;5;12m([39m[48;5;235m[38;5;249m00[49m[39m[38;5;12m),[39m[38;5;12m [39m[38;5;12mthat[39m[38;5;12m [39m[38;5;12mis,[39m[38;5;12m [39m[38;5;12m16^2[39m[38;5;12m [39m[38;5;12m=[39m[38;5;12m [39m[38;5;12m256[39m[38;5;12m [39m[38;5;12mpossibilites[39m[38;5;12m [39m[38;5;12m(^1,2).[39m[38;5;12m [39m[38;5;12mThree[39m[38;5;12m [39m[38;5;12mleading[39m[38;5;12m [39m[38;5;12mzeros[39m[38;5;12m [39m[38;5;12m([39m[48;5;235m[38;5;249m000[49m[39m[38;5;12m)[39m[38;5;12m [39m[38;5;12mwould[39m[38;5;12m [39m[38;5;12mbe[39m[38;5;12m [39m[38;5;12m16^3[39m[38;5;12m [39m[38;5;12m=[39m[38;5;12m [39m[38;5;12m4_096[39m[38;5;12m [39m[38;5;12mpossibilites[39m[38;5;12m [39m[38;5;12mand[39m[38;5;12m [39m[38;5;12mfour[39m[38;5;12m [39m[38;5;12mzeros[39m[38;5;12m [39m[38;5;12m([39m[48;5;235m[38;5;249m0000[49m[39m[38;5;12m)[39m[38;5;12m [39m[38;5;12mwould[39m[38;5;12m [39m[38;5;12mbe[39m[38;5;12m [39m[38;5;12m16^4[39m[38;5;12m [39m[38;5;12m=[39m[38;5;12m [39m[38;5;12m65_536[39m[38;5;12m [39m[38;5;12mand[39m[38;5;12m [39m[38;5;12mso[39m[38;5;12m [39m[38;5;12mon.[39m
|
||
|
||
[38;5;12m(^1): 16 possibilties because it's a hex or hexadecimal or base 16 number, that is, [39m[48;5;235m[38;5;249m0[49m[39m[38;5;12m [39m[48;5;235m[38;5;249m1[49m[39m[38;5;12m [39m[48;5;235m[38;5;249m2[49m[39m[38;5;12m [39m[48;5;235m[38;5;249m3[49m[39m[38;5;12m [39m[48;5;235m[38;5;249m4[49m[39m[38;5;12m [39m[48;5;235m[38;5;249m6[49m[39m[38;5;12m [39m[48;5;235m[38;5;249m7[49m[39m[38;5;12m [39m[48;5;235m[38;5;249m8[49m[39m[38;5;12m [39m[48;5;235m[38;5;249m9[49m[39m[38;5;12m [39m[48;5;235m[38;5;249ma[49m[39m[38;5;12m (10) [39m[48;5;235m[38;5;249mb[49m[39m[38;5;12m (11) [39m[48;5;235m[38;5;249mc[49m[39m[38;5;12m (12) [39m[48;5;235m[38;5;249md[49m[39m[38;5;12m (13) [39m[48;5;235m[38;5;249me[49m[39m[38;5;12m (14) [39m[48;5;235m[38;5;249mf[49m[39m[38;5;12m (15).[39m
|
||
|
||
[38;5;12m(^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).[39m
|
||
|
||
|
||
[38;5;12mExample:[39m
|
||
|
||
[48;5;235m[38;5;249mdef compute_hash_with_proof_of_work( difficulty="00" )[49m[39m[48;5;235m[38;5;249m [49m[39m
|
||
[48;5;235m[38;5;249m nonce = 0[49m[39m[48;5;235m[38;5;249m [49m[39m
|
||
[48;5;235m[38;5;249m loop do[49m[39m[48;5;235m[38;5;249m [49m[39m
|
||
[48;5;235m[38;5;249m hash = calc_hash_with_nonce( nonce )[49m[39m[48;5;235m[38;5;249m [49m[39m
|
||
[48;5;235m[38;5;249m if hash.start_with?( difficulty )[49m[39m[48;5;235m[38;5;249m [49m[39m
|
||
[48;5;235m[38;5;249m return **nonce,hash** ## bingo! proof of work if hash starts with leading zeros (00)[49m[39m
|
||
[48;5;235m[38;5;249m else[49m[39m[48;5;235m[38;5;249m [49m[39m
|
||
[48;5;235m[38;5;249m nonce += 1 ## keep trying (and trying and trying)[49m[39m[48;5;235m[38;5;249m [49m[39m
|
||
[48;5;235m[38;5;249m end[49m[39m[48;5;235m[38;5;249m [49m[39m
|
||
[48;5;235m[38;5;249m end[49m[39m[48;5;235m[38;5;249m [49m[39m
|
||
[48;5;235m[38;5;249mend[49m[39m[48;5;235m[38;5;249m [49m[39m
|
||
[48;5;235m[38;5;249m[49m[39m[48;5;235m[38;5;249m [49m[39m
|
||
[48;5;235m[38;5;249mdef calc_hash_with_nonce( nonce=0 )[49m[39m[48;5;235m[38;5;249m [49m[39m
|
||
[48;5;235m[38;5;249m sha = Digest::SHA256.new[49m[39m[48;5;235m[38;5;249m [49m[39m
|
||
[48;5;235m[38;5;249m sha.update( nonce.to_s + @timestamp.to_s + @previous_hash + @data )[49m[39m[48;5;235m[38;5;249m [49m[39m
|
||
[48;5;235m[38;5;249m sha.hexdigest[49m[39m[48;5;235m[38;5;249m [49m[39m
|
||
[48;5;235m[38;5;249mend[49m[39m[48;5;235m[38;5;249m [49m[39m
|
||
|
||
[38;5;12m(Source: [39m[48;5;235m[38;5;249m[1mblockchain_with_proof_of_work.rb[0m[38;5;12m (blockchain.rb/blockchain_with_proof_of_work.rb))[39m
|
||
|
||
[38;5;12mLet's rerun the sample with the proof of work machinery added.[39m
|
||
[38;5;12mNow the sample will pretty print (pp) something like:[39m
|
||
|
||
[48;5;235m[38;5;249m**#<Block:0x1e204f0[49m[39m[48;5;235m[38;5;249m [49m[39m
|
||
[48;5;235m[38;5;249m @timestamp = 1637-09-20 20:13:38,[49m[39m[48;5;235m[38;5;249m [49m[39m
|
||
[48;5;235m[38;5;249m @data = "Genesis",[49m[39m[48;5;235m[38;5;249m [49m[39m
|
||
[48;5;235m[38;5;249m @previous_hash = "0000000000000000000000000000000000000000000000000000000000000000",[49m[39m[48;5;235m[38;5;249m [49m[39m
|
||
[48;5;235m[38;5;249m @nonce = 242,[49m[39m[48;5;235m[38;5;249m [49m[39m
|
||
[48;5;235m[38;5;249m @hash = "00b8e77e27378f9aa0afbcea3a2882bb62f6663771dee053364beb1887e18bcf">,[49m[39m[48;5;235m[38;5;249m [49m[39m
|
||
[48;5;235m[38;5;249m #<Block:0x1e56e20[49m[39m[48;5;235m[38;5;249m [49m[39m
|
||
[48;5;235m[38;5;249m @timestamp = 1637-09-20 20:23:38,[49m[39m[48;5;235m[38;5;249m [49m[39m
|
||
[48;5;235m[38;5;249m @data = "Transaction Data...",[49m[39m[48;5;235m[38;5;249m [49m[39m
|
||
[48;5;235m[38;5;249m @previous_hash = "00b8e77e27378f9aa0afbcea3a2882bb62f6663771dee053364beb1887e18bcf",[49m[39m[48;5;235m[38;5;249m [49m[39m
|
||
[48;5;235m[38;5;249m @nonce = 46,[49m[39m[48;5;235m[38;5;249m [49m[39m
|
||
[48;5;235m[38;5;249m @hash = "00aae8d2e9387e13c71b33f8cd205d336ac250d2828011f5970062912985a9af">,[49m[39m[48;5;235m[38;5;249m [49m[39m
|
||
[48;5;235m[38;5;249m #<Block:0x1e2bd58[49m[39m[48;5;235m[38;5;249m [49m[39m
|
||
[48;5;235m[38;5;249m @timestamp = 1637-09-20 20:33:38,[49m[39m[48;5;235m[38;5;249m [49m[39m
|
||
[48;5;235m[38;5;249m @data = "Transaction Data......",[49m[39m[48;5;235m[38;5;249m [49m[39m
|
||
[48;5;235m[38;5;249m @previous_hash = "00aae8d2e9387e13c71b33f8cd205d336ac250d2828011f5970062912985a9af",[49m[39m[48;5;235m[38;5;249m [49m[39m
|
||
[48;5;235m[38;5;249m @nonce = 350,[49m[39m[48;5;235m[38;5;249m [49m[39m
|
||
[48;5;235m[38;5;249m @hash = "00ea45e0f4683c3bec4364f349ee2b6816be0c9fd95cfd5ffcc6ed572c62f190">,[49m[39m[48;5;235m[38;5;249m [49m[39m
|
||
[48;5;235m[38;5;249m #<Block:0x1fa8338[49m[39m[48;5;235m[38;5;249m [49m[39m
|
||
[48;5;235m[38;5;249m @timestamp = 1637-09-20 20:43:38,[49m[39m[48;5;235m[38;5;249m [49m[39m
|
||
[48;5;235m[38;5;249m @data = "More Transaction Data...",[49m[39m[48;5;235m[38;5;249m [49m[39m
|
||
[48;5;235m[38;5;249m @previous_hash = "00ea45e0f4683c3bec4364f349ee2b6816be0c9fd95cfd5ffcc6ed572c62f190",[49m[39m[48;5;235m[38;5;249m [49m[39m
|
||
[48;5;235m[38;5;249m @nonce = 59,[49m[39m[48;5;235m[38;5;249m [49m[39m
|
||
[48;5;235m[38;5;249m @hash = "00436f0fca677652963e904ce4c624606a255946b921132d5b1f70f7d86c4ab8">** [49m[39m
|
||
|
||
[38;5;12mSee the difference? All hashes now start with leading zeros ([39m[48;5;235m[38;5;249m00[49m[39m[38;5;12m) and the nonce is the random "lucky number"[39m
|
||
[38;5;12mthat makes it happen. That's the magic behind the proof of work.[39m
|
||
|
||
|
||
[38;2;255;187;0m[4mBlockchain from Scratch - JavaScript Version[0m
|
||
|
||
[48;5;235m[38;5;249mclass Block {[49m[39m[48;5;235m[38;5;249m [49m[39m
|
||
[48;5;235m[38;5;249m[49m[39m[48;5;235m[38;5;249m [49m[39m
|
||
[48;5;235m[38;5;249m constructor(data, previousHash) {[49m[39m[48;5;235m[38;5;249m [49m[39m
|
||
[48;5;235m[38;5;249m this.timestamp = new Date()[49m[39m[48;5;235m[38;5;249m [49m[39m
|
||
[48;5;235m[38;5;249m this.data = data[49m[39m[48;5;235m[38;5;249m [49m[39m
|
||
[48;5;235m[38;5;249m this.previousHash = previousHash[49m[39m[48;5;235m[38;5;249m [49m[39m
|
||
[48;5;235m[38;5;249m this.hash = this.calcHash()[49m[39m[48;5;235m[38;5;249m [49m[39m
|
||
[48;5;235m[38;5;249m }[49m[39m[48;5;235m[38;5;249m [49m[39m
|
||
[48;5;235m[38;5;249m[49m[39m[48;5;235m[38;5;249m [49m[39m
|
||
[48;5;235m[38;5;249m calcHash() {[49m[39m[48;5;235m[38;5;249m [49m[39m
|
||
[48;5;235m[38;5;249m var sha = SHA256.create()[49m[39m[48;5;235m[38;5;249m [49m[39m
|
||
[48;5;235m[38;5;249m sha.update( this.timestamp.toString() + this.previousHash + this.data )[49m[39m[48;5;235m[38;5;249m [49m[39m
|
||
[48;5;235m[38;5;249m return sha.hex()[49m[39m[48;5;235m[38;5;249m [49m[39m
|
||
[48;5;235m[38;5;249m }[49m[39m[48;5;235m[38;5;249m [49m[39m
|
||
[48;5;235m[38;5;249m[49m[39m[48;5;235m[38;5;249m [49m[39m
|
||
[48;5;235m[38;5;249m static first( data="Genesis" ) { // create genesis (big bang! first) block[49m[39m[48;5;235m[38;5;249m [49m[39m
|
||
[48;5;235m[38;5;249m // uses all-zero previousHash[49m[39m[48;5;235m[38;5;249m [49m[39m
|
||
[48;5;235m[38;5;249m return new Block( data, "0000000000000000000000000000000000000000000000000000000000000000" )[49m[39m
|
||
[48;5;235m[38;5;249m }[49m[39m[48;5;235m[38;5;249m [49m[39m
|
||
[48;5;235m[38;5;249m[49m[39m[48;5;235m[38;5;249m [49m[39m
|
||
[48;5;235m[38;5;249m static next( previous, data="Transaction Data..." ) {[49m[39m[48;5;235m[38;5;249m [49m[39m
|
||
[48;5;235m[38;5;249m return new Block( data, previous.hash )[49m[39m[48;5;235m[38;5;249m [49m[39m
|
||
[48;5;235m[38;5;249m }[49m[39m[48;5;235m[38;5;249m [49m[39m
|
||
[48;5;235m[38;5;249m}[49m[39m[48;5;235m[38;5;249m [49m[39m
|
||
[48;5;235m[38;5;249m[49m[39m[48;5;235m[38;5;249m [49m[39m
|
||
[48;5;235m[38;5;249m[49m[39m[48;5;235m[38;5;249m [49m[39m
|
||
[48;5;235m[38;5;249m//////[49m[39m[48;5;235m[38;5;249m [49m[39m
|
||
[48;5;235m[38;5;249m// let's get started[49m[39m[48;5;235m[38;5;249m [49m[39m
|
||
[48;5;235m[38;5;249m// build a blockchain a block at a time[49m[39m[48;5;235m[38;5;249m [49m[39m
|
||
[48;5;235m[38;5;249m[49m[39m[48;5;235m[38;5;249m [49m[39m
|
||
[48;5;235m[38;5;249mb0 = Block.first( "Genesis" )[49m[39m[48;5;235m[38;5;249m [49m[39m
|
||
[48;5;235m[38;5;249mb1 = Block.next( b0, "Transaction Data..." )[49m[39m[48;5;235m[38;5;249m [49m[39m
|
||
[48;5;235m[38;5;249mb2 = Block.next( b1, "Transaction Data......" )[49m[39m[48;5;235m[38;5;249m [49m[39m
|
||
[48;5;235m[38;5;249mb3 = Block.next( b2, "More Transaction Data..." )[49m[39m[48;5;235m[38;5;249m [49m[39m
|
||
[48;5;235m[38;5;249m[49m[39m[48;5;235m[38;5;249m [49m[39m
|
||
[48;5;235m[38;5;249m[49m[39m[48;5;235m[38;5;249m [49m[39m
|
||
[48;5;235m[38;5;249mblockchain = **b0, b1, b2, b3** [49m[39m[48;5;235m[38;5;249m [49m[39m
|
||
[48;5;235m[38;5;249m[49m[39m[48;5;235m[38;5;249m [49m[39m
|
||
[48;5;235m[38;5;249mconsole.log( blockchain )[49m[39m[48;5;235m[38;5;249m [49m[39m
|
||
|
||
[38;5;12m(Source: [39m[48;5;235m[38;5;249m[1mblockchain.js[0m[38;5;12m (blockchain.js/blockchain.js))[39m
|
||
|
||
[38;5;12mwill log something like:[39m
|
||
|
||
[48;5;235m[38;5;249m** Block {[49m[39m[48;5;235m[38;5;249m [49m[39m
|
||
[48;5;235m[38;5;249m timestamp : 1637-09-18 08:25:54,[49m[39m[48;5;235m[38;5;249m [49m[39m
|
||
[48;5;235m[38;5;249m data : 'Genesis',[49m[39m[48;5;235m[38;5;249m [49m[39m
|
||
[48;5;235m[38;5;249m previousHash : '0000000000000000000000000000000000000000000000000000000000000000',[49m[39m[48;5;235m[38;5;249m [49m[39m
|
||
[48;5;235m[38;5;249m hash : 'c396de4c03ddb5275661982adc75ce5fc5905d2a2457d1266c74436c1f3c50f1' },[49m[39m[48;5;235m[38;5;249m [49m[39m
|
||
[48;5;235m[38;5;249m Block {[49m[39m[48;5;235m[38;5;249m [49m[39m
|
||
[48;5;235m[38;5;249m timestamp : 1637-09-18 08:35:54,[49m[39m[48;5;235m[38;5;249m [49m[39m
|
||
[48;5;235m[38;5;249m data : 'Transaction Data...',[49m[39m[48;5;235m[38;5;249m [49m[39m
|
||
[48;5;235m[38;5;249m previousHash : 'c396de4c03ddb5275661982adc75ce5fc5905d2a2457d1266c74436c1f3c50f1',[49m[39m[48;5;235m[38;5;249m [49m[39m
|
||
[48;5;235m[38;5;249m hash : '493131e09c069645c82795c96e4715cea0f5558be514b5096d853a5b9899154a' },[49m[39m[48;5;235m[38;5;249m [49m[39m
|
||
[48;5;235m[38;5;249m Block {[49m[39m[48;5;235m[38;5;249m [49m[39m
|
||
[48;5;235m[38;5;249m timestamp : 1637-09-18 08:45:54,[49m[39m[48;5;235m[38;5;249m [49m[39m
|
||
[48;5;235m[38;5;249m data : 'Transaction Data......',[49m[39m[48;5;235m[38;5;249m [49m[39m
|
||
[48;5;235m[38;5;249m previousHash : '493131e09c069645c82795c96e4715cea0f5558be514b5096d853a5b9899154a',[49m[39m[48;5;235m[38;5;249m [49m[39m
|
||
[48;5;235m[38;5;249m hash : '97aa3cb5052615d60ff8e6b41bef606562588c4874f011970ac2f218e2f0f4a8' },[49m[39m[48;5;235m[38;5;249m [49m[39m
|
||
[48;5;235m[38;5;249m Block {[49m[39m[48;5;235m[38;5;249m [49m[39m
|
||
[48;5;235m[38;5;249m timestamp : 1637-09-18 08:55:54,[49m[39m[48;5;235m[38;5;249m [49m[39m
|
||
[48;5;235m[38;5;249m data : 'More Transaction Data...',[49m[39m[48;5;235m[38;5;249m [49m[39m
|
||
[48;5;235m[38;5;249m previousHash : '97aa3cb5052615d60ff8e6b41bef606562588c4874f011970ac2f218e2f0f4a8',[49m[39m[48;5;235m[38;5;249m [49m[39m
|
||
[48;5;235m[38;5;249m hash : 'e10e020f832e46c2b60e1c3c0412bd370b2fde5f0f782c16eb87d0313ea0d3a3' } ** [49m[39m
|
||
|
||
|
||
|
||
[38;2;255;187;0m[4mBlockchain Articles[0m
|
||
|
||
[38;5;12mReflections on the Blockchain[39m[38;5;12m (http://rufuspollock.com/2016/07/02/reflections-on-the-blockchain) by Rufus Pollock (Open Knowledge Foundation), July 2016 --[39m
|
||
[38;5;12m_The DAO: Code is not Law – and It’s Dangerous to Think So ++[39m
|
||
[38;5;12mThe Internet changed the world - surely the Blockchain will too? ++[39m
|
||
[38;5;12mGold-rush or Internet-rush? ++[39m
|
||
[38;5;12mGovernance Matters in Bitcoin ++[39m
|
||
[38;5;12mThe Myth of a Costless, Ownerless Network ++[39m
|
||
[38;5;12mLessons from History_[39m
|
||
|
||
[38;5;12mOn the Dangers of a Blockchain Monoculture[39m[38;5;12m (https://tonyarcieri.com/on-the-dangers-of-a-blockchain-monoculture) by Tony Arcieri, January 2016 --[39m
|
||
[38;5;12m_The Bitcoin blockchain: the world's worst database ++[39m
|
||
[38;5;12mNext-generation protocols ++[39m
|
||
[38;5;12mDecentralized ledger protocols ++[39m
|
||
[38;5;12mBitcoin-NG ++[39m
|
||
[38;5;12mBlockchain! Blockchain! Blockchain! ++[39m
|
||
[38;5;12mThe great decentralized database in the sky_[39m
|
||
|
||
|
||
[38;5;12mI Don’t Believe in Blockchain[39m[38;5;12m (https://www.tbray.org/ongoing/When/201x/2017/05/13/Not-Believing-in-Blockchain) by Tim Bray, May 2017[39m
|
||
|
||
|
||
[38;5;12mMinimum Viable Blockchain[39m[38;5;12m (https://www.igvita.com/2014/05/05/minimum-viable-block-chain/) by Ilya Grigorik, May 2014 --[39m
|
||
[38;5;12m_Securing transactions with triple-entry bookkeeping ++[39m
|
||
[38;5;12mSecuring transactions with PKI ++[39m
|
||
[38;5;12mBalance = Σ(receipts) ++[39m
|
||
[38;5;12mMulti-party transfers & verification ++[39m
|
||
[38;5;12mDouble-spending and distributed consensus -[39m
|
||
[38;5;12m Requirements for a distributed consensus network;[39m
|
||
[38;5;12m Protecting the network from Sybil attacks;[39m
|
||
[38;5;12mProof-of-work as a participation requirement ++[39m
|
||
[38;5;12mBuilding the minimum viable blockchain -[39m
|
||
[38;5;12m Adding "blocks" & transaction fee incentives;[39m
|
||
[38;5;12m Racing to claim the transaction fees;[39m
|
||
[38;5;12m Resolving chain conflicts;[39m
|
||
[38;5;12m Blocks are never final ++[39m
|
||
[38;5;12mProperties of the (minimum viable) blockchain_[39m
|
||
|
||
[38;5;12mBlockchains by analogies and applications: How blockchain compares to Git, Raft, and other technologies.[39m[38;5;12m (https://www.oreilly.com/ideas/blockchains-by-analogies-and-applications)[39m
|
||
[38;5;12mby Kieren James-Lubin, January 2016 --[39m
|
||
[38;5;12m_Blockchains are databases ++[39m
|
||
[38;5;12mUnderstanding transactions ++[39m
|
||
[38;5;12mPersistent, replicated databases (related technology: Git) ++[39m
|
||
[38;5;12mPeer-to-peer networks (related technology: BitTorrent) ++[39m
|
||
[38;5;12mDistributed consensus (related technology: distributed databases, Raft) ++[39m
|
||
[38;5;12mMinting new coins (mining) ++[39m
|
||
[38;5;12mEmbedded identities (related technology: TLS) ++[39m
|
||
[38;5;12mSmart contracts: Like SQL expressions & triggers ++[39m
|
||
[38;5;12mWhat can we really do with blockchains?_[39m
|
||
|
||
|
||
|
||
[38;2;255;187;0m[4mBlockchain Books[0m
|
||
|
||
[38;5;12mAttack of the 50 Foot Blockchain: Bitcoin, Blockchain, Ethereum & Smart Contracts[39m[38;5;12m (https://davidgerard.co.uk/blockchain/table-of-contents/) by David Gerard, London, 2017 --[39m
|
||
[38;5;12m_What is a bitcoin? ++[39m
|
||
[38;5;12mThe Bitcoin ideology ++[39m
|
||
[38;5;12mThe incredible promises of Bitcoin! ++[39m
|
||
[38;5;12mEarly Bitcoin: the rise to the first bubble ++[39m
|
||
[38;5;12mHow Bitcoin mining centralised ++[39m
|
||
[38;5;12mWho is Satoshi Nakamoto? ++[39m
|
||
[38;5;12mSpending bitcoins in 2017 ++[39m
|
||
[38;5;12mTrading bitcoins in 2017: the second crypto bubble ++[39m
|
||
[38;5;12mAltcoins ++[39m
|
||
[38;5;12mSmart contracts, stupid humans ++[39m
|
||
[38;5;12mBusiness bafflegab, but on the Blockchain ++[39m
|
||
[38;5;12mCase study: Why you can’t put the music industry on a blockchain_[39m
|
||
|
||
|
||
[38;5;12mMastering Bitcoin - Programming the Open Blockchain[39m[38;5;12m (https://github.com/bitcoinbook/bitcoinbook/blob/second_edition/ch09.asciidoc) 2nd Edition,[39m
|
||
[38;5;12mby Andreas M. Antonopoulos, 2017 - FREE (Online Source Version) --[39m
|
||
[38;5;12m_What Is Bitcoin? ++[39m
|
||
[38;5;12mHow Bitcoin Works ++[39m
|
||
[38;5;12mBitcoin Core: The Reference Implementation ++[39m
|
||
[38;5;12mKeys, Addresses ++[39m
|
||
[38;5;12mWallets ++[39m
|
||
[38;5;12mTransactions ++[39m
|
||
[38;5;12mAdvanced Transactions and Scripting ++[39m
|
||
[38;5;12mThe Bitcoin Network ++[39m
|
||
[38;5;12mThe Blockchain ++[39m
|
||
[38;5;12mMining and Consensus ++[39m
|
||
[38;5;12mBitcoin Security ++[39m
|
||
[38;5;12mBlockchain Applications_[39m
|
||
|
||
[38;5;238m――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――[39m
|
||
|
||
[38;5;12m![39m[38;5;12m (i/trolly-ponzi.png)[39m
|
||
|
||
[38;5;14m[1mBEWARE: Bitcoin is a gigantic ponzi scheme¹.[0m
|
||
[38;5;12mTo the moon!? The new gold standard!?[39m
|
||
[38;5;12mDo NOT "invest" trying to get-rich-quick HODLing.[39m
|
||
[38;5;12mWhy not? The bitcoin code is archaic and out-of-date.[39m
|
||
[38;5;12mBurn, baby, burn! Proof-of-work / waste is a global[39m
|
||
[38;5;12menergy environmental disaster[39m
|
||
[38;5;12musing 300 kW/h per bitcoin transaction (!) that's about 179 kilograms of CO₂ emissions².[39m
|
||
[38;5;12mProgrammable money (or the internet of value)[39m
|
||
[38;5;12mfor all future generations with (bitcoin) script[39m
|
||
[38;5;12mwithout loops and jumps (gotos) and all "stateless"!? LOL.[39m
|
||
|
||
[38;5;12m¹: (Source: [39m[38;5;14m[1mBest of Bitcoin Maximalist - Scammers, Morons, Clowns, Shills & BagHODLers - Inside The New New Crypto Ponzi Economics[0m[38;5;12m (https://bitsblocks.github.io/bitcoin-maximalist))[39m
|
||
|
||
[38;5;12m²: Assuming let's say 0.596 kilograms of CO₂ per kW/h[39m
|
||
[38;5;12m(that's the energy efficiency in Germany) that's[39m
|
||
[38;5;12mabout 179 kilograms of CO₂ per bitcoin transaction (300 kW/h × 0.596 kg). For more insights see the [39m[38;5;14m[1mBitcoin Energy Consumption Index[0m[38;5;12m (https://digiconomist.net/bitcoin-energy-consumption).[39m
|
||
|
||
[38;5;238m――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――[39m
|
||
|
||
|
||
[38;5;12mProgramming[39m[38;5;12m [39m[38;5;12mBitcoin[39m[38;5;12m [39m[38;5;12mfrom[39m[38;5;12m [39m[38;5;12mScratch[39m[38;5;12m [39m[38;5;12m(https://github.com/jimmysong/programmingbitcoin)[39m[38;5;12m [39m[38;5;12mby[39m[38;5;12m [39m[38;5;12mJimmy[39m[38;5;12m [39m[38;5;12mSong,[39m[38;5;12m [39m[38;5;12m2019[39m[38;5;12m [39m[38;5;12m-[39m[38;5;12m [39m[38;5;12mFREE[39m[38;5;12m [39m[38;5;12m(Online[39m[38;5;12m [39m[38;5;12mSource[39m[38;5;12m [39m[38;5;12mVersion)[39m[38;5;12m [39m[38;5;12m--[39m[38;5;12m [39m[38;5;12m_[39m[38;5;14m[1mChapter[0m[38;5;14m[1m [0m[38;5;14m[1m6[0m[38;5;14m[1m [0m[38;5;14m[1m-[0m[38;5;14m[1m [0m[38;5;14m[1mScript[0m[38;5;12m [39m[38;5;12m(https://github.com/jimmysong/programmingbitcoin/blob/master/ch06.asciidoc)[39m[38;5;12m [39m[38;5;12m-[39m[38;5;12m [39m[38;5;12mHow[39m[38;5;12m [39m[38;5;12mScript[39m[38;5;12m [39m
|
||
[38;5;12mWorks[39m[38;5;12m [39m[38;5;12m•[39m[38;5;12m [39m[38;5;12mExample[39m[38;5;12m [39m[38;5;12mOperations[39m[38;5;12m [39m[38;5;12m•[39m[38;5;12m [39m[38;5;12mParsing[39m[38;5;12m [39m[38;5;12mthe[39m[38;5;12m [39m[38;5;12mScript[39m[38;5;12m [39m[38;5;12mFields[39m[38;5;12m [39m[38;5;12m•[39m[38;5;12m [39m[38;5;12mCombining[39m[38;5;12m [39m[38;5;12mthe[39m[38;5;12m [39m[38;5;12mScript[39m[38;5;12m [39m[38;5;12mFields[39m[38;5;12m [39m[38;5;12m•[39m[38;5;12m [39m[38;5;12mStandard[39m[38;5;12m [39m[38;5;12mScripts[39m[38;5;12m [39m[38;5;12m•[39m[38;5;12m [39m[38;5;12mp2pk[39m[38;5;12m [39m[38;5;12m•[39m[38;5;12m [39m[38;5;12mProblems[39m[38;5;12m [39m[38;5;12mwith[39m[38;5;12m [39m[38;5;12mp2pk[39m[38;5;12m [39m[38;5;12m•[39m[38;5;12m [39m[38;5;12mSolving[39m[38;5;12m [39m[38;5;12mthe[39m[38;5;12m [39m[38;5;12mProblems[39m[38;5;12m [39m[38;5;12mwith[39m[38;5;12m [39m[38;5;12mp2pkh[39m[38;5;12m [39m[38;5;12m•[39m[38;5;12m [39m[38;5;12mScripts[39m[38;5;12m [39m[38;5;12mCan[39m[38;5;12m [39m[38;5;12mBe[39m[38;5;12m [39m[38;5;12mArbitrarily[39m[38;5;12m [39m[38;5;12mConstructed[39m[38;5;12m [39m[38;5;12m•[39m[38;5;12m [39m[38;5;12mConclusion[39m[38;5;12m [39m[38;5;12m++_[39m
|
||
[38;5;12m_[39m[38;5;14m[1mChapter 8 - Pay-to-Script Hash[0m[38;5;12m (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 ++_[39m
|
||
[38;5;12m_[39m[38;5;14m[1mChapter[0m[38;5;14m[1m [0m[38;5;14m[1m13[0m[38;5;14m[1m [0m[38;5;14m[1m-[0m[38;5;14m[1m [0m[38;5;14m[1mSegregated[0m[38;5;14m[1m [0m[38;5;14m[1mWitness[0m[38;5;12m [39m[38;5;12m(https://github.com/jimmysong/programmingbitcoin/blob/master/ch13.asciidoc)[39m[38;5;12m [39m[38;5;12m-[39m[38;5;12m [39m[38;5;12mPay-to-Witness-Pubkey-Hash[39m[38;5;12m [39m[38;5;12m(p2wpkh)[39m[38;5;12m [39m[38;5;12m•[39m[38;5;12m [39m[38;5;12mp2wpkh[39m[38;5;12m [39m[38;5;12mTransactions[39m[38;5;12m [39m[38;5;12m•[39m[38;5;12m [39m[38;5;12mp2sh-p2wpkh[39m[38;5;12m [39m[38;5;12m•[39m[38;5;12m [39m[38;5;12mCoding[39m[38;5;12m [39m[38;5;12mp2wpkh[39m[38;5;12m [39m[38;5;12mand[39m[38;5;12m [39m[38;5;12mp2sh-p2wpkh[39m[38;5;12m [39m[38;5;12m•[39m[38;5;12m [39m[38;5;12mPay-to-Witness-Script-Hash[39m[38;5;12m [39m
|
||
[38;5;12m(p2wsh)[39m[38;5;12m [39m[38;5;12m•[39m[38;5;12m [39m[38;5;12mp2sh-p2wsh[39m[38;5;12m [39m[38;5;12m•[39m[38;5;12m [39m[38;5;12mCoding[39m[38;5;12m [39m[38;5;12mp2wsh[39m[38;5;12m [39m[38;5;12mand[39m[38;5;12m [39m[38;5;12mp2sh-p2wsh[39m[38;5;12m [39m[38;5;12m•[39m[38;5;12m [39m[38;5;12mOther[39m[38;5;12m [39m[38;5;12mImprovements[39m[38;5;12m [39m[38;5;12m•[39m[38;5;12m [39m[38;5;12mConclusion_[39m
|
||
|
||
|
||
[38;5;12mProgramming Bitcoin Script Transaction (Crypto) Contracts Step-by-Step ( Beta / Rough Draft )[39m[38;5;12m (https://github.com/openblockchains/programming-bitcoin-script)[39m
|
||
[38;5;12mby Gerald Bauer et al, 2019 - FREE (Online Version) --[39m
|
||
[38;5;12m_Let's start with building your own bitcoin stack machine from zero / scratch and let's run your own bitcoin ops (operations)..._[39m
|
||
|
||
|
||
[38;5;12mProgramming Blockchains in Ruby from Scratch Step-by-Step Starting w/ Crypto Hashes... ( Beta / Rough Draft )[39m[38;5;12m (https://github.com/yukimotopress/programming-blockchains-step-by-step)[39m
|
||
[38;5;12mby Gerald Bauer et al, 2018 - FREE (Online Version) --[39m
|
||
[38;5;12m_(Crypto) Hash ++[39m
|
||
[38;5;12m(Crypto) Block ++[39m
|
||
[38;5;12m(Crypto) Block with Proof-of-Work ++[39m
|
||
[38;5;12mBlockchain! Blockchain! Blockchain! ++[39m
|
||
[38;5;12mBlockchain Broken? ++[39m
|
||
[38;5;12mTimestamping ++[39m
|
||
[38;5;12mMining, Mining, Mining - What's Your Hash Rate? ++[39m
|
||
[38;5;12mBitcoin, Bitcoin, Bitcoin ++[39m
|
||
[38;5;12m(Crypto) Block with Transactions (Tx)_[39m
|
||
|
||
[38;5;12mMastering Ethereum - Building Contract Services and Decentralized Apps on the Blockchain[39m[38;5;12m (https://github.com/ethereumbook/ethereumbook) -[39m
|
||
[38;5;12mby Andreas M. Antonopoulos, Gavin Wood, 2018 - FREE (Online Source Version)[39m
|
||
[38;5;12m_What is Ethereum ++[39m
|
||
[38;5;12mIntroduction ++[39m
|
||
[38;5;12mEthereum Clients ++[39m
|
||
[38;5;12mEthereum Testnets ++[39m
|
||
[38;5;12mKeys and Addresses ++[39m
|
||
[38;5;12mWallets ++[39m
|
||
[38;5;12mTransactions ++[39m
|
||
[38;5;12mContract Services ++[39m
|
||
[38;5;12mTokens ++[39m
|
||
[38;5;12mOracles ++[39m
|
||
[38;5;12mAccounting & Gas ++[39m
|
||
[38;5;12mEVM (Ethereum Virtual Machine) ++[39m
|
||
[38;5;12mConsensus ++[39m
|
||
[38;5;12mDevP2P (Peer-To-Peer) Protocol ++[39m
|
||
[38;5;12mDev Tools and Frameworks ++[39m
|
||
[38;5;12mDecentralized Apps ++[39m
|
||
[38;5;12mEthereum Standards (EIPs/ERCs)_[39m
|
||
|
||
|
||
[38;5;12mBuilding Decentralized Apps on the Ethereum Blockchain[39m[38;5;12m (https://www.manning.com/books/building-ethereum-dapps) by Roberto Infante, 2018 - FREE chapter 1 --[39m
|
||
[38;5;12m_Understanding decentralized applications ++[39m
|
||
[38;5;12mThe Ethereum blockchain ++[39m
|
||
[38;5;12mBuilding contract services in (JavaScript-like) Solidity ++[39m
|
||
[38;5;12mRunning contract services on the Ethereum blockchain ++[39m
|
||
[38;5;12mDeveloping Ethereum Decentralized apps with Truffle ++[39m
|
||
[38;5;12mBest design and security practice_[39m
|
||
|
||
[38;5;12mProgramming Crypto Blockchain Contracts Step-by-Step Book / Guide ( Beta / Rough Draft )[39m[38;5;12m (https://github.com/openblockchains/programming-cryptocontracts) by Gerald Bauer et al, 2019 - FREE (Online Version) --[39m
|
||
[38;5;12m_Let's Start with Ponzi & Pyramid Schemes. Run Your Own Lotteries, Gambling Casinos and more on the Blockchain World Computer..._[39m
|
||
|
||
|
||
[38;5;12mProgramming Cryptocurrencies and Blockchains in Ruby ( Beta / Rough Draft )[39m[38;5;12m (http://yukimotopress.github.io/blockchains)[39m
|
||
[38;5;12mby Gerald Bauer et al, 2018 - FREE (Online Version) @ Yuki & Moto Press Bookshelf --[39m
|
||
[38;5;12m_Digital $$$ Alchemy - What's a Blockchain? -[39m
|
||
[38;5;12mHow-To Turn Digital Bits Into $$$ or €€€? •[39m
|
||
[38;5;12mDecentralize Payments. Decentralize Transactions. Decentralize Blockchains. •[39m
|
||
[38;5;12mThe Proof of the Pudding is ... The Bitcoin (BTC) Blockchain(s)[39m
|
||
[38;5;12m++[39m
|
||
[38;5;12mBuilding Blockchains from Scratch -[39m
|
||
[38;5;12mA Blockchain in Ruby in 20 Lines! A Blockchain is a Data Structure •[39m
|
||
[38;5;12mWhat about Proof-of-Work? What about Consensus? •[39m
|
||
[38;5;12mFind the Lucky Number - Nonce == Number Used Once[39m
|
||
[38;5;12m++[39m
|
||
[38;5;12mAdding Transactions -[39m
|
||
[38;5;12mThe World's Worst Database - Bitcoin Blockchain Mining •[39m
|
||
[38;5;12mTulips on the Blockchain! Adding Transactions[39m
|
||
[38;5;12m++[39m
|
||
[38;5;12mBlockchain Lite -[39m
|
||
[38;5;12mBasic Blocks •[39m
|
||
[38;5;12mProof-of-Work Blocks •[39m
|
||
[38;5;12mTransactions[39m
|
||
[38;5;12m++[39m
|
||
[38;5;12mMerkle Tree -[39m
|
||
[38;5;12mBuild Your Own Crypto Hash Trees; Grow Your Own Money on Trees •[39m
|
||
[38;5;12mWhat's a Merkle Tree? •[39m
|
||
[38;5;12mTransactions[39m
|
||
[38;5;12m++[39m
|
||
[38;5;12mCentral Bank -[39m
|
||
[38;5;12mRun Your Own Federated Central Bank Nodes on the Blockchain Peer-to-Peer over HTTP •[39m
|
||
[38;5;12mInside Mining - Printing Cryptos, Cryptos, Cryptos on the Blockchain[39m
|
||
[38;5;12m++[39m
|
||
[38;5;12mAwesome Crypto[39m
|
||
[38;5;12m++[39m
|
||
[38;5;12mCase Studies - Dutch Gulden • Shilling • CryptoKitties (and CryptoCopycats)_[39m
|
||
|
||
|
||
|
||
[38;5;12mBlockchain for Dummies, IBM Limited Edition[39m[38;5;12m (https://www.ibm.com/blockchain/what-is-blockchain.html) by Manav Gupta, 2017 - FREE (Digital Download w/ Email) --[39m
|
||
[38;5;12m_Grasping Blockchain Fundamentals ++[39m
|
||
[38;5;12mTaking a Look at How Blockchain Works ++[39m
|
||
[38;5;12mPropelling Business with Blockchains ++[39m
|
||
[38;5;12mBlockchain in Action: Use Cases ++[39m
|
||
[38;5;12mHyperledger, a Linux Foundation Project ++[39m
|
||
[38;5;12mTen Steps to Your First Blockchain application_[39m
|
||
|
||
|
||
[38;5;12mGet Rich Quick "Business Blockchain" Bible - The Secrets of Free Easy Money[39m[38;5;12m (https://github.com/bitsblocks/get-rich-quick-bible), 2018 - FREE --[39m
|
||
[38;5;12m_Step 1: Sell hot air. How? ++[39m
|
||
[38;5;12mStep 2: Pump up your tokens. How? ++[39m
|
||
[38;5;12mStep 3: Revolutionize the World. How?_[39m
|
||
|
||
|
||
[38;5;12mBest of Bitcoin Maximalist - Scammers, Morons, Clowns, Shills & BagHODLers - Inside The New New Crypto Ponzi Economics[39m[38;5;12m (https://github.com/bitsblocks/bitcoin-maximalist) by Trolly McTrollface, et al, 2018 - FREE[39m
|
||
|
||
[38;5;12mCrypto Facts - Decentralize Payments - Efficient, Low Cost, Fair, Clean - True or False?[39m[38;5;12m (https://github.com/bitsblocks/crypto-facts) by Nouriel Roubini, David Gerard, et al, 2018 - FREE[39m
|
||
|
||
[38;5;12mCrypto 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[39m[38;5;12m (https://github.com/bitsblocks/crypto-bubbles) by Nouriel Roubini, 2018 - FREE[39m
|
||
|
||
[38;5;12mIslandCoin White Paper - A Pen and Paper Cash System - How to Run a Blockchain on a Deserted Island[39m[38;5;12m (https://github.com/bitsblocks/islandcoin-whitepaper)[39m
|
||
[38;5;12mby Tal Kol --[39m
|
||
[38;5;12m_Motivation ++[39m
|
||
[38;5;12mConsensus ++[39m
|
||
[38;5;12mTransaction and Block Specification -[39m
|
||
[38;5;12mTransaction format •[39m
|
||
[38;5;12mBlock format •[39m
|
||
[38;5;12mGenesis block ++[39m
|
||
[38;5;12mReferences_[39m
|
||
|
||
|
||
|
||
|
||
[38;2;255;187;0m[4mBlockchain (Lite) Crypto Hash Libraries[0m
|
||
|
||
[38;5;14m[1mRuby[0m[38;5;12m (#ruby) •[39m
|
||
[38;5;14m[1mJavaScript[0m[38;5;12m (#javascript)[39m
|
||
|
||
|
||
[38;2;255;187;0m[4mRuby[0m
|
||
|
||
[38;5;14m[1mblockchain.lite[0m[38;5;12m (github: [39m[38;5;14m[1mopenblockchains/blockchain.lite.rb[0m[38;5;12m (https://github.com/openblockchains/blockchain.lite.rb),[39m
|
||
[38;5;12mgem: [39m[38;5;14m[1mblockchain-lite[0m[38;5;12m (https://rubygems.org/gems/blockchain-lite)) -[39m
|
||
[38;5;12mbuild your own blockchain with crypto hashes -[39m
|
||
[38;5;12mrevolutionize the world with blockchains, blockchains, blockchains one block at a time[39m
|
||
|
||
[48;5;235m[38;5;249mrequire 'blockchain-lite'[49m[39m[48;5;235m[38;5;249m [49m[39m
|
||
[48;5;235m[38;5;249m[49m[39m[48;5;235m[38;5;249m [49m[39m
|
||
[48;5;235m[38;5;249mb0 = Block.first( "Genesis" )[49m[39m[48;5;235m[38;5;249m [49m[39m
|
||
[48;5;235m[38;5;249mb1 = Block.next( b0, "Transaction Data..." )[49m[39m[48;5;235m[38;5;249m [49m[39m
|
||
[48;5;235m[38;5;249mb2 = Block.next( b1, "Transaction Data......" )[49m[39m[48;5;235m[38;5;249m [49m[39m
|
||
[48;5;235m[38;5;249mb3 = Block.next( b2, "More Transaction Data..." )[49m[39m
|
||
[48;5;235m[38;5;249m[49m[39m[48;5;235m[38;5;249m [49m[39m
|
||
[48;5;235m[38;5;249mblockchain = **b0, b1, b2, b3** [49m[39m[48;5;235m[38;5;249m [49m[39m
|
||
[48;5;235m[38;5;249m[49m[39m[48;5;235m[38;5;249m [49m[39m
|
||
[48;5;235m[38;5;249mpp blockchain[49m[39m[48;5;235m[38;5;249m [49m[39m
|
||
|
||
[38;5;12mwill pretty print (pp) something like:[39m
|
||
|
||
[48;5;235m[38;5;249m**#<Block:0x1eed2a0[49m[39m[48;5;235m[38;5;249m [49m[39m
|
||
[48;5;235m[38;5;249m @timestamp = 1637-09-15 20:52:38,[49m[39m[48;5;235m[38;5;249m [49m[39m
|
||
[48;5;235m[38;5;249m @data = "Genesis",[49m[39m[48;5;235m[38;5;249m [49m[39m
|
||
[48;5;235m[38;5;249m @previous_hash = "0000000000000000000000000000000000000000000000000000000000000000",[49m[39m[48;5;235m[38;5;249m [49m[39m
|
||
[48;5;235m[38;5;249m @hash = "edbd4e11e69bc399a9ccd8faaea44fb27410fe8e3023bb9462450a0a9c4caa1b">,[49m[39m
|
||
[48;5;235m[38;5;249m #<Block:0x1eec9a0[49m[39m[48;5;235m[38;5;249m [49m[39m
|
||
[48;5;235m[38;5;249m @timestamp = 1637-09-15 21:02:38,[49m[39m[48;5;235m[38;5;249m [49m[39m
|
||
[48;5;235m[38;5;249m @data = "Transaction Data...",[49m[39m[48;5;235m[38;5;249m [49m[39m
|
||
[48;5;235m[38;5;249m @hash = "eb8ecbf6d5870763ae246e37539d82e37052cb32f88bb8c59971f9978e437743",[49m[39m[48;5;235m[38;5;249m [49m[39m
|
||
[48;5;235m[38;5;249m @previous_hash = "edbd4e11e69bc399a9ccd8faaea44fb27410fe8e3023bb9462450a0a9c4caa1b">,[49m[39m
|
||
[48;5;235m[38;5;249m ...[49m[39m[48;5;235m[38;5;249m [49m[39m
|
||
|
||
|
||
[38;2;255;187;0m[4mJavaScript[0m
|
||
|
||
[38;5;14m[1mblockchain.lite[0m[38;5;12m (github: [39m[38;5;14m[1mopenblockchains/blockchain.lite.js[0m[38;5;12m (https://github.com/openblockchains/blockchain.lite.js),[39m
|
||
[38;5;12mnpm: [39m[38;5;14m[1mblockchain-lite[0m[38;5;12m (https://www.npmjs.com/package/blockchain-lite)) -[39m
|
||
[38;5;12mbuild your own blockchain with crypto hashes -[39m
|
||
[38;5;12mrevolutionize the world with blockchains, blockchains, blockchains one block at a time[39m
|
||
|
||
[48;5;235m[38;5;249mconst Blocks = require( "blockchain-lite" )[49m[39m[48;5;235m[38;5;249m [49m[39m
|
||
[48;5;235m[38;5;249m[49m[39m[48;5;235m[38;5;249m [49m[39m
|
||
[48;5;235m[38;5;249m// use basic block[49m[39m[48;5;235m[38;5;249m [49m[39m
|
||
[48;5;235m[38;5;249mlet Block = Blocks.basic[49m[39m[48;5;235m[38;5;249m [49m[39m
|
||
[48;5;235m[38;5;249m[49m[39m[48;5;235m[38;5;249m [49m[39m
|
||
[48;5;235m[38;5;249mlet b0 = Block.first( 'Genesis' )[49m[39m[48;5;235m[38;5;249m [49m[39m
|
||
[48;5;235m[38;5;249mlet b1 = Block.next( b0, 'Transaction Data...' )[49m[39m[48;5;235m[38;5;249m [49m[39m
|
||
[48;5;235m[38;5;249mlet b2 = Block.next( b1, 'Transaction Data......' )[49m[39m[48;5;235m[38;5;249m [49m[39m
|
||
[48;5;235m[38;5;249mlet b3 = Block.next( b2, 'More Transaction Data...' )[49m[39m
|
||
[48;5;235m[38;5;249m[49m[39m[48;5;235m[38;5;249m [49m[39m
|
||
[48;5;235m[38;5;249mlet blockchain = **b0, b1, b2, b3** [49m[39m[48;5;235m[38;5;249m [49m[39m
|
||
[48;5;235m[38;5;249m[49m[39m[48;5;235m[38;5;249m [49m[39m
|
||
[48;5;235m[38;5;249mconsole.log( blockchain )[49m[39m[48;5;235m[38;5;249m [49m[39m
|
||
|
||
[38;5;12mwill log something like:[39m
|
||
|
||
[48;5;235m[38;5;249m** Block {[49m[39m[48;5;235m[38;5;249m [49m[39m
|
||
[48;5;235m[38;5;249m timestamp: 2017-09-25 17:03:38,[49m[39m[48;5;235m[38;5;249m [49m[39m
|
||
[48;5;235m[38;5;249m data: 'Genesis',[49m[39m[48;5;235m[38;5;249m [49m[39m
|
||
[48;5;235m[38;5;249m previousHash: '0000000000000000000000000000000000000000000000000000000000000000',[49m[39m[48;5;235m[38;5;249m [49m[39m
|
||
[48;5;235m[38;5;249m hash: '08f4fa71628c5bc6b430228738bc8c41afaf508ece0b1cf9c9cac53d02e11829' },[49m[39m[48;5;235m[38;5;249m [49m[39m
|
||
[48;5;235m[38;5;249m Block {[49m[39m[48;5;235m[38;5;249m [49m[39m
|
||
[48;5;235m[38;5;249m timestamp: 2017-09-25 17:13:38,[49m[39m[48;5;235m[38;5;249m [49m[39m
|
||
[48;5;235m[38;5;249m data: 'Transaction Data...',[49m[39m[48;5;235m[38;5;249m [49m[39m
|
||
[48;5;235m[38;5;249m previousHash: '08f4fa71628c5bc6b430228738bc8c41afaf508ece0b1cf9c9cac53d02e11829',[49m[39m[48;5;235m[38;5;249m [49m[39m
|
||
[48;5;235m[38;5;249m hash: '740a4aeb3441484c96d1e7f63d31b716220ccee3b6fe94547cae2afbb6010626' },[49m[39m[48;5;235m[38;5;249m [49m[39m
|
||
[48;5;235m[38;5;249m Block {[49m[39m[48;5;235m[38;5;249m [49m[39m
|
||
[48;5;235m[38;5;249m timestamp: 2017-09-25 17:23:38,[49m[39m[48;5;235m[38;5;249m [49m[39m
|
||
[48;5;235m[38;5;249m data: 'Transaction Data......',[49m[39m[48;5;235m[38;5;249m [49m[39m
|
||
[48;5;235m[38;5;249m previousHash: '740a4aeb3441484c96d1e7f63d31b716220ccee3b6fe94547cae2afbb6010626',[49m[39m[48;5;235m[38;5;249m [49m[39m
|
||
[48;5;235m[38;5;249m hash: '28b6892a069e2ff7f1c3128ab495d7cd9b9b1636a51a7f69db93a14b1ee6b1a7' },[49m[39m[48;5;235m[38;5;249m [49m[39m
|
||
[48;5;235m[38;5;249m Block {[49m[39m[48;5;235m[38;5;249m [49m[39m
|
||
[48;5;235m[38;5;249m timestamp: 2017-09-25 17:33:38,[49m[39m[48;5;235m[38;5;249m [49m[39m
|
||
[48;5;235m[38;5;249m data: 'More Transaction Data...',[49m[39m[48;5;235m[38;5;249m [49m[39m
|
||
[48;5;235m[38;5;249m previousHash: '28b6892a069e2ff7f1c3128ab495d7cd9b9b1636a51a7f69db93a14b1ee6b1a7',[49m[39m[48;5;235m[38;5;249m [49m[39m
|
||
[48;5;235m[38;5;249m hash: '4cc0329b2c0cb32e0451fa3179bd944d4cd0fcf410939172f979e9fd2aa9f5f3' } ** [49m[39m
|
||
|
||
|
||
[38;2;255;187;0m[4mGit, Git, Git - The Stupid Content Tracker with Crypto Hashes[0m
|
||
|
||
[38;5;12m_Everything is local. Distributed is the new centralized._[39m
|
||
|
||
[38;5;12m![39m[38;5;12m (i/xkcd1597.png)[39m
|
||
|
||
|
||
[38;2;255;187;0m[4mQuotes - Blockchains and Git[0m
|
||
|
||
[38;5;11m[1m▐[0m[38;5;12m [39m[38;5;12mYep, that's the joke. Nobody has been able to explain to me how the "blockchain" buzzword is significantly different to "git repo".[39m
|
||
[38;5;11m[1m▐[0m[38;5;12m [39m[38;5;12m-- [39m[38;5;14m[1mYaakov[0m[38;5;12m (https://twitter.com/yaakov_h/status/902659507255312384)[39m
|
||
[38;5;11m[1m▐[0m[38;5;12m [39m
|
||
[38;5;11m[1m▐[0m[38;5;12m [39m[38;5;12mBut if you said "let's build a currency where all transactions are stored in a git repo"[39m
|
||
[38;5;11m[1m▐[0m[38;5;12m [39m[38;5;12myou wouldn't be taken seriously for even 24 hrs.[39m
|
||
[38;5;11m[1m▐[0m[38;5;12m [39m[38;5;12m-- [39m[38;5;14m[1mYaakov[0m[38;5;12m (https://twitter.com/yaakov_h/status/902659847224664064)[39m
|
||
|
||
[38;5;11m[1m▐[0m[38;5;12m [39m[38;5;12mSoon explaining git like "a git repo is like a blockchain with commits instead of blocks".[39m
|
||
[38;5;11m[1m▐[0m[38;5;12m [39m[38;5;12m-- [39m[38;5;14m[1mNicolás Berger[0m[38;5;12m (https://twitter.com/nicoberger/status/901776907418697729)[39m
|
||
[38;5;11m[1m▐[0m[38;5;12m [39m
|
||
[38;5;11m[1m▐[0m[38;5;12m [39m[38;5;12m"A local branch is like a state channel. It can be pushed and merged into the master blockchain at any moment."[39m
|
||
[38;5;11m[1m▐[0m[38;5;12m [39m[38;5;12m-- [39m[38;5;14m[1mNicolás Berger[0m[38;5;12m (https://twitter.com/nicoberger/status/901777571456614400)[39m
|
||
|
||
[38;5;11m[1m▐[0m[38;5;12m [39m[38;5;12mThe #Blockchain has changed the world. Here I make the argument that the #Blockchain is just like #git.[39m
|
||
[38;5;11m[1m▐[0m[38;5;12m [39m[38;5;12m-- [39m[38;5;14m[1mJackson Kelley[0m[38;5;12m (https://twitter.com/sjkelleyjr/status/901464041163341824)[39m
|
||
|
||
[38;5;11m[1m▐[0m[38;5;12m [39m[48;5;235m[38;5;249mgit merge **-m REF** **-g BLOB** --push[49m[39m
|
||
[38;5;11m[1m▐[0m[38;5;12m [39m[38;5;12m Merge and push all signed commits to the blockchain.[39m
|
||
[38;5;11m[1m▐[0m[38;5;12m [39m[38;5;12m-- [39m[38;5;14m[1mGit Commands[0m[38;5;12m (https://twitter.com/git_commands/status/935574015015612416)[39m
|
||
|
||
|
||
[38;2;255;187;0m[4mBooks[0m
|
||
|
||
[38;5;12mLearn Enough Git to Be Dangerous[39m[38;5;12m (https://learnenough.com/git-tutorial) by Michael Hartl - FREE (Online Version) --[39m
|
||
[38;5;12m_Getting started ++[39m
|
||
[38;5;12mBacking up and sharing ++[39m
|
||
[38;5;12mIntermediate workflow ++[39m
|
||
[38;5;12mCollaborating ++[39m
|
||
[38;5;12mConclusion ++[39m
|
||
[38;5;12mAdvanced setup_[39m
|
||
|
||
|
||
[38;5;12mPro Git[39m[38;5;12m (https://git-scm.com/book) by Scott Chacon and Ben Straub, 2nd Edition, 2014 - FREE (Online Version) --[39m
|
||
[38;5;12m_Getting Started ++[39m
|
||
[38;5;12mGit Basics ++[39m
|
||
[38;5;12mGit Branching ++[39m
|
||
[38;5;12mGit on the Server ++[39m
|
||
[38;5;12mDistributed Git ++[39m
|
||
[38;5;12mGitHub ++[39m
|
||
[38;5;12mGit Tools ++[39m
|
||
[38;5;12mCustomizing Git ++[39m
|
||
[38;5;12mGit and Other Systems ++[39m
|
||
[38;5;12mGit Internals ++[39m
|
||
[38;5;12mA1: Git in Other Environments ++[39m
|
||
[38;5;12mA2: Embedding Git in your Applications ++[39m
|
||
[38;5;12mA3: Git Commands_[39m
|
||
|
||
|
||
[38;5;11m[1m▐[0m[38;5;12m [39m[38;5;12mGit gets easier once you get the basic idea that branches are homeomorphic endofunctors[39m
|
||
[38;5;11m[1m▐[0m[38;5;12m [39m[38;5;12mmapping submanifolds of a Hilbert space.[39m
|
||
[38;5;11m[1m▐[0m[38;5;12m [39m[38;5;12m-- Anonymous[39m
|
||
|
||
|
||
[38;2;255;187;0m[4mOpen Distributed Databases on Git[0m
|
||
|
||
[38;5;12mfootball.db[39m[38;5;12m (https://github.com/openfootball) - open public domain football datasets (incl. clubs, national teams, leagues, match schedules, etc.)[39m
|
||
|
||
[38;5;12mworld.db[39m[38;5;12m (https://github.com/openmundi) - open public domain world (country) datasets[39m
|
||
|
||
[38;5;12mbeer.db[39m[38;5;12m (https://github.com/openbeer) - open public domain beer & brewery datasets[39m
|
||
|
||
[38;5;11m[1m▐[0m[38;5;12m [39m[38;5;12mAdd a beer transaction to the #blockchain on #git and win a free Wiener Lager beer! Cheers. Prost.[39m
|
||
[38;5;11m[1m▐[0m[38;5;12m [39m[38;5;12m-- [39m[38;5;14m[1mGerald Bauer @ Austria Codes[0m[38;5;12m (https://twitter.com/austriacodes/status/907240018435088384)[39m
|
||
|
||
|
||
|
||
[38;2;255;187;0m[4mOpen Distributed (Hyper) Ledger Books on Git[0m
|
||
|
||
[38;5;12mShilling (or Schilling)[39m[38;5;12m (https://github.com/bitshilling/bitshilling) - Shilling on the Blockchain! - Rock-Solid Alpine Dollar from Austria[39m
|
||
|
||
[38;5;12mTulips[39m[38;5;12m (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[39m
|
||
|
||
|
||
|
||
[38;2;255;187;0m[4mClassic Tulip Mania[0m
|
||
|
||
[38;5;12m_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._[39m
|
||
|
||
[38;5;12m![39m[38;5;12m (i/tulipmania-ii.png)[39m
|
||
|
||
|
||
[38;2;255;187;0m[4mQuotes - Blockchains are the next Internets / Tulips[0m
|
||
|
||
[38;5;11m[1m▐[0m[38;5;12m [39m[38;5;12mPeople who compare digital tokens to tulips are essentially saying digital tokens are a bubble backed[39m
|
||
[38;5;11m[1m▐[0m[38;5;12m [39m[38;5;12mby nothing but pure hype and speculation.[39m
|
||
[38;5;11m[1m▐[0m[38;5;12m [39m
|
||
[38;5;11m[1m▐[0m[38;5;12m [39m[38;5;12mWhat they fail to understand is that tulips come from dirt, not a blockchain.[39m
|
||
[38;5;11m[1m▐[0m[38;5;12m [39m
|
||
[38;5;11m[1m▐[0m[38;5;12m [39m[38;5;12mAnd as we all know, blockchain is possibly the best technological innovation since the internet.[39m
|
||
[38;5;11m[1m▐[0m[38;5;12m [39m[38;5;12mIt will have a tremendous impact on global business and society in general.[39m
|
||
[38;5;11m[1m▐[0m[38;5;12m [39m[38;5;12m-- [39m[38;5;14m[1mTulipToken[0m[38;5;12m (http://tuliptoken.com)[39m
|
||
|
||
|
||
[38;2;255;187;0m[4mBooks[0m
|
||
|
||
[38;5;14m[1mTulipomania: The Story of the World's Most Coveted Flower & the Extraordinary Passions It Aroused[0m[38;5;12m by Mike Dash, 2001 --[39m
|
||
[38;5;12m_A Mania for Tulips ++[39m
|
||
[38;5;12mThe Valley of Tien Shan ++[39m
|
||
[38;5;12mWithin the Abode of Bliss ++[39m
|
||
[38;5;12mStranger from the East ++[39m
|
||
[38;5;12mClusius ++[39m
|
||
[38;5;12mLeiden ++[39m
|
||
[38;5;12mAn Adornment to the Cleavage ++[39m
|
||
[38;5;12mThe Tulip in the Mirror ++[39m
|
||
[38;5;12mFlorists ++[39m
|
||
[38;5;12mBoom ++[39m
|
||
[38;5;12mAt the Sign of the Golden Grape ++[39m
|
||
[38;5;12mThe Orphans of Wouter Winkel ++[39m
|
||
[38;5;12mBust ++[39m
|
||
[38;5;12mGoddess of Whores ++[39m
|
||
[38;5;12mAt the Court of the Tulip King ++[39m
|
||
[38;5;12mLate Flowering_[39m
|
||
|
||
[38;5;14m[1mTulipmania: Money, Honor, and Knowledge in the Dutch Golden Age[0m[38;5;12m by Anne Goldgar, 2007 --[39m
|
||
[38;5;12m_Something Strange ++[39m
|
||
[38;5;12mArt & Flowers ++[39m
|
||
[38;5;12mBloemisten ++[39m
|
||
[38;5;12mGrieving Money ++[39m
|
||
[38;5;12mBad Faith ++[39m
|
||
[38;5;12mCabbage Fever ++[39m
|
||
[38;5;12mGlossary ++[39m
|
||
[38;5;12mA Note on Money_[39m
|
||
|
||
[38;5;12m![39m[38;5;12m (i/tulipmania.png)[39m
|
||
|
||
|
||
[38;2;255;187;0m[4mBreaking News: CryptoKitties (Yes, Cute Little Cartoon Cats) on the Blockchain![0m
|
||
|
||
[38;5;12mCollectible. Breedable. Adorable.[39m
|
||
|
||
[38;5;12mCollect and breed digital cats. Start meow. Buy! Sell! Hold![39m
|
||
|
||
[38;5;12mLearn more @ [39m[38;5;14m[1mcryptokitties.co[0m[38;5;12m (https://cryptokitties.co)[39m
|
||
|
||
|
||
[38;5;12m![39m[38;5;12m (i/cryptokitties-top10-sales.png)[39m
|
||
|
||
|
||
[38;5;12m<!-- note: changed pic; was:[39m
|
||
[38;5;12m ![39m[38;5;12m (i/cryptokitties.png)[39m
|
||
[38;5;12m -->[39m
|
||
|
||
[38;5;12mLatest (and Greatest) Investment Opportunity![39m
|
||
|
||
[38;5;11m[1m▐[0m[38;5;12m [39m[38;5;12mBlockchain has unlocked the magic of digital scarcity, and combining that with the power of[39m
|
||
[38;5;11m[1m▐[0m[38;5;12m [39m[38;5;12mmaking the digital goods persistent gives them a potential value that is only limited by how much[39m
|
||
[38;5;11m[1m▐[0m[38;5;12m [39m[38;5;12mprestige a wealthy person might place on ownership of the item.[39m
|
||
[38;5;11m[1m▐[0m[38;5;12m [39m
|
||
[38;5;11m[1m▐[0m[38;5;12m [39m[38;5;12m-- [39m[38;5;14m[1mJustin Poirier[0m[38;5;12m (https://twitter.com/tokenizedcap/status/938460753589424128)[39m
|
||
|
||
[38;5;11m[1m▐[0m[38;5;12m [39m[38;5;12mAll I want for Christmas is a CryptoKitty.[39m
|
||
[38;5;11m[1m▐[0m[38;5;12m [39m
|
||
[38;5;11m[1m▐[0m[38;5;12m [39m[38;5;12m-- [39m[38;5;14m[1mKayla Williams[0m[38;5;12m (https://twitter.com/kaylaw/status/938590748655550464)[39m
|
||
|
||
[38;5;11m[1m▐[0m[38;5;12m [39m[38;5;12mI got a fever. And the only prescription is more CryptoKitties.[39m
|
||
[38;5;11m[1m▐[0m[38;5;12m [39m
|
||
[38;5;11m[1m▐[0m[38;5;12m [39m[38;5;12m-- [39m[38;5;14m[1mEduardo Salazar[0m[38;5;12m (https://twitter.com/ceduardosalazar/status/938558630663634944)[39m
|
||
|
||
[38;5;11m[1m▐[0m[38;5;12m [39m[38;5;12mMy Gen 7 CryptoKitty #104375. The Future is Meow.[39m
|
||
[38;5;11m[1m▐[0m[38;5;12m [39m
|
||
[38;5;11m[1m▐[0m[38;5;12m [39m[38;5;12m-- [39m[38;5;14m[1mAnshul Dhawan[0m[38;5;12m (https://twitter.com/TheAnshulDhawan/status/938551642202324993)[39m
|
||
|
||
|
||
[38;5;12m![39m[38;5;12m (i/cryptokitties-genes01.png)[39m
|
||
|
||
[38;5;11m[1m▐[0m[38;5;12m [39m[38;5;12m- Fabulous Persian Spock Gerbil Gold Cottoncandy - Extremely rare gen 5 swift virgin | 2.9 ETH[39m
|
||
[38;5;11m[1m▐[0m[38;5;12m [39m[38;5;12m- Rarity: 0.00264% Gen 5 JAGUAR FABULOUS GOLD DALI!! VIRGIN![39m
|
||
[38;5;11m[1m▐[0m[38;5;12m [39m[38;5;12m- 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[39m
|
||
[38;5;11m[1m▐[0m[38;5;12m [39m[38;5;12m- Gold ducat, Gen 5, Virgin, Swift. Very cheap[39m
|
||
[38;5;11m[1m▐[0m[38;5;12m [39m[38;5;12m- Cheap Gen 1 cute kittie with rare genes! Only 0.125 ETH[39m
|
||
[38;5;11m[1m▐[0m[38;5;12m [39m[38;5;12m- UNIQUE Virgin Peach Googly Gold Mauveover gen:2 cooldown:1 0.87992% RARE[39m
|
||
[38;5;11m[1m▐[0m[38;5;12m [39m[38;5;12m- SUPER CHEAP: Gerbil, Ragdoll, Scarlet, Chestnut, Cotton Candy!!! 0.02 ETH (~$14)[39m
|
||
[38;5;11m[1m▐[0m[38;5;12m [39m[38;5;12m- I'm giving away a Gen 1 FAST Gold for free...[39m
|
||
[38;5;11m[1m▐[0m[38;5;12m [39m
|
||
[38;5;11m[1m▐[0m[38;5;12m [39m[38;5;12m-- [39m[38;5;14m[1mCrypoKittiesMarket[0m[38;5;12m (https://www.reddit.com/r/CryptoKittiesMarket)[39m
|
||
|
||
[38;2;255;187;0m[4mAwesome CryptoKitties (and CryptoCopycats)[0m
|
||
|
||
[38;5;12m![39m[38;5;12m (i/cryptokitties-modernart-paintings.png)[39m
|
||
|
||
[38;5;12mA[39m[38;5;12m [39m[38;5;12mcollection[39m[38;5;12m [39m[38;5;12mabout[39m[38;5;12m [39m[38;5;12mAwesome[39m[38;5;12m [39m[38;5;12mCryptoKitties[39m[38;5;12m [39m[38;5;12m(Yes,[39m[38;5;12m [39m[38;5;12mCute[39m[38;5;12m [39m[38;5;12mLittle[39m[38;5;12m [39m[38;5;12mCartoon[39m[38;5;12m [39m[38;5;12mCats)[39m[38;5;12m [39m[38;5;12mon[39m[38;5;12m [39m[38;5;12mthe[39m[38;5;12m [39m[38;5;12mBlockchain![39m[38;5;12m [39m[38;5;12mand[39m[38;5;12m [39m[38;5;12mCryptoCopycats[39m[38;5;12m [39m[38;5;12m-[39m[38;5;12m [39m[38;5;12mdigital[39m[38;5;12m [39m[38;5;12mcollectibles[39m[38;5;12m [39m[38;5;12msecured[39m[38;5;12m [39m[38;5;12mon[39m[38;5;12m [39m[38;5;12ma[39m[38;5;12m [39m[38;5;12mdistributed[39m[38;5;12m [39m[38;5;12mpublic[39m[38;5;12m [39m[38;5;12mdatabases[39m[38;5;12m [39m[38;5;12mw/[39m[38;5;12m [39m[38;5;12mcrypto[39m[38;5;12m [39m[38;5;12mhashes.[39m[38;5;12m [39m[38;5;12mAre[39m[38;5;12m [39m[38;5;12mCryptoPuppies[39m[38;5;12m [39m[38;5;12mthe[39m[38;5;12m [39m[38;5;12mnew[39m[38;5;12m [39m[38;5;12mCryptoKitties?[39m[38;5;12m [39m[38;5;12mLearn[39m[38;5;12m [39m[38;5;12mby[39m[38;5;12m [39m
|
||
[38;5;12mExample[39m[38;5;12m [39m[38;5;12mfrom[39m[38;5;12m [39m[38;5;12mthe[39m[38;5;12m [39m[38;5;12mReal[39m[38;5;12m [39m[38;5;12mWorld[39m[38;5;12m [39m[38;5;12m(Anno[39m[38;5;12m [39m[38;5;12m2017)[39m[38;5;12m [39m[38;5;12m-[39m[38;5;12m [39m[38;5;12mBuy![39m[38;5;12m [39m[38;5;12mSell![39m[38;5;12m [39m[38;5;12mHodl![39m
|
||
|
||
[38;5;12mMore @ [39m[38;5;14m[1mcryptocopycats/awesome-cryptokitties[0m[38;5;12m (https://github.com/cryptocopycats/awesome-cryptokitties)[39m
|
||
|
||
[38;5;12m![39m[38;5;12m (i/cryptokitties-modernart-paintings-iii.png)[39m
|
||
|
||
|
||
|
||
[38;2;255;187;0m[4mEvents, Meetups, Orgs[0m
|
||
|
||
[38;5;12m_Revolutionize the world one country at a time. Blockchainers of the world, unite!_[39m
|
||
|
||
[38;5;12m- [39m[38;5;12mBlockchain Austria • Blockkette Österreich[39m[38;5;12m (https://github.com/austriacodes/blockchain-austria) -- distributed centralized page for blockchain meetups & orgs in Austria (Central Europe)[39m
|
||
|
||
|
||
|
||
[38;2;255;187;0m[4mAwesome Awesomeness[0m
|
||
|
||
[38;5;12m_A curated list of awesome lists._[39m
|
||
|
||
[38;5;12m- [39m[38;5;12mBlockchain Stuff[39m[38;5;12m (https://github.com/Xel/Blockchain-stuff) -- a curated list of blockchain and general cryptocurrency resources[39m
|
||
[38;5;12m- [39m[38;5;12mBlockchain Roadmap[39m[38;5;12m (https://roadmap.sh/blockchain) -- a step-by-step roadmap / guide to become a blockchain programmer[39m
|
||
[38;5;12m- [39m[38;5;12mAwesome Blockchain[39m[38;5;12m (https://github.com/igorbarinov/awesome-blockchain) by Igor Barinov et al -- a curated list of the bitcoin blockchain services[39m
|
||
[38;5;12m- [39m[38;5;12mAwesome Blockchain[39m[38;5;12m (https://github.com/imbaniac/awesome-blockchain) by Tim Reznich et al -- a curated list of blockchain services and exchanges[39m
|
||
[38;5;12m- [39m[38;5;12mAwesome Blockchain[39m[38;5;12m (https://github.com/istinspring/awesome-blockchain) by [39m[48;5;235m[38;5;249mistinspring[49m[39m[38;5;12m et al -- a curated list of awesome projects and services based on blockchain technology[39m
|
||
[38;5;12m- [39m[38;5;12mAwesome Coins[39m[38;5;12m (https://github.com/kennethreitz/awesome-coins) by Kenneth Reitz et al -- a guide to crypto-currencies and their algos[39m
|
||
[38;5;12m- [39m[38;5;12mAwesome CryptoKitties (and CryptoCopycats)[39m[38;5;12m (https://github.com/openblockchains/awesome-cryptokitties) by Gerald Bauer et al -- a curated list about the awesome crypto kitties and copycats[39m
|
||
[38;5;12m- [39m[38;5;12mAwesome Git[39m[38;5;12m (https://github.com/dictcp/awesome-git) by Dick Tang et al -- a curated list of amazingly awesome Git tools, resources and shiny things[39m
|
||
[38;5;12m- [39m[38;5;12mAwesome[39m[38;5;12m (https://github.com/sindresorhus/awesome) by Sindre Sorhus et al -- a curated list of awesome lists[39m
|
||
|
||
|
||
|
||
[38;2;255;187;0m[4mMeta[0m
|
||
|
||
[38;5;14m[1mLicense[0m
|
||
|
||
[38;5;12m![39m[38;5;12m (https://publicdomainworks.github.io/buttons/zero88x31.png)[39m
|
||
|
||
[38;5;12mThe awesome list is dedicated to the public domain. Use it as you please with no restrictions whatsoever.[39m
|
||
|
||
[38;5;12mblockchains Github: https://github.com/openblockchains/awesome-blockchains[39m
|