Robot swarms neutralize harmful Byzantine robots using a blockchain-based token economy
Data files
Jan 09, 2024 version files 1.27 GB
-
README.md
-
StrPacDor2023-scirobotics-data.zip
Abstract
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.
README: 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: <Number of robots>rob-<Number of Byzantines>byz-<Repetition number>
. 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
orCHAINDATASIZE
: 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
orVOTECOUNT
: Total number of estimates sent to the smart contract -
#OKVOTES
orVOTEOKCOUNT
: 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
.
Methods
Results obtained in both simulated and real-robot experiments.