Bank Account Number: DE44 5001 0517 5407 3249 31 Date Description Debit Credit Balance 19.09.2017 Check from X 500 € 500 € 20.09.2017 Payment to Y 200 € 300 € 21.09.2017 Payment to Z 100 € 200 €
TX1 from to amount TX2 from to amount TX3 from to amount TX4 from to amount TX5 from to amount Hash of previous block Hash of previous block Hash (…) Block x Hash (…) Blockchain
• Announce your transaction to everyone • In your announcement, point to the specific account on the network you want to use. • Cryptographically sign your announcement with the same software key that is linked to that account so everyone knows the transaction is yours. • But… it almost works.
to make sure that if you broadcast 2 competing announcements (e.g. try to spend same funds twice), only 1 of your attempt counts. Known as “Double Spending” problem.
how to make electronic payments without a trusted central party like Chase or PayPal or the Federal Reserve. The paper proposes a breakthrough solution for consensus without any trusted central party That paper laid the birth of “Bitcoin”
• We can’t avoid the need for one, but we can avoid designating one in advance or using the same one for every batch of transactions • “Let entities compete.” – Sounds Interesting! • But what’s missing? A reward for winning. An asset.
call the entities competing for the right to timestamp the latest batch of announced transactions “miners.” • Let’s make sure anyone can join this contest at any time by making the code and network open. • The algorithm is named as “Proof of Work” algorithm.
based on a very big random number. 2. The number is really, really hard to find. 3. So hard that the only way to find it is to use tons of processing power. 4. Difficult to solve – easy to validate (imagine Sudoku) 5. Difficulty makes sure that competitors have incurred a real financial cost. 6. Miners compete to solve that riddle as fast as possible. 7. Whoever wins the race to solve that riddle and becomes the designated time stamper for given batch of transactions, gets a reward 8. That way, miners don’t use that computation power for evil transactions.
class that enable decentralized applications. X Don’t compare them with traditional currencies because it’s not about crypto currency vs fiat currency. Better to refer crypto currency as “crypto asset” So, Crypto assets are a new asset class that enable decentralized applications.
“A smart contract is a computerized transaction protocol that executes the terms of a contract.” • A Smart Contract is a computer protocol/program intended to facilitate, verify, or enforce the negotiation or performance of a contract.
one making the agreement without involvement of a intermediary (a broker, lawyer or other intermediaries). • Transparency – Every state change becomes openly available. • Fairness – The source is openly available therefore the contract design can tell us if it is based on fairness or not. • Trust – Your documents are encrypted on a shared ledger. There’s no way that someone can say they lost it. • Backup – Imagine if your bank lost your savings account. On the blockchain, each and every one of your friends has your back. Your documents are duplicated many times over. • Savings – Smart contracts can save you money by removing the presence of an intermediary. • Accuracy – Automated contracts are not only faster and cheaper but also avoid the errors that come from manually filling out heaps of forms.
833981016040 528080518201 919060200150 505b5b3360… Node Client VM TX from data amount TX import 'A.sol'; contract B isA{ uint public a; function B(){ a =0; } }
528080518201 919060200150 505b5b3360… Node Client VM TX from data amount Deploy Contract through transaction Push into network TX import 'A.sol'; contract B isA{ uint public a; function B(){ a =0; } }
505b5b3360… Node Client VM TX from data amount TX Node (Miner) Client VM TX Pool TX Contract Address import 'A.sol'; contract B isA{ uint public a; function B(){ a =0; } }
505b5b3360… Node Client VM TX from data amount Deploy Contract through transaction Push into network TX Node (Miner) Client VM TX Pool TX Contract Address Contract Mined! import 'A.sol'; contract B isA{ uint public a; function B(){ a =0; } }
505b5b3360… Node Client VM TX from data amount Deploy Contract through transaction Push into network TX Node (Miner) Client VM TX Pool Node Client VM Contract Address import 'A.sol'; contract B isA{ uint public a; function B(){ a =0; } }
Compiler 0x6060604052 604051610450 380380610450 833981016040 528080518201 919060200150 505b5b3360… Node Client VM TX from data amount Deploy Contract through transaction Push into network TX Node (Miner) Client VM TX Pool Node Client VM Contract Address import 'A.sol'; contract B isA{ uint public a; function B(){ a =0; } }
Public validation - Public vs. Private – sense of obscurity? - Everybody, anything, any time - Unstoppable Fairness & Trust Collaboration & Motivation Efficiency & Maintenance - Incentives for stakeholders - Costs for services - Benefit should be given - Multiple parties establish trust - Who is allowed to do what? - When is who allowed to do what? - Data can only go in (no outside calls) - One cannot argue with a contract - Mistakes are unchangeable - Higher complexity = Higher cost - Complexity restrictions
(processes) - Accounts - Assets - Lack of (good) user interfaces Regulation Risk Volatility - Identity - Law Situation - Governance - Volatility of the currencies - Volatility of the software - Restriction to Ledger - Lack of standards