- 1 https://medium.com/future-crunch/blockchain-is-a-new-model-that-makes-the-existing-model-obsolete-8671ee6dd252
- 2 https://hackernoon.com/the-product-managers-guide-to-the-blockchain-part-1-fb95dfb7af31
- 3 https://stratumn.com/blockchain-basics.html
- 4 le problème des généraux byzantins
- 5 la fourche
- 6 preuve de travail
- 7 Nakamoto
- 8 le réseau P2P
- 9 Block checking
Public, open-source blockchains have a few unique qualities
The first is consensus[modifier]
- Blockchains create a world where parties to a shared piece of information know that the information they’re seeing is the same as the information that everybody else is seeing.
- In game theory terms, this eliminates information asymmetry, which in turn allows for better coordination on mutually beneficial outcomes.
- Consensus systems have of course existed for years, but what’s new about blockchains is that they allow it to happen at a mass, internet level scale, without the need for a centralised governance mechanism, and in spite of the opposition of powerful adversaries.
The second is that they’re tamper-proof.[modifier]
- The brilliance of the code is that instead of stopping fraud through punishment, it stops it through incentives that ensure it’s not worth doing in the first place.
- Conflicted or false copies of the ledger are quickly eliminated through the sheer weight of the math involved in mining, and once the new ledger has been verified through consensus, the chain marches on, without the need for retrospectives.
- special; prosecutors or investigative committees. Once a transaction or a piece of code is confirmed, the information is immutable — there’s no way an individual or group of individuals can fudge it without taking over millions of computers simultaneously.
- And each new step going forward can only be valid if it builds upon the unchangeable body of previous activity.
The third feature is authentication[modifier]
- Each action that takes place on the blockchain is associated with a private key that belongs only to individual actors.
- Unlike traditional enterprise systems, there’s no such thing as administrator privileges.
- This gives blockchains far better security, something that everyone seems to overlook because of the technology’s early associations with the sale of illegal goods.
- In an age of massive data breaches and rampant global cybercrime, the timing of a new technology arriving to solve this problem is particularly opportune.
The fourth, and most important thing about blockchains is that they are digital[modifier]
which gives them a level of flexibility and dynamism that’s historically unprecedented.
- This might sound obvious, but it’s a feature that many people, especially in the finance industry, tend to miss. * Blockchains are built using code, which means they don’t obey the same economic rules as physical commodities or money.
- You can build as many derivative instruments, or decrease your fractional reserve requirements as much as you like, but eventually you run up against physical real world constraints.
- Blockchains, which are the first truly digital form of exchange, don’t have that problem.
- Cryptographic Proof of identity
- Cryptographic proof of identity in simply means proving one’s identity without revealing it.
- Nodes don’t have long term identity
- meaning each node can generate as many public key -private key pairs as they want — all they need to ensure is that they use the right keys to sign transactions
- No real identities are ever revealed
- which is in line with the network’s anonymity principles.
- who Digital Signatures
- Any transaction (activity) on a blockchain uniquely signed with a public and private key pair, which enables anyone to check whether or a certain individual or party signed that transaction, and allows the signee to prove his signature.
- what Scripts
- Blockchain behavior can be uniquely programmed, and business process logic can be programmed around blockchain activity, enabling seamless, automatic, and transparent business workflows.
- when Timestamps
- Thanks to the power of cryptographic hashing, a unique fingerprint of any digital file can be permanently and publicly embedded in a blockchain with a precise timestamp – like a digital fossil.
- Provable Value Chains
- The complete history of changes in these values is recorded in the form of a hash chain:
- Transactions are strictly controlled by the private keys and public signatures of the stakeholders;
- Transparent Consensus
- The Consensus Model is what allows blockchains to maintain a provable history of changes without the need for a central trust authority
le problème des généraux byzantins[modifier]
Le système doit pouvoir maintenir sa fiabilité dans le cas où une part minoritaire des composants enverrait des informations erronées ou malveillantes pour contourner la vérification de la double dépense.
Sometimes separate blocks can be produced concurrently, creating a temporary fork. In addition to a secure hash-based history, any blockchain has a specified algorithm for scoring different versions of the history so that one with a higher value can be selected over others. Blocks not selected for inclusion in the chain are called orphan blocks.
Peers supporting the database have different versions of the history from time to time. They keep only the highest-scoring version of the database known to them.
Whenever a peer receives a higher-scoring version (usually the old version with a single new block added) they extend or overwrite their own database and retransmit the improvement to their peers.
There is never an absolute guarantee that any particular entry will remain in the best version of the history forever. Because blockchains are typically built to add the score of new blocks onto old blocks and because there are incentives to work only on extending with new blocks rather than overwriting old blocks, the probability of an entry becoming superseded goes down exponentially as more blocks are built on top of it, eventually becoming very low.
For example, in a blockchain using the proof-of-work system, the chain with the most cumulative proof-of-work is always considered the valid one by the network. There are a number of methods that can be used to demonstrate a sufficient level of computation. Within a blockchain the computation is carried out redundantly rather than in the traditional segregated and parallel manner.
preuve de travail[modifier]
- Dans le cas de bitcoin, il faut répéter plusieurs centaines de milliards de fois l’opération pour espérer résoudre ce problème.
- aucun groupement de mineurs ne devient majoritaire.
- The miner who guesses the solution to the puzzle gets to post his block and collects transaction fees and and some Bitcoin as a reward.
- Moreover, when the miner posts his block successfully, all other nodes on the blockchain will sync it and work off the new state.
- Anyone trying to mess with your transactions would create a divergence from the consensus blockchain and will be quickly rejected.
network are as follows:
- New transactions are broadcast to all nodes.
- Each node collects new transactions into a block.
- Each node works on finding a difficult proof-of-work for its block.
- When a node finds a proof-of-work, it broadcasts the block to all nodes.
- Nodes accept the block only if all transactions in it are valid and not already spent.
- Nodes express their acceptance of the block by working on creating the next block in the chain, using the hash of the accepted block as the previous hash.
le réseau P2P[modifier]
No need to know about every other system on the network, each node just knows about the 8 or so nodes that it is connected to!
- The bitcoin daemon makes the transaction with the source address and the destination address
- then broadcasts the transaction to the network.
- Each node communicates with neighbouring nodes (8)
- and they communicate with neighbours and so on.
- Then the information propagades. For more details please refer to en.bitcoin.it/wiki/Network Bitcoin Network
- When a node receives a transaction, they advertise the txid to their peers,
- and then their peer will only request the transaction if they haven't seen a transaction with that txid yet
- so it prevents requesting duplicates.
- Generally bitcoin nodes will connect to at least 8 other (random) nodes. This is enough - You pick geographically separate nodes to get a true sense of the network's state.
- Nodes are responsible for relaying information about new transactions and blocks to their peers.
- Transactions which are not double spends will be happily relayed by all nodes who receive them to all the people they connect to. This ensures that miners will hear about transactions.
- Everyone who is fully synced will share the same blockchain. Bitcoin helps people achieve consensus, which simply means they all agree on the same list.
- The Bitcoin miners confirm the transaction and include it in the next(s) blockchain blocks.
- The miners receive the transaction fee as the reward for this.
When the receiver downloads a new Bitcoin blockchain block and sees incoming transaction to his/her address, the receiver knows the payment was made.
The algorithm for checking if a block is valid, expressed in this paradigm, is as follows:
- Check if the previous block referenced by the block exists and is valid.
- Check that the timestamp of the block is greater than that of the previous block and less than 2 hours into the future
- Check that the proof of work on the block is valid.
- Let S be the state at the end of the previous block.
- Suppose TX is the block's transaction list with n transactions. For all i in 0...n-1, set S[i+1] = APPLY(S[i],TX[i]) If any application returns an error, exit and return false.
- Return true, and register S[n] as the state at the end of this block.
Essentially, each transaction in the block must provide a valid state transition from what was the canonical state before the transaction was executed to some new state. Note that the state is not encoded in the block in any way; it is purely an abstraction to be remembered by the validating node and can only be (securely) computed for any block by starting from the genesis state and sequentially applying every transaction in every block. Additionally, note that the order in which the miner includes transactions into the block matters; if there are two transactions A and B in a block such that B spends a UTXO created by A, then the block will be valid if A comes before B but not otherwise.
The one validity condition present in the above list that is not found in other systems is the requirement for "proof of work". The precise condition is that the double-SHA256 hash of every block, treated as a 256-bit number, must be less than a dynamically adjusted target, which as of the time of this writing is approximately 2187. The purpose of this is to make block creation computationally "hard", thereby preventing sybil attackers from remaking the entire blockchain in their favor. Because SHA256 is designed to be a completely unpredictable pseudorandom function, the only way to create a valid block is simply trial and error, repeatedly incrementing the nonce and seeing if the new hash matches.
In order to better understand the purpose of mining, let us examine what happens in the event of a malicious attacker. Since Bitcoin's underlying cryptography is known to be secure, the attacker will target the one part of the Bitcoin system that is not protected by cryptography directly: the order of transactions. The attacker's strategy is simple:
- Send 100 BTC to a merchant in exchange for some product (preferably a rapid-delivery digital good)
- Wait for the delivery of the product
- Produce another transaction sending the same 100 BTC to himself
- Try to convince the network that his transaction to himself was the one that came first.
A Merkle tree is a type of binary tree, composed of a set of nodes with a large number of leaf nodes at the bottom of the tree containing the underlying data, a set of intermediate nodes where each node is the hash of its two children, and finally a single root node, also formed from the hash of its two children, representing the "top" of the tree.