SlideShare ist ein Scribd-Unternehmen logo
1 von 44
Building a Digital Currency
Peter Lawrey – CEO
19 Apr 2018
Chronicle Accelerate
Peter Lawrey
Java Developer / Consultant for
investment banks and hedge funds.
25 years in IT.
CEO for 5 years
Major Banks use
Chronicle’s framework to build
low latency, high throughput
trading systems in Java.
We believe we can make a difference
by bringing HFT to blockchain
5 years old, self funded
Core software is open source
Projects have over 1000 stars
Agenda
• Digital currency economics
• Existing solutions
• Architecting for performance
• A Java model for extension
BTC, XBC
- All tokens mined
- Reward decreases
exponentially
- Miners also receive
fees
ETH
- Initial tokens
- New tokens reduce
dramatically over
time
- Fees for mines
IOTA, MIOTA
- All preallocated
- 2.7 ^ 15 IOTA
- Usually expressed as MIOTA
(1 million IOTA)
XRP
- All preallocated
- 60% reserved by Ripple
- Might be released over
time?
XCL + Fiat & Digital.
- Multiple stable currencies
- 20% preallocated for early
adopters
- 40% sold in ICO
- 40% reserved for market
volatility reduction
How much throughput do we need?
VisaNet handles an average
of 150 million* transactions
every day and is capable of
handling more than 24,000
transactions per
second.
* 1,740/s
How much throughput do we get today?
3 – 7
txn/sec
500 – 1500
txn/sec
How does our block chain perform?
Single Server Nodes
i7-7820X, 8 core, 32 GB
Burst
480,000 trans/sec
Sustained
52,000 trans/sec
How does our block chain perform?
Multi-server nodes
i7-7820X, 8 core, 32 GB
Burst
millions trans/sec
Sustained
400,000 trans/sec
C-like Java framework,
Assembly sign/verify,
Optimal use of hardware,
Core for speed
and gateways for
integration.
Why use Java?
Java brings millions of devs, reasonable speed.
C or assembly is harder but faster
The interesting code is in Java, but most of the
CPU work is in assembly and C
Code type CPUs
Assembly (Ed25519) 40
Operating System (Mostly TCP) 24
Java 4
Achieving Consensus
Each node runs concurrently as much as possible
Periodically they;
- Gossip about what has been replicated
- Vote on what to include in a round
- When the majority vote the same, progress
Blockchain vs distributed ledger
When running trusted nodes, you don’t need the
overhead of signatures -> distributed ledger (or
database)
When running untrusted nodes, you need to
ensure they don’t act fraudulently -> blockchain.
Fraud Protection
Each message is signed is a way that only the
private key holder can create. This can be verified
using the public key.
In our case we use Ed25519 which has a highly
optimized 256-bit public/private key and a 64-byte
signature.
Optimising for Throughput
A key optimization for throughput is batching in to
blocks. We use rounds to achieve consensus and
blocks increase the number of transactions in
each round.
Optimising for Throughput
Concurrent Serial
Sign/verify Consensus
Client TCP Transaction
processing
Weekly Checkpointing
Replaying from the genesis block doesn’t scale.
Ok for 10 trns/sec
Not Ok for 100,000 trns/sec
We chose to checkpoint weekly
NOTE: GDPR requires the ability to be forgotten
Multichain
Localize transaction using ISO-3166
Over 4000 regions / sub-chains.
Smarter Sharding
If you use hash based sharing, you get fairness
however you get no benefit from locality of use.
Most transactions occur between parties in a
small number of regions (possibly one most of the
time)
Smarter Sharding
We use ISO 3166 which breaks the world 4000+
regions.
The region is at the top of the address when is in
base32 e.g.
@usny6db2yfdjs – New York, US
@auvickjhj4hs3f – Victoria, AUS
Smarter Sharding
We start with a single chain for the whole world.
As the number of nodes grows, we can split the
chain by the highest bit in 2. Each chain can split
in 2 etc until we have 4000+ chains
Multichain
Grow to 10 to 100 nodes.
More nodes means more
sub-chains.
Aggregate volume to over
100 million per second.
FIX protocol for
traditional market integration
AI managed exchanges
to reduce volatility
Roadmap
Q1 2018 – Working prototype
Q2 2018 – increase throughput to
500K/s/sub-chain
Test System running.
Pre-ICO investment
Q3 2018 – ICO
Q4 2018 - production
Extending the platform
In active development now.
Extension is via sub-chains, main chain rarely
changes
Programming is in Java to make it more
accessible to more developers.
Extending the platform
Key components to supply;
- The Data Transfer Object to hold the
transactions. Supports YAML or Binary.
- Pre blockchain stage, run on a per client
basis. Can handle queries which don’t go to
the blockchain.
- Post blockchain stage, run by all nodes in the
cluster, recorded in the distributed legder.
package cash.xcl.helloworld;
public interface HelloWorld {
void hello(TextMessage textMessage);
}
public class TextMessage extends SignedTextMessage {
private long toAddress;
private String text;
public long toAddress() { return toAddress; }
public String text() { return text; }
public TextMessage toAddress(long toAddress) {
this.toAddress = toAddress;
return this;
}
public TextMessage text(String text) {
this.text = text;
return this;
}
public class HelloWorldGateway implements HelloWorld {
private final ErrorMessageLogger client;
private final HelloWorld blockchain;
public HelloWorldGateway(ErrorMessageLogger client,
HelloWorld blockchain) {
this.client = client;
this.blockchain = blockchain;
}
@Override
public void hello(TextMessage textMessage) {
if (textMessage.text() == null || textMessage.text().isEmpty())
client.commandFailedEvent(
new CommandFailedEvent(textMessage,
"text must be set"));
else
blockchain.hello(textMessage);
}
}
public class HelloWorldBlockchainProcessor implements HelloWorld {
final MessageLookup<HelloWorld> lookup;
public HelloWorldBlockchainProcessor(
MessageLookup<HelloWorld> lookup) {
this.lookup = lookup;
}
@Override
public void hello(TextMessage textMessage) {
lookup.to(textMessage.toAddress())
.hello(textMessage);
}
}
@Test
public void testMarshalling() {
TextMessage tm = new TextMessage(
XCLBase32.decode("my.friend"),
"Hello World");
assertEquals(
"!TextMessage {n" +
" sourceAddress: .,n" +
" eventTime: 0,n" +
" toAddress: my.friend,n" +
" text: Hello Worldn" +
"}n", tm.toString());
TextMessage tm2 = Marshallable.fromString(tm.toString());
assertEquals(tm, tm2);
}
@Test
public void testHelloWorldGateway() {
ErrorMessageLogger logger = createMock(ErrorMessageLogger.class);
HelloWorld hello = EasyMock.createMock(HelloWorld.class);
MessageLookup<HelloWorld> lookup = to -> {
assertEquals(2002, to);
return hello;
};
HelloWorldBlockchainProcessor proc =
new HelloWorldBlockchainProcessor(lookup);
HelloWorldGateway gateway = new HelloWorldGateway(logger, proc);
hello.hello(new TextMessage(2002, "Hello World"));
EasyMock.replay();
gateway.hello(new TextMessage(2002, "Hello World"));
EasyMock.verify();
}
Data driven tests
hello: {
sourceAddress: my.address,
eventTime: 0,
toAddress: my.friend,
text: !!null ""
}
---
hello: {
sourceAddress: my.address,
eventTime: 0,
toAddress: my.friend,
text: "Hello, How are you?"
}
---
commandFailedEvent: {
sourceAddress: .,
eventTime: 0,
origSourceAddress: my.address,
origEventTime: 0,
origProtocol: !!null "",
origMessageType: hello,
reason: text must be set
}
---
hello: {
sourceAddress: my.address,
eventTime: 0,
toAddress: my.friend,
text: "Hello, How are you?"
}
---
Q & A
Blog: http://vanilla-java.github.io/
http://chronicle-accelerate.com
enquiries@chronicle-accelerate.com
https://github.com/OpenHFT/Chronicle-Accelerate
Australia/APAC Contact
jerry.shea@chronicle.software

Weitere ähnliche Inhalte

Was ist angesagt?

Low latency for high throughput
Low latency for high throughputLow latency for high throughput
Low latency for high throughputPeter Lawrey
 
Introduction to chronicle (low latency persistence)
Introduction to chronicle (low latency persistence)Introduction to chronicle (low latency persistence)
Introduction to chronicle (low latency persistence)Peter Lawrey
 
High Frequency Trading and NoSQL database
High Frequency Trading and NoSQL databaseHigh Frequency Trading and NoSQL database
High Frequency Trading and NoSQL databasePeter Lawrey
 
Open HFT libraries in @Java
Open HFT libraries in @JavaOpen HFT libraries in @Java
Open HFT libraries in @JavaPeter Lawrey
 
Writing and testing high frequency trading engines in java
Writing and testing high frequency trading engines in javaWriting and testing high frequency trading engines in java
Writing and testing high frequency trading engines in javaPeter Lawrey
 
Responding rapidly when you have 100+ GB data sets in Java
Responding rapidly when you have 100+ GB data sets in JavaResponding rapidly when you have 100+ GB data sets in Java
Responding rapidly when you have 100+ GB data sets in JavaPeter Lawrey
 
Determinism in finance
Determinism in financeDeterminism in finance
Determinism in financePeter Lawrey
 
Thread Safe Interprocess Shared Memory in Java (in 7 mins)
Thread Safe Interprocess Shared Memory in Java (in 7 mins)Thread Safe Interprocess Shared Memory in Java (in 7 mins)
Thread Safe Interprocess Shared Memory in Java (in 7 mins)Peter Lawrey
 
Chronicle Accelerate Crypto Investor conference
Chronicle Accelerate Crypto Investor conferenceChronicle Accelerate Crypto Investor conference
Chronicle Accelerate Crypto Investor conferencePeter Lawrey
 
QCon London: Low latency Java in the real world - LMAX Exchange and the Zing JVM
QCon London: Low latency Java in the real world - LMAX Exchange and the Zing JVMQCon London: Low latency Java in the real world - LMAX Exchange and the Zing JVM
QCon London: Low latency Java in the real world - LMAX Exchange and the Zing JVMAzul Systems, Inc.
 
Java in High Frequency Trading
Java in High Frequency TradingJava in High Frequency Trading
Java in High Frequency TradingViktor Sovietov
 
Stream or segment : what is the best way to access your events in Pulsar_Neng
Stream or segment : what is the best way to access your events in Pulsar_NengStream or segment : what is the best way to access your events in Pulsar_Neng
Stream or segment : what is the best way to access your events in Pulsar_NengStreamNative
 
Troubleshooting Kafka's socket server: from incident to resolution
Troubleshooting Kafka's socket server: from incident to resolutionTroubleshooting Kafka's socket server: from incident to resolution
Troubleshooting Kafka's socket server: from incident to resolutionJoel Koshy
 
Donatas MaĹžionis, Building low latency web APIs
Donatas MaĹžionis, Building low latency web APIsDonatas MaĹžionis, Building low latency web APIs
Donatas MaĹžionis, Building low latency web APIsTanya Denisyuk
 
Apache Kafka – (Pattern and) Anti-Pattern
Apache Kafka – (Pattern and) Anti-PatternApache Kafka – (Pattern and) Anti-Pattern
Apache Kafka – (Pattern and) Anti-Patternconfluent
 
Terror & Hysteria: Cost Effective Scaling of Time Series Data with Cassandra ...
Terror & Hysteria: Cost Effective Scaling of Time Series Data with Cassandra ...Terror & Hysteria: Cost Effective Scaling of Time Series Data with Cassandra ...
Terror & Hysteria: Cost Effective Scaling of Time Series Data with Cassandra ...DataStax
 
Performance Tuning - Memory leaks, Thread deadlocks, JDK tools
Performance Tuning -  Memory leaks, Thread deadlocks, JDK toolsPerformance Tuning -  Memory leaks, Thread deadlocks, JDK tools
Performance Tuning - Memory leaks, Thread deadlocks, JDK toolsHaribabu Nandyal Padmanaban
 
Cassandra compaction
Cassandra compactionCassandra compaction
Cassandra compactionKazutaka Tomita
 
Kafka Reliability - When it absolutely, positively has to be there
Kafka Reliability - When it absolutely, positively has to be thereKafka Reliability - When it absolutely, positively has to be there
Kafka Reliability - When it absolutely, positively has to be thereGwen (Chen) Shapira
 
Aerospike & GCE (LSPE Talk)
Aerospike & GCE (LSPE Talk)Aerospike & GCE (LSPE Talk)
Aerospike & GCE (LSPE Talk)Sayyaparaju Sunil
 

Was ist angesagt? (20)

Low latency for high throughput
Low latency for high throughputLow latency for high throughput
Low latency for high throughput
 
Introduction to chronicle (low latency persistence)
Introduction to chronicle (low latency persistence)Introduction to chronicle (low latency persistence)
Introduction to chronicle (low latency persistence)
 
High Frequency Trading and NoSQL database
High Frequency Trading and NoSQL databaseHigh Frequency Trading and NoSQL database
High Frequency Trading and NoSQL database
 
Open HFT libraries in @Java
Open HFT libraries in @JavaOpen HFT libraries in @Java
Open HFT libraries in @Java
 
Writing and testing high frequency trading engines in java
Writing and testing high frequency trading engines in javaWriting and testing high frequency trading engines in java
Writing and testing high frequency trading engines in java
 
Responding rapidly when you have 100+ GB data sets in Java
Responding rapidly when you have 100+ GB data sets in JavaResponding rapidly when you have 100+ GB data sets in Java
Responding rapidly when you have 100+ GB data sets in Java
 
Determinism in finance
Determinism in financeDeterminism in finance
Determinism in finance
 
Thread Safe Interprocess Shared Memory in Java (in 7 mins)
Thread Safe Interprocess Shared Memory in Java (in 7 mins)Thread Safe Interprocess Shared Memory in Java (in 7 mins)
Thread Safe Interprocess Shared Memory in Java (in 7 mins)
 
Chronicle Accelerate Crypto Investor conference
Chronicle Accelerate Crypto Investor conferenceChronicle Accelerate Crypto Investor conference
Chronicle Accelerate Crypto Investor conference
 
QCon London: Low latency Java in the real world - LMAX Exchange and the Zing JVM
QCon London: Low latency Java in the real world - LMAX Exchange and the Zing JVMQCon London: Low latency Java in the real world - LMAX Exchange and the Zing JVM
QCon London: Low latency Java in the real world - LMAX Exchange and the Zing JVM
 
Java in High Frequency Trading
Java in High Frequency TradingJava in High Frequency Trading
Java in High Frequency Trading
 
Stream or segment : what is the best way to access your events in Pulsar_Neng
Stream or segment : what is the best way to access your events in Pulsar_NengStream or segment : what is the best way to access your events in Pulsar_Neng
Stream or segment : what is the best way to access your events in Pulsar_Neng
 
Troubleshooting Kafka's socket server: from incident to resolution
Troubleshooting Kafka's socket server: from incident to resolutionTroubleshooting Kafka's socket server: from incident to resolution
Troubleshooting Kafka's socket server: from incident to resolution
 
Donatas MaĹžionis, Building low latency web APIs
Donatas MaĹžionis, Building low latency web APIsDonatas MaĹžionis, Building low latency web APIs
Donatas MaĹžionis, Building low latency web APIs
 
Apache Kafka – (Pattern and) Anti-Pattern
Apache Kafka – (Pattern and) Anti-PatternApache Kafka – (Pattern and) Anti-Pattern
Apache Kafka – (Pattern and) Anti-Pattern
 
Terror & Hysteria: Cost Effective Scaling of Time Series Data with Cassandra ...
Terror & Hysteria: Cost Effective Scaling of Time Series Data with Cassandra ...Terror & Hysteria: Cost Effective Scaling of Time Series Data with Cassandra ...
Terror & Hysteria: Cost Effective Scaling of Time Series Data with Cassandra ...
 
Performance Tuning - Memory leaks, Thread deadlocks, JDK tools
Performance Tuning -  Memory leaks, Thread deadlocks, JDK toolsPerformance Tuning -  Memory leaks, Thread deadlocks, JDK tools
Performance Tuning - Memory leaks, Thread deadlocks, JDK tools
 
Cassandra compaction
Cassandra compactionCassandra compaction
Cassandra compaction
 
Kafka Reliability - When it absolutely, positively has to be there
Kafka Reliability - When it absolutely, positively has to be thereKafka Reliability - When it absolutely, positively has to be there
Kafka Reliability - When it absolutely, positively has to be there
 
Aerospike & GCE (LSPE Talk)
Aerospike & GCE (LSPE Talk)Aerospike & GCE (LSPE Talk)
Aerospike & GCE (LSPE Talk)
 

Ähnlich wie Chronicle accelerate building a digital currency

Introduction to Blockchain Development
Introduction to Blockchain DevelopmentIntroduction to Blockchain Development
Introduction to Blockchain DevelopmentLightstreams
 
Ergo Hong Kong meetup
Ergo Hong Kong meetupErgo Hong Kong meetup
Ergo Hong Kong meetupDmitry Meshkov
 
tezos_hands-on-training.pdf
tezos_hands-on-training.pdftezos_hands-on-training.pdf
tezos_hands-on-training.pdfNeven6
 
Encode x Tezos Hack: Hands-on dApp Training
Encode x Tezos Hack: Hands-on dApp Training Encode x Tezos Hack: Hands-on dApp Training
Encode x Tezos Hack: Hands-on dApp Training KlaraOrban
 
Interledger DvP Settlement on Amazon Managed Blockchain
Interledger DvP Settlement on Amazon Managed BlockchainInterledger DvP Settlement on Amazon Managed Blockchain
Interledger DvP Settlement on Amazon Managed BlockchainAmazon Web Services
 
Best practices to build secure smart contracts
Best practices to build secure smart contractsBest practices to build secure smart contracts
Best practices to build secure smart contractsGautam Anand
 
Defrag X Keynote: Deploying and managing Global Blockchain Network
Defrag X Keynote: Deploying and managing Global Blockchain NetworkDefrag X Keynote: Deploying and managing Global Blockchain Network
Defrag X Keynote: Deploying and managing Global Blockchain NetworkDuncan Johnston-Watt
 
Introduction to Ethereum Blockchain & Smart Contract
Introduction to Ethereum Blockchain & Smart ContractIntroduction to Ethereum Blockchain & Smart Contract
Introduction to Ethereum Blockchain & Smart ContractThanh Nguyen
 
Structured approach to blockchain and consensus techniques
Structured approach to blockchain and consensus techniquesStructured approach to blockchain and consensus techniques
Structured approach to blockchain and consensus techniquesVasiliy Suvorov
 
Ethereum Devcon1 Report (summary writing)
Ethereum Devcon1 Report (summary writing)Ethereum Devcon1 Report (summary writing)
Ethereum Devcon1 Report (summary writing)Tomoaki Sato
 
Introducing Moonbeam: A Smart Contract Parachain with Ethereum Compatibility
Introducing Moonbeam: A Smart Contract Parachain with Ethereum CompatibilityIntroducing Moonbeam: A Smart Contract Parachain with Ethereum Compatibility
Introducing Moonbeam: A Smart Contract Parachain with Ethereum CompatibilityPureStake
 
Ethereum Blockchain and DApps - Workshop at Software University
Ethereum Blockchain and DApps  - Workshop at Software UniversityEthereum Blockchain and DApps  - Workshop at Software University
Ethereum Blockchain and DApps - Workshop at Software UniversityOpen Source University
 
BlockchainLAB Hackathon
BlockchainLAB HackathonBlockchainLAB Hackathon
BlockchainLAB HackathonAleksandr Kopnin
 
Blockchin architecture azure meetup
Blockchin architecture azure meetupBlockchin architecture azure meetup
Blockchin architecture azure meetupMohammad Asif
 
Hyperledger
HyperledgerHyperledger
HyperledgerVinay Aitha
 
Splunk Conf 2014 - Getting the message
Splunk Conf 2014 - Getting the messageSplunk Conf 2014 - Getting the message
Splunk Conf 2014 - Getting the messageDamien Dallimore
 
آموزش پرایس اکشن (price action)
آموزش پرایس اکشن (price action)آموزش پرایس اکشن (price action)
آموزش پرایس اکشن (price action)price act
 
Security in the blockchain
Security in the blockchainSecurity in the blockchain
Security in the blockchainBellaj Badr
 

Ähnlich wie Chronicle accelerate building a digital currency (20)

Introduction to Blockchain Development
Introduction to Blockchain DevelopmentIntroduction to Blockchain Development
Introduction to Blockchain Development
 
Ergo Hong Kong meetup
Ergo Hong Kong meetupErgo Hong Kong meetup
Ergo Hong Kong meetup
 
tezos_hands-on-training.pdf
tezos_hands-on-training.pdftezos_hands-on-training.pdf
tezos_hands-on-training.pdf
 
Encode x Tezos Hack: Hands-on dApp Training
Encode x Tezos Hack: Hands-on dApp Training Encode x Tezos Hack: Hands-on dApp Training
Encode x Tezos Hack: Hands-on dApp Training
 
Interledger DvP Settlement on Amazon Managed Blockchain
Interledger DvP Settlement on Amazon Managed BlockchainInterledger DvP Settlement on Amazon Managed Blockchain
Interledger DvP Settlement on Amazon Managed Blockchain
 
Best practices to build secure smart contracts
Best practices to build secure smart contractsBest practices to build secure smart contracts
Best practices to build secure smart contracts
 
Defrag X Keynote: Deploying and managing Global Blockchain Network
Defrag X Keynote: Deploying and managing Global Blockchain NetworkDefrag X Keynote: Deploying and managing Global Blockchain Network
Defrag X Keynote: Deploying and managing Global Blockchain Network
 
Defrag x blockchain keynote
Defrag x blockchain keynoteDefrag x blockchain keynote
Defrag x blockchain keynote
 
Introduction to Ethereum Blockchain & Smart Contract
Introduction to Ethereum Blockchain & Smart ContractIntroduction to Ethereum Blockchain & Smart Contract
Introduction to Ethereum Blockchain & Smart Contract
 
Structured approach to blockchain and consensus techniques
Structured approach to blockchain and consensus techniquesStructured approach to blockchain and consensus techniques
Structured approach to blockchain and consensus techniques
 
Ethereum Devcon1 Report (summary writing)
Ethereum Devcon1 Report (summary writing)Ethereum Devcon1 Report (summary writing)
Ethereum Devcon1 Report (summary writing)
 
Introducing Moonbeam: A Smart Contract Parachain with Ethereum Compatibility
Introducing Moonbeam: A Smart Contract Parachain with Ethereum CompatibilityIntroducing Moonbeam: A Smart Contract Parachain with Ethereum Compatibility
Introducing Moonbeam: A Smart Contract Parachain with Ethereum Compatibility
 
Ethereum Blockchain and DApps - Workshop at Software University
Ethereum Blockchain and DApps  - Workshop at Software UniversityEthereum Blockchain and DApps  - Workshop at Software University
Ethereum Blockchain and DApps - Workshop at Software University
 
BlockchainLAB Hackathon
BlockchainLAB HackathonBlockchainLAB Hackathon
BlockchainLAB Hackathon
 
All About Ethereum
All About EthereumAll About Ethereum
All About Ethereum
 
Blockchin architecture azure meetup
Blockchin architecture azure meetupBlockchin architecture azure meetup
Blockchin architecture azure meetup
 
Hyperledger
HyperledgerHyperledger
Hyperledger
 
Splunk Conf 2014 - Getting the message
Splunk Conf 2014 - Getting the messageSplunk Conf 2014 - Getting the message
Splunk Conf 2014 - Getting the message
 
آموزش پرایس اکشن (price action)
آموزش پرایس اکشن (price action)آموزش پرایس اکشن (price action)
آموزش پرایس اکشن (price action)
 
Security in the blockchain
Security in the blockchainSecurity in the blockchain
Security in the blockchain
 

KĂźrzlich hochgeladen

Solution Manual for Financial Accounting, 11th Edition by Robert Libby, Patri...
Solution Manual for Financial Accounting, 11th Edition by Robert Libby, Patri...Solution Manual for Financial Accounting, 11th Edition by Robert Libby, Patri...
Solution Manual for Financial Accounting, 11th Edition by Robert Libby, Patri...ssifa0344
 
VIP Call Girl in Mira Road 💧 9920725232 ( Call Me ) Get A New Crush Everyday ...
VIP Call Girl in Mira Road 💧 9920725232 ( Call Me ) Get A New Crush Everyday ...VIP Call Girl in Mira Road 💧 9920725232 ( Call Me ) Get A New Crush Everyday ...
VIP Call Girl in Mira Road 💧 9920725232 ( Call Me ) Get A New Crush Everyday ...dipikadinghjn ( Why You Choose Us? ) Escorts
 
Booking open Available Pune Call Girls Wadgaon Sheri 6297143586 Call Hot Ind...
Booking open Available Pune Call Girls Wadgaon Sheri  6297143586 Call Hot Ind...Booking open Available Pune Call Girls Wadgaon Sheri  6297143586 Call Hot Ind...
Booking open Available Pune Call Girls Wadgaon Sheri 6297143586 Call Hot Ind...Call Girls in Nagpur High Profile
 
Vasai-Virar Fantastic Call Girls-9833754194-Call Girls MUmbai
Vasai-Virar Fantastic Call Girls-9833754194-Call Girls MUmbaiVasai-Virar Fantastic Call Girls-9833754194-Call Girls MUmbai
Vasai-Virar Fantastic Call Girls-9833754194-Call Girls MUmbaipriyasharma62062
 
Stock Market Brief Deck (Under Pressure).pdf
Stock Market Brief Deck (Under Pressure).pdfStock Market Brief Deck (Under Pressure).pdf
Stock Market Brief Deck (Under Pressure).pdfMichael Silva
 
VIP Call Girl in Mumbai Central 💧 9920725232 ( Call Me ) Get A New Crush Ever...
VIP Call Girl in Mumbai Central 💧 9920725232 ( Call Me ) Get A New Crush Ever...VIP Call Girl in Mumbai Central 💧 9920725232 ( Call Me ) Get A New Crush Ever...
VIP Call Girl in Mumbai Central 💧 9920725232 ( Call Me ) Get A New Crush Ever...dipikadinghjn ( Why You Choose Us? ) Escorts
 
VIP Call Girl in Thane 💧 9920725232 ( Call Me ) Get A New Crush Everyday With...
VIP Call Girl in Thane 💧 9920725232 ( Call Me ) Get A New Crush Everyday With...VIP Call Girl in Thane 💧 9920725232 ( Call Me ) Get A New Crush Everyday With...
VIP Call Girl in Thane 💧 9920725232 ( Call Me ) Get A New Crush Everyday With...dipikadinghjn ( Why You Choose Us? ) Escorts
 
VIP Call Girl in Mumbai 💧 9920725232 ( Call Me ) Get A New Crush Everyday Wit...
VIP Call Girl in Mumbai 💧 9920725232 ( Call Me ) Get A New Crush Everyday Wit...VIP Call Girl in Mumbai 💧 9920725232 ( Call Me ) Get A New Crush Everyday Wit...
VIP Call Girl in Mumbai 💧 9920725232 ( Call Me ) Get A New Crush Everyday Wit...dipikadinghjn ( Why You Choose Us? ) Escorts
 
TEST BANK For Corporate Finance, 13th Edition By Stephen Ross, Randolph Weste...
TEST BANK For Corporate Finance, 13th Edition By Stephen Ross, Randolph Weste...TEST BANK For Corporate Finance, 13th Edition By Stephen Ross, Randolph Weste...
TEST BANK For Corporate Finance, 13th Edition By Stephen Ross, Randolph Weste...ssifa0344
 
WhatsApp 📞 Call : 9892124323 ✅Call Girls In Chembur ( Mumbai ) secure service
WhatsApp 📞 Call : 9892124323  ✅Call Girls In Chembur ( Mumbai ) secure serviceWhatsApp 📞 Call : 9892124323  ✅Call Girls In Chembur ( Mumbai ) secure service
WhatsApp 📞 Call : 9892124323 ✅Call Girls In Chembur ( Mumbai ) secure servicePooja Nehwal
 
Call Girls Banaswadi Just Call 👗 7737669865 👗 Top Class Call Girl Service Ban...
Call Girls Banaswadi Just Call 👗 7737669865 👗 Top Class Call Girl Service Ban...Call Girls Banaswadi Just Call 👗 7737669865 👗 Top Class Call Girl Service Ban...
Call Girls Banaswadi Just Call 👗 7737669865 👗 Top Class Call Girl Service Ban...amitlee9823
 
VIP Call Girl Service Andheri West ⚡ 9920725232 What It Takes To Be The Best ...
VIP Call Girl Service Andheri West ⚡ 9920725232 What It Takes To Be The Best ...VIP Call Girl Service Andheri West ⚡ 9920725232 What It Takes To Be The Best ...
VIP Call Girl Service Andheri West ⚡ 9920725232 What It Takes To Be The Best ...dipikadinghjn ( Why You Choose Us? ) Escorts
 
Top Rated Pune Call Girls Sinhagad Road ⟟ 6297143586 ⟟ Call Me For Genuine S...
Top Rated  Pune Call Girls Sinhagad Road ⟟ 6297143586 ⟟ Call Me For Genuine S...Top Rated  Pune Call Girls Sinhagad Road ⟟ 6297143586 ⟟ Call Me For Genuine S...
Top Rated Pune Call Girls Sinhagad Road ⟟ 6297143586 ⟟ Call Me For Genuine S...Call Girls in Nagpur High Profile
 
Solution Manual for Principles of Corporate Finance 14th Edition by Richard B...
Solution Manual for Principles of Corporate Finance 14th Edition by Richard B...Solution Manual for Principles of Corporate Finance 14th Edition by Richard B...
Solution Manual for Principles of Corporate Finance 14th Edition by Richard B...ssifa0344
 
( Jasmin ) Top VIP Escorts Service Dindigul 💧 7737669865 💧 by Dindigul Call G...
( Jasmin ) Top VIP Escorts Service Dindigul 💧 7737669865 💧 by Dindigul Call G...( Jasmin ) Top VIP Escorts Service Dindigul 💧 7737669865 💧 by Dindigul Call G...
( Jasmin ) Top VIP Escorts Service Dindigul 💧 7737669865 💧 by Dindigul Call G...dipikadinghjn ( Why You Choose Us? ) Escorts
 
call girls in Sant Nagar (DELHI) 🔝 >༒9953056974 🔝 genuine Escort Service 🔝✔️✔️
call girls in Sant Nagar (DELHI) 🔝 >༒9953056974 🔝 genuine Escort Service 🔝✔️✔️call girls in Sant Nagar (DELHI) 🔝 >༒9953056974 🔝 genuine Escort Service 🔝✔️✔️
call girls in Sant Nagar (DELHI) 🔝 >༒9953056974 🔝 genuine Escort Service 🔝✔️✔️9953056974 Low Rate Call Girls In Saket, Delhi NCR
 
Vip Call US 📞 7738631006 ✅Call Girls In Sakinaka ( Mumbai )
Vip Call US 📞 7738631006 ✅Call Girls In Sakinaka ( Mumbai )Vip Call US 📞 7738631006 ✅Call Girls In Sakinaka ( Mumbai )
Vip Call US 📞 7738631006 ✅Call Girls In Sakinaka ( Mumbai )Pooja Nehwal
 
Top Rated Pune Call Girls Pashan ⟟ 6297143586 ⟟ Call Me For Genuine Sex Serv...
Top Rated  Pune Call Girls Pashan ⟟ 6297143586 ⟟ Call Me For Genuine Sex Serv...Top Rated  Pune Call Girls Pashan ⟟ 6297143586 ⟟ Call Me For Genuine Sex Serv...
Top Rated Pune Call Girls Pashan ⟟ 6297143586 ⟟ Call Me For Genuine Sex Serv...Call Girls in Nagpur High Profile
 

KĂźrzlich hochgeladen (20)

From Luxury Escort Service Kamathipura : 9352852248 Make on-demand Arrangemen...
From Luxury Escort Service Kamathipura : 9352852248 Make on-demand Arrangemen...From Luxury Escort Service Kamathipura : 9352852248 Make on-demand Arrangemen...
From Luxury Escort Service Kamathipura : 9352852248 Make on-demand Arrangemen...
 
Solution Manual for Financial Accounting, 11th Edition by Robert Libby, Patri...
Solution Manual for Financial Accounting, 11th Edition by Robert Libby, Patri...Solution Manual for Financial Accounting, 11th Edition by Robert Libby, Patri...
Solution Manual for Financial Accounting, 11th Edition by Robert Libby, Patri...
 
VIP Call Girl in Mira Road 💧 9920725232 ( Call Me ) Get A New Crush Everyday ...
VIP Call Girl in Mira Road 💧 9920725232 ( Call Me ) Get A New Crush Everyday ...VIP Call Girl in Mira Road 💧 9920725232 ( Call Me ) Get A New Crush Everyday ...
VIP Call Girl in Mira Road 💧 9920725232 ( Call Me ) Get A New Crush Everyday ...
 
(Vedika) Low Rate Call Girls in Pune Call Now 8250077686 Pune Escorts 24x7
(Vedika) Low Rate Call Girls in Pune Call Now 8250077686 Pune Escorts 24x7(Vedika) Low Rate Call Girls in Pune Call Now 8250077686 Pune Escorts 24x7
(Vedika) Low Rate Call Girls in Pune Call Now 8250077686 Pune Escorts 24x7
 
Booking open Available Pune Call Girls Wadgaon Sheri 6297143586 Call Hot Ind...
Booking open Available Pune Call Girls Wadgaon Sheri  6297143586 Call Hot Ind...Booking open Available Pune Call Girls Wadgaon Sheri  6297143586 Call Hot Ind...
Booking open Available Pune Call Girls Wadgaon Sheri 6297143586 Call Hot Ind...
 
Vasai-Virar Fantastic Call Girls-9833754194-Call Girls MUmbai
Vasai-Virar Fantastic Call Girls-9833754194-Call Girls MUmbaiVasai-Virar Fantastic Call Girls-9833754194-Call Girls MUmbai
Vasai-Virar Fantastic Call Girls-9833754194-Call Girls MUmbai
 
Stock Market Brief Deck (Under Pressure).pdf
Stock Market Brief Deck (Under Pressure).pdfStock Market Brief Deck (Under Pressure).pdf
Stock Market Brief Deck (Under Pressure).pdf
 
VIP Call Girl in Mumbai Central 💧 9920725232 ( Call Me ) Get A New Crush Ever...
VIP Call Girl in Mumbai Central 💧 9920725232 ( Call Me ) Get A New Crush Ever...VIP Call Girl in Mumbai Central 💧 9920725232 ( Call Me ) Get A New Crush Ever...
VIP Call Girl in Mumbai Central 💧 9920725232 ( Call Me ) Get A New Crush Ever...
 
VIP Call Girl in Thane 💧 9920725232 ( Call Me ) Get A New Crush Everyday With...
VIP Call Girl in Thane 💧 9920725232 ( Call Me ) Get A New Crush Everyday With...VIP Call Girl in Thane 💧 9920725232 ( Call Me ) Get A New Crush Everyday With...
VIP Call Girl in Thane 💧 9920725232 ( Call Me ) Get A New Crush Everyday With...
 
VIP Call Girl in Mumbai 💧 9920725232 ( Call Me ) Get A New Crush Everyday Wit...
VIP Call Girl in Mumbai 💧 9920725232 ( Call Me ) Get A New Crush Everyday Wit...VIP Call Girl in Mumbai 💧 9920725232 ( Call Me ) Get A New Crush Everyday Wit...
VIP Call Girl in Mumbai 💧 9920725232 ( Call Me ) Get A New Crush Everyday Wit...
 
TEST BANK For Corporate Finance, 13th Edition By Stephen Ross, Randolph Weste...
TEST BANK For Corporate Finance, 13th Edition By Stephen Ross, Randolph Weste...TEST BANK For Corporate Finance, 13th Edition By Stephen Ross, Randolph Weste...
TEST BANK For Corporate Finance, 13th Edition By Stephen Ross, Randolph Weste...
 
WhatsApp 📞 Call : 9892124323 ✅Call Girls In Chembur ( Mumbai ) secure service
WhatsApp 📞 Call : 9892124323  ✅Call Girls In Chembur ( Mumbai ) secure serviceWhatsApp 📞 Call : 9892124323  ✅Call Girls In Chembur ( Mumbai ) secure service
WhatsApp 📞 Call : 9892124323 ✅Call Girls In Chembur ( Mumbai ) secure service
 
Call Girls Banaswadi Just Call 👗 7737669865 👗 Top Class Call Girl Service Ban...
Call Girls Banaswadi Just Call 👗 7737669865 👗 Top Class Call Girl Service Ban...Call Girls Banaswadi Just Call 👗 7737669865 👗 Top Class Call Girl Service Ban...
Call Girls Banaswadi Just Call 👗 7737669865 👗 Top Class Call Girl Service Ban...
 
VIP Call Girl Service Andheri West ⚡ 9920725232 What It Takes To Be The Best ...
VIP Call Girl Service Andheri West ⚡ 9920725232 What It Takes To Be The Best ...VIP Call Girl Service Andheri West ⚡ 9920725232 What It Takes To Be The Best ...
VIP Call Girl Service Andheri West ⚡ 9920725232 What It Takes To Be The Best ...
 
Top Rated Pune Call Girls Sinhagad Road ⟟ 6297143586 ⟟ Call Me For Genuine S...
Top Rated  Pune Call Girls Sinhagad Road ⟟ 6297143586 ⟟ Call Me For Genuine S...Top Rated  Pune Call Girls Sinhagad Road ⟟ 6297143586 ⟟ Call Me For Genuine S...
Top Rated Pune Call Girls Sinhagad Road ⟟ 6297143586 ⟟ Call Me For Genuine S...
 
Solution Manual for Principles of Corporate Finance 14th Edition by Richard B...
Solution Manual for Principles of Corporate Finance 14th Edition by Richard B...Solution Manual for Principles of Corporate Finance 14th Edition by Richard B...
Solution Manual for Principles of Corporate Finance 14th Edition by Richard B...
 
( Jasmin ) Top VIP Escorts Service Dindigul 💧 7737669865 💧 by Dindigul Call G...
( Jasmin ) Top VIP Escorts Service Dindigul 💧 7737669865 💧 by Dindigul Call G...( Jasmin ) Top VIP Escorts Service Dindigul 💧 7737669865 💧 by Dindigul Call G...
( Jasmin ) Top VIP Escorts Service Dindigul 💧 7737669865 💧 by Dindigul Call G...
 
call girls in Sant Nagar (DELHI) 🔝 >༒9953056974 🔝 genuine Escort Service 🔝✔️✔️
call girls in Sant Nagar (DELHI) 🔝 >༒9953056974 🔝 genuine Escort Service 🔝✔️✔️call girls in Sant Nagar (DELHI) 🔝 >༒9953056974 🔝 genuine Escort Service 🔝✔️✔️
call girls in Sant Nagar (DELHI) 🔝 >༒9953056974 🔝 genuine Escort Service 🔝✔️✔️
 
Vip Call US 📞 7738631006 ✅Call Girls In Sakinaka ( Mumbai )
Vip Call US 📞 7738631006 ✅Call Girls In Sakinaka ( Mumbai )Vip Call US 📞 7738631006 ✅Call Girls In Sakinaka ( Mumbai )
Vip Call US 📞 7738631006 ✅Call Girls In Sakinaka ( Mumbai )
 
Top Rated Pune Call Girls Pashan ⟟ 6297143586 ⟟ Call Me For Genuine Sex Serv...
Top Rated  Pune Call Girls Pashan ⟟ 6297143586 ⟟ Call Me For Genuine Sex Serv...Top Rated  Pune Call Girls Pashan ⟟ 6297143586 ⟟ Call Me For Genuine Sex Serv...
Top Rated Pune Call Girls Pashan ⟟ 6297143586 ⟟ Call Me For Genuine Sex Serv...
 

Chronicle accelerate building a digital currency

  • 1. Building a Digital Currency Peter Lawrey – CEO 19 Apr 2018 Chronicle Accelerate
  • 2. Peter Lawrey Java Developer / Consultant for investment banks and hedge funds. 25 years in IT. CEO for 5 years
  • 3. Major Banks use Chronicle’s framework to build low latency, high throughput trading systems in Java. We believe we can make a difference by bringing HFT to blockchain
  • 4. 5 years old, self funded Core software is open source Projects have over 1000 stars
  • 5. Agenda • Digital currency economics • Existing solutions • Architecting for performance • A Java model for extension
  • 6. BTC, XBC - All tokens mined - Reward decreases exponentially - Miners also receive fees
  • 7. ETH - Initial tokens - New tokens reduce dramatically over time - Fees for mines
  • 8. IOTA, MIOTA - All preallocated - 2.7 ^ 15 IOTA - Usually expressed as MIOTA (1 million IOTA)
  • 9. XRP - All preallocated - 60% reserved by Ripple - Might be released over time?
  • 10. XCL + Fiat & Digital. - Multiple stable currencies - 20% preallocated for early adopters - 40% sold in ICO - 40% reserved for market volatility reduction
  • 11. How much throughput do we need? VisaNet handles an average of 150 million* transactions every day and is capable of handling more than 24,000 transactions per second. * 1,740/s
  • 12. How much throughput do we get today? 3 – 7 txn/sec 500 – 1500 txn/sec
  • 13. How does our block chain perform? Single Server Nodes i7-7820X, 8 core, 32 GB Burst 480,000 trans/sec Sustained 52,000 trans/sec
  • 14. How does our block chain perform? Multi-server nodes i7-7820X, 8 core, 32 GB Burst millions trans/sec Sustained 400,000 trans/sec
  • 15. C-like Java framework, Assembly sign/verify, Optimal use of hardware, Core for speed and gateways for integration.
  • 16. Why use Java? Java brings millions of devs, reasonable speed. C or assembly is harder but faster The interesting code is in Java, but most of the CPU work is in assembly and C Code type CPUs Assembly (Ed25519) 40 Operating System (Mostly TCP) 24 Java 4
  • 17. Achieving Consensus Each node runs concurrently as much as possible Periodically they; - Gossip about what has been replicated - Vote on what to include in a round - When the majority vote the same, progress
  • 18.
  • 19. Blockchain vs distributed ledger When running trusted nodes, you don’t need the overhead of signatures -> distributed ledger (or database) When running untrusted nodes, you need to ensure they don’t act fraudulently -> blockchain.
  • 20. Fraud Protection Each message is signed is a way that only the private key holder can create. This can be verified using the public key. In our case we use Ed25519 which has a highly optimized 256-bit public/private key and a 64-byte signature.
  • 21. Optimising for Throughput A key optimization for throughput is batching in to blocks. We use rounds to achieve consensus and blocks increase the number of transactions in each round.
  • 22. Optimising for Throughput Concurrent Serial Sign/verify Consensus Client TCP Transaction processing
  • 23. Weekly Checkpointing Replaying from the genesis block doesn’t scale. Ok for 10 trns/sec Not Ok for 100,000 trns/sec We chose to checkpoint weekly NOTE: GDPR requires the ability to be forgotten
  • 24. Multichain Localize transaction using ISO-3166 Over 4000 regions / sub-chains.
  • 25. Smarter Sharding If you use hash based sharing, you get fairness however you get no benefit from locality of use. Most transactions occur between parties in a small number of regions (possibly one most of the time)
  • 26. Smarter Sharding We use ISO 3166 which breaks the world 4000+ regions. The region is at the top of the address when is in base32 e.g. @usny6db2yfdjs – New York, US @auvickjhj4hs3f – Victoria, AUS
  • 27. Smarter Sharding We start with a single chain for the whole world. As the number of nodes grows, we can split the chain by the highest bit in 2. Each chain can split in 2 etc until we have 4000+ chains
  • 28. Multichain Grow to 10 to 100 nodes. More nodes means more sub-chains. Aggregate volume to over 100 million per second.
  • 29. FIX protocol for traditional market integration
  • 30. AI managed exchanges to reduce volatility
  • 31. Roadmap Q1 2018 – Working prototype Q2 2018 – increase throughput to 500K/s/sub-chain Test System running. Pre-ICO investment Q3 2018 – ICO Q4 2018 - production
  • 32. Extending the platform In active development now. Extension is via sub-chains, main chain rarely changes Programming is in Java to make it more accessible to more developers.
  • 33. Extending the platform Key components to supply; - The Data Transfer Object to hold the transactions. Supports YAML or Binary. - Pre blockchain stage, run on a per client basis. Can handle queries which don’t go to the blockchain. - Post blockchain stage, run by all nodes in the cluster, recorded in the distributed legder.
  • 34.
  • 35. package cash.xcl.helloworld; public interface HelloWorld { void hello(TextMessage textMessage); }
  • 36. public class TextMessage extends SignedTextMessage { private long toAddress; private String text; public long toAddress() { return toAddress; } public String text() { return text; } public TextMessage toAddress(long toAddress) { this.toAddress = toAddress; return this; } public TextMessage text(String text) { this.text = text; return this; }
  • 37. public class HelloWorldGateway implements HelloWorld { private final ErrorMessageLogger client; private final HelloWorld blockchain; public HelloWorldGateway(ErrorMessageLogger client, HelloWorld blockchain) { this.client = client; this.blockchain = blockchain; } @Override public void hello(TextMessage textMessage) { if (textMessage.text() == null || textMessage.text().isEmpty()) client.commandFailedEvent( new CommandFailedEvent(textMessage, "text must be set")); else blockchain.hello(textMessage); } }
  • 38. public class HelloWorldBlockchainProcessor implements HelloWorld { final MessageLookup<HelloWorld> lookup; public HelloWorldBlockchainProcessor( MessageLookup<HelloWorld> lookup) { this.lookup = lookup; } @Override public void hello(TextMessage textMessage) { lookup.to(textMessage.toAddress()) .hello(textMessage); } }
  • 39. @Test public void testMarshalling() { TextMessage tm = new TextMessage( XCLBase32.decode("my.friend"), "Hello World"); assertEquals( "!TextMessage {n" + " sourceAddress: .,n" + " eventTime: 0,n" + " toAddress: my.friend,n" + " text: Hello Worldn" + "}n", tm.toString()); TextMessage tm2 = Marshallable.fromString(tm.toString()); assertEquals(tm, tm2); }
  • 40. @Test public void testHelloWorldGateway() { ErrorMessageLogger logger = createMock(ErrorMessageLogger.class); HelloWorld hello = EasyMock.createMock(HelloWorld.class); MessageLookup<HelloWorld> lookup = to -> { assertEquals(2002, to); return hello; }; HelloWorldBlockchainProcessor proc = new HelloWorldBlockchainProcessor(lookup); HelloWorldGateway gateway = new HelloWorldGateway(logger, proc); hello.hello(new TextMessage(2002, "Hello World")); EasyMock.replay(); gateway.hello(new TextMessage(2002, "Hello World")); EasyMock.verify(); }
  • 41. Data driven tests hello: { sourceAddress: my.address, eventTime: 0, toAddress: my.friend, text: !!null "" } --- hello: { sourceAddress: my.address, eventTime: 0, toAddress: my.friend, text: "Hello, How are you?" } ---
  • 42. commandFailedEvent: { sourceAddress: ., eventTime: 0, origSourceAddress: my.address, origEventTime: 0, origProtocol: !!null "", origMessageType: hello, reason: text must be set } --- hello: { sourceAddress: my.address, eventTime: 0, toAddress: my.friend, text: "Hello, How are you?" } ---
  • 43.
  • 44. Q & A Blog: http://vanilla-java.github.io/ http://chronicle-accelerate.com enquiries@chronicle-accelerate.com https://github.com/OpenHFT/Chronicle-Accelerate Australia/APAC Contact jerry.shea@chronicle.software