En septiembre del 2019, Bitcoin Optech llevó a cabo talleres en San Francisco y Nueva York sobre las propuestas del soft-fork schnorr/taproot. Los objetivos de los talleres fueron:

  1. compartir las ideas actuales a la comunidad open-source sobre las propuestas,
  2. dar a los ingenieros la oportunidad de trabajar con la nueva tecnología a través de notebooks interactivos jupyter, y
  3. ayudar a los ingenieros a participar en el proceso de retroalimentación de la comunidad.

Este artículo contiene todos los videos, diapositivas y notebooks de jupyter de estos talleres, para que los desarrolladores puedan aprender sobre estas nuevas y emocionantes tecnologías desde casa.

Los talleres se dividieron en 4 secciones:

  1. Preparación y matemáticas básicas - muestra cómo configurar el entorno del notebook jupyter; ofrece una actualización de las matemáticas básicas de la curva elíptica e introduce hashes etiquetados.
  2. Firmas de Schnorr y MuSig - describe el esquema de firma bip-schnorr y cómo usar MuSig para agregar múltiples llaves públicas y firmas parciales en una sola llave/firma.
  3. Taproot - muestra cómo crear y gastar una salida de segwit v1 utilizando la ruta de la llave (donde se proporciona una firma única) o la ruta del script (donde un compromiso con un solo script o múltiples scripts se incrusta en una llave pública para luego ser revelada y empatada)
  4. Case studies - demuestra algunas aplicaciones prácticas de las nuevas tecnologías schnorr y taproot.

Las diapositivas de todas las presentaciones se pueden descargar aqui. Bryan Bishop también ha proporcionado una transcripción de la sesión de Nueva York.

Introducción

Introduction

John Newbery da un resumen de por qué schnorr y taproot son tecnologías útiles y explica por qué Bitcoin Optech creó el taller. Luego, describe los objetivos del taller.

Preparación y matemáticas básicas

Esta sección muestra cómo configurar el notebook jupyter y ofrece una actualización de las matemáticas básicas de la curva elíptica. También introduce hashes etiquetados.

0.1 Notebook de Prueba

Antes de comenzar los talleres, los usuarios deben seguir las instrucciones en el archivo README del repositorio, clonar el repositorio del taller y posteriormente correr las pruebas del notebook de prueba para asegurarse de que su entorno esté configurado correctamente.

→ Corre este notebook en Google Colab

0.2 Matemáticas de Curva Elíptica

Matemáticas de Curva Elíptica

Elichai Turkel proporciona un repaso sobre las matemáticas básicas de la curva elíptica que se requerirán para este taller.

→ Corre este notebook en Google Colab

0.3 Hashes Etiquetados

(Sin video) Este capítulo presenta hashes etiquetados, que son utilizados en las propuestas bip-schnorr y bip-taproot.

→ Corre este notebook en Google Colab

Firmas Schnorr y MuSig

Esta sección se explica la propuesta de bip-schnorr y cómo MuSig puede ser usado para agregar múltiples llaves públicas y firmas parciales en un solo conjunto de llave pública y firma.

1.1 Firmas de Schnorr

Firmas de Schnorr

Elichai explica las matemáticas detrás de las firmas schnorr y explica la propuesta bip-schnorr.

→ Corre este notebook en Google Colab

1.2 MuSig

MuSig

Elichai describe el algoritmo MuSig (creado por Gregory Maxwell, Andrew Poelstra, Yannick Seurin y Pieter Wuille), y muestra cómo puede ser usado para agregar múltiples llaves públicas y firmas parciales en una sola llave pública/firma.

→ Corre este notebook en Google Colab

Taproot

Esta sección explica las propuestas bip-taproot y bip-tapscript. Muestra el formato de una salida segwit v1 y cómo se puede usar dicha salida en un gasto de ruta de llave o en un gasto de ruta de script. Demuestra cómo una llave pública modificada puede comprometerse con uno o más scripts, y cómo se puede gastar la salida de segwit v1 usando uno de esos scripts.

2.0 Introducción a Taproot

Introducción a Taproot

James Chiang muestra una visión general de las propuestas bip-taproot y bip-tapscript. Este notebook muestra cómo crearemos resultados de transacciones para luego gastarlos y verificar que el gasto sea válido.

→ Corre este notebook en Google Colab

2.1 Segwit V1

Segwit Versión 1

James muestra cómo crear salidas de transacciones segwit v1 y gastarlas usando el gasto de ruta de llave.

→ Corre este notebook en Google Colab

2.2 Taptweak

Taptweak

James explica qué es un ajuste de llave y cómo se puede usar un ajuste para confirmar datos arbitrarios.

→ Corre este notebook en Google Colab

2.3 Tapscript

Tapscript

James analiza cómo podemos confirmar un tapscript en una salida de segwit v1 usando un taptweak, y cómo podemos gastar esa salida usando las reglas de gasto de ruta de llave segwit v1. También explica las diferencias entre el tapscript y el script de legacy bitcoin.

→ Corre este notebook en Google Colab

2.4 Taptree

Taptree

James muestra cómo se puede construir un árbol de merkle de scripts y cómo podemos comprometernos con ese árbol utilizando un taptweak. Luego explica cómo gastar el resultado satisfaciendo uno de esos scripts y proporcionando una prueba de que el script era parte del árbol comprometido.

→ Corre este notebook en Google Colab

2.5 Huffman Construction

(Sin video) Este capítulo adicional muestra cómo construir de manera más eficiente un árbol de scripts colocando scripts que tienen más probabilidades de gastarse más cerca de la raíz del árbol.

→ Corre este notebook en Google Colab

Casos de estudio

Esta sección contiene demostraciones de cómo las nuevas tecnologías schnorr/taproot pueden usarse para crear servicios y productos avanzados de Bitcoin.

3.1 Degradando Multisig

(Sin video) Este capítulo muestra una billetera multisig degradante. En todos los casos, la salida se puede gastar con un subconjunto de las llaves “vivas”, pero después de un tiempo de espera, la salida se puede gastar con una combinación no solo de llaves “vivas” sino también “de respaldo”. Taproot permite que se comprometan múltiples rutas de gasto, pero sólo la que se ejerce se revela en la cadena.

→ Corre este notebook en Google Colab

Resumen

Resumen

John concluye el taller explicando cómo tú puedes participar en el proceso de retroalimentación de la comunidad para estas propuestas.