Raspberry Pi по цене лаптопа
Хотел было прикупить себе Raspberry Pi, помнится треться модель стоила около тридцати пяти евро. Тут еще коллеги очень удачно подарили амазоновский подарочный сертификат...
Захожу на Amazon и офигиваю - третью модель поиск мне не выдает как класс, а самая дёшевая модель Pi 4 стоит почти сто семьдесят евро!
Оказывается, в мире случился дефицит чипов, от чего цены на популярные модели малинок взлетели в несколько раз.
С покупкой Raspberry, похоже, придётся повременить...
Биткоин клиент на Raspberry Pi Zero W
Эксперимент по запуску Bitcoin Core на Raspberry Pi завершился неудачей. Несмотря на то, что клиент удалось скомпилировать из исходников, запустить и даже, путем копирования файлов с другой машины увидеть текущий баланс кошелька, по факту, быстродействия устройства не хватает даже для того чтобы поддерживать локальное состояние актуальным. Возможно, если перенести хранилище в оперативную память и подкрутить настройки, то получится его все-же использовать, но, оказалось, есть вариант проще.
Существует легковесный клиент Electrum! Сам клиент написан на Питоне и его инсталляция не представляет проблем.
У меня сработали следующие команды:
# install all needed packages:
sudo apt-get install python3-pyqt5 python3-setuptools python3-pip libsecp256k1-0 python3-cryptography
# download client
wget https://download.electrum.org/4.2.2/Electrum-4.2.2.tar.gz
# install client with pip
python3 -m pip install --user Electrum-4.2.2.tar.gz
# create startup link
sudo ln -s ~/.local/bin/electrum /usr/local/bin/electrum
# start the client
electrum
Если все прошло успешно программа попросит создать кошелек по умолчанию, создаст сид и попросит ввести пароль чтобы зашифровать кошелек.
Вот и все, можно пользоваться! Физически мы создали аппаратный биткойн кошелек, имеющий размер в половину визитной карточки, а если вытащить SD карту, которая, по факту и является аппаратным кошельком, то еще меньше!
Bitcoin Core для самых маленьких
Сегодня, наконец, получилось скомпилировать и запустить клиент Bitcoin Core на Raspberry PI Zero W.
Есть у меня идея сделать подобие аппаратного кошелька, который будет умещаться на SD карте и запускаться на устройстве ценой десять евро. Raspberry PI Zero W для этого подходит как нельзя лучше. Проблема только в том что самая дешевая малинка использует не очень ходовой процессор и скомпилированное приложение на него не поставишь, по крайней мере я такого не нашел. Не беда, можно скомпилировать самим из исходников.
У меня получились такие команды:
# install all needed packages:
sudo apt-get install build-essential libtool autotools-dev automake pkg-config bsdmainutils python3
sudo apt-get install libevent-dev libboost-system-dev libboost-filesystem-dev libboost-test-dev libboost-thread-dev
sudo apt-get install libqt5gui5 libqt5core5a libqt5dbus5 qttools5-dev qttools5-dev-tools
#install modules for gui compilation
sudo apt-get install libqt5gui5 libqt5core5a libqt5dbus5 qttools5-dev qttools5-dev-tools
sudo apt-get install libzmq3-dev
# download sources
wget https://bitcoin.org/bin/bitcoin-core-0.20.1/bitcoin-0.20.1.tar.gz
tar xvf bitcoin-0.20.1.tar.gz cd bitcoin-0.20.1
# compile Berkley DB
./contrib/install_db4.sh `pwd`
export BDB_PREFIX='/home/pi/bitcoin-0.20.1/db4'
./autogen.sh
./configure --prefix=/usr/local --enable-cxx CXXFLAGS="--param ggc-min-expand=1 --param ggc-min-heapsize=32768" ./configure --enable-cxx CXXFLAGS="--param ggc-min-expand=1 --param ggc-min-heapsize=32768" BDB_LIBS="-L${BDB_PREFIX}/lib -ldb_cxx-4.8" BDB_CFLAGS="-I${BDB_PREFIX}/include" --with-boost-libdir=/usr/lib/arm-linux-gnueabihf
make
sudo make install
Сама компиляция заняла около суток. Я лишь время от времени подсоединялся к устройству и смотрел что там происходит. Процесс несклько раз прерывался из-за разных причин - то не хватало памяти, то необходимых библиотек. В конце концов удалось получить работоспособное приложение.
Осталось прокачать через устройство все транзакции - этот процесс и на нормальном компьютере занимает долгое время так, сколько это займет времени на этом миниатюром устройстве я боюсь себе даже представить...