Blockchain technology records information to a ledger shared between thousands of nodes. In the technology’s purest form, those nodes are not controlled by any central authority, and information cannot be changed once written to the ledger. Because of the security and autonomy this technology offers (in theory at least), blockchains now underpin many popular cryptocurrencies such as Bitcoin.
But as Kazuyuki Shudo, an associate professor at the Tokyo Institute of Technology, points out, "It has been nearly impossible to test improvements on real-world blockchain networks, because that would mean having to update the software of all the thousands of nodes on a network."
In researching blockchains, Shudo and his colleagues searched for a simulator that would help them experiment with and improve the technology. But existing simulators were too hard to use and lacked the features the team wanted. Moreover, these simulators had apparently been created for specific research and were abandoned soon after that work was completed, because many of the tools the group found were no longer being updated.
"The most recent simulator we looked at was developed in October 2016," says Shudo. "And it was no longer being maintained."
So, the group developed its own simulator. Dubbed SimBlock, it runs on any personal computer supporting Java and enables users to easily change the behavior of blockchain nodes. Consequently, investigating the effects of changed node-behavior has now become a straightforward matter, says Shudo.
"All the parameters of the nodes in SimBlock are written in Java," he explains. "These source files are separated from the main SimBlock Java source code, so the user simply edits [the nodes’] source code to change their behavior."
Changes may be applied to all nodes at once, or to an individual node or group of nodes.
SimBlock can simulate the parameters of Bitcoin, Litecoin, and Dogecoin. It mirrors a blockchain's network size, block-generation interval, and Internet communication speeds, taking into account bandwidth and latency between six regions: North America, South America, Europe, Australia, Asia Pacific, and Japan. It also lets users modify simulated communication speed parameters as well as the parameters of the blockchain nodes.
To help users understand how a network behaves after different modifications, the group has created a visualization tool that shows communication between nodes, as well as the length of a blockchain. This is presented as an animated simulation of the network running on a world map.
SimBlock’s data visualization tool shows how nodes behave in a network as users make changes to the network’s parameters. Illustration: SimBlock
The visualizer reads out a simulation log of a given network generated by SimBlock, and its contents are overlaid across the world map. The visualizer then runs an animation depicting the behavior of the nodes, which are color-coded to show transactional changes. As a new block is generated, the block is assigned a new color. The colors of the nodes first seen in the animation are the same as those of the last block that the nodes received. When a different node receives the new block, that node is recolored to match the color of the new block.
To compare an original network directly with a network in which the parameters have been changed, the user can open two windows and run two simulations simultaneously. By comparing the changes, the user can see, for instance, which network is more efficient for block propagation, and how changes affect propagation in each region of the map.
The team behind SimBlock plans to add support for other cryptocurrencies such as Ethereum, update the tool’s simulated Internet communication speed, and add support for newer communication protocols like Compact Block Relay, which provides a more realistic simulation of Bitcoin.
The researchers are also using SimBlock to test the security of distributed networks by conducting malicious attacks against them within the tool and gauging their success rates.
"Though we developed SimBlock for our own research," says Shudo, "we decided to make it publicly available as open source so that other researchers can use it and so help accelerate blockchain research.”
Documentation in English and Japanese is available here.