SlideShare uma empresa Scribd logo
1 de 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

Mais conteúdo relacionado

Mais procurados

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
 
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
 

Mais procurados (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)
 

Semelhante a Chronicle accelerate building a digital currency

Introduction to Blockchain Development
Introduction to Blockchain DevelopmentIntroduction to Blockchain Development
Introduction to Blockchain DevelopmentLightstreams
 
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
 
Blockchin architecture azure meetup
Blockchin architecture azure meetupBlockchin architecture azure meetup
Blockchin architecture azure meetupMohammad Asif
 
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
 

Semelhante a 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
 

Último

VIP Independent Call Girls in Bandra West 🌹 9920725232 ( Call Me ) Mumbai Esc...
VIP Independent Call Girls in Bandra West 🌹 9920725232 ( Call Me ) Mumbai Esc...VIP Independent Call Girls in Bandra West 🌹 9920725232 ( Call Me ) Mumbai Esc...
VIP Independent Call Girls in Bandra West 🌹 9920725232 ( Call Me ) Mumbai Esc...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
 
8377087607, Door Step Call Girls In Kalkaji (Locanto) 24/7 Available
8377087607, Door Step Call Girls In Kalkaji (Locanto) 24/7 Available8377087607, Door Step Call Girls In Kalkaji (Locanto) 24/7 Available
8377087607, Door Step Call Girls In Kalkaji (Locanto) 24/7 Availabledollysharma2066
 
Call Girls Koregaon Park Call Me 7737669865 Budget Friendly No Advance Booking
Call Girls Koregaon Park Call Me 7737669865 Budget Friendly No Advance BookingCall Girls Koregaon Park Call Me 7737669865 Budget Friendly No Advance Booking
Call Girls Koregaon Park Call Me 7737669865 Budget Friendly No Advance Bookingroncy bisnoi
 
Vasai-Virar High Profile Model Call Girls📞9833754194-Nalasopara Satisfy Call ...
Vasai-Virar High Profile Model Call Girls📞9833754194-Nalasopara Satisfy Call ...Vasai-Virar High Profile Model Call Girls📞9833754194-Nalasopara Satisfy Call ...
Vasai-Virar High Profile Model Call Girls📞9833754194-Nalasopara Satisfy Call ...priyasharma62062
 
(Sexy Sheela) Call Girl Mumbai Call Now 👉9920725232👈 Mumbai Escorts 24x7
(Sexy Sheela) Call Girl Mumbai Call Now 👉9920725232👈 Mumbai Escorts 24x7(Sexy Sheela) Call Girl Mumbai Call Now 👉9920725232👈 Mumbai Escorts 24x7
(Sexy Sheela) Call Girl Mumbai Call Now 👉9920725232👈 Mumbai Escorts 24x7jayawati511
 
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
 
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
 
7 tips trading Deriv Accumulator Options
7 tips trading Deriv Accumulator Options7 tips trading Deriv Accumulator Options
7 tips trading Deriv Accumulator OptionsVince Stanzione
 
VIP Independent Call Girls in Andheri 🌹 9920725232 ( Call Me ) Mumbai Escorts...
VIP Independent Call Girls in Andheri 🌹 9920725232 ( Call Me ) Mumbai Escorts...VIP Independent Call Girls in Andheri 🌹 9920725232 ( Call Me ) Mumbai Escorts...
VIP Independent Call Girls in Andheri 🌹 9920725232 ( Call Me ) Mumbai Escorts...dipikadinghjn ( Why You Choose Us? ) Escorts
 
Business Principles, Tools, and Techniques in Participating in Various Types...
Business Principles, Tools, and Techniques  in Participating in Various Types...Business Principles, Tools, and Techniques  in Participating in Various Types...
Business Principles, Tools, and Techniques in Participating in Various Types...jeffreytingson
 
VIP Independent Call Girls in Mumbai 🌹 9920725232 ( Call Me ) Mumbai Escorts ...
VIP Independent Call Girls in Mumbai 🌹 9920725232 ( Call Me ) Mumbai Escorts ...VIP Independent Call Girls in Mumbai 🌹 9920725232 ( Call Me ) Mumbai Escorts ...
VIP Independent Call Girls in Mumbai 🌹 9920725232 ( Call Me ) Mumbai Escorts ...dipikadinghjn ( Why You Choose Us? ) Escorts
 
Q1 2024 Conference Call Presentation vF.pdf
Q1 2024 Conference Call Presentation vF.pdfQ1 2024 Conference Call Presentation vF.pdf
Q1 2024 Conference Call Presentation vF.pdfAdnet Communications
 
Mira Road Awesome 100% Independent Call Girls NUmber-9833754194-Dahisar Inter...
Mira Road Awesome 100% Independent Call Girls NUmber-9833754194-Dahisar Inter...Mira Road Awesome 100% Independent Call Girls NUmber-9833754194-Dahisar Inter...
Mira Road Awesome 100% Independent Call Girls NUmber-9833754194-Dahisar Inter...priyasharma62062
 
20240419-SMC-submission-Annual-Superannuation-Performance-Test-–-design-optio...
20240419-SMC-submission-Annual-Superannuation-Performance-Test-–-design-optio...20240419-SMC-submission-Annual-Superannuation-Performance-Test-–-design-optio...
20240419-SMC-submission-Annual-Superannuation-Performance-Test-–-design-optio...Henry Tapper
 
Mira Road Memorable Call Grls Number-9833754194-Bhayandar Speciallty Call Gir...
Mira Road Memorable Call Grls Number-9833754194-Bhayandar Speciallty Call Gir...Mira Road Memorable Call Grls Number-9833754194-Bhayandar Speciallty Call Gir...
Mira Road Memorable Call Grls Number-9833754194-Bhayandar Speciallty Call Gir...priyasharma62062
 
Lion One Corporate Presentation May 2024
Lion One Corporate Presentation May 2024Lion One Corporate Presentation May 2024
Lion One Corporate Presentation May 2024Adnet Communications
 
cost-volume-profit analysis.ppt(managerial accounting).pptx
cost-volume-profit analysis.ppt(managerial accounting).pptxcost-volume-profit analysis.ppt(managerial accounting).pptx
cost-volume-profit analysis.ppt(managerial accounting).pptxazadalisthp2020i
 
Pension dashboards forum 1 May 2024 (1).pdf
Pension dashboards forum 1 May 2024 (1).pdfPension dashboards forum 1 May 2024 (1).pdf
Pension dashboards forum 1 May 2024 (1).pdfHenry Tapper
 

Último (20)

VIP Independent Call Girls in Bandra West 🌹 9920725232 ( Call Me ) Mumbai Esc...
VIP Independent Call Girls in Bandra West 🌹 9920725232 ( Call Me ) Mumbai Esc...VIP Independent Call Girls in Bandra West 🌹 9920725232 ( Call Me ) Mumbai Esc...
VIP Independent Call Girls in Bandra West 🌹 9920725232 ( Call Me ) Mumbai Esc...
 
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 🔝✔️✔️
 
(INDIRA) Call Girl Mumbai Call Now 8250077686 Mumbai Escorts 24x7
(INDIRA) Call Girl Mumbai Call Now 8250077686 Mumbai Escorts 24x7(INDIRA) Call Girl Mumbai Call Now 8250077686 Mumbai Escorts 24x7
(INDIRA) Call Girl Mumbai Call Now 8250077686 Mumbai Escorts 24x7
 
8377087607, Door Step Call Girls In Kalkaji (Locanto) 24/7 Available
8377087607, Door Step Call Girls In Kalkaji (Locanto) 24/7 Available8377087607, Door Step Call Girls In Kalkaji (Locanto) 24/7 Available
8377087607, Door Step Call Girls In Kalkaji (Locanto) 24/7 Available
 
Call Girls Koregaon Park Call Me 7737669865 Budget Friendly No Advance Booking
Call Girls Koregaon Park Call Me 7737669865 Budget Friendly No Advance BookingCall Girls Koregaon Park Call Me 7737669865 Budget Friendly No Advance Booking
Call Girls Koregaon Park Call Me 7737669865 Budget Friendly No Advance Booking
 
Vasai-Virar High Profile Model Call Girls📞9833754194-Nalasopara Satisfy Call ...
Vasai-Virar High Profile Model Call Girls📞9833754194-Nalasopara Satisfy Call ...Vasai-Virar High Profile Model Call Girls📞9833754194-Nalasopara Satisfy Call ...
Vasai-Virar High Profile Model Call Girls📞9833754194-Nalasopara Satisfy Call ...
 
(Sexy Sheela) Call Girl Mumbai Call Now 👉9920725232👈 Mumbai Escorts 24x7
(Sexy Sheela) Call Girl Mumbai Call Now 👉9920725232👈 Mumbai Escorts 24x7(Sexy Sheela) Call Girl Mumbai Call Now 👉9920725232👈 Mumbai Escorts 24x7
(Sexy Sheela) Call Girl Mumbai Call Now 👉9920725232👈 Mumbai Escorts 24x7
 
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...
 
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
 
7 tips trading Deriv Accumulator Options
7 tips trading Deriv Accumulator Options7 tips trading Deriv Accumulator Options
7 tips trading Deriv Accumulator Options
 
VIP Independent Call Girls in Andheri 🌹 9920725232 ( Call Me ) Mumbai Escorts...
VIP Independent Call Girls in Andheri 🌹 9920725232 ( Call Me ) Mumbai Escorts...VIP Independent Call Girls in Andheri 🌹 9920725232 ( Call Me ) Mumbai Escorts...
VIP Independent Call Girls in Andheri 🌹 9920725232 ( Call Me ) Mumbai Escorts...
 
Business Principles, Tools, and Techniques in Participating in Various Types...
Business Principles, Tools, and Techniques  in Participating in Various Types...Business Principles, Tools, and Techniques  in Participating in Various Types...
Business Principles, Tools, and Techniques in Participating in Various Types...
 
VIP Independent Call Girls in Mumbai 🌹 9920725232 ( Call Me ) Mumbai Escorts ...
VIP Independent Call Girls in Mumbai 🌹 9920725232 ( Call Me ) Mumbai Escorts ...VIP Independent Call Girls in Mumbai 🌹 9920725232 ( Call Me ) Mumbai Escorts ...
VIP Independent Call Girls in Mumbai 🌹 9920725232 ( Call Me ) Mumbai Escorts ...
 
Q1 2024 Conference Call Presentation vF.pdf
Q1 2024 Conference Call Presentation vF.pdfQ1 2024 Conference Call Presentation vF.pdf
Q1 2024 Conference Call Presentation vF.pdf
 
Mira Road Awesome 100% Independent Call Girls NUmber-9833754194-Dahisar Inter...
Mira Road Awesome 100% Independent Call Girls NUmber-9833754194-Dahisar Inter...Mira Road Awesome 100% Independent Call Girls NUmber-9833754194-Dahisar Inter...
Mira Road Awesome 100% Independent Call Girls NUmber-9833754194-Dahisar Inter...
 
20240419-SMC-submission-Annual-Superannuation-Performance-Test-–-design-optio...
20240419-SMC-submission-Annual-Superannuation-Performance-Test-–-design-optio...20240419-SMC-submission-Annual-Superannuation-Performance-Test-–-design-optio...
20240419-SMC-submission-Annual-Superannuation-Performance-Test-–-design-optio...
 
Mira Road Memorable Call Grls Number-9833754194-Bhayandar Speciallty Call Gir...
Mira Road Memorable Call Grls Number-9833754194-Bhayandar Speciallty Call Gir...Mira Road Memorable Call Grls Number-9833754194-Bhayandar Speciallty Call Gir...
Mira Road Memorable Call Grls Number-9833754194-Bhayandar Speciallty Call Gir...
 
Lion One Corporate Presentation May 2024
Lion One Corporate Presentation May 2024Lion One Corporate Presentation May 2024
Lion One Corporate Presentation May 2024
 
cost-volume-profit analysis.ppt(managerial accounting).pptx
cost-volume-profit analysis.ppt(managerial accounting).pptxcost-volume-profit analysis.ppt(managerial accounting).pptx
cost-volume-profit analysis.ppt(managerial accounting).pptx
 
Pension dashboards forum 1 May 2024 (1).pdf
Pension dashboards forum 1 May 2024 (1).pdfPension dashboards forum 1 May 2024 (1).pdf
Pension dashboards forum 1 May 2024 (1).pdf
 

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