Develop with pleasure!

福岡でCloudとかBlockchainとか。

Bitcoin

複数のPayment Channelのアトミックな更新を可能にする「Atomic Multi-Channel Update」

Scaling Bitcoin 2019予習シリーズ第三弾は、「Atomic Multi-Channel Updates with Constant Collateral in Bitcoin-Compatible Payment-Channel Networks」。ホワイトペーパーは↓ https://eprint.iacr.org/2019/583.pdf 著者の1人のPedro Moreno-Sanchezは…

ブラインドマージマーニング(BMM)の仕様を定義したBIP-301

ブラインドマージマーニング(BMM)の仕様がBIP-301として定義された↓ https://github.com/bitcoin/bips/blob/master/bip-0301.mediawiki マージマイニングの仕組みについては、以下の記事が分かりやすい。 btcnews.jp このBIPでは、サイドチェーンのマイナ…

LNの支払い経路の計算をアウトソースするトランポリンペイメント

Scaling Bitcoin 2019予習シリーズ第二弾は、「Improving routing in the Lightning Network with Trampoline Payments」について。 特にホワイトペーパーが出てる訳でも無いので、確かな内容は分からないんだけど、おそらく現在BOLTにプルリクが出されてい…

Tor v3 hidden service等128bitより大きなアドレスをサポートするための新しいaddrv2メッセージを定義したBIP-155

Bitcoinのノードは、接続しているリモートピアにgetaddrメッセージを送信すると、リモートピアが知っているノード情報をaddrメッセージで返してくれ、addrメッセージによって、ネットワーク上の分散ピアが発見できる。 このaddrメッセージでは、各ノードのネ…

スマートコントラクト用の高水準言語BitMLを利用した安全なBitcoinベースのスマートコントラクト開発

Scaling Bitcoin 2019のスケジュールが公開されたので、予習シリーズを開始! 第一弾は「Developing secure Bitcoin contracts with BitML」のペーパーの内容↓ https://arxiv.org/pdf/1905.07639.pdf スマートコントラクトの開発用ツールはEthereum方面は充…

チェーン上のトランザクションの新たな参照方法の標準TxRefを定義したBIP-136

提案は結構前からあったみたいだけど先月マージされたBIP-136↓ https://github.com/bitcoin/bips/blob/master/bip-0136.mediawiki Bitcoinでトランザクションを識別する際は、基本的にトランザクションのハッシュのエンディアンを逆にしたTXIDを使用する。フ…

LNでインボイスを必要としないSpontaneous Paymentの2つの実装方法

通常Lightning Networkの決済では、支払先が予めインボイスを作成し、それを支払元に送ることで支払いがスタートする。このインボイスにはLNでマルチホップ決済をするにあたって、支払先のノードIDやコントラクトを構成する際に必要な情報(プリイメージのハ…

マークルツリーを利用したハッシュベースのアキュムレータ「Utreexo」

BitcoinのUTXOセットを管理するにあたって、そのストレージ要件を大幅に削減すると期待されているアキュムレータ。昨年のScaling Bitcoinでは、スタンフォード大学のBenedikt BünzがRSAを利用したアキュムレータを紹介した↓ techmedia-think.hatenablog.com …

Bitcoinネットワークの安全性を向上させるための新しいトランザクションリレープロトコル「Erlay」

先日、Gleb Naumenko, Pieter Wuille, Gregory Maxwell, Sasha Fedorova, Ivan Beschastnikhらが発表したBitcoinの新しいトランザクションリレープロトコル「Erlay」について論文読んでみた↓ https://arxiv.org/pdf/1905.10518.pdf 現在のトランザクションリ…

c-lightningのPluginの作り方

c-lightning 0.7から任意の言語でPluginを書けるようになった↓ blockstream.com 現在、C、Python、Golang、JavaでPluginを書くためのライブラリが提供されている。 c-lightningのPlugin Pluginを利用することでc-lightningが提供する機能を拡張することがで…

BitcoinへCovenantsの導入を提案するbip-coshv

Bitcoinは通常ロックスクリプトにロックされたコインをアンロックできるアンロックスクリプトを提供できれば、そのコインはどこにでも送金できる。これに対し、あるコインをアンロックした場合、そのコインの送付先を限定する仕組みがCovenantsだ。つまりあ…

Tapscript上で限定的に署名済みトランザクションのインプットの参照先をリバインド可能にする提案 bip-anyprevout

bip-taprootやbip-tapscriptが定義されたが、これに関連してLightning Networkのeltooを実現するための提案も出てきてるので見てみる↓ https://github.com/ajtowns/bips/blob/bip-anyprevout/bip-anyprevout.mediawiki eltooは、LNにおいて旧状態がブロード…

TaprootのアウトプットのスクリプトTapscriptに適用される新しいスクリプトルールを定義したBIPドラフトbip-tapscript

TaprootのBIPドラフトについて書いた↓ techmedia-think.hatenablog.com ので、続いてそのTaprootのアウトプットで使用されるスクリプト = Tapscriptに適用されるスクリプトの新しいルールの提案「bip-tapscript」↓について見てみる。 https://github.com/sip…

BitcoinにTaprootを導入するBIPドラフトbip-taproot

先日、Bitcoinの開発者MLでPieter WuilleがTaproot、Schnorr署名およびマークルブランチをベースとしたコインの使用ルールである新しいSegwitバージョン1のアウトプットタイプを提案した↓ https://github.com/sipa/bips/blob/bip-schnorr/bip-taproot.mediaw…

LNDに実装されたStatic Channel Backup

先日リリースされたLND 0.6-beta↓ Release lnd v0.6-beta · lightningnetwork/lnd · GitHub で新しくStatic Channel Backup機能が導入された。 通常のオンチェーンの場合であれば、全てのトランザクションはチェーン上に記録されているためバックアップは簡…

Atomic Swapを拡張してオプション、証拠金、先物取引などを可能にするAtomic Swaptions

Atomic Swapプロトコルは第三者を信頼することなく、異なるブロックチェーン間で暗号通貨の交換を可能にするプロトコル。単なる暗号通貨の交換だけでなく、オプションや先物のようなデリバティブ資産の保有を希望する参加者向けにAtomic Swapプロトコルを拡…

A scalable drop-in replacement for merkle trees at Scaling Bitcoin 2018

Scaling Bitcoin 2018復習シリーズ。今回は、昨年もBullet Proofsなど発表したスタンフォード大学のBenedikt Bünzによる「A scalable drop-in replacement for merkle trees」の発表で、内容的にはマークルツリーの代わりにRSAアキュムレータを利用したUTXO…

担保付き債務を表現するHashed Time-Locked Collateral Contract(HTLCC)を定義したBIP-197

トラストレスかつ仲介機能(中抜き)を排除した方法で超過担保付き商品を作成するためにAtomic Swapを利用したAtomic Loansを提案するペーパー↓ https://arxiv.org/pdf/1901.05117.pdf ブローカー抜きに借り手と貸し手の間でローン契約を結ぶ際に、担保を設…

OP_CODESEPARATORは廃止の流れか?

Bitcoin開発者の1人であるMatt Coralloが提案するコンセンサスルールのクリーンナップ↓ https://github.com/TheBlueMatt/bips/blob/cleanup-softfork/bip-XXXX.mediawiki まだBIPにはなってないが、このクリーンナップの内容の1つがOP_CODESEPARATORの廃止…

自称サトシになる方法

最近また自称サトシが登場してるみたいだったので、自称サトシになるために必要なことを調べてみた。 ecdsa - If someone wanted to pretend to be Satoshi by posting a fake signature to defraud people how could they? - Bitcoin Stack Exchange 自称サ…

離散対数仮定が崩れた際にConfidential Transactionチェーンのコインを保護するSwitch Commitment

Stanford Blockchain Conference 2019のGrinのセッションで、Grinの構成要素として挙げられていたSwitch Commitmentについて↓ https://eprint.iacr.org/2017/237.pdf Bitcoinなどの多くの暗号通貨では楕円曲線暗号を導入しており、楕円曲線暗号の安全性は離…

コインの所有を証明するProof of Reserveの標準化(BIP-127)

少し前に、取引所に自分が預けているコインが本当に存在するか一斉に引出して確認してみようとするProof of Keysというイベントがあって、どこぞの取引所が事前に引き出し制限始めたというニュースもあったけど、ユーザーにとっては預けている資産がちゃんと…

How Much Privacy is Enough? at Scaling Bitcoin 2018

2019年になったけど、Scaling Bitcoin 2018 復習シリーズ。今回は、Zcashのファウンダーの1人でもあるCornell TechのIan Miersによる「How Much Privacy is Enough?」↓(1時間あたりから) youtu.be 書き起こしは↓ http://diyhpl.us/wiki/transcripts/scali…

Compact Block Filter(BIP-158)をRubyで実装してみた

Bitcoinの軽量クライアント向けに自身に関連するトランザクションを判別する仕組みとしては、Bloom Filterを利用するBIP-37がベースだが、軽量ノード側のプライバシーの改善とフルノードの負荷を軽減するためCompact Block Filterという新しい仕組みが提案さ…

2017年に起きたMoneroのキーイメージを細工したコイン無限生成の脆弱性の内容

2017年2月に発覚したMonero(正確にはCryptoNoteのプロトコルを採用している暗号通貨)でコインを無限生成できる脆弱性について、原因が曲線の特性に起因するもので興味深かったので調べてみた。 ww.getmonero.org この脆弱性自体は実際にMoneroでは悪用され…

The GHOSTDAG Protocol at Scaling Bitcoin 2018

Scaling Bitcoin 2018 復習シリーズ。今回はヘブライ大学のYonatan Sompolinskyによる「The GHOSTDAG Protocol」の発表↓(30分あたりから) youtu.be 書き起こしは↓ ghostdag ホワイトペーパーは↓ https://eprint.iacr.org/2018/104.pdf Bitcoinのオンチェー…

Bitcoin CoreはなぜECDSA署名にLOW Rを適用するようになったのか?

Bitcoinでは、送金時にトランザクションにセットする署名に、現在ECDSA署名を採用している。 秘密鍵をx、対応する公開鍵をP = xGとした場合、メッセージにmに対するECDSA署名は以下のように作成する。 署名の作成 ランダムな値kを選択する。 点R = kGを計算…

Statechains: Off-chain Transfer of UTXOs at Scaling Bitcoin 2018

Scaling Bitcoin 2018復習シリーズ。今回はRuben Somsenによる「Statechains: Off-chain Transfer of UTXOs」の発表について見てみる。 youtu.be 書き起こしは↓ http://diyhpl.us/wiki/transcripts/scalingbitcoin/tokyo-2018/statechains/ ホワイトペーパー…

送信者−受信者間で簡単なコインジョインを行うBustapayプロトコルを定義したBIP-79

Bitcoinのトランザクションはインプットに送信者のUTXOが、アウトプットに受信者のアドレスと送信者のお釣りがセットされる構成が一般的。ブロックチェーンの分析をする企業でよく採られるアプローチでは、こういうトランザクションの場合、インプットのUTXO…

2P-ECDSA: Fungible 2-of-2 MultiSigs for Today's Bitcoin at Scaling Bitcoin 2018

Scaling Bitcoin 2018 復習シリーズ。今回はLightning LabsのConner Fromknechtによる「2P-ECDSA: Fungible 2-of-2 MultiSigs for Today's Bitcoin」の発表↓ youtu.be 書き起こしは↓ scriptless-ecdsa 前半はLindellベースの2者間のECDSA署名プロトコル↓の解…