Edited at

electrumをコマンドラインから使う

More than 1 year has passed since last update.


はじめに

この記事は暗号通貨アドベントカレンダー二日目の記事です

一日目にelectrumのサーバー側を書いたのでクライアント側の仕組みを書きます


electrumの仕組み

electrumxから必要なアドレスの情報を持ってきているクライアントサーバーモデルであると前回の記事で書いたが

それを実現するのにいくつか問題がある


  • 信用できるサーバーをちゃんと選べるのか(一応electrumがデフォルトでつなぐサーバーは信用できるホワイトリストを兼ねている)

  • あとから信用できないサーバーにならないか(ハードフォークの更新し忘れていて違うチェーンになっていないか)

秘密鍵や送金情報はelectrumクライアントが持っているので野良サーバーが盗むことはできないが

残高情報などの嘘の情報を教えることはできる

electrumはそれをちゃんと検証する仕組みを持っていてブロックヘッダを取得し、トランザクションが本物であるか検証をしている。

それによって信用できるサーバーと信用できないサーバーを区別している


electrumの知られざる機能(とかあおってみる)

実はelectrumはサーバーとして運用が可能である

bitcoindのコマンドラインから操作するウォレットのように扱える

秘密鍵はBIP32で管理されているので一度ニーモニックをバックアップしておけばアドレスが増えた場合でも再度バックアップする必要はない

ブロックチェーンの同期がないので保守が楽になるカモ?(無責任)


electrumの秘密鍵

electrumの秘密鍵は暗号通貨業界でよく見かけるニーモニック(以下BIP39ニーモニックという)のように見えるが実はちょっと違う。

何が違うかというとなんとBIP39ニーモニックと仕様が違っていて互換性がないのだ。

だからelectrumでメモってもelectrumのニーモニックに対応していなければ復元できないのだ

XPRVやWIFと呼ばれる形式にすればほかでもインポートできるがそれを使うにはアドレスがどれか特定しなくてはならない

緊急時に他のウォレットでも使いたい場合には注意がいるだろう


commandラインから使ってみよう

コマンドラインから使うにはdaemon(常駐プログラム)として起動する必要がある


daemonとして起動する


起動

electrum daemon start


終了

electrum daemon stop


秘密鍵を扱う


秘密鍵の作成

electrum create


秘密鍵の復旧

electrum restore "xxxx xxxx xxxxx xxxxx"


ウォレットを操作する

一番最初にウォレットを常駐しているelectrumに秘密鍵をロードする必要がある、そのあとウォレットを操作するコマンドが使えるようになる


秘密鍵のロード

electrum daemon load_wallet


アドレス一覧

ウォレットの入金アドレスを表示

electrum listaddresses


バランス取得

ウォレット全体の残高を取得できる

electrum getbalance


支払い作成


  • bitcoinaddressは支払先のアドレス

  • amountは送金額(0.001とかbtc指定で)

  • このコマンドを使うと数字で羅列された生トランザクションが出力される

  • その生トランザクションをネットワークに伝搬させないかぎり実際に送金されない

  • 確定処理をするコマンドを実行する必要がある

electrum payto bitcoinaddress amount


支払い確定


  • transaction_stringにpaytoで作った生トランザクションを入れる

  • このコマンドで実際の支払い処理が完了する

electrum broadcast transaction_string


他にも商売用に作られたコマンドとかもある

マーチャント用のドキュメントがあり、そこではユーザーごとに支払いを受け付ける仕組みはelectrumがやってくれるようだ

(実はあまり調べてない・・・)

http://docs.electrum.org/en/latest/merchant.html


オルトコインのelectrum達

コインによっては最新版に追従していなくて動かなかったり

秘密鍵を盗む目的で作られたelectrumもよくあるようだ

オルトコイン版のelectrumを使う場合は開発者が信用できるかどうかよく確認してから使うようにしよう

実際に開発者コミュニティに属している人が作成していたり、コイン開発者が作っているものはある程度信用してよいだろう

githubからであれば誰が作っているかすぐにわかるので参考にURLを張っておきます

coin
url

litecoin
https://github.com/pooler/electrum-ltc

monacoin
https://github.com/wakiyamap/electrum-mona

dash
https://github.com/dashpay/electrum-dash

bitcoincash
https://github.com/fyookball/electrum