VSCodeにメモを書いていたが消えやがったので思い出補正しながら書く。

動機

調査

electrum mona raspberry piでググってもまったく情報がない。モナコインのライトニングネットワークに関する情報も少ない。嫌な予感がする。

  • ラズパイにインストールできるのか?
  • 本当に手数料減らせるのか? それで成立するのか?

一応以下で、

Raspberry Piのような容量の苦しいデバイスにも入ります。

という記事をみたが、私のラズパイにインストールすることはできなかった。容量とは別問題。CPUアーキテクチャが違うせいでコンパイル済みバイナリが用意されていない。

electrum-monaのインストールを試みる

メモが消えてしまったので、記憶をたぐりよせながら書く。

結論からいうと、インストールできなかった。私がわかったのは次のとおり。

  • ビルド済みバイナリにラズパイで動作するARM 32bit用のものはなかった(x86-64のみ)
  • やむなくソースコードからインストールしようと試みた tar.gz
  • Python 3.8.0以上が必要
  • Pythonをビルドする前にlibffi-devが必要だった
  • ラズパイ4にデフォルトでインストールされているのはPython 3.7.3 だった
  • anyenvでpyenvを入れ、pyenvでPythonを入れて3.8以上にした
  • electrum-monaのインストールはQtのところで失敗した

anyenvをインストールする

git clone https://github.com/anyenv/anyenv ~/.anyenv
echo 'export PATH="$HOME/.anyenv/bin:$PATH"' >> ~/.bash_profile
echo 'eval "$(anyenv init -)"' >> ~/.bash_profile
anyenv install --init
Manifest directory doesn't exist: /home/pi/.config/anyenv/anyenv-install
Do you want to checkout https://github.com/anyenv/anyenv-install.git? [y/N]: 

yを入力しEnterキー押下。すると以下のように出力された。

...
Completed!

pyenvをインストールする

anyenv install pyenv
exec $SHELL -l

pythonをインストールする

一度失敗してわかったことだが、Pythonをビルドする前に以下をインストールする必要がある。

sudo apt install -y libffi-dev

バージョンを一覧する。

pyenv install --list

3.8.0以上の適当なバージョンを選んでインストールする

pyenv install 3.9.13

electrum-monaをインストールする(失敗)

ソースコードをダウンロードする。展開してディレクトリ移動する。

wget https://github.com/wakiyamap/electrum-mona/releases/download/4.2.1/Electrum-MONA-4.2.1.tar.gz
tar -zxvf Electrum-MONA-4.2.1.tar.gz
cd Electrum-MONA-4.2.1

electrum-mona - githubにある手順を踏む。が、インストールでエラー発生。

sudo apt-get install libsecp256k1-0
$ python3 -m pip install --user .[gui,crypto]
Looking in indexes: https://pypi.org/simple, https://www.piwheels.org/simple
Processing /tmp/work/Electrum-MONA-4.2.1
  Preparing metadata (setup.py) ... done
Collecting qrcode
  Downloading https://www.piwheels.org/simple/qrcode/qrcode-7.3.1-py3-none-any.whl (40 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 40.4/40.4 KB 108.5 kB/s eta 0:00:00
Collecting protobuf>=3.12
  Downloading https://www.piwheels.org/simple/protobuf/protobuf-4.21.2-py2.py3-none-any.whl (164 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 165.0/165.0 KB 251.7 kB/s eta 0:00:00
Collecting qdarkstyle>=2.7
  Downloading https://www.piwheels.org/simple/qdarkstyle/QDarkStyle-3.1-py2.py3-none-any.whl (864 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 864.8/864.8 KB 303.6 kB/s eta 0:00:00
Collecting aiorpcx<0.23,>=0.22.0
  Downloading https://www.piwheels.org/simple/aiorpcx/aiorpcX-0.22.1-py3-none-any.whl (35 kB)
Collecting aiohttp<4.0.0,>=3.3.0
  Downloading https://www.piwheels.org/simple/aiohttp/aiohttp-3.8.1-cp39-cp39-linux_armv7l.whl (1.1 MB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 1.1/1.1 MB 422.7 kB/s eta 0:00:00
Collecting aiohttp_socks>=0.3
  Downloading https://www.piwheels.org/simple/aiohttp-socks/aiohttp_socks-0.7.1-py3-none-any.whl (9.3 kB)
Requirement already satisfied: certifi in /home/pi/.anyenv/envs/pyenv/versions/3.9.13/lib/python3.9/site-packages (from Electrum-MONA==4.2.1) (2022.6.15)
Collecting bitstring
  Downloading https://www.piwheels.org/simple/bitstring/bitstring-3.1.9-py3-none-any.whl (39 kB)
Collecting attrs>=19.2.0
  Downloading https://www.piwheels.org/simple/attrs/attrs-21.4.0-py2.py3-none-any.whl (60 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 60.5/60.5 KB 839.4 kB/s eta 0:00:00
Collecting lyra2re2_hash>=1.1.2
  Downloading https://www.piwheels.org/simple/lyra2re2-hash/lyra2re2_hash-1.2.0-cp39-cp39-linux_armv7l.whl (773 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 773.7/773.7 KB 621.8 kB/s eta 0:00:00
Collecting dnspython>=2.0
  Downloading https://www.piwheels.org/simple/dnspython/dnspython-2.2.1-py3-none-any.whl (269 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 269.1/269.1 KB 440.1 kB/s eta 0:00:00
Collecting pyqt5
  Downloading PyQt5-5.15.7.tar.gz (3.2 MB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 3.2/3.2 MB 1.7 MB/s eta 0:00:00
  Installing build dependencies ... done
  Getting requirements to build wheel ... done
  Preparing metadata (pyproject.toml) ... error
  error: subprocess-exited-with-error
  
  × Preparing metadata (pyproject.toml) did not run successfully.
  │ exit code: 1
  ╰─> [34 lines of output]
      Querying qmake about your Qt installation...
      Traceback (most recent call last):
        File "/home/pi/.anyenv/envs/pyenv/versions/3.9.13/lib/python3.9/site-packages/pip/_vendor/pep517/in_process/_in_process.py", line 156, in prepare_metadata_for_build_wheel
          hook = backend.prepare_metadata_for_build_wheel
      AttributeError: module 'sipbuild.api' has no attribute 'prepare_metadata_for_build_wheel'
      
      During handling of the above exception, another exception occurred:
      
      Traceback (most recent call last):
        File "/home/pi/.anyenv/envs/pyenv/versions/3.9.13/lib/python3.9/site-packages/pip/_vendor/pep517/in_process/_in_process.py", line 363, in <module>
          main()
        File "/home/pi/.anyenv/envs/pyenv/versions/3.9.13/lib/python3.9/site-packages/pip/_vendor/pep517/in_process/_in_process.py", line 345, in main
          json_out['return_val'] = hook(**hook_input['kwargs'])
        File "/home/pi/.anyenv/envs/pyenv/versions/3.9.13/lib/python3.9/site-packages/pip/_vendor/pep517/in_process/_in_process.py", line 160, in prepare_metadata_for_build_wheel
          whl_basename = backend.build_wheel(metadata_directory, config_settings)
        File "/tmp/pip-build-env-o2vfuttr/overlay/lib/python3.9/site-packages/sipbuild/api.py", line 46, in build_wheel
          project = AbstractProject.bootstrap('wheel',
        File "/tmp/pip-build-env-o2vfuttr/overlay/lib/python3.9/site-packages/sipbuild/abstract_project.py", line 87, in bootstrap
          project.setup(pyproject, tool, tool_description)
        File "/tmp/pip-build-env-o2vfuttr/overlay/lib/python3.9/site-packages/sipbuild/project.py", line 584, in setup
          self.apply_user_defaults(tool)
        File "project.py", line 69, in apply_user_defaults
          super().apply_user_defaults(tool)
        File "/tmp/pip-build-env-o2vfuttr/overlay/lib/python3.9/site-packages/pyqtbuild/project.py", line 70, in apply_user_defaults
          super().apply_user_defaults(tool)
        File "/tmp/pip-build-env-o2vfuttr/overlay/lib/python3.9/site-packages/sipbuild/project.py", line 236, in apply_user_defaults
          self.builder.apply_user_defaults(tool)
        File "/tmp/pip-build-env-o2vfuttr/overlay/lib/python3.9/site-packages/pyqtbuild/builder.py", line 76, in apply_user_defaults
          self._get_qt_configuration()
        File "/tmp/pip-build-env-o2vfuttr/overlay/lib/python3.9/site-packages/pyqtbuild/builder.py", line 490, in _get_qt_configuration
          for line in project.read_command_pipe([self.qmake, '-query']):
        File "/tmp/pip-build-env-o2vfuttr/overlay/lib/python3.9/site-packages/sipbuild/project.py", line 552, in read_command_pipe
          raise UserException(
      sipbuild.exceptions.UserException
      [end of output]
  
  note: This error originates from a subprocess, and is likely not a problem with pip.
error: metadata-generation-failed

× Encountered error while generating package metadata.
╰─> See above for output.

note: This is an issue with the package mentioned above, not pip.
hint: See above for details.
WARNING: You are using pip version 22.0.4; however, version 22.1.2 is available.
You should consider upgrading via the '/home/pi/.anyenv/envs/pyenv/versions/3.9.13/bin/python3 -m pip install --upgrade pip' command.

どうやらQtのインストールでエラーになったらしい。

そういえば、ラズパイはpipからQtラッパをインストールすることができなかった記憶がある。Qt自体はもともとそうだが、ラズパイではそのラッパもaptで専用パッケージを入れることで、どうにか使えた。が、pipパッケージとして連携することができない不便な代物だった気がする。あと、QtのPython用ラッパもいくつかあって紛らわしかったような。

というか、前回ログが消えたときと違うエラーのような気がする。どういうこっちゃ。

とにかく、ラズパイ4にelectrum-monaをインストールすることはできなかった。

もうCUIでいいからインストールさせてほしい。

mpurseが使えなくなったらどうしよう。ほかの選択肢を持っていないのが不安だ。