Skripte zur Automatisierung von Chia
[Werbung] Bereits seit geraumer Zeit biete ich Shellskripte zur Nutzung mit Chia zum Kauf an. Millionminer.de – ein Fachhandel für Kryptominer – hat sich nunmehr dazu bereit erklärt meinen Lesern ein kleines Geschenk zu machen und die kostenfreie Veröffentlichung der nachfolgenden Skripte für Chia Network möglich gemacht.
[Beitrag] Die Shellskripte für Chia umfassen die folgenden Inhalte:
- Farmer installieren
- Plotter installieren
- Farmer updaten
- Automatisches updaten des Farmers
- Plots vom Plotter automatisch abholen
- Plots auf dem Farmer automatisch verteilen
- Beispiel für das automatische Plotten
- Beispiel für aggressives automatisches Plotten
- Allgemeine Hinweise zu den Skripten
Zusätzlich habe ich die Skripte auf englisch innerhalb des Skripts kommentiert. Die Skripte sind auf Linux Debian ausgelegt.
Farmer installieren
#dont forget to format and mount your drives
#update the system and install some tools and chia as root
#location: /home/
apt-get update
apt-get -y upgrade
apt-get -y install screen
apt-get -y install lsb-release
apt-get -y install git
apt-get -y install iotop
apt-get -y install rsync
apt-get -y install sshpass
apt-get -y install smartmontools
cd /home/
git clone https://github.com/Chia-Network/chia-blockchain.git -b latest --recurse-submodules
cd chia-blockchain
chmod 775 install.sh
echo 'install as root'
sed -i 's/sudo //g' /home/chia-blockchain/install.sh
sed -i '$a. ./activate' /home/chia-blockchain/install.sh
sed -i '$achia init' /home/chia-blockchain/install.sh
sed -i '$achia version' /home/chia-blockchain/install.sh
sed -i '$agit status' /home/chia-blockchain/install.sh
sed -i '$aecho lautenbacher.io' /home/chia-blockchain/install.sh
echo 'disable strict host key checking'
sed -i '$aStrictHostKeyChecking no' /etc/ssh/ssh_config
./install.sh
echo 'add the plot directories to the farm'
echo 'example: chia plots add -d /hdd/1/'
echo 'example: chia plots add -d /hdd/2/'
echo 'chia keys add - dont forget to add the keys'
Plotter installieren
#dont forget to format and mount your drives
#update the system and install some tools and chia as root
#location: /home/
apt-get update
apt-get -y upgrade
apt-get -y install screen
apt-get -y install lsb-release
apt-get -y install git
apt-get -y install iotop
apt-get -y install rsync
apt-get -y install sshpass
apt-get -y install smartmontools
cd /home/
git clone https://github.com/Chia-Network/chia-blockchain.git -b latest --recurse-submodules
cd chia-blockchain
chmod 775 install.sh
#install as root
sed -i 's/sudo //g' /home/chia-blockchain/install.sh
sed -i '$a. ./activate' /home/chia-blockchain/install.sh
sed -i '$achia init' /home/chia-blockchain/install.sh
sed -i '$aecho lautenbacher.io' /home/chia-blockchain/install.sh
#disable strict host key checking
sed -i '$aStrictHostKeyChecking no' /etc/ssh/ssh_config
./install.sh
#there is no need to add keys
#dont forget to make tmp and plot directories on the SSDs for the plotting
Farmer updaten
#updatescript for the farmer
#stop the farmer - update everything as root - restart the farmer
#location: /home/
apt-get update
apt-get -y upgrade
cd /home/chia-blockchain
. ./activate
chia stop -d all
deactivate
git fetch
git checkout latest
git reset --hard FETCH_HEAD
git fetch
git checkout latest
chmod 775 install.sh
sed -i 's/sudo //g' /home/chia-blockchain/install.sh
sed -i '$a. ./activate' /home/chia-blockchain/install.sh
sed -i '$achia init' /home/chia-blockchain/install.sh
sed -i '$achia start farmer' /home/chia-blockchain/install.sh
sed -i '$achia version' /home/chia-blockchain/install.sh
sed -i '$agit status' /home/chia-blockchain/install.sh
sed -i '$aecho lautenbacher.io' /home/chia-blockchain/install.sh
./install.sh
Farmer automatisch updaten
#automatic updatescript for the farmer (1 time per day)
#stop the farmer - update everything as root - restart the farmer
#location: /home/4-updatefarmer-automatic.sh
apt-get update
apt-get -y upgrade
cd /home/chia-blockchain
. ./activate
chia stop -d all
deactivate
git fetch
git checkout latest
git reset --hard FETCH_HEAD
git fetch
git checkout latest
chmod 775 install.sh
sed -i 's/sudo //g' /home/chia-blockchain/install.sh
sed -i '$a. ./activate' /home/chia-blockchain/install.sh
sed -i '$achia init' /home/chia-blockchain/install.sh
sed -i '$achia start farmer' /home/chia-blockchain/install.sh
sed -i '$achia version' /home/chia-blockchain/install.sh
sed -i '$agit status' /home/chia-blockchain/install.sh
sed -i '$aecho lautenbacher.io' /home/chia-blockchain/install.sh
sed -i '$aecho waiting 1 day' /home/chia-blockchain/install.sh
sed -i '$asleep 86400' /home/chia-blockchain/install.sh
sed -i '$a/home/4-updatefarmer-automatic.sh' /home/chia-blockchain/install.sh
./install.sh
Plots vom Plotter automatisch abholen
#rcp is also possible instead of rsync
#if you not use rsync please make sure you exclude all possible temporary filenames like .temp or other file endings
#location: /home/
echo "Start Transfer"
space_free=$(df | grep -i /temphdd/1 | awk '{print $4}')
if [ $space_free -ge 115343301 ]
then
sshpass -p "password" rsync --remove-source-files --progress --recursive -e 'ssh -p22 -T -o Compression=no -x' --include "*/" --include="*.plot" --exclude="*" [email protected]:/tempstorageonplotter/ /temphdd/1
else
echo "No Space left on TempHDD1"
fi
space_free=$(df | grep -i /temphdd/2 | awk '{print $4}')
if [ $space_free -ge 115343301 ]
then
sshpass -p "password" rsync --remove-source-files --progress --recursive -e 'ssh -p22 -T -o Compression=no -x' --include "*/" --include="*.plot" --exclude="*" [email protected]:/tempstorageonplotter/ /temphdd/2
else
echo "No Space left on TempHDD2"
fi
sleep 5m
./farmer-gettheplots.sh
Plots auf dem Farmer automatisch verteilen
#location: /home/
echo "Start moving"
space_free=$(df | grep -i /hdd/1 | awk '{print $4}')
if [ $space_free -ge 115343301 ]
then
rsync --remove-source-files --progress --recursive --include "*/" --include="*.plot" --exclude="*" /temphdd/1/ /hdd/1/
rsync --remove-source-files --progress --recursive --include "*/" --include="*.plot" --exclude="*" /temphdd/2/ /hdd/1/
else
echo "No Space on HDD1"
fi
space_free=$(df | grep -i /hdd/2 | awk '{print $4}')
if [ $space_free -ge 115343301 ]
then
rsync --remove-source-files --progress --recursive --include "*/" --include="*.plot" --exclude="*" /temphdd/1/ /hdd/2/
rsync --remove-source-files --progress --recursive --include "*/" --include="*.plot" --exclude="*" /temphdd/2/ /hdd/2/
else
echo "No Space on HDD2"
fi
space_free=$(df | grep -i /hdd/3 | awk '{print $4}')
if [ $space_free -ge 115343301 ]
then
rsync --remove-source-files --progress --recursive --include "*/" --include="*.plot" --exclude="*" /temphdd/1/ /hdd/3/
rsync --remove-source-files --progress --recursive --include "*/" --include="*.plot" --exclude="*" /temphdd/2/ /hdd/3/
else
echo "No Space on HDD3"
fi
#if you have more final hard drives please extend the list and dont forget to add all disks to the farm
#do not forget slashes behind the directories
sleep 5m
./farmer-movetheplots.sh
Beispiel für automatisches Plotten
# stagger the jobs with sleep at first run (1 to 2 hours)
# 3600 = 3600 seconds
# you need to make an separate screen session and sh script for each job
#location: /home/chia-blockchain/
sleep 3600
. ./activate
for (( ; ; ))
do
echo "infinite loops [ hit CTRL+C to stop]"
#start the plotting with 4 cores
chia plots create -f farmerpublickey -p poolpulickey -k 32 -r 4 -n 1 -t /ssd/1/temp/ -d /ssd/1/plot/
#copy the final plot to the fast temp storage on the same machine
rsync --remove-source-files --progress --recursive --include "*/" --include="*.plot" --exclude="*" /ssd/1/plot/ /tempstorageonplotter/
done
Beispiel für aggressives automatisches Plotten – Teil 1
# stagger the jobs with sleep at first run (1 to 2 hours)
#location: /home/chia-blockchain/
sleep 3600
. ./activate
for (( ; ; ))
do
echo "infinite loops [ hit CTRL+C to stop]"
#start the plotting with 4 cores
chia plots create -f farmerpublickey -p poolpulickey -k 32 -r 4 -n 1 -t /ssd/1/temp/ -d /ssd/1/plot/
#copy the final plots will be done within an extra job in the aggressive version
done
Beispiel für aggressives automatisches Plotten – Teil 2
#copy the final plot to the fast temp storage on the same machine
#location: /home/chia-blockchain/
for (( ; ; ))
do
echo "infinite loops [ hit CTRL+C to stop]"
rsync --remove-source-files --progress --recursive --include "*/" --include="*.plot" --exclude="*" /ssd/1/plot/ /tempstorageonplotter/
rsync --remove-source-files --progress --recursive --include "*/" --include="*.plot" --exclude="*" /ssd/2/plot/ /tempstorageonplotter/
rsync --remove-source-files --progress --recursive --include "*/" --include="*.plot" --exclude="*" /ssd/3/plot/ /tempstorageonplotter/
sleep 5m
done
Allgemeine Hinweise zu den Skripten
Alle Skripte müssen ausführbar sein (chmod 775 ./file.sh). Der empfohlene Ort für jedes Skript ist innerhalb eines Kommentars wie #localation: /pfad/ angegeben.
Alle Skripte sind für die Ausführung innerhalb einer Bildschirmsitzung vorgesehen (außer manuelle Installation und manuelles Update). Um eine Screen-Sitzung zu starten, geben Sie „screen“ ein, Sie können die Sitzung mit (STRG+SHIFT)+D verlassen, ohne sie zu beenden.
Sie müssen nur die Keys auf dem Farmer hinzufügen
Auf dem Plotter können Sie neue Plots mit dem öffentlichen Schlüssel des Farmers und dem öffentlichen Schlüssel des Pools erstellen.
Zu diesem Zeitpunkt müssen Sie auch keine Aktualisierungen auf dem Plotter vornehmen.
Sie können beide Schlüssel auf dem Farmer mit „chia keys show“ sehen.
Bitte beachten Sie, dass Sie in das Chia-Verzeichnis wechseln und „. ./activate“ eingeben müssen, um die „chia“-Befehle verwenden zu können
Mit dem Kommando „chia farm summary“ werden Informationen über die Farm angezeigt
Mit dem Befehl „chia wallet show“ werden Informationen über das Wallet angezeigt (beim ersten Mal drücken Sie „S“, wenn Sie gefragt werden)
Hinsichtlich der Beispiele zum Plotten erstellen Sie bitte vorher die notwendigen Verzeichnisse auf den ssds/nvmes (temp / plot).
Es ist nicht wirklich notwendig, verschiedene Temp- und Plot-Verzeichnisse anzulegen, aber ich empfehle es Ihnen trotzdem (temp1, temp2, plot1, plot2).
Auf dem Plotter können Sie Jobs für das Plotten erstellen, das Beispiel ist die Plotjob-Datei.
Für einen Job benötigen Sie mindestens 240 GB temporären Speicherplatz und etwa 102 GB für den endgültigen Plot.
Hinweis: Wenn Sie „aggressiver“ plotten wollen, können Sie auch das unendliche Plotten und das Verschieben der endgültigen Plots in zwei separate Skripte aufteilen.
Nachdem die Plots fertig sind, sollten sie (schnell) auf einen temporären Speicher auf dem Plotter (Verbraucher-SSD) per rsync oder auf andere Weise übertragen werden.
Von diesem Zwischenspeicher kann der Farmer sie über das Netzwerk abholen.
Hinweis: Wenn Ihr Netzwerk schnell genug ist (10G), können Sie die endgültigen Dateien direkt auf den Farmer kopieren. Verwenden Sie NICHT „-d“ für NSF oder Remote Storage (letzte Stufe der Kompression).
Plots abholen
Der Farmer speichert die Plots wieder auf einem temporären Speicher (Festplatte). Dies hat damit zu tun, dass die Übertragung der Dateien über das Netzwerk bei langsamen Festplattengeschwindigkeiten nicht ins Stocken gerät.
Ich habe dies implementiert, weil ich bei großen Festplatten einen Absturz beobachtet habe, wenn sie die letzten 5% des freien Speicherplatzes auf der Festplatte füllen.
Plots verschieben
Nachdem die Dateien auf dem Farmer sind, können Sie diese auf die freien (endgültigen) Festplatten aus den Zwischenspeichern verteilen.
Noch Fragen?
Sollten noch einfache Fragen offen sein, können Sie diese gerne in den Kommentaren stellen. Komplizierte Anliegen lassen sich auch zu günstigen Stundensätzen lösen.
[Werbung] Zum Abschluss möchte ich mich noch einmal dafür bedanken, dass Millionminer.de mich monetär bei der Veröffentlichtung der Skripte für Chia unterstützt hat.