Monacoin用のElectrum試作版
ElectrumをMonacoinで使えるようにしてみました。 ただし、PoWとかのチェックは全く行っていませんので、あくまでもテスト用です。 また、Mで始まるアドレスの対応やBTCをMONAに変更する対応などもできていないところがあります。 サーバはCoinomiさんのものをお借りしております。
Commits · ohac/electrum · GitHub
以下のようなDockerfileを準備します。
FROM ubuntu:16.04 RUN apt-get update && \ apt-get upgrade -y && \ apt-get install -y vim python-pip git python-qt4 pyqt4-dev-tools && \ apt-get clean RUN pip install --upgrade pip && \ pip install dnspython pyaes ecdsa qrcode pbkdf2 protobuf pip requests \ pysocks jsonrpclib ltc_scrypt WORKDIR /root RUN git clone https://github.com/ohac/electrum.git WORKDIR /root/electrum RUN git checkout monacoin-20170514 RUN pyrcc4 icons.qrc -o gui/qt/icons_rc.py
ビルドします。
$ docker build -t elemona .
以下のようなスクリプトを準備。
#!/bin/bash XSOCK=/tmp/.X11-unix XAUTH=/tmp/.docker.xauth USENET= #USENET="--net=none" if ! [ -a $XAUTH ]; then touch $XAUTH xauth nlist $DISPLAY | sed -e 's/^..../ffff/' | xauth -f $XAUTH nmerge - fi docker run -it --rm \ -v $XSOCK:$XSOCK:rw -v $XAUTH:$XAUTH:rw \ -e DISPLAY -e XAUTHORITY=${XAUTH} --ipc=host $USENET \ elemona
立ち上げ。
# ./electrum
試しに少額のMONAを送信してみると表示された。
しかし6検証を終えているのに何故かNot Verifiedのまま。 頻繁にNot connectedになり、どこかおかしいようだ。
また、別アドレスに送信しようとしたが以下の例外が出てうまく動かなかった。 もう少し調整が必要っぽい。
Traceback (most recent call last): File "/root/electrum/gui/qt/main_window.py", line 576, in timer_actions self.do_update_fee() File "/root/electrum/gui/qt/main_window.py", line 1172, in do_update_fee fee_rate = fee * 1000 / tx.estimated_size() File "/root/electrum/lib/util.py", line 203, in <lambda> return lambda *args, **kw_args: do_profile(func, args, kw_args) File "/root/electrum/lib/util.py", line 199, in do_profile o = func(*args, **kw_args) File "/root/electrum/lib/transaction.py", line 788, in estimated_size return len(self.serialize(True)) / 2 if not self.is_complete() or self.raw is None else len(self.raw) / 2 # ASCII hex string File "/root/electrum/lib/transaction.py", line 737, in serialize nLocktime = int_to_hex(self.locktime, 4) File "/root/electrum/lib/bitcoin.py", line 168, in int_to_hex return rev_hex(s) File "/root/electrum/lib/bitcoin.py", line 162, in rev_hex return s.decode('hex')[::-1].encode('hex') File "/usr/lib/python2.7/encodings/hex_codec.py", line 42, in hex_decode output = binascii.a2b_hex(input) TypeError: Non-hexadecimal digit found
23:53追記
blockchain_headersをダウンロード可能にしてやればうまく動きました。 electrum-serverの立て方は別途記事にします。