Este es un editorial de opinión de Seth For Privacy, un defensor de la privacidad y presentador del “Podcast de exclusión voluntaria”.
Una de las claves más básicas para mejorar su privacidad en Bitcoin ha sido durante mucho tiempo evitar la reutilización de direcciones para pagos múltiples. Pero si bien hacerlo puede parecer simple en estos días, ya que la mayoría de las billeteras generan automáticamente nuevas direcciones para cada pago, ¿qué hace cuando simplemente necesita aceptar pagos repetidamente, de varias personas o sin una infraestructura compleja?
Aquí es donde entra en juego el concepto de un “código de pago reutilizable”, a veces llamado “Dirección sigilosa”, que permite usar direcciones estáticas simples para pagos repetidos mientras se preserva la privacidad en la cadena al dificultar la vinculación de los pagos.
¿Por qué Bitcoin necesita códigos de pago reutilizables?
Si bien actualmente es posible utilizar una infraestructura más compleja, como el sistema de procesamiento de pagos que ofrece Servidor BTCPaypara aceptar donaciones o pagos sin reutilizar direcciones, la necesidad de configurar un servidor completamente separado junto con un nodo de Bitcoin hace que los casos de uso más simples para recibir pagos sean demasiado complejos para la mayoría de las personas.
Si simplemente desea poder ejecutar una campaña de donación, permitir que sus amigos le envíen bitcoins repetidamente o dejar que otros le den propinas por su trabajo, en este momento generalmente tiene que ejecutar una infraestructura compleja o tener una privacidad extremadamente pobre al usar una dirección estática de Bitcoin. .
Introduce códigos de pago reutilizables, un concepto que data de 2015 con el original dirección sigilosa BIP creado por Peter Todd. Si bien la propuesta original nunca se convirtió oficialmente en un BIP propuesto (a pesar de que se le otorgó el número 63 de BIP), un sucesor, BIP47ha comenzado a ver un aumento de uso en los últimos años en billeteras como Monedero samurái y Monedero Gorrióndos billeteras Bitcoin excelentes y centradas en la privacidad.
¿Cómo terminamos con pagos silenciosos?
Desafortunadamente, BIP47 tiene un serio inconveniente: para que el destinatario sepa que está recibiendo una transacción (¡y así poder gastarla!), el remitente debe crear una transacción especial, llamada “transacción de notificación”, en- cadena para que el destinatario encuentre sus fondos, además a enviar su pago previsto por separado. Si bien esto solo tiene que hacerse una vez por remitente y es la característica principal que permite el uso ligero de la billetera para BIP47, esto tiene serias tarifas, escala y, lo que es más importante para los casos de uso adversario de códigos de pago reutilizables, implicaciones de privacidad.
Agradecidamente, Rubén Somsen lanzó una propuesta extremadamente prometedora en forma de GitHub Gist el 13 de marzo de 2022, titulada “Pagos Silenciosos,” donde la compensación clave se cambia de una transacción de notificación (con resultados problemáticos, como veremos más adelante) a un proceso de escaneo más complicado en el lado de los destinatarios. Silent Payments es otra iteración de la propuesta original de “Stealth Address”, pero aprovecha muchos avances en el escaneo de Bitcoin, tipos de scripts (es decir, Taproot) y algunos trucos ingeniosos.
Si desea profundizar más en los orígenes y la función propuesta de Silent Payments, le recomiendo leer el excelente artículo de Shinobi, “Bitcoin Silent Payments And Secret Blinding Keys”, pero lo analizaremos de una manera muy simplificada. muy por debajo también.
Cómo funcionan los pagos silenciosos, simplificado
Antes de profundizar demasiado en por qué estoy entusiasmado con Silent Payments, es importante que comprenda en un nivel muy simple cómo funcionan Silent Payments tanto para el remitente como para el destinatario.
para el remitente
Cuando alguien quiere enviar fondos a una dirección de Silent Payment, en la práctica todo lo que necesita hacer es escanear o copiar/pegar el código de pago en su billetera favorita (suponiendo que sea compatible) y enviar el pago como de costumbre. Pero, ¿qué está sucediendo exactamente detrás de escena?
Cuando el remitente ingresa la dirección de Silent Payment en su billetera, su billetera combinará tres claves para crear una dirección única y única desde la que solo el destinatario puede gastar. Esta dirección única se crea combinando la clave pública (o “dirección”, en términos sencillos) de una de las entradas que el remitente quiere pasar al destinatario, la clave pública del destinatario (contenida en la dirección de pago silencioso), y una clave “secreta compartida” que genera el remitente y que solo conocen el remitente y el destinatario. Gracias a algo conocido como propiedad “conmutativa” en criptografía, el remitente puede combinar estas claves pero no puede gastar desde la dirección resultanteya que no conocen la clave privada del destinatario (por supuesto).
Cuando el remitente combina estas tres claves, genera una nueva clave pública (o dirección) y envía los fondos previstos a esta nueva dirección que solo controla el destinatario. En cadena, esta transacción parece exactamente como cualquier otro gasto de un tipo y guión similar, y no hay un factor distintivo que haga evidente a los observadores externos que se utilizó un Pago Silencioso, y mucho menos quién es el propietario de la dirección de Pago Silencioso.
para el destinatario
Una vez que llegamos al destinatario, vemos dónde se presenta la compensación principal para Silent Payments. Si recuerda que el remitente usa la clave pública de una entrada que se gasta para generar la dirección única y única, es posible que se pregunte: “¿Cómo sabe el destinatario que se le han enviado fondos y a qué dirección?”
Esta pregunta está en el corazón de la propuesta de Silent Payments y significa que los destinatarios tienen que hacer un escaneo relativamente costoso de cada transacción en la cadena de bloques de Bitcoin después de que crearon su dirección de pago silencioso. Este escaneo le permite al destinatario ver si una clave pública de entrada más un secreto compartido generado usando su dirección de pago silencioso y una clave pública de salida en cualquier transacción coincide correctamente con sus claves privadas y, de ser así, agregarla a su billetera.
Este escaneo es bastante costoso en comparación con el escaneo de billetera Bitcoin estándar, ya que no puede simplemente comparar una lista de direcciones derivadas de su billetera con una lista de salidas de transacciones para obtener el saldo de su billetera. En su lugar, debe revisar cada transacción, calcular el secreto compartido para cada entrada y compararlo con las salidas, algo que Somsen comparó con “verificar cada firma dos veces, en lugar de una” en “Explicación de Bitcoin”.
Idealmente, este escaneo se realizará durante la descarga del bloque inicial (la primera vez que sincroniza toda la cadena de bloques de Bitcoin) o una pieza de software independiente que descargue el escaneo de su billetera y nodo de Bitcoin.
Optimización del tiempo de escaneo para el destinatario
Si bien este escaneo es bastante costoso desde el punto de vista computacional, se puede hacer más eficiente sin sacrificar la privacidad o la fungibilidad a través de tres optimizaciones principales:
- Cree una fecha de “cumpleaños” cuando cree una dirección de pago silencioso y guárdela, de modo que cuando necesite restaurar, pueda comenzar a escanear solo desde ese bloque hacia adelante en la cadena, en lugar de desde el bloque de génesis.
- Verifique solo las salidas Taproot, ya que muy pocas salidas en la cadena son actualmente Pay-to-Taproot (“P2TR”) esto eliminará un gran porcentaje de transacciones y reducirá en gran medida el tiempo de escaneo. Idealmente, esto será menos útil a medida que se use más Taproot, pero probablemente será una optimización extremadamente efectiva durante algún tiempo.
- Solo verifique el conjunto de UTXO en lugar de escanear cada transacción histórica, ya que solo le preocupan las salidas nuevas, entrantes y no gastadas destinadas a su dirección de pago silencioso. Esto tiene el inconveniente de no proporcionar el historial de transacciones y requeriría una base de datos adicional sobre los métodos normales.
Donde los pagos silenciosos encajan mejor que PayNyms
Ahora, al quid de la cuestión: si ya tenemos PayNyms (BIP47) y actualmente están viendo una adopción creciente, ¿por qué necesitamos algo nuevo? Desafortunadamente, el problema persistente con BIP47 sigue siendo la transacción de notificación por dos razones principales y, en mi opinión, es este problema el que hace que Silent Payments sea superior para casos de uso contradictorio.
En primer lugar, requerir una transacción de notificación hace que los pagos únicos sean extremadamente ineficientes, ya que debe enviar dos transacciones para enviar un solo pago. Para muchos de los casos de uso común de un código de pago reutilizable, este es un inconveniente prohibitivo, ya que incurre en tarifas en cadena mucho mayores e infla la cadena de bloques. En segundo lugar, esta transacción de notificación también tiene un masivo inconveniente de privacidad, ya que cualquier persona en el mundo con una conexión a Internet puede mirar la cadena de bloques de Bitcoin y determinar qué grupos de billeteras (y cuántos) se han “conectado” a un PayNym determinado.
Tomemos como ejemplo el escenario de protesta de los camioneros “Freedom Convoy” que ocurrió en Canadá en febrero. Si aquellos que habían recolectado y distribuido donaciones de bitcoin para los manifestantes hubieran usado un BIP47 PayNym para recolectar esas donaciones, sería evidente en la cadena qué grupos de billeteras se habían conectado a PayNym y, por lo tanto, es muy probable que cada una de esas billeteras enviara una donación. al “Convoy de la libertad”, que permite a los gobiernos y los intercambios tomar medidas enérgicas contra quienes donaron.
Si bien Bitcoin evitaría la simple incautación de los fondos de los donantes (a diferencia de GoFundMe), si estos donantes alguna vez conectaron sus billeteras en cadena con una cuenta de intercambio de conocimiento de su cliente (KYC) o sus identidades, sus gobiernos locales podrían llamar a la puerta para obtener una explicación. o incluso enjuiciarlos directamente.
Con estos problemas críticos, es mi opinión que BIP47 PayNyms simplemente no es suficiente para los casos de uso adversarios comunes de códigos de pago reutilizables, razón por la cual estoy tan entusiasmado con esta nueva propuesta. Mientras Pagos Silenciosos haría aumentan la complejidad de recibir fondos en un código de pago reutilizable en lugar de PayNym, las ganancias de privacidad, eficiencia y falta de interactividad resultantes valen la pena y los convierten en el paso ideal para los códigos de pago reutilizables en Bitcoin para la mayoría de los casos de uso, algo que es necesitado desesperadamente.
Dicho esto, PayNyms cumple con un caso de uso muy específico: permiten códigos de pago reutilizables. sin que ejecutando un nodo completo de Bitcoin. En situaciones en las que las transacciones adicionales y los problemas de privacidad son menos relevantes que el costo de ejecutar un nodo completo (como destinatario), PayNyms aún puede tener un propósito útil como un método excelente para códigos de pago reutilizables al tiempo que conserva los beneficios de la experiencia del usuario de una luz cartera. También existe la posibilidad de métodos futuros alternativos para manejar la transacción de notificación que descargaría la transacción de notificación a un tercero, reduciendo algunas de las preocupaciones de privacidad en la cadena (pero introduciendo un tercero de confianza) que se están explorando. aquí.
Samourai Wallet actualmente usa una variante de esto para utilizar PayNyms para transacciones colaborativas sin necesidad de una transacción de notificación primero.
¿Cuáles son los siguientes pasos?
Si bien los Pagos Silenciosos son extremadamente emocionantes, es importante comprender que estos son todavía los primeros días de la propuesta. La propuesta Gist en GitHub se está revisando y comentando ampliamente, y muchas personas en el espacio están analizando muchos de los enfoques clave para probarlos, optimizarlos y mejorarlos en el camino. Los principales elementos de exploración en curso para Silent Payments son puntos de referencia detallados de varios enfoques y la búsqueda de formas de optimizar mejor el escaneo sin pérdida de privacidad o fungibilidad.
Si es un usuario o desarrollador más técnico: Cuantas más personas podamos hacer que prueben, comparen y revisen los conceptos antes en el ciclo de vida de esta propuesta, mejor será a largo plazo, así que asegúrese de dar la Gist una mirada en GitHub si tienes una inclinación más técnica.
Si es menos técnico, asegúrese de estar atento aquí en Bitcoin Magazine para futuros artículos, y brinde el excelente episodio explicativo de “Bitcoin, explicado” sobre Pagos silenciosos y el presentación de Ruben Somsen sobre Silent Payments mira o escucha para obtener una comprensión más detallada de cómo funciona todo esto y los enfoques que se toman.
Y por último, solo quería decir que siempre es emocionante ver que se realizan más desarrollos e investigaciones para ayudar a impulsar la privacidad de Bitcoin, un área que a menudo no se considera “sexy”, pero que es absolutamente vital para permitir la resistencia a la censura y haciendo que Bitcoin sea verdaderamente “dinero de la libertad”.
Un agradecimiento especial a Ruben Somsen y TdevD de Samourai Wallet por su tiempo para revisar y dar su opinión sobre el artículo.
Esta es una publicación invitada de Seth For Privacy. Las opiniones expresadas son totalmente propias y no reflejan necesariamente las de BTC Inc o Bitcoin Magazine.