ElectrumXのmonacoinバージョンを作成しているんだ

議論・討論

58 Res. +380.68539974 MONA 20 Fav.

1 :脇山P名人:2017/06/23 12:25:43 +5.02655254MONA/4人

今、ElectrumXと言うElectrumの軽量版のmonacoinバージョンを
作成中なのですがいろいろ聞きたいことが出てくると思うので
ここのスレで聞きたいと思います。

https://github.com/wakiyamap/electrumx

これはcoinomiのサーバみたいなものなんですが、
これを作ることでLNやらの開発がやりやすくなりそうですので挑戦してみることにしました。

2 :脇山P名人:2017/06/23 12:26:58 +0MONA/0人

まず最初に下記のURLの物「coins.py」を弄ってるんだが、
TX_COUNT、TX_COUNT_HEIGHTの中に数字を入れるようになっています。
それぞれTX_COUNT_HEIGHT:出来る限り最新のブロックのNo、
TX_COUNT:左で入力したブロックまでのトランザクションの数
を入れるようになっています。
今までのトランザクション数を数える簡単なやり方をどなたか知りませんか?
力技でinsightから一個ずつ計算してもいいんだけども(白目
https://github.com/wakiyamap/electrumx/blob/master/lib/coins.py

3 :脇山P名人:2017/06/23 12:28:11 +0MONA/0人

現状のcoins.pyの該当部分を載せておきます。
https://pastebin.com/cW7TS3V8

4 :なむやん七段:2017/06/23 13:35:08 +39MONA/1人

MultiLightBlockExplorerにSQL発行して取得してみた
TX_COUNT = 2568579
TX_COUNT_HEIGHT = 1029766
このパラメータはBlockの同期モードを変更する為にあるから厳密に設定する必要は無かったはず、たぶんね

5 :名無し四段:2017/06/23 13:52:40 +39MONA/1人

monacoin-qtからデバッグログを開けば確認できる
1029766ブロックだと2568580だね

UpdateTip: new best=37cd1b9dae2ed12e6ee5531995dd836af10a1ad8dea9ff331d65058d5632c79c height=1029766 version=0x20000000 log2_work=61.540977 tx=2568580 date='2017-06-23 04:25:42' progress=0.999969 cache=0.0MiB(4tx)

6 :脇山P名人:2017/06/23 14:18:23 +0MONA/0人

>>4 >>5
ありがとうございます!おかげで助かりました!
一応coindからデータを取得するので >>5 の数字を入れてみます。

後学の為に聞いておきたいのですが、 >>5 の結果は何のコマンドを入力すればそれが出てきましたかね?

7 :Robin 五段:2017/06/23 15:19:28 +0MONA/0人

Cool!!!!!

8 :名無し二段:2017/06/23 15:25:15 +3.9MONA/1人

>>6
monacoin.confと同じ場所にあるdebug.log

9 :名無し四段:2017/06/23 19:50:12 +3.9MONA/1人

>>6
monacoin-qtの
ヘルプ>デバッグウィンドウ>情報タブの「デバッグ用ログファイル」ボタン
でdebug.logが開く

10 :脇山P名人:2017/06/23 20:53:54 +0MONA/0人

>>8 >>9
なるほど。盲点でした。ありがとうございます!

引き続き作業していきたいと思います。
reddcoinの追加コードを見る限りここを追加すれば終了かなと。
https://github.com/wakiyamap/electrumx/tree/master/tests/blocks

何を追加しようかなと思いますが、digibyte君のデータの真似でもして
とりあえずsegwit後のブロックのデータを追加してみようかなと思います。

その後はいよいよサーバ立てて実験です!

11 :脇山P名人:2017/06/28 14:43:45 +0.0114114MONA/1人

でサーバ立てました。
ログを見ている限りmonacoinのブロックチェーンとの同期はちゃんと進んでいるようです!!

Jun 28 14:36:52 tamamin.cute electrumx_server.py[1051]: INFO:BlockProcessor:flush #49 took 0.0s. Height 1,034,385 txs: 2,578,254
Jun 28 14:36:52 tamamin.cute electrumx_server.py[1051]: INFO:BlockProcessor:processed 1 block in 0.0s
Jun 28 14:37:12 tamamin.cute electrumx_server.py[1051]: INFO:Prefetcher:new block height 1,034,386 hash e919e0e39c67c22b3fe28153243b94225b433445ba558570ad0b52d
cd2ff7edc
Jun 28 14:37:12 tamamin.cute electrumx_server.py[1051]: INFO:BlockProcessor:flush #50 took 0.0s. Height 1,034,386 txs: 2,578,255

153.126.146.182:50001(TCP_port)
153.126.146.182:50002(SSL_port[俺俺証明書])

次はクライアント行ってきます!

12 :LN試験中七段:2017/06/30 19:25:32 +39MONA/1人

coinomiの接続先だけ >>11 に変えてみたけど
socket開けないとかいわれた

StratumClient: Unable to create socket for ServerAddress{host='153.126.146.182', port=50001}

まあ原因とかあまり調査してないですが

13 :脇山P名人:2017/06/30 22:42:33 +0MONA/0人

>>12
クライアントがないとまともに動いているか調査もできないので…
ありがとうございます。

14 :脇山P名人:2017/07/01 01:04:19 +0MONA/0人

とりあえずnetstat -an で50001ポートがlistenしていないことが
判明しましたので何か設定をミスっている模様です。

ログ見てそれっぽいところを直してみましたがやっぱりlistenしないので
根本的に何か間違っている予感がします…

15 :脇山P名人:2017/07/01 16:23:07 +0MONA/0人

50001ポート開きましたが50002ポートはSSLの関係でこけている模様です。
取り敢えずクライアントをどうにかしてみようと思います…

16 :LN試験中七段:2017/07/01 21:40:22 +39MONA/1人

接続はできました

com.coinomi.stratumj.messages.MessageException: {"message":"MRqb4o9QuS11dJVzZhnLjGA4HN5KTgi1CW is not a valid address","code":-1}:

こんな感じで、coinomiが照会したmonacoinのアドレスを
サーバーが有効なアドレスと認めてないふいんき

あわよくばすぐに動くかと思ったけど、そうはいきませんな
そちらでクライアントを用意した方がいろいろ早そうなので、まあこのへんにしておきます

17 :LN試験中七段:2017/07/01 21:57:05 +39MONA/1人

https://github.com/wakiyamap/electrumx/blob/master/lib/coins.py
> P2PKH_VERBYTE = bytes.fromhex("37")

つか、monaのP2PKH_VERBYTE, 0x32ですな…

18 :脇山P名人:2017/07/02 06:26:14 +0MONA/0人

確認してきました。凡ミスですねorz
ありがとうございます!

クライアントの構築に難航しています(白目

19 :名無し三段:2017/07/02 09:43:19 +0MONA/0人

頑張れ~
今まで使ってたcoreがなぜか同期できなくなってオンラインウォレットや取引所から撤退できないの(´;ω;`)ウッ…

20 :脇山P名人:2017/07/04 17:54:15 +0.114MONA/1人

取り敢えず接続。受信は出来た模様です。
思いっきりNot verifiedになってますがw


原因としてはblock_headersと言うファイルのダウンロードが必要とのことです。
block_headersと言うファイルはelectrumでは生成されていたようですが
新しいelectrumxでは生成されているかが分かりません。
また一度作ってしまえばOKの物なのかそれとも継続的にアップデートして
クライアントに流す必要があるものなのかが分かりません。

現状調べていますが、進捗駄目です()

21 :dragon3766二段:2017/07/05 07:03:16 +0MONA/0人

This sounds awesome

22 :脇山P名人:2017/07/05 10:49:45 +0.228MONA/1人

送受信行けるようになりました!イヤッフー!!!
(下の二つはelectrum側の設定がまだバグっていたころの物です)

23 :脇山P名人:2017/07/05 10:56:25 +0MONA/0人

と言うかサーバのcoin.pyもミスってました(白目

24 :脇山P名人:2017/07/08 23:42:04 +0MONA/0人

さてサーバの方も皆さんに立ててもらいたいなーとは思っているところですが、
その前にクライアントでテストできないことにはお話にならないかと思います。
ご家庭にLinuxはねぇ!

と言うわけでWindows版electrum-monaのクライアントを作成中なのですが、
なんどやってもWindowsで実行ファイルを実行しても起動しねぇ!\(^o^)/
ウィンドウすら出ねぇ!タスクマネージャで見た感じだと一瞬プロセスに乗って消えていきます。

一応公式の説明している手順はこちらです。
https://github.com/spesmilo/electrum/blob/master/contrib/build-wine/README

25 :脇山P名人:2017/07/08 23:43:27 +0MONA/0人

今やってる手順はこちら
wine1.7を動かすためにubuntu14.04 64bit版を使用しています

sudo apt-get update
sudo apt-get upgrade
cd ~
wget https://bootstrap.pypa.io/get-pip.py #pipインストール準備
python --version #python2.7確認
sudo python get-pip.py #pipインストール
sudo pip install pip --upgrade #pipバージョン9.0.1にアップグレード
sudo apt-get install python-dev #ltc_scryptのinstallクラッシュ防止
pip install dnspython pyaes ecdsa qrcode pbkdf2 protobuf pip requests pysocks jsonrpclib ltc_scrypt --upgrade #electrum用
sudo apt-get install git python-qt4 pyqt4-dev-tools protobuf-compiler python-pycurl gettext xvfb

26 :脇山P名人:2017/07/08 23:43:55 +0MONA/0人

git clone https://github.com/spesmilo/electrum.git
cd electrum
pyrcc4 icons.qrc -o gui/qt/icons_rc.py
protoc --proto_path=lib/ --python_out=lib/ lib/paymentrequest.proto
sudo ./contrib/make_locale
sudo ./contrib/make_packages
sudo ./contrib/sign_packages
cd contrib/build-wine
sudo add-apt-repository ppa:ubuntu-wine/ppa
sudo apt-get update
sudo apt-get upgrade
sudo apt-get install wine1.7 #順番がある?のでこの順番1
sudo apt-get install winbind #順番がある?のでこの順番2
sudo apt-get install libp11-kit-gnome-keyring:i386 #Linux64bit版@wineにおけるエラー対策,キーボードの挙動が怪しくなるので最後

27 :名無し六段:2017/07/08 23:44:30 +3.9MONA/1人

お疲れ様です
coreの同期は時間かかるので、楽しみにしています

28 :脇山P名人:2017/07/08 23:44:44 +0MONA/0人

sudo ./prepare-wine.sh
sudo ./prepare-hw.sh
sudo nano build-electrum-git.sh #gitのURL及びブランチ変更
sudo ./build-electrum-git.sh

これでbuild-wineディレクトリ内にdistディレクトリができるので
その中にsetup.exeが作成されます。

29 :脇山P名人:2017/07/08 23:45:23 +0MONA/0人

まぁWindowsでは動かないんだけどね!!!!!

30 :脇山P名人:2017/07/09 00:06:32 +0MONA/0人

あ、>>28の3行目は無視してください…

31 :脇山P名人:2017/07/09 00:23:47 +0MONA/0人

https://electrum.org/#download
本家のwindows版のzipと見比べても明らかにセットアップ後のファイル数が少ない。
何か手順が足りてないと思われるがその手順が何かわからない()

32 :なむやん七段:2017/07/09 01:16:21 +0MONA/0人

エラーが出ずにバイナリが出来上がるが動かない
バイナリだけに苦しむ....

33 :脇山P名人:2017/07/09 17:20:57 +0MONA/0人

pyinstallerを3.1にしてみた。
んでpyinstallerにDebugオプションがあったのでTrueにしてみる。

これが出た後落ちる。エラーコードとしてはすごくあれです()

挙動的には足りてないMEIフォルダとかは
「%USERPROFILE%\AppData\Temp\」に作り出される模様。
と言うか実行ファイルを解凍してる?っぽい動き。

まぁ何が言いたいかと言うと「わけがわからないよ」

34 :名無し三段:2017/07/09 17:50:44 +0MONA/0人

わろた
技術的なことはわからないけど頑張って!

35 :脇山P名人:2017/07/14 00:00:58 +1.14228114MONA/2人

ohac先生に協力していただき無事にelectrumクライアントを作成することができました。
とりあえずのお試し版です。表記がBTCになっていますが心の目で見るとmonaに見えます。
https://www.dropbox.com/s/8ij57zey5lxi59s/electrum-mona-2.5.4-1664-gc213dff-portable.exe?dl=0
※実験用のクライアントなので大金は入れないようにしてください。責任は持てません。

クライアントはこのまま進めようかと思いますが、
monacoinのelectrumx(サーバ側)の数はcoinomiのサーバを入れて3つです。
皆さんおなじみのfujicoinさんのelectrumサーバの数と同数となっており現状互角です。

electrumのシステムはサーバの数が増えるほど安定するので
出来ればなのですがelectrumxサーバを立てて協力していただけたらなと思います。

36 :脇山P名人:2017/07/14 01:42:55 +0MONA/0人

現状の注意点
・SSLは動きません
対策 取り敢えずTCPでお使いください
・同期が止まる時がある
対策 「tool」→「network」から「Blockchain」のタブにCheckpointの「Height」って欄があるから止まってるブロックの数+α(適当に10くらい)を入力してOKすれば再び動きます

37 :Robin 五段:2017/07/14 04:34:59 +0MONA/0人

>>35
Great job!
I tested and it works!!

38 :もなこいにすた★六段:2017/07/14 06:03:55 +0MONA/0人

>>35
現在の公式配布クライアントと共存できますか?

39 :脇山P名人:2017/07/14 08:23:30 +0MONA/0人

>>37
thanks!!
@ohac is great engineer !!

>>38
共存可能です。
ただし既存のelectrumをお使いの方はデータの保存フォルダが競合する可能性があります。もしBTCのelectrumをお使いなら注意してください。

40 :脇山P名人:2017/07/16 12:00:49 +0.00004649MONA/1人

今はelectrumxサーバ側は下記の値でやってるんだがmonaのBIP32の値ってこれであってる?不安になってきた。
XPUB_VERBYTES = bytes.fromhex("019da462")
XPRV_VERBYTES = bytes.fromhex("019d9cfe")

https://github.com/wakiyamap/electrumx/blob/master/lib/coins.py

41 :テクノブレイカーW六段:2017/07/16 16:10:04 +39.114114MONA/2人

>>40
XPUB_VERBYTES = bytes.fromhex("0488b21e")
XPRV_VERBYTES = bytes.fromhex("0488ade4")

42 :脇山P名人:2017/07/16 16:23:30 +0MONA/0人

>>41
それBTCのmainnetとおんなじやけど…

43 :脇山P名人:2017/07/16 16:25:56 +0.114114MONA/1人

今気づいたけどワタナベ殿かw
変更してきます!!
ありがとうございます!!

44 :Monaparty名無し五段:2017/07/17 07:09:57 +0MONA/0人

昨晩のスキマ時間に electrumx 界隈をざっと眺めてみましたが
docker image にしておくとかなり楽にデプロイできそうですね

デプロイはそれとして
初期動作確認ってどう取ると良いでしょうか?
coimoni や electrum クライアントで送金してみるしかありませんか?

45 :脇山P名人:2017/07/17 12:43:31 +0MONA/0人

BIP32の数字を >>41 の数字にしたサーバ用意しました。
153.126.139.67
HTTP:50001
SSL:50002

あと個人的に使用したelectrumx設定のメモです。
途中のディレクトリが怪しいですがあとで直します。
https://gist.github.com/wakiyamap/a9062193f3af254487f36f4a33b5aafa

46 :脇山P名人:2017/07/17 12:46:53 +0MONA/0人

前に貼ったクライアントだと新しい設定の鯖だと動きが違うかもしれないので古い方の設定の鯖も取り敢えず残してます。

>>44
初期動作確認は仰る通りelectrumかcoinomiクライアントで送受信する必要があります。

47 :Monaparty名無し五段:2017/07/17 16:19:25 +3.9MONA/1人

>>46
JSON API なので開通確認までは curl でもできるみたいですね

curl http://13.78.116.112:50001/
{"jsonrpc": "2.0", "id": null, "error": {"message": "cannot decode JSON: Expecting value: line 1 column 1 (char 0)", "code": -32700}}

API の詳細を追えば…いや踏み込まないでおきます

48 :Monaparty名無し五段:2017/07/17 17:10:03 +39MONA/1人

Kubernetes 環境の Electrumx デプロイを
気軽にできるようにしました

https://github.com/monaco-ex/electrumx-kubernetes

一口に Kubernetes と括っても
クラウドプロバイダごとに細かい違いがあるので
無変更では動かないかもしれませんが
参考にはなるのではと思います

49 :脇山P名人:2017/07/17 17:45:15 +1.14114114MONA/1人

現状だとクライアントは厳密な検査はしてないので
新旧両方の鯖で同期、送受信通るみたいですね。

厳密に行くなら今後はたぶん死ぬかなと思います。
現在lyre2rev2_hashを取り込んだクライアントを作成中なので
そちらだと新しい鯖でないと通らないかと思います・・・

50 :名無し初段:2017/07/17 17:51:15 +3.9MONA/1人

ElectrumX公式にプルリクしてみてはいかがでしょうか?承認されればサーバーのコードはいちいち公式に合わせて更新しなくて済むので楽かも
https://github.com/kyuupichan/electrumx/pull/165
https://github.com/kyuupichan/electrumx/pull/164
https://github.com/kyuupichan/electrumx/pull/96

51 :脇山P名人:2017/07/17 19:18:07 +1.15255254MONA/2人

>>50
最終的にはそうしてみたいとは考えています。
ただそれはちゃんとクライアントが動作してからです。

現状ではまだ時期尚早です。
そこまでがんばりたいと思います。

52 :脇山P名人:2017/07/20 10:46:11 +0.00004649MONA/1人

electrum内部の画像の置換における大会を開こうかと考えています。
それを踏まえて特に参加予定者さんに聞きたいことがあります。

1.画像形式が複数あるのは面倒なので(意図したデザインにならないのは妥協して)一つの画像形式にした方が良いでしょうか?
2.期間は(今のところ1ヶ月を予定していますが)どの程度必要でしょうか?
3.どこで開催するのが良いと思いますか?
4.その他何かありましたら

 ※androidはcoinomiがあるので今回は無視します

↓参考画像をまとめたzipファイル↓
https://drive.google.com/file/d/0B9eafXaLnifuajV2RUlEa0xSdlk/view?usp=sharing

53 :脇山P名人:2017/07/20 10:57:22 +0MONA/0人

ちなみに上の画像をどこで使っているのかは現在探している最中です。

現状での最新版のwindowsインストーラー版を置いておきます。
https://drive.google.com/open?id=0B9eafXaLnifuYzJHbTBGTG9aV00
※※注意※※
・実験用のクライアントなので大金は入れないようにしてください
・もし前の分をインストールしているのであれば秘密鍵のバックアップ後にアンインストールして新しいものをインストールしてください

54 :Robin 五段:2017/07/20 18:21:17 +39MONA/1人

>>53





55 :Robin 五段:2017/07/20 18:37:10 +1.14114MONA/1人

>>53


New version displays Mona now.
I still have to manually enter the block height in order to sync.

Good work

56 :ミツコア七段:2017/07/20 18:47:18 +39MONA/1人

>>52

若干違うけどとりあえずで作ってしまいましたが、まだ予定段階でしたか…

1.一つにして貰ったほうが楽ですかね
2.1ヶ月で問題ないと思います(ちょっと長いかも?)
3.ASKかtwitter
4.すみませんフライングで作りました

57 :脇山P名人:2017/07/21 01:48:17 +0MONA/0人

>>53 の分は削除しました。
下記の物がPアドレス対応版です。
https://drive.google.com/open?id=0B9eafXaLnifuREktM29oTjFtMFk
・実験用のクライアントなので大金は入れないようにしてください
・もし前の分をインストールしているのであれば秘密鍵のバックアップ後にアンインストールして新しいものをインストールしてください

引き続き >>52 について回答お待ちしております。

58 :もがみん七段:2017/07/21 01:56:56 +0MONA/0人

1.一つの方が良い感じ
2.1ヶ月で充分ですね
3.強制変換とかあるけど他のアップローダ使えばいいしTwitterかAskかな
4.おつかれさまです

お気に入り

新規登録してMONAをもらおう

登録すると、投稿したり、MONAをもらったりすることができます。質問したり、答えたりしてMONAを手に入れてください。

新規登録ログイン