by peers at httpdot.net, 2019, gnu gplv3
embedded system running a custom copyleft free/libre software on a quest for verifying the state of nothing by calculating hash of empty string, nothing, using various cryptographic hash functions and comparing them to known hash values of nothing, as an obsessive and persistent fixity check for the state of nothing executed once in every minute, and if there is no change, outputs "nothing is the same" on a command-line interface along with all its process, and outputs "nothing has changed", if anything changes. the work keeps working on its own quest forever, unless there is a system failure or it is turned off, but it carries the same persistent process every time it is turned on.
https://httpdot.net/peers/theStudyOfTheStateOfNothing/
custom software is written as a bash script by bager akbay, along with the pseudocode, and released as a copyleft free/libre software under gnu gplv3.
all programs and utilities executed by bash script are also free/libre software.
the embedded system powered by a gnu/linux operating system is also programmed by bager akbay.
commissioned by protocinema for the exhibition blockchain is... / ...for nothing with support from spot contemporary art projects, istanbul
refer to text peer on blockchain is... / ...for nothing exhibition by peers at httpdot.net by peer for more info and discussion of the work.
this work is exhibited in blockchain is... / ...for nothing exhibition by peers at httpdot.net.
nothing is possible, a publication for the exhibition, also aggregates all info and resources about the work, along with other works in the exhibition.
the study of the state of nothing: nothing is the same, or, nothing has changed calculates hash of the empty string, nothing, using five different cryptographic hash functions, which are md5, has-160, tiger,sha-256 and ripemd-320, and compares them to known hash values of nothing for these cryptographic hash functions. the work prints its process on command-line interface as it makes the calculations and once all calculations are completed, printed text on command-line interface becomes the following:
[sleep1] "the study of the state of nothing: nothing is the same, or, nothing has changed" [sleep4]
is on the quest of proving that nothing is the same,[sleep4] or that nothing has changed, [sleep2]
by calculating hash values of nothing for various cryptographic hash functions & [sleep3]
comparing them to known cryptographic hash values of nothing,[sleep4] persistently... [sleep4]
calculating MD5 hash of nothing... [sleep0.5]
d41d8cd98f00b204e9800998ecf8427e [sleep0.3]
comparing calculated hash to known MD5 hash of nothing... [sleep0.5]
d41d8cd98f00b204e9800998ecf8427e [sleep0.1]
d41d8cd98f00b204e9800998ecf8427e [sleep0.1]
calculated MD5 hash matches known MD5 hash of nothing! [sleep1.2]
calculating HAS-160 hash of nothing... [sleep0.5]
307964ef34151d37c8047adec7ab50f4ff89762d [sleep0.3]
comparing calculated hash to known HAS-160 hash of nothing... [sleep0.5]
307964ef34151d37c8047adec7ab50f4ff89762d [sleep0.1]
307964ef34151d37c8047adec7ab50f4ff89762d [sleep0.1]
calculated HAS-160 hash matches known HAS-160 hash of nothing! [sleep1.2]
calculating Tiger hash of nothing...[sleep0.5]
3293ac630c13f0245f92bbb1766e16167a4e58492dde73f3 [sleep0.3]
comparing calculated hash to known Tiger hash of nothing... [sleep0.5]
3293ac630c13f0245f92bbb1766e16167a4e58492dde73f3 [sleep0.1]
3293ac630c13f0245f92bbb1766e16167a4e58492dde73f3 [sleep0.1]
calculated Tiger hash matches known Tiger hash of nothing! [sleep1.2]
calculating SHA-256 hash of nothing... [sleep0.5]
e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855 [sleep0.3]
comparing calculated hash to known SHA-256 hash of nothing... [sleep0.5]
e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855 [sleep0.1]
e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855 [sleep0.1]
calculated SHA-256 hash matches known SHA-256 hash of nothing! [sleep1.2]
calculating RIPEMD-320 hash of nothing... [sleep0.5]
22d65d5661536cdc75c1fdf5c6de7b41b9f27325ebc61e8557177d705a0ec880151c3a32a00899b8 [sleep0.3]
comparing calculated hash to known RIPEMD-320 hash of nothing... [sleep0.5]
22d65d5661536cdc75c1fdf5c6de7b41b9f27325ebc61e8557177d705a0ec880151c3a32a00899b8 [sleep0.1]
22d65d5661536cdc75c1fdf5c6de7b41b9f27325ebc61e8557177d705a0ec880151c3a32a00899b8 [sleep0.1]
calculated RIPEMD-320 hash matches known RIPEMD-320 hash of nothing![sleep2.2]
all calculations and comparisons completed successfully. [sleep4]
there are multiple proofs that there are no changes [sleep4] and [sleep0.1] nothing is the same. [sleep4]
next proof check will be performed in [countdown] seconds... [sleep1]
sleep commands given above in brackets pause the process for the duration indicated there in seconds and this allows time for following and reading the process. the work starts the same process again once in a minute following the countdown after all process finishes. however the output is always the same, since hash of a string, in this case the empty string, nothing, should always be the same, unless the string changes, or there is a system failure. but the work persistently continues its quest for checking the state of nothing. even though there should be no changes and nothing should be the same, the work is programmed to output the following text, if calculated hash of nothing differs from the known hash of nothing for a given cryptographic hash function:
[name of the hash algorithm] hash value calculated for nothing didn't match known [name of the hash algorithm] hash of nothing :)
calculated [name of the hash algorithm] hash of nothing was
[calculated hash]
nothing has changed on [timestamp]
and nothing will happen.
considering such a possibility, the work keeps working on its quest, persistently, as long as it is turned on.
the study of the state of nothing: nothing is the same, or, nothing has changed is designed as a plug and play embedded system running a custom free/libre software, which you can directly connect to a display through hdmi connection and run. this is a free cultural work licensed under gnu gplv3. you are free to download the custom free/libre software running on the embedded system and run it on your computer, or build your own embedded system for running it. you are also encouraged to fork / build on / appropriate the work as a peer. full text of gnu gplv3 free software license is available at gnu website
download the work: custom free/libre software written as a bash script (39.2kB)
this bash script is also the source code of the work, which can be opened with any text editor. the source code is also included in this document under the corresponding section.
download pseudocode: plain text document for a brief explanation of the code in bash script (894bytes)
pseudocode is also included in this document under the corresponding section.
you can also download / fork the work from bager akbay’s github repository, who wrote the code and the pseudocode
watch online / download screencast documentation of the work
webm, vp9, lossless compressed-vbr242kbps, 1080p25, no audio, 1’, 1.9MB
running the work is as easy as running a shell script on a full screen command-line interface on a unix-like system for an experienced user. below are the detailed explanations for a less experienced user.
you need to have jacksum (Dipl.-Inf. (FH) Johann N. Loefflmann, 2006, gnu gplv2) installed on your system, which is executed by the bash script for hash calculations. check system requirements and installation instructions on jacksum website
or, install it using your distro’s package manager. for debian-based distributions:
sudo apt-get install jacksum
-open a terminal emulator window within GUI, such as gnome terminal, and make it full screen, also disabling the menubar, or better, switch to a virtual console (press crtl+alt+f3 for tty3). you will need to use the folowing commnad to exit virtual console and login back to graphical user interface). use your username and password to login and run a shell with command prompt.
exit
-navigate to the directory where you want to download and run the bash script,
or, just use the current directory
-copy and paste the following command which will run three commands one after the other to download the bash script, make it executable and run it. you will need to enter your sudo password to make the file executable.
wget https://httpdot.net/peers/theStudyOfTheStateOfNothing/theStudyOfTheStateOfNothing.sh \
&& sudo chmod +x theStudyOfTheStateOfNothing.sh \
&&./theStudyOfTheStateOfNothing.sh
-press key combination ctrl+c to interrupt the work and use the following command to exit terminal emulator window or virtual console where you run the work.
exit
when terminus 12x24 monospace bitmap console font is used and virtual console is displayed on a 1920x1080 pixel display, all texts fit in the vertical resolution. the work outputs 44 lines of text on command-line interface and the longest line is 81 characters. you can also adjust the console font according to the resolution of your display using:
sudo dpkg-reconfigure console-setup
This algorithm controls if nothing has changed in five different cryptograhpic algorithms.
Set MD5-hashOfNothing to the hash of nothing with the MD5 algorithm.
Set HAS-160-hashOfNothing to the hash of nothing with the HAS-160 algorithm.
Set Tiger-hashOfNothing to the hash of nothing with the Tiger algorithm.
Set SHA-256-hashOfNothing to the hash of nothing with the SHA-256 algorithm.
Set RIPEMD-320-hashOfNothing to the hash of nothing with the RIPEMD-320 algorithm.
FOREVER
FOR every algorithm
Set newHash to the recalculation of the hash of nothing.
IF nothing has changed
Alert that nothing has changed.
Alert that nothing will happen.
Wait until the current minute ends.
END FOREVER
#!/bin/bash
# "the study of the state of nothing: nothing is the same, or, nothing has changed"
# by peers at httpdot.net, 2019, gnu gplv3
#
# embedded system running a custom copyleft free/libre software on a quest for verifying the state of nothing by calculating hash of empty string, nothing, using various cryptographic hash functions and comparing them to known hash values of nothing, as an obsessive and persistent fixity check for the state of nothing executed once in every minute, and if there is no change, outputs "nothing is the same" on a command-line interface along with all its process, and outputs "nothing has changed", if anything changes. the work keeps working on its own quest forever, unless there is a system failure or it is turned off, but it carries the same persistent process every time it is turned on.
# https://httpdot.net/peers/theStudyOfTheStateOfNothing/
#
# custom software is written as a bash script by bager akbay, along with the pseudocode, and released as a copyleft free/libre software under gnu gplv3.
# all programs and utilities executed by bash script are also free/libre software.
# the embedded system powered by a gnu/linux operating system is also programmed by bager akbay.
# this work is commissioned by protocinema for the exhibition "blockchain is... / ...for nothing" at aetopoulos, athens, february 2019
#
# This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see
loop=60 #seconds
hashes=(
"d41d8cd98f00b204e9800998ecf8427e"
"307964ef34151d37c8047adec7ab50f4ff89762d"
"3293ac630c13f0245f92bbb1766e16167a4e58492dde73f3"
"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"
"22d65d5661536cdc75c1fdf5c6de7b41b9f27325ebc61e8557177d705a0ec880151c3a32a00899b8"
)
algos=(
'MD5'
'HAS-160'
'Tiger'
'SHA-256'
'RIPEMD-320'
)
algoCount=${#algos[@]}
while :
do
start=$(date +%s)
printf "\033c"
sleep 1
echo "\"the study of the state of nothing: nothing is the same, or, nothing has changed\""
sleep 4
echo -en "is on the quest of proving that nothing is the same,"
sleep 4
echo " or that nothing has changed,"
sleep 2
echo "by calculating hash values of nothing for various cryptographic hash functions &"
echo -en ""
sleep 3
echo -en "comparing them to known cryptographic hash values of nothing"
sleep 4
echo ", persistently..."
sleep 4
echo ""
for ((algoNo=0;algoNo<$algoCount;algoNo++))
do
echo "calculating ${algos[algoNo]} hash of nothing..."
y=$(jacksum -a ${algos[algoNo]} -E hex -q '' | cut -d' ' -f1)
sleep 0.5
echo "$y"
sleep 0.3
echo "comparing calculated hash to known ${algos[algoNo]} hash of nothing..."
sleep 0.5
echo "$y"
sleep 0.1
echo "${hashes[algoNo]}"
sleep 0.1
if [ "${hashes[algoNo]}" = "$y" ]; then
echo "calculated ${algos[algoNo]} hash matches known ${algos[algoNo]} hash of nothing!"
sleep 1.2
echo ""
else
echo ""
echo "${algos[algoNo]} hash value calculated for nothing didn't match known ${algos[algoNo]} hash of nothing :)"
echo "calculated ${algos[algoNo]} hash of nothing was"
echo "$y"
t=$( date '+%Y-%m-%d %H:%M:%S:%N' )
echo "nothing has changed on $t."
sleep 4
echo "and nothing will happen."
sleep 4
echo ""
fi
done
sleep 1
echo "all calculations and comparisons completed successfully."
sleep 4
echo -en "there are multiple proofs that there are no changes"
sleep 4
echo -en " and"
sleep 0.1
echo " nothing is the same."
sleep 4
echo ""
end=$(date +%s)
task=$((end-start))
next=$((loop-task))
for ((c=1;c<=$next;c++))
do
echo -en "\rnext proof check will be performed in $((next-c)) seconds...\033[0K"
sleep 1
done
echo
done
: <<'_GNUGPLv3Text_'
GNU GENERAL PUBLIC LICENSE
Version 3, 29 June 2007
Copyright (C) 2007 Free Software Foundation, Inc.
[...]
[full license text is included in the bash script but it is truncated here in the source code text since it is included at the end of this publication]
[...]
.
_GNUGPLv