Nederlands introductie hoe je een enterprise blockchain applicatie kan bouwen en op welke platformen. Deze presentatie is gegeverns tijden de Cryto Café meetup van 15/11/2018
Presentatie minisymposium M&I Partners van 20 september 2010
Hoe bouw je een enterprise blockchain?
1. Hoe bouw je een
enterprise Blockchain
implementblockchain.tech
2. Even introduceren
Robert van Mölken
Blockchain / App Integratie specialist
Oracle Groundbreaker / ACE
“Coder by day and Miner by night”
Linkedin: linkedin.com/in/rvmolken
Blog: implementblockchain.tech
Twitter: @robertvanmolken
4. How-to in 20/25 minuten
• Recap: Wat is een blockchain
(beter gezegd een DLT)?
• Wat is een decentrale applicatie?
• “Public” versus “Permissioned”,
wat moet ik kiezen?
• Wat heb ik nodig om zelf een
blockchain app te bouwen?
7. Wat is een Blockchain?
Smart contracts + ‘key/value’
database met huidige staat
Ledger registreert
ALLE transacties
Distributed Ledger Technology
(afkorting: DLT)
8. Wat is een Blockchain?
Decentraal peer-to-peer
network van nodes
Transacties worden gevalideerd
door meerdere entiteiten
Public key-cryptografie
zonder centrale autoriteit
blockchain == ‘digitaal vertrouwen’
9. Hoe werkt een enterprise DLT (zoals blockchain)?
Plaatsen van order
Parameters, JSON
Gossip protocol
Smart contract
code incl. bedrijfsregels
Ordenen van
transacties en
samenvoegen
tot lijst
Opslag van
de data in ledger
Notificatie terug
naar applicatie
10. Blokken in een blockchain =
pagina’s in een boek
Een boek is een reeks pagina's, elke pagina
bevat:
• stukken tekst: het verhaal
• informatie over zichzelf: de titel, pagina
Een blockchain is een reeks blokken, elk
blok bevat:
• de inhoud: lijst met transacties + data
• een header: technische meta informatie
12. WAT IS EEN DECENTRALE APPLICATIE?
Een Dapp is een ‘blockchain enabled’ web-app,dat draait op een peer-to-peer network van
computers in plaats van een enkele service waar Smart Contracts het mogelijk maken om
te verbinden met de blockchain data.Het bevat zowel een front-end and back-end welke
onafhankelijk van elkaar draaien!
13. Waar bestaat een Dapp uit?
• Back-end == Smart Contract(s)
• Overeenkomsten tussen partijen met
geautomatiseerde uitvoering die kunnen
fungeren als aanvulling op of vervanging van
juridische contracten of zakelijke transacties
• Computerprogrammacode die de
onderhandeling over of uitvoering van een
overeenkomst kan faciliteren, uitvoeren en
afdwingen door middel van bedrijfsregels
• Voorbeeld toont contract om een bestelling
te plaatsen voor aankoop van een voertuig
en publiceert een gebeurtenis wanneer de
bestelling is geplaatst
14. Waar bestaat een Dapp uit?
Een decentrale applicatie bevat ook:
• Data model dat de deelnemers, assets, transacties,
en optionele notificaties beschrijft
• Autorisatie en machtigingen model
• APIs dat de front-end verbind met de back-end
• Een front-end web applicatie (kan draaien buiten
de blockchain)
16. Verschil tussen public en permissioned
Public (permissionless) blockchains
– Iedereen in de wereld kan informatie lezen
– Iedereen in de wereld kan transactions versturen
– Iedereen ziet alle transacties die valide zijn
– Iedereen kan deelnemen in het consensus proces
– Volledig decentraal
Private (permissioned) blockchains
– Schrijf rechten worden uitgegeven door/aan een consortium van bedrijven
– Lees rechten kunnen publiek zijn of worden beperkt
– Inclusief database management, auditing, etc
– Consortium van geselecteerde node nemen deel in het consensus proces
– Gedeeltelijk decentraal
17. Welke platform zijn er beschikbaar?
Public Blockchains
• BitCoin, AltCoins (Single purpose)
• Ethereum (DApps & Tokens)
• NEO, IPFS & Blockstack (DApps)
• IOTA (= DLT voor o.a. IoT)
Permissioned blockchains
• Eris::Monax & R3/Corda
• Oracle’ Blockchain Cloud Service
• IBM’ Blockchain as a Service
• Hyperledger Fabric & Multichain
18. WAT HEB IK NODIG OM ZELF EEN
BLOCKCHAIN APP TE DRAAIEN?
Ethereum versus Hyperledger Fabric
19. • Decentraal Blockchain Platform (ethereum.org)
• Mainnet is publiek / globaal gedeelde infrastructuur
• Organisaties kunnen eigen (Test) netwerk opzetten
• Key features: Smart Contracts, en Digitale Valuta
• Doeleinden: ICO’s, ETH Name Service, Gokken, Ads, Games…
Public
20. Gedistribueerd ledger framework om bedrijfsapplicaties / -
processen veilig uit te breiden en transacties binnen het
ecosysteem van partners te versnellen, inclusief slimme
contracten en geautoriseerde kanalen
Permissioned
21. Wat is Hyperledger Fabric?
• Bestaat uit een ledger (world state + transactie log)
• Draait smart contracts (chaincode) voor koppeling data
• Systeem waarbij deelnemers hun transacties kunnen managen
• Het is een “permissioned” blockchain
– Aanmelden via een Membership Service Provider
• Bevat aantal inwisselbare opties
– Sla data op in meerdere formats
– Verschillende consensus mechanismen
• Mogelijkheid voor aanmaken van meerdere channels
– Maak voor bepaalde groepen aparte ledgers aan.
23. WAT HEB IK NODIG OM ZELF EEN
BLOCKCHAIN APP TE ONTWIKKELEN?
Ethereum versus Hyperledger Fabric
24. Ontwikkel een Ethereum Dapp
• Smart contracts kan je schrijven in:
– Solidity (beïnvloed door C++, Python, JavaScript)
– De strictere Vyper (beïnvloed door Python)
• Compileert naar bytecode en draait op EVM
• Code beschikbaar as adressen op blockchain
• Interface (API / SDK):
– Web3.js voor JavaScript
– Web3j voor Java/Android
– Go Ethereum for Go
• Front-end applicatie implementatie API/SDK
25. Ontwikkel een Fabric Dapp
• Smart contracts (chaincode) kan je schrijven in:
– Go, JavaScript (Node.js) en Java
– Maakt gebruik van Fabric Shim
• Compileert naar taal specifieke binary
• Code draait op taal eigen runtime op Docker
• Interface (API / SDK):
– SDKs voor Go, JS en Java
– Sommige cloud providers bieden REST API
• Front-end applicatie implementatie API/SDK
26. Vervolg Resources
• Build a Decentralized Blockchain
Application with Hyperledger Fabric and
Composer @ YT
• Smart Contracts on Ethereum with
Truffle Suite @ YT
• Implement Blockchain Tech
(developer & nieuws blog)
• Boek kopen? @ Amazon of Packt
Notes de l'éditeur
Het is een digitaal grootboek systeem voor het registreren van transacties van verschillende activa (ook wel assets genoemd) in een geordende lijst die wordt gerepliceerd over beschikbare nodes in het netwerk, in plaats van te worden opgeslagen in een centrale gegevensopslag (dat wil zeggen traditionele databases).
Het grootboek registreert ALLE transacties die zijn ingediend bij de blockchain. Het bevat het onbewerkte gegevensgedeelte van de transactie en enige informatie over de node of de deelnemer die de transactie heeft ingediend.
De meer ontwikkelde blockchains houden ook een gescheiden key/value-database bij met de huidige status van een asset (de laatste waarden). De veel gevallen zorgen de transacties ervoor dat een smart contract functie wordt uitgevoerd en de data gereed maakt voor opslag.
De gegevens worden op een vertrouwde manier gedistribueerd naar alle nodes met behulp van een gedecentraliseerd peer-to-peer-protocol in bijna realtime.
Het maakt gebruik van een combinatie van digitale handtekeningen en cryptografie om ieders identiteit en authenticiteit te bewijzen en om lees / schrijf- en uitvoeringsmachtigingen (toegangsrechten) af te dwingen. Dit maakt het mogelijk om schrijftoegang te verlenen aan bepaalde deelnemers en om de toegang tot bepaalde deelnemers of een breder publiek, bijvoorbeeld iedereen, te lezen.
Elke node verwerkt en verifieert elke transactie afzonderlijk, verwerkt de geverifieerde transacties tot een resultaat set, welke wordt gesorteerd door het consensus-algorithme en verzendt ze naar alle andere nodes in het netwerk. Met behulp van een consensusmechanisme wordt het transactieblok gevalideerd door andere knooppunten, waarbij de meerderheid het blok moet goedkeuren voordat het definitief wordt en wordt toegevoegd aan de blockchain.
Eerste figuur toont de relatie tussen pagina's in een boek en blokken die aan elkaar zijn gekoppeld om een ketting te maken. Tweede figuur toont de voorspelbaarheid van pagina's en dat het gemakkelijk is om de volgorde ervan te kennen. Als alle pagina's uit het boek worden getrokken en op een stapel worden gelegd, is het eenvoudig om ze weer op volgorde te plaatsen. Een blockchain is slimmer, elk blok linkt terug naar het vorige blok door de vingerafdruk van het blok. De vingerafdruk wordt bepaald door de inhoud en de vingerafdruk van het vorige blok.
In een boek is de volgorde van de pagina's impliciet gebouwd op de pagina waarvan het nummer een minder is. Pagina 5 volgt na pagina 4 (5 min 1), terwijl blokken worden weergegeven door vingerafdrukken of hashes die op elkaar zijn gebouwd. Blok 3 met hash 90fk5n wordt bijvoorbeeld bepaald door zijn gegevens te hashen samen met hash n58uf0 van het vorig blok.