connection establish

lncli --network=simnet connect pubkey@host の裏でどうゆう処理が走っているのか。一からたどる。 コマンドは、LNDではcliが利用される。 // connectToPeer establishes a connection to a remote peer. errChan is used to // notify the caller if »

paper wallet

Paper walletは、ただのアドレスのバーコードではなくて、秘密鍵も含む。最高のセキュリティを持つとすれば、paper walletをオフラインで作成してそこに残高を送ること。これができれば、紙を盗まれない限り絶対に資金を盗まれることはない。 BIP0038による暗号化秘密鍵を利用すれば、パスワードを覚えていないとこれを復元できないので更にセキュリティは向上する。 importとsweep 普通は、単純にやるにしても、暗号化秘密鍵を用いるにしても、秘密鍵をpaper walletからimportする。これは、paper walletとそのimport先の2つの箇所でbitcoinを管理することになるので二重管理になる。より安全な方法としては、importした秘密鍵からさらに新しい場所に即座に映し、古い鍵は使えなくするアプローチだろう。 »

Segregated WitnessによりオフチェーンでのTX連鎖が可能になる

Embeddedっていうすごいブログを発見した。 http://embedded-design-vic.blogspot.com/2018/06/segwit.html 双方向payment channel以降の技術は、segwitが必要となる。OpenTXを署名してブロードキャストする前にcommitTXがそれを参照する必要があるためだ。では、segwitとは。 Segregated Witness トランザクションの署名部を、witness部に移す。署名は、tx全体のハッシュ値に対して秘密鍵で実施されるが、その署名データを格納するscript sigは当然署名できない。署名前にここの書き換えをおこなって、署名を変えてしまえることを脆弱性として、transaction »

Noise Protocol

Lightning Networkでは、メッセージ交換のために、node間のセッションを確立する。このときのやりとりは、その後のprotocolとは異なる。そのために、Noise Protocol Frameworkが利用される。 Noise Protocolは、 Noise is a framework for building crypto protocols. Noise protocols support mutual and optional »

Atomic Multi-Path Payment

最後はAtomic Multi-Path Payment。 Multi Hop-Paymentでは、Hを事前に送信者に展開する必要があり、かつ、受信者と送信者は直接つながっていないので、invoice式に限られるという問題がある。 Atomic Multi-Path Paymentにおいては、秘密分散の方法を使ってHを送信者側が作れるようにすることで、send paymentを可能としている。 hubの寡占化 Multi Hop Paymentでは、中間者が集中しやすいという問題がある。たくさんのchannelにデポジットできるのは一部に限られ、多くの残高を持つnodeが有利だからだ。 AがCに2のmulti hop paymentしたい場合、 »

Muiti Hop Payment

そしてMulti Hop Payment。 Multi Hop Payment 双方向Payment Channelでは、過去のcommitTXをブロードキャストするのをロックタイムとシークレットの交換によりたくみに回避した。なぜ過去のcommitTXに注意を払う必要があるかというと、TXのINのmulti sigに署名済であるためだ。 双方向payment channelのみだと、支払い先が増える毎にデポジット額が増えてしまう。そこで、Multi Hop Paymentがあれば、中間者を経由でき、デポジット額をへらすことが可能になる。 HTLC Hashed Time-Locked Contract (HTLC) »

双方向payment channel

次は双方向マイクロペイメント。 双方向マイクロペイメント 二者間取引のおいて、双方向への支払いを可能にする。 単方向の場合と違い、チャンネルの有効期限はない。segwitが必要になる。 commitTXを作る前に、openTXのoutputを参照する必要があるためだ。これはtransaction mariabillityを解消したおかげと言われるが、詳細は別で調べる。 チャネルオープン open TXの作成 secret hashの交換 commitTXの作成 openTXのbroadcast 残高更新 secret hashの交換 commitTXの交換 secretの交換 クローズ closeTXのbroadcast »

単方向payment channel

Lightning Networkは、単方向、双方向、multi hopと進んでいくわけだけど、それらを分割してしっかり理解を整理する。 すこしずつ、簡易実装ができそうなくらいには理解が進んできた気もする。 payment channel A Micropayment Channel or Payment Channel is class of techniques designed to allow users to »

Docker Hubを使ったデプロイ

今回のクローラーのデプロイはdocker hubを使った。 Docker Hub Docker Hub is the world's easiest way to create, manage, and deliver your teams' container applications. ざっくりとした流れで言えば、 Docker hubのアカウント作って docker imageを作って Pushして »

Redis with Docker

RDB、Redis等々、この手のデータストア、精緻な要件がなければ、docker imageを使うのが圧倒的に楽だと思う。 今回は、redisについて。 Redis Redisは、アクセスが高速なキーバリューモデルを採用するNoSQLです。 key valueで単純だし、非常に高速なので良い。cliの起動は、 redis-cli -h redis-cli 5.0.3 Usage: redis-cli [OPTIONS] [cmd [arg »