LearnBitcoin

Bitcoin Dev Archive 2013

Bitcoin Network Simulator

2 messages, 17 to 18 Nov 2013. Started by Rafael Brune.

Rafael Brune, Christophe Biocca

Permalink Original thread on gnusha.org

Rafael Brune permalink original

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

Quoted text (1 line)
>=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

Christophe Biocca in reply to Rafael Brune permalink original

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:

Quoted text (42 lines)
> 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
>