• BitCoin is a crypto currency where the creation
and transfer of BitCoins is based on an open-
source cryptographic protocol independent of
any central authority.
• Future of online currency?
• Impact on Privacy, Criminal Activities & Taxation.
Challenges with P2P Currency
• How to regulate the amount of minted
• How to prevent double spending?
• How to enforce anonymity?
• How to scale the currency?
Regulating the minted Currency
• Mining, or generating, is the process of adding
transaction records to BitCoins block chain of
• Computationally Difficult Problem.
• Mining a block is difficult because the SHA-256
hash of a block's header must be lower than or
equal to the current target ( agreed by the
network) in order for the block to be accepted by
Preventing Double Spending
• BitCoin protects against double spending by verifying
each transaction added to the block chain to ensure
that the inputs for the transaction had not previously
already been spent.
• A block chain is a transaction database shared by all
nodes participating in a system. A full copy of a
currency's block chain contains every transaction ever
executed in the currency. With this information, one
can find out how much value belonged to each address
at any point in history.
All Hail Neo4J !
• Neo4J is a NoSQL graph database.
• The data is stored in a graph model.
• Full ACID transactions with Graph Query
• Perfect fit for associative data sets.
• Scale easily and provide a way around
expensive join operations.
• Building tools to import block chain data in
Neo4J. ( 9.2 GB as of 15th September )
• Generating Charts & Stats :
Total BitCoins in circulation.
Total Transaction Fees & Number of Transactions.
Block Chain size.
And much more !
A reusable JRuby gem for
• Building a JRuby gem (neobitcoin) :
1. Why JRuby over MRI ?
( Avoiding REST API Overhead )
2. Using JSON RPC to connect to a BitCoin
server running at localhost.
3. Importing Block Chain data and storing it
appropriately in Neo4J.
Generating Charts & Statistics
• Building a Ruby on Rails web
application using this gem with
HighCharts JS API to generate
statistics & Charts.
• Time Permitting : Working on a
Visualization for BitCoin block chain
based on Neo4J.