|
|
|
#!/bin/sh
|
|
|
|
# Bare Metal Alchemist, 2022
|
|
|
|
|
|
|
|
#############################################
|
|
|
|
# Gold - ☼ #
|
|
|
|
#############################################
|
|
|
|
|
|
|
|
# One of the principal goals of alchemy is the transmutation of base
|
|
|
|
# metals into gold. Likewise. one of the purposes of these scripts
|
|
|
|
# is the transmutation of bare metal into digital gold, AKA bitcoin
|
|
|
|
|
|
|
|
# This ingredient is to be used whenever a recipe requires use of
|
|
|
|
# the Bitcoin ecosystem
|
|
|
|
|
|
|
|
install_bitcoin() {
|
|
|
|
echo -e "${BOLD}Installing Bitcoin Core${RESET}"
|
|
|
|
|
|
|
|
# We're building bitcoin from source here. It might be slower than
|
|
|
|
# downloading the pre-built binaries but this is more reliable
|
|
|
|
if [ ! -e 🜍/bitcoin-22.0* ]; then
|
|
|
|
wget https://bitcoincore.org/bin/bitcoin-core-22.0/bitcoin-22.0.tar.gz -P 🜍/
|
|
|
|
fi
|
|
|
|
|
|
|
|
# This still relies on package management though
|
|
|
|
install_if_needed boost
|
|
|
|
|
|
|
|
tar -xvf 🜍/bitcoin-22.0.tar.gz
|
|
|
|
sleep 1
|
|
|
|
cd bitcoin-22.0
|
|
|
|
chmod +x autogen.sh
|
|
|
|
./autogen.sh
|
|
|
|
./configure --without-bdb # Someday, someone will complain here
|
|
|
|
make
|
|
|
|
sudo make install
|
|
|
|
rm -rf bitcoin-22.0
|
|
|
|
}
|
|
|
|
|
|
|
|
install_lightning() {
|
|
|
|
echo -e "${BOLD}Installing lightningd${RESET}"
|
|
|
|
git clone https://github.com/ElementsProject/lightning.git ./lightning
|
|
|
|
pushd ./lightning
|
|
|
|
git checkout v0.10.2
|
|
|
|
./configure
|
|
|
|
|
|
|
|
# The latest version of mistune breaks lightning install
|
|
|
|
pip uninstall mistune
|
|
|
|
pip install --user mistune==0.8.4
|
|
|
|
pip install --user mrkd
|
|
|
|
make
|
|
|
|
sudo make install
|
|
|
|
popd
|
|
|
|
rm -rf lightning
|
|
|
|
}
|
|
|
|
|
|
|
|
install_clboss() {
|
|
|
|
echo -e "${BOLD}Installing clboss${RESET}"
|
|
|
|
git clone https://github.com/ZmnSCPxj/clboss.git ./clboss
|
|
|
|
pushd ./clboss
|
|
|
|
git checkout 0.11B
|
|
|
|
mkdir -p m4
|
|
|
|
autoreconf -fi
|
|
|
|
./configure
|
|
|
|
make
|
|
|
|
sudo make install
|
|
|
|
popd
|
|
|
|
rm -rf clboss
|
|
|
|
}
|
|
|
|
|
|
|
|
configure_bitcoin() {
|
|
|
|
mkdir -p ~/.bitcoin
|
|
|
|
|
|
|
|
AUTHDEETS=$(python3 scripts/rpcauth.py ao)
|
|
|
|
AUTHLINE=$(echo $AUTHDEETS | grep -o rpcauth=ao:[^[:space:]]*[[:space:]])
|
|
|
|
PASSLINE=$(echo $AUTHDEETS | grep -o [^[:space:]]*\$)
|
|
|
|
|
|
|
|
if [ -f $HOME/.bitcoin/bitcoin.conf ]; then
|
|
|
|
echo -e "Looks like you already have a ${BLUE}bitcoin.conf${RESET} file!"
|
|
|
|
echo ""
|
|
|
|
cat $HOME/.bitcoin/bitcoin.conf
|
|
|
|
echo ""
|
|
|
|
echo -en "Would you like to reset it? ${BLUE}(y/n)${RESET}: "
|
|
|
|
read btc_reconf
|
|
|
|
case $btc_reconf in
|
|
|
|
"y" | "Y")
|
|
|
|
cp resources/sample_bitcoin.conf $HOME/.bitcoin/bitcoin.conf
|
|
|
|
echo 'Reset bitcoin configuration file'
|
|
|
|
;;
|
|
|
|
"n" | "N")
|
|
|
|
echo "Cool, we'll leave it as is then".
|
|
|
|
;;
|
|
|
|
esac
|
|
|
|
else
|
|
|
|
cp resources/sample_bitcoin.conf $HOME/.bitcoin/bitcoin.conf
|
|
|
|
echo 'Created default bitcoin config'
|
|
|
|
fi
|
|
|
|
|
|
|
|
sed -i "s/BTC_LOGIN/${AUTHLINE}/" $HOME/.bitcoin/bitcoin.conf
|
|
|
|
echo ""
|
|
|
|
|
|
|
|
echo -en "Next question - do you have 500GB of open memory on this device? ${BLUE}(y/n)${RESET}: "
|
|
|
|
read prune
|
|
|
|
echo ""
|
|
|
|
case $prune in
|
|
|
|
y | Y)
|
|
|
|
echo "Okay great! We'll leave the bitcoin config it as it is."
|
|
|
|
;;
|
|
|
|
*)
|
|
|
|
echo -e "Let's ${GREEN}enable pruning${RESET} to keep the file size down, then."
|
|
|
|
sed -i "s/txindex=1/prune=550/" $HOME/.bitcoin/bitcoin.conf
|
|
|
|
;;
|
|
|
|
esac
|
|
|
|
}
|
|
|
|
|
|
|
|
configure_lightning() {
|
|
|
|
mkdir -p $HOME/.lightning
|
|
|
|
|
|
|
|
if [ -f $HOME/.lightning/config ]; then
|
|
|
|
echo -e "Looks like you already have a ${BLUE}lightning config${RESET} file!"
|
|
|
|
echo ""
|
|
|
|
cat $HOME/.lightning/config
|
|
|
|
echo ""
|
|
|
|
echo -en "Would you like to reset it? ${BLUE}(y/n)${RESET}: "
|
|
|
|
read ln_reconf
|
|
|
|
case $ln_reconf in
|
|
|
|
"y" | "Y")
|
|
|
|
cp resources/sample_lightning_config $HOME/.lightning/config
|
|
|
|
echo -e "${GREEN}Reset lightning configuration file${RESET}"
|
|
|
|
;;
|
|
|
|
"n" | "N")
|
|
|
|
echo "Cool, we'll leave it as is then".
|
|
|
|
;;
|
|
|
|
esac
|
|
|
|
else
|
|
|
|
cp resources/sample_lightning_config $HOME/.lightning/config
|
|
|
|
echo -e "${GREEN}Created default lightning config${RESET}"
|
|
|
|
fi
|
|
|
|
|
|
|
|
echo ""
|
|
|
|
echo -en "Would you like to use clboss to automatically open lightning channels? ${BLUE}(y/n)${RESET}: "
|
|
|
|
read clboss_enable
|
|
|
|
case $clboss_enable in
|
|
|
|
"y" | "Y")
|
|
|
|
if ! check_for clboss; then
|
|
|
|
install_clboss
|
|
|
|
fi
|
|
|
|
sed -i "s/#plugin/plugin/" $HOME/.lightning/config
|
|
|
|
sed -i "s/#log/log/" $HOME/.lightning/config
|
|
|
|
echo ""
|
|
|
|
echo -e "${GREEN}clboss successfully configured!${RESET}"
|
|
|
|
;;
|
|
|
|
"n" | "N")
|
|
|
|
echo ""
|
|
|
|
echo "Sounds good. You might want to open some channels manually to participate in the network!".
|
|
|
|
;;
|
|
|
|
esac
|
|
|
|
}
|
|
|
|
|
|
|
|
GOLD=1
|