Come find out how you can build a peer-to-peer distributed ledger forged by consensus. Understand through code how to create “smart contracts” and "chain code" and develop a different type of transactional application that establishes trust, accountability and transparency, while streamlining business processes and legal constraints.
1. @ t h e b e e b s
A Developer Primer on Blockchain
Martin Beeby
Principle Evangelist AWS
2. @ t h e b e e b s
M a r t i n B e e b y
@ t h e b e e b s
A software developer since I was 16
Developer for 20 years
Work at Amazon Web Services
MARTIN BEEBY
@THEBEEBS
3. @ t h e b e e b s
M a r t i n B e e b y
TERESANUSRET DONALD
@ t h e b e e b s
THREE PEOPLE
4. @ t h e b e e b s
M a r t i n B e e b y
@ t h e b e e b s
ALL WORK IN AN OFFICE
5. @ t h e b e e b s
M a r t i n B e e b y
@ t h e b e e b s
NUSRET THE BAKER
6. @ t h e b e e b s
M a r t i n B e e b y
TERESANUSRET DONALD
@ t h e b e e b s
THEY BUY
7. @ t h e b e e b s
M a r t i n B e e b y
TERESANUSRET DONALD
@ t h e b e e b s
TERESA BUYS
8. @ t h e b e e b s
M a r t i n B e e b y
TERESANUSRET DONALD
@ t h e b e e b s
DONALD BUYS
9. @ t h e b e e b s
M a r t i n B e e b y
TERESANUSRET DONALD
@ t h e b e e b s
TERESA SELLS
10. @ t h e b e e b s
M a r t i n B e e b y
TERESANUSRET DONALD
@ t h e b e e b s
NUSRET ALSO BUYS
11. @ t h e b e e b s
M a r t i n B e e b y
@ t h e b e e b s
Handsome
Smart
Remote Worker
NEW PERSON
JOINS THE TEAM
12. @ t h e b e e b s
M a r t i n B e e b y
@ t h e b e e b s
MARTIN
13. @ t h e b e e b s
M a r t i n B e e b y
@ t h e b e e b s
Transferring Money between them is now harder
Easy to lose track of who owes what
Lets build a database
MONEY IS A
PAIN
14. @ t h e b e e b s
M a r t i n B e e b y
@ t h e b e e b s
Martin Controls it
Each cake sale is a transaction
The seller tells martin about the transaction. He records it
CREATE A
DATABASE
15. @ t h e b e e b s
M a r t i n B e e b y
DONALD MARTIN
@ t h e b e e b s
TERESANUSRET
TRANSACTIONS
16. @ t h e b e e b s
M a r t i n B e e b y
@ t h e b e e b s
Trust Required (Fraud)
Transparency
Central Control
WHAT’S THE
PROBLEM?
17. @ t h e b e e b s
M a r t i n B e e b y
@ t h e b e e b s
Most Business run this way
Big Databases are not a problem
If there is Trust
18. @ t h e b e e b s
M a r t i n B e e b y
@ t h e b e e b s
MARTIN HAS A CAKE PROBLEM
19. @ t h e b e e b s
M a r t i n B e e b y
DONALD MARTIN
@ t h e b e e b s
TERESANUSRET
DATABASE FOR EVERYONE
20. @ t h e b e e b s
M a r t i n B e e b y
@ t h e b e e b s
Hard to keep in sync
Hard to agree
Hard to reach consensus
PEOPLE COULD
STILL DEFRAUD
22. @ t h e b e e b s
M a r t i n B e e b y
Blockchain builds trust in a network
Eliminates the need for central authority in business networks
Three main components: distributed ledger, consensus mechanism,
and “smart contract” execution environment
23. @ t h e b e e b s
M a r t i n B e e b y
Customers are experimenting in many industries
Proof of Ownership
Digital Security Trading
Documents/Contracts
Enterprise Platforms
Financial
Insurance
Mortgage Loans
Voting Mechanisms
Patient Records
Corporate Governance
HCLS
Real Estate
Legal
Agriculture
Gaming
M & E
Transportation
Digital Advertising
Power/Utilities
Retail
Capital Markets
Cloud
OWNERSHIPPRIVATE MARKETS
DERIVATIVES
WAGERS
GLOBAL PAYMENTS
REMITTANCE
NOTARISATION
EQUITY
MICROFINANCE
INTELLECTUAL PROPERTY
TITLE RECORD
ESCROW
DIGITAL RIGHTS
E-COMMERCE
DEBT
CROWDFUNDING
P2P LENDING
HEALTHCARE
VOTING
TRUSTEES
SMART
CONTRACTS
DIGITAL
CURRENCY
SECURITIES
RECORD
KEEPING
BLOCKCHAIN
TECHNOLOGY
24. @ t h e b e e b s
M a r t i n B e e b y
DONALD MARTIN
@ t h e b e e b s
TERESANUSRET
PUBLIC AND PRIVATES OR CERTIFICATE
Private Key Private Key Private Key Private Key
Address 1 Address 2 Address 3
Address 6
Address 5
25. @ t h e b e e b s
M a r t i n B e e b y
@ t h e b e e b s
TRANSACTIONS
Sender Amount Receiver Signed
Address 1 5 Address 2 110101010
Address 2 4 Address 3 010101010
Address 3 3 Address 1 010011010
26. @ t h e b e e b s
M a r t i n B e e b y
@ t h e b e e b s
Listen for transactions and validates them
Order transactions into a block
Creates and hashes blocks
PEERS LISTEN
FOR
TRANSACTIONS
Sender Receiver Signed
Address 1 5 Address 2 110101010
Address 2 4 Address 3 010101010
Address 3 3 Address 1 010011010
27. @ t h e b e e b s
M a r t i n B e e b y
@ t h e b e e b s
HASHING
SHA256
446F09C5D7DB665A
851077054EBC7067
56E372A32C8753F0
428B6671CA6CE449
In west Philidelphia
born and raised on
the play ground was
where I spent most of
my days. Chilling
223E8E360399E82A
C97B37A73FA1F532
071F03D8A174FA56
6D44F1770CC37D9A
Istanbul
28. @ t h e b e e b s
M a r t i n B e e b y
Suggest blocks to the
network
Other validating peers will
verify the block.
But how can they trust the new
block?
How do they reach consensus?
29. @ t h e b e e b s
M a r t i n B e e b y
@ t h e b e e b s
Solve a complex problem involving the hashing of the block
Would be very expensive to try and present incorrect blocks
Miners on bitcoin spend huge sums of money on electric
PROOF OF
WORK
Jargon: A Consensus
Algorithm
30. @ t h e b e e b s
M a r t i n B e e b y
@ t h e b e e b s
Proof of Stake
Proof of Elapsed Time
Byzantine fault tolerant
OTHER
CONSENSUS
ALGORITHM
31. @ t h e b e e b s
M a r t i n B e e b y
80801
72456
80801
98994
A series of blocks that
are hashed
And linked by the hash of the
previous block
80801
72456
34623
32. @ t h e b e e b s
M a r t i n B e e b y
DONALD MARTIN
@ t h e b e e b s
TERESANUSRET
OTHER PEERS VERIFY
33. @ t h e b e e b s
M a r t i n B e e b y
@ t h e b e e b s
PEERS THEN BUILD ANOTHER
34. @ t h e b e e b s
M a r t i n B e e b y
@ t h e b e e b s
A list of transactions grouped into blocks
Blocks chained together by knowing the previous hash
Nothing can be easily altered, the slightest modification
would be obvious
A BLOCKCHAIN IS
Jargon: Merkle Tree 80801
72456
80801
72456
34623
35. @ t h e b e e b s
M a r t i n B e e b y
What Can A Developer
Do?
Smart Contracts (chaincode)
and Build Distributed apps
36. @ t h e b e e b s
M a r t i n B e e b y
Public and permissioned networks
Public networks allow anyone to
participate in the network. Members are
incentivized to maintain the network
Permissioned networks limit
the members to known entities
38. Network 1 – Managed Blockchain
VPC endpoint
VPC endpoint
Account A
Account B
39. @ t h e b e e b s
M a r t i n B e e b y
Chaincode basics
Code executed on the network, and can query and update ledger
Fabric supports chaincode in three languages:
Chaincode execute within a docker container on peer nodes
Chaincode has two operations in its interface:
• Init()—initializes the chaincode with parameters
• Invoke()—invokes the chaincode with parameters
40. @ t h e b e e b s
M a r t i n B e e b y
Peer nodes
Ordering service
blob3
blckNo
tx1
tx2
Block
forming
blob1
Verify endorsement, readset
If OK then apply writeset
Else invalid transaction (blob)
Genesis block
Submitting
client
Peer
Validated Ledger (VL)PeerLedger
PeerLedger Validated Ledger
blockblock seqNo=blckNo
3
4
seqNo
blob1
blob2
Orders
• Stores a copy of
the ledger database
• Executes chaincode and
endorses transactions
• Validates transactions
before the final commit
to ledger
41. @ t h e b e e b s
M a r t i n B e e b y
Endorsement policies
Endorsement policies allow
chaincode to specify which
members (or how many)
need to validate a transaction
before submitting
Endorsed transactions
then get submitted to
the ordering service and
assembled into blocks
Member 1
client
Hyperledger Fabric ordering service
Ledger LedgerMember 2
Peer
Member 1
Peer
1
3 2
1
3
42. @ t h e b e e b s
M a r t i n B e e b y
@ t h e b e e b s
From Sea to Table
Lots of Fraud
Could benefit from Transparency
THE TUNA
SUPPLY CHAIN
43. @ t h e b e e b s
M a r t i n B e e b y
@ t h e b e e b s
Sarah is the fisherman who sustainably and legally catches tuna.
Regulators verify that the tuna has been legally/sustainably caught.
Miriam is a restaurant owner who wants legal/sustainable tuna
TUNA SUPPLY
CHAIN
Carl is another restaurant owner fisherman Sarah can sell tuna to.
44. @ t h e b e e b s
M a r t i n B e e b y
@ t h e b e e b s
Sarah sells at different prices
Privacy around deals
Carl shouldn’t see Miriams price
DEALS NEED TO
BE PRIVATE
46. @ t h e b e e b s
M a r t i n B e e b y
Channels for access control
Channels allow isolation of
transactions among specific
members in the network
Create or update a
channel with configuration
transaction (configtx)
Member 1 Member 2 Member 3
Channel 2
Ledger
Channel 1
Ledger
Hyperledger Fabric ordering service
Channel 2Channel 1
Member 2
Peer
Member 3
Peer
Member 1
Peer
47. @ t h e b e e b s
M a r t i n B e e b y
@ t h e b e e b s
CHAINCODE
package main
import (
"fmt"
"github.com/hyperledger/fabric/core/chaincode/shim"
"github.com/hyperledger/fabric/protos/peer"
)
48. @ t h e b e e b s
M a r t i n B e e b y
@ t h e b e e b s
TUNA STRUCT
type Tuna struct {
Vessel string ‘json:"vessel"’
Datetime string ‘json:"datetime"’
Location string ‘json:"location"’
Holder string ‘json:"holder"’
}
49. @ t h e b e e b s
M a r t i n B e e b y
@ t h e b e e b s
INIT
func (s *SmartContract) initLedger(APIstub shim.ChaincodeStubInterface) sc.Response {
tuna := []Tuna{
Tuna{Vessel: "923F", Location: "67.0006, -70.5476", Timestamp: "1504054225", Holder: "Miriam"},
Tuna{Vessel: "M83T", Location: "91.2395, -49.4594", Timestamp: "1504057825", Holder: "Dave"},
Tuna{Vessel: "T012", Location: "58.0148, 59.01391", Timestamp: "1493517025", Holder: "Igor"},
Tuna{Vessel: "P490", Location: "-45.0945, 0.7949", Timestamp: "1496105425", Holder: "Amalea"},
Tuna{Vessel: "S439", Location: "-107.6043, 19.5003", Timestamp: "1493512301", Holder: "Rafa"},
Tuna{Vessel: "J205", Location: "-155.2304, -15.8723", Timestamp: "1494117101", Holder: "Shen"},
Tuna{Vessel: "S22L", Location: "103.8842, 22.1277", Timestamp: "1496104301", Holder: "Leila"},
Tuna{Vessel: "EI89", Location: "-132.3207, -34.0983", Timestamp: "1485066691", Holder: "Yuan"},
Tuna{Vessel: "129R", Location: "153.0054, 12.6429", Timestamp: "1485153091", Holder: "Carlo"},
Tuna{Vessel: "49W4", Location: "51.9435, 8.2735", Timestamp: "1487745091", Holder: "Fatima"},
}
i := 0
for i < len(tuna) {
fmt.Println("i is ", i)
tunaAsBytes, _ := json.Marshal(tuna[i])
APIstub.PutState(strconv.Itoa(i+1), tunaAsBytes)
fmt.Println("Added", tuna[i])
i = i + 1
}
return shim.Success(nil)
}
51. @ t h e b e e b s
M a r t i n B e e b y
@ t h e b e e b s
INVOKE
func (s *SmartContract) Invoke(APIstub shim.ChaincodeStubInterface) sc.Response {
// Retrieve the requested Smart Contract function and arguments
function, args := APIstub.GetFunctionAndParameters()
// Route to the appropriate handler function to interact with the ledger appropriately
if function == "queryTuna" {
return s.queryTuna(APIstub, args)
}
else if function == "initLedger" {
return s.initLedger(APIstub)
} else if function == "recordTuna" {
return s.recordTuna(APIstub, args)
} else if function == "queryAllTuna" {
return s.queryAllTuna(APIstub)
} else if function == "changeTunaHolder" {
return s.changeTunaHolder(APIstub, args)
}
return shim.Error("Invalid Smart Contract function name.")
}
52. @ t h e b e e b s
M a r t i n B e e b y
@ t h e b e e b s
QUERYTUNA
func (s *SmartContract) queryTuna(APIstub shim.ChaincodeStubInterface, args []string)
sc.Response {
if len(args) != 1 {
return shim.Error("Incorrect number of arguments. Expecting 1")
}
tunaAsBytes, _ := APIstub.GetState(args[0])
if tunaAsBytes == nil {
return shim.Error(“Could not locate tuna”)
}
return shim.Success(tunaAsBytes)
}
53. @ t h e b e e b s
M a r t i n B e e b y
@ t h e b e e b s
RECORDTUNA
func (s *SmartContract) recordTuna(APIstub shim.ChaincodeStubInterface, args []string)
sc.Response {
if len(args) != 5 {
return shim.Error("Incorrect number of arguments. Expecting 5")
}
var tuna = Tuna{ Vessel: args[1], Location: args[2], Timestamp: args[3], Holder: args[4]}
tunaAsBytes, _ := json.Marshal(tuna)
err := APIstub.PutState(args[0], tunaAsBytes)
if err != nil {
return shim.Error(fmt.Sprintf("Failed to record tuna catch: %s", args[0]))
}
return shim.Success(nil)
}
54. @ t h e b e e b s
M a r t i n B e e b y
@ t h e b e e b s
CHANGETUNAHOLDER
func (s *SmartContract) changeTunaHolder(APIstub shim.ChaincodeStubInterface, args []string) sc.Response {
if len(args) != 2 {
return shim.Error("Incorrect number of arguments. Expecting 2")
}
tunaAsBytes, _ := APIstub.GetState(args[0])
if tunaAsBytes != nil {
return shim.Error("Could not locate tuna")
}
tuna := Tuna{}
json.Unmarshal(tunaAsBytes, &tuna)
// Normally check that the specified argument is a valid holder of tuna but here we are skipping this check for this example.
tuna.Holder = args[1]
tunaAsBytes, _ = json.Marshal(tuna)
err := APIstub.PutState(args[0], tunaAsBytes)
if err != nil {
return shim.Error(fmt.Sprintf("Failed to change tuna holder: %s", args[0]))
}
return shim.Success(nil)
}
55. @ t h e b e e b s
Install Chain Code from the CLI
peer chaincode install –n tunachaincode –-v v0 -p src/chaincode_tuna/go
56. @ t h e b e e b s
Check Installed Chain Code from the CLI
peer chaincode list --instantiated -o $ORDERER -C mychannel --cafile
/opt/home/managedblockchain-tls-chain.pem –tls
Name: tunachaincode Version: v0 Path: src/chaincode_tuna/go
57. @ t h e b e e b s
Invoke
peer chaincode invoke -C mychannel -n tunachaincode -c
'{"Args":["invoke",”queryTuna"]}' -o $ORDERER --cafile /opt/home/managedblockchain-
tls-chain.pem --tls
60. @ t h e b e e b s
M a r t i n B e e b y
@ t h e b e e b s
CALLING SOME CODE
// changeTunaHolder - requires 2 argument
var request = {
chaincodeId:’ tunachaincode’,
fcn: 'changeTunaHolder',
args: ['1', 'Alex'],
chainId: 'mychannel',
txId: tx_id
};
return channel.sendTransactionProposal(request);
62. @ t h e b e e b s
M a r t i n B e e b y
Need for a ledger with centralized trust
DMV
Track vehicle
title history
Manufacturers
Track distribution of a
recalled product
HR & Payroll
Track changes to an
individual’s profile
Healthcare
Verify and track hospital
equipment inventory
LEDGERS WITH
CENTRALIZED TRUST1
63. @ t h e b e e b s
M a r t i n B e e b y
Need for running transactions with decentralized trust
2
Financial
institutions
Peer-to-peer payments
Mortgage
lenders
Process syndicated
loans
Supply Chain
Transact with suppliers
and distributers
Retail
Streamline customer
rewards
TRANSACTIONS WITH
DECENTRALIZED TRUST
64. @ t h e b e e b s
M a r t i n B e e b y
Blockchain services at AWS
Amazon Quantum Ledger
Database (QLDB)
Amazon Managed
Blockchain
65. @ t h e b e e b s
Amazon Quantum
Ledger Database (QLDB)
Fully managed ledger database with a
central trusted authority
66. @ t h e b e e b s
M a r t i n B e e b y
Challenges customers face
Building Ledgers with traditional databases
Difficult to
manage and scale
Impossible
to verify
Error prone and
incomplete
Resource
intensive
Blockchain approaches
Designed for a
different purpose
Adds unnecessary
complexity
67. @ t h e b e e b s
M a r t i n B e e b y
Amazon Quantum Ledger Database (QLDB) (Preview)
Fully managed ledger database
Track and verify history of all changes made to your application’s data
Maintains a sequenced
record of all changes to your
data, which cannot be
deleted or modified; you
have the ability to query and
analyze the full history
Immutable
Uses cryptography to
generate a secure output file
of your data’s history
Cryptographically
verifiable
Easy to use, letting you
use familiar database
capabilities like SQL APIs for
querying the data
Easy to useHighly scalable
Executes 2–3X as
many transactions as
ledgers in common
blockchain frameworks
68. @ t h e b e e b s
M a r t i n B e e b y
Blockchain components: Distributed Ledger database
The journal records an immutable log of all transactions
and is maintained by nodes in the blockchain network
Block 61
Block hash:
000044bf2efe32
Previous block hash:
000087ea2ffe94
Timestamp
Transaction
Transaction
Block 61
Block hash:
000087ea2ffe94
Previous block hash:
000057ec2fda71
Timestamp
Transaction
Transaction
Block 61
Block hash:
000057ec2fda71
Previous block hash:
0000d68b2f0a3b
Timestamp
Transaction
Transaction
69. @ t h e b e e b s
M a r t i n B e e b y
What is immutability?
1 Tracy buys a car on Aug 3, 2013
2 Tracy sells car to Ronnie
on Sept 10, 2014
DMV QLDB database will add Ronnie’s record
Journal Current stateDMV scenario
3 Ronnie’s car gets in an
accident and gets totaled
DMV QLDB Database adds new row, called “delete”
DELETE
DATE: 09/02/2016
ID Manufacturer Model Year VIN Owner
1 Tesla Model S 2012 123456789 Traci Russell
ID Manufacturer Model Year VIN Owner
1 Tesla Model S 2012 123456789 Ronnie Nash
ID Manufacturer Model Year VIN Owner
Built from ground-up in such a way that Journal cannot be modified or altered
Entire change history is easily accessible
DMV QLDB database will add Traci’s record
70. @ t h e b e e b s
M a r t i n B e e b y
“Healthdirect Australia operates in a heavily regulated industry, and it
is critical that our compliance data is correct and auditable. With
Amazon QLDB we look forward to having a complete and verifiable
history of every change in our system, making it simple to audit when
and how we arrived at our current state. Regulatory compliance is fact
of life for healthcare companies, and Amazon QLDB enables us to
easily track the controls we have in place and understand how they
have changed over time.”
—Bruce Haefele
General Manager, Technology, Healthdirect Australia
71. @ t h e b e e b s
Amazon
Managed Blockchain
Fully managed blockchain service, supporting both
Hyperledger Fabric and Ethereum frameworks
72. @ t h e b e e b s
M a r t i n B e e b y
Challenges with existing blockchain solutions
Complicated
to manage
Setup is hard Hard to scale Expensive
73. @ t h e b e e b s
M a r t i n B e e b y
Amazon Managed Blockchain
Easily create and manage scalable blockchain networks
Quickly create blockchain
networks that span multiple
AWS accounts. Easily add or
remove members and monitor
the network
Fully managed Choice of Hyperledger
Fabric or Ethereum
Improves reliabilityScalable and secure
Easily scale your blockchain
network as the usage grows.
Also, Managed Blockchain
secures your network
certificates with KMS
Choose the right framework for
your needs, whether you are
building a permissioned or
public network
Managed Blockchain improves
the reliability of the “ordering
service,” by replacing the
default technology with QLDB.
This improves durability
74. @ t h e b e e b s
M a r t i n B e e b y
Hyperledger Fabric and Ethereum benefits
Useful for a finite set of known users
Well-suited for applications that require stringent
privacy and permission controls with a known set
of members
For example, a financial application where certain
trade-related data is only shared with select banks
and other members in the network don’t have
access to the data
Hyperledger Fabric
Useful for an infinite number of unknown users
Well suited for highly distributed blockchain
networks where transparency of data for all
members is important
For example, a digital identity network comprising
of farmers and government organization, where an
infinite number of farmers can join the network and
information regarding their land, crop yields, etc., is
shared across all members on the blockchain
Ethereum
75. @ t h e b e e b s
M a r t i n B e e b y
How Amazon Managed Blockchain works
Amazon Managed
Blockchain
Create a network
Choose an open source
blockchain framework, set
up a new blockchain network
and your membership in
your AWS account with
just a few clicks
Invite members
Invite other AWS accounts to
join the network
Add nodes
Create and configure
blockchain peer nodes that
store a copy of the
distributed ledger
Deploy applications
Create and deploy
decentralized applications
to your network through
your per nodes. Transact
with other members on
the network
76. @ t h e b e e b s
M a r t i n B e e b y
“Given our vast partner ecosystem, we are exploring the decentralization and
immutable tracking benefits of blockchain for potential applications in our
insurance business. We believe blockchain can improve the transparency and
efficiency for stakeholders in these networks to transact, while still maintaining
an independently verifiable lineage of activities. However, blockchain frameworks
are complex and difficult to operate. With Amazon Managed Blockchain, we can
now easily create Hyperledger Fabric blockchain networks to test and learn
without worrying about managing the underlying infrastructure, networking,
and software configuration.”
—Daniel Johnson
CTO and Head of Innovation, Guardian Life Insurance Company
77. @ t h e b e e b s
M a r t i n B e e b y
Summary: helping customers identify the right
AWS blockchain service
Owned by a single, trusted authority
Addresses core need of a immutable and
verifiable transactional log
It’s a database, so its fast, as it doesn’t
require consent from members
Amazon QLDB Amazon Managed Blockchain
No single owner of the ledger. Joint
ownership by multiple parties
Addresses core need of enabling multiple parties to transact
transparently and with trust with each other
Removes intermediaries when a group of members needs to
transact. So it makes business processes more efficient
Ownership
Addresses Need
Key Benefit
78. @ t h e b e e b s
M a r t i n B e e b y
Next steps
• Learn more about our services and sign up for our preview today!
Amazon Managed Blockchain landing page: https://aws.amazon.com/managed-
blockchain
• How to deploy an app with Amazon Managed Blockchain :
https://aws.amazon.com/blogs/database/tag/amazon-managed-blockchain/
• Amazon QLDB landing page: https://aws.amazon.com/qldb
79. @ t h e b e e b s
M a r t i n B e e b y
Thank you!
@ t h e b e e b s
Martin Beeby
@thebeebs