Upload
wso2-inc
View
231
Download
0
Embed Size (px)
Citation preview
Agenda
•History of money
•Current state of blockchains
•About BlockCypher
•Future of blockchain applications
Bitcoin Genesis Block
Jan 3, 2009 Headline:
“Chancellor on brink of second bailout for banks."– Satoshi Nakamoto
bitcoin ≠ blockchain ≠ BitcoinThe Technical Innovation
(distributed ledger)Cryptocurrency
(incentive)E.g. ether, bitcoin
Protocol(parameters)
Ethereum, Bitcoin
What’s the difference?
Block 50
PoW: 0026f34d197f
Transactionb39fa6c39b
Transaction7301b5952
Transaction6961d06e4
Block 51
PoW: 0026f34d197f
Transactionb39fa6c39b
Alice => Bob
Transaction6961d06e4
Block 52
PoW: 0026f34d197f
Transactionb39fa6c39b
Transaction7301b5952
Transaction6961d06e4
Blockchains Flavors (DRAFT)
• Open (e.g. Bitcoin, Ethereum)• Permissioned (e.g. Corda, Eris, Hyperledger, Symbiont, etc.)• Private (Beth, BCY, BKCoin, etc.)
Base Protocol (Bitcoin, Ethereum, etc.)
MiningApplications/Services
Users/Usage
Middleware
Blockchain Cake
Infrastructure
Blockchain Client Architecture
Peers
Chain
Pool
Scripting
Validation
StoreWallet
Addresses
Crypto
Miner
Primitive APIs
Wire Format
≈ Running Excel as database
Bitcoin and Ethereum clients
Crypto
P2P
Con
sens
us Smart ContractsProof of Work
Proof of Stake
Key
S
ecur
ity
Proof of ???
Scaling
Lightning
Privacy
zkSNARKs
MimbleWimble
Teechan
HS
Ms
Har
dwar
e W
alle
ts
Bitcoin Script
Serenity
Viper
Dec
entra
lisat
ion
Incentives
Game Theory
Cryptoeconomics
Mechanism Design
Security
Min
ing
Chip Design
Energy Price
GPUs
Data Centers
DD
oSSyb
il A
ttack
s
51%
A
ttack
s
Sel
fish
Min
ing
Light Clients
SPV
Pruning
ShardingElliptic Curve Cryptography
HashingNetwork Layers
Gossip Protocols
DHTs (Chord, Kad)
Block Ciphers
Random OracleHashcash
Staking AttacksAsync I/O (poll, epoll)
Language DesignType Systems
Parsers / Compilers
VMs, Interpreters
RandomnessCiphers: AES, RSA
Secure Enclaves
FIPS 140
PKI
Schnorr SignaturesSegregated Witness
Hash Locked Contracts
Oni
o N
etw
orks
Trusted Execution Environments
Ring Signatures
“Moon Math”Pairing-based Crypto Commitment Schemes
Zero Knowledge
Distributed Computing
Bloom Filters
Replicated State Machines
Merkle/Sum Trees
Stack Languages
Economics
Bayesian Statistics Market DynamicsProtocol History
Logic GatesGeo
ther
mal
/ hy
dro
pow
er
Cooling Systems
Har
drw
are
Pro
cure
men
t
Power Efficiency
Heat Dissipation
Intel SGX
Threat Modeling
Use BlockCypher APIs & Services ● Analytics API - queries for blockchain information
● Asset API - issue & handle assets on the blockchain
● Confidence Factor - predictive & real-time analytics for unconfirmed transactions
● Contract API - call contract functions on blockchain over HTTP
● Data Endpoint - place data or a hash on a blockchain
● Microtransaction API - micropayments on-chain
● Multiple Address Wallet API - multiple addresses under single wallet name
● Multiple Blockchains - Bitcoin/Ethereum type; single API call to create new chains
● Multisignature API - multiple signature key management
● Payment Forwarding API - forward, consolidate, add commissions to payments
● Transaction API - build transactions easily
● WebHooks and WebSockets - monitoring & notifications on blockchain events
HTTP HTTP HTTP
TCP
TCP
Distributed Datastore
Distributed LocksMessaging
HTTP
Blockchain Layer
Web API Layer
Peer to Peer
BlockCypherCluster
Other Private Cluster
Bitcoin, Ethereum, etc.
BaaS Architecture
Bitcoin
Custom
BlockCypher
● Multiple blockchains on same infrastructure
● Multiple datacenters● No single point of failure● Secure & hardened servers● Linear scaling● Uptime 99.999%
Cloud-optimized, enterprise-grade blockchain infrastructure
Blockchain-agnostic infrastructure
Ethereum
United States Citizenship and Immigration Services.
U.S. Customs and Border Protection.
Federal Emergency Management Agency.
U.S. Immigration and Customs Enforcement.
Transportation Security Administration.
United States Coast Guard.
National Protection and Programs Directorate.
United States Secret Service.
Data Management and Analytics
U.S. Department of Homeland Security
● Machine learning
○ Transaction clustering
○ Spark GraphX for Graph analysis
● Statistical analysis
○ Geographical, origin, relay, transaction size, etc.
● Monitoring for anomalies
● Tracking $70M heist (BitFinex)
○ Largest transactions, transaction shape & origin
Financial Crime
Custom Ethereum-based blockchain:
● Smart contract with ability to call an
external risk management system
during execution
● API-driven, open marketplace
● Private cloud hosted
● Block processing near real-time
● Transaction round-trip cycle time in
milliseconds
● 1000+ Transactions per second (TPS)
w/payload on desktop
Payment Cards
Identity Management
Challenges● High cost of fraud
($B)● Lack of adoption of
security ● Disclosure● Privacy● Ease-of-use
Solution● User manages
identity (e.g. biometrics) on Shocard mobile app
● BlockCypher publishes identity to blockchain
Benefits● 6 months saved in
ramp up time● 35% costs saved in
development● Increased scalability
and reliability ● Improved code
maintenance
Transaction API
Authentication
P2P Payments
Challenges● High transaction fees ● No single P2P
platform● Currency fluctuation● Lack of good testing
environment
Solution● Abra enables person
to send payment to any mobile phone
● BlockCypher provides notifications (e.g. for payments)
Benefits● Users protected from
market volatility● Faster deposits ● Cross-border payments● ~30% development
cost
Deposit $200 (XBT spot at 200)
Send $200 (XBT spot at 160)
Lender(XBT spot at 160)XBT down 20%, Abra holding 1.25 XBT
BCYWebhooks
Machine-to-Machine
Drone, parking meter, remote server, self-driving car, POS, VR device, etc.
Let’s Code a Central Bankcontract Coin {
address minter;
mapping (address => uint) balances;
function Coin() {
minter = msg.sender;
}
function mint(address owner, uint amount) {
if (msg.sender != minter) return;
balances[owner] += amount;
}
function send(address receiver, uint amount) {
if (balances[msg.sender] < amount) return;
balances[msg.sender] -= amount;
balances[receiver] += amount;
}
function queryBalance(address addr) uint {
return balances[addr];
}
}