11. Firma Schnorrvolver al índiceLa
firma Schnorr es un esquema de firmas: un set de reglas matemáticas que conectan la clave privada, la clave pública y la firma.
Claus-Peter Schnorr inventó este esquema de firma digital, pero no fue ideada inicialmente para la tecnología crypto.
Schnorr es un algoritmo alternativo en forma de
firma digital con múltiples ventajas.
Actualmente, Bitcoin usa el
(Algoritmo de Firma Digital de Curva Elíptica) ECDSA para generar firmas criptográficas para enviar/entregar mensajes y pares de claves
secp256k1La razón principal por la que Bitcoin no usó inicialmente la firma Schnorr es que Schnorr no es un estándar, y no está disponible en librerías crypto en general.
Muchos criptógrafos consideran que las
firmas Schnorr son las mejores en su especie porque ofrecen un correcto nivel de precisión, son relativamente rápidas en términos de verificación, y
lo que es más importante, Schnorr permite la multi-firma. En esencia, se pueden combinar varias firmas en una nueva.
Antiguamente no era posible usar Schnorr en el protocolo Bitcoin. Se incluían otros esquemas de firmas en el protocolo de Bitcoin, como ECDSA, por lo que para cambiarlo hacía falta un hard fork.
Pero con SegWit (Segregated Witness), todos los datos de firmas digitales se movieron a una parte separada de la transacción: Witness no está integrado en el antiguo protocolo de Bitcoin. Casi todas las reglas que se aplican a Witness se pueden cambiar mediante soft forks, incluyendo el esquema usado en firmas.
CapacidadLa parte más beneficiosa de Shnorr es la agregación de múltiples firmas.
Muchas transacciones de Bitcoin incluyen múltiples inputs. Todos esos inputs requieren firmas separadas, lo que significa que todas esas firmas deben ser incluidas en la transacción, todas deben enviarse a la red, y todas deben incluirse en el bloque.
Pero con Schnorr, todos los inputs tan solo requieren una firma combinada que represente a todas esas firmas diferentes.
Schnorr puede brindar la opción de realizar transacciones con un simple esquema multi-usuario.
Esta es una de las ventajas posibles gracias a Schnorr, ya que solo hay que añadir una firma en la transacción, solo hay que enviar una firma a la red, y solo se debe incluir una firma en el bloque. Y esto supone mayor espacio para transacciones.
La cantidad exacta de espacio adicional depende del tipo de transacción que se incluya en el bloque. Pero una aproximación aproximada calculada por
Eric Lombrozo (Desarrollador de Bitcoin Core) muestra que la firma Schnorr puede aumentar la capacidad total en un 40% o más, lo que supone un 60% más que la anteriormente ofrecida por Segregated Witness.
MultifirmaEl aumento de capacidad, como se ha descrito arriba, se aplica a transacciones regulares, porque muchas transacciones incluyen más de un input. Pero los beneficios pueden ser aún más significativos en términos de transacciones multifirma cuando un único dato requiere múltiples firmas (generalmente de distintas personas).
Tamaño de la blockchain de Bitcoin con multifirmas y sin ellas.
Fuente: https://eprint.iacr.org/2018/068.pdfPrivacidadComo se ha mencionado anteriormente, una transacción puede incluir múltiples inputs. En general, estos inputs se refieren a direcciones que son controladas por la misma persona.
Pero el truco para mejorar la privacidad descubierto por Gregory Maxwell (desarrollador de Bitcoin Core), CoinJoin, permite a diferentes usuarios combinar todas sus transacciones en una sola. Esa transacción única incluirá varios inputs de distintos pagadores, que enviarán dinero a varios outputs, pertenecientes a distintos acreedores.
Nota: se puede seguir el debate sobre CoinJoin en este tema de Privacidad y Anonimato Bitcoin, punto 6. CoinJoin.Si se realiza correctamente, CoinJoin es una manera genial para mejorar la privacidad en el protocolo Bitcoin, porque no está claro qué inputs se pagan y qué outputs son correctos.
CoinJoin no es un concepto nuevo. Pero hasta el momento CoinJoin es un poco lioso. Es por eso que a mucha gente no le interesa.
Sin embargo, la firma Schnorr puede añadir nuevas ventajas a CoinJoin. Permite que todos los participantes en transacciones CoinJoin no solo combinen sus transacciones sino que también combinen sus firmas. Y, al hacer esto, el tamaño de transacción será menor que el de todas las transacciones combinadas. Lo que, por otro lado, significa que el
minero cobrará normalmente una menor comisión por procesar la transacción.
Referencias:
- Gregory Maxwell, Andrew Poelstra, Yannick Seurin, & Pieter Wuille, Simple Schnorr Multi-Signatureswith Applications to Bitcoin, https://eprint.iacr.org/2018/068.pdf
- Schnorr, https://en.bitcoin.it/wiki/Schnorr
- Schnorr signature, https://en.wikipedia.org/wiki/Schnorr_signature
- Aaron van Wirdum, The Power of Schnorr: The Signature Algorithm to Increase Bitcoin’s Scale and Privacy,
https://bitcoinmagazine.com/articles/the-power-of-schnorr-the-signature-algorithm-to-increase-bitcoin-s-scale-and-privacy-1460642496
- Alyssa Hertig, Schnorr Is Looking Poised to Become Bitcoin’s Biggest Change Since SegWit,
https://www.coindesk.com/schnorr-is-looking-poised-to-become-bitcoins-biggest-change-since-segwit
- René Pickhardt, Introduction to Schnorr Signatures for Bitcoin & Lightning Network. Schnorr Signature Tutorial Part1,
https://www.youtube.com/watch?v=n5aompcR9W0
- René Pickhardt, MuSig - Multisignature Addresses in Bitcoin. Schnorr Signature Tutorial Part 2,
https://www.youtube.com/watch?v=4v4G8Vtr3Bk
- René Pickhardt, Introduction to Adaptor Signatures via Schnorr Signatures - Schnorr Signature Tutorial Part 3,
https://www.youtube.com/watch?v=a8Pdpz_Jzok
- Yodik Prastya, Bitcoin Cash Upgrade Fitur Pemulihan Dan Keamanan, https://www.seputarforex.com/berita/bitcoin-cash-upgrade-fitur-pemulihan-dan-keamanan-288550-15
- Privacy, https://en.bitcoin.it/wiki/Privacy
- Otras referencias ver post #1
12. MAST (Merklized Abstract Syntax Tree)volver al inicio
Merklized Abstract Syntax Trees (MAST) es una propuesta adicional para el protocolo de Bitcoin que posibilita la implementación de:
- Menores tamaños de transacción.
- Mayor privacidad.
- Contratos Inteligentes más extensos.
Problema: Datos Script no usados.- Satoshi Nakamoto le añadió a Bitcoin una función que permite a los usuarios escribir programas (llamados
scripts) que pueden funcionar como
claves públicas dinámicas y
firmas.
- Cuando especificas un script - lo que se hace por defecto en todas las wallets - el Consenso del Protocolo de Bitcoin no permitirá a nadie gastar tus Bitcoin hasta que un script predeterminado justifique el proceso.
- En la actualidad, todos los scripts deben escribirse en la Blockchain (como un todo).
El origen de MASTLa idea de MAST proviene de dos conceptos preexistentes, que son
Abstract Syntax Trees (AST) o
Árboles de Sintaxis Abstracta y
Merkle Trees o
Árboles de Merkle.
- AST - es una manera de describir un programa dividiéndolo en partes diferenciadas para que sea más fácil analizar y optimizar las funciones de cada una de ellas.
- Árbol de Merkle - permite a un nodo copiar alguna información sin tener que copiar todas las transacciones.
-snip-
Figura de Árbol de Merkle Hay ventajas en el uso de
Árboles de Merkle de cara a verificar un bloque.
Por ejemplo, en la estructura del
Árbol de Merkle de la figura de arriba, para verificar una transacción D, no es necesario que un nodo copie todas las transacciones A, B, C, D y E, sino que es suficiente con copiar la información de C, AB y EEEE para producir una
Merkle root.
Esto ha supuesto que los nodos no tienen que tener una copia completa de la blockchain, lo que se ha dado lugar al llamado
simplified payment verification (SPV) o verificación de pago simplificada.
Referencias: Bitcoin Developer Guide - https://bitcoin.org/en/developer-guide#transaction-data (D.A. Harding - 2015, 12 de enero de 2016) - https://bitcoin.org/en/glossary/simplified-payment-verification.
Ejemplo de Árbol de Sintaxis AbstractaEjemplo de Árbol de MerkleEjemplo de MASTAlicia puede usar los BTC (figura de la izquierda) o, al cabo de tres meses, Pedro (Bob) y Carlos pueden gastar los BTC (imagen de la derecha).
Ventajas de implementar MAST1. Menores tamaños de transacciónPuedes agregar tantos subíndices como quieras.
2. Mayor privacidadLas ventajas de MAST harán que mejore la privacidad cuando se combine con otros métodos como los llamados
generalized threshold trees (Pieter Wuille’s y Gregory Maxwell),
scriptless scripts (Andrew Poelstra) y
discrete log contracts (Thaddeus Dryja).
3. Contratos Inteligentes más extensosBitcoin tiene tres tamaños de byte diferentes que se aplican a cada script en función del desarrollo de su
carga.
Con MAST, no puedes exceder el límite de los bytes
Límite de 10.000 bytes para scripts vacíos, límite de 520 bytes para P2SH, y límite de 10.000 bytes para SegWit.
Referencias:
- https://github.com/jl2012/bips/blob/mast/bip-mast.mediawiki
- https://github.com/bitcoin/bips/blob/master/bip-0114.mediawiki
- http://www.mit.edu/~jlrubin/public/pdfs/858report.pdf
- https://bitcointechtalk.com/what-is-a-bitcoin-merklized-abstract-syntax-tree-mast-33fdf2da5e2f
- https://www.youtube.com/watch?v=Phn_Im2K_PY
- https://bitcoinops.org/en/topics/mast/
- https://themoneymongers.com/merkelized-abstract-syntax-tree-mast/
- https://diyhpl.us/wiki/transcripts/bitcoin-core-dev-tech/2017-09-07-merkleized-abstract-syntax-trees/
- Bitcoin Developer Guide - https://bitcoin.org/en/developer-guide#transaction-data (D.A. Harding - 2015, 12 Januari 2016)
https://bitcoin.org/en/glossary/simplified-payment-verification
- Otras referencias ver post #1