SlideShare a Scribd company logo
Stefan Thomas • WeUseCoins.com



$


                        BitcoinJS
                        A divorce and new beginnings




    www.bitcoinjs.org               Creative Commons 3.0 Attribution
$ login




 www.bitcoinjs.org   Creative Commons 3.0 Attribution
$ login




 www.bitcoinjs.org   Creative Commons 3.0 Attribution
$ login

                     - Web developer
                      13 years




 www.bitcoinjs.org        Creative Commons 3.0 Attribution
$ login

                     - Web developer
                       13 years



                     - Bitcoin evangelist



 www.bitcoinjs.org         Creative Commons 3.0 Attribution
$ login

                     - Web developer
                       13 years



                     - Bitcoin evangelist
                       6 months




 www.bitcoinjs.org         Creative Commons 3.0 Attribution
$ login

                     - Web developer
                       13 years



                     - Bitcoin evangelist
                       6 months




 www.bitcoinjs.org         Creative Commons 3.0 Attribution
$ login

                     - Web developer
                       13 years



                     - Bitcoin evangelist
                       6 months




 www.bitcoinjs.org         Creative Commons 3.0 Attribution
$ ls
- What’s Bitcoin? (1 slide version)
- Things that are... sub-optimal
- Node.js to the rescue!




 www.bitcoinjs.org      Creative Commons 3.0 Attribution
$ man bitcoin




 www.bitcoinjs.org   Creative Commons 3.0 Attribution
$ man bitcoin
- Limited set of tokens




 www.bitcoinjs.org    Creative Commons 3.0 Attribution
$ man bitcoin
- Limited set of tokens
- Decentralized




 www.bitcoinjs.org    Creative Commons 3.0 Attribution
$ man bitcoin
- Limited set of tokens
- Decentralized
- Open-Source




 www.bitcoinjs.org    Creative Commons 3.0 Attribution
$ man bitcoin
- Limited set of tokens
- Decentralized
- Open-Source


= Internet Money
 www.bitcoinjs.org    Creative Commons 3.0 Attribution
$ wget blk*.dat




 www.bitcoinjs.org   Creative Commons 3.0 Attribution
$ wget blk*.dat




 www.bitcoinjs.org   Creative Commons 3.0 Attribution
$ wget blk*.dat

                                   x 140000




 www.bitcoinjs.org   Creative Commons 3.0 Attribution
$ wget blk*.dat

                                   x 140000




= 620 MB


 www.bitcoinjs.org   Creative Commons 3.0 Attribution
$ wget blk*.dat

                                   x 140000




= 620 MB => 6-24 hours


 www.bitcoinjs.org   Creative Commons 3.0 Attribution
$ wget blk*.dat

                                   x 140000




= 620 MB => 6-24 hours


 www.bitcoinjs.org   Creative Commons 3.0 Attribution
$ rm wallet.dat




 www.bitcoinjs.org   Creative Commons 3.0 Attribution
$ rm wallet.dat




VirtualBox           Dropbox             Ironkey
                         +
                     Truecrypt


 www.bitcoinjs.org               Creative Commons 3.0 Attribution
$ rm wallet.dat




VirtualBox           Dropbox             Ironkey
                         +
                     Truecrypt


 www.bitcoinjs.org               Creative Commons 3.0 Attribution
$ rm wallet.dat




VirtualBox           Dropbox             Ironkey
                         +
                     Truecrypt


 www.bitcoinjs.org               Creative Commons 3.0 Attribution
$ rm wallet.dat




VirtualBox           Dropbox             Ironkey
                         +
                     Truecrypt


 www.bitcoinjs.org               Creative Commons 3.0 Attribution
$ rm wallet.dat




VirtualBox           Dropbox             Ironkey
                         +
                     Truecrypt


 www.bitcoinjs.org               Creative Commons 3.0 Attribution
$ rm wallet.dat




 www.bitcoinjs.org   Creative Commons 3.0 Attribution
$ rm wallet.dat




 www.bitcoinjs.org   Creative Commons 3.0 Attribution
$ scp wallet.dat

Metasploit 4.0
These additions include nine new SCADA exploits, improved 64-
bit Linux payloads, exploits for Firefox and Internet Explorer,
full-HTTPS and HTTP Meterpreter stagers, and post-exploitation
modules for dumping passwords from Outlook, WSFTP,
CoreFTP, SmartFTP, TotalCommander, BitCoin and many other
applications.


    www.bitcoinjs.org                      Creative Commons 3.0 Attribution
$ scp wallet.dat

Metasploit 4.0
These additions include nine new SCADA exploits, improved 64-
bit Linux payloads, exploits for Firefox and Internet Explorer,
full-HTTPS and HTTP Meterpreter stagers, and post-exploitation
modules for dumping passwords from Outlook, WSFTP,
CoreFTP, SmartFTP, TotalCommander, BitCoin and many other
applications.


    www.bitcoinjs.org                      Creative Commons 3.0 Attribution
$ scp wallet.dat

Metasploit 4.0
blah new post exploitation modules




  www.bitcoinjs.org     Creative Commons 3.0 Attribution
$ scp wallet.dat

Metasploit 4.0
blah new post exploitation modules
blah blah for dumping passwords blah




  www.bitcoinjs.org     Creative Commons 3.0 Attribution
$ scp wallet.dat

Metasploit 4.0
blah new post exploitation modules
blah blah for dumping passwords blah

Blah, BitCoin, Blah, …


  www.bitcoinjs.org     Creative Commons 3.0 Attribution
$ scp wallet.dat

Metasploit 4.0
blah new post exploitation modules
blah blah for dumping passwords blah

Blah, BitCoin, Blah, …


  www.bitcoinjs.org     Creative Commons 3.0 Attribution
$ cat cmn_sense.txt




 www.bitcoinjs.org   Creative Commons 3.0 Attribution
$ cat cmn_sense.txt
Block chain




 www.bitcoinjs.org   Creative Commons 3.0 Attribution
$ uml blockchain




 www.bitcoinjs.org   Creative Commons 3.0 Attribution
$ cat cmn_sense.txt
Block chain




 www.bitcoinjs.org   Creative Commons 3.0 Attribution
$ cat cmn_sense.txt
Block chain          UI




 www.bitcoinjs.org        Creative Commons 3.0 Attribution
$ cat cmn_sense.txt
Block chain          UI               Wallet




 www.bitcoinjs.org        Creative Commons 3.0 Attribution
$ cat cmn_sense.txt
  Block chain          UI               Wallet




• HUGE!!
• Global
• Public



   www.bitcoinjs.org        Creative Commons 3.0 Attribution
$ cat cmn_sense.txt
   Block chain          UI               Wallet




 • HUGE!!
 • Global
 • Public

-> Server
    www.bitcoinjs.org        Creative Commons 3.0 Attribution
$ cat cmn_sense.txt
   Block chain                 UI                Wallet




 • HUGE!!               • Complex
 • Global               • Personal
 • Public               • Private

-> Server
    www.bitcoinjs.org                Creative Commons 3.0 Attribution
$ cat cmn_sense.txt
   Block chain                  UI                Wallet




 • HUGE!!                • Complex
 • Global                • Personal
 • Public                • Private

-> Server               -> Client
    www.bitcoinjs.org                 Creative Commons 3.0 Attribution
$ cat cmn_sense.txt
   Block chain                  UI                Wallet




 • HUGE!!                • Complex        • Simple
 • Global                • Personal       • Personal
 • Public                • Private        • Secret!!

-> Server               -> Client
    www.bitcoinjs.org                 Creative Commons 3.0 Attribution
$ cat cmn_sense.txt
   Block chain                  UI                Wallet




 • HUGE!!                • Complex        • Simple
 • Global                • Personal       • Personal
 • Public                • Private        • Secret!!
                                                             (ideally)
-> Server               -> Client      -> Hardware
    www.bitcoinjs.org                 Creative Commons 3.0 Attribution
$ find platform
Block chain server
• Peer-to-peer node




 www.bitcoinjs.org    Creative Commons 3.0 Attribution
$ find platform
Block chain server
• Peer-to-peer node
• Realtime




 www.bitcoinjs.org    Creative Commons 3.0 Attribution
$ find platform
Block chain server
• Peer-to-peer node
• Realtime
• JSON-RPC




 www.bitcoinjs.org    Creative Commons 3.0 Attribution
$ find platform
Block chain server
• Peer-to-peer node
• Realtime
• JSON-RPC
• Lots of concurrent users




 www.bitcoinjs.org           Creative Commons 3.0 Attribution
$ find platform
Block chain server
• Peer-to-peer node
• Realtime
• JSON-RPC
• Lots of concurrent users




 www.bitcoinjs.org           Creative Commons 3.0 Attribution
$ find platform
Block chain server
• Peer-to-peer node
• Realtime
• JSON-RPC
• Lots of concurrent users



                      +
 www.bitcoinjs.org           Creative Commons 3.0 Attribution
$ d8 server.js




 www.bitcoinjs.org   Creative Commons 3.0 Attribution
$ d8 server.js
Memory leaks!        Example: MongooseJS




 www.bitcoinjs.org             Creative Commons 3.0 Attribution
$ d8 server.js
Memory leaks!            Example: MongooseJS
Collection.prototype.addQueue = function (name, args) {
   this.queue.push([name, args]);
   return this;
};

Collection.prototype.doQueue = function () {
   for (var i = 0, l = this.queue.length; i < l; i++){
     this[this.queue[i][0]].apply(this, this.queue[i][1]);
  }
   return this;
};



  www.bitcoinjs.org                      Creative Commons 3.0 Attribution
$ d8 server.js
  Memory leaks!           Example: MongooseJS
 Collection.prototype.addQueue = function (name, args) {
    this.queue.push([name, args]);
    return this;
 };

 Collection.prototype.doQueue = function () {
    for (var i = 0, l = this.queue.length; i < l; i++){
      this[this.queue[i][0]].apply(this, this.queue[i][1]);
   }
+ this.queue = [];
    return this;
 };


    www.bitcoinjs.org                     Creative Commons 3.0 Attribution
$ d8 server.js
Memory leaks!           Example: node-binary
saw.chain = function () {
  var ch = Traverse(saw.handlers).map(function (node) {
    // ...

   if (typeof node === 'function') {
     this.update(function () {
       saw.actions.push({
         path : ps,
         args : [].slice.call(arguments)
       });
       return ch;
     });
   }

  www.bitcoinjs.org                     Creative Commons 3.0 Attribution
$ d8 server.js
   Lesson




 www.bitcoinjs.org   Creative Commons 3.0 Attribution
$ d8 server.js
    Lesson

Node.js libraries
can be strange




  www.bitcoinjs.org   Creative Commons 3.0 Attribution
$ d8 server.js
    Lesson

Node.js libraries
can be strange




  www.bitcoinjs.org   Creative Commons 3.0 Attribution
$ d8 server.js
    Lesson

Node.js libraries
can be strange

But overall it’s
not that bad!



  www.bitcoinjs.org   Creative Commons 3.0 Attribution
$ d8 server.js
    Lesson                     Also:

Node.js libraries     V8’s GC is very good!
can be strange

But overall it’s
not that bad!



  www.bitcoinjs.org         Creative Commons 3.0 Attribution
$ d8 server.js
Debugging Tip: “LiveObjectList”

Getting set up
# Compile V8 with LiveObjectList support
scons liveobjectlist=on ...

# Run your program with debugging
node --debug my_leaky_program.js

# Connect to your program with D8
d8 --remote_debugger



   www.bitcoinjs.org                       Creative Commons 3.0 Attribution
$ d8 server.js
Debugging Tip: “LiveObjectList”

Usage
lol   c                   Capture a heap snapshot
lol                       Show heap snapshots
lol   list                List objects in a snapshot
lol   diff [s1] [s2]      Show differences between snapshots
lol   path [obj_id]       Show retaining paths for an object




      www.bitcoinjs.org                      Creative Commons 3.0 Attribution
$ d8 server.js
moon@clymene:~/opt/node$ deps/v8/d8 --remote_debugger
> Type: connect
V8-Version: 3.1.8.26
Protocol-Version: 1
Embedding-Host: node v0.4.10

stopped
dbg> lol c
Captured live object list 1: count 156079 size 8129300
dbg> c
(running)
>
stopped
dbg> lol c
Captured live object list 2: count 173343 size 8374416
dbg>

   www.bitcoinjs.org                     Creative Commons 3.0 Attribution
$ d8 server.js
dbg> gc
GC 7809868 => 6710536 (7.4M => 6.4M)

dbg> lol diff 1 2 v t   Array 1000
objects:
  [ 1] @222138: size    16,   0xb39bd329   <JSArray>   len   0
  [ 2] @222139: size    16,   0xb39bd339   <JSArray>   len   0
  [ 3] @222143: size    16,   0xb39bd3a1   <JSArray>   len   0
  [ 4] @222144: size    16,   0xb39bd3b1   <JSArray>   len   0
  [ 5] @222145: size    16,   0xb39bd3c1   <JSArray>   len   0
  [ 6] @222365: size    16,   0xb39bede5   <JSArray>   len   0
  [ 7] @222498: size    16,   0xb39bfea5   <JSArray>   len   0
  [ 8] @222615: size    16,   0xb39c0d55   <JSArray>   len   3
...

dbg> lol path @222138

   www.bitcoinjs.org                           Creative Commons 3.0 Attribution
$ d8 server.js
    |
    |
    V

[274] @79332 0xb4422699: size 20 : HeapObject DescriptorArray FixedArray
0xb4422699: [FixedArray]
 - length: 3
  [0]: 0xb77b3efd <FixedArray[53]>
  [1]: 0xb577404d <undefined>
  [2]: 0xb41eddd9 <JS array[0]>

    |
    |
    V

[275] @215108 0xb41eddd9: size 16 : HeapObject JSObject JSArray
0xb41eddd9: [JSObject]
 - map = 0xb5754861
 - prototype = 0xb77b4f49
 {
   #length: 0xb577e581 <Proxy> (callback)
   #_cast: (null descriptor)
 }

=====================================



     www.bitcoinjs.org                                             Creative Commons 3.0 Attribution
$ uname -a
Another thing…       32 bit           64 bit




 www.bitcoinjs.org    Creative Commons 3.0 Attribution
$ uname -a
Another thing…        32 bit           64 bit

- V8 heap limit        1 GB             1.9 GB




  www.bitcoinjs.org    Creative Commons 3.0 Attribution
$ uname -a
Another thing…        32 bit           64 bit

- V8 heap limit        1 GB             1.9 GB

- MongoDB database    2.5 GB




  www.bitcoinjs.org    Creative Commons 3.0 Attribution
$ bitcoinjs run


Now STOP!




 www.bitcoinjs.org   Creative Commons 3.0 Attribution
$ bitcoinjs run


Now STOP!

Demo time!

 www.bitcoinjs.org   Creative Commons 3.0 Attribution
$ forecast
Lots more to be done!

- GUI

- Wallet

- Shopping Cart Interface



  www.bitcoinjs.org         Creative Commons 3.0 Attribution
$ git clone bitcoinjs-gui
A matching client!

- JS-based crypto (fun stuff!)




  www.bitcoinjs.org         Creative Commons 3.0 Attribution
$ git clone bitcoinjs-gui
A matching client!

- JS-based crypto (fun stuff!)

- HTML5 LocalStorage




  www.bitcoinjs.org         Creative Commons 3.0 Attribution
$ git clone bitcoinjs-gui
A matching client!

- JS-based crypto (fun stuff!)

- HTML5 LocalStorage

- Socket.IO



  www.bitcoinjs.org         Creative Commons 3.0 Attribution
$ git clone bitcoinjs-gui
A matching client!




  www.bitcoinjs.org   Creative Commons 3.0 Attribution
$ git clone bitcoinjs-gui
A matching client!

- Beta August 2011

- Screencast:

  http:/
       /www.youtube.com/watch?v=KTmFwnIRG9c




  www.bitcoinjs.org         Creative Commons 3.0 Attribution
$ wallet 2.0
Ideas for a more secure wallet




  www.bitcoinjs.org       Creative Commons 3.0 Attribution
$ wallet 2.0
Ideas for a more secure wallet

- Deterministic Wallet




  www.bitcoinjs.org       Creative Commons 3.0 Attribution
$ wallet 2.0
Ideas for a more secure wallet

- Deterministic Wallet

- Distributed Key Generation




  www.bitcoinjs.org        Creative Commons 3.0 Attribution
$ wallet 2.0
Ideas for a more secure wallet

- Deterministic Wallet

- Distributed Key Generation

- Hardware Device



  www.bitcoinjs.org        Creative Commons 3.0 Attribution
$ exit


Thank you
And good night!


 www.bitcoinjs.org   Creative Commons 3.0 Attribution
$ tail -f
        github.com/bitcoinjs

        @bitcoinjs

        Meetup this Saturday!
        Oliver Twist Pub 16:30



 www.bitcoinjs.org               Creative Commons 3.0 Attribution

More Related Content

Viewers also liked

Secure your job presentation at cea 2011 jim yates
Secure your job presentation at cea 2011 jim yatesSecure your job presentation at cea 2011 jim yates
Secure your job presentation at cea 2011 jim yates
MelissaLoschy
 
What's New at NaB
What's New at NaBWhat's New at NaB
What's New at NaB
MelissaLoschy
 
Coaching Presentation -Trudy, Nuts and Bolts
Coaching Presentation -Trudy, Nuts and BoltsCoaching Presentation -Trudy, Nuts and Bolts
Coaching Presentation -Trudy, Nuts and Bolts
MelissaLoschy
 
"When the Boss is Away, Does the Staff Stay and Play" -Hays Academy
"When the Boss is Away, Does the Staff Stay and Play" -Hays Academy"When the Boss is Away, Does the Staff Stay and Play" -Hays Academy
"When the Boss is Away, Does the Staff Stay and Play" -Hays AcademyMelissaLoschy
 
Innovations in marketing strategies aacs1
Innovations in marketing strategies aacs1Innovations in marketing strategies aacs1
Innovations in marketing strategies aacs1
MelissaLoschy
 
Preparing to Find the Right Job
Preparing to Find the Right JobPreparing to Find the Right Job
Preparing to Find the Right Job
MelissaLoschy
 
Jim yates preparation, organization, and priority planning
Jim yates preparation, organization, and priority planningJim yates preparation, organization, and priority planning
Jim yates preparation, organization, and priority planning
MelissaLoschy
 
Marla presentation 1
Marla presentation 1Marla presentation 1
Marla presentation 1
playhouse_1
 
Presentacion recursos didacticos y experiencias tic en educacion infantil
Presentacion recursos didacticos y experiencias tic en educacion infantilPresentacion recursos didacticos y experiencias tic en educacion infantil
Presentacion recursos didacticos y experiencias tic en educacion infantil
leidygiraldobotero
 
Vitodens 01
Vitodens 01Vitodens 01
Vitodens 01
Sifis Diamantidis
 
Introduction to circulator
Introduction to circulatorIntroduction to circulator
Introduction to circulator
EdDonnelly
 
Whitney Portfolio
Whitney PortfolioWhitney Portfolio
Whitney Portfolio
wrwolff
 
Calbrand
CalbrandCalbrand
Calbrand
calbrands
 
Como ganar amigos e influir sobre las personas
Como ganar amigos e influir sobre las personasComo ganar amigos e influir sobre las personas
Como ganar amigos e influir sobre las personas
Karen Cruz Sologuren
 
What does OOP stand for?
What does OOP stand for?What does OOP stand for?
What does OOP stand for?
Colin Riley
 

Viewers also liked (16)

Secure your job presentation at cea 2011 jim yates
Secure your job presentation at cea 2011 jim yatesSecure your job presentation at cea 2011 jim yates
Secure your job presentation at cea 2011 jim yates
 
What's New at NaB
What's New at NaBWhat's New at NaB
What's New at NaB
 
Coaching Presentation -Trudy, Nuts and Bolts
Coaching Presentation -Trudy, Nuts and BoltsCoaching Presentation -Trudy, Nuts and Bolts
Coaching Presentation -Trudy, Nuts and Bolts
 
"When the Boss is Away, Does the Staff Stay and Play" -Hays Academy
"When the Boss is Away, Does the Staff Stay and Play" -Hays Academy"When the Boss is Away, Does the Staff Stay and Play" -Hays Academy
"When the Boss is Away, Does the Staff Stay and Play" -Hays Academy
 
Reading
ReadingReading
Reading
 
Innovations in marketing strategies aacs1
Innovations in marketing strategies aacs1Innovations in marketing strategies aacs1
Innovations in marketing strategies aacs1
 
Preparing to Find the Right Job
Preparing to Find the Right JobPreparing to Find the Right Job
Preparing to Find the Right Job
 
Jim yates preparation, organization, and priority planning
Jim yates preparation, organization, and priority planningJim yates preparation, organization, and priority planning
Jim yates preparation, organization, and priority planning
 
Marla presentation 1
Marla presentation 1Marla presentation 1
Marla presentation 1
 
Presentacion recursos didacticos y experiencias tic en educacion infantil
Presentacion recursos didacticos y experiencias tic en educacion infantilPresentacion recursos didacticos y experiencias tic en educacion infantil
Presentacion recursos didacticos y experiencias tic en educacion infantil
 
Vitodens 01
Vitodens 01Vitodens 01
Vitodens 01
 
Introduction to circulator
Introduction to circulatorIntroduction to circulator
Introduction to circulator
 
Whitney Portfolio
Whitney PortfolioWhitney Portfolio
Whitney Portfolio
 
Calbrand
CalbrandCalbrand
Calbrand
 
Como ganar amigos e influir sobre las personas
Como ganar amigos e influir sobre las personasComo ganar amigos e influir sobre las personas
Como ganar amigos e influir sobre las personas
 
What does OOP stand for?
What does OOP stand for?What does OOP stand for?
What does OOP stand for?
 

Similar to BitcoinJS Webtuesday Presentation

Past, Present and Future of Data Processing in Apache Hadoop
Past, Present and Future of Data Processing in Apache HadoopPast, Present and Future of Data Processing in Apache Hadoop
Past, Present and Future of Data Processing in Apache Hadoop
Codemotion
 
Rewiring the Internet for Ownership with Big Data and Blockchains, by Trent M...
Rewiring the Internet for Ownership with Big Data and Blockchains, by Trent M...Rewiring the Internet for Ownership with Big Data and Blockchains, by Trent M...
Rewiring the Internet for Ownership with Big Data and Blockchains, by Trent M...
ascribeIO
 
Blockchain for Business on Hyperledger
Blockchain for Business on HyperledgerBlockchain for Business on Hyperledger
Blockchain for Business on Hyperledger
All Things Open
 
Introduction to Web 2.0
Introduction to Web 2.0Introduction to Web 2.0
Introduction to Web 2.0
Reggie Niccolo Santos
 
Rindi - JAX 2016 Taming the Bitcoin Blockchain
Rindi - JAX 2016 Taming the Bitcoin BlockchainRindi - JAX 2016 Taming the Bitcoin Blockchain
Rindi - JAX 2016 Taming the Bitcoin Blockchain
Caterina Rindi
 
Libbitcoin slides
Libbitcoin slidesLibbitcoin slides
Libbitcoin slides
swansontec
 
Altitude SF 2017: The power of the network
Altitude SF 2017: The power of the networkAltitude SF 2017: The power of the network
Altitude SF 2017: The power of the network
Fastly
 
Marek pubsubhuddle realtime_web
Marek pubsubhuddle realtime_webMarek pubsubhuddle realtime_web
Marek pubsubhuddle realtime_web
Skills Matter Talks
 
02_07_2018_«El valor de blockchain en el registro de la actividad académica: ...
02_07_2018_«El valor de blockchain en el registro de la actividad académica: ...02_07_2018_«El valor de blockchain en el registro de la actividad académica: ...
02_07_2018_«El valor de blockchain en el registro de la actividad académica: ...
eMadrid network
 
Dockerを用いたマイクロサービスについて
Dockerを用いたマイクロサービスについてDockerを用いたマイクロサービスについて
Dockerを用いたマイクロサービスについて
エンジニア勉強会 エスキュービズム
 
CloudStack / Saltstack lightning talk at DevOps Amsterdam
CloudStack / Saltstack lightning talk at DevOps AmsterdamCloudStack / Saltstack lightning talk at DevOps Amsterdam
CloudStack / Saltstack lightning talk at DevOps Amsterdam
Sebastien Goasguen
 
An Introduction to Blockchain
An Introduction to BlockchainAn Introduction to Blockchain
An Introduction to Blockchain
Arun Sharma
 
Networking in Kubernetes
Networking in KubernetesNetworking in Kubernetes
Networking in Kubernetes
Minhan Xia
 
Basics of Block Chain
Basics of Block ChainBasics of Block Chain
Basics of Block Chain
Tharindu Weerasinghe
 
How Bitcoin Fits into Web 3
How Bitcoin Fits into Web 3How Bitcoin Fits into Web 3
How Bitcoin Fits into Web 3
AlexLewin7
 
Tutorial blockchain technical overview-ss
Tutorial blockchain technical overview-ssTutorial blockchain technical overview-ss
Tutorial blockchain technical overview-ss
Howard Anglin
 
MySQLでNoSQL - アメーバピグでのNoSQLの実例
MySQLでNoSQL - アメーバピグでのNoSQLの実例MySQLでNoSQL - アメーバピグでのNoSQLの実例
MySQLでNoSQL - アメーバピグでのNoSQLの実例
Kazuhiro Oinuma
 
Fast C++ Web Servers
Fast C++ Web ServersFast C++ Web Servers
Fast C++ Web Servers
Troy Miles
 
Blockchain, AI and Machine Learning
Blockchain, AI and Machine LearningBlockchain, AI and Machine Learning
Blockchain, AI and Machine Learning
Tao Wang
 
The Open Library, Public Domain Wiki, and other Realized Myths of Creative Co...
The Open Library, Public Domain Wiki, and other Realized Myths of Creative Co...The Open Library, Public Domain Wiki, and other Realized Myths of Creative Co...
The Open Library, Public Domain Wiki, and other Realized Myths of Creative Co...
Jon Phillips
 

Similar to BitcoinJS Webtuesday Presentation (20)

Past, Present and Future of Data Processing in Apache Hadoop
Past, Present and Future of Data Processing in Apache HadoopPast, Present and Future of Data Processing in Apache Hadoop
Past, Present and Future of Data Processing in Apache Hadoop
 
Rewiring the Internet for Ownership with Big Data and Blockchains, by Trent M...
Rewiring the Internet for Ownership with Big Data and Blockchains, by Trent M...Rewiring the Internet for Ownership with Big Data and Blockchains, by Trent M...
Rewiring the Internet for Ownership with Big Data and Blockchains, by Trent M...
 
Blockchain for Business on Hyperledger
Blockchain for Business on HyperledgerBlockchain for Business on Hyperledger
Blockchain for Business on Hyperledger
 
Introduction to Web 2.0
Introduction to Web 2.0Introduction to Web 2.0
Introduction to Web 2.0
 
Rindi - JAX 2016 Taming the Bitcoin Blockchain
Rindi - JAX 2016 Taming the Bitcoin BlockchainRindi - JAX 2016 Taming the Bitcoin Blockchain
Rindi - JAX 2016 Taming the Bitcoin Blockchain
 
Libbitcoin slides
Libbitcoin slidesLibbitcoin slides
Libbitcoin slides
 
Altitude SF 2017: The power of the network
Altitude SF 2017: The power of the networkAltitude SF 2017: The power of the network
Altitude SF 2017: The power of the network
 
Marek pubsubhuddle realtime_web
Marek pubsubhuddle realtime_webMarek pubsubhuddle realtime_web
Marek pubsubhuddle realtime_web
 
02_07_2018_«El valor de blockchain en el registro de la actividad académica: ...
02_07_2018_«El valor de blockchain en el registro de la actividad académica: ...02_07_2018_«El valor de blockchain en el registro de la actividad académica: ...
02_07_2018_«El valor de blockchain en el registro de la actividad académica: ...
 
Dockerを用いたマイクロサービスについて
Dockerを用いたマイクロサービスについてDockerを用いたマイクロサービスについて
Dockerを用いたマイクロサービスについて
 
CloudStack / Saltstack lightning talk at DevOps Amsterdam
CloudStack / Saltstack lightning talk at DevOps AmsterdamCloudStack / Saltstack lightning talk at DevOps Amsterdam
CloudStack / Saltstack lightning talk at DevOps Amsterdam
 
An Introduction to Blockchain
An Introduction to BlockchainAn Introduction to Blockchain
An Introduction to Blockchain
 
Networking in Kubernetes
Networking in KubernetesNetworking in Kubernetes
Networking in Kubernetes
 
Basics of Block Chain
Basics of Block ChainBasics of Block Chain
Basics of Block Chain
 
How Bitcoin Fits into Web 3
How Bitcoin Fits into Web 3How Bitcoin Fits into Web 3
How Bitcoin Fits into Web 3
 
Tutorial blockchain technical overview-ss
Tutorial blockchain technical overview-ssTutorial blockchain technical overview-ss
Tutorial blockchain technical overview-ss
 
MySQLでNoSQL - アメーバピグでのNoSQLの実例
MySQLでNoSQL - アメーバピグでのNoSQLの実例MySQLでNoSQL - アメーバピグでのNoSQLの実例
MySQLでNoSQL - アメーバピグでのNoSQLの実例
 
Fast C++ Web Servers
Fast C++ Web ServersFast C++ Web Servers
Fast C++ Web Servers
 
Blockchain, AI and Machine Learning
Blockchain, AI and Machine LearningBlockchain, AI and Machine Learning
Blockchain, AI and Machine Learning
 
The Open Library, Public Domain Wiki, and other Realized Myths of Creative Co...
The Open Library, Public Domain Wiki, and other Realized Myths of Creative Co...The Open Library, Public Domain Wiki, and other Realized Myths of Creative Co...
The Open Library, Public Domain Wiki, and other Realized Myths of Creative Co...
 

Recently uploaded

Cosa hanno in comune un mattoncino Lego e la backdoor XZ?
Cosa hanno in comune un mattoncino Lego e la backdoor XZ?Cosa hanno in comune un mattoncino Lego e la backdoor XZ?
Cosa hanno in comune un mattoncino Lego e la backdoor XZ?
Speck&Tech
 
GraphSummit Singapore | Graphing Success: Revolutionising Organisational Stru...
GraphSummit Singapore | Graphing Success: Revolutionising Organisational Stru...GraphSummit Singapore | Graphing Success: Revolutionising Organisational Stru...
GraphSummit Singapore | Graphing Success: Revolutionising Organisational Stru...
Neo4j
 
National Security Agency - NSA mobile device best practices
National Security Agency - NSA mobile device best practicesNational Security Agency - NSA mobile device best practices
National Security Agency - NSA mobile device best practices
Quotidiano Piemontese
 
How to Get CNIC Information System with Paksim Ga.pptx
How to Get CNIC Information System with Paksim Ga.pptxHow to Get CNIC Information System with Paksim Ga.pptx
How to Get CNIC Information System with Paksim Ga.pptx
danishmna97
 
Goodbye Windows 11: Make Way for Nitrux Linux 3.5.0!
Goodbye Windows 11: Make Way for Nitrux Linux 3.5.0!Goodbye Windows 11: Make Way for Nitrux Linux 3.5.0!
Goodbye Windows 11: Make Way for Nitrux Linux 3.5.0!
SOFTTECHHUB
 
20240607 QFM018 Elixir Reading List May 2024
20240607 QFM018 Elixir Reading List May 202420240607 QFM018 Elixir Reading List May 2024
20240607 QFM018 Elixir Reading List May 2024
Matthew Sinclair
 
Building Production Ready Search Pipelines with Spark and Milvus
Building Production Ready Search Pipelines with Spark and MilvusBuilding Production Ready Search Pipelines with Spark and Milvus
Building Production Ready Search Pipelines with Spark and Milvus
Zilliz
 
Unlock the Future of Search with MongoDB Atlas_ Vector Search Unleashed.pdf
Unlock the Future of Search with MongoDB Atlas_ Vector Search Unleashed.pdfUnlock the Future of Search with MongoDB Atlas_ Vector Search Unleashed.pdf
Unlock the Future of Search with MongoDB Atlas_ Vector Search Unleashed.pdf
Malak Abu Hammad
 
TrustArc Webinar - 2024 Global Privacy Survey
TrustArc Webinar - 2024 Global Privacy SurveyTrustArc Webinar - 2024 Global Privacy Survey
TrustArc Webinar - 2024 Global Privacy Survey
TrustArc
 
みなさんこんにちはこれ何文字まで入るの?40文字以下不可とか本当に意味わからないけどこれ限界文字数書いてないからマジでやばい文字数いけるんじゃないの?えこ...
みなさんこんにちはこれ何文字まで入るの?40文字以下不可とか本当に意味わからないけどこれ限界文字数書いてないからマジでやばい文字数いけるんじゃないの?えこ...みなさんこんにちはこれ何文字まで入るの?40文字以下不可とか本当に意味わからないけどこれ限界文字数書いてないからマジでやばい文字数いけるんじゃないの?えこ...
みなさんこんにちはこれ何文字まで入るの?40文字以下不可とか本当に意味わからないけどこれ限界文字数書いてないからマジでやばい文字数いけるんじゃないの?えこ...
名前 です男
 
Uni Systems Copilot event_05062024_C.Vlachos.pdf
Uni Systems Copilot event_05062024_C.Vlachos.pdfUni Systems Copilot event_05062024_C.Vlachos.pdf
Uni Systems Copilot event_05062024_C.Vlachos.pdf
Uni Systems S.M.S.A.
 
Mind map of terminologies used in context of Generative AI
Mind map of terminologies used in context of Generative AIMind map of terminologies used in context of Generative AI
Mind map of terminologies used in context of Generative AI
Kumud Singh
 
GraphSummit Singapore | The Art of the Possible with Graph - Q2 2024
GraphSummit Singapore | The Art of the  Possible with Graph - Q2 2024GraphSummit Singapore | The Art of the  Possible with Graph - Q2 2024
GraphSummit Singapore | The Art of the Possible with Graph - Q2 2024
Neo4j
 
“Building and Scaling AI Applications with the Nx AI Manager,” a Presentation...
“Building and Scaling AI Applications with the Nx AI Manager,” a Presentation...“Building and Scaling AI Applications with the Nx AI Manager,” a Presentation...
“Building and Scaling AI Applications with the Nx AI Manager,” a Presentation...
Edge AI and Vision Alliance
 
Removing Uninteresting Bytes in Software Fuzzing
Removing Uninteresting Bytes in Software FuzzingRemoving Uninteresting Bytes in Software Fuzzing
Removing Uninteresting Bytes in Software Fuzzing
Aftab Hussain
 
Microsoft - Power Platform_G.Aspiotis.pdf
Microsoft - Power Platform_G.Aspiotis.pdfMicrosoft - Power Platform_G.Aspiotis.pdf
Microsoft - Power Platform_G.Aspiotis.pdf
Uni Systems S.M.S.A.
 
Best 20 SEO Techniques To Improve Website Visibility In SERP
Best 20 SEO Techniques To Improve Website Visibility In SERPBest 20 SEO Techniques To Improve Website Visibility In SERP
Best 20 SEO Techniques To Improve Website Visibility In SERP
Pixlogix Infotech
 
Communications Mining Series - Zero to Hero - Session 1
Communications Mining Series - Zero to Hero - Session 1Communications Mining Series - Zero to Hero - Session 1
Communications Mining Series - Zero to Hero - Session 1
DianaGray10
 
UiPath Test Automation using UiPath Test Suite series, part 6
UiPath Test Automation using UiPath Test Suite series, part 6UiPath Test Automation using UiPath Test Suite series, part 6
UiPath Test Automation using UiPath Test Suite series, part 6
DianaGray10
 
GraphSummit Singapore | The Future of Agility: Supercharging Digital Transfor...
GraphSummit Singapore | The Future of Agility: Supercharging Digital Transfor...GraphSummit Singapore | The Future of Agility: Supercharging Digital Transfor...
GraphSummit Singapore | The Future of Agility: Supercharging Digital Transfor...
Neo4j
 

Recently uploaded (20)

Cosa hanno in comune un mattoncino Lego e la backdoor XZ?
Cosa hanno in comune un mattoncino Lego e la backdoor XZ?Cosa hanno in comune un mattoncino Lego e la backdoor XZ?
Cosa hanno in comune un mattoncino Lego e la backdoor XZ?
 
GraphSummit Singapore | Graphing Success: Revolutionising Organisational Stru...
GraphSummit Singapore | Graphing Success: Revolutionising Organisational Stru...GraphSummit Singapore | Graphing Success: Revolutionising Organisational Stru...
GraphSummit Singapore | Graphing Success: Revolutionising Organisational Stru...
 
National Security Agency - NSA mobile device best practices
National Security Agency - NSA mobile device best practicesNational Security Agency - NSA mobile device best practices
National Security Agency - NSA mobile device best practices
 
How to Get CNIC Information System with Paksim Ga.pptx
How to Get CNIC Information System with Paksim Ga.pptxHow to Get CNIC Information System with Paksim Ga.pptx
How to Get CNIC Information System with Paksim Ga.pptx
 
Goodbye Windows 11: Make Way for Nitrux Linux 3.5.0!
Goodbye Windows 11: Make Way for Nitrux Linux 3.5.0!Goodbye Windows 11: Make Way for Nitrux Linux 3.5.0!
Goodbye Windows 11: Make Way for Nitrux Linux 3.5.0!
 
20240607 QFM018 Elixir Reading List May 2024
20240607 QFM018 Elixir Reading List May 202420240607 QFM018 Elixir Reading List May 2024
20240607 QFM018 Elixir Reading List May 2024
 
Building Production Ready Search Pipelines with Spark and Milvus
Building Production Ready Search Pipelines with Spark and MilvusBuilding Production Ready Search Pipelines with Spark and Milvus
Building Production Ready Search Pipelines with Spark and Milvus
 
Unlock the Future of Search with MongoDB Atlas_ Vector Search Unleashed.pdf
Unlock the Future of Search with MongoDB Atlas_ Vector Search Unleashed.pdfUnlock the Future of Search with MongoDB Atlas_ Vector Search Unleashed.pdf
Unlock the Future of Search with MongoDB Atlas_ Vector Search Unleashed.pdf
 
TrustArc Webinar - 2024 Global Privacy Survey
TrustArc Webinar - 2024 Global Privacy SurveyTrustArc Webinar - 2024 Global Privacy Survey
TrustArc Webinar - 2024 Global Privacy Survey
 
みなさんこんにちはこれ何文字まで入るの?40文字以下不可とか本当に意味わからないけどこれ限界文字数書いてないからマジでやばい文字数いけるんじゃないの?えこ...
みなさんこんにちはこれ何文字まで入るの?40文字以下不可とか本当に意味わからないけどこれ限界文字数書いてないからマジでやばい文字数いけるんじゃないの?えこ...みなさんこんにちはこれ何文字まで入るの?40文字以下不可とか本当に意味わからないけどこれ限界文字数書いてないからマジでやばい文字数いけるんじゃないの?えこ...
みなさんこんにちはこれ何文字まで入るの?40文字以下不可とか本当に意味わからないけどこれ限界文字数書いてないからマジでやばい文字数いけるんじゃないの?えこ...
 
Uni Systems Copilot event_05062024_C.Vlachos.pdf
Uni Systems Copilot event_05062024_C.Vlachos.pdfUni Systems Copilot event_05062024_C.Vlachos.pdf
Uni Systems Copilot event_05062024_C.Vlachos.pdf
 
Mind map of terminologies used in context of Generative AI
Mind map of terminologies used in context of Generative AIMind map of terminologies used in context of Generative AI
Mind map of terminologies used in context of Generative AI
 
GraphSummit Singapore | The Art of the Possible with Graph - Q2 2024
GraphSummit Singapore | The Art of the  Possible with Graph - Q2 2024GraphSummit Singapore | The Art of the  Possible with Graph - Q2 2024
GraphSummit Singapore | The Art of the Possible with Graph - Q2 2024
 
“Building and Scaling AI Applications with the Nx AI Manager,” a Presentation...
“Building and Scaling AI Applications with the Nx AI Manager,” a Presentation...“Building and Scaling AI Applications with the Nx AI Manager,” a Presentation...
“Building and Scaling AI Applications with the Nx AI Manager,” a Presentation...
 
Removing Uninteresting Bytes in Software Fuzzing
Removing Uninteresting Bytes in Software FuzzingRemoving Uninteresting Bytes in Software Fuzzing
Removing Uninteresting Bytes in Software Fuzzing
 
Microsoft - Power Platform_G.Aspiotis.pdf
Microsoft - Power Platform_G.Aspiotis.pdfMicrosoft - Power Platform_G.Aspiotis.pdf
Microsoft - Power Platform_G.Aspiotis.pdf
 
Best 20 SEO Techniques To Improve Website Visibility In SERP
Best 20 SEO Techniques To Improve Website Visibility In SERPBest 20 SEO Techniques To Improve Website Visibility In SERP
Best 20 SEO Techniques To Improve Website Visibility In SERP
 
Communications Mining Series - Zero to Hero - Session 1
Communications Mining Series - Zero to Hero - Session 1Communications Mining Series - Zero to Hero - Session 1
Communications Mining Series - Zero to Hero - Session 1
 
UiPath Test Automation using UiPath Test Suite series, part 6
UiPath Test Automation using UiPath Test Suite series, part 6UiPath Test Automation using UiPath Test Suite series, part 6
UiPath Test Automation using UiPath Test Suite series, part 6
 
GraphSummit Singapore | The Future of Agility: Supercharging Digital Transfor...
GraphSummit Singapore | The Future of Agility: Supercharging Digital Transfor...GraphSummit Singapore | The Future of Agility: Supercharging Digital Transfor...
GraphSummit Singapore | The Future of Agility: Supercharging Digital Transfor...
 

BitcoinJS Webtuesday Presentation

  • 1. Stefan Thomas • WeUseCoins.com $ BitcoinJS A divorce and new beginnings www.bitcoinjs.org Creative Commons 3.0 Attribution
  • 2. $ login www.bitcoinjs.org Creative Commons 3.0 Attribution
  • 3. $ login www.bitcoinjs.org Creative Commons 3.0 Attribution
  • 4. $ login - Web developer 13 years www.bitcoinjs.org Creative Commons 3.0 Attribution
  • 5. $ login - Web developer 13 years - Bitcoin evangelist www.bitcoinjs.org Creative Commons 3.0 Attribution
  • 6. $ login - Web developer 13 years - Bitcoin evangelist 6 months www.bitcoinjs.org Creative Commons 3.0 Attribution
  • 7. $ login - Web developer 13 years - Bitcoin evangelist 6 months www.bitcoinjs.org Creative Commons 3.0 Attribution
  • 8. $ login - Web developer 13 years - Bitcoin evangelist 6 months www.bitcoinjs.org Creative Commons 3.0 Attribution
  • 9. $ ls - What’s Bitcoin? (1 slide version) - Things that are... sub-optimal - Node.js to the rescue! www.bitcoinjs.org Creative Commons 3.0 Attribution
  • 10. $ man bitcoin www.bitcoinjs.org Creative Commons 3.0 Attribution
  • 11. $ man bitcoin - Limited set of tokens www.bitcoinjs.org Creative Commons 3.0 Attribution
  • 12. $ man bitcoin - Limited set of tokens - Decentralized www.bitcoinjs.org Creative Commons 3.0 Attribution
  • 13. $ man bitcoin - Limited set of tokens - Decentralized - Open-Source www.bitcoinjs.org Creative Commons 3.0 Attribution
  • 14. $ man bitcoin - Limited set of tokens - Decentralized - Open-Source = Internet Money www.bitcoinjs.org Creative Commons 3.0 Attribution
  • 15. $ wget blk*.dat www.bitcoinjs.org Creative Commons 3.0 Attribution
  • 16. $ wget blk*.dat www.bitcoinjs.org Creative Commons 3.0 Attribution
  • 17. $ wget blk*.dat x 140000 www.bitcoinjs.org Creative Commons 3.0 Attribution
  • 18. $ wget blk*.dat x 140000 = 620 MB www.bitcoinjs.org Creative Commons 3.0 Attribution
  • 19. $ wget blk*.dat x 140000 = 620 MB => 6-24 hours www.bitcoinjs.org Creative Commons 3.0 Attribution
  • 20. $ wget blk*.dat x 140000 = 620 MB => 6-24 hours www.bitcoinjs.org Creative Commons 3.0 Attribution
  • 21. $ rm wallet.dat www.bitcoinjs.org Creative Commons 3.0 Attribution
  • 22. $ rm wallet.dat VirtualBox Dropbox Ironkey + Truecrypt www.bitcoinjs.org Creative Commons 3.0 Attribution
  • 23. $ rm wallet.dat VirtualBox Dropbox Ironkey + Truecrypt www.bitcoinjs.org Creative Commons 3.0 Attribution
  • 24. $ rm wallet.dat VirtualBox Dropbox Ironkey + Truecrypt www.bitcoinjs.org Creative Commons 3.0 Attribution
  • 25. $ rm wallet.dat VirtualBox Dropbox Ironkey + Truecrypt www.bitcoinjs.org Creative Commons 3.0 Attribution
  • 26. $ rm wallet.dat VirtualBox Dropbox Ironkey + Truecrypt www.bitcoinjs.org Creative Commons 3.0 Attribution
  • 27. $ rm wallet.dat www.bitcoinjs.org Creative Commons 3.0 Attribution
  • 28. $ rm wallet.dat www.bitcoinjs.org Creative Commons 3.0 Attribution
  • 29. $ scp wallet.dat Metasploit 4.0 These additions include nine new SCADA exploits, improved 64- bit Linux payloads, exploits for Firefox and Internet Explorer, full-HTTPS and HTTP Meterpreter stagers, and post-exploitation modules for dumping passwords from Outlook, WSFTP, CoreFTP, SmartFTP, TotalCommander, BitCoin and many other applications. www.bitcoinjs.org Creative Commons 3.0 Attribution
  • 30. $ scp wallet.dat Metasploit 4.0 These additions include nine new SCADA exploits, improved 64- bit Linux payloads, exploits for Firefox and Internet Explorer, full-HTTPS and HTTP Meterpreter stagers, and post-exploitation modules for dumping passwords from Outlook, WSFTP, CoreFTP, SmartFTP, TotalCommander, BitCoin and many other applications. www.bitcoinjs.org Creative Commons 3.0 Attribution
  • 31. $ scp wallet.dat Metasploit 4.0 blah new post exploitation modules www.bitcoinjs.org Creative Commons 3.0 Attribution
  • 32. $ scp wallet.dat Metasploit 4.0 blah new post exploitation modules blah blah for dumping passwords blah www.bitcoinjs.org Creative Commons 3.0 Attribution
  • 33. $ scp wallet.dat Metasploit 4.0 blah new post exploitation modules blah blah for dumping passwords blah Blah, BitCoin, Blah, … www.bitcoinjs.org Creative Commons 3.0 Attribution
  • 34. $ scp wallet.dat Metasploit 4.0 blah new post exploitation modules blah blah for dumping passwords blah Blah, BitCoin, Blah, … www.bitcoinjs.org Creative Commons 3.0 Attribution
  • 35. $ cat cmn_sense.txt www.bitcoinjs.org Creative Commons 3.0 Attribution
  • 36. $ cat cmn_sense.txt Block chain www.bitcoinjs.org Creative Commons 3.0 Attribution
  • 37. $ uml blockchain www.bitcoinjs.org Creative Commons 3.0 Attribution
  • 38. $ cat cmn_sense.txt Block chain www.bitcoinjs.org Creative Commons 3.0 Attribution
  • 39. $ cat cmn_sense.txt Block chain UI www.bitcoinjs.org Creative Commons 3.0 Attribution
  • 40. $ cat cmn_sense.txt Block chain UI Wallet www.bitcoinjs.org Creative Commons 3.0 Attribution
  • 41. $ cat cmn_sense.txt Block chain UI Wallet • HUGE!! • Global • Public www.bitcoinjs.org Creative Commons 3.0 Attribution
  • 42. $ cat cmn_sense.txt Block chain UI Wallet • HUGE!! • Global • Public -> Server www.bitcoinjs.org Creative Commons 3.0 Attribution
  • 43. $ cat cmn_sense.txt Block chain UI Wallet • HUGE!! • Complex • Global • Personal • Public • Private -> Server www.bitcoinjs.org Creative Commons 3.0 Attribution
  • 44. $ cat cmn_sense.txt Block chain UI Wallet • HUGE!! • Complex • Global • Personal • Public • Private -> Server -> Client www.bitcoinjs.org Creative Commons 3.0 Attribution
  • 45. $ cat cmn_sense.txt Block chain UI Wallet • HUGE!! • Complex • Simple • Global • Personal • Personal • Public • Private • Secret!! -> Server -> Client www.bitcoinjs.org Creative Commons 3.0 Attribution
  • 46. $ cat cmn_sense.txt Block chain UI Wallet • HUGE!! • Complex • Simple • Global • Personal • Personal • Public • Private • Secret!! (ideally) -> Server -> Client -> Hardware www.bitcoinjs.org Creative Commons 3.0 Attribution
  • 47. $ find platform Block chain server • Peer-to-peer node www.bitcoinjs.org Creative Commons 3.0 Attribution
  • 48. $ find platform Block chain server • Peer-to-peer node • Realtime www.bitcoinjs.org Creative Commons 3.0 Attribution
  • 49. $ find platform Block chain server • Peer-to-peer node • Realtime • JSON-RPC www.bitcoinjs.org Creative Commons 3.0 Attribution
  • 50. $ find platform Block chain server • Peer-to-peer node • Realtime • JSON-RPC • Lots of concurrent users www.bitcoinjs.org Creative Commons 3.0 Attribution
  • 51. $ find platform Block chain server • Peer-to-peer node • Realtime • JSON-RPC • Lots of concurrent users www.bitcoinjs.org Creative Commons 3.0 Attribution
  • 52. $ find platform Block chain server • Peer-to-peer node • Realtime • JSON-RPC • Lots of concurrent users + www.bitcoinjs.org Creative Commons 3.0 Attribution
  • 53. $ d8 server.js www.bitcoinjs.org Creative Commons 3.0 Attribution
  • 54. $ d8 server.js Memory leaks! Example: MongooseJS www.bitcoinjs.org Creative Commons 3.0 Attribution
  • 55. $ d8 server.js Memory leaks! Example: MongooseJS Collection.prototype.addQueue = function (name, args) { this.queue.push([name, args]); return this; }; Collection.prototype.doQueue = function () { for (var i = 0, l = this.queue.length; i < l; i++){ this[this.queue[i][0]].apply(this, this.queue[i][1]); } return this; }; www.bitcoinjs.org Creative Commons 3.0 Attribution
  • 56. $ d8 server.js Memory leaks! Example: MongooseJS Collection.prototype.addQueue = function (name, args) { this.queue.push([name, args]); return this; }; Collection.prototype.doQueue = function () { for (var i = 0, l = this.queue.length; i < l; i++){ this[this.queue[i][0]].apply(this, this.queue[i][1]); } + this.queue = []; return this; }; www.bitcoinjs.org Creative Commons 3.0 Attribution
  • 57. $ d8 server.js Memory leaks! Example: node-binary saw.chain = function () { var ch = Traverse(saw.handlers).map(function (node) { // ... if (typeof node === 'function') { this.update(function () { saw.actions.push({ path : ps, args : [].slice.call(arguments) }); return ch; }); } www.bitcoinjs.org Creative Commons 3.0 Attribution
  • 58. $ d8 server.js Lesson www.bitcoinjs.org Creative Commons 3.0 Attribution
  • 59. $ d8 server.js Lesson Node.js libraries can be strange www.bitcoinjs.org Creative Commons 3.0 Attribution
  • 60. $ d8 server.js Lesson Node.js libraries can be strange www.bitcoinjs.org Creative Commons 3.0 Attribution
  • 61. $ d8 server.js Lesson Node.js libraries can be strange But overall it’s not that bad! www.bitcoinjs.org Creative Commons 3.0 Attribution
  • 62. $ d8 server.js Lesson Also: Node.js libraries V8’s GC is very good! can be strange But overall it’s not that bad! www.bitcoinjs.org Creative Commons 3.0 Attribution
  • 63. $ d8 server.js Debugging Tip: “LiveObjectList” Getting set up # Compile V8 with LiveObjectList support scons liveobjectlist=on ... # Run your program with debugging node --debug my_leaky_program.js # Connect to your program with D8 d8 --remote_debugger www.bitcoinjs.org Creative Commons 3.0 Attribution
  • 64. $ d8 server.js Debugging Tip: “LiveObjectList” Usage lol c Capture a heap snapshot lol Show heap snapshots lol list List objects in a snapshot lol diff [s1] [s2] Show differences between snapshots lol path [obj_id] Show retaining paths for an object www.bitcoinjs.org Creative Commons 3.0 Attribution
  • 65. $ d8 server.js moon@clymene:~/opt/node$ deps/v8/d8 --remote_debugger > Type: connect V8-Version: 3.1.8.26 Protocol-Version: 1 Embedding-Host: node v0.4.10 stopped dbg> lol c Captured live object list 1: count 156079 size 8129300 dbg> c (running) > stopped dbg> lol c Captured live object list 2: count 173343 size 8374416 dbg> www.bitcoinjs.org Creative Commons 3.0 Attribution
  • 66. $ d8 server.js dbg> gc GC 7809868 => 6710536 (7.4M => 6.4M) dbg> lol diff 1 2 v t Array 1000 objects: [ 1] @222138: size 16, 0xb39bd329 <JSArray> len 0 [ 2] @222139: size 16, 0xb39bd339 <JSArray> len 0 [ 3] @222143: size 16, 0xb39bd3a1 <JSArray> len 0 [ 4] @222144: size 16, 0xb39bd3b1 <JSArray> len 0 [ 5] @222145: size 16, 0xb39bd3c1 <JSArray> len 0 [ 6] @222365: size 16, 0xb39bede5 <JSArray> len 0 [ 7] @222498: size 16, 0xb39bfea5 <JSArray> len 0 [ 8] @222615: size 16, 0xb39c0d55 <JSArray> len 3 ... dbg> lol path @222138 www.bitcoinjs.org Creative Commons 3.0 Attribution
  • 67. $ d8 server.js | | V [274] @79332 0xb4422699: size 20 : HeapObject DescriptorArray FixedArray 0xb4422699: [FixedArray] - length: 3 [0]: 0xb77b3efd <FixedArray[53]> [1]: 0xb577404d <undefined> [2]: 0xb41eddd9 <JS array[0]> | | V [275] @215108 0xb41eddd9: size 16 : HeapObject JSObject JSArray 0xb41eddd9: [JSObject] - map = 0xb5754861 - prototype = 0xb77b4f49 { #length: 0xb577e581 <Proxy> (callback) #_cast: (null descriptor) } ===================================== www.bitcoinjs.org Creative Commons 3.0 Attribution
  • 68. $ uname -a Another thing… 32 bit 64 bit www.bitcoinjs.org Creative Commons 3.0 Attribution
  • 69. $ uname -a Another thing… 32 bit 64 bit - V8 heap limit 1 GB 1.9 GB www.bitcoinjs.org Creative Commons 3.0 Attribution
  • 70. $ uname -a Another thing… 32 bit 64 bit - V8 heap limit 1 GB 1.9 GB - MongoDB database 2.5 GB www.bitcoinjs.org Creative Commons 3.0 Attribution
  • 71. $ bitcoinjs run Now STOP! www.bitcoinjs.org Creative Commons 3.0 Attribution
  • 72. $ bitcoinjs run Now STOP! Demo time! www.bitcoinjs.org Creative Commons 3.0 Attribution
  • 73. $ forecast Lots more to be done! - GUI - Wallet - Shopping Cart Interface www.bitcoinjs.org Creative Commons 3.0 Attribution
  • 74. $ git clone bitcoinjs-gui A matching client! - JS-based crypto (fun stuff!) www.bitcoinjs.org Creative Commons 3.0 Attribution
  • 75. $ git clone bitcoinjs-gui A matching client! - JS-based crypto (fun stuff!) - HTML5 LocalStorage www.bitcoinjs.org Creative Commons 3.0 Attribution
  • 76. $ git clone bitcoinjs-gui A matching client! - JS-based crypto (fun stuff!) - HTML5 LocalStorage - Socket.IO www.bitcoinjs.org Creative Commons 3.0 Attribution
  • 77. $ git clone bitcoinjs-gui A matching client! www.bitcoinjs.org Creative Commons 3.0 Attribution
  • 78. $ git clone bitcoinjs-gui A matching client! - Beta August 2011 - Screencast: http:/ /www.youtube.com/watch?v=KTmFwnIRG9c www.bitcoinjs.org Creative Commons 3.0 Attribution
  • 79. $ wallet 2.0 Ideas for a more secure wallet www.bitcoinjs.org Creative Commons 3.0 Attribution
  • 80. $ wallet 2.0 Ideas for a more secure wallet - Deterministic Wallet www.bitcoinjs.org Creative Commons 3.0 Attribution
  • 81. $ wallet 2.0 Ideas for a more secure wallet - Deterministic Wallet - Distributed Key Generation www.bitcoinjs.org Creative Commons 3.0 Attribution
  • 82. $ wallet 2.0 Ideas for a more secure wallet - Deterministic Wallet - Distributed Key Generation - Hardware Device www.bitcoinjs.org Creative Commons 3.0 Attribution
  • 83. $ exit Thank you And good night! www.bitcoinjs.org Creative Commons 3.0 Attribution
  • 84. $ tail -f github.com/bitcoinjs @bitcoinjs Meetup this Saturday! Oliver Twist Pub 16:30 www.bitcoinjs.org Creative Commons 3.0 Attribution