2019年9月、ビットコインオプテックはschnorr / taproot ソフトフォークの提案に関するワークショップをサンフランシスコとニューヨークで開催しました。 ワークショップを通じて、

1.提案に関するオープンソースコミュニティでの現在の考え方を共有し、 2.インタラクティブなJupyter Notebookを使用して、エンジニアに新しいテクノロジーを使用する機会を与え、 3.エンジニアがコミュニティのフィードバックプロセスに参加できるようにします。

このブログ投稿には、これらのワークショップのすべてのビデオ、スライド、およびJupyter Notebookが含まれているため、自宅にいながらこれらのエキサイティングな新技術について学ぶことができます。

ワークショップは4つのセクションに分かれています:

  1. 事前準備、数学のベーシック-Jupyter Notebook環境のセットアップ方法、基本的な楕円曲線数学の復習、タグ付きハッシュの導入。
  2. Schnorr署名とMuSig-bip-schnorr署名スキームと、MuSigを使用して複数の公開鍵 /部分署名を単一のpubkey /署名に集約する方法についての説明。
  3. Taproot-キーパス単一の署名が提供される場合またはスクリプトパス(単一のスクリプトまたは複数のスクリプトへのコミットメントが公開キーに埋め込まれ、後で明らかになる場合)を使用してsegwit v1のoutputの作成、支払いする方法の説明。
  4. ケーススタディ-新しいschnorrおよびtaprootテクノロジーの実用的なアプリケーションの説明。

すべてのプレゼンテーションのスライドはこちら.からダウンロードできます。 またブライアン・ビショップが提供してくれたニューヨークのセッションのtranscriptも存在します。

Introduction

Introduction

John Newberyは、schnorrとtaprootがなぜ有用な技術であるかを要約し、Bitcoin Optechがワークショップを作成した理由を説明しています。 次に、ワークショップの目的の概要を説明しています。

Preparation and basic math

このセクションでは、Jupyter Notebookをセットアップする方法を示し、基本的な楕円曲線の数学を復習し、タグ付きハッシュを紹介します。

0.1 Test Notebook

ワークショップを開始する前に、ユーザーはリポジトリREADMEの指示に従い、workshop repositoryのクローンを作成し、テストノートブックを実行して、環境が正しく設定されていることを確認してください。

→ このノートブックをGoogle Colabで実行する

0.2 Elliptic Curve Math

Introduction

Elichai Turkelによる、このワークショップに必要となる基本的な楕円曲線の数学の説明です。

→ このノートブックをGoogle Colabで実行する

0.3 Tagged Hashes

_(動画なし)_bip-schnorrおよびbip-taprootの両方の提案で使用される_Tagged hashhes_を紹介しています。

→ このノートブックをGoogle Colabで実行する

Schnorr signatures and MuSig

このセクションでは、bip-schnorrの提案について説明し、MuSigを使用して複数の公開鍵/部分署名を単一の公開鍵/署名に集約する方法を説明します。

1.1 Schnorr Signatures

Schnorr Signatures

Elichaiは、シュノア署名の背後にある数学を説明し、Bip-Schnorrの提案を説明します。

→ このノートブックをGoogle Colabで実行する

1.2 MuSig

MuSig

ElichaiはMuSigアルゴリズム(Gregory Maxwell、Andrew Poelstra、Yannick Seurin、Pieter Wuille執筆)について説明し、複数の公開鍵/部分署名を単一の公開鍵/署名に集約する方法を示します。

→ このノートブックをGoogle Colabで実行する

Taproot

このセクションでは、bip-taprootおよびbip-tapscriptの提案について説明します。 segwit v1outputの形式と、そのようなoutputがキーパスの支出またはスクリプトパスの支出にどのように費やされるかを示しています。 調整された(tweaked)公開キーが1つ以上のスクリプトにコミットする方法、およびこれらのスクリプトの1つを使用してsegwit v1outputを使用する方法を示します。

2.0 Introduction to Taproot

Introduction to Taproot

James Chiangは、bip-taprootおよびbip-tapscriptの提案の概要を説明します。 このノートブックは、トランザクションoutputを作成、使用、使用が有効であることを確認する方法を示します。

→ このノートブックをGoogle Colabで実行する

2.1 Segwit V1

Segwit Version 1

Jamesは、segwit v1トランザクションoutputを作成し、キーパス支出を使用してそれらを使用する方法を示します。

→ このノートブックをGoogle Colabで実行する

2.2 Taptweak

Taptweak

Jamesは、鍵の調整(key tweak)とは何か、および調整(tweak)を使用して任意のデータにコミットする方法を説明します。

→ このノートブックをGoogle Colabで実行する

2.3 Tapscript

Tapscript

Jamesは、tapweakを使用してsegwit v1outputでtapscriptをコミットする方法と、segwit v1キーパス支出ルールを使用してそのoutputを使用する方法について説明します。 また、tapscriptとレガシービットコインスクリプトの違いについても説明しています。

→ このノートブックをGoogle Colabで実行する

2.4 Taptree

Taptree

Jamesは、スクリプトのマークルツリーを構築する方法と、taptweakを使用してそのツリーにコミットする方法を示します。 次に、これらのスクリプトの1つを満たし、そのスクリプトがコミットされたツリーの一部であったことを証明することにより、outputを使用する方法を説明します。

→ このノートブックをGoogle Colabで実行する

2.5 Huffman Construction

_(ビデオなし)_このボーナスの章では、使用される可能性が高いスクリプトをツリーのルートの近くに配置することにより、スクリプトのツリーを最も効率的に構築する方法を示します。

→ このノートブックをGoogle Colabで実行する

Case studies

このセクションでは、新しいschnorr / taprootテクノロジーを使用して高度なビットコインサービスと製品を構築する方法のデモを提供します。

3.1 Degrading Multisig

_(動画なし)_この章では、劣化するマルチシグウォレットについて説明します。 すべての場合において、outputは「ライブ」キーのサブセットで使用できますが、タイムアウト後の使用には「ライブ」キーと「バックアップ」キーの混合が必要です。 Taprootは、複数の支出パスをコミットすることを許可し、行使されたパスのみがチェーン上で公開されます。

→ このノートブックをGoogle Colabで実行する

Summary

Summary

Johnは、これらの提案に対するコミュニティフィードバックプロセスに参加する方法を説明し、ワークショップを終了します。