diff --git a/Basic/crypto.md b/Basic/crypto.md index 4769724..d93dba7 100644 --- a/Basic/crypto.md +++ b/Basic/crypto.md @@ -23,6 +23,8 @@ 公开密钥算法总是要基于一个数学上的难题。比如RSA 依据的是:给定两个素数p、q 很容易相乘得到n,而对n进行因式分解却相对困难。那椭圆曲线上有什么难题呢? +![Trapdoor function](https://upload.wikimedia.org/wikipedia/commons/thumb/8/8f/Trapdoor_permutation.svg/300px-Trapdoor_permutation.svg.png) + 考虑如下等式: K=kG [其中 K,G为Ep(a,b)上的点,k为小于n(n是点G的阶)的整数] @@ -99,3 +101,5 @@ B可以每次都到CA的网站上(或者什么别的官方途径)获得CA的 1. [数字签名是什么?](http://www.ruanyifeng.com/blog/2011/08/what_is_a_digital_signature.html) 2. [比特币背后的密码学原理](https://www.jianshu.com/p/225ff9439132) 3. [《区块链原理设计与应用》第5章:密码学与安全技术](https://github.com/yjjnls/books/blob/master/block%20chain/%E5%8C%BA%E5%9D%97%E9%93%BE%E5%8E%9F%E7%90%86%E3%80%81%E8%AE%BE%E8%AE%A1%E4%B8%8E%E5%BA%94%E7%94%A8.pdf) +4. [Secure Hash Algorithms](https://en.wikipedia.org/wiki/Secure_Hash_Algorithms) +5. [Digital Signature Algorithm](https://en.wikipedia.org/wiki/Digital_Signature_Algorithm) \ No newline at end of file diff --git a/Basic/img/blockchain-jesus.png b/Basic/img/blockchain-jesus.png new file mode 100644 index 0000000..b7a97bc Binary files /dev/null and b/Basic/img/blockchain-jesus.png differ diff --git a/README.md b/README.md index 41e0315..70a6a67 100644 --- a/README.md +++ b/README.md @@ -5,12 +5,107 @@ The blockchain is an incorruptible digital ledger of economic transactions that **This is not a simple collection of Internet resources, but verified and organized data ensuring it's really suitable for your learning process and uesful for your development and application.** -Majority of the contents will be written in Chinese, English will also be included. -The repository will be continually updated. - ## Contents +- [Awesome Blockchain](#awesome-blockchain-awesomehttpsgithubcomyjjnlsawesome-blockchain) + - [Contents](#contents) + - [Frequently Asked Questions (F.A.Q.s) & Answers](#frequently-asked-questions-faqs--answers) + - [Basic Introduction](#basic-introduction) + - [Further Extesnsion](#further-extesnsion) + - [Books](#books) + - [Talk Notes](#talk-notes) + - [Development Tutorial](#development-tutorial) + - [BitCoin](#bitcoin) + - [Ethereum](#ethereum) + - [Fabric](#fabric) + - [Releated Tools](#releated-tools) + - [Solidity](#solidity) + - [truffle](#truffle) + - [web3.js](#web3js) + - [Projects and Applications](#projects-and-applications) + - [Monero](#monero) + - [IOTA](#iota) + - [EOS](#eos) + - [IFPS](#ifps) + - [Contribute](#contribute) +## Frequently Asked Questions (F.A.Q.s) & Answers + + +**Q: What's a Blockchain?** + +A: A blockchain is a distributed database with a list (that is, chain) of records (that is, blocks) linked and secured by +digital fingerprints (that is, cryptho hashes). +Example from [`blockchain.rb`](https://github.com/openblockchains/awesome-blockchains/blob/master/blockchain.rb/blockchain.rb): + +``` +[#, + #, + #, + ... +``` + +![](Basic/img/blockchain-jesus.png) + + +**Q: What's a Hash? What's a (One-Way) Crypto(graphic) Hash Digest Checksum**? + +A: A hash e.g. `eb8ecbf6d5870763ae246e37539d82e37052cb32f88bb8c59971f9978e437743` +is a small digest checksum calculated +with a one-way crypto(graphic) hash digest checksum function +e.g. SHA256 (Secure Hash Algorithm 256 Bits) +from the data. Example from [`blockchain.rb`](blockchain.rb/blockchain.rb): + +```ruby +def calc_hash + sha = Digest::SHA256.new + sha.update( @timestamp.to_s + @previous_hash + @data ) + sha.hexdigest ## returns "eb8ecbf6d5870763ae246e37539d82e37052cb32f88bb8c59971f9978e437743" +end +``` + +A blockchain uses + +- the block timestamp (e.g. `1637-09-15 20:52:38`) and +- the hash from the previous block (e.g. `edbd4e11e69bc399a9ccd8faaea44fb27410fe8e3023bb9462450a0a9c4caa1b`) and finally +- the block data (e.g. `Transaction Data...`) + +to calculate the new hash digest checksum, that is, the hash +e.g. `be50017ee4bbcb33844b3dc2b7c4e476d46569b5df5762d14ceba9355f0a85f4`. + + +**Q: What's a Merkle Tree?** + +A: A Merkle tree is a hash tree named after Ralph Merkle who patented the concept in 1979 +(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) +is 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. + +Note: By adding crypto(graphic) hash functions you can "merkelize" any data structure. + + +**Q: What's a Merkelized DAG (Directed Acyclic Graph)?** + +A: It's a blockchain secured by crypto(graphic) hashes that uses a directed acyclic graph data structure (instead of linear "classic" linked list). + +Note: Git uses merkelized dag (directed acyclic graph)s for its blockchains. + + +**Q: Is the Git Repo a Blockchain?** + +A: Yes, every branch in the git repo is a blockchain. +The "classic" Satoshi-blockchain is like a git repo with a single master branch (only). ## Basic Introduction 基础概念和原理介绍 @@ -19,6 +114,7 @@ The repository will be continually updated. * [账户与交易模型](./Basic/account.md) - [ ] 比特币基础知识 - [ ] 以太坊基础知识 +- [ ] 链上治理 - [ ] 数字交易所基础知识 - [ ] 应用与思考 * [数字货币排行](https://coinmarketcap.com/) @@ -28,6 +124,145 @@ The repository will be continually updated. * [区块链技术指南](https://yeasy.gitbooks.io/blockchain_guide/content/) * [区块链原理、设计与应用](https://github.com/yjjnls/books/blob/master/block%20chain/%E5%8C%BA%E5%9D%97%E9%93%BE%E5%8E%9F%E7%90%86%E3%80%81%E8%AE%BE%E8%AE%A1%E4%B8%8E%E5%BA%94%E7%94%A8.pdf) * [区块链 从数字货币到信用社会](https://github.com/yjjnls/books/blob/master/block%20chain/%E5%8C%BA%E5%9D%97%E9%93%BE%20%E4%BB%8E%E6%95%B0%E5%AD%97%E8%B4%A7%E5%B8%81%E5%88%B0%E4%BF%A1%E7%94%A8%E7%A4%BE%E4%BC%9A.pdf) +* [**Attack of the 50 Foot Blockchain: Bitcoin, Blockchain, Ethereum & Smart Contracts**](https://davidgerard.co.uk/blockchain/table-of-contents/) by David Gerard, London, 2017 -- +_What is a bitcoin? ++ +The Bitcoin ideology ++ +The incredible promises of Bitcoin! ++ +Early Bitcoin: the rise to the first bubble ++ +How Bitcoin mining centralised ++ +Who is Satoshi Nakamoto? ++ +Spending bitcoins in 2017 ++ +Trading bitcoins in 2017: the second crypto bubble ++ +Altcoins ++ +Smart contracts, stupid humans ++ +Business bafflegab, but on the Blockchain ++ +Case study: Why you can’t put the music industry on a blockchain_ + +* [**Mastering Bitcoin - Programming the Open Blockchain**](https://github.com/bitcoinbook/bitcoinbook/blob/second_edition/ch09.asciidoc) 2nd Edition, +by Andreas M. Antonopoulos, 2017 - FREE (Online Source Version) -- +_What Is Bitcoin? ++ +How Bitcoin Works ++ +Bitcoin Core: The Reference Implementation ++ +Keys, Addresses ++ +Wallets ++ +Transactions ++ +Advanced Transactions and Scripting ++ +The Bitcoin Network ++ +The Blockchain ++ +Mining and Consensus ++ +Bitcoin Security ++ +Blockchain Applications_ + +* [**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) +by Gerald Bauer et al, 2018 - FREE (Online Version) -- +_(Crypto) Hash ++ +(Crypto) Block ++ +(Crypto) Block with Proof-of-Work ++ +Blockchain! Blockchain! Blockchain! ++ +Blockchain Broken? ++ +Timestamping ++ +Mining, Mining, Mining - What's Your Hash Rate? ++ +Bitcoin, Bitcoin, Bitcoin ++ +(Crypto) Block with Transactions (Tx)_ + + +* [**Programming Cryptocurrencies and Blockchains in Ruby ( Beta / Rough Draft )**](http://yukimotopress.github.io/blockchains) +by Gerald Bauer et al, 2018 - FREE (Online Version) @ Yuki & Moto Press Bookshelf -- +_Digital $$$ Alchemy - What's a Blockchain? - +How-To Turn Digital Bits Into $$$ or €€€? • +Decentralize Payments. Decentralize Transactions. Decentralize Blockchains. • +The Proof of the Pudding is ... The Bitcoin (BTC) Blockchain(s) +++ +Building Blockchains from Scratch - +A Blockchain in Ruby in 20 Lines! A Blockchain is a Data Structure • +What about Proof-of-Work? What about Consensus? • +Find the Lucky Number - Nonce == Number Used Once +++ +Adding Transactions - +The World's Worst Database - Bitcoin Blockchain Mining • +Tulips on the Blockchain! Adding Transactions +++ +Blockchain Lite - +Basic Blocks • +Proof-of-Work Blocks • +Transactions +++ +Merkle Tree - +Build Your Own Crypto Hash Trees; Grow Your Own Money on Trees • +What's a Merkle Tree? • +Transactions +++ +Central Bank - +Run Your Own Federated Central Bank Nodes on the Blockchain Peer-to-Peer over HTTP • +Inside Mining - Printing Cryptos, Cryptos, Cryptos on the Blockchain +++ +Awesome Crypto +++ +Case Studies - Dutch Gulden • Shilling • CryptoKitties (and CryptoCopycats)_ + +* [**Blockchain for Dummies, IBM Limited Edition**](https://www.ibm.com/blockchain/what-is-blockchain.html) by Manav Gupta, 2017 - FREE (Digital Download w/ Email) -- +_Grasping Blockchain Fundamentals ++ +Taking a Look at How Blockchain Works ++ +Propelling Business with Blockchains ++ +Blockchain in Action: Use Cases ++ +Hyperledger, a Linux Foundation Project ++ +Ten Steps to Your First Blockchain application_ + +* [**Get Rich Quick "Business Blockchain" Bible - The Secrets of Free Easy Money**](https://github.com/bitsblocks/get-rich-quick-bible), 2018 - FREE -- +_Step 1: Sell hot air. How? ++ +Step 2: Pump up your tokens. How? ++ +Step 3: Revolutionize the World. How?_ + +* [**Mastering Ethereum - Building Contract Services and Decentralized Apps on the Blockchain**](https://github.com/ethereumbook/ethereumbook) - +by Andreas M. Antonopoulos, Gavin Wood, 2018 - FREE (Online Source Version) +_What is Ethereum ++ +Introduction ++ +Ethereum Clients ++ +Ethereum Testnets ++ +Keys and Addresses ++ +Wallets ++ +Transactions ++ +Contract Services ++ +Tokens ++ +Oracles ++ +Accounting & Gas ++ +EVM (Ethereum Virtual Machine) ++ +Consensus ++ +DevP2P (Peer-To-Peer) Protocol ++ +Dev Tools and Frameworks ++ +Decentralized Apps ++ +Ethereum Standards (EIPs/ERCs)_ + +* [**Building Decentralized Apps on the Ethereum Blockchain**](https://www.manning.com/books/building-ethereum-dapps) by Roberto Infante, 2018 - FREE chapter 1 -- +_Understanding decentralized applications ++ +The Ethereum blockchain ++ +Building contract services in (JavaScript-like) Solidity ++ +Running contract services on the Ethereum blockchain ++ +Developing Ethereum Decentralized apps with Truffle ++ +Best design and security practice_ + + + +* [**Best of Bitcoin Maximalist - Scammers, Morons, Clowns, Shills & BagHODLers - Inside The New New Crypto Ponzi Economics**](https://github.com/bitsblocks/bitcoin-maximalist), 2018 - FREE + +* [**Crypto Facts - Decentralize Payments - Efficient, Low Cost, Fair, Clean - True or False?**](https://github.com/bitsblocks/crypto-facts), 2018 - FREE + +* [**IslandCoin White Paper - A Pen and Paper Cash System - How to Run a Blockchain on a Deserted Island**](https://github.com/bitsblocks/islandcoin-whitepaper) +by Tal Kol -- +_Motivation ++ +Consensus ++ +Transaction and Block Specification - +Transaction format • +Block format • +Genesis block ++ +References_ + +### Talk Notes + +- [**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 +- [**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 +- [**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 +- [**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 ## Development Tutorial ### [BitCoin](https://github.com/bitcoin/bitcoin)