DOI: 10.5061/dryad.zcrjdfnj3
title: Robot swarms neutralize harmful Byzantine robots using a blockchain-based token economy

description: Through cooperation, robot swarms can perform tasks or solve problems that
 a single robot from the swarm could not perform/solve by itself. However,
 it has been shown that a single Byzantine robot (e.g., a malfunctioning or
 malicious robot) can disrupt the coordination strategy of the entire
 swarm. Therefore, a versatile swarm robotics framework that addresses
 security issues in inter-robot communication and coordination is urgently
 needed. In this paper, we show that security issues can be addressed by
 setting up a token economy between the robots. To create and maintain the
 token economy, we use blockchain technology, originally developed for the
 digital currency Bitcoin. The robots are given crypto tokens that allow
 them to participate in the swarm's security-critical activities. The
 token economy is regulated via a smart contract that decides how to
 distribute crypto tokens among the robots depending on their
 contributions. We design the smart contract so that Byzantine robots soon
 run out of crypto tokens and can therefore no longer influence the rest of
 the swarm. In experiments with up to 24 physical robots, we demonstrate
 that our smart contract approach indeed works: the robots can maintain
 blockchain networks and a blockchain-based token economy can be used to
 neutralize the destructive actions of Byzantine robots in a
 collective-sensing scenario. In experiments with more than 100 simulated
 robots, we study the scalability and long-term behavior of our approach.
 The obtained results demonstrate the feasibility and viability of
 blockchain-based swarm robotics.
description: Results obtained in both simulated and real-robot
 experiments.
description: # Robot swarms neutralize harmful Byzantine robots using a
 blockchain-based token economy This dataset contains the results of the
 simulation and real-robot experiments, which are discussed in the Science
 Robotics article "Robot swarms neutralize harmful Byzantine robots
 using a blockchain-based token economy." ## Description of the data
 and file structure The dataset is divided into two top-level folders,
 `reality` and `simulation`, corresponding to the results of the real-robot
 and simulation experiments, respectively. For both top-level folders,
 there are sub-folders for the different experiments (named
 `Experiment_Gx`) that correspond to the experiments described in the
 article as follows: * `Experiment_G1`: Experiment 1a - Increasing number
 of Byzantines * `Experiment_G2`: Experiment 1b - Generality study
 (changing floor layouts) * `Experiment_G3`: Experiment 1b - Generality
 study (p=0.5) * `Experiment_G4`: Experiment 1b - Generality study (uniform
 distribution between 0.0 and 1.0) * `Experiment_G5`: Experiment 2a -
 Constant arena size (without Byzantines) * `Experiment_G6`: Experiment 2a
 - Constant arena size (with Byzantines) * `Experiment_G9`: Experiment 2b -
 Increasing arena size with constant robot density (with Byzantines) *
 `Experiment_G10`: Experiment 2c - Long run-time: swarm estimate behavior
 and blockchain growth (also used for measuring bandwidth utilization) *
 `Experiment_G12`: Experiment 2d - Long run-time: token flow dynamics *
 `Experiment_GS1`: Rate of estimates (Supplementary Results) For each
 repetition of an experiment, the experiment sub-folders contain folders
 with the following nomenclature: `rob-byz-`. For example,
 `24rob-3byz-2` contains the results of an experiment with 24 robots, of
 which 3 are Byzantine robots, and it is the second repetition of this
 experiment. Each experiment sub-folder contains one folder per robot
 labeled with the robot's ID. For each robot ID, there are up to 7 CSV
 files and 1 log file. In the following, we give a brief overview of these
 files and list the important variables within each file. The first two
 columns in the CSV files, named `ID` and `TIME`, respectively refer to the
 robot's ID and timestamp (in seconds) for each entry in each file. *
 `block.csv`: information about blockchain blocks * `BLOCK`: Block number *
 `HASH`: Hash value of the block * `PHASH`: Hash value of the previous
 block * `buffer.csv`: number and IDs of peers of the robots * `#BUFFER`:
 Number of peers in ARGoS-Python buffer * `#GETH`: Number of peers in
 Ethereum (geth) buffer * `estimate.csv`: data from the ground sensors *
 `ESTIMATE`: local estimate of the fraction of white tiles, obtained with
 the help of the ground sensors (also used for the calculation of the
 baseline) * `extra.csv`: blockchain data size and CPU usage: * `CPU`: CPU
 utilization in percent * `RAM`: RAM utilization in percent * `KB` or
 `CHAINDATASIZE`: size of the blockchain data folder in kilobyte *
 `monitor.log`: contains a dump of the log statements printed to the
 console of this robot (only in simulation experiments) * `sc.csv`:
 information from the smart contract (e.g., mean of estimates, number of
 estimates) * `BALANCE`: balance (in ether) of the robot * `MEAN`:
 blockchain estimate of the fraction of white tiles * `#VOTES` or
 `VOTECOUNT`: Total number of estimates sent to the smart contract *
 `#OKVOTES` or `VOTEOKCOUNT`: Number of estimates after outlier detection *
 `C?`: Indicates if the consensus signal was received by this robot *
 `sync.csv`: number of blocks per robot encounter * `#BLOCKS`: Number of
 blocks obtained blocks when blockchain was synced with another robot *
 `vote.csv`: * `VOTE`: Value of estimate sent to the smart contract (divide
 by 10^7 to obtain the fraction of white tiles) The sub-folders in the
 folder `Experiment_G10` (Experiment 2c) additionally contain a folder
 named `communication_size`. In this folder, there is a log file for each
 robot, which contains the result of the communication size measurement
 obtained using the tool `nethogs`.