Bitcoin Network Simulator

Bitcoin Network Simulator
2013-11-18  3:59 ` Christophe Biocca
  
From: Rafael Brune @ 2013-11-17 16:43 UTC (permalink / raw)
  To: bitcoin-development

Over the last days I spent some time working on a simple Bitcoin network simulator.
It is a stochastic event-based continuous-time simulation of Bitcoin miners
exchanging messages and building block chains. It simulates latency, bandwidth 
and also verification speed but it currently does not simulate propagation/inclusion
of transactions and instead uses random block sizes.

The simulator includes two examples, one for a 51% attack and the other is an
implementation of selfish mining (pretty much 1:1 as described in the paper).
With the random parameters I picked it seems like it pays off to mine selfish with
>=30% of the hashing power - but take this with a huge grain of salt as this
is with a very small network and randomly chosen parameters. And of course it
is not a perfect replica of the real world network.

Since this is based on my understanding of the Bitcoin network and protocol it
would be great if others would take a look and help improve it.

The project can be found on my github:
https://github.com/rbrune/btcsim

Regards,
 Rafael Brune


 permalink raw reply	[|nested]
2013-11-17 16:43 [Bitcoin-development] Bitcoin Network Simulator Rafael Brune

  
From: Christophe Biocca @ 2013-11-18  3:59 UTC ( / )
  To: bitcoin-development



Beat me to it. My own implementation is here:
https://github.com/christophebiocca/bitcoin-network-simulator
Same basic principles, but I've been following the protocol message
structure as much as possible/Theoretical support for transaction
propagation (I really want to see zero-conf stuff, and whether it works).
Running a network of 1000 full nodes (with 100 miners) for a week of
simulated time (with a normal hashrate) and empty blocks (except for the
coinbase transaction) takes about 30-60 seconds.
Uses nodejs, with the ultimate goal of having a network/chain visualization
running in the browser (with the actual simulation running on a WebWorker
to keep things responsive).


On Sun, Nov 17, 2013 at 11:43 AM, Rafael Brune <mail@rbrune•de> wrote:

> Over the last days I spent some time working on a simple Bitcoin network
> simulator.
> It is a stochastic event-based continuous-time simulation of Bitcoin miners
> exchanging messages and building block chains. It simulates latency,
> bandwidth
> and also verification speed but it currently does not simulate
> propagation/inclusion
> of transactions and instead uses random block sizes.
>
> The simulator includes two examples, one for a 51% attack and the other is
> an
> implementation of selfish mining (pretty much 1:1 as described in the
> paper).
> With the random parameters I picked it seems like it pays off to mine
> selfish with
> >=30% of the hashing power - but take this with a huge grain of salt as
> this
> is with a very small network and randomly chosen parameters. And of course
> it
> is not a perfect replica of the real world network.
>
> Since this is based on my understanding of the Bitcoin network and
> protocol it
> would be great if others would take a look and help improve it.
>
> The project can be found on my github:
> https://github.com/rbrune/btcsim
>
> Regards,
>  Rafael Brune
>
> ------------------------------------------------------------------------------
> DreamFactory - Open Source REST & JSON Services for HTML5 & Native Apps
> OAuth, Users, Roles, SQL, NoSQL, BLOB Storage and External API Access
> Free app hosting. Or install the open source package on any LAMP server.
> Sign up and see examples for AngularJS, jQuery, Sencha Touch and Native!
> http://pubads.g.doubleclick.net/gampad/clk?id=63469471&iu=/4140/ostg.clktrk
> _______________________________________________
> Bitcoin-development mailing list
> Bitcoin-development@lists•sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/bitcoin-development
>