Develop with pleasure!

福岡でCloudとかBlockchainとか。

MASTで選択されたスクリプトを実行するtail-callの仕組みを定義したBIP-117

MASTの機能を実現するのに新しくBIP-98とBIP-116とBIP-117の3種類のBIPが提案されている。 BIP-116はスクリプトの条件分岐をフラットにしてMASTのマークツリーを構成した結果、スクリプトで実際に使用する条件(サブスクリプト)がそのマークルツリー内に含…

MASTを実現するMERKLEBRANCHVERIFYを定義したBIP-116

MAST(マークル化抽象構文木)を実現する新しいアプローチとしてMERKLEBRANCHVERIFY opcodeの導入を提案するBIP-116が公開された↓ https://github.com/bitcoin/bips/blob/master/bip-0116.mediawiki MAST(Merkelized Abstract Syntax Tree)とは? Bitcoin…

Merkle Treeの重複エントリー問題の解消とパフォーマンスを向上するFast Merkle Treeについて定義したBIP-98

Bitcoinのブロックヘッダにはブロックに入っているトランザクションのリストにコミットするため、各トランザクションのTXIDをリーフノードにしたマークルツリーを構築し、そのマークルルートの値が入れられるようになっている。ブロックにどれだけたくさんの…

SIGHASH_FORKIDとfork idを使ったリプレイプロテクションの仕組み

8/1にBitcoin Cashが分岐した際、BTCとの間のリプレイアタックに対する保護の仕組みを組み込む必要があり、この時SIGHASHを利用する仕組みが導入された。 spec/replay-protected-sighash.md at master · Bitcoin-UAHF/spec · GitHub 最近分岐したBitcoin Gol…

Scriptless Scriptで実現するAtomic Swap

Atomic Swapといえば同じハッシュ関数とタイムロックの仕組みを持つブロックチェーンであれば、それぞれのチェーンの通貨をトラストレスに交換することができるプロトコルで、最近だとBitcoinやLitecoin、BitcoinとEthereumでAtomic Swapの事例が出てきてい…

OpenSCでマイナンバーの登録情報を確認してみた

OpenSCにマイナンバーカード(JPKI)の対応がマージされていたので、OpenSCを使ってマイナンバーカードの登録情報を確認してみる。 github.com 使用したカードリーダーは↓でMacでも認識できた。 amzn.to カードに登録されているオブジェクトのリスト確認 ま…

Bitcoin Cashのトランザクションを作成してBCHを入手してみた

8/1のBitcoin CashのハードフォークでBitcoinがBTCとBCHに分岐した。分岐前にBTCを保持していると、それと同額のBCHも持っていることになる。 取引所などに預けていて、取引所がBCHに対応していれば何もしなくても取引所が同額のBCHが付与してくれる。モバイ…

BIP-32の鍵導出と組み合わせてPay-to-Contractのアドレス導出方法を定義したBIP-175

以前ブログでも記事書いたPay-to-Contractのホワイトペーパー techmedia-think.hatenablog.com のプロトコルがBIPになった↓ https://github.com/bitcoin/bips/blob/master/bip-0175.mediawiki 動機 Bitcoinトランザクションは、二者間で価値を移転する現実世…

部分的に署名されたトランザクション(PSBT)のフォーマットを定義するBIP-174

通常のP2PKHやP2WPKHで決済をする分には特に関係ないが、P2SHベースのマルチシグやコントラクトなどで複数のユーザーによる署名が必要な場合、ユーザー間でトランザクションをやりとりしながら、各自署名を付与し、最終的にブロードキャスト可能なトランザク…

未使用なUTXOかチェックするメッセージを定義したBIP-64

フルノードのUTXOセット内にある出力が存在するかチェックするためのP2Pメッセージを定義したBIP-64についてみてみる↓ https://github.com/bitcoin/bips/blob/master/bip-0064.mediawiki ※ マイクハーンによる提案で、Bitcoin Coreにはservice bitの定義は存…

支払いの証明(Proof of Payment)について定義したBIP-120

Bitcoin決済をしたことを証明する支払いの証明(Proof of Payment)方法について定義しているのがBIP-120↓ https://github.com/bitcoin/bips/blob/master/bip-0120.mediawiki Bitcoinによる支払いが行われたことを条件にサービスなどを提供するケースって結…

P2SHでネストしたP2WPKHベースのアカウント導出スキームを定義したBIP-49

HDウォレットのマルチアカウント機能がBIP-44で定義されているけど↓ techmedia-think.hatenablog.com segwitがアクティベートされたこともあり、これにP2SHでネストされたP2WPKHをサポートしようということでBIP-49が新たに追加されたので見てみる↓ https://…

HDウォレットのマルチアカウント階層を定義したBIP-44

以前BIP-32の階層的決定性ウォレットについて書いたけど↓ techmedia-think.hatenablog.com このHDウォレットの階層を論理的に定義したBIP-44についてみてみる↓ https://github.com/bitcoin/bips/blob/master/bip-0044.mediawiki 動機 このBIPで提案している…

ECDSA署名のエンコーディング関連のmalleabilityを解消するルールを追加するBIP-146

Segwitのトランザクションで署名が入力から分離されたことで、署名スクリプトに細工してtxidを変更することはできなくなったけど、witnessに移動した署名データの改変自体は可能。依然として可能なECDSA署名のエンコーディング関連の改変を解消するためにト…

ElementsのAsset tagの生成と追加発行の仕組み

ElementsでConfidential Assetsについて、以前ブログを書いた↓ techmedia-think.hatenablog.com けど、Asset Tagや実際にアセットを追加発行する際のトークンなどがどういうロジックで生成されて、何を持って追加発行が承認されるのか仕組みについてよく分か…

Bitcoin Coreのテストコードの実行方法

既存のコードの追加・改修の際に、動作を保証するテストコードがあり、自動テストできる環境があるのは重要で、Bitcoin Coreにももちろんテストコードと自動テストの仕組みがある。 Bitcoin Coreには単体テストと、リグレッション及びインテグレーションテス…

プルーニングピア向けのservice bitを定義したBIP-159

Bitcoinのmainnetのブロックチェーンのデータサイズは現在150GB弱ほどだが、プルーニングモードで動作させると使用済みのTXOを指定サイズ分だけ保持し、古いTXOデータは削除されていくようになり、とても少ないディスクスペースでフルノードを動作させること…

Bitcoinの高速リレーネットワークFIBRE

ブロックサイズを拡張について、データ量が多くなるためデータを転送する際により高いネットワーク帯域が求められるようになり、ハッシュパワーの集中が促進するのではないかという懸念がある。 より高速なリレーネットワークを活用することで、この問題を解…

HFリサーチ”BIP-MSMMHHF”

Welcome - Bitcoin Hard Fork Research ↑の2つめの、James Hilliardが書いたマルチステージマージマイニングヘッダハードフォーク↓について見てみる。 https://github.com/jameshilliard/bips/blob/bip-msmmhhf/bip-msmmhhf.mediawiki 簡単に言うと、ハード…

HFリサーチ”BIP-MMHF”

ブロックサイズの拡張(1M→2M)を目的としたハードフォークに注目が集まっているけど、ブロックサイズとは別に↓のような問題を解消するためにブロックヘッダの構造についてもそろそろ変更が必要じゃないかと思う。 extra nonceの確保 現在のハッシュレートで…

ソフトフォークを確実にアクティベートするBIP-8

現在、ソフトフォークのアクティベートと方法はBIP-9のversion bitsを使った方法が採用されている↓ techmedia-think.hatenablog.com この方法を使ってOP_CSVのソフトフォークがリリースされ(シグナリング開始から約2ヶ月でアクティベート)、Segwitのデプ…

未来の価格に基づいた決済を可能にするDiscreet Log Contracts

Lightning Networkのホワイトペーパーを書いたThaddeus DryjaがこないだDiscreet Log Contracts(直訳すると離散対数コントラクト?)というホワイトペーパーを公開していたので↓見てみる。 https://adiabat.github.io/dlc.pdf アブストラクト スマートコン…

Compact Blockバージョン2

BIP-152として定義されているCompact Blockについて以前ブログを書いた↓ techmedia-think.hatenablog.com 簡単にいうと新しいブロックデータを受信する際、既存のblockメッセージを使ってデータを受け取ると、そのメッセージにはブロック内の全トランザクシ…

Bitcoinのソフトフォークとして導入するConfidentail Transaction

昨年Bitcoinの開発メーリングリストにポストされたConfidential TransactionをBitcoinのソフトフォークとして導入する話↓ [bitcoin-dev] Confidential Transactions as a soft fork (using segwit) Confidential TransactionについてはBlockstreamが開発した…

Confidential Transactionのrange proofの仕組み

techmedia-think.hatenablog.com ↑でConfidential Transactionのコミットメントの作成と検証をしたので、続いてrange proofについて見てみる。 Confidential Transactionではトランザクションの各出力にコインの量ではなくコミットメント(楕円曲線上の点)…

Confidential Transactionのcommitmentを生成してみる

以前、Confidential Transactionのホワイトペーパーを読んだ↓ techmedia-think.hatenablog.com Confidential Transactionでは、トランザクションの出力にコインの量をセットする代わりに、Pedersen commitmentを楕円曲線に適用したコミットメント(この場合…

ECDSAの脆弱性を利用した未承認トランザクションの二重使用を防止する仕組み

Bitcoinのトランザクションは10分に一度作成されるブロックに取り込まれる。最近のメモリプールの状況では10分後に取り込まれればラッキーな方で、まだ時間がかかることもよくあると思う。 その一方でECサイトや実店舗でのBitcoin決済の導入は進んでいる。リ…

Strong Federationsの概要

Blockstreamが今年に入って公開したStrong Federationsのホワイトペーパーに記載されている技術仕様についてを読んでみた↓ https://arxiv.org/pdf/1612.05491v2.pdf もともとBlockstreamのサイドチェーンのホワイトペーパーのFederated Pegでは、信頼できる…

リプレイ攻撃を防ぐOP_CHECKBLOCKATHEIGHTを定義したBIP-115

EthereumがETHとETCにハードフォークした際に問題となったリプレイ攻撃。 ブロックチェーンでハードフォークが発生すると、ハードフォークの前に持っていた通貨は、分岐した両方のチェーンで有効な状態になる。仮にAコインがハードフォークしてAコイン(元の…

Segwitのアドレスフォーマットを定義したBIP-173

取り下げられたSegwitのアドレスフォーマットを定義したBIP-142↓ techmedia-think.hatenablog.com に変わって、新しい仕様でSegwitのアドレスフォーマットを定義したBIP-173が登録されてたので見てみる↓ bips/bip-0173.mediawiki at master · bitcoin/bips ·…