2018年 Nayuta Tech Blog 総括編

Nayutaの広報、Hitomiです!

あっという間に年末が近づいてきました。
皆さんの2018年はどんな年だったでしょうか?

この記事では、Lightning Networkのプロトコルエンジニア 上野 と 私が書いた記事の総まとめをしています。少しでも皆さんの興味・関心や理解に繋がれば幸いです!


はじめに

技術ブログ内で、BOLT(ボルト)という言葉がよく出てきます。これは、Lightning Networkの具体的な仕様のひとつです。他の仕様書も存在していますが、このBOLTが1番使われており、開発されています。
Basis of Lightning Technology の略称です。

1月
Lightning Network 転送(1)中継ノードを挟んだ送金の転送について
https://blog.nayuta.co/blockchain/2018/01/05/ln014転送-1/

Lightning Network 転送(2)中継ノードを挟んだ送金の転送について
https://blog.nayuta.co/blockchain/2018/01/18/ln015転送-2/


2月
Lightning Network 転送(3)中継ノードを挟んだ送金の転送についてhttps://blog.nayuta.co/blockchain/2018/02/14/ln016転送-3/

Lightning Network 2nd layer の概要
https://blog.nayuta.co/blockchain/2018/02/20/ln0172nd-layer/

3月
Lightning Network 「announcement」について
https://blog.nayuta.co/blockchain/2018/03/26/ln018announcement/

4月
Lightning Network ノード 「ターミガン」について
https://blog.nayuta.co/blockchain/2018/04/11/ln019ptarmigan2018-04-11/

Lightning Network プロトコルで使われているHTLCについて(1)
https://blog.nayuta.co/blockchain/2018/04/19/ln020htlc-1/


5月
Lightning Network プロトコルで使われているHTLCについて(2)
https://blog.nayuta.co/blockchain/2018/04/24/ln021htlc-2/

Lightning Network 送金を転送する際のfee計算について
https://blog.nayuta.co/blockchain/2018/05/11/ln022送金の転送fee/

6月
Trezor ウォレットについて 前編
https://blog.nayuta.co/blockchain/2018/06/08/trezor-ウォレットについて-前編/

Trezor ウォレットについて 後編
https://blog.nayuta.co/blockchain/2018/06/08/trezor-ウォレットについて-後編/

Crypto Steel 「復元フレーズ(Recovery Seed)」の保管方法について
https://blog.nayuta.co/blockchain/2018/06/08/crypto-steel-復元フレーズ%ef%bc%88recovery-seed%ef%bc%89の保管方法について/

7月
Bitcoinコミュニティ Bitcoin WednesDay での発表
https://blog.nayuta.co/blockchain/2018/07/15/bitcoin-wednesday/

用語集 「フルノード」と「SPVノード」https://blog.nayuta.co/blockchain/2018/07/31/用語集【フルノードとspvノード】/

9月
Lightning Network 技術解説記事(ThinkIT 掲載分)
https://blog.nayuta.co/blockchain/2018/09/18/lightning-networkの技術解説記事thinkit/

10月
Electrum ウォレットについて
https://blog.nayuta.co/blockchain/2018/10/26/electrum-ウォレットについて/

11月
Bitcoin Coreについて
https://blog.nayuta.co/blockchain/2018/11/02/bitcoin-coreについて/

Coinomi ウォレットについて
https://blog.nayuta.co/blockchain/2018/11/09/coinomi-ウォレットについて/

Mycelium ウォレットについて
https://blog.nayuta.co/blockchain/2018/11/16/mycelium-ウォレットについて/

GreenAddress ウォレットについて
https://blog.nayuta.co/blockchain/2018/11/29/greenaddress-ウォレットについて/

12月
GreenBitsウォレットについて
https://blog.nayuta.co/blockchain/2018/12/05/greenbitsウォレットについて/

BRD ウォレットについて
https://blog.nayuta.co/blockchain/2018/12/12/brd-ウォレットについて/

鍵とウォレットについて
https://blog.nayuta.co/blockchain/2018/12/18/鍵とウォレット/

Bitcoindについて
https://blog.nayuta.co/blockchain/2018/12/26/bitcoindについて/


2019年もTech Blogの掲載は続けていく予定ですので、興味のある方は是非のぞいてみてください!

bitcoindについて

こんにちは。

今までウォレットの紹介があったので、よく使っているbitcoindも紹介したいと思います。
少し前に書いた記事なので↓の画像はバージョンがv0.17.0.1ですが、今日(2018/12/26)の最新バージョンはv0.17.1です。

image


インストール

https://github.com/bitcoin/bitcoin

自分でビルドしてもよいですし、コンパイル済みをダウンロードするのもよいかと思います。
ビルドする利点としては、オプションが選択できることかと思います。
例えば、wallet機能が不要であれば取り除けますし、GUI(bitcoin-qt)が不要であればビルドしないようにもできます。
通常はダウンロードするか、Debian系であればPPAでやるのが簡単だと思います。

 

LightningNetwork開発時には、bitcoindのソースコードにログを埋め込んで動作確認をしていました。トランザクションを自作してsendrawtransactionしてもエラーになった場合に有用でした。

Linux/MacOSを起動したときにbitcoindを自動的に起動させたい場合は、こちらを参考に設定するとよいでしょう。


設定ファイル

bitcoindを起動させる前に、設定ファイルを作成します。
bitcoin.confというファイルです。
書き方についての説明はこちらにありますが、サンプルを見た方がわかりやすいでしょう。
bitcoin.confがなかった場合は、mainnetで起動します。

普段のLightningNetwork開発では、このような設定にしています。
”rpcuser”, “rpcpassword”はJSON-RPCを使うためのものです。
”txindex”は、ウォレット以外のブロックチェーンデータも必要なため設定しています。

Linuxでは、個人アカウントで起動した場合には”~/.bitcoin/bitcoin.conf”を見に行きますが、bitcoindのオプションによって見るファイルを変更することもできます。
例えばptarmiganの簡易テストスクリプトでは、このように-confで設定ファイルを与えています。


使い方

bitcoindはdaemonとして動作するので、外部からコマンドを与えるにはbitcoin-cliやJSON-RPCを使います。
JSON-RPCを使用しないようにしていても、bitcoin-cliは使うことができます。

bitcoin-cli help

これでコマンドの一覧が取得できるので、詳細が知りたいコマンドについては、

bitcoin-cli help コマンド名

で取得できます。
例えば、getblockcountではこうなりました。

$ bitcoin-cli help getblockcount
getblockcount

 

Returns the number of blocks in the longest blockchain.

 

Result:
n    (numeric) The current block count

 

Examples:
> bitcoin-cli getblockcount
> curl –user myusername –data-binary ‘{“jsonrpc”: “1.0”, “id”:”curltest”, “method”: “getblockcount”, “params”: [] }’ -H ‘content-type: text/plain;’ http://127.0.0.1:8332/



送金・受金

送金は簡単です。

bitcoin-cli sendtoaddress 送金先アドレス 送金BTC

アドレス形式は、Base58でもBech32でも大丈夫です(最新のbitcoindなら)。

 

受金は、受け取り用のアドレスを作るだけです。

bitcoin-cli getnewaddress

現在のbitcoindでは、P2WPKH nested in BIP16 P2SH形式のアドレスを生成します。
異なる形式がよい場合は、引数で指定します。

bitcoin-cli getnewaddress "" legacy
bitcoin-cli getnewaddress "" bech32

「””」としているのは、labelを空にしているだけです。

bech32の場合、mainnetでは”bc”、testnetでは”tb”、regtestでは”bcrt”で始まるアドレスを生成します。


raw transaction

bitcoindの特徴は、raw transaction、すなわちBitcoinのトランザクションデータそのものを扱うことができることだと思います。
Lightning Networkなどでは、送金先がスクリプト(P2SH, P2WSH)になることもしばしばですし、スクリプトに送金されたトランザクションを自分で処理することもあります。

そういう場合、getrawtransactionコマンドでトランザクションデータを取得したり、自分でトランザクションデータを作ってsendrawtransactionコマンドでブロックチェーンに展開したりします。

 

なお、v0.18からコマンド名がいくつか変更になることが予告されています。
詳細はリリースノートから「V0.18」で検索してください。
https://bitcoin.org/en/release/v0.17.0#low-level-rpc-changes


まとめ

Bitcoin Coreも内部ではbitcoind相当の機能が動作しているようなので、Bitcoin Coreを使うのもよいでしょう。受金アドレスをQRコードで表示してくれるところは便利です。
クラウド上のように画面がないところや、画面などいらぬ、というような場合にはbitcoindで十分でしょう。
他にフルノードとして有名なのはbtcdで、こちらはlndがデフォルトで使っていました(今はlndもbitcoindが使える)。

なんにせよ、フルノードは環境を作るのがそこそこ大変なので、ちょっと試してみよう、という感じではなく、すべてのトランザクションデータを参照したかったり、プログラムを通してブロックチェーンにアクセスしたいような場合になるのではないかと思います。

鍵とウォレット

ウォレットの紹介記事が一通り終わりましたので、今回はBitcoinの鍵とウォレットについての簡単な説明をします。


Bitcoinではいくつかの鍵を扱いますが、まずは秘密鍵です。
秘密鍵があれば、Bitcoinを受け取るアドレスを作ることもできますし、そのアドレスから送金することもできます。

というわけで、秘密鍵からアドレスを作るまでの過程を眺めていきましょう。

1. 秘密鍵を作る

秘密鍵は、ランダムな値です。
1~115792089237316195423570985008687907852837564279074904382605163141518161494336(10進数で72桁!)の中から1つ選ぶだけでよいです。
日本の数字単位で一番大きいのは「無量大数(wikipedia)」で1068のようなので、1158無量大数、くらいでしょうか。

2. 公開鍵を計算する

秘密鍵はランダムな値ですが、それ以降は全部計算で求めます。

まず、秘密鍵から公開鍵を計算して求めます。
Bitcoinでは「楕円曲線」という曲線を使います。
秘密鍵は単なる値ですが、それを計算して、楕円曲線上の点に置き換えます。
この点の座標が、公開鍵です。


図1 Bitcoinで使用している楕円曲線
https://en.bitcoin.it/wiki/Secp256k1

「秘密鍵から計算して公開鍵が得られるなら、逆算できるのでは?」という気もしますが、今のところそれは計算上無理ということになっています。
「いうことに」という微妙な表現になってますが、今のところ計算方法が見つかっていないという意味です。
もちろん、総当たりで秘密鍵を順番に公開鍵計算していけば見つけることはできますが、それは逆算ではないですね。。。

3. アドレスを計算する(P2PKH)

では、アドレスを求めてみましょう。
ここではP2PKHという、mainnnetであれば「1」で始まるアドレス方式です(testnetならば「m」か「n」)。

まず、公開鍵を別の形式に変換します。
計算(「HASH160」と呼んでます)を行って、20バイトの値(「PubKeyHash」と呼んでます)にします。
この計算は楕円曲線とは違う方式なのですが、これもまた逆算ができないことになっています。

この20バイトの値に、mainnet/testnetの区別や、間違っているときにチェックできる値を付け加えて、ごにょごにょと計算すると、P2PKHアドレスのできあがりです。

ここまでの流れを図にしてみました。

image
図2 秘密鍵からBitcoinアドレスを作る

逆方向に戻せるのは最後のところだけで、それ以外は逆算ができません。
秘密鍵があれば、アドレスを含め全部計算することができます。
公開鍵だけでも、アドレスは求めることができます。

送金

さて、このBitcoinアドレスに送金してもらったとして、使う場合にはどうするでしょうか?

Bitcoinを使うというのは、別の人に送金するということを意味します。
送金するというのは、トランザクションの持ち主であることを証明しつつ、使用する権利を別のBitcoinアドレスに移すということです。

なんとなく難しくなってしまいましたが、トランザクションに秘密鍵で署名できる=送金、なのです。

署名は、秘密鍵以外ではできません(公開鍵は、その署名が正当かどうかをチェックするのに使います)。
秘密鍵が重要だというのは、署名ができるから、といってもよいでしょう。

鍵とアドレス

Bitcoinで送金先に指定できるアドレスは、以下になります(2018/11現在)。

  • P2PKH
  • P2SH
  • MultiSig
  • P2WPKHのP2SH表現
  • P2WSHのP2SH表現
  • P2WPKHのnative表現
  • P2WSHのnative表現

ウォレットによって指定できないアドレスもあるので、ウォレットを選ぶ際に気にするのもよいでしょう。

P2PKHやP2WPKHは1つの秘密鍵からアドレスを作るので、署名も1つです。
しかし、MultiSigは複数の秘密鍵からアドレスを作り、署名は複数必要になる場合があります。
秘密鍵が1つだと、それが漏れてしまうと署名して送金できてしまいますが、MultiSigで複数の署名が必要なアドレスにしておくと、署名が必要な秘密鍵が複数漏れないと送金できないので、安心度は高まるでしょう(同じ場所に秘密鍵を複数管理していると意味がないですが)。

P2SHやP2WSHのように、末尾に「SH」がついているアドレスの方式は、BitcoinスクリプトというBitcoin上でのプログラムを解かないと送金できません。
通常のウォレットではそういうことはできないので、専用でアプリケーションを作ることになるでしょう。


ウォレット

では、ウォレットは何かというと、秘密鍵の集まり、でよいかと思います。
あるいは、秘密鍵を管理する機能、でしょうか。

銀行の口座と違い、Bitcoinではしばしばアドレスを作ります。
例えば送金するときも、全額を相手に送るのでなければ、お釣りが発生します。
よって、お釣りの送金先として、自分のBitcoinアドレスがいります。

以前と同じBitcoinアドレスに送金してもよいのですが、セキュリティの関係などで、だいたいは別のBitcoinアドレスを新しく作って、そこに送金します。

image
図3 ウォレットが秘密鍵を管理する

そうやると、送金のたびにお釣りのBitcoinアドレスを新しく作ることになり、秘密鍵を管理してやらないといけません。
秘密鍵がなくなってしまうと、署名することができず、すなわちそのBitcoinを使うことができなくなるからです。

そこで、ウォレットが登場します。
Bitcoinでは物理的なものがなく、あるのはトランザクションの持ち主であることを表す秘密鍵だけです。
トランザクションデータはBlockchain上に全部残っているので、またダウンロードすれば済みます。
よって、秘密鍵だけをきっちり管理すれば、あとはなんとかなります。

HDウォレット

しかし、アドレスの分だけ秘密鍵があるので、それを管理するのも大変です。
バックアップを取るとよいのですが、最後にバックアップした地点までにしか戻ることができません。
大金を送金してもらった後、そのバックアップを取り忘れてPCが壊れてしまい、送金前の状況に戻ってしまったら、泣いてしまうのではないでしょうか。
もちろん、送金された大金はブロックチェーン上では取引が完了しているので、送った相手は再送することができません。
つまり、どうしようもありません。。。

そこで、HDウォレットというものが出てきます。

どういうものかというと、秘密鍵を生成するためのデータをウォレットで1つだけ持ち、秘密鍵はそのデータから計算して生成させるという方式になったウォレットです。
これならば、その1つのデータさえ覚えておけば、ウォレットが壊れても今まで生成した秘密鍵すべてを計算で導き出せます。
最初に1回だけバックアップして残しておけば、それ以降はバックアップ不要、ということです(バックアップを紛失してしまえばおしまいですが)。

秘密鍵の元となるデータ(生成する元になるという意味で「シード(種の意味、seed)」や「マスターキー」などと呼ぶことが多い)を用意し、それに連番を使って計算することで秘密鍵を作っていきます。

image
図4 シードから秘密鍵を作る

ウォレットアプリで、最初に何十個かの単語をメモに取るように言われると思いますが、あれを使ってシードを作ります。

もし秘密鍵が1つ漏れてしまったとしても、そこから他の秘密鍵を生成することはできないようになっていますが、シードが漏れてしまうとどうしようもありません。
Bitcoinには管理者がいないため、誰も助けることができません。


スイープ

ちょっと話が変わりますが、ウォレットに「スイープ」という機能が載っていることがあります。

あれは、「シード」ではなく「秘密鍵」を吸い取る方法です。
何十個かの単語ではなく、WIF形式というアドレスのような文字列です。
ペーパーウォレットなどは、このWIF形式の文字列をQRコードで表しているでしょう。

秘密鍵を吸い取るといっても、HDウォレットになっているウォレットであれば、その秘密鍵は自分のシードから生まれていない秘密鍵になります。
他のシードから生まれているかもしれませんし、単なる乱数で作った秘密鍵かもしれないので、ともかく自分のシードからはその秘密鍵を作ることができないのです。

image
図5 スイープすると秘密鍵がシードと結びつかない

それをスイープした場合は、アプリは以下のどちらかの振る舞いをすることになると思います。

  • スイープした秘密鍵をHDウォレットで作ったアドレスに送金する
    • 送金が確定するまで使用できない可能性がある
    • 送金手数料が引かれる
    • スイープした秘密鍵は無効になる(トランザクションが使用済みになる)
    • HDウォレットの管理下になるため、ウォレット復元しても影響がない
  • スイープした秘密鍵をHDウォレットとは別管理にする
    • 何十個かの単語とは別に管理されるので、あの単語たちからは復元できない
    • 送金はしないので、送金手数料は引かれない
    • 送金しないので、即座に使うことができる(confirmationがいらない)
    • トランザクションはブロックチェーンに展開されていないので、他に秘密鍵を知っている人がいればその人が送金してしまう可能性がある

image

どちらがよいとか悪いとかではないのですが、スイープした結果がどうなるか調べてから使うべきでしょう。


Lightning Networkのウォレット

Lightning Networkの場合は、この話とは違います。

ブロックチェーンを使わないで送金するので、取引情報はチャネルを作っているマシンの中にしかありません(チャネルを閉じるときにブロックチェーンに戻します)。
よって、取引しているデータが壊れたりすると、どうしようもありません。

通常は、チャネル接続して相手から古いと判断されたら、相手は強制的にチャネルを閉じようとするはずなので、それに任せるのが無難です。
自分で強制的に閉じようとすると、「古いデータで閉じようとしている=裏切り行為だ!」と判断されて、すべてを失う可能性があるためです。

BRD ウォレットについて

Nayutaの広報、Hitomiです!

今回は、BRD ウォレットを紹介します。ウォレット紹介シリーズの最終回です。これまで見ていただいた皆さんありがとうございました!

この記事では、BRD の特筆すべき特徴を、ウォレットを実際に操作したときの画像も交えながら説明していきます。使い方に関しては、他の方がきれいにまとめている記事があると思うので、そちらを参考にしてください。


1

出典元:BRD 公式WEBサイト

概要
BRD ウォレットは、数種類の仮想通貨が保管できるマルチアセットウォレットです。他のウォレットに比べてオプショナルな機能はやや少なめですが、基本的な機能は備わっていますし、シンプルで見やすいため、初心者にとっても使いやすいウォレットです。

本情報
URL: https://brd.com/
もともとBreadwalletという名前でしたが、2017年9月にBread、2018年2月にBRDに統一をしています。2018年の上半期時点では、170か国で130万以上の新規ユーザーを獲得しています。セキュリティ、シンプルさ、プライバシーを重視したウォレットです。
Android / iOS で使うことが出来ます。日本語に対応しています。

2018年12月12日現在の最新バージョンは、以下の通りです。
3.5.0 (Android)
3.5.2 (iOS)


特徴 

1: オープンソース開発です。C言語で書かれたライブラリも持っています。

2: マルチアセットウォレットです。ビットコイン、ビットコインキャッシュ、イサリアム、そして人気TOP100のERC20トークンに対応しています。2

図1: それぞれの市場価格も表示されていて見やすい

3: SPVです。プライマリーノードと言われているノードが1つだけ表示されています。どのノードにいくつ繋がっているか、アプリ内で確認することは出来ませんが、一定時間経ったり、再ログインしたりすると、別のノードが表示されます。ですので、ランダムなノードに繋がっていると考えて大丈夫そうです。また、マニュアルモードに切り替えれば、特定の信頼できるノードにつなぐことが出来ます。

9

図2: 表示されるノードが変更される

4: 2018年11月16日より、Segwit(Bech32・P2WPKH)に対応しています。デフォルトでは、通常のアドレス(P2PKH)が生成されます。

5

図3: 「Segwitを一度有効にすると無効に出来なくなるがいいか」と
警告してくれる

4

図4: 有効にすると生成されるアドレスは、bcから始まる

3

図5: 有効にしたあとも引き続き、
「設定」から通常アドレスを生成することが出来る。
通常アドレスは1から始まる

5: HDウォレットです。もし、日本語設定のスマホを使っていれば、復元フレーズは日本語で表示されます。

6: トレーディング機能があります。

7: BRDトークンがあります。BRD トークンは特定の数(88.862.718 BRD)しか生成されません。過去にエアドロップも行われたようです(2018年4・5月頃に、1回/週のペースで計4回)。BRDトークンの詳細や特徴はこちらこちらなど参考にしてみてください。

8: ビットコインやイサリアムが購入できます。クレジットカードやSEPA Bank Transferが使えます。(他のコインは別のコインと交換することで入手します。)

クレジットカードはUSDのみで使用可能です。例えば、JPYで購入しようとしてもできません。

10

図6: この後Simplexを通して購入手続きをとる

9: 年中無休のサポート付きです。Google PlayやRedditを見ていると、返信率はかなり高いようです。

10: 秘密鍵をインポートすることが出来ます。


感想

冒頭にも述べましたが、シンプルで色鮮やかなUIなので、ストレスレスに使うことが出来るウォレットです。また、サポート体制や広報の仕方を見ていると、ユーザーとの会話を大事にしているような印象を受けました。

ウォレットを選ぶ場合は、セキュリティやプライバシー保護はさることながら、使い勝手とどれほどの機能を自分は必要としているか、という観点からみていくといいのではないかな、と思います。

GreenBitsウォレットについて

 

Nayutaの広報、Hitomiです!

今回は、GreenBits ウォレットを紹介します。ウォレットの紹介シリーズ第6回目です。前回の記事、GreenAddressウォレットとセットで見ていただければ幸いです。
この記事では、GreenBits の特筆すべき特徴を、ウォレットを実際に操作したときの画像も交えながら説明していきます。使い方に関しては、他の方がきれいにまとめている記事があると思うので、そちらを参考にしてください。


3_thumb8

左:GreenAddress(出典元:公式ウェブサイト)
右:GreenBits(出典元:Google Play –> GreenBits)

概要
GreenBits ウォレットは、Androidで使えるビットコイン専用のウォレットです。マルチシグネチャアドレスと呼ばれる、複数の署名を必要とする送金アドレスが生成されます。他のウォレットでは、マルチシグがデフォルトのアドレスではない or 生成されないことが多いため、GreenBitsの特徴ともいえるでしょう。Android版は、GreenBits(ネイティブアプリ)のほかに、GreenAddress(Cordovaアプリ) というウォレットがあります。

基本情報
URL: https://greenaddress.it/en/
マルタにあるGreenAddressit社のウォレットです。2016年にBlockstream社によって買収されました。Blockstreamといえば最近、Liquidというサイドチェーンをロンチして話題になった企業です。
Android / F-Droid で使うことが出来ます。いずれも日本語には対応していません。

2018年12月05日現在の最新バージョンは、2.07です。

使用前の注意

1: greenbitsという仮想通貨とは関係のない支払い系サービス、GREENBITというイサリアム系トークンが存在します。今回紹介するウォレットには関係ありません。ご注意ください。

2: ビックカメラでは、GreenAddressからのビットコイン決済は無効にすることがあると公式WEBサイトに記載しています。


GreenBitsの特徴

1: SPVです。送金の際は 2of2 / 2of3 の署名をサーバーに渡すため、SPV的な動作をするのは着金やトランザクションの確認の時だろうと思います。

一方でGreenAddressは、SPVではなくサーバーを経由していると推測しています。

27

図1: GreenBitsとGreenAddressの比較

26

図2: ランダムなフルノードと繋がっている。

29

図3: また、信頼できるノードと確実につなげることもできる。

2: Torがサポートされています。

25

図4: ログインページ画面の右上に「Network configuration」
というオプションが出てくる。

3: Testnetを作ることが出来ます。図8中の「Network selector」を選択すると、図9のように「Testnet」の選択肢が出てきます。

28

図5: Testnet


GreenAddressと共通の特徴

1: オープンソース開発です。

2: セグウィットネイティブアドレス(bech32)への送金に対応しています。GreenAddressは1番最初にSegwit対応をしたクライアント型ウォレットでもあります。

3: メインアカウントで生成されるアドレスは、2of2マルチシグネチャアドレス(P2SH)と呼ばれるものです。送金をする際、複数の署名を必要します。2of2の場合、2人中2人の署名が必要です。マルチシグではない通常のアドレスは、複数ではなくクライアントの署名だけが要求されます。

通常、2of2の署名は2つのクライアントのものでいいのですが、GreenAddressではクライアントとサーバーの署名が必要です。つまり、送金する際は、GreenAddressサーバーの署名が必要になるということです。

Decentralizedなビットコインの送金に、サーバーの署名が必要というのは少し変な気もします。しかし、GreenAddress側によれば、セキュリティのためにこのような仕組みしているということです。

4: HDウォレット(BIP32)です。復元フレーズは暗号化され、ローカルで保管されています。この復元フレーズや秘密鍵は、サーバーに送信されることはありません。(サーバーは、公開鍵と生成されたアドレス用のチェーンコードのみを受信します。

17

図6: PINと復元フレーズの関係。
PINでのログインを3回間違えると、パスワードが無効になり
復元フレーズでログインしないといけない。

5: nLockTimeが設定されています。nLockLTimeは、トランザクションにくっついたパラメーターのことです。あるunix時刻またはブロックの高さを与えると、そのトランザクションは、指定の期間前にブロックに入ることが出来ません。

その期間が訪れた際に、GreenAddress側の署名無しに、マイナーがトランザクションをマイニングすることが可能になります。つまり、クライアントが自分の署名のみでどこかに送金できるということです。

これは、(1) 2of2のアカウントを使っていて、(2) 2FAにアクセスできなくなった場合、または(3) GreenAddressのサービスが使えなくなった場合に、リカバリーツールgarecoveryを使って、資産を復元させるときに使われます。

22

図7: nLockTime トランザクション

23

図8: 「Request nLocktime transactions」をタップすると
バックアップが取れる。

6: RBF(Replace By Fee) が設定されています。トランザクションが、いつまで経ってもMEMプールに入ったままで承認が行われない場合(未承認トランザクション、0承認トランザクション)、トランザクション手数料を増加して承認されるように新しいトランザクションに置き換えることができる機能です。

7: Watch-only機能があります。この機能を使うと、秘密鍵がウォレットに読み込まれません。つまり、送金することが出来なくなります。例えば、インターネット接続が心配な公共の場で、トランザクションや残高だけをチェックしたいとき、受金だけをしたいときに、安心して使うことが出来ます。

ところで、Electrumの記事にも「Watching-only」という言葉が出てきました(特徴2)。似た言葉が使われていますが、内容は少し違います。Electrum はWatch-onlyにしたウオレットは、(1)履歴の閲覧、(2)受金、(3)ブロードキャストされる前のトランザクションの作成、(4)ブロードキャストを行います。一方、GreenAddressは、(1)履歴の閲覧、(2)受金しか出来ません(図5)

25

図9: 使う前に設定をしておいたら、
このように「Watch only login」が選択できるようになる。

8

図10: WEBサイトからでもWatch-Onlyでログイン出来るので
第三者のパソコンを使うことも問題ない。

24

図11: ElectrumとGreenBitsの比較(Watch-only)

8: ハードウェア型ウォレットのTrezor、Ledgerに完全に対応しています。

9: 他のウォレットから秘密鍵と資産をスイープすることが出来ます。


感想
GreenBitsは、GreenAddressウォレットと大差はありません。注目するとすれば、SPV的な動作をするかどうかという箇所でしょう。
使い勝手としては、玄人向けのGreenAddressよりは、シンプルで使いやすいかもしれません。

GreenAddress ウォレットについて

 

Nayutaの広報、Hitomiです!

今回は、GreenAddress ウォレットを紹介します。ウォレットの紹介シリーズ第5回目です。第6回目は、GreenBits ウォレットを取り上げる予定です。
この記事では、GreenAddress の特筆すべき特徴を、ウォレットを実際に操作したときの画像も交えながら説明していきます。使い方に関しては、他の方がきれいにまとめている記事があると思うので、そちらを参考にしてください。


10

左: GreenAddress 右: GreenBits
(出典元:Google Play)

概要
GreenAddress ウォレットは、ビットコイン専用のウォレットです。マルチシグネチャアドレスと呼ばれる、複数の署名を必要とする送金アドレスが生成されます。他のウォレットでは、マルチシグがデフォルトのアドレスではない or 生成されないことが多いため、GreenAddressの特徴ともいえるでしょう。Android版は、GreenAddress(Cordovaアプリ) のほかに、GreenBits(ネイティブアプリ) というウォレットがあります。

 

基本情報
URL: https://greenaddress.it/en/
マルタにあるGreenAddressit社のウォレットです。2016年にBlockstream社によって買収されました。Blockstreamといえば、Liquidというサイドチェーンを最近ロンチして話題になった企業です。
Windows / OSX / Linux / Android / iOS / F-Droid で使うことが出来ます。以前は、Chromeアプリも使えたようですが、現在はないようです。いずれも日本語には対応していません。

2018年11月26日現在の最新バージョンは、以下の通りです。
0.1.04(Windows / OSX / Linux)
0.0.88(Android / F-Droid)
0.0.52(iOS)

使用前の注意

1:  現在、Google Play / F-Droid からGreenAddressのページが消えており、インストールすることが出来ません。このことを説明している公の記事等は見つかりませんでした。もしかしたら、Android版は、GreenAddress(最終更新日は2017年12月17日)から、GreenBits(最終更新日は2018年8月28日)に移行させているのかもしれません。

2: GreenAddressは、ローカルで使うことが出来るウォレットです。ところが、WEBサイトの「Login」をクリックすると、インターネットに接続しながらウォレットが使えるようになります(図1・2)。いわゆる、WEBウォレットと呼ばれるものです。このWEBウォレットを始める際に、復元フレーズを入力が求められます。資産への不正アクセス等の危険性があるので使わないほうが安全でしょう。13

図1: さらに「WEBアプリケーションは廃止したため、
モバイルまたはデスクトップウォレットに移行させるように」と警告がでる。
新しくGreenAddressを使用する人は、WEBアプリは避けたほうがよさそうだ。

14

図2: 使う場合は、復元フレーズと
次回からの簡易入力のためのPINを入力を求められる。

3: ビックカメラでは、GreenAddressからのビットコイン決済は無効にすることがあると公式WEBサイトに記載しています。


以下は、Android版の画像と一緒に説明していきます。

特徴
1: オープンソース開発です。GreeenAddressのAPI連携の情報も公開しています。

 

2: セグウィットネイティブアドレス(bech32)への送金に対応しています。GreenAddressは1番最初にSegwit対応をしたクライアント型ウォレットでもあります。

 

3: メインアカウントで生成されるアドレスは、2of2マルチシグネチャアドレス(P2SH)と呼ばれるものです。送金をする際、複数の署名を必要します。2of2の場合、2人中2人の署名が必要です。マルチシグではない通常のアドレスは、複数ではなくクライアントの署名だけが要求されます。

通常、2of2の署名は2つのクライアントのものでいいのですが、GreenAddressではクライアントとサーバーの署名が必要です。つまり、送金する際は、GreenAddressサーバーの署名が必要になるということです。

Decentralizedなビットコインの送金に、サーバーの署名が必要というのは少し変な気もします。しかし、GreenAddress側によれば、セキュリティのためにこのような仕組みしているということです。

 

4: サブアカウントに、2of3のマルチシグネチャアドレスを生成することもできます。2of3なので、 3人中2人の署名が必要です。3つ目の署名は、クライアントのみが知っているバックアップキーからの署名です。こうすることで、万が一、GreenAddressのサービスが使えなくなった場合でも、2つのクライアントの署名で、コインをどこかに送金することが出来るようになります。

4

12

図3・4: 2of3マルチシグのサブアカウントを作ろうとすると、
3番目の署名に必要となるバックアップキーが表示される。

5: HDウォレット(BIP32)です。復元フレーズは暗号化され、ローカルで保管されています。この復元フレーズや秘密鍵は、サーバーに送信されることはありません。(サーバーは、公開鍵と生成されたアドレス用のチェーンコードのみを受信します。)

17

図5: PINと復元フレーズの関係。
PINでのログインを3回間違えると、パスワードが無効になり
復元フレーズでログインしないといけない。

6: Instantというfee設定機能があります。(2of3マルチシグの場合は使えません)

通常、ビットコインの送金が確定するためには、6承認かかるといわれます。これは、二重支払い防止のためです。Instantを使うと、送金確定を待つ必要がなくなります。厳密にいえば、今後確定されるであろうという期待と、二重支払いをしていないという事実を、GreenAddressがリスクを背負って保障してくれるので、このような機能が使えます。一方、受金者はGreenAddressを信用する必要があります。

2

Clipboard01

図5・6: Instant機能

7: nLockTimeが設定されています。nLockLTimeは、トランザクションにくっついたパラメーターのことです。あるunix時刻またはブロックの高さを与えると、そのトランザクションは、指定の期間前にブロックに入ることが出来ません。

その期間が訪れた際に、GreenAddress側の署名無しに、マイナーがトランザクションをマイニングすることが可能になります。つまり、クライアントが自分の署名のみでどこかに送金できるということです。

これは、(1) 2of2のアカウントを使っていて、(2) 2FAにアクセスできなくなった場合、または(3) GreenAddressのサービスが使えなくなった場合に、リカバリーツールgarecoveryを使って、資産を復元させるときに使われます。

20

図7: nLockTime トランザクション

21

図8: 期間は変更することが出来る。
「Send All nLockTime transactions by email」をタップすると
バックアップが取れる。

8: rate limitがあります。これは、Dos攻撃からサービスを守るためのものです。rate limitに引っ掛かることは滅多にありませんが、そうなってしまった場合は、サポートセンターに連絡してください。

 

9: RBF(Replace By Fee) を使うことができます。トランザクションが、いつまで経ってもMEMプールに入ったままで承認が行われない場合(未承認トランザクション、0承認トランザクション)、トランザクション手数料を増加して承認されるように新しいトランザクションに置き換えることができる機能です。

5

図8: RBF

10: Watch-only機能があります。この機能を使うと、秘密鍵がウォレットに読み込まれません。つまり、送金することが出来なくなります。例えば、インターネット接続が心配な公共の場で、トランザクションや残高だけをチェックしたいとき、受金だけをしたいときに、安心して使うことが出来ます。

ところで、Electrumの記事にも「Watching-only」という言葉が出てきました(特徴2)。似た言葉が使われていますが、内容は少し違います。Electrum はWatch-onlyにしたウオレットは、(1)履歴の閲覧、(2)受金、(3)ブロードキャストされる前のトランザクションの作成、(4)ブロードキャストを行います。一方、GreenAddressは、(1)履歴の閲覧、(2)受金しか出来ません(図11)

16

図9: 事前に簡易ログインのための
ユーザーネームとパスワードを設定しておきます。

8

図10: WEBサイトからでもWatch-Onlyでログイン出来るので
第三者のパソコンを使うことも問題ない。

19

図11: ElectrumとGreenAddressの比較(Watch-only)

11: ハードウェア型ウォレットのTrezor One、Ledger Nano Sに完全に対応しています。

 

12: 他のウォレットから秘密鍵と資産をスイープすることが出来ます。

18

図12: 「Receive」タブからスイープできる。


感想

GreenAddressは昔からあるウォレットで、愛用者も多いのではないでしょうか。どちらかというと、玄人向けの設定項目やUIではないかなと思います。サーバーとのマルチシグアドレスを生成することが特徴なので、このことを理解したうえで使うのがいいかもしれません。冒頭にも述べたように、Android版のアプリには、GreenBitsというウォレットが別にあります。使い勝手や特徴など異なる箇所もあるので、次回まとめていきたいと思います。

Mycelium ウォレットについて

 

Nayutaの広報、Hitomiです!

今回は、Mycelium ウォレットを紹介します。ウォレットの紹介シリーズ第4回目です。
この記事では、Mycelium の特筆すべき特徴を、ウォレットを実際に操作したときの画像も交えながら説明していきます。使い方に関しては、他の方がきれいにまとめている記事等があると思うので、そちらを参考にしてください。


1

出典元:Mycelium Bitcoin Wallet

概要
Myceliumは、高い称賛を得ているビットコイン専用のウォレットです。ビットコインキャッシュモジュールというアプリも出しています。2014年に、Blockchain.info からBest Mobile App賞を受賞しています。

基本情報
URL: https://mycelium.com/
Myceliumは、2008年メッシュネットワークプロジェクトで、ハードウェアエンジニアチームとしてスタートしました。それからBitcoinの出現を機に、この技術に傾いていき、ウォレットを含むいくつかのプロジェクトにおいて製品を開発・ロンチし、成功してきました。
Android / iOS で使うことが出来ます。AndroidとiOSは、開発チームが違うらしく仕様がだいぶ異なります。Androidのみが日本語対応していますし、iOSよりも機能が多いようです。

2018年11月16日現在の最新バージョンは2.11.1.21(Android)、1.11(iOS)です。

今日紹介するのはAndroid版です。


特徴

1: オープンソース開発です。

2: ビットコインキャッシュモジュールがあります。これを使うと、ビットコインキャッシュを見つけてくれ、ビットコインに交換できるようです。
昨年の夏、ハードフォークした際に、ビットコインキャッシュが割り当てられました。全員ではなく、当時ビットコインキャッシュに対応すると発表していた取引所にビットコインを預けていた人、秘密鍵を自分で管理するウォレットを使っていた人が、受け取れたようです。
後者の人で、ビットコインキャッシュを受け取ったかどうかが不明な場合、このツールが役に立ちます。Myceliumは、現在のところ、ビットコイン専用ウォレットなので、交換する機能を付けているのかもしれません。
ちなみに、同期に20分から数時間ほどかかるようです。

2

図1:ビットコインキャッシュモジュール

 
3: セグウィットやマルチシグには対応していません。ビットコインのメインネットの場合、アドレスが1から始まります。

 

4: Myceliumはクラウドセールを行ったことがあります。2016年の5月1日に18日間のセールで、2500人以上の参加者が集まり、5,131.445BTC(当時のレート約$450/BTCでいうと、約$2,309,150)が集まったとのことです。SAR(Stocks Appreciating Rights)という合法の手段をとり、参加者はMyceliumのトークンという形でSARを保有するか、あるいは、のちにMycelium社のclass B sharesに変えることが出来ます。これはICOとは異なった手段になります。

 

5: HDウォレットです。大半の他のウォレットは、初期設定時に復元フレーズを半強制的に覚えさせられます(メモさせられます)が、Myceliumは、自分で復元フレーズ(BIP39)を覚えにいかないといけません。このバックアップ作業は非常に重要で、万が一バックアップをせずアプリに入れなくなった場合、資産を取り戻すことが出来ません。ちなみに、Myceliumの復元フレーズは12単語で成っています。

3

図2:このように注意書き兼案内が表示される

 
6: 外部サービスとのAPI連携は、以下の通りです。
Coinapultを通すと、さまざまな法定通貨とヘッジをかけることが出来ます。法定通貨で価値をためておき、ここぞというときにすぐビットコインアドレスに送金することが出来るようです。ただしこれは、MyceliumのHDウォレットではなく、Coinapultの管理下に置かれます。
Purse.ioを通すと、アマゾンで15%ディスカウントの価格でビットコイン払いが出来るようになります。
・ハードウェア型ウォレットTrezorLedgerKeepkeyに対応しています。

Cashila を通して、SEPAエリアで支払いが出来たようですが、現在はCashilaが閉鎖しています。

8

図3: CoinapultでUSDのアカウントを作成した様子
アドレスはではなくから始まっている

4

図4: Purse.io
「Try different address format」をクリックして、から始まるアドレスを生成する。画面のようにbcから始まるアドレスだと、Myceliumはセグウィットに対応していないため、読み込んでくれない

6

図5: ハードウェア型ウォレットのアカウントを使うことが出来る
ハードウェア型ウォレットを失って使えなくなった場合などに有効だ

 
7: ビットコインを手に入れる方法は、以下の通りです。
・外から送金してもらう
・他のコインからビットコインに変換する
Simplexを通して、クレジットカードでビットコインを買う
・Myceliumマーケットで個人売買取引を行う
Glidera を通して、アメリカまたはカナダの銀行口座から売買を行う

9

図6: Glideraを使用する場合の注意書き
外部サービスを併用する場合は、プライバシー保護などの注意が必要

 
8: Mycelium Local Trader という機能があります。交換所の機能を果たしてくれます。第三者が運営する通常の交換所とは異なり、自分の近くにいるトレーダーを探しだし、直接その人に会って法定通貨とビットコインを交換するという仕組みです。トレーダー自身が、資産とリンクする秘密鍵を管理するウォレットなので、Local Traderが法定通貨やビットコインを保有することは一切ありません。

・Mycelium Local Traderのサーバーは、売買する人の間で取引を調整したり、管理したり、取引に基づいたトレーダーの評判の評価計算をしたりします。この評判は、取引が成功したか中止されたかの数によって自動的に変わります。

・Mycelium Local Traderは、秘密鍵を、Myceliumサーバーでの登録や認証のために使います。このサーバーが記憶するのは、ビットコイアドレス、ニックネーム、エンターした場所での売りオーダー、取引履歴といった情報です。

・トレーダーたちは、チャットを使って、落ち合うタイミングや場所を決めます。全チャットの会話はエンドtoエンドであり、ビットコインの鍵を使って暗号化されています。チャットの内容にアクセスできるのは、そのチャットに参加している人なのでプライバシーは守られます。Myceliumサーバーは、タイムスタンプのある暗号化されたテキストのみを受け取ります。

12

図7: Myceliumマーケット(出典元: 公式アプリ)
現在地を調べるか、都市または住所を入力して、近くにいるトレーダーを探す
画面内のkmで表示しているのは、恐らく相手との距離である

 
9: Torに対応しています。Orbotと呼ばれるアプリとSocksプロシキを使うことで、Torを使ったバックエンドのサーバーに接続することが出来ます。これによって、匿名を守りながらMyceliumを使うことが出来ます。使う場合は、アプリの性能が少し鈍ることがあるようです。
11

図8: Torの設定画面より

10: オープンソースプロトコルのBitIDを採用しています。従来型のパスワード認証よりも安全です。

11: トランザクションの署名に、RFC6979 を採用しています。通常ブロックチェーン技術では、ECDSAという公開鍵暗号技術が使われています。これは、複数の署名で乱数を使いまわした場合に、秘密鍵が流出してしまう危険性があります。それを防ぐ技術が、このRFC6979です。

12: 詳細は記載しませんが、興味のある方はこちらもご参考ください。
BIP70 のペイメントリクエストに対応しています。
BIP120/121 のProof-of-Payment(支払いの証明)に対応しています。

13

図9: BIP70より

13. ペーパーウォレットから送金することが出来ます。これには、秘密鍵かマスターシードが必要です。

7

図10: ペーパーウォレットからの送金


感想
 
個人的にMyceliumは、どこに何の機能があるかなど少し見にくく感じ、使いずらいかなというのが、第一印象でした。ただ、触ってみると、API連携が多かったり、他のウォレットとは違う特徴を持っていたりと、ユニークなウォレットだなという風に感じました。最近ちょうどビットコインキャッシュのハードフォークが話題になっていましたが、Myceliumはビットコインキャッシュを積極的にサポートをしていく方針のようですので、今後の展開が楽しみですね。

Coinomi ウォレットについて

Nayutaの広報、Hitomiです!

今回は、Coinomi ウォレットを紹介します。ウォレット機能の紹介シリーズ第3回目です。これまでの記事は、ElectrumBitcoin Core について書いています。
この記事では、Coinomi の特筆すべき特徴を説明していきます。使い方に関しては、他の方がきれいにまとめている記事等があると思うので、そちらを参考にしてください。


 

Clipboard01

出典元:Coinomi 公式ウェブサイト

概要
Coinomiは、高セキュリティのマルチアセットウォレットです。500種類以上の仮想通貨やトークンを扱っています。複雑なブロックチェーンの世界で、誰にでも簡単に使ってもらえる実用的なインターフェースになることをミッションに掲げています。無料で使えます。

基本情報
URL: https://www.coinomi.com/
2014年に George Kimionis氏がFounder&CEOを務める Coinomi Ltd. が作ったオリジナルウォレットです。
Android / iOS で使うことが出来ます。また、2018年中に Windows / MacOS / Linuxに対応したデスクトップ型のウォレットも出るようです。

2018年11月9日現在の最新バージョンは1.11.6です。


特徴

1:多くのコインに対応しています。(以下、公式ウェブサイトでcoinと書かれている箇所に関しては、ここでもコインと記載していきます。)
現在、125ブロックチェーン、382トークンに対応しています。これは、アセットリストから検索できます。私の記事で毎回紹介しているBitcoinのテストネットに関して、他ウォレットだと専用アプリをダウンロードしなければいけないことが多いのですが、Coinomiはその必要がなく、1つのアプリ内で収まります。

Clipboard06

図1:公式ウェブサイトでも、対応コインを探すことが可能です

2:以下、コインに関する機能やサービスを順不同に羅列していきます。

・コイン同士をウォレット内ですぐに交換することが出来ます。これには、 ShapeshiftChangelly という両替サービスが使われています。交換できるコインの種類は、Coinomiではなく、この2つのサービスに依存するので注意が必要です。また、Coinomiサーバーには、ユーザーの情報は一切残りませんが、この両替サービスを利用する際には、アカウントを作成する必要があります。

・クレジットカードでコインを買うことが出来ます。

・Tokenに投資する機能があります。

・コインのフォークエアドロップの情報にも対応しています。

・万が一、Coinomiがコインをアセットリストから消す、つまりCoinomiでは保管できなくなる場合、ウォレットに警告バーナーを表示したり、SNSでアナウンスしたりと、前もって知らせてくれるようです。対応が遅くなりアクセスできなくなった後でも、こちらの手順から仮想通貨を移動させることが出来ます。

なお、Coinomiは年中無休のカスタマーサポートが付いているようなので、フォークなどの緊急の場合には安心ですね。

Clipboard07

図2:アプリ内イメージ図(公式ウェブサイトより)

3:Coinomiは、2014年にはじまって以来、ハッキングされたことや情報漏洩にあったことがないと、公式ホームページに記載しています。

4:グローバルなウォレットです。168の法定通貨と25か国語に対応しています。一部規約等の部分を除き、日本語にも対応しています。

5:秘匿性・匿名性を重視しています。資産にアクセスするようなKYCや、IPアドレスやIDを結び付けること、トランザクションを追跡するようなことはありません。Coinomiのサーバーは、IPアドレスを隠すことで、ユーザーのリクエストを匿名化しています。
 

6:Coinomiでは、セグウィットネイティブ(P2WPKH)アドレスが、デフォルトで生成されます。セグウィットネスティド(P2SH)や、通常のレガシーアドレスも受金アドレスから簡単に生成できます。Bitcoinネットワークでは、手数料が抑えられ、速いトランザクションを可能にします。

・Default: セグウィットネイティブ。Bitcoinメインネットのアドレスはbcから始まる。
・Compatibility: セグウィットネスティド。Bitcoinメインネットのアドレスは3から始まる。
・Legacy: 通常のアドレス。Bitcoinメインネットのアドレス1から始まる。

Coinomiでは、数種類のコインに対しセグウィット対応が出来ています。セグウィットネイティブに対応しているコインのアドレス一覧はこちらから確認できます。

Clipboard02

図3:上からネイティブ、ネスティド、レガシーアドレス

 
7:HDウォレット(階層的決定性ウォレット)です。BIP39に基づいた復元フレーズが使われており、12、15、18、21または24単語から成っています。

8:秘密鍵はサーバーではなく端末に保管され、意図せず外に出ていくことはありません。また、マスターキーはAESで暗号化されています。

この秘密鍵は、復元フレーズからエクスポートすることも出来ます。例えば、他ウォレットを使いたい場合、こちらのツールを使うことで、Coinomiの復元フレーズから秘密鍵をエクスポートし、他ウォレットに読み込ませます。(このツールは、ブラウザでローカルに動き、完全オープンソースです。)詳しい手順はこちらを参考にしてください。

Clipboard08

図4:HDウォレットのイメージ図

Clipboard010

図5:エクスポートのイメージ図

 
9:反対に、他ウォレットからCoinomiにコインを移すことも出来ます。方法は3つあります。復元フレーズを使う方法、通常のトランザクションをつくり全残高を送金する方法、秘密鍵をスイープする方法です。詳しい手順やメリット・デメリットはこちらから確認できます。

スイープ機能について以下、補足します。あまり使うことのない機能かと思うので軽く読み流してもらっても構いません。

スイープとは、秘密鍵(資産)を吸い取る機能です。例えば、ペーパーウォレットからの送金の場合に使うことが出来ます。

秘密鍵のインポート機能とは異なります。スイープは、資産はスイープ後のウォレットからのみ、アクセスすることができます。一方インポート機能は、資産はどちらのウォレットからも、アクセス・送金することが出来ます。ただし、ウォレットのアプリケーションによって、具体的になにをスイープ・インポートと指すかはやや異なるようです。

Coinomiでのスイープは、移動前のウォレットを空にし、手数料をひいた状態で、Coinomiに全残高が送金される仕組みです。

Clipboard011

図6:スイープイメージ図

 
10:今後、Lightning Network、 Atomic Swaps、 そのほかのメジャーな通貨に対応していく予定のようです。

 

注意

Coinomiはオープンソースではないという内容を、しばしば目にします。仮想通貨の世界では、オープンソースであることは開発の透明性などの観点から、ひとつの大事な指標です。Coinomiのコードは初期に公開されていますが、現在のコードが更新されていないことと、ライセンスに関する変更が行われたことが、このように言われる原因になっているのではないでしょうか。ちなみに、この記事によれば、CEOのKimionis氏は、Coinomiはオープンソースであるという主張をしています。

Clipboard03
図7:Google play内のアプリケーションは、1.11.6が最新バージョン

Clipboard05

図8:Githubの最新リリースのバージョンは、2016年11月3日の1.6.5

Clipboard04

図9:Githubの直近の更新日は、2017年10月24日


感想
Coinomiは、アプリもウェブサイトもUIがよく、使いやすいです。様々な機能や通貨をひとつのアプリ内で使えるのも便利ですね。最後に記載したオープンソースについては、そういう事実も踏まえたうえで、ユーザー自身が使うかどうを決めるのがいいでしょう。 

Bitcoin Coreについて

Nayutaの広報、Hitomiです!

今回は、Bitcoin Core を紹介します。Bitcoin Coreは、ビットコインの公式クライアントソフトウェアのことです。このソフトウェアにウォレット機能が含まれているため、前回の記事に続き、ウォレット紹介の一部として取り上げます。
 
この記事では、Bitcoin Core の特筆すべき特徴を、ウォレットを実際に操作したときの画像も交えながら説明していきます。使い方などは、他の方がきれいにまとめている記事があると思うので、そちらを参考にしてください。


 
000

出典元:Bitcoin Core 公式ホームページ

概要
Bitcoin Coreは、ビットコインの公式クライアントソフトウェアです。Bitcoin Coreをコンピュータにインストールすると、全てのブロックチェーンの情報をダウンロードします。ウォレット機能や、マイニング機能も含まれています。無料で使えますし、日本語にも対応しています。

基本情報
URL: https://bitcoin.org/en/bitcoin-core/
Satoshi Nakamotoの論文をもとに、実際にビットコインネットワークをつくるため有志が集まり開発したものです。

Bitcoin Coreを動かす際の最低限の動作要件は、以下の通りです。
・Windows / Mac OS X / Linux の最近のバージョンが動くデスクトップ または ラップトップ
・200GBの空ディスクスペース、最低限100 MB/s のスピードで読み書きできること
・2GBのメモリ(RAM)
・最低限400Kbits(50KB)/s のアップロードスピードがあるブロードバンドインターネット接続
・従量課金制ではない接続、高いアップロード制限のある接続、またはアップロード制限を超過しないことを常にモニターできる接続
・1日6時間以上、Bitcoin Coreのフルノードを動かしておけること

2018年11月2日現在の最新バージョンは0.17.0.1です。

(注意)ビットコインの開発者もまた、Bitcoin Coreと呼ばれることがあります。


 

特徴 

1:ユーザーインターフェースは3つあります。
1つ目は、GUI版です。Bitcoin Coreはアプリケーションの名前ですが、実行ファイル名はBitcoin-Qtといいます。今回は、テストネットのGUI版をWindowsで動かしています。
2つ目は、CLI版です。Bitcoin Core内で動いているプログラムを、Bitcoind(ビットコインプロトコルを実装したプログラマ向けクライアントのこと)と呼びます。
3つ目は、Bitcoin Coreを使った軽量ウォレットです。特定の軽量ウォレットは、そのユーザーのBitcoin Coreのフルノードだけに、つなぐことも出来ます。こうすることで、フルノードの安全性と秘匿性というメリットを、軽量ウォレットも受けることが出来ます。通常、軽量ウォレットはいくつかの不特定なノードにつなぎ情報を得ます。もしこの場合、悪意のあるノードにつないでしまうと、プライベート情報が漏れてしまうなどの危険性があります。

ユーザーインターフェースの詳細はこちらです。

Clipboard04

図1:GUI版

 

2:Bitcoin Coreをインストールしたコンピュータはフルノードとして自動的に機能します。そもそもノードとは、分散型のビットコインネットワークを構成する一員となり、稼働するコンピュータのことを指します。そしてフルノードといった場合、世界で1番最初に生まれたブロック(ジェネシスブロック)~現在のブロックまでの、すべてのブロックチェーン情報をダウンロードし、すべてのトランザクションやブロックの検証を行うコンピュータのことを指します。

膨大な情報がダウンロードされるため、Bitcoin Coreのインストールには長時間かかり(1日かかることも)、大量のストレージが必要になります。
しかし、フルノード同士がもつ情報の正当性を検証しあっているので、他のウォレットクライアントで心配されうる「外部サーバーやネットワーク内の第三者からの情報は、本当に正しいのか」などと心配する必要がありません。

Clipboard02

図2:Bitcoin Core 起動時は毎回ブロックの検証を行う

 

3:完全にオープンソースです。ビットコインネットワーク上でどのような仕様やルールが適用されるのかは、このソフトウェアに依存します。そのリソースは完全に公開されており、誰でも改善案BIP (Bitcoin Improvement Proposal) の提案を自由に行うことが出来ます。提案が反映されるかどうかは、ビットコインネットワーク関係者が参加するメーリングリスト内での議論をもとに決められます。

 

4:自分で資産を完全にコントロールすることができます。誰かが資金を凍結したり、失くすといった心配がありません。その代わり、ウォレットを安全に保つことも、自分の全責任となります。秘密鍵がファイルに保存されるため、そのファイルまたはコンピュータを紛失する・壊すと、パスワードを持っていたとしても、資産を失います。
ウォレットには通常、復元シードというものがあり、端末が壊れても資産を復元することが出来るようになっています。しかし、Bitcoin Coreには復元シードがありません。
コンピュータ自体のウイルス対策や、資産をオフラインの別端末に保管する等の対策をしっかりと行いましょう。ここには、一般に推奨されている対策方法が記載されているのでご参考ください。

Clipboard05

図3:Bitcoin Coreのファイル

 

5:匿名性が高いです。サービスによっては、第三者がユーザーのプラバシー情報を知っている場合がありますが、Bitcoin Coreはそれを出来る限り、少なくしています。また、匿名ネットワークサービスのTorとの互換性もあるので、併用して使うことが出来ます。プライバシーに関する詳細はこちらです。

Clipboard01

図4:Bitcoin Core と他ウォレットのプライバシー比較
(上記リンク先から引用)

Clipboard09

図5:繋がっているノードの情報も見ることができる

 

6:Bitcoin Coreでは、セグウィットネスティド(P2SH)の着金アドレスがデフォルトで生成されます。このアドレスは、メインネットの場合はから、テストネットの場合はからアドレスが始まります。

・セグウィットネイティブ(P2WPKH)を生成する場合は、図6の「Segwitアドレスを生成する」にチェックを入れてください。メインネットはbc、テストネットはtbからアドレスが始まります。
・セグウィットではない普通のアドレス(レガシーアドレスといいます)を生成したい場合は、「ヘルプ(H)」→「デバックウィンドウ(D)」→「コンソール(C)」→「getnewaddress “” legacy」とコマンド入力、してください。メインネットは 1、テストネットは mまたはn からアドレスが始まります。(図7)

Clipboard03

図6:Bitcoin Core 入金画面

Clipboard06

図7:レガシーアドレスが生成された様子

 

7:テストネットだけはなく、レグテスト(regtest)を作ることが出来ます。レグテストとは、自分だけのブロックチェーンを作ることができるシュミレーションのようなものです。マイニングコマンドがあるので、Bitcoinをゲットすることが出来ます。ただし、他のノードと繋がっていない閉じた世界なので、実際にブロックチェーンはダウンロードしません。また、Blockchain Explorer のようなサービスで送金のチェックが出来ません。

Clipboard015

図8:左から、メインネット・テストネット・レグテストのアイコンの色

 

8:RBF(Replace By Fee)を使うことが出来ます。トランザクションが、いつまで経ってもMEMプールに入ったままで承認が行われない場合(未承認トランザクション、0承認トランザクション)、トランザクション手数料を増加して承認されるように新しいトランザクションに置き換えることができる機能です。

また、推奨される手数料は、その時点でのネットワーク状況に依拠してはじき出されるので、タイムリーに承認される額になっています。

Clipboard010

図9:RBFを有効にするチェックがある

 


感想

以前、Electrumウォレットについて記事を書きましたが、同じコンピュータ上のウォレットでも特徴が全く違います。実際に使ってみると、よりよくわかります。Bitcoin Coreは、Electrumに比べるとシンプルではないので多少使いずらいです。しかし、フルノードというメリットを享受したい人にとっては、最適なウォレットではないでしょうか。自分や用途にあったウォレットを使っていきたいですね。

Clipboard011

図10:様々な条件を設定できる画面

Clipboard08

図11:ネットワークに使用したバイト数も見ることが出来る

 

Electrum ウォレットについて

Nayutaの広報、Hitomiです!

今回は、Electrumウォレットを紹介します。
この記事では、Electrumの特筆すべき特徴を、ウォレットを実際に操作したときの画像も交えながら説明していきます。使い方などは、他の方がきれいにまとめている記事があると思うので、そちらを参考にしてください。

 



111出典元:Electrum Bitcoin Wallet公式ホームページ

概要
Electrumは、ビットコイン専用のウォレットです。最も人気が高いウォレットのひとつで、長い間使われ続けています。 また、少しの使用リソースとシンプルなつくりで、スピード性を追求しているのが特徴です。無料で使うことができます。

基本情報
URL: https://electrum.org/#home
2011年11月に Thomas Voegtlin 氏によって開発されました。その後は、様々な開発者が開発に貢献しています。オープンソースのコードはこちらから確認できます。
Windows/ OSX/ Linux/ Android で使えます。
2018年10月26日現在の最新バージョンはElectrum-3.2.3です。

Electrum-mona(Monacoin)やElectron Cash(Bitcoin Cash)というUIが非常に似ているウォレットがありますが、別物です。

 



特徴

1:他のウォレットと大きく異なるのは、エレクトラムサーバー(ElectrumX)という独自のサーバーを使っている点です。このサーバーがブロックチェーンの情報を入手することで、クライアントは「本当に自分のトランザクションはブロックチェーンに入ったのか」という検証を速く行うことが出来ます。これには、SPV技術が使われています。
エレクトラムサーバーは、世界中のボランティアによって分散的に運営されているので、サーバーがダウンする可能性は限りなく低いです。また、サーバーに対し、クライアントが秘密鍵を勝手に送るような仕組みにはなっていない、という内容がElectrumのドキュメントに書かれています。

Clipboard09

図1:イメージ

 

2:コールドストレージ機能*がついています。この機能を使うと、オフラインで署名を行えるようになるため、インターネット攻撃に対するセキュリティを高めることが出来ます。ただし、この機能を使う場合は、パソコンがオフライン用とオンライン用で2台必要になり、さらに送金操作が面倒になってしまうため、取引が多い場合には不向きです。オフラインの方はビットコインを保管する用として、オンラインの方は読み取り専用として機能します。オンラインの方は、Watching-onlyウォレットとも呼ばれ、履歴を閲覧したり、ブロードキャストされる前のトランザクションを生成します。使い方は、こちらから確認できます。
*リンク出典元:bitFlyer

Clipboard08

図2:Watching-Only ウォレット

 

3:日本語の設定ができます。初めてウォレットをつくる場合、インストールやウォレット生成時点では、英語で行われます。

Clipboard01

図3:インストール後の1番最初の画面

 

4:2段階認証つきのウォレットやマルチシグのウォレットが作れます。Clipboard02

図4

 

5:復元シードのフレーズは、Electrumが生成する英単語12個です。これは、256ビットの長さのビットコインの秘密鍵と同じ強度のセキュリティです。(図6)
また、他のビットコインクライアントを、復元シードフレーズを使って、Electrumの中に復元することもできます。ただし、BIP39に従った復元シードフレーズしか入力することが出来ません。今回、Myceliumウォレットで試したところ、きちんと復元することができました。(図7)

Clipboard03

図5

Clipboard05

図6

Clipboard06

図7


6:ハードウェアを連携させることが出来ます。現在、Trezor、Ledger、Keepkeyが対応しています。

abc

図8

出典元(左):Trezor公式ホームページ
(中):Ledger公式ホームページ
(右):Keepkey公式ホームページ

 

7:秘密鍵と復元シードは、AES-256-CBCで暗号化されます。ウォレットを暗号化するためには、任意のパスワード設定が必要です。

Clipboard07

図9

 

8:セグウィットに対応しています。セグウィットネイティブ(P2WPKH)の着金アドレスが生成されます。このアドレスは、メインネットの場合はbcから、テストネットの場合はtbからアドレスが始まるため、普通のアドレス(メインネットは 1、テストネットは mまたはn)とは区別することが出来ます。

Clipboard10

図10

 

9:Torがサポートされています。アンドロイド版はサポートされていません。Torを使う場合は、主に2つの方法があります。1つ目は、1つのサーバーだけにつなぎ、ブロックヘッダとトランザクションの情報をそのサーバーから得る方法です。2つ目は、8つのブロックヘッダのサーバーにつなぎ、1つのオニオンサーバーにつなぐという方法です。詳細はこちらからです。

 

10:ウォレットをアンドロイドにインストールする場合、アプリケーションではなく携帯電話自体に読み込まれます。携帯電話自体の暗号化(鍵をかけるなど)をするのがオススメです。

 




実際に使ってみた感想としては、機能が多く、シンプルで分かりやすいため、使いやすいです。Electrumはテストネット版も作れるので、使ってみたいけど初めからメインネットを使うのが億劫という方や、いろいろな機能を実験的に試してみたいという方などは、こちらから始めてみるのもいいかもしれません。

参考までに、Windowsを使ったテストネットのつくり方を記載しておきます。
その他のOSはこちらから確認してください。

Electrumのショートカットを作る
→ ショートカットを右クリックし「プロパティ」を選択
→ 「ショートカット」の「リンク先(T):」の最後に「--testnet」と付け加える
→ 「OK」を押すとテストネット版の完成です。

Clipboard11

図11