bitcoin readonly wallet

bitcoinでreadonlyなwalletを使いたい。
リードオンリーじゃなくてもいいけど、レジ端末的なところには秘密鍵なし。
可能なら、取引ごとに異なるビットコインアドレスを生成して表示。
まあ無理でも、ウォレット単位の残高を見たい。見せたい。

結論として、公開鍵あれば読めることはわかった。ただその公開鍵公開していいかはまだよくわかってない。

規格

mastering bitcoinのHDウォレット周り読んだり、ググったりしたがいまいちピンとこない。
また、readonly address というのが、規格もあり実装しているクライアントもある。
しかし、addressをreadonlyにできても、アドレスは使い捨てるほうが良いわけで、だいぶナンダカナー感がある。

xpubで始まる master public key を持ち運べば良さそうに見える。
ただ、copay2.6.0でmaster public keyをimportする口がなさそう?。
なお、electrum 2.6.4にcopay2.6.0からwalletのmaster public keyをimportすることができた。よっしゃよっしゃ。

copayの実装

パスワード制限

いまいちなほうから。

copayは送金時にパスワードを必須にすることができる。
なので、レジ端末側に秘密鍵を入れ、送金するときにパスワードを要求することで、一応守れる。
あとMnemonic code吐き出しも設定から潰せるので、何かの時にだいぶ危ない以外は、目的が多少達成できる。
walletのexportも潰さないとダメな気がするけど、潰せるのかな。

export wallet, Do not include private key (独自実装?)

export wallet時にadvanced optionが設定できる。
秘密鍵含むことなしにexportできて、それにパスフレーズをつける。独自実装かな?

このファイルを別のcopayでimportできる(試したのはdesktop -> android)。
送金しようとすると、readonly側のウォレット的には送信のproposalを出し、秘密鍵持ってる側のウォレットに、approveの画面が出てくるところ。
このproposal機能はじめ独自実装かなと思ってたけど、独自実装じゃないっぽい。
master public key でimportしたreadonly walletのelectrumから送ってみたら、unsignedのtransactionが飛ぶ。
copay側でそれを拾って自分がsign出来そうだったらなんか出すんだ。かしこい。
そしてrejectしたらなかったことになる。かしこい。

master public key

ElectrumはWallet -> Master Public Keysから。
copayは歯車 -> Advanced -> Wallet Information -> Extended Public Keysから。
xpubではじまるやつ。

前述だけど、copayで出したpublic keyをelectrumでimportできた。ほかは試してない。

このmaster public keyがどの強度のやつなのかはよくわからない。

どの強度is何

まんまmastering bitcoinからの抜粋

強化子公開鍵導出(hardened child key derivation)
もし拡張公開鍵の利便性を使い、しかもchain codeの漏洩リスクを回避したいのであれば、
通常の親(親公開鍵)ではなく強化された親(親秘密鍵)からから拡張公開鍵を導出すべきです。
ベストプラクティスとしては、マスターキーの1階層目の子供を常にhardened derivationを通して
導出されるようにしておくことが良いでしょう。

unsigned

unsignedで送れてしまうから、うっかりするとうっかりしそう。

web api

web apiで取れるのかな。少なくともココにはなかった。
https://blockchain.info/api/blockchain_api

やりたかった定点観測

なんか作ったら or 既存のものでreadonlyのwallet定点観測できないかなーと思ってた。
親公開鍵を預ける/預かることがどのくらいリスクなのかまだよく理解してないから、まだあれ。

公開鍵を使って、ビットコインアドレスが生成できる。
また、トランザクションから自分のウォレットに属するかがわかってしまう。
秘密鍵/公開鍵という響きだけから感じる公開鍵は公開していいもの、という印象よりだいぶうかつに公開するとまずそうな気がする。

広告

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中