CryptoNote v2.0

Por Nicolas van Saberhagen · 2013

El artículo presentado aquí es el whitepaper CryptoNote v2.0 de Nicolas van Saberhagen (2013), que describe los fundamentos criptográficos sobre los que se construye Monero. No es un whitepaper específico de Monero — Monero se lanzó en 2014 como una bifurcación de la implementación de referencia de CryptoNote (Bytecoin) y desde entonces ha evolucionado significativamente más allá del protocolo original.

Introducción

“Bitcoin” [1] ha sido una implementación exitosa del concepto de efectivo electrónico p2p. ambos Los profesionales y el público en general han llegado a apreciar la conveniente combinación de transacciones públicas y proof-of-work como modelo de confianza. Hoy en día, la base de usuarios de efectivo electrónico está creciendo a un ritmo constante; Los clientes se sienten atraídos por las tarifas bajas y el anonimato proporcionado. por el dinero electrónico y los comerciantes valoran su emisión prevista y descentralizada. Bitcoin tiene demostrado efectivamente que el efectivo electrónico puede ser tan simple como el papel moneda y tan conveniente como tarjetas de crédito. Desafortunadamente, Bitcoin sufre varias deficiencias. Por ejemplo, el sistema distribuido La naturaleza es inflexible, impidiendo la implementación de nuevas funciones hasta que casi todos los usuarios de la red actualicen sus clientes. Algunas fallas críticas que no se pueden solucionar rápidamente disuaden a Bitcoin propagación generalizada. En modelos tan inflexibles, es más eficiente implementar un nuevo proyecto en lugar de arreglar perpetuamente el proyecto original. En este artículo estudiamos y proponemos soluciones a las principales deficiencias de Bitcoin. creemos que un sistema que tenga en cuenta las soluciones que proponemos conducirá a una competencia sana entre diferentes sistemas de efectivo electrónico. También proponemos nuestro propio efectivo electrónico, “CryptoNote”, un nombre que enfatiza el próximo avance en efectivo electrónico.

Introduction

« Bitcoin » [1] est une mise en œuvre réussie du concept de monnaie électronique p2p. Les deux les professionnels et le grand public en sont venus à apprécier la combinaison pratique de transactions publiques et proof-of-work comme modèle de confiance. Aujourd'hui, la base d'utilisateurs de la monnaie électronique croît à un rythme soutenu ; les clients sont attirés par les frais peu élevés et l’anonymat assuré par la monnaie électronique et les commerçants valorisent son émission prévue et décentralisée. Bitcoin a a prouvé que l’argent électronique peut être aussi simple que le papier-monnaie et aussi pratique que le papier-monnaie. cartes de crédit. Malheureusement, Bitcoin souffre de plusieurs déficiences. Par exemple, le système distribué la nature est inflexible, empêchant la mise en œuvre de nouvelles fonctionnalités jusqu'à ce que presque tous les utilisateurs du réseau mettent à jour leurs clients. Certaines failles critiques qui ne peuvent pas être corrigées rapidement découragent les Bitcoin propagation généralisée. Dans des modèles aussi inflexibles, il est plus efficace de déployer un nouveau projet plutôt que de réparer perpétuellement le projet original. Dans cet article, nous étudions et proposons des solutions aux principales déficiences de Bitcoin. Nous croyons qu'un système prenant en compte les solutions que nous proposons conduira à une saine concurrence entre les différents systèmes de monnaie électronique. Nous proposons également notre propre monnaie électronique, « CryptoNote », un nom qui souligne la prochaine avancée dans le domaine de la monnaie électronique.

Bitcoin Inconvenientes y posibles soluciones

2 Bitcoin inconvenientes y algunas posibles soluciones 2.1 Trazabilidad de transacciones La privacidad y el anonimato son los aspectos más importantes del efectivo electrónico. Pagos entre pares buscan ocultarse de la vista de terceros, una clara diferencia en comparación con los tradicionales banca. En particular, T. Okamoto y K. Ohta describieron seis criterios para el efectivo electrónico ideal, que incluía “privacidad: la relación entre el usuario y sus compras debe ser imposible de rastrear por cualquiera” [30]. De su descripción, derivamos dos propiedades que un totalmente anónimo El modelo de efectivo electrónico debe cumplir para cumplir con los requisitos descritos por Okamoto. y Ohta: Irrastreabilidad: para cada transacción entrante todos los posibles remitentes son equiprobables. Desvinculación: para dos transacciones salientes es imposible demostrar que fueron enviadas a la misma persona. Desafortunadamente, Bitcoin no cumple con el requisito de imposible trazabilidad. Dado que todas las transacciones que tienen lugar entre los participantes de la red son públicas, cualquier transacción puede ser 1 CriptoNota v 2.0 Nicolas van Saberhagen 17 de octubre de 2013 1 Introducción “Bitcoin” [1] ha sido una implementación exitosa del concepto de efectivo electrónico p2p. ambos Los profesionales y el público en general han llegado a apreciar la conveniente combinación de transacciones públicas y proof-of-work como modelo de confianza. Hoy en día, la base de usuarios de efectivo electrónico está creciendo a un ritmo constante; Los clientes se sienten atraídos por las tarifas bajas y el anonimato proporcionado. por el dinero electrónico y los comerciantes valoran su emisión prevista y descentralizada. Bitcoin tiene demostrado efectivamente que el efectivo electrónico puede ser tan simple como el papel moneda y tan conveniente como tarjetas de crédito. Desafortunadamente, Bitcoin sufre varias deficiencias. Por ejemplo, el sistema distribuido La naturaleza es inflexible, impidiendo la implementación de nuevas funciones hasta que casi todos los usuarios de la red actualicen sus clientes. Algunas fallas críticas que no se pueden solucionar rápidamente disuaden a Bitcoin propagación generalizada. En modelos tan inflexibles, es más eficiente implementar un nuevo proyecto en lugar de arreglar perpetuamente el proyecto original. En este artículo estudiamos y proponemos soluciones a las principales deficiencias de Bitcoin. creemos que un sistema que tenga en cuenta las soluciones que proponemos conducirá a una competencia sana entre diferentes sistemas de efectivo electrónico. También proponemos nuestro propio efectivo electrónico, “CryptoNote”, un nombre que enfatiza el próximo avance en efectivo electrónico. 2 Bitcoin inconvenientes y algunas posibles soluciones 2.1 Trazabilidad de transacciones La privacidad y el anonimato son los aspectos más importantes del efectivo electrónico. Pagos entre pares buscan ocultarse de la vista de terceros, una clara diferencia en comparación con los tradicionales banca. En particular, T. Okamoto y K. Ohta describieron seis criterios para el efectivo electrónico ideal, que incluía “privacidad: la relación entre el usuario y sus compras debe ser imposible de rastrear por cualquiera” [30]. De su descripción, derivamos dos propiedades que un totalmente anónimo El modelo de efectivo electrónico debe cumplir para cumplir con los requisitos descritos por Okamoto. y Ohta: Irrastreabilidad: para cada transacción entrante todos los posibles remitentes son equiprobables. Desvinculación: para dos transacciones salientes es imposible demostrar que fueron enviadas a la misma persona. Desafortunadamente, Bitcoin no cumple con el requisito de imposible trazabilidad. Dado que todas las transacciones que tienen lugar entre los participantes de la red son públicas, cualquier transacción puede ser 1 3 Bitcoin definitivamente falla en "irrastreabilidad". Cuando te envío BTC, la billetera desde donde se envía está irrevocablemente estampado en el blockchain. No hay dudas sobre quién envió esos fondos, porque sólo el conocedor de las claves privadas puede enviarlas.rastreado inequívocamente hasta un origen único y un destinatario final. Incluso si dos participantes intercambian fondos de manera indirecta, un método de búsqueda de caminos diseñado adecuadamente revelará el origen y destinatario final. También se sospecha que Bitcoin no satisface la segunda propiedad. Algunos investigadores declaró ([33, 35, 29, 31]) que un análisis cuidadoso de blockchain puede revelar una conexión entre los usuarios de la red Bitcoin y sus transacciones. Aunque existen varios métodos en disputa [25], se sospecha que se puede extraer mucha información personal oculta del base de datos pública. El hecho de que Bitcoin no cumpla con las dos propiedades descritas anteriormente nos lleva a concluir que es no es un sistema de efectivo electrónico anónimo sino pseudoanónimo. Los usuarios desarrollaron rápidamente soluciones para superar esta deficiencia. Dos soluciones directas fueron los “servicios de lavado” [2] y el desarrollo de métodos distribuidos [3, 4]. Ambas soluciones se basan en la idea de mezclar varias transacciones públicas y enviarlas a través de alguna dirección intermediaria; que a su vez sufre el inconveniente de requerir un tercero de confianza. Recientemente, I. Miers et al. propusieron un esquema más creativo. [28]: “Ceromoneda”. Cerocoin utiliza acumuladores criptográficos unidireccionales y pruebas de conocimiento cero que permiten a los usuarios “convertir” bitcoins en zerocoins y gastarlos usando prueba anónima de propiedad en lugar de firmas digitales explícitas basadas en clave pública. Sin embargo, tales pruebas de conocimiento tienen una constante pero tamaño inconveniente: alrededor de 30 kb (según los límites actuales Bitcoin), lo que hace que la propuesta poco práctico. Los autores admiten que es poco probable que el protocolo sea aceptado alguna vez por la mayoría de los Bitcoin usuarios [5]. 2.2 La función proof-of-work El creador de Bitcoin, Satoshi Nakamoto, describió el algoritmo de toma de decisiones por mayoría como “una CPU, un voto” y utilizó una función de fijación de precios vinculada a la CPU (doble SHA-256) para su proof-of-work esquema. Dado que los usuarios votan por el historial único de transacciones orden [1], la razonabilidad y La coherencia de este proceso son condiciones críticas para todo el sistema. La seguridad de este modelo adolece de dos inconvenientes. En primer lugar, requiere el 51% de la capacidad de la red. el poder minero esté bajo el control de usuarios honestos. En segundo lugar, el progreso del sistema (corrección de errores, correcciones de seguridad, etc.) requieren que la inmensa mayoría de los usuarios apoyen y acepten las cambios (esto ocurre cuando los usuarios actualizan su software de billetera) [6]. Finalmente esta misma votación El mecanismo también se utiliza para encuestas colectivas sobre la implementación de algunas características [7]. Esto nos permite conjeturar las propiedades que debe satisfacer el proof-of-work función de fijación de precios. Esta función no debe permitir que un participante de la red tenga una influencia significativa ventaja sobre otro participante; requiere una paridad entre hardware común y alta costo de los dispositivos personalizados. De los ejemplos recientes [8], podemos ver que la función SHA-256 usó en la arquitectura Bitcoin no posee esta propiedad a medida que la minería se vuelve más eficiente en GPU y dispositivos ASIC en comparación con CPU de gama alta. Por lo tanto, Bitcoin crea condiciones favorables para una gran brecha entre el poder de voto de participantes, ya que viola el principio de "una CPU, un voto", ya que los propietarios de GPU y ASIC poseen un poder de voto mucho mayor en comparación con los propietarios de CPU. Es un ejemplo clásico de la Principio de Pareto donde el 20% de los participantes de un sistema controlan más del 80% de los votos. Se podría argumentar que tal desigualdad no es relevante para la seguridad de la red ya que no es el pequeño número de participantes controla la mayoría de los votos, pero la honestidad de estos participantes que importan. Sin embargo, tal argumento es algo defectuoso ya que es más bien la posibilidad de que aparezca hardware especializado barato en lugar de la honestidad de los participantes, que representa una amenaza. Para demostrar esto, tomemos el siguiente ejemplo. Supongamos que un malévolo El individuo obtiene un poder minero significativo al crear su propia granja minera a través del método barato. 2 rastreado inequívocamente hasta un origen único y un destinatario final. Incluso si dos participantes intercambian fondos de manera indirecta, un método de búsqueda de caminos diseñado adecuadamente revelará el origen y destinatario final. También se sospecha que Bitcoin no satisface la segunda propiedad. Algunos investigadores declaró ([33, 35, 29, 31]) que un análisis cuidadoso de blockchain puede revelar una conexión entre los usuarios de la red Bitcoin y sus transacciones. Aunque existen varios métodos recuestionado [25], se sospecha que se puede extraer mucha información personal oculta del base de datos pública. El hecho de que Bitcoin no cumpla con las dos propiedades descritas anteriormente nos lleva a concluir que es no es un sistema de efectivo electrónico anónimo sino pseudoanónimo. Los usuarios desarrollaron rápidamente soluciones para superar esta deficiencia. Dos soluciones directas fueron los “servicios de lavado” [2] y el desarrollo de métodos distribuidos [3, 4]. Ambas soluciones se basan en la idea de mezclar varias transacciones públicas y enviarlas a través de alguna dirección intermediaria; que a su vez sufre el inconveniente de requerir un tercero de confianza. Recientemente, I. Miers et al. propusieron un esquema más creativo. [28]: “Ceromoneda”. Cerocoin utiliza acumuladores criptográficos unidireccionales y pruebas de conocimiento cero que permiten a los usuarios “convertir” bitcoins en zerocoins y gastarlos usando prueba anónima de propiedad en lugar de firmas digitales explícitas basadas en clave pública. Sin embargo, tales pruebas de conocimiento tienen una constante pero tamaño inconveniente: alrededor de 30 kb (según los límites actuales Bitcoin), lo que hace que la propuesta poco práctico. Los autores admiten que es poco probable que el protocolo sea aceptado alguna vez por la mayoría de los Bitcoin usuarios [5]. 2.2 La función proof-of-work El creador de Bitcoin, Satoshi Nakamoto, describió el algoritmo de toma de decisiones por mayoría como “una CPU, un voto” y utilizó una función de fijación de precios vinculada a la CPU (doble SHA-256) para su proof-of-work esquema. Dado que los usuarios votan por el historial único de transacciones orden [1], la razonabilidad y La coherencia de este proceso son condiciones críticas para todo el sistema. La seguridad de este modelo adolece de dos inconvenientes. En primer lugar, requiere el 51% de la capacidad de la red. el poder minero esté bajo el control de usuarios honestos. En segundo lugar, el progreso del sistema (corrección de errores, correcciones de seguridad, etc.) requieren que la inmensa mayoría de los usuarios apoyen y acepten las cambios (esto ocurre cuando los usuarios actualizan su software de billetera) [6]. Finalmente esta misma votación El mecanismo también se utiliza para encuestas colectivas sobre la implementación de algunas características [7]. Esto nos permite conjeturar las propiedades que debe satisfacer el proof-of-work función de fijación de precios. Esta función no debe permitir que un participante de la red tenga una influencia significativa ventaja sobre otro participante; requiere una paridad entre hardware común y alta costo de los dispositivos personalizados. De los ejemplos recientes [8], podemos ver que la función SHA-256 usó en la arquitectura Bitcoin no posee esta propiedad a medida que la minería se vuelve más eficiente en GPU y dispositivos ASIC en comparación con CPU de gama alta. Por lo tanto, Bitcoin crea condiciones favorables para una gran brecha entre el poder de voto de participantes, ya que viola el principio de "una CPU, un voto", ya que los propietarios de GPU y ASIC poseen un poder de voto mucho mayor en comparación con los propietarios de CPU. Es un ejemplo clásico de la Principio de Pareto donde el 20% de los participantes de un sistema controlan más del 80% de los votos. Se podría argumentar que tal desigualdad no es relevante para la seguridad de la red ya que no es el pequeño número de participantes controla la mayoría de los votos, pero la honestidad de estos participantes que importan. Sin embargo, tal argumento es algo defectuoso ya que es más bien la posibilidad de que aparezca hardware especializado barato en lugar de la honestidad de los participantes, que representa una amenaza. Para demostrar esto, tomemos el siguiente ejemplo. Supongamos que un malévolo El individuo obtiene un poder minero significativo al crear su propia granja minera a través del método barato. 2 4 Presumiblemente, si cada usuario contribuye a su propio anonimato generando siempre una nueva dirección por CADA pago recibido (lo cual es absurdo pero técnicamente es la forma "correcta" de hacerlo), y si cada usuario ayudara al anonimato de los demás insistiendo en que nunca envíen fondos a la misma dirección BTC dos veces, entonces Bitcoin seguiría solo circunstancialmente pasando el prueba de desvinculación. ¿Por qué? Los datos de los consumidores se pueden utilizar para calcular una cantidad asombrosa sobre las personas todo el tiempo. Véase, por ejemplo, http://www.applieddatalabs.com/content/target-knows-it-shows Ahora, imaginemos que esto ocurre dentro de 20 años y además imaginemos que Target no sólo supiera sobre sus hábitos de compra en Target, pero habían estado extrayendo el blockchain para TODO TUS COMPRAS PERSONALES CON TU COINBASE WALLET DEL PASADO DOCE AÑOS. Dirán: "oye amigo, quizás quieras comprar un medicamento para la tos esta noche, no lo harás". Me sentiré bien mañana." Es posible que este no sea el caso si la clasificación multipartita se aprovecha correctamente. Véase, por ejemplo, estepublicación de blog: http://blog.ezyang.com/2012/07/secure-multiparty-bitcoin-anonymization/ No estoy totalmente convencido de las matemáticas de eso, pero... un papel a la vez, ¿verdad? Se necesita cita. Mientras que el protocolo Zerocoin (independiente) puede ser insuficiente, el protocolo Zerocash El protocolo parece haber implementado transacciones de 1 kb. Ese proyecto cuenta con el apoyo de los ejércitos estadounidense e israelí, por supuesto, así que quién sabe acerca de su solidez. por el otro Por otro lado, nadie quiere más que los militares poder gastar fondos sin supervisión. http://zerocash-project.org/ No estoy convencido... ver, por ejemplo, http://fc14.ifca.ai/bitcoin/papers/bitcoin14_submission_12.pdf Citando a un desarrollador de Cryptonote, Maurice Planck (presumiblemente un seudónimo) de Cryptonote foros: "Cerocoin, Zerocash. Esta es la tecnología más avanzada, debo admitir. Si, la cita Lo anterior proviene del análisis de la versión anterior del protocolo. Que yo sepa, no es 288, pero 384 bytes, pero de todos modos esta es una buena noticia. Usaron una técnica completamente nueva llamada SNARK, que tiene ciertas desventajas: por ejemplo, Gran base de datos inicial de parámetros públicos necesarios para crear una firma (más de 1 GB) y Tiempo significativo requerido para crear una transacción (más de un minuto). Finalmente, están usando un criptografía joven, que he mencionado como una idea discutible: https://forum.cryptonote.org/viewtopic.php?f= " - Maurice P. jueves 03 de abril de 2014 7:56 pm Una función que se realiza en la CPU y no es adecuada para GPU, FPGA o ASIC cálculo. El "rompecabezas" utilizado en proof-of-work se conoce como función de fijación de precios, función de costos o función de rompecabezas.

rastreado inequívocamente hasta un origen único y un destinatario final. Incluso si dos participantes intercambian fondos de manera indirecta, un método de búsqueda de caminos diseñado adecuadamente revelará el origen y destinatario final. También se sospecha que Bitcoin no satisface la segunda propiedad. Algunos investigadores declaró ([33, 35, 29, 31]) que un análisis cuidadoso de blockchain puede revelar una conexión entre los usuarios de la red Bitcoin y sus transacciones. Aunque existen varios métodos en disputa [25], se sospecha que se puede extraer mucha información personal oculta del base de datos pública. El hecho de que Bitcoin no cumpla con las dos propiedades descritas anteriormente nos lleva a concluir que es no es un sistema de efectivo electrónico anónimo sino pseudoanónimo. Los usuarios desarrollaron rápidamente soluciones para superar esta deficiencia. Dos soluciones directas fueron “servicios de lavado” [2] y el desarrollo de métodos distribuidos [3, 4]. Ambas soluciones se basan en la idea de mezclar varias transacciones públicas y enviarlas a través de alguna dirección intermediaria; que a su vez sufre el inconveniente de requerir un tercero de confianza. Recientemente, I. Miers et al. propusieron un esquema más creativo. [28]: “Ceromoneda”. Cerocoin utiliza acumuladores criptográficos unidireccionales y pruebas de conocimiento cero que permiten a los usuarios “convertir” bitcoins en zerocoins y gastarlos usando prueba anónima de propiedad en lugar de firmas digitales explícitas basadas en clave pública. Sin embargo, tales pruebas de conocimiento tienen una constante pero tamaño inconveniente: alrededor de 30 kb (según los límites actuales de Bitcoin), lo que hace que la propuesta poco práctico. Los autores admiten que es poco probable que el protocolo sea aceptado alguna vez por la mayoría de los Bitcoin usuarios [5]. 2.2 La función proof-of-work El creador de Bitcoin, Satoshi Nakamoto, describió el algoritmo de toma de decisiones por mayoría como “una CPU, un voto” y utilizó una función de fijación de precios vinculada a la CPU (doble SHA-256) para su proof-of-work esquema. Dado que los usuarios votan por el historial único de transacciones orden [1], la razonabilidad y La coherencia de este proceso son condiciones críticas para todo el sistema. La seguridad de este modelo adolece de dos inconvenientes. En primer lugar, requiere el 51% de la capacidad de la red. el poder minero esté bajo el control de usuarios honestos. En segundo lugar, el progreso del sistema (corrección de errores, correcciones de seguridad, etc.) requieren que la inmensa mayoría de los usuarios apoyen y acepten las cambios (esto ocurre cuando los usuarios actualizan su software de billetera) [6]. Finalmente esta misma votación El mecanismo también se utiliza para encuestas colectivas sobre la implementación de algunas características [7]. Esto nos permite conjeturar las propiedades que debe satisfacer el proof-of-work función de fijación de precios. Esta función no debe permitir que un participante de la red tenga una influencia significativa ventaja sobre otro participante; requiere una paridad entre hardware común y alta costo de los dispositivos personalizados. De los ejemplos recientes [8], podemos ver que la función SHA-256 usó en la arquitectura Bitcoin no posee esta propiedad a medida que la minería se vuelve más eficiente en GPU y dispositivos ASIC en comparación con CPU de gama alta. Por lo tanto, Bitcoin crea condiciones favorables para una gran brecha entre el poder de voto de participantes, ya que viola el principio de "una CPU, un voto", ya que los propietarios de GPU y ASIC poseen un poder de voto mucho mayor en comparación con los propietarios de CPU. Es un ejemplo clásico de la Principio de Pareto donde el 20% de los participantes de un sistema controlan más del 80% de los votos. Se podría argumentar que tal desigualdad no es relevante para la seguridad de la red ya que no es el pequeño número de participantes controla la mayoría de los votos, pero la honestidad de estos participantes que importan. Sin embargo, tal argumento es algo defectuoso ya que es más bien la posibilidad de que aparezca hardware especializado barato en lugar de la honestidad de los participantes, que representa una amenaza. Para demostrar esto, tomemos el siguiente ejemplo. Supongamos que un malévolo El individuo obtiene un poder minero significativo al crear su propia granja minera a través del método barato. 2 rastreado inequívocamente hasta un origen único y un destinatario final. Incluso si dos participantes intercambian fondos de manera indirecta, un método de búsqueda de caminos diseñado adecuadamente revelará el origen y destinatario final. También se sospecha que Bitcoin no satisface la segunda propiedad. Algunos investigadores declaró ([33, 35, 29, 31]) que un análisis cuidadoso de blockchain puede revelar una conexión entre los usuarios de la red Bitcoin y sus transacciones. Aunque existen varios métodos recuestionado [25], se sospecha que se puede extraer mucha información personal oculta del base de datos pública. El hecho de que Bitcoin no cumpla con las dos propiedades descritas anteriormente nos lleva a concluir que es no es un sistema de efectivo electrónico anónimo sino pseudoanónimo. Los usuarios desarrollaron rápidamente soluciones para superar esta deficiencia. Dos soluciones directas fueron “servicios de lavado” [2] y el desarrollo de métodos distribuidos [3, 4]. Ambas soluciones se basan en la idea de mezclar varias transacciones públicas y enviarlas a través de alguna dirección intermediaria; que a su vez sufre el inconveniente de requerir un tercero de confianza. Recientemente, I. Miers et al. propusieron un esquema más creativo. [28]: “Ceromoneda”. Cerocoin utiliza acumuladores criptográficos unidireccionales y pruebas de conocimiento cero que permiten a los usuarios “convertir” bitcoins en zerocoins y gastarlos usando prueba anónima de propiedad en lugar de firmas digitales explícitas basadas en clave pública. Sin embargo, tales pruebas de conocimiento tienen una constante pero tamaño inconveniente: alrededor de 30 kb (según los límites actuales de Bitcoin), lo que hace que la propuesta poco práctico. Los autores admiten que es poco probable que el protocolo sea aceptado alguna vez por la mayoría de los Bitcoin usuarios [5]. 2.2 La función proof-of-work El creador de Bitcoin, Satoshi Nakamoto, describió el algoritmo de toma de decisiones por mayoría como “una CPU, un voto” y utilizó una función de fijación de precios vinculada a la CPU (doble SHA-256) para su proof-of-work. esquema. Dado que los usuarios votan por el historial único de transacciones orden [1], la razonabilidad y La coherencia de este proceso son condiciones críticas para todo el sistema. La seguridad de este modelo adolece de dos inconvenientes. En primer lugar, requiere el 51% de la capacidad de la red. el poder minero esté bajo el control de usuarios honestos. En segundo lugar, el progreso del sistema (corrección de errores, correcciones de seguridad, etc.) requieren que la inmensa mayoría de los usuarios apoyen y acepten las cambios (esto ocurre cuando los usuarios actualizan su software de billetera) [6]. Finalmente esta misma votación El mecanismo también se utiliza para encuestas colectivas sobre la implementación de algunas características [7]. Esto nos permite conjeturar las propiedades que debe satisfacer el proof-of-work función de fijación de precios. Esta función no debe permitir que un participante de la red tenga una influencia significativa ventaja sobre otro participante; requiere una paridad entre hardware común y alta costo de los dispositivos personalizados. De los ejemplos recientes [8], podemos ver que la función SHA-256 usó en la arquitectura Bitcoin no posee esta propiedad a medida que la minería se vuelve más eficiente en GPU y dispositivos ASIC en comparación con CPU de gama alta. Por lo tanto, Bitcoin crea condiciones favorables para una gran brecha entre el poder de voto de participantes, ya que viola el principio de "una CPU, un voto", ya que los propietarios de GPU y ASIC poseen un poder de voto mucho mayor en comparación con los propietarios de CPU. Es un ejemplo clásico de la Principio de Pareto donde el 20% de los participantes de un sistema controlan más del 80% de los votos. Se podría argumentar que tal desigualdad no es relevante para la seguridad de la red ya que no es el pequeño número de participantes controla la mayoría de los votos, pero la honestidad de estos participantes que importan. Sin embargo, tal argumento es algo defectuoso ya que es más bien la posibilidad de que aparezca hardware especializado barato en lugar de la honestidad de los participantes, que representa una amenaza. Para demostrar esto, tomemos el siguiente ejemplo. Supongamos que un malévolo El individuo obtiene un poder minero significativo al crear su propia granja minera a través del método barato. 2 Comentarios en la página 2

Bitcoin Inconvénients et solutions possibles

2 Bitcoin inconvénients et quelques solutions possibles 2.1 Traçabilité des transactions La confidentialité et l’anonymat sont les aspects les plus importants de l’argent électronique. Paiements peer-to-peer cherchent à être cachés à la vue des tiers, une différence nette par rapport aux systèmes traditionnels. bancaire. En particulier, T. Okamoto et K. Ohta ont décrit six critères de la monnaie électronique idéale, qui incluait « la vie privée : la relation entre l'utilisateur et ses achats doit être introuvable par n’importe qui » [30]. De leur description, nous avons dérivé deux propriétés dont une personne totalement anonyme le modèle de monnaie électronique doit satisfaire afin de se conformer aux exigences décrites par Okamoto et Ohta : Intraçabilité : pour chaque transaction entrante, tous les expéditeurs possibles sont équiprobables. Inassociation : pour deux transactions sortantes, il est impossible de prouver qu'elles ont été envoyées à la même personne. Malheureusement, Bitcoin ne satisfait pas à l'exigence d'intracabilité. Puisque toutes les transactions qui ont lieu entre les participants du réseau sont publiques, toute transaction peut être 1 CryptoNote version 2.0 Nicolas van Saberhagen 17 octobre 2013 1 Introduction « Bitcoin » [1] est une mise en œuvre réussie du concept de monnaie électronique p2p. Les deux les professionnels et le grand public en sont venus à apprécier la combinaison pratique de transactions publiques et proof-of-work comme modèle de confiance. Aujourd'hui, la base d'utilisateurs de la monnaie électronique croît à un rythme soutenu ; les clients sont attirés par les frais peu élevés et l’anonymat assuré par la monnaie électronique et les commerçants valorisent son émission prévue et décentralisée. Bitcoin a a prouvé que l’argent électronique peut être aussi simple que le papier-monnaie et aussi pratique que le papier-monnaie. cartes de crédit. Malheureusement, Bitcoin souffre de plusieurs déficiences. Par exemple, le système distribué la nature est inflexible, empêchant la mise en œuvre de nouvelles fonctionnalités jusqu'à ce que presque tous les utilisateurs du réseau mettent à jour leurs clients. Certaines failles critiques qui ne peuvent pas être corrigées rapidement découragent les Bitcoin propagation généralisée. Dans des modèles aussi inflexibles, il est plus efficace de déployer un nouveau projet plutôt que de réparer perpétuellement le projet original. Dans cet article, nous étudions et proposons des solutions aux principales déficiences de Bitcoin. Nous croyons qu'un système prenant en compte les solutions que nous proposons conduira à une saine concurrence entre les différents systèmes de monnaie électronique. Nous proposons également notre propre monnaie électronique, « CryptoNote », un nom qui souligne la prochaine avancée dans le domaine de la monnaie électronique. 2 Bitcoin inconvénients et quelques solutions possibles 2.1 Traçabilité des transactions La confidentialité et l’anonymat sont les aspects les plus importants de l’argent électronique. Paiements peer-to-peer cherchent à être cachés à la vue des tiers, une différence nette par rapport aux systèmes traditionnels. bancaire. En particulier, T. Okamoto et K. Ohta ont décrit six critères de la monnaie électronique idéale, qui incluait « la vie privée : la relation entre l'utilisateur et ses achats doit être introuvable par n’importe qui » [30]. De leur description, nous avons dérivé deux propriétés dont une personne totalement anonyme le modèle de monnaie électronique doit satisfaire afin de se conformer aux exigences décrites par Okamoto et Ohta : Intraçabilité : pour chaque transaction entrante, tous les expéditeurs possibles sont équiprobables. Inassociation : pour deux transactions sortantes, il est impossible de prouver qu'elles ont été envoyées à la même personne. Malheureusement, Bitcoin ne satisfait pas à l'exigence d'intracabilité. Puisque toutes les transactions qui ont lieu entre les participants du réseau sont publiques, toute transaction peut être 1 3 Bitcoin échoue définitivement à l'« intraçabilité ». Quand je vous envoie du BTC, le portefeuille à partir duquel il est envoyé est irrévocablement estampillé sur le blockchain. Il n'y a aucun doute sur qui a envoyé ces fonds, car seul celui qui connaît les clés privées peut les envoyer.sans ambiguïté jusqu'à une origine et un destinataire final uniques. Même si deux participants échangent fonds de manière indirecte, une méthode de recherche de chemin correctement conçue révélera l’origine et destinataire final. On soupçonne également que Bitcoin ne satisfait pas à la deuxième propriété. Certains chercheurs a déclaré ([33, 35, 29, 31]) qu'une analyse minutieuse blockchain peut révéler un lien entre les utilisateurs du réseau Bitcoin et leurs transactions. Bien qu'un certain nombre de méthodes soient contesté [25], on soupçonne que de nombreuses informations personnelles cachées peuvent être extraites du base de données publique. L’incapacité de Bitcoin à satisfaire les deux propriétés décrites ci-dessus nous amène à conclure qu’il est il ne s'agit pas d'un système de monnaie électronique anonyme mais pseudo-anonyme. Les utilisateurs ont été rapides à développer solutions pour contourner cette lacune. Deux solutions directes étaient les « services de blanchiment » [2] et le développement de méthodes distribuées [3, 4]. Les deux solutions sont basées sur l'idée du mélange plusieurs transactions publiques et leur envoi via une adresse intermédiaire ; qui à son tour présente l’inconvénient de nécessiter un tiers de confiance. Récemment, un schéma plus créatif a été proposé par I. Miers et al. [28] : « Zérocoin ». Zérocoin utilise des accumulateurs cryptographiques unidirectionnels et des preuves sans connaissance qui permettent aux utilisateurs de « convertissez » les bitcoins en zerocoins et dépensez-les en utilisant une preuve de propriété anonyme au lieu de signatures numériques explicites basées sur une clé publique. Cependant, de telles preuves de connaissances ont une constante mais taille peu pratique - environ 30 Ko (sur la base des limites Bitcoin actuelles), ce qui fait la proposition peu pratique. Les auteurs admettent qu'il est peu probable que le protocole soit un jour accepté par la majorité des Bitcoin utilisateurs [5]. 2.2 La fonction proof-of-work Le créateur de Bitcoin, Satoshi Nakamoto, a décrit l'algorithme de prise de décision majoritaire comme « un processeur, un vote » et a utilisé une fonction de tarification liée au processeur (double SHA-256) pour son proof-of-work. schéma. Étant donné que les utilisateurs votent pour l'ordre d'historique unique des transactions [1], le caractère raisonnable et la cohérence de ce processus sont des conditions critiques pour l’ensemble du système. La sécurité de ce modèle souffre de deux inconvénients. Premièrement, cela nécessite 51 % du réseau la puissance minière doit être sous le contrôle d’utilisateurs honnêtes. Deuxièmement, la progression du système (corrections de bugs, correctifs de sécurité, etc...) nécessitent que l'écrasante majorité des utilisateurs soutiennent et acceptent le changements (cela se produit lorsque les utilisateurs mettent à jour leur logiciel de portefeuille) [6]. Enfin, ce même vote Le mécanisme est également utilisé pour les sondages collectifs sur la mise en œuvre de certaines fonctionnalités [7]. Cela nous permet de conjecturer les propriétés qui doivent être satisfaites par le proof-of-work fonction de tarification. Une telle fonction ne doit pas permettre à un participant au réseau d'avoir un avantage sur un autre participant ; cela nécessite une parité entre le matériel commun et le haut coût des appareils personnalisés. À partir des exemples récents [8], nous pouvons voir que la fonction SHA-256 utilisée dans l'architecture Bitcoin ne possède pas cette propriété car l'exploitation minière devient plus efficace sur GPU et périphériques ASIC par rapport aux processeurs haut de gamme. Par conséquent, Bitcoin crée des conditions favorables à un écart important entre le pouvoir de vote des participants car cela viole le principe « un CPU, une voix » puisque les propriétaires de GPU et d'ASIC possèdent un pouvoir de vote beaucoup plus important par rapport aux propriétaires de processeurs. C'est un exemple classique de Principe de Pareto selon lequel 20 % des participants d’un système contrôlent plus de 80 % des voix. On pourrait affirmer qu’une telle inégalité n’est pas pertinente pour la sécurité du réseau puisqu’elle n’est pas pertinente. le petit nombre de participants contrôlant la majorité des votes mais l'honnêteté de ceux-ci participants qui comptent. Cependant, un tel argument est quelque peu erroné puisqu’il s’agit plutôt du possibilité d’apparition de matériel spécialisé bon marché plutôt que l’honnêteté des participants qui constitue une menace. Pour le démontrer, prenons l’exemple suivant. Supposons qu'un malveillant L’individu acquiert un pouvoir minier significatif en créant sa propre ferme minière grâce à des prix bon marché. 2 sans ambiguïté jusqu'à une origine et un destinataire final uniques. Même si deux participants échangent fonds de manière indirecte, une méthode de recherche de chemin correctement conçue révélera l’origine et destinataire final. On soupçonne également que Bitcoin ne satisfait pas à la deuxième propriété. Certains chercheurs a déclaré ([33, 35, 29, 31]) qu'une analyse minutieuse blockchain peut révéler un lien entre les utilisateurs du réseau Bitcoin et leurs transactions. Bien qu'un certain nombre de méthodes soient réSelon le [25], on soupçonne que de nombreuses informations personnelles cachées peuvent être extraites du base de données publique. L’incapacité de Bitcoin à satisfaire les deux propriétés décrites ci-dessus nous amène à conclure qu’il est il ne s'agit pas d'un système de monnaie électronique anonyme mais pseudo-anonyme. Les utilisateurs ont été rapides à développer solutions pour contourner cette lacune. Deux solutions directes étaient les « services de blanchiment » [2] et le développement de méthodes distribuées [3, 4]. Les deux solutions sont basées sur l'idée du mélange plusieurs transactions publiques et leur envoi via une adresse intermédiaire ; qui à son tour présente l’inconvénient de nécessiter un tiers de confiance. Récemment, un schéma plus créatif a été proposé par I. Miers et al. [28] : « Zérocoin ». Zérocoin utilise des accumulateurs cryptographiques unidirectionnels et des preuves sans connaissance qui permettent aux utilisateurs de « convertissez » les bitcoins en zerocoins et dépensez-les en utilisant une preuve de propriété anonyme au lieu de signatures numériques explicites basées sur une clé publique. Cependant, de telles preuves de connaissances ont une constante mais taille peu pratique - environ 30 Ko (sur la base des limites Bitcoin actuelles), ce qui fait la proposition peu pratique. Les auteurs admettent qu'il est peu probable que le protocole soit un jour accepté par la majorité des Bitcoin utilisateurs [5]. 2.2 La fonction proof-of-work Le créateur de Bitcoin, Satoshi Nakamoto, a décrit l'algorithme de prise de décision majoritaire comme « un processeur, un vote » et a utilisé une fonction de tarification liée au processeur (double SHA-256) pour son proof-of-work. schéma. Étant donné que les utilisateurs votent pour l'ordre unique d'historique des transactions [1], le caractère raisonnable et la cohérence de ce processus sont des conditions critiques pour l’ensemble du système. La sécurité de ce modèle souffre de deux inconvénients. Premièrement, cela nécessite 51 % du réseau la puissance minière doit être sous le contrôle d’utilisateurs honnêtes. Deuxièmement, la progression du système (corrections de bugs, correctifs de sécurité, etc...) nécessitent que l'écrasante majorité des utilisateurs soutiennent et acceptent le changements (cela se produit lorsque les utilisateurs mettent à jour leur logiciel de portefeuille) [6]. Enfin, ce même vote Le mécanisme est également utilisé pour les sondages collectifs sur la mise en œuvre de certaines fonctionnalités [7]. Cela nous permet de conjecturer les propriétés qui doivent être satisfaites par le proof-of-work fonction de tarification. Une telle fonction ne doit pas permettre à un participant au réseau d'avoir un avantage sur un autre participant ; cela nécessite une parité entre le matériel commun et le haut coût des appareils personnalisés. À partir des exemples récents [8], nous pouvons voir que la fonction SHA-256 utilisée dans l'architecture Bitcoin ne possède pas cette propriété car l'exploitation minière devient plus efficace sur GPU et périphériques ASIC par rapport aux processeurs haut de gamme. Par conséquent, Bitcoin crée des conditions favorables à un écart important entre le pouvoir de vote des participants car cela viole le principe « un CPU, une voix » puisque les propriétaires de GPU et d'ASIC possèdent un pouvoir de vote beaucoup plus important par rapport aux propriétaires de processeurs. C'est un exemple classique de Principe de Pareto selon lequel 20 % des participants d’un système contrôlent plus de 80 % des voix. On pourrait affirmer qu’une telle inégalité n’est pas pertinente pour la sécurité du réseau puisqu’elle n’est pas pertinente. le petit nombre de participants contrôlant la majorité des votes mais l'honnêteté de ceux-ci participants qui comptent. Cependant, un tel argument est quelque peu erroné puisqu’il s’agit plutôt du possibilité d’apparition de matériel spécialisé bon marché plutôt que l’honnêteté des participants qui constitue une menace. Pour le démontrer, prenons l’exemple suivant. Supposons qu'un malveillant L’individu acquiert un pouvoir minier significatif en créant sa propre ferme minière grâce à des prix bon marché. 2 4 Vraisemblablement, si chaque utilisateur contribue à son propre anonymat en générant toujours une nouvelle adresse pour CHAQUE paiement reçu (ce qui est absurde mais techniquement la façon "correcte" de le faire), et si chaque utilisateur contribuait à l’anonymat des autres en insistant sur le fait qu’il n’envoie jamais de fonds à la même adresse BTC deux fois, alors Bitcoin ne transmettrait toujours que de manière circonstancielle le test de dissociation. Pourquoi? Les données sur les consommateurs peuvent être utilisées à tout moment pour déterminer une quantité étonnante de choses sur les gens. Voir, par exemple http://www.applieddatalabs.com/content/target-knows-it-shows Maintenant, imaginez que nous soyons dans 20 ans et imaginez encore plus que Target ne savait pas seulement sur vos habitudes d'achat chez Target, mais ils exploitaient le blockchain pendant TOUS VOS ACHATS PERSONNELS AVEC VOTRE PORTEFEUILLE COINBASE POUR LE PASSÉ DOUZE ANS. Ils diront "Hé mon pote, tu voudras peut-être acheter des médicaments contre la toux ce soir, tu ne le feras pas". je me sentirai bien demain." Cela peut ne pas être le cas si le tri multipartite est exploité correctement. Voir par exemple ceciarticle de blog : http://blog.ezyang.com/2012/07/secure-multiparty-bitcoin-anonymization/ Je ne suis pas totalement convaincu des calculs à ce sujet, mais... un article à la fois, n'est-ce pas ? Citation nécessaire. Alors que le protocole Zerocoin (standalone) peut s'avérer insuffisant, le Zerocash le protocole semble avoir implémenté des transactions de 1 Ko. Ce projet est soutenu par les militaires américains et israéliens, bien sûr, alors qui connaît sa robustesse. De l'autre D’un autre côté, personne ne veut plus pouvoir dépenser des fonds sans surveillance que l’armée. http://zerocash-project.org/ Je ne suis pas convaincu... voir, par exemple, http://fc14.ifca.ai/bitcoin/papers/bitcoin14_submission_12.pdf Citant un développeur de Cryptonote, Maurice Planck (vraisemblablement un pseudonyme) de la cryptonote forums : "Zérocoin, Zérocash. C’est la technologie la plus avancée, je dois l’admettre. Oui, la citation ci-dessus est issu de l’analyse de la version précédente du protocole. A ma connaissance, ce n'est pas le cas 288, mais 384 octets, mais c'est quand même une bonne nouvelle. Ils ont utilisé une toute nouvelle technique appelée SNARK, qui présente certains inconvénients : par exemple, grande base de données initiale de paramètres publics nécessaires à la création d'une signature (plus de 1 Go) et temps important nécessaire pour créer une transaction (plus d'une minute). Enfin, ils utilisent un jeune crypto, que j'ai mentionné comme étant une idée discutable : https://forum.cryptonote.org/viewtopic.php?f= " - Maurice P. jeu. 3 avril 2014 19:56 Une fonction exécutée dans le CPU et qui ne convient pas aux GPU, FPGA ou ASIC calcul. Le « puzzle » utilisé dans proof-of-work est appelé fonction de tarification, fonction de coût ou fonction de puzzle.

sans ambiguïté jusqu'à une origine et un destinataire final uniques. Même si deux participants échangent fonds de manière indirecte, une méthode de recherche de chemin correctement conçue révélera l’origine et destinataire final. On soupçonne également que Bitcoin ne satisfait pas à la deuxième propriété. Certains chercheurs a déclaré ([33, 35, 29, 31]) qu'une analyse minutieuse blockchain peut révéler un lien entre les utilisateurs du réseau Bitcoin et leurs transactions. Bien qu'un certain nombre de méthodes soient contesté [25], on soupçonne que de nombreuses informations personnelles cachées peuvent être extraites du base de données publique. L'incapacité de Bitcoin à satisfaire les deux propriétés décrites ci-dessus nous amène à conclure qu'il est il ne s'agit pas d'un système de monnaie électronique anonyme mais pseudo-anonyme. Les utilisateurs ont été rapides à développer solutions pour contourner cette lacune. Deux solutions directes étaient les « services de blanchiment » [2] et le développement de méthodes distribuées [3, 4]. Les deux solutions sont basées sur l'idée du mélange plusieurs transactions publiques et leur envoi via une adresse intermédiaire ; qui à son tour présente l’inconvénient de nécessiter un tiers de confiance. Récemment, un schéma plus créatif a été proposé par I. Miers et al. [28] : « Zérocoin ». Zérocoin utilise des accumulateurs cryptographiques unidirectionnels et des preuves sans connaissance qui permettent aux utilisateurs de « convertissez » les bitcoins en zerocoins et dépensez-les en utilisant une preuve de propriété anonyme au lieu de signatures numériques explicites basées sur une clé publique. Cependant, de telles preuves de connaissances ont une constante mais taille peu pratique - environ 30 Ko (sur la base des limites Bitcoin actuelles), ce qui fait la proposition peu pratique. Les auteurs admettent qu'il est peu probable que le protocole soit un jour accepté par la majorité des Bitcoin utilisateurs [5]. 2.2 La fonction proof-of-work Le créateur de Bitcoin, Satoshi Nakamoto, a décrit l'algorithme de prise de décision majoritaire comme « un processeur, un vote » et a utilisé une fonction de tarification liée au processeur (double SHA-256) pour son proof-of-work. schéma. Étant donné que les utilisateurs votent pour l'ordre d'historique unique des transactions [1], le caractère raisonnable et la cohérence de ce processus sont des conditions critiques pour l’ensemble du système. La sécurité de ce modèle souffre de deux inconvénients. Premièrement, cela nécessite 51 % du réseau la puissance minière doit être sous le contrôle d’utilisateurs honnêtes. Deuxièmement, la progression du système (corrections de bugs, correctifs de sécurité, etc...) nécessitent que l'écrasante majorité des utilisateurs soutiennent et acceptent le changements (cela se produit lorsque les utilisateurs mettent à jour leur logiciel de portefeuille) [6]. Finalement, ce même vote Le mécanisme est également utilisé pour les sondages collectifs sur la mise en œuvre de certaines fonctionnalités [7]. Cela nous permet de conjecturer les propriétés qui doivent être satisfaites par le proof-of-work fonction de tarification. Une telle fonction ne doit pas permettre à un participant au réseau d'avoir un avantage sur un autre participant ; cela nécessite une parité entre le matériel commun et le haut coût des appareils personnalisés. À partir d'exemples récents [8], nous pouvons voir que la fonction SHA-256 utilisée dans l'architecture Bitcoin ne possède pas cette propriété car l'exploitation minière devient plus efficace sur GPU et périphériques ASIC par rapport aux processeurs haut de gamme. Par conséquent, Bitcoin crée des conditions favorables à un écart important entre le pouvoir de vote des participants car cela viole le principe « un CPU, une voix » puisque les propriétaires de GPU et d'ASIC possèdent un pouvoir de vote beaucoup plus important par rapport aux propriétaires de processeurs. C'est un exemple classique de Principe de Pareto selon lequel 20 % des participants d’un système contrôlent plus de 80 % des voix. On pourrait affirmer qu’une telle inégalité n’est pas pertinente pour la sécurité du réseau puisqu’elle n’est pas pertinente. le petit nombre de participants contrôlant la majorité des votes mais l'honnêteté de ceux-ci participants qui comptent. Cependant, un tel argument est quelque peu erroné puisqu’il s’agit plutôt du possibilité d’apparition de matériel spécialisé bon marché plutôt que l’honnêteté des participants qui constitue une menace. Pour le démontrer, prenons l’exemple suivant. Supposons qu'un malveillant L’individu acquiert un pouvoir minier significatif en créant sa propre ferme minière grâce à des prix bon marché. 2 sans ambiguïté jusqu'à une origine et un destinataire final uniques. Même si deux participants échangent fonds de manière indirecte, une méthode de recherche de chemin correctement conçue révélera l’origine et destinataire final. On soupçonne également que Bitcoin ne satisfait pas à la deuxième propriété. Certains chercheurs a déclaré ([33, 35, 29, 31]) qu'une analyse minutieuse blockchain peut révéler un lien entre les utilisateurs du réseau Bitcoin et leurs transactions. Bien qu'un certain nombre de méthodes soient réSelon [25], on soupçonne que de nombreuses informations personnelles cachées peuvent être extraites du base de données publique. L'incapacité de Bitcoin à satisfaire les deux propriétés décrites ci-dessus nous amène à conclure qu'il est il ne s'agit pas d'un système de monnaie électronique anonyme mais pseudo-anonyme. Les utilisateurs ont été rapides à développer solutions pour contourner cette lacune. Deux solutions directes étaient les « services de blanchiment » [2] et le développement de méthodes distribuées [3, 4]. Les deux solutions sont basées sur l'idée du mélange plusieurs transactions publiques et leur envoi via une adresse intermédiaire ; qui à son tour présente l’inconvénient de nécessiter un tiers de confiance. Récemment, un schéma plus créatif a été proposé par I. Miers et al. [28] : « Zérocoin ». Zérocoin utilise des accumulateurs cryptographiques unidirectionnels et des preuves sans connaissance qui permettent aux utilisateurs de « convertissez » les bitcoins en zerocoins et dépensez-les en utilisant une preuve de propriété anonyme au lieu de signatures numériques explicites basées sur une clé publique. Cependant, de telles preuves de connaissances ont une constante mais taille peu pratique - environ 30 Ko (sur la base des limites Bitcoin actuelles), ce qui fait la proposition peu pratique. Les auteurs admettent qu'il est peu probable que le protocole soit un jour accepté par la majorité des Bitcoin utilisateurs [5]. 2.2 La fonction proof-of-work Le créateur de Bitcoin, Satoshi Nakamoto, a décrit l'algorithme de prise de décision majoritaire comme « un processeur, un vote » et a utilisé une fonction de tarification liée au processeur (double SHA-256) pour son proof-of-work. schéma. Étant donné que les utilisateurs votent pour l'ordre d'historique unique des transactions [1], le caractère raisonnable et la cohérence de ce processus sont des conditions critiques pour l’ensemble du système. La sécurité de ce modèle souffre de deux inconvénients. Premièrement, cela nécessite 51 % du réseau la puissance minière doit être sous le contrôle d’utilisateurs honnêtes. Deuxièmement, la progression du système (corrections de bugs, correctifs de sécurité, etc...) nécessitent que l'écrasante majorité des utilisateurs soutiennent et acceptent le changements (cela se produit lorsque les utilisateurs mettent à jour leur logiciel de portefeuille) [6]. Enfin, ce même vote Le mécanisme est également utilisé pour les sondages collectifs sur la mise en œuvre de certaines fonctionnalités [7]. Cela nous permet de conjecturer les propriétés qui doivent être satisfaites par le proof-of-work fonction de tarification. Une telle fonction ne doit pas permettre à un participant au réseau d'avoir un avantage sur un autre participant ; cela nécessite une parité entre le matériel commun et le haut coût des appareils personnalisés. À partir des exemples récents [8], nous pouvons voir que la fonction SHA-256 utilisée dans l'architecture Bitcoin ne possède pas cette propriété car l'exploitation minière devient plus efficace sur GPU et périphériques ASIC par rapport aux processeurs haut de gamme. Par conséquent, Bitcoin crée des conditions favorables à un écart important entre le pouvoir de vote des participants car cela viole le principe « un CPU, une voix » puisque les propriétaires de GPU et d'ASIC possèdent un pouvoir de vote beaucoup plus important par rapport aux propriétaires de processeurs. C'est un exemple classique de Principe de Pareto selon lequel 20 % des participants d’un système contrôlent plus de 80 % des voix. On pourrait affirmer qu’une telle inégalité n’est pas pertinente pour la sécurité du réseau puisqu’elle n’est pas pertinente. le petit nombre de participants contrôlant la majorité des votes mais l'honnêteté de ceux-ci participants qui comptent. Cependant, un tel argument est quelque peu erroné puisqu’il s’agit plutôt du possibilité d’apparition de matériel spécialisé bon marché plutôt que l’honnêteté des participants qui constitue une menace. Pour le démontrer, prenons l’exemple suivant. Supposons qu'un malveillant L’individu acquiert un pouvoir minier significatif en créant sa propre ferme minière grâce à des prix bon marché. 2 Commentaires à la page 2

La tecnología CryptoNote

Ahora que hemos cubierto las limitaciones de la tecnología Bitcoin, nos concentraremos en presentando las características de CryptoNote.

La technologie CryptoNote

Maintenant que nous avons couvert les limites de la technologie Bitcoin, nous allons nous concentrer sur présentant les fonctionnalités de CryptoNote.

Transacciones imposibles de rastrear

En esta sección proponemos un esquema de transacciones totalmente anónimas que satisfacen tanto la trazabilidad y condiciones de desvinculación. Una característica importante de nuestra solución es su autonomía: el remitente no está obligado a cooperar con otros usuarios o un tercero de confianza para realizar sus transacciones; por lo tanto, cada participante produce un tráfico de cobertura de forma independiente. 4.1 Revisión de la literatura Nuestro esquema se basa en la primitiva criptográfica llamada firma de grupo. Presentado por primera vez por D. Chaum y E. van Heyst [19], permite al usuario firmar su mensaje en nombre del grupo. Después de firmar el mensaje, el usuario proporciona (para fines de verificación) no su propia información pública 1Este es el llamado “límite suave”, la restricción de referencia del cliente para crear nuevos bloques. Máximo duro de El tamaño de bloque posible era 1 MB. 4 ellos si es necesario que causa los principales inconvenientes. Desafortunadamente, es difícil predecir cuándo Es posible que sea necesario cambiar las constantes y reemplazarlas puede tener consecuencias terribles. Un buen ejemplo de un cambio de límite codificado que conduce a consecuencias desastrosas es el bloque límite de tamaño establecido en 250kb1. Este límite era suficiente para albergar unas 10.000 transacciones estándar. en A principios de 2013, este límite casi se había alcanzado y se llegó a un acuerdo para aumentar el límite. El cambio se implementó en la versión 0.8 de la billetera y terminó con una división de la cadena de 24 bloques. y un exitoso ataque de doble gasto [9]. Si bien el error no estaba en el protocolo Bitcoin, pero más bien, en el motor de la base de datos, podría haberse detectado fácilmente mediante una simple prueba de estrés si hubiera No hay límite de tamaño de bloque introducido artificialmente. Las constantes también actúan como una forma de punto de centralización. A pesar de la naturaleza de igual a igual de Bitcoin, una abrumadora mayoría de nodos utilizan el cliente de referencia oficial [10] desarrollado por un pequeño grupo de personas. Este grupo toma la decisión de implementar cambios al protocolo y la mayoría de la gente acepta estos cambios independientemente de su “corrección”. Algunas decisiones provocaron discusiones acaloradas e incluso llamados al boicot [11], lo que indica que la comunidad y el Los desarrolladores pueden no estar de acuerdo en algunos puntos importantes. Por tanto, parece lógico disponer de un protocolo con variables configurables por el usuario y autoajustables como una posible forma de evitar estos problemas. 2.5 Guiones voluminosos El sistema de secuencias de comandos en Bitcoin es una característica pesada y compleja. Potencialmente permite crear transacciones sofisticadas [12], pero algunas de sus funciones están deshabilitadas debido a problemas de seguridad y algunos ni siquiera se han utilizado [13]. El guión (incluidas las partes del remitente y del receptor) para la transacción más popular en Bitcoin se ve así: OP DUP OP HASH160 OP EQUALVERIFY OP CHECKSIG. El script tiene una longitud de 164 bytes y su único propósito es comprobar si el receptor posee la clave secreta requerida para verificar su firma. 3 La tecnología CryptoNote Ahora que hemos cubierto las limitaciones de la tecnología Bitcoin, nos concentraremos en presentando las características de CryptoNote. 4 Transacciones imposibles de rastrear En esta sección proponemos un esquema de transacciones totalmente anónimas que satisfacen tanto la trazabilidad y condiciones de desvinculación. Una característica importante de nuestra solución es su autonomía: el remitente no está obligado a cooperar con otros usuarios o un tercero de confianza para realizar sus transacciones; por lo tanto, cada participante produce un tráfico de cobertura de forma independiente. 4.1 Revisión de la literatura Nuestro esquema se basa en la primitiva criptográfica llamada firma de grupo. Presentado por primera vez por D. Chaum y E. van Heyst [19], permite al usuario firmar su mensaje en nombre del grupo. Después de firmar el mensaje, el usuario proporciona (para fines de verificación) no su propia información pública 1Este es el llamado “límite suave”, la restricción de referencia del cliente para crear nuevos bloques. Máximo duro de El tamaño de bloque posible era 1 MB. 4 7 En retrospectiva, parece haber sido un gran error hacer que el tamaño del bloque sea un límite fijo en el código. Visa y Mastercard pueden procesar miles, si no cientos de miles, de transacciones por segundo. Sin embargo, las transacciones se producen en un proceso estocástico, a veces en ráfagas masivas, a veces estar en silencio durante horas. Piense en el volumen del intercambio de bitcoins. Parece una gran idea diseñar un sistema que aumente el tamaño del bloque dinámicamente cuando sea necesario. para acomodar el mayor tráfico de transacciones y disminuirlo dinámicamente cuando sea necesario aumentar la eficiencia del ancho de banda. Ahora, aplique esa noción a todos los parámetros del sistema. Y mientras tengamos cuidado de mantener el sistema se salga de control, este shFuncionaría muy bien. https://github.com/bitcoin/bips/blob/master/bip-0050.mediawiki Como se mencionó anteriormente, si las variables se autoajustan, se deben imponer algunos controles para evitar que el sistema se salga de control. Llegaremos a eso. Si se tratara de un artículo de Wikipedia, tendría la etiqueta "STUB". Aunque ciertamente estamos en el sección que presenta los "Problemas de Bitcoin", me gustaría obtener más detalles aquí. ¿Por qué es ¿164 bytes son inaceptables para una simple tarea de "comprobar la clave secreta"? ¿Qué tan pequeños pueden llegar a ser? ¿Un lenguaje de programación razonable? Aunque no soy un informático. http://download.springer.com/static/pdf/412/chp%253A10.1007%252F3-540-46416-6_22.pdf?auth66=140 Las firmas de grupo, como se describe, requieren un administrador de grupo. El administrador del grupo es capaz de revocar el anonimato de cualquier firmante. Por lo tanto, existe una centralización incorporada en un grupo. esquema de firma.

clave, sino las claves de todos los usuarios de su grupo. Un verificador está convencido de que el verdadero firmante es un miembro del grupo, pero no puede identificar exclusivamente al firmante. El protocolo original requería un tercero de confianza (llamado Gerente de Grupo), y él era el único que podía rastrear al firmante. Se introdujo la siguiente versión llamada firma de anillo. por Rivest et al. en [34], era un esquema autónomo sin Gerente de Grupo y anonimato revocación. Posteriormente aparecieron varias modificaciones de este esquema: firma de anillo enlazable [26, 27, 17] permitió determinar si dos firmas fueron producidas por el mismo miembro del grupo, rastreables La firma en anillo [24, 23] limitó el anonimato excesivo al brindar la posibilidad de rastrear al firmante de dos mensajes con respecto a la misma metainformación (o “etiqueta” en términos de [24]). Una construcción criptográfica similar también se conoce como firma de grupo ad-hoc [16, 38]. eso enfatiza la formación arbitraria de grupos, mientras que los esquemas de firma de grupo/anillo implican más bien una conjunto fijo de miembros. En su mayor parte, nuestra solución se basa en el trabajo “Firma de anillo rastreable” de E. Fujisaki. y K. Suzuki [24]. Para distinguir el algoritmo original y nuestra modificación, Llame a este último firma de anillo de una sola vez, enfatizando la capacidad del usuario para producir solo una firma válida. firma bajo su clave privada. Debilitamos la propiedad de trazabilidad y mantuvimos la vinculabilidad. sólo para proporcionar unicidad: la clave pública puede aparecer en muchos conjuntos de verificación externos y la La clave privada se puede utilizar para generar una firma anónima única. En caso de un doble gasto Intento, estas dos firmas se vincularán entre sí, pero no es necesario revelar el firmante. para nuestros propósitos. 4.2 Definiciones 4.2.1 Parámetros de la curva elíptica Como nuestro algoritmo de firma base elegimos utilizar el esquema rápido EdDSA, que está desarrollado y implementado por D.J. Bernstein et al. [18]. Al igual que la ECDSA de Bitcoin, se basa en la curva elíptica problema de logaritmo discreto, por lo que nuestro esquema también podría aplicarse a Bitcoin en el futuro. Los parámetros comunes son: q: un número primo; q = 2255 −19; d: un elemento de Fq; re = −121665/121666; E: una ecuación de curva elíptica; −x2 + y2 = 1 + dx2y2; G: un punto base; GRAMO = (x, −4/5); l: orden primo del punto base; l = 2252 + 27742317777372353535851937790883648493; \(H_s\): una función criptográfica hash \(\{0, 1\}^* \to \mathbb{F}_q\); \(H_p\): una función determinista hash \(E(\mathbb{F}_q) \to E(\mathbb{F}_q)\). 4.2.2 Terminología La privacidad mejorada requiere una nueva terminología que no debe confundirse con Bitcoin entidades. la clave electrónica privada es una clave privada de curva elíptica estándar: un número \(a \in [1, l - 1]\); La clave electrónica pública es una clave pública de curva elíptica estándar: un punto A = aG; el par de claves de un solo uso es un par de claves electrónicas públicas y privadas; 5 clave, sino las claves de todos los usuarios de su grupo. Un verificador está convencido de que el verdadero firmante es un miembro del grupo, pero no puede identificar exclusivamente al firmante. El protocolo original requería un tercero de confianza (llamado Gerente de Grupo), y él era el único que podía rastrear al firmante. Se introdujo la siguiente versión llamada firma de anillo. por Rivest et al. en [34], era un esquema autónomo sin Gerente de Grupo y anonimato revocación. Posteriormente aparecieron varias modificaciones de este esquema: firma de anillo enlazable [26, 27, 17] permitió determinar si dos firmas fueron producidas por el mismo miembro del grupo, rastreables La firma en anillo [24, 23] limitó el anonimato excesivo al brindar la posibilidad de rastrear al firmante de dos mensajes con respecto a la misma metainformación (o “etiqueta” en términos de [24]). Una construcción criptográfica similar también se conoce como firma de grupo ad-hoc [16, 38]. eso enfatiza la formación arbitraria de grupos, mientras que los esquemas de firma de grupo/anillo implican más bien una conjunto fijo de miembros. En su mayor parte, nuestra solución se basa en el trabajo “Firma de anillo rastreable” de E. Fujisaki. y K. Suzuki [24]. Para distinguir el algoritmo original y nuestra modificación, Llame a este último firma de anillo de una sola vez, enfatizando la capacidad del usuario para producir solo una firma válida. firma bajo su clave privada. Debilitamos la propiedad de trazabilidad y mantuvimos la vinculabilidad. sólo para proporcionar unicidad: la clave pública puede aparecer en muchos conjuntos de verificación externos y la La clave privada se puede utilizar para generar una firma anónima única. En caso de un doble gasto Intento, estas dos firmas se vincularán entre sí, pero no es necesario revelar el firmante. para nuestros propósitos. 4.2 Definiciones 4.2.1 Parámetros de la curva elíptica Como nuestro algoritmo de firma base elegimose utilizar el esquema rápido EdDSA, que está desarrollado y implementado por D.J. Bernstein et al. [18]. Al igual que ECDSA de Bitcoin, se basa en la curva elíptica problema de logaritmo discreto, por lo que nuestro esquema también podría aplicarse a Bitcoin en el futuro. Los parámetros comunes son: q: un número primo; q = 2255 −19; d: un elemento de Fq; re = −121665/121666; E: una ecuación de curva elíptica; −x2 + y2 = 1 + dx2y2; G: un punto base; GRAMO = (x, −4/5); l: orden primo del punto base; l = 2252 + 27742317777372353535851937790883648493; \(H_s\): una función criptográfica hash \(\{0, 1\}^* \to \mathbb{F}_q\); \(H_p\): una función determinista hash \(E(\mathbb{F}_q) \to E(\mathbb{F}_q)\). 4.2.2 Terminología La privacidad mejorada requiere una nueva terminología que no debe confundirse con Bitcoin entidades. la clave electrónica privada es una clave privada de curva elíptica estándar: un número \(a \in [1, l - 1]\); La clave electrónica pública es una clave pública de curva elíptica estándar: un punto A = aG; el par de claves de un solo uso es un par de claves electrónicas públicas y privadas; 5 8 Una firma en anillo funciona así: Alex quiere filtrar un mensaje a WikiLeaks sobre su empleador. Cada empleado de su empresa tiene un par de claves pública y privada (Ri, Ui). ella compone su firma con entrada configurada como su mensaje, m, su clave privada, Ri, y la de TODOS claves públicas, (Ui;i=1...n). Cualquiera (sin conocer ninguna clave privada) puede verificar fácilmente que algún par (Rj, Uj) debe haber sido usado para construir la firma... alguien que trabaja para el empleador de Alex... pero es esencialmente una suposición aleatoria determinar cuál podría ser. http://en.wikipedia.org/wiki/Ring_signature#Crypto-currencies http://link.springer.com/chapter/10.1007/3-540-45682-1_32#page-1 http://link.springer.com/chapter/10.1007/11424826_65 http://link.springer.com/chapter/10.1007/978-3-540-27800-9_28 http://link.springer.com/chapter/10.1007%2F11774716_9 Tenga en cuenta que una firma de anillo vinculable que se describe aquí es algo así como lo opuesto a "no vinculable". descrito anteriormente. Aquí interceptamos dos mensajes y podemos determinar si son los mismos. parte los envió, aunque aún no deberíamos poder determinar quién es esa parte. el La definición de "desvinculable" utilizada para construir Cryptonote significa que no podemos determinar si el mismo partido los está recibiendo. Por lo tanto, lo que realmente tenemos aquí son CUATRO cosas sucediendo. Un sistema puede ser enlazable o no vinculable, dependiendo de si es posible o no determinar si el remitente del dos mensajes son iguales (independientemente de si para ello es necesario revocar el anonimato). y un sistema puede ser desvinculable o no desvinculable, dependiendo de si es posible o no determinar si el receptor de dos mensajes es el mismo (independientemente de si esto requiere revocar el anonimato). Por favor, no me culpen por esta terrible terminología. Los teóricos de grafos probablemente deberían estar contento. Algunos de ustedes pueden sentirse más cómodos con "enlazable por receptor" versus "enlazable por remitente". http://link.springer.com/chapter/10.1007/978-3-540-71677-8_13 Cuando leí esto, me pareció una característica tonta. Luego leí que puede ser una característica para votación electrónica, y eso parecía tener sentido. Algo genial, desde esa perspectiva. pero yo soy No estoy totalmente seguro de implementar intencionalmente firmas de anillo rastreables. http://search.ieice.org/bin/summary.php?id=e95-a_1_151

clave, sino las claves de todos los usuarios de su grupo. Un verificador está convencido de que el verdadero firmante es un miembro del grupo, pero no puede identificar exclusivamente al firmante. El protocolo original requería un tercero de confianza (llamado Gerente de Grupo), y él era el único que podía rastrear al firmante. Se introdujo la siguiente versión llamada firma de anillo. por Rivest et al. en [34], era un esquema autónomo sin Gerente de Grupo y anonimato revocación. Posteriormente aparecieron varias modificaciones de este esquema: firma de anillo enlazable [26, 27, 17] permitió determinar si dos firmas fueron producidas por el mismo miembro del grupo, rastreables La firma en anillo [24, 23] limitó el anonimato excesivo al brindar la posibilidad de rastrear al firmante de dos mensajes con respecto a la misma metainformación (o “etiqueta” en términos de [24]). Una construcción criptográfica similar también se conoce como firma de grupo ad-hoc [16, 38]. eso enfatiza la formación arbitraria de grupos, mientras que los esquemas de firma de grupo/anillo implican más bien una conjunto fijo de miembros. En su mayor parte, nuestra solución se basa en el trabajo “Firma de anillo rastreable” de E. Fujisaki. y K. Suzuki [24]. Para distinguir el algoritmo original y nuestra modificación, Llame a este último firma de anillo de una sola vez, enfatizando la capacidad del usuario para producir solo una firma válida. firma bajo su clave privada. Debilitamos la propiedad de trazabilidad y mantuvimos la vinculabilidad. sólo para proporcionar unicidad: la clave pública puede aparecer en muchos conjuntos de verificación externos y la La clave privada se puede utilizar para generar una firma anónima única. En caso de un doble gasto Intento, estas dos firmas se vincularán entre sí, pero no es necesario revelar el firmante. para nuestros propósitos. 4.2 Definiciones 4.2.1 Parámetros de la curva elíptica Como nuestro algoritmo de firma base elegimos utilizar el esquema rápido EdDSA, que está desarrollado y implementado por D.J. Bernstein et al. [18]. Al igual que ECDSA de Bitcoin, se basa en la curva elíptica problema de logaritmo discreto, por lo que nuestro esquema también podría aplicarse a Bitcoin en el futuro. Los parámetros comunes son: q: un número primo; q = 2255 −19; d: un elemento de Fq; re = −121665/121666; E: una ecuación de curva elíptica; −x2 + y2 = 1 + dx2y2; G: un punto base; GRAMO = (x, −4/5); l: orden primo del punto base; l = 2252 + 27742317777372353535851937790883648493; \(H_s\): una función criptográfica hash \(\{0, 1\}^* \to \mathbb{F}_q\); \(H_p\): una función determinista hash \(E(\mathbb{F}_q) \to E(\mathbb{F}_q)\). 4.2.2 Terminología La privacidad mejorada requiere una nueva terminología que no debe confundirse con Bitcoin entidades. la clave electrónica privada es una clave privada de curva elíptica estándar: un número \(a \in [1, l - 1]\); La clave electrónica pública es una clave pública de curva elíptica estándar: un punto A = aG; el par de claves de un solo uso es un par de claves electrónicas públicas y privadas; 5 clave, sino las claves de todos los usuarios de su grupo. Un verificador está convencido de que el verdadero firmante es un miembro del grupo, pero no puede identificar exclusivamente al firmante. El protocolo original requería un tercero de confianza (llamado Gerente de Grupo), y él era el único que podía rastrear al firmante. Se introdujo la siguiente versión llamada firma de anillo. por Rivest et al. en [34], era un esquema autónomo sin Gerente de Grupo y anonimato revocación. Posteriormente aparecieron varias modificaciones de este esquema: firma de anillo enlazable [26, 27, 17] permitió determinar si dos firmas fueron producidas por el mismo miembro del grupo, rastreables La firma en anillo [24, 23] limitó el anonimato excesivo al brindar la posibilidad de rastrear al firmante de dos mensajes con respecto a la misma metainformación (o “etiqueta” en términos de [24]). Una construcción criptográfica similar también se conoce como firma de grupo ad-hoc [16, 38]. eso enfatiza la formación arbitraria de grupos, mientras que los esquemas de firma de grupo/anillo implican más bien una conjunto fijo de miembros. En su mayor parte, nuestra solución se basa en el trabajo “Firma de anillo rastreable” de E. Fujisaki. y K. Suzuki [24]. Para distinguir el algoritmo original y nuestra modificación, Llame a este último firma de anillo de una sola vez, enfatizando la capacidad del usuario para producir solo una firma válida. firma bajo su clave privada. Debilitamos la propiedad de trazabilidad y mantuvimos la vinculabilidad. sólo para proporcionar unicidad: la clave pública puede aparecer en muchos conjuntos de verificación externos y la La clave privada se puede utilizar para generar una firma anónima única. En caso de un doble gasto Intento, estas dos firmas se vincularán entre sí, pero no es necesario revelar el firmante. para nuestros propósitos. 4.2 Definiciones 4.2.1 Parámetros de la curva elíptica Como nuestro algoritmo de firma base elegimose utilizar el esquema rápido EdDSA, que está desarrollado y implementado por D.J. Bernstein et al. [18]. Al igual que la ECDSA de Bitcoin, se basa en la curva elíptica problema de logaritmo discreto, por lo que nuestro esquema también podría aplicarse a Bitcoin en el futuro. Los parámetros comunes son: q: un número primo; q = 2255 −19; d: un elemento de Fq; re = −121665/121666; E: una ecuación de curva elíptica; −x2 + y2 = 1 + dx2y2; G: un punto base; GRAMO = (x, −4/5); l: orden primo del punto base; l = 2252 + 27742317777372353535851937790883648493; \(H_s\): una función criptográfica hash \(\{0, 1\}^* \to \mathbb{F}_q\); \(H_p\): una función determinista hash \(E(\mathbb{F}_q) \to E(\mathbb{F}_q)\). 4.2.2 Terminología La privacidad mejorada requiere una nueva terminología que no debe confundirse con Bitcoin entidades. la clave electrónica privada es una clave privada de curva elíptica estándar: un número \(a \in [1, l - 1]\); La clave electrónica pública es una clave pública de curva elíptica estándar: un punto A = aG; el par de claves de un solo uso es un par de claves electrónicas públicas y privadas; 5 9 ¡Dios, el autor de este documento técnico seguramente podría haberlo redactado mejor! Digamos que un empresa propiedad de los empleados quiere votar sobre si adquirir o no ciertas nuevas activos, y Alex y Brenda son ambos empleados. La Compañía proporciona a cada empleado un mensaje como "¡Voto sí a la Proposición A!" que tiene el "problema" de metainformación [PROP A] y les pide que lo firmen con un anillo de firma rastreable si apoyan la propuesta. Usando una firma de anillo tradicional, un empleado deshonesto puede firmar el mensaje varias veces, presumiblemente con diferentes nonces, para poder votar tantas veces como quieran. por el otro Por otro lado, en un esquema de firma de anillo rastreable, Alex irá a votar y su clave privada tendrá utilizado en el tema [PROP A]. Si Alex intenta firmar un mensaje como "Yo, Brenda, apruebo ¡proposición A!" para "incriminar" a Brenda y doble voto, este nuevo mensaje también tendrá el tema [PROPUESTA A]. Dado que la clave privada de Alex ya ha provocado el problema [PROP A], la identidad de Alex será inmediatamente revelado como un fraude. Lo cual, acéptalo, ¡es genial! La criptografía impuso la igualdad de votos. http://link.springer.com/chapter/10.1007/978-3-540-71677-8_13 Este artículo es interesante, esencialmente crea una firma de anillo ad-hoc pero sin ninguno de los el consentimiento del otro participante. La estructura de la firma puede ser diferente; no he cavado profundo, y no he visto si es seguro. https://people.csail.mit.edu/rivest/AdidaHohenbergerRivest-AdHocGroupSignaturesFromHijackedKeypai Las firmas de grupos ad hoc son: firmas de anillo, que son firmas de grupo sin grupo gerentes, sin centralización, pero permite que un miembro de un grupo ad hoc afirme de manera demostrable que (no) ha emitido la firma anónima en nombre del grupo. http://link.springer.com/chapter/10.1007/11908739_9 Esto no es del todo correcto, según tengo entendido. Y mi comprensión probablemente cambiará a medida que Profundizo más en este proyecto. Pero, según tengo entendido, la jerarquía se ve así. Firmas de grupo: los administradores de grupo controlan la trazabilidad y la capacidad de agregar o eliminar miembros. de ser firmantes. Firmas de anillo: formación arbitraria de grupos sin responsable de grupo. Sin revocación del anonimato. No hay forma de repudiarse de una firma determinada. Con anillo rastreable y enlazable firmas, el anonimato es algo escalable. Firmas de grupos ad hoc: como firmas de anillo, pero los miembros pueden demostrar que no crearon una firma determinada. Esto es importante cuando cualquier miembro de un grupo puede emitir una firma. http://link.springer.com/chapter/10.1007/978-3-540-71677-8_13 El autor modifica posteriormente el algoritmo de Fujisaki y Suzuki para proporcionar unicidad. entonces Analizaremos el algoritmo de Fujisaki y Suzuki al mismo tiempo que el nuevo algoritmo en lugar de que repasarlo aquí.

clave, sino las claves de todos los usuarios de su grupo. Un verificador está convencido de que el verdadero firmante es un miembro del grupo, pero no puede identificar exclusivamente al firmante. El protocolo original requería un tercero de confianza (llamado Gerente de Grupo), y él era el único que podía rastrear al firmante. Se introdujo la siguiente versión llamada firma de anillo. por Rivest et al. en [34], era un esquema autónomo sin Gerente de Grupo y anonimato revocación. Posteriormente aparecieron varias modificaciones de este esquema: firma de anillo enlazable [26, 27, 17] permitió determinar si dos firmas fueron producidas por el mismo miembro del grupo, rastreables La firma en anillo [24, 23] limitó el anonimato excesivo al brindar la posibilidad de rastrear al firmante de dos mensajes con respecto a la misma metainformación (o “etiqueta” en términos de [24]). Una construcción criptográfica similar también se conoce como firma de grupo ad-hoc [16, 38]. eso enfatiza la formación arbitraria de grupos, mientras que los esquemas de firma de grupo/anillo implican más bien una conjunto fijo de miembros. En su mayor parte, nuestra solución se basa en el trabajo “Firma de anillo rastreable” de E. Fujisaki. y K. Suzuki [24]. Para distinguir el algoritmo original y nuestra modificación, Llame a este último firma de anillo de una sola vez, enfatizando la capacidad del usuario para producir solo una firma válida. firma bajo su clave privada. Debilitamos la propiedad de trazabilidad y mantuvimos la vinculabilidad. sólo para proporcionar unicidad: la clave pública puede aparecer en muchos conjuntos de verificación externos y la La clave privada se puede utilizar para generar una firma anónima única. En caso de un doble gasto Intento, estas dos firmas se vincularán entre sí, pero no es necesario revelar el firmante. para nuestros propósitos. 4.2 Definiciones 4.2.1 Parámetros de la curva elíptica Como nuestro algoritmo de firma base elegimos utilizar el esquema rápido EdDSA, que está desarrollado y implementado por D.J. Bernstein et al. [18]. Al igual que la ECDSA de Bitcoin, se basa en la curva elíptica problema de logaritmo discreto, por lo que nuestro esquema también podría aplicarse a Bitcoin en el futuro. Los parámetros comunes son: q: un número primo; q = 2255 −19; d: un elemento de Fq; re = −121665/121666; E: una ecuación de curva elíptica; −x2 + y2 = 1 + dx2y2; G: un punto base; GRAMO = (x, −4/5); l: orden primo del punto base; l = 2252 + 27742317777372353535851937790883648493; \(H_s\): una función criptográfica hash \(\{0, 1\}^* \to \mathbb{F}_q\); \(H_p\): una función determinista hash \(E(\mathbb{F}_q) \to E(\mathbb{F}_q)\). 4.2.2 Terminología La privacidad mejorada requiere una nueva terminología que no debe confundirse con Bitcoin entidades. la clave electrónica privada es una clave privada de curva elíptica estándar: un número \(a \in [1, l - 1]\); La clave electrónica pública es una clave pública de curva elíptica estándar: un punto A = aG; el par de claves de un solo uso es un par de claves electrónicas públicas y privadas; 5 clave, sino las claves de todos los usuarios de su grupo. Un verificador está convencido de que el verdadero firmante es un miembro del grupo, pero no puede identificar exclusivamente al firmante. El protocolo original requería un tercero de confianza (llamado Gerente de Grupo), y él era el único que podía rastrear al firmante. Se introdujo la siguiente versión llamada firma de anillo. por Rivest et al. en [34], era un esquema autónomo sin Gerente de Grupo y anonimato revocación. Posteriormente aparecieron varias modificaciones de este esquema: firma de anillo enlazable [26, 27, 17] permitió determinar si dos firmas fueron producidas por el mismo miembro del grupo, rastreables La firma en anillo [24, 23] limitó el anonimato excesivo al brindar la posibilidad de rastrear al firmante de dos mensajes con respecto a la misma metainformación (o “etiqueta” en términos de [24]). Una construcción criptográfica similar también se conoce como firma de grupo ad-hoc [16, 38]. eso enfatiza la formación arbitraria de grupos, mientras que los esquemas de firma de grupo/anillo implican más bien una conjunto fijo de miembros. En su mayor parte, nuestra solución se basa en el trabajo “Firma de anillo rastreable” de E. Fujisaki. y K. Suzuki [24]. Para distinguir el algoritmo original y nuestra modificación, Llame a este último firma de anillo de una sola vez, enfatizando la capacidad del usuario para producir solo una firma válida. firma bajo su clave privada. Debilitamos la propiedad de trazabilidad y mantuvimos la vinculabilidad. sólo para proporcionar unicidad: la clave pública puede aparecer en muchos conjuntos de verificación externos y la La clave privada se puede utilizar para generar una firma anónima única. En caso de un doble gasto Intento, estas dos firmas se vincularán entre sí, pero no es necesario revelar el firmante. para nuestros propósitos. 4.2 Definiciones 4.2.1 Parámetros de la curva elíptica Como nuestro algoritmo de firma base elegimose utilizar el esquema rápido EdDSA, que está desarrollado y implementado por D.J. Bernstein et al. [18]. Al igual que ECDSA de Bitcoin, se basa en la curva elíptica problema de logaritmo discreto, por lo que nuestro esquema también podría aplicarse a Bitcoin en el futuro. Los parámetros comunes son: q: un número primo; q = 2255 −19; d: un elemento de Fq; re = −121665/121666; E: una ecuación de curva elíptica; −x2 + y2 = 1 + dx2y2; G: un punto base; GRAMO = (x, −4/5); l: orden primo del punto base; l = 2252 + 27742317777372353535851937790883648493; \(H_s\): una función criptográfica hash \(\{0, 1\}^* \to \mathbb{F}_q\); \(H_p\): una función determinista hash \(E(\mathbb{F}_q) \to E(\mathbb{F}_q)\). 4.2.2 Terminología La privacidad mejorada requiere una nueva terminología que no debe confundirse con Bitcoin entidades. la clave electrónica privada es una clave privada de curva elíptica estándar: un número \(a \in [1, l - 1]\); La clave electrónica pública es una clave pública de curva elíptica estándar: un punto A = aG; el par de claves de un solo uso es un par de claves electrónicas públicas y privadas; 5 10 La vinculabilidad en el sentido de "firmas de anillo vinculables" significa que podemos saber si dos transacciones salientes provienen de la misma fuente sin revelar quién es la fuente. Los autores debilitaron vinculabilidad para (a) preservar la privacidad, pero aún así (b) detectar cualquier transacción que utilice una clave privada por segunda vez como inválido. Bien, esta es una pregunta de orden de eventos. Considere el siguiente escenario. mi mineria La computadora tendrá el blockchain actual, tendrá su propio bloque de transacciones al que llama. legítimo, trabajará en ese bloque en un rompecabezas proof-of-work y tendrá un lista de transacciones pendientes que se agregarán al siguiente bloque. También enviará cualquier novedad. transacciones en ese grupo de transacciones pendientes. Si no resuelvo el siguiente bloque, pero Si alguien más lo hace, obtengo una copia actualizada del blockchain. El bloque en el que estaba trabajando y mi lista de transacciones pendientes ambas pueden tener algunas transacciones que ahora están incorporadas en el blockchain. Desentraña mi bloque pendiente, combínalo con mi lista de transacciones pendientes y llámalo mi grupo de transacciones pendientes. Elimine cualquiera que ahora esté oficialmente en el blockchain. Ahora, ¿qué hago? ¿Debería primero proceder y "eliminar todos los gastos dobles"? por el otro Por otro lado, ¿debería buscar en la lista y asegurarme de que cada clave privada aún no haya sido utilizado, y si ya se ha utilizado en mi lista, entonces recibí la primera copia primero, y por lo tanto cualquier copia adicional es ilegítima. Por lo tanto procedo a simplemente eliminar todas las instancias después de la primera de la misma clave privada. La geometría algebraica nunca ha sido mi fuerte. http://en.wikipedia.org/wiki/EdDSA Qué velocidad, guau. ESTA es la geometría algebraica para ganar. No es que yo supiera nada sobre eso. De manera problemática o no, los registros discretos se están volviendo muy rápidos. Y las computadoras cuánticas se los comen para el desayuno. http://link.springer.com/article/10.1007/s13389-012-0027-1 Este se convierte en un número realmente importante, pero no hay ninguna explicación o cita de cómo fue elegido. Simplemente elegir un único primo grande conocido estaría bien, pero si se conocen Hay datos sobre este gran número primo que podrían influir en nuestra elección. Diferentes variantes de criptonota podría elegir diferentes valores de bien, pero no hay ninguna discusión en este artículo sobre cómo eso La elección afectará nuestras elecciones de otros parámetros globales enumerados en la página 5. Este documento necesita una sección sobre la elección de valores de parámetros.

la clave de usuario privada es un par (a, b) de dos claves electrónicas privadas diferentes; la clave de seguimiento es un par (a, B) de clave electrónica pública y privada (donde B = bG y a ̸= b); la clave pública de usuario es un par (A, B) de dos claves electrónicas públicas derivadas de (a, b); La dirección estándar es una representación de una clave de usuario pública dada en una cadena amigable para los humanos. con corrección de errores; La dirección truncada es una representación de la segunda mitad (punto B) de una clave de usuario pública dada. en una cadena amigable para los humanos con corrección de errores. La estructura de la transacción sigue siendo similar a la estructura en Bitcoin: cada usuario puede elegir varios pagos entrantes independientes (transacciones salidas), firmarlos con el correspondiente claves privadas y enviarlas a diferentes destinos. Contrariamente al modelo de Bitcoin, donde un usuario posee una clave pública y privada única, en el En el modelo propuesto, el remitente genera una clave pública única basada en la dirección del destinatario y algunos datos aleatorios. En este sentido, una transacción entrante para el mismo destinatario se envía a un clave pública de un solo uso (no directamente a una dirección única) y solo el destinatario puede recuperar la parte privada correspondiente para canjear sus fondos (usando su clave privada única). El destinatario puede gastar los fondos utilizando un anillo de firma, manteniendo anónimos su propiedad y sus gastos reales. Los detalles del protocolo se explican en las siguientes subsecciones. 4.3 Pagos no vinculables Las direcciones clásicas Bitcoin, una vez publicadas, se convierten en un identificador inequívoco para las direcciones entrantes. pagos, vinculándolos entre sí y vinculándolos a los seudónimos del destinatario. Si alguien quiere recibir una transacción "desvinculada", debe transmitir su dirección al remitente por un canal privado. Si quiere recibir diferentes transacciones de las que no se puede demostrar que pertenecen al mismo propietario debería generar todas las diferentes direcciones y nunca publicarlas con su propio seudónimo. Público Privado Alicia carol Dirección 1 de Bob Dirección 2 de Bob La clave de Bob 1 La llave de Bob 2 Bob Fig. 2. Modelo tradicional de claves/transacciones Bitcoin. Proponemos una solución que permite a un usuario publicar una única dirección y recibir información incondicional. pagos no vinculables. El destino de cada salida de CryptoNote (por defecto) es una clave pública, derivado de la dirección del destinatario y los datos aleatorios del remitente. La principal ventaja contra Bitcoin es que cada clave de destino es única de forma predeterminada (a menos que el remitente use los mismos datos para cada de sus transacciones al mismo destinatario). Por lo tanto, no existe el problema de la “reutilización de direcciones” por parte de diseño y ningún observador puede determinar si alguna transacción se envió a una dirección o enlace específico dos direcciones juntas. 6 la clave de usuario privada es un par (a, b) de dos claves electrónicas privadas diferentes; la clave de seguimiento es un par (a, B) de clave electrónica pública y privada (donde B = bG y a ̸= b); la clave pública de usuario es un par (A, B) de dos claves electrónicas públicas derivadas de (a, b); La dirección estándar es una representación de una clave de usuario pública dada en una cadena amigable para los humanos. con corrección de errores; La dirección truncada es una representación de la segunda mitad (punto B) de una clave de usuario pública dada. en una cadena amigable para los humanos con corrección de errores. La estructura de la transacción sigue siendo similar a la estructura en Bitcoin: cada usuario puede elegir varios pagos entrantes independientes (transacciones salidas), firmarlos con el correspondiente claves privadas y enviarlas a diferentes destinos. Contrariamente al modelo de Bitcoin, donde un usuario posee una clave pública y privada única, en el En el modelo propuesto, el remitente genera una clave pública única basada en la dirección del destinatario y algunos datos aleatorios. En este sentido, una transacción entrante para el mismo destinatario se envía a un clave pública de un solo uso (no directamente a una dirección única) y solo el destinatario puede recuperar la parte privada correspondiente para canjear sus fondos (usando su clave privada única). El destinatario puede gastar los fondos utilizando un anillo de firma, manteniendo anónimos su propiedad y sus gastos reales. Los detalles del protocolo se explican en las siguientes subsecciones. 4.3 Pagos no vinculables Las direcciones clásicas Bitcoin, una vez publicadas, se convierten en un identificador inequívoco para las direcciones entrantes. pagos, vinculándolos entre sí y vinculándolos a los seudónimos del destinatario. Si alguien quiere recibir una transacción "desvinculada", debe transmitir su dirección al remitente por un canal privado. Si quiere recibir diferentes transacciones de las que no se puede demostrar que pertenecen al mismo propietario debería generar todas las diferentes direcciones y nunca publicarlas con su propio seudónimo. Público Privado Alicia carol Dirección 1 de Bob Dirección 2 de Bob La clave de Bob 1 La llave de Bob 2 Bob Fig. 2. Mod de transacciones/claves tradicionales Bitcoinel. Proponemos una solución que permite a un usuario publicar una única dirección y recibir información incondicional. pagos no vinculables. El destino de cada salida de CryptoNote (por defecto) es una clave pública, derivado de la dirección del destinatario y los datos aleatorios del remitente. La principal ventaja contra Bitcoin es que cada clave de destino es única de forma predeterminada (a menos que el remitente use los mismos datos para cada de sus transacciones al mismo destinatario). Por lo tanto, no existe el problema de la “reutilización de direcciones” por parte de diseño y ningún observador puede determinar si alguna transacción se envió a una dirección o enlace específico dos direcciones juntas. 6 11 Esto es como Bitcoin, pero con infinitos apartados de correos anónimos, canjeables sólo por el receptor. generar una clave privada que sea tan anónima como puede serlo una firma en anillo. Bitcoin funciona de esta manera. Si Alex tiene 0.112 Bitcoin en su billetera que acaba de recibir de Frank, realmente tiene un mensaje "Yo, [FRANK], envío 0.112 Bitcoin a [alex] + H0 + N0" donde 1) Frank ha firmado el mensaje con su clave privada [FRANK], 2) Frank ha firmado el mensaje con la clave pública de Alex clave, [alex], 3) Frank ha incluido alguna forma de la historia del bitcoin, H0, y 4) Frank incluye un bit aleatorio de datos llamado nonce, N0. Si Alex quiere enviar 0.011 Bitcoin a Charlene, tomará el mensaje de Frank y lo establecerá en H1 y firmará dos mensajes: uno para su transacción y otro para el cambio. H1= "Yo, [FRANK], envío 0.112 Bitcoin a [alex] + H0 + N" "Yo, [ALEX], envío 0.011 Bitcoin a [charlene] + H1 + N1" "Yo, [ALEX], envío 0.101 Bitcoin como cambio a [alex] + H1 + N2." donde Alex firma ambos mensajes con su clave privada [ALEX], el primer mensaje con la de Charlene clave pública [charlene], el segundo mensaje con la clave pública de Alex [alex], e incluyendo el historiales y algunos nonces N1 y N2 generados aleatoriamente de forma apropiada. Cryptonote funciona de esta manera: Si Alex tiene 0.112 Cryptonote en su billetera que acaba de recibir de Frank, realmente tiene un mensaje "Yo, [alguien en un grupo ad-hoc], envío 0.112 Cryptonote a [una dirección única] + H0 +N0." Alex descubrió que este era su dinero al comparar su clave privada [ALEX] con [una dirección única] para cada mensaje que pasa, y si desea gastarlo, lo hace en de la siguiente manera. Ella elige un destinatario del dinero, tal vez Charlene haya comenzado a votar a favor de los ataques con drones, por lo que Alex quiere enviarle dinero a Brenda. Entonces Alex busca la clave pública de Brenda, [brenda], y utiliza su propia clave privada, [ALEX], para generar una dirección única [ALEX+brenda]. ella luego elige una colección arbitraria C de la red de usuarios de cryptonote y construye una firma de anillo de este grupo ad-hoc. Configuramos nuestro historial como el mensaje anterior, agregamos nonces y proceder como de costumbre. H1 = "Yo, [alguien en un grupo ad-hoc], envío 0.112 Cryptonote a [una dirección única] + H0 +N0." "Yo, [alguien de la colección C], envío 0.011 Cryptonote a [dirección única hecha por ALEX+brenda] + H1 + N1" "Yo, [alguien de la colección C], envío 0.101 Cryptonote como cambio a [dirección única hecha por ALEX+alex] + H1 + N2" Ahora, Alex y Brenda escanean todos los mensajes entrantes en busca de direcciones únicas que creado usando su clave. Si encuentran alguno, entonces ese mensaje es nuevo y propio. criptonota! E incluso entonces, la transacción seguirá llegando al blockchain. Si las monedas que entran en esa dirección Se sabe que son enviados por delincuentes, contribuyentes políticos o por comités y cuentas. con presupuestos estrictos (es decir, malversación), o si el nuevo propietario de estas monedas alguna vez comete un error y envía estas monedas a una dirección común con monedas que se sabe que posee, la plantilla de anonimato está arriba en bitcoin.

la clave de usuario privada es un par (a, b) de dos claves electrónicas privadas diferentes; la clave de seguimiento es un par (a, B) de clave electrónica pública y privada (donde B = bG y a ̸= b); la clave pública de usuario es un par (A, B) de dos claves electrónicas públicas derivadas de (a, b); La dirección estándar es una representación de una clave de usuario pública dada en una cadena amigable para los humanos. con corrección de errores; La dirección truncada es una representación de la segunda mitad (punto B) de una clave de usuario pública dada. en una cadena amigable para los humanos con corrección de errores. La estructura de la transacción sigue siendo similar a la estructura en Bitcoin: cada usuario puede elegir varios pagos entrantes independientes (transacciones salidas), firmarlos con el correspondiente claves privadas y enviarlas a diferentes destinos. Contrariamente al modelo de Bitcoin, donde un usuario posee una clave pública y privada única, en el En el modelo propuesto, el remitente genera una clave pública única basada en la dirección del destinatario y algunos datos aleatorios. En este sentido, una transacción entrante para el mismo destinatario se envía a un clave pública de un solo uso (no directamente a una dirección única) y solo el destinatario puede recuperar la parte privada correspondiente para canjear sus fondos (usando su clave privada única). El destinatario puede gastar los fondos utilizando un anillo de firma, manteniendo anónimos su propiedad y sus gastos reales. Los detalles del protocolo se explican en las siguientes subsecciones. 4.3 Pagos no vinculables Las direcciones clásicas Bitcoin, una vez publicadas, se convierten en un identificador inequívoco para las direcciones entrantes. pagos, vinculándolos entre sí y vinculándolos a los seudónimos del destinatario. Si alguien quiere recibir una transacción "desvinculada", debe transmitir su dirección al remitente por un canal privado. Si quiere recibir diferentes transacciones de las que no se puede demostrar que pertenecen al mismo propietario debería generar todas las diferentes direcciones y nunca publicarlas con su propio seudónimo. Público Privado Alicia carol Dirección 1 de Bob Dirección 2 de Bob La clave de Bob 1 La llave de Bob 2 Bob Fig. 2. Modelo tradicional de claves/transacciones Bitcoin. Proponemos una solución que permite a un usuario publicar una única dirección y recibir información incondicional. pagos no vinculables. El destino de cada salida de CryptoNote (por defecto) es una clave pública, derivado de la dirección del destinatario y los datos aleatorios del remitente. La principal ventaja frente a Bitcoin es que cada clave de destino es única de forma predeterminada (a menos que el remitente use los mismos datos para cada de sus transacciones al mismo destinatario). Por lo tanto, no existe el problema de la “reutilización de direcciones” por parte de diseño y ningún observador puede determinar si alguna transacción se envió a una dirección o enlace específico dos direcciones juntas. 6 la clave de usuario privada es un par (a, b) de dos claves electrónicas privadas diferentes; la clave de seguimiento es un par (a, B) de clave electrónica pública y privada (donde B = bG y a ̸= b); la clave pública de usuario es un par (A, B) de dos claves electrónicas públicas derivadas de (a, b); La dirección estándar es una representación de una clave de usuario pública dada en una cadena amigable para los humanos. con corrección de errores; La dirección truncada es una representación de la segunda mitad (punto B) de una clave de usuario pública dada. en una cadena amigable para los humanos con corrección de errores. La estructura de la transacción sigue siendo similar a la estructura en Bitcoin: cada usuario puede elegir varios pagos entrantes independientes (transacciones salidas), firmarlos con el correspondiente claves privadas y enviarlas a diferentes destinos. Contrariamente al modelo de Bitcoin, donde un usuario posee una clave pública y privada única, en el En el modelo propuesto, el remitente genera una clave pública única basada en la dirección del destinatario y algunos datos aleatorios. En este sentido, una transacción entrante para el mismo destinatario se envía a un clave pública de un solo uso (no directamente a una dirección única) y solo el destinatario puede recuperar la parte privada correspondiente para canjear sus fondos (usando su clave privada única). El destinatario puede gastar los fondos utilizando un anillo de firma, manteniendo anónimos su propiedad y sus gastos reales. Los detalles del protocolo se explican en las siguientes subsecciones. 4.3 Pagos no vinculables Las direcciones clásicas Bitcoin, una vez publicadas, se convierten en un identificador inequívoco para las direcciones entrantes. pagos, vinculándolos entre sí y vinculándolos a los seudónimos del destinatario. Si alguien quiere recibir una transacción "desvinculada", debe transmitir su dirección al remitente por un canal privado. Si quiere recibir diferentes transacciones de las que no se puede demostrar que pertenecen al mismo propietario debería generar todas las diferentes direcciones y nunca publicarlas con su propio seudónimo. Público Privado Alicia carol Dirección 1 de Bob Dirección 2 de Bob La clave de Bob 1 La llave de Bob 2 Bob Fig. 2. Mod tradicional de claves/transacciones Bitcoinel. Proponemos una solución que permite a un usuario publicar una única dirección y recibir información incondicional. pagos no vinculables. El destino de cada salida de CryptoNote (por defecto) es una clave pública, derivado de la dirección del destinatario y los datos aleatorios del remitente. La principal ventaja contra Bitcoin es que cada clave de destino es única de forma predeterminada (a menos que el remitente use los mismos datos para cada de sus transacciones al mismo destinatario). Por lo tanto, no existe el problema de la “reutilización de direcciones” por parte de diseño y ningún observador puede determinar si alguna transacción se envió a una dirección o enlace específico dos direcciones juntas. 6 12 Por lo tanto, en lugar de que los usuarios envíen monedas desde la dirección (que en realidad es una clave pública) a la dirección (otra clave pública) usando sus claves privadas, los usuarios envían monedas desde un apartado de correos único (que se genera usando la clave pública de tus amigos) a un apartado de correos único (de manera similar) usando tu propias claves privadas. En cierto sentido, estamos diciendo: "Está bien, todos quiten las manos del dinero mientras se entrega". transferido! Basta con saber que nuestras llaves pueden abrir esa caja y que Sabemos cuánto dinero hay en la caja. Nunca ponga sus huellas dactilares en el apartado postal o realmente úselo, simplemente intercambie la caja llena de efectivo. De esa manera no sabemos quién envió qué, pero el contenido de estas direcciones públicas sigue siendo fluido, fungible, divisible y todavía poseemos todas las otras buenas cualidades del dinero que deseamos, como bitcoin". Un conjunto infinito de apartados de correos. Publicas una dirección, yo tengo una clave privada. Utilizo mi clave privada y tu dirección, y algunos datos aleatorios, para generar una clave pública. El algoritmo está diseñado de tal manera que, desde su dirección se utilizó para generar la clave pública, solo SU clave privada funciona para desbloquear la mensaje. Una observadora, Eve, te ve publicar tu dirección y ve la clave pública que anuncio. Sin embargo, ella no sabe si anuncié mi clave pública según tu dirección o la de ella, o la de Brenda. o el de Charlene, o el de quien sea. Ella compara su clave privada con la clave pública que anuncié. y ve que no funciona; no es su dinero. Ella no conoce la clave privada de nadie más y sólo el destinatario del mensaje tiene la clave privada que puede desbloquear el mensaje. entonces nadie escuchar puede determinar quién recibió el dinero y mucho menos tomarlo.

Público Privado Alicia carol Clave de un solo uso Clave de un solo uso Clave de un solo uso Bob La llave de Bob Dirección de Bob Fig. 3. Modelo de transacciones/claves de CryptoNote. Primero, el remitente realiza un intercambio Diffe-Hellman para obtener un secreto compartido de sus datos y la mitad de la dirección del destinatario. Luego calcula una clave de destino única, utilizando el valor compartido secreto y la segunda mitad de la dirección. Se requieren dos claves electrónicas diferentes del destinatario para estos dos pasos, una dirección CryptoNote estándar es casi el doble de grande que una billetera Bitcoin dirección. El receptor también realiza un intercambio Diffie-Hellman para recuperar el correspondiente clave secreta. Una secuencia de transacción estándar es la siguiente: 1. Alice quiere enviar un pago a Bob, quien ha publicado su dirección estándar. ella descomprime la dirección y obtiene la clave pública de Bob (A, B). 2. Alice genera un \(r \in [1, l - 1]\) aleatorio y calcula una clave pública única \(P = H_s(rA)G +\) b. 3. Alice usa P como clave de destino para la salida y también empaqueta el valor R = rG (como parte del intercambio Diffe-Hellman) en algún momento de la transacción. Tenga en cuenta que ella puede crear otras salidas con claves públicas únicas: las claves de diferentes destinatarios (Ai, Bi) implican diferentes Pi incluso con la misma r. Transacción clave pública de transmisión salida de transmisión Cantidad Clave de destino R = rG P = Hs(rA)G + B del receptor clave pública Datos aleatorios del remitente r (A,B) Fig. 4. Estructura de transacción estándar. 4. Alice envía la transacción. 5. Bob verifica cada transacción que pasa con su clave privada (a, b) y calcula P ′ = Hs(aR)G + B. Si la transacción de Alice con Bob como destinatario estaba entre ellas, entonces aR = arG = rA y P ′ = P. 7 Público Privado Alicia carol Clave de un solo uso Clave de un solo uso Clave de un solo uso Bob La llave de Bob Dirección de Bob Fig. 3. Modelo de transacciones/claves de CryptoNote. Primero, el remitente realiza un intercambio Diffe-Hellman para obtener un secreto compartido de sus datos y la mitad de la dirección del destinatario. Luego calcula una clave de destino única, utilizando el valor compartido secreto y la segunda mitad de la dirección. Se requieren dos claves electrónicas diferentes del destinatario para estos dos pasos, una dirección CryptoNote estándar es casi el doble de grande que una billetera Bitcoin dirección. El receptor también realiza un intercambio Diffie-Hellman para recuperar el correspondiente clave secreta. Una secuencia de transacción estándar es la siguiente: 1. Alice quiere enviar un pago a Bob, quien ha publicado su dirección estándar. ella descomprime la dirección y obtiene la clave pública de Bob (A, B). 2. Alice genera un \(r \in [1, l - 1]\) aleatorio y calcula una clave pública única \(P = H_s(rA)G +\) b. 3. Alice usa P como clave de destino para la salida y también empaqueta el valor R = rG (como parte del intercambio Diffe-Hellman) en algún momento de la transacción. Tenga en cuenta que ella puede crear otras salidas con claves públicas únicas: las claves de diferentes destinatarios (Ai, Bi) implican diferentes Pi incluso con la misma r. Transacción clave pública de transmisión salida de transmisión Cantidad Clave de destino R = rG P = Hs(rA)G + B del receptor clave pública Datos aleatorios del remitente r (A,B) Fig. 4. Estructura de transacción estándar. 4. Alice envía la transacción. 5. Bob verifica cada transacción que pasa con su clave privada (a, b) y calcula P ′ = Hs(aR)G + B. Si la transacción de Alice con Bob como destinatario estaba entre ellas, entonces aR = arG = rA y P ′ = P. 7 13 Me pregunto qué tan doloroso sería implementar una elección de criptografía. esquema. Elíptica o no. Entonces, si algún esquema se rompe en el futuro, la moneda cambia sin preocupación. Probablemente un gran dolor de cabeza. Bien, esto es exactamente lo que acabo de explicar en mi comentario anterior. El tipo Diffe-Hellman Los intercambios son buenos. Digamos que Alex y Brenda tienen cada uno un número secreto, A y B, y un número No les importa mantener el secreto, a y b. Quieren generar un secreto compartido sin Eva lo descubre. A Diffe y Hellman se les ocurrió una manera para que Alex y Brenda compartieran el números públicos a y b, pero no los números privados A y B, y generan un secreto compartido, K. Usando este secreto compartido, K, sin que Eva escuche para poder generar el mismo K, Alex y Brenda ahora pueden usar K como clave de cifrado secreta y devolver mensajes secretos. y adelante. Así es como PUEDE funcionar, aunque debería funcionar con números mucho mayores que 100. Usaremos 100 porque trabajar con los números enteros módulo 100 equivale a "descartar todos sino los dos últimos dígitos de un número." Alex y Brenda eligen cada uno A, a, B y b. Mantienen A y B en secreto. Alex le dice a Brenda su valor de módulo 100 (solo los dos últimos dígitos) y Brenda le dice a Alex. su valor de b módulo 100. Ahora Eva sabe (a,b) módulo 100. Pero Alex sabe (a,b,A) por lo que puede calcular x=abA módulo 100.Alex corta todo excepto el último dígito porque estamos trabajando. bajo los números enteros módulo 100 nuevamente. De manera similar, Brenda sabe (a,b,B) por lo que puede calcular y=abB módulo 100. Alex ahora puede publicar x y Brenda puede publicar y. Pero ahora Alex puede calcular yA = abBA módulo 100, y Brenda puede calcular xB = abBA módulo 100. ¡Ambos saben el mismo número! Pero todo lo que Eva ha oído es (a,b,abA,abB). No tiene una manera fácil de calcular abA*B. Ésta es la forma más fácil y menos segura de pensar en el intercambio Diffe-Hellman. Existen versiones más seguras. Pero la mayoría de las versiones funcionan debido a la factorización de números enteros y discreta. Los logaritmos son difíciles y ambos problemas se resuelven fácilmente con computadoras cuánticas. Investigaré si existe alguna versión que sea resistente a la cuántica. http://en.wikipedia.org/wiki/Diffie%E2%80%93Hellman_key_exchange A la "secuencia txn estándar" que se enumera aquí le faltan muchos pasos, como FIRMAS. Aquí simplemente se dan por sentado. Lo cual es realmente malo, porque el orden en el que firmar cosas, la información incluida en el mensaje firmado, etc.... todo esto es extremadamente importante para el protocolo. Equivocarse uno o dos de los pasos, incluso ligeramente fuera de orden, mientras se implementa "el secuencia de transacción estándar" podría poner en duda la seguridad de todo el sistema. Además, las pruebas presentadas más adelante en el artículo pueden no ser lo suficientemente rigurosas si El marco bajo el cual trabajan está definido de manera tan vaga como en esta sección.

Público Privado Alicia carol Clave de un solo uso Clave de un solo uso Clave de un solo uso Bob La llave de Bob Dirección de Bob Fig. 3. Modelo de transacciones/claves de CryptoNote. Primero, el remitente realiza un intercambio Diffe-Hellman para obtener un secreto compartido de sus datos y la mitad de la dirección del destinatario. Luego calcula una clave de destino única, utilizando el valor compartido secreto y la segunda mitad de la dirección. Se requieren dos claves electrónicas diferentes del destinatario para estos dos pasos, una dirección CryptoNote estándar es casi el doble de grande que una billetera Bitcoin dirección. El receptor también realiza un intercambio Diffie-Hellman para recuperar el correspondiente clave secreta. Una secuencia de transacción estándar es la siguiente: 1. Alice quiere enviar un pago a Bob, quien ha publicado su dirección estándar. ella descomprime la dirección y obtiene la clave pública de Bob (A, B). 2. Alice genera un \(r \in [1, l - 1]\) aleatorio y calcula una clave pública única \(P = H_s(rA)G +\) b. 3. Alice usa P como clave de destino para la salida y también empaqueta el valor R = rG (como parte del intercambio Diffe-Hellman) en algún momento de la transacción. Tenga en cuenta que ella puede crear otras salidas con claves públicas únicas: las claves de diferentes destinatarios (Ai, Bi) implican diferentes Pi incluso con la misma r. Transacción clave pública de transmisión salida de transmisión Cantidad Clave de destino R = rG P = Hs(rA)G + B del receptor clave pública Datos aleatorios del remitente r (A,B) Fig. 4. Estructura de transacción estándar. 4. Alice envía la transacción. 5. Bob verifica cada transacción que pasa con su clave privada (a, b) y calcula P ′ = Hs(aR)G + B. Si la transacción de Alice con Bob como destinatario estaba entre ellas, entonces aR = arG = rA y P ′ = P. 7 Público Privado Alicia carol Clave de un solo uso Clave de un solo uso Clave de un solo uso Bob La llave de Bob Dirección de Bob Fig. 3. Modelo de transacciones/claves de CryptoNote. Primero, el remitente realiza un intercambio Diffe-Hellman para obtener un secreto compartido de sus datos y la mitad de la dirección del destinatario. Luego calcula una clave de destino única, utilizando el valor compartido secreto y la segunda mitad de la dirección. Se requieren dos claves electrónicas diferentes del destinatario para estos dos pasos, una dirección CryptoNote estándar es casi el doble de grande que una billetera Bitcoin dirección. El receptor también realiza un intercambio Diffie-Hellman para recuperar el correspondiente clave secreta. Una secuencia de transacción estándar es la siguiente: 1. Alice quiere enviar un pago a Bob, quien ha publicado su dirección estándar. ella descomprime la dirección y obtiene la clave pública de Bob (A, B). 2. Alice genera un \(r \in [1, l - 1]\) aleatorio y calcula una clave pública única \(P = H_s(rA)G +\) b. 3. Alice usa P como clave de destino para la salida y también empaqueta el valor R = rG (como parte del intercambio Diffe-Hellman) en algún momento de la transacción. Tenga en cuenta que ella puede crear otras salidas con claves públicas únicas: las claves de diferentes destinatarios (Ai, Bi) implican diferentes Pi incluso con la misma r. Transacción clave pública de transmisión salida de transmisión Cantidad Clave de destino R = rG P = Hs(rA)G + B del receptor clave pública Datos aleatorios del remitente r (A,B) Fig. 4. Estructura de transacción estándar. 4. Alice envía la transacción. 5. Bob verifica cada transacción que pasa con su clave privada (a, b) y calcula P ′ = Hs(aR)G + B. Si la transacción de Alice con Bob como destinatario estaba entre ellas, entonces aR = arG = rA y P ′ = P. 7 14 Tenga en cuenta que los autores hacen un trabajo terrible al mantener la terminología correcta en todo momento. el texto, pero especialmente en la siguiente parte. La próxima encarnación de este artículo será necesariamente mucho más riguroso. En el texto se refieren a P como su clave pública única. En el diagrama, se refieren a R como su "clave pública Tx" y P como su "clave de destino". Si tuviera que reescribir esto, lo haría Explique muy específicamente cierta terminología antes de discutir estas secciones. Este codo es enorme. Consulte la página 5. ¿Quién elige a Ell? El diagrama ilustra que la clave pública de la transacción R = rG, que es aleatoria y elegida por el remitente, no forma parte de la salida Tx. Esto se debe a que podría ser el mismo para múltiples transacciones a varias personas y no se utiliza MAS TARDE para gastar. Se genera una nueva R cada vez que desee transmitir una nueva transacción CryptoNote. Además, R sólo se utiliza para comprobar si eres el destinatario de la transacción. No son datos basura, pero son basura para cualquiera. sin las claves privadas asociadas con (A,B). La clave de Destino, por otro lado, P = Hs(rA)G + B es parte de la salida Tx. todos revisar los datos de cada transacción que pasa debe comparar su propio P* generado con esta P para ver si son propietarios de esta transacción pasajera. Cualquier persona con una transacción no gastada (UTXO) tendrá un montón de estas Ps por ahí con cantidades. para gastard, ellos firmar algún mensaje nuevo incluyendo P. Alice debe firmar esta transacción con claves privadas de un solo uso asociadas con las claves de destino de los resultados de la transacción no gastados. Cada llave de destino propiedad de Alice viene equipada con una clave privada única que también pertenece (presumiblemente) a Alice. Cada vez que Alice quiere envíame el contenido de una clave de destino a mí, a Bob, a Brenda, a Charlie o a Charlene, ella utiliza su clave privada para firmar la transacción. Al recibir la transacción, recibiré un nuevo Tx clave pública, una nueva clave pública de Destino y podré recuperar una nueva clave privada única x. Combinando mi clave privada única, x, con el destino público de la nueva transacción La(s) clave(s) es cómo enviamos una nueva transacción.

  1. Bob puede recuperar la clave privada única correspondiente: x = Hs(aR) + b, de modo que P = xG. Puede gastar esta producción en cualquier momento firmando una transacción con x. Transacción clave pública de transmisión salida de transmisión Cantidad Clave de destino P ′ = Hs(aR)G + bG clave pública de un solo uso x = Hs(aR) + b clave privada de un solo uso del receptor clave privada (a,b) R P′ ?=P Fig. 5. Verificación de transacciones entrantes. Como resultado, Bob recibe pagos asociados con claves públicas únicas que son invinculable para un espectador. Algunas notas adicionales: • Cuando Bob “reconoce” sus transacciones (ver paso 5) prácticamente usa sólo la mitad de su información privada: (a, B). Este par, también conocido como clave de seguimiento, se puede pasar a un tercero (Carol). Bob puede delegarle el procesamiento de nuevas transacciones. Bob no necesita confiar explícitamente en Carol, porque no puede recuperar la clave secreta de un solo uso p sin la clave privada completa de Bob (a, b). Este enfoque es útil cuando Bob carece de ancho de banda. o potencia de cálculo (teléfonos inteligentes, carteras de hardware, etc.). • En caso de que Alice quiera demostrar que envió una transacción a la dirección de Bob, puede revelarla r o utilizar cualquier tipo de protocolo de conocimiento cero para demostrar que sabe r (por ejemplo, firmando la transacción con r). • Si Bob quiere tener una dirección compatible con auditoría donde se realicen todas las transacciones entrantes enlazable, puede publicar su clave de seguimiento o utilizar una dirección truncada. esa dirección representan sólo una clave electrónica pública B, y la parte restante requerida por el protocolo es derivado de él de la siguiente manera: a = Hs(B) y A = Hs(B)G. En ambos casos cada persona es capaz de "reconocer" todas las transacciones entrantes de Bob, pero, por supuesto, ninguna puede gastar el fondos encerrados dentro de ellos sin la clave secreta b. 4.4 Firmas de anillo únicas Un protocolo basado en firmas de anillo únicas permite a los usuarios lograr una desvinculación incondicional. Desafortunadamente, los tipos comunes de firmas criptográficas permiten rastrear las transacciones hasta sus respectivos remitentes y receptores. Nuestra solución a esta deficiencia radica en utilizar una firma diferente tipo que los que se utilizan actualmente en los sistemas de efectivo electrónico. Primero proporcionaremos una descripción general de nuestro algoritmo sin referencia explícita a efectivo electrónico. Una firma de anillo de un solo uso contiene cuatro algoritmos: (GEN, SIG, VER, LNK): GEN: toma parámetros públicos y genera un par ec (P, x) y una clave pública I. SIG: toma un mensaje m, un conjunto \(S'\) de claves públicas {Pi}i̸=s, un par (Ps, xs) y genera una firma \(\sigma\) y un conjunto \(S = \)S'\( \cup \{P_s\}\). 8
  2. Bob puede recuperar la clave privada única correspondiente: x = Hs(aR) + b, de modo que P = xG. Puede gastar esta producción en cualquier momento firmando una transacción con x. Transacción clave pública de transmisión salida de transmisión Cantidad Clave de destino P ′ = Hs(aR)G + bG clave pública de un solo uso x = Hs(aR) + b clave privada de un solo uso del receptor clave privada (a,b) R P′ ?=P Fig. 5. Verificación de transacciones entrantes. Como resultado, Bob recibe pagos asociados con claves públicas únicas que son invinculable para un espectador. Algunas notas adicionales: • Cuando Bob “reconoce” sus transacciones (ver paso 5) prácticamente usa sólo la mitad de su información privada: (a, B). Este par, también conocido como clave de seguimiento, se puede pasar a un tercero (Carol). Bob puede delegarle el procesamiento de nuevas transacciones. Bob no necesita confiar explícitamente en Carol, porque no puede recuperar la clave secreta de un solo uso p sin la clave privada completa de Bob (a, b). Este enfoque es útil cuando Bob carece de ancho de banda. o potencia de cálculo (teléfonos inteligentes, carteras de hardware, etc.). • En caso de que Alice quiera demostrar que envió una transacción a la dirección de Bob, puede revelarla r o utilizar cualquier tipo de protocolo de conocimiento cero para demostrar que sabe r (por ejemplo, firmando la transacción con r). • Si Bob quiere tener una dirección compatible con auditoría donde se realicen todas las transacciones entrantes enlazable, puede publicar su clave de seguimiento o utilizar una dirección truncada. esa dirección representan sólo una clave electrónica pública B, y la parte restante requerida por el protocolo es derivado de él de la siguiente manera: a = Hs(B) y A = Hs(B)G. En ambos casos cada persona es capaz de "reconocer" todas las transacciones entrantes de Bob, pero, por supuesto, ninguna puede gastar el fondos encerrados dentro de ellos sin la clave secreta b. 4.4 Firmas de anillo únicas Un protocolo basado en firmas de anillo únicas permite a los usuarios lograr una desvinculación incondicional. Desafortunadamente, los tipos comunes de firmas criptográficas permiten rastrear las transacciones hasta sus respectivos remitentes y receptores. Nuestra solución a esta deficiencia radica en utilizar una firma diferente tipo que los que se utilizan actualmente en los sistemas de efectivo electrónico. Primero proporcionaremos un gen.descripción general de nuestro algoritmo sin referencia explícita a efectivo electrónico. Una firma de anillo de un solo uso contiene cuatro algoritmos: (GEN, SIG, VER, LNK): GEN: toma parámetros públicos y genera un par ec (P, x) y una clave pública I. SIG: toma un mensaje m, un conjunto \(S'\) de claves públicas {Pi}i̸=s, un par (Ps, xs) y genera una firma \(\sigma\) y un conjunto \(S = \)S'\( \cup \{P_s\}\). 8 15 ¿Cómo se ve aquí el resultado de una transacción no gastada? El diagrama sugiere que el resultado de la transacción consta solo de dos puntos de datos: monto y clave de destino. Pero esto no es Suficiente porque cuando intento gastar esta "salida" todavía necesitaré saber R=rG. Recuerde, r es elegido por el remitente, y R se utiliza para reconocer las criptonotas entrantes como su propia y b) utilizada para generar la clave privada única utilizada para "reclamar" su criptonota. ¿La parte de esto que no entiendo? Tomando el teórico "está bien, tenemos estos firmas y transacciones, y las pasamos de un lado a otro" al mundo de la programación "Está bien, ¿qué información específicamente constituye un individuo UTXO?" La mejor manera de responder a esa pregunta es profundizar en el cuerpo del código completamente sin comentarios. Así se hace, equipo de bytecoin. Recuerde: vinculabilidad significa "¿envió la misma persona?" y desvinculación significa "hizo lo mismo persona recibe?". Por lo tanto, un sistema puede ser vinculable o no vinculable, desvinculable o no desvinculable. Molesto, lo sé. Entonces, cuando Nic van Saberhagen dice aquí "...los pagos entrantes [están] asociados con pagos únicos claves públicas que no pueden vincularse para un espectador", veamos a qué se refiere. Primero, considere una situación en la que Alice envía a Bob dos transacciones separadas del mismo dirección a la misma dirección. En el universo Bitcoin, Alice ya cometió el error de envío desde la misma dirección y, por lo tanto, la transacción no cumplió con nuestro deseo de obtener información limitada. vinculabilidad. Además, dado que envió el dinero a la misma dirección, no cumplió con nuestro deseo. por desvinculación. Esta transacción de bitcoin era (totalmente) vinculable y no desvinculable. Por otro lado, en el universo de las criptomonedas, digamos que Alice le envía a Bob algunas criptomonedas, usando la dirección pública de Bob. Ella elige como conjunto ofuscante de claves públicas todas las claves públicas conocidas. llaves en el área metropolitana de Washington DC. Alex genera una clave pública única usando la suya propia información y la información pública de Bob. Ella envía el dinero y cualquier observador se dará cuenta. sólo podrá deducir "Alguien del área metropolitana de Washington DC envió 2,3 criptonotas a la dirección pública única XYZ123." Aquí tenemos un control probabilístico sobre la vinculabilidad, por lo que lo llamaremos "casi no vinculable". También vemos solo las claves públicas únicas a las que se envía el dinero. Incluso si sospechábamos del receptor era Bob, no tenemos sus claves privadas y, por lo tanto, no podemos probar si una transacción aprobada pertenece a Bob y mucho menos generar su clave privada única para canjear su criptonota. entonces esto es, de hecho, totalmente "invinculable". Entonces, este es el truco más ingenioso de todos. ¿Quién quiere realmente confiar en otro MtGox? podemos ser Es cómodo almacenar cierta cantidad de BTC en Coinbase, pero lo último en seguridad de bitcoin es una billetera física. Lo cual es un inconveniente. En este caso, puedes regalar sin confianza la mitad de tu clave privada sin comprometer tu propia capacidad para gastar dinero. Al hacer esto, todo lo que estás haciendo es decirle a alguien cómo romper la desvinculación. el otro Se conservan las propiedades del CN que actúa como moneda, como prueba contra el doble gasto y todo eso.

  3. Bob puede recuperar la clave privada única correspondiente: x = Hs(aR) + b, de modo que P = xG. Puede gastar esta producción en cualquier momento firmando una transacción con x. Transacción clave pública de transmisión salida de transmisión Cantidad Clave de destino P ′ = Hs(aR)G + bG clave pública de un solo uso x = Hs(aR) + b clave privada de un solo uso del receptor clave privada (a,b) R P′ ?=P Fig. 5. Verificación de transacciones entrantes. Como resultado, Bob recibe pagos asociados con claves públicas únicas que son invinculable para un espectador. Algunas notas adicionales: • Cuando Bob “reconoce” sus transacciones (ver paso 5) prácticamente usa sólo la mitad de su información privada: (a, B). Este par, también conocido como clave de seguimiento, se puede pasar a un tercero (Carol). Bob puede delegarle el procesamiento de nuevas transacciones. Bob no necesita confiar explícitamente en Carol, porque no puede recuperar la clave secreta de un solo uso p sin la clave privada completa de Bob (a, b). Este enfoque es útil cuando Bob carece de ancho de banda. o potencia de cálculo (teléfonos inteligentes, carteras de hardware, etc.). • En caso de que Alice quiera demostrar que envió una transacción a la dirección de Bob, puede revelarla r o utilizar cualquier tipo de protocolo de conocimiento cero para demostrar que sabe r (por ejemplo, firmando la transacción con r). • Si Bob quiere tener una dirección compatible con auditoría donde se realicen todas las transacciones entrantes enlazable, puede publicar su clave de seguimiento o utilizar una dirección truncada. esa dirección representan sólo una clave electrónica pública B, y la parte restante requerida por el protocolo es derivado de él de la siguiente manera: a = Hs(B) y A = Hs(B)G. En ambos casos cada persona es capaz de "reconocer" todas las transacciones entrantes de Bob, pero, por supuesto, ninguna puede gastar el fondos encerrados dentro de ellos sin la clave secreta b. 4.4 Firmas de anillo únicas Un protocolo basado en firmas de anillo únicas permite a los usuarios lograr una desvinculación incondicional. Desafortunadamente, los tipos comunes de firmas criptográficas permiten rastrear las transacciones hasta sus respectivos remitentes y receptores. Nuestra solución a esta deficiencia radica en utilizar una firma diferente tipo que los que se utilizan actualmente en los sistemas de efectivo electrónico. Primero proporcionaremos una descripción general de nuestro algoritmo sin referencia explícita a efectivo electrónico. Una firma de anillo de un solo uso contiene cuatro algoritmos: (GEN, SIG, VER, LNK): GEN: toma parámetros públicos y genera un par ec (P, x) y una clave pública I. SIG: toma un mensaje m, un conjunto \(S'\) de claves públicas {Pi}i̸=s, un par (Ps, xs) y genera una firma \(\sigma\) y un conjunto \(S = \)S'\( \cup \{P_s\}\). 8

  4. Bob puede recuperar la clave privada única correspondiente: x = Hs(aR) + b, de modo que P = xG. Puede gastar esta producción en cualquier momento firmando una transacción con x. Transacción clave pública de transmisión salida de transmisión Cantidad Clave de destino P ′ = Hs(aR)G + bG clave pública de un solo uso x = Hs(aR) + b clave privada de un solo uso del receptor clave privada (a,b) R P′ ?=P Fig. 5. Verificación de transacciones entrantes. Como resultado, Bob recibe pagos asociados con claves públicas únicas que son invinculable para un espectador. Algunas notas adicionales: • Cuando Bob “reconoce” sus transacciones (ver paso 5) prácticamente usa sólo la mitad de su información privada: (a, B). Este par, también conocido como clave de seguimiento, se puede pasar a un tercero (Carol). Bob puede delegarle el procesamiento de nuevas transacciones. Bob no necesita confiar explícitamente en Carol, porque no puede recuperar la clave secreta de un solo uso p sin la clave privada completa de Bob (a, b). Este enfoque es útil cuando Bob carece de ancho de banda. o potencia de cálculo (teléfonos inteligentes, carteras de hardware, etc.). • En caso de que Alice quiera demostrar que envió una transacción a la dirección de Bob, puede revelarla r o utilizar cualquier tipo de protocolo de conocimiento cero para demostrar que sabe r (por ejemplo, firmando la transacción con r). • Si Bob quiere tener una dirección compatible con auditoría donde se realicen todas las transacciones entrantes enlazable, puede publicar su clave de seguimiento o utilizar una dirección truncada. esa dirección representan sólo una clave electrónica pública B, y la parte restante requerida por el protocolo es derivado de él de la siguiente manera: a = Hs(B) y A = Hs(B)G. En ambos casos cada persona es capaz de "reconocer" todas las transacciones entrantes de Bob, pero, por supuesto, ninguna puede gastar el fondos encerrados dentro de ellos sin la clave secreta b. 4.4 Firmas de anillo únicas Un protocolo basado en firmas de anillo únicas permite a los usuarios lograr una desvinculación incondicional. Desafortunadamente, los tipos comunes de firmas criptográficas permiten rastrear las transacciones hasta sus respectivos remitentes y receptores. Nuestra solución a esta deficiencia radica en utilizar una firma diferente tipo que los que se utilizan actualmente en los sistemas de efectivo electrónico. Primero proporcionaremos un gen.descripción general de nuestro algoritmo sin referencia explícita a efectivo electrónico. Una firma de anillo de un solo uso contiene cuatro algoritmos: (GEN, SIG, VER, LNK): GEN: toma parámetros públicos y genera un par ec (P, x) y una clave pública I. SIG: toma un mensaje m, un conjunto \(S'\) de claves públicas {Pi}i̸=s, un par (Ps, xs) y genera una firma \(\sigma\) y un conjunto \(S = \)S'\( \cup \{P_s\}\). 8 16 Sí, ahora tenemos a) una dirección de pago yb) un ID de pago. Un crítico podría preguntar "¿realmente necesitamos hacer esto? Después de todo, si un comerciante recibe 112.00678952 CN exactamente, y ese fue mi pedido, y tengo una captura de pantalla o un recibo o lo que sea, ¿no es así? ¿Es suficiente un grado demencial de precisión? La respuesta es "tal vez, la mayor parte del tiempo, en el día a día, transacciones cara a cara." Sin embargo, la situación más común (especialmente en el mundo digital) es la siguiente: un comerciante vende un conjunto de objetos, cada uno con un precio fijo. Digamos que el objeto A es 0,001 CN, el objeto B es 0,01 CN y El objeto C es 0,1 CN. Ahora bien, si el comerciante recibe un pedido de 1.618 CN, hay muchos muchos (¡muchas!) formas de organizar un pedido para un cliente. Y así, sin algún tipo de identificación de pago, identificar el llamado pedido "único" de un cliente con el llamado costo "único" de su El orden se vuelve imposible. Aún más divertido: si todo lo que hay en mi tienda online cuesta exactamente 1,0 CN, ¿y tengo 1000 clientes al día? Y quieres demostrar que compraste exactamente 3 objetos. hace dos semanas? ¿Sin una identificación de pago? Buena suerte, amigo. En pocas palabras: cuando Bob publica una dirección de pago, puede terminar publicando también una ID de pago también (ver, por ejemplo, depósitos Poloniex XMR). Esto es diferente a lo que se describe. en el texto aquí donde Alice es quien genera la identificación de pago. Bob también debe haber alguna forma de generar una identificación de pago. (a,B) Recuerde que la clave de seguimiento (a,B) se puede publicar; perder el secreto del valor de 'un' testamento no violar tu capacidad de gastar ni permitir que la gente te robe (creo... eso habría por probar), simplemente permitirá a la gente ver todas las transacciones entrantes. Una dirección truncada, como se describe en este párrafo, simplemente toma la parte "privada" de la clave. y lo genera desde la parte "pública". Revelar el valor de 'a' eliminará la no vinculabilidad pero preservará el resto de las transacciones. El autor quiere decir "no desvinculable" porque desvinculable se refiere al receptor y vinculable se refiere al remitente. También está claro que el autor no se dio cuenta de que la vinculabilidad tenía dos aspectos diferentes. Dado que, después de todo, la transacción es un objeto dirigido en un gráfico, surgirán dos preguntas: "¿Estas dos transacciones van a la misma persona?" y "¿estas dos transacciones vienen de la misma persona?" Esta es una política de "no retorno" según la cual la propiedad de desvinculación de CryptoNote es condicional. Es decir, Bob puede elegir que sus transacciones entrantes no sean desvinculables. utilizando esta política. Esta es una afirmación que prueban según el modelo aleatorio de Oracle. Llegaremos a eso; el azar Oracle tiene pros y contras.

VER: toma un mensaje m, un conjunto S, una firma \(\sigma\) y genera "verdadero" o "falso". LNK: toma un conjunto I = {Ii}, una firma \(\sigma\) y genera "vinculado" o "independiente". La idea detrás del protocolo es bastante simple: un usuario produce una firma que puede ser verificado por un conjunto de claves públicas en lugar de una clave pública única. La identidad del firmante es indistinguible de los demás usuarios cuyas claves públicas están en el conjunto hasta que el propietario produzca una segunda firma utilizando el mismo par de claves. claves privadas x0 \(\cdots\) xi \(\cdots\) xn Claves públicas P0 \(\cdots\) Pi \(\cdots\) pn anillo Firma firmar verificar Fig. 6. Anonimato de la firma del anillo. GEN: El firmante elige una clave secreta aleatoria \(x \in [1, l - 1]\) y calcula la correspondiente clave pública P = xG. Además, calcula otra clave pública I = xHp(P) que usaremos Llamémosla “imagen clave”. SIG: el firmante genera una firma de anillo única con conocimiento cero no interactivo prueba utilizando las técnicas de [21]. Selecciona un subconjunto aleatorio \(S'\) de n del conjunto de otros usuarios. claves públicas Pi, su propio par de claves (x, P) e imagen de clave I. Sea \(0 \leq s \leq n\) el índice secreto del firmante en S (para que su clave pública sea Ps). Elige un {qi | yo = 0 . . . n} y {wi | yo = 0 . . . n, i ̸= s} de (1 . . . l) y aplica la siguientes transformaciones: Li = ( QiG, si yo = s qiG + wiPi, si i ̸= s ri = ( qiHp(Pi), si yo = s qiHp(Pi) + voluntad, si i ̸= s El siguiente paso es conseguir el desafío no interactivo: c = Hs(m, L1, . . . , Ln, R1, . . . , Rn) Finalmente el firmante calcula la respuesta: ci =    wi, si i ̸= s c- notario público yo=0 ci mod l, si yo = s ri = ( qi, si i ̸= s qs −csx mod l, si yo = s La firma resultante es \(\sigma\) = (I, c1, . . . , cn, r1, . . . , rn). 9 VER: toma un mensaje m, un conjunto S, una firma \(\sigma\) y genera "verdadero" o "falso". LNK: toma un conjunto I = {Ii}, una firma \(\sigma\) y genera "vinculado" o "independiente". La idea detrás del protocolo es bastante simple: un usuario produce una firma que puede ser verificado por un conjunto de claves públicas en lugar de una clave pública única. La identidad del firmante es indistinguible de los demás usuarios cuyas claves públicas están en el conjunto hasta que el propietario produzca una segunda firma utilizando el mismo par de claves. claves privadas x0 \(\cdots\) xi \(\cdots\) xn Claves públicas P0 \(\cdots\) Pi \(\cdots\) pn anillo Firma firmar verificar Fig. 6. Anonimato de la firma del anillo. GEN: El firmante elige una clave secreta aleatoria \(x \in [1, l - 1]\) y calcula la correspondiente clave pública P = xG. Además, calcula otra clave pública I = xHp(P) que usaremos Llamémosla “imagen clave”. SIG: el firmante genera una firma de anillo única con conocimiento cero no interactivo prueba utilizando las técnicas de [21]. Selecciona un subconjunto aleatorio \(S'\) de n del conjunto de otros usuarios. claves públicas Pi, su propio par de claves (x, P) e imagen de clave I. Sea \(0 \leq s \leq n\) el índice secreto del firmante en S (para que su clave pública sea Ps). Elige un {qi | yo = 0 . . . n} y {wi | yo = 0 . . . n, i ̸= s} de (1 . . . l) y aplica la siguientes transformaciones: Li = ( QiG, si yo = s qiG + wiPi, si i ̸= s ri = ( qiHp(Pi), si yo = s qiHp(Pi) + voluntad, si i ̸= s El siguiente paso es conseguir el desafío no interactivo: c = Hs(m, L1, . . . , Ln, R1, . . . , Rn) Finalmente el firmante calcula la respuesta: ci =    wi, si i ̸= s c- notario público yo=0 ci mod l, si yo = s ri = ( qi, si i ̸= s qs −csx mod l, si yo = s La firma resultante es \(\sigma\) = (I, c1, . . . , cn, r1, . . . , rn). 9 17 Quizás esto sea una estupidez, pero hay que tener cuidado al unir S y P_s. Si simplemente agregas el última clave pública hasta el final, la desvinculación se rompe porque cualquiera verifica las transacciones pasadas Puede simplemente verificar la última clave pública enumerada en cada transacción y boom. Esa es la clave pública asociado con el remitente. Entonces, después de la unión, se debe crear un generador de números pseudoaleatorios. Se utiliza para permutar las claves públicas elegidas. "...hasta que el propietario produzca una segunda firma utilizando el mismo par de claves". Deseo que el autor(es?) daría más detalles sobre esto. Creo que esto significa "asegúrate de que cada vez que elijas un conjunto de claves públicas para ofuscar usted mismo, elige un conjunto completamente nuevo sin dos llaves iguales". Lo cual parece una condición bastante fuerte para colocar sobre la desvinculación. Quizás "eliges un nuevo conjunto aleatorio de todas las claves posibles" con el supuesto de que, aunque las intersecciones no triviales inevitablemente suceder, no sucederán a menudo. De cualquier manera, necesito profundizar más en esta afirmación. Esto está generando la firma del anillo. Las pruebas de conocimiento cero son increíbles: te desafío a que me demuestres que conoces un secreto sin revelar el secreto. Por ejemplo, digamos que estamos en la entrada de una cueva con forma de rosquilla, y en la parte trasera de la cueva (más allá de la vista desde la entrada) hay una opuerta de nuevo camino a la que afirma que tienes la llave. Si vas en una dirección, siempre te dejará pasar, pero si vas en la dirección En otra dirección, necesitas una llave. Pero ni siquiera quieres MOSTRARME la clave y mucho menos Muéstrame que abre la puerta. Pero quieres demostrarme que sabes cómo abrir el puerta. En el entorno interactivo, lanzo una moneda. Cara está a la izquierda, cruz a la derecha y bajas por el cueva en forma de rosquilla en cualquier dirección que te indique la moneda. Al fondo, más allá de mi vista, tú Abre la puerta para regresar por el otro lado. Repetimos el experimento de lanzar una moneda al aire. hasta que esté satisfecho de que tienes la llave. Pero esa es claramente la prueba INTERACTIVA de conocimiento cero. Hay versiones no interactivas en las que tú y yo nunca tenemos que comunicarnos; De esta manera, ningún espía podrá interferir. http://en.wikipedia.org/wiki/Zero-knowledge_proof Esto es lo contrario de la definición anterior.

VER: toma un mensaje m, un conjunto S, una firma \(\sigma\) y genera "verdadero" o "falso". LNK: toma un conjunto I = {Ii}, una firma \(\sigma\) y genera "vinculado" o "independiente". La idea detrás del protocolo es bastante simple: un usuario produce una firma que puede ser verificado por un conjunto de claves públicas en lugar de una clave pública única. La identidad del firmante es indistinguible de los demás usuarios cuyas claves públicas están en el conjunto hasta que el propietario produzca una segunda firma utilizando el mismo par de claves. claves privadas x0 \(\cdots\) xi \(\cdots\) xn Claves públicas P0 \(\cdots\) Pi \(\cdots\) pn anillo Firma firmar verificar Fig. 6. Anonimato de la firma del anillo. GEN: El firmante elige una clave secreta aleatoria \(x \in [1, l - 1]\) y calcula la correspondiente clave pública P = xG. Además, calcula otra clave pública I = xHp(P) que usaremos Llamémosla “imagen clave”. SIG: el firmante genera una firma de anillo única con conocimiento cero no interactivo prueba utilizando las técnicas de [21]. Selecciona un subconjunto aleatorio \(S'\) de n del conjunto de otros usuarios. claves públicas Pi, su propio par de claves (x, P) e imagen de clave I. Sea \(0 \leq s \leq n\) el índice secreto del firmante en S (para que su clave pública sea Ps). Elige un {qi | yo = 0 . . . n} y {wi | yo = 0 . . . n, i ̸= s} de (1 . . . l) y aplica la siguientes transformaciones: Li = ( QiG, si yo = s qiG + wiPi, si i ̸= s ri = ( qiHp(Pi), si yo = s qiHp(Pi) + voluntad, si i ̸= s El siguiente paso es conseguir el desafío no interactivo: c = Hs(m, L1, . . . , Ln, R1, . . . , Rn) Finalmente el firmante calcula la respuesta: ci =    wi, si i ̸= s c- notario público yo=0 ci mod l, si yo = s ri = ( qi, si i ̸= s qs −csx mod l, si yo = s La firma resultante es \(\sigma\) = (I, c1, . . . , cn, r1, . . . , rn). 9 VER: toma un mensaje m, un conjunto S, una firma \(\sigma\) y genera "verdadero" o "falso". LNK: toma un conjunto I = {Ii}, una firma \(\sigma\) y genera "vinculado" o "independiente". La idea detrás del protocolo es bastante simple: un usuario produce una firma que puede ser verificado por un conjunto de claves públicas en lugar de una clave pública única. La identidad del firmante es indistinguible de los demás usuarios cuyas claves públicas están en el conjunto hasta que el propietario produzca una segunda firma utilizando el mismo par de claves. claves privadas x0 \(\cdots\) xi \(\cdots\) xn Claves públicas P0 \(\cdots\) Pi \(\cdots\) pn anillo Firma firmar verificar Fig. 6. Anonimato de la firma del anillo. GEN: El firmante elige una clave secreta aleatoria \(x \in [1, l - 1]\) y calcula la correspondiente clave pública P = xG. Además, calcula otra clave pública I = xHp(P) que usaremos Llamémosla “imagen clave”. SIG: el firmante genera una firma de anillo única con conocimiento cero no interactivo prueba utilizando las técnicas de [21]. Selecciona un subconjunto aleatorio \(S'\) de n del conjunto de otros usuarios. claves públicas Pi, su propio par de claves (x, P) e imagen de clave I. Sea \(0 \leq s \leq n\) el índice secreto del firmante en S (para que su clave pública sea Ps). Elige un {qi | yo = 0 . . . n} y {wi | yo = 0 . . . n, i ̸= s} de (1 . . . l) y aplica la siguientes transformaciones: Li = ( QiG, si yo = s qiG + wiPi, si i ̸= s ri = ( qiHp(Pi), si yo = s qiHp(Pi) + voluntad, si i ̸= s El siguiente paso es conseguir el desafío no interactivo: c = Hs(m, L1, . . . , Ln, R1, . . . , Rn) Finalmente el firmante calcula la respuesta: ci =    wi, si i ̸= s c- notario público yo=0 ci mod l, si yo = s ri = ( qi, si i ̸= s qs −csx mod l, si yo = s La firma resultante es \(\sigma\) = (I, c1, . . . , cn, r1, . . . , rn). 9 18 Toda esta área es independiente de las criptonotas y simplemente describe el algoritmo de firma del anillo sin referencia a las monedas. Sospecho que parte de la notación es consistente con el resto del artículo, aunque. Por ejemplo, x es la clave secreta "aleatoria" elegida en GEN, que da la clave pública P y la imagen de clave pública I. Este valor de x es el valor que Bob calcula en la parte 6, página 8. Entonces esto es empezando a aclarar parte de la confusión de la descripción anterior. Esto es algo genial; El dinero no se transfiere de "la dirección pública de Alice a la dirección pública de Bob". dirección." Se está transfiriendo de una dirección única a una dirección única. Entonces, en cierto sentido, así es como funcionan las cosas. Si Alex tiene algunas criptonotas porque alguien se las envió, esto significa que tiene las claves privadas necesarias para enviárselas a Bob. ella usa un intercambio Diffe-Hellman que utiliza la información pública de Bob para generar una nueva dirección única y las criptonotas se transfieren a esa dirección. Ahora, dado que se utilizó un intercambio DH (presumiblemente seguro) para generar la nueva dirección única a lo que Alex envió su CN, Bob es el único que tiene las claves privadas necesarias para repetir el arriba. Ahora Bob es Alex. http://en.wikipedia.org/wiki/Piecewise#Notation_and_interpretation La sumatoria debe indexarse sobre j, no sobre i. Cada c_i es basura aleatoria (ya que w_i es aleatorio) excepto el culo de c_iasociado con la clave real involucrada en esta firma. El valor de c es a hash de la información anterior. Sin embargo, creo que esto puede contener un error tipográfico peor que reutilizar el índice 'i', porque c_s parece definirse implícitamente, no explícitamente. De hecho, si tomamos esta ecuación con fe, entonces determinamos que c_s = (1/2)c - (1/2) sum_i neq s c_i. Es decir, un hash menos un montón de números aleatorios. Por otro lado, si esta sumatoria pretende leerse "c_s = (c - sum_j neq s c_j) mod l", luego tomamos el hash de nuestra información anterior, generamos un montón de números aleatorios, reste todos esos números aleatorios del hash, y eso nos da c_s. Esto parece ser lo que "debería" estar sucediendo según mi intuición, y coincide con el paso de verificación en la página 10. Pero la intuición no es matemática. Profundizaré en esto. Igual que antes; todos estos serán basura aleatoria excepto el asociado con el real clave pública del firmante x. Excepto que esta vez, esto es más lo que esperaría de la estructura: r_i es aleatorio para i!=s y r_s está determinado sólo por los valores secretos x y s indexados de q_i y c_i.

VER: El verificador comprueba la firma aplicando las transformaciones inversas: ( L′ i = riG + ciPi R′ i = riHp(Pi) + ciI Finalmente, el verificador comprueba si notario público yo=0 ci ?= Hs(m, L′ 0, . . . , L′ norte, R′ 0, . . . , R′ n) mod l Si esta igualdad es correcta, el verificador ejecuta el algoritmo LNK. De lo contrario, el verificador rechaza la firma. LNK: El verificador comprueba si he sido utilizado en firmas pasadas (estos valores se almacenan en el conjunto I). Los usos múltiples implican que se produjeron dos firmas bajo la misma clave secreta. El significado del protocolo: aplicando transformaciones L el firmante demuestra que sabe tal x que al menos un Pi = xG. Para que esta prueba no sea repetible introducimos la imagen clave. como I = xHp(P). El firmante usa los mismos coeficientes (ri, ci) para probar casi la misma afirmación: conoce tal x que al menos un \(H_p(P_i) = I \cdot x^{-1}\). Si el mapeo \(x \to I\) es una inyección: 1. Nadie puede recuperar la clave pública de la imagen de la clave e identificar al firmante; 2. El firmante no puede hacer dos firmas con I diferentes y la misma x. En el Apéndice A se proporciona un análisis de seguridad completo. 4.5 Transacción estándar CryptoNote Al combinar ambos métodos (claves públicas no vinculables y firma de anillo imposible de rastrear), Bob logra nuevo nivel de privacidad en comparación con el esquema original Bitcoin. Sólo requiere que almacene una clave privada (a, b) y publique (A, B) para comenzar a recibir y enviar transacciones anónimas. Mientras valida cada transacción, Bob realiza además solo dos multiplicaciones de curvas elípticas y una suma por salida para verificar si una transacción le pertenece. Por cada uno de ellos salida Bob recupera un par de claves de un solo uso (pi, Pi) y lo almacena en su billetera. Cualquier entrada puede ser circunstancialmente se prueba que tienen el mismo dueño si aparecen en una sola transacción. en De hecho, esta relación es mucho más difícil de establecer debido a la firma del anillo de una sola vez. Con una firma de anillo, Bob puede ocultar eficazmente cada entrada entre las de otra persona; todo lo posible los gastadores serán equiprobable, incluso el propietario anterior (Alice) no tiene más información que cualquier observador. Al firmar su transacción, Bob especifica n productos extranjeros con la misma cantidad que su salida, mezclándolos todos sin la participación de otros usuarios. El propio Bob (así como cualquier otra persona) no sabe si alguno de estos pagos se ha gastado: se puede utilizar un resultado en miles de firmas como factor de ambigüedad y nunca como objetivo de ocultación. el doble La verificación de gastos se produce en la fase LNK cuando se compara con el conjunto de imágenes clave utilizadas. Bob puede elegir el grado de ambigüedad por su cuenta: n = 1 significa que la probabilidad que tiene gastado, la salida tiene una probabilidad del 50%, n = 99 da 1%. El tamaño de la firma resultante aumenta. linealmente como O(n+1), por lo que el anonimato mejorado le cuesta a Bob tarifas de transacción adicionales. el tambien puede establezca n = 0 y haga que su firma de anillo consista en un solo elemento, sin embargo, esto instantáneamente revelarlo como un derrochador. 10 VER: El verificador comprueba la firma aplicando las transformaciones inversas: ( L′ i = riG + ciPi R′ i = riHp(Pi) + ciI Finalmente, el verificador comprueba si notario público yo=0 ci ?= Hs(m, L′ 0, . . . , L′ norte, R′ 0, . . . , R′ n) mod l Si esta igualdad es correcta, el verificador ejecuta el algoritmo LNK. De lo contrario, el verificador rechaza la firma. LNK: El verificador comprueba si he sido utilizado en firmas pasadas (estos valores se almacenan en el conjunto I). Los usos múltiples implican que se produjeron dos firmas bajo la misma clave secreta. El significado del protocolo: aplicando transformaciones L el firmante demuestra que sabe tal x que al menos un Pi = xG. Para que esta prueba no sea repetible introducimos la imagen clave. como I = xHp(P). El firmante usa los mismos coeficientes (ri, ci) para probar casi la misma afirmación: conoce tal x que al menos un \(H_p(P_i) = I \cdot x^{-1}\). Si el mapeo \(x \to I\) es una inyección: 1. Nadie puede recuperar la clave pública de la imagen de la clave e identificar al firmante; 2. El firmante no puede hacer dos firmas con I diferentes y la misma x. En el Apéndice A se proporciona un análisis de seguridad completo. 4.5 Transacción estándar CryptoNote Al combinar ambos métodos (claves públicas no vinculables y firma de anillo imposible de rastrear), Bob logra nuevo nivel de privacidad en comparación con el esquema original Bitcoin. Sólo requiere que almacene una clave privada (a, b) y publique (A, B) para comenzar a recibir y enviar transacciones anónimas. Mientras valida cada transacción, Bob realiza además solo dos multiplicaciones de curvas elípticas y una suma por salida para verificar si una transacción le pertenece. Por cada uno de ellos salida Bob recupera un par de claves de un solo uso (pi, Pi) y stLo guarda en su billetera. Cualquier entrada puede ser circunstancialmente se prueba que tienen el mismo dueño si aparecen en una sola transacción. en De hecho, esta relación es mucho más difícil de establecer debido a la firma del anillo de una sola vez. Con una firma de anillo, Bob puede ocultar eficazmente cada entrada entre las de otra persona; todo lo posible los gastadores serán equiprobable, incluso el propietario anterior (Alice) no tiene más información que cualquier observador. Al firmar su transacción, Bob especifica n productos extranjeros con la misma cantidad que su salida, mezclándolos todos sin la participación de otros usuarios. El propio Bob (así como cualquier otra persona) no sabe si alguno de estos pagos se ha gastado: se puede utilizar un resultado en miles de firmas como factor de ambigüedad y nunca como objetivo de ocultación. el doble La verificación de gastos se produce en la fase LNK cuando se compara con el conjunto de imágenes clave utilizadas. Bob puede elegir el grado de ambigüedad por su cuenta: n = 1 significa que la probabilidad que tiene gastado, la salida tiene una probabilidad del 50%, n = 99 da 1%. El tamaño de la firma resultante aumenta. linealmente como O(n+1), por lo que el anonimato mejorado le cuesta a Bob tarifas de transacción adicionales. el tambien puede establezca n = 0 y haga que su firma de anillo consista en un solo elemento, sin embargo, esto instantáneamente revelarlo como un derrochador. 10 19 En este punto, estoy terriblemente confundido. Alex recibe un mensaje M con firma (I,c_1, ..., c_n, r_1, ..., r_n) y lista de públicos teclas S. y ejecuta VER. Esto calculará L_i’ y R_i’ Esto verifica que c_s = c - sum_i neq s c_i en la página anterior. Al principio estaba MUY (ja) confundido. Cualquiera puede calcular L_i’ y R_i’. De hecho, cada r_i y c_i han sido publicados en la firma sigma junto con el valor de I. El conjunto S = También se ha publicado el P_i de todas las claves públicas. Así que cualquiera que haya visto sigma y el conjunto de Las claves S = P_i obtendrán los mismos valores para L_i' y R_i' y, por lo tanto, verificarán la firma. Pero luego recordé que esta sección simplemente describe un algoritmo de firma, no una "verificación Si está firmado, verifique si ME LO ENVIÓ y, de ser así, vaya a gastar el dinero". Este es SIMPLEMENTE el parte característica del juego. Me interesa leer el Apéndice A cuando finalmente llegue allí. Me gustaría ver una comparación a gran escala operación por operación de Cryptonote con Bitcoin. Además, electricidad/sostenibilidad. ¿Qué partes de los algoritmos constituyen aquí "entrada"? La entrada de transacción, creo, es una Cantidad y un conjunto de UTXOs que suman una cantidad mayor que la Cantidad. Esto no está claro. "¿Objetivo de esconderse?" He pensado en esto por unos minutos y todavía no tengo el idea más vaga de lo que podría significar. Un ataque de doble gasto solo se puede ejecutar manipulando la clave usada percibida de un nodo conjunto de imágenes \(I\). "Grado de ambigüedad" = n pero el número total de claves públicas incluidas en la transacción es norte+1. Es decir, el grado de ambigüedad sería "¿cuántas OTRAS personas quieres en ¿la multitud?" La respuesta probablemente será, por defecto, "tantos como sea posible".

VER: El verificador comprueba la firma aplicando las transformaciones inversas: ( L′ i = riG + ciPi R′ i = riHp(Pi) + ciI Finalmente, el verificador comprueba si notario público yo=0 ci ?= Hs(m, L′ 0, . . . , L′ norte, R′ 0, . . . , R′ n) mod l Si esta igualdad es correcta, el verificador ejecuta el algoritmo LNK. De lo contrario, el verificador rechaza la firma. LNK: El verificador comprueba si he sido utilizado en firmas pasadas (estos valores se almacenan en el conjunto I). Los usos múltiples implican que se produjeron dos firmas bajo la misma clave secreta. El significado del protocolo: aplicando transformaciones L el firmante demuestra que sabe tal x que al menos un Pi = xG. Para que esta prueba no sea repetible introducimos la imagen clave. como I = xHp(P). El firmante usa los mismos coeficientes (ri, ci) para probar casi la misma afirmación: conoce tal x que al menos un \(H_p(P_i) = I \cdot x^{-1}\). Si el mapeo \(x \to I\) es una inyección: 1. Nadie puede recuperar la clave pública de la imagen de la clave e identificar al firmante; 2. El firmante no puede hacer dos firmas con I diferentes y la misma x. En el Apéndice A se proporciona un análisis de seguridad completo. 4.5 Transacción estándar CryptoNote Al combinar ambos métodos (claves públicas no vinculables y firma de anillo imposible de rastrear), Bob logra nuevo nivel de privacidad en comparación con el esquema original Bitcoin. Sólo requiere que almacene una clave privada (a, b) y publique (A, B) para comenzar a recibir y enviar transacciones anónimas. Mientras valida cada transacción, Bob realiza además solo dos multiplicaciones de curvas elípticas y una suma por salida para verificar si una transacción le pertenece. Por cada uno de ellos salida Bob recupera un par de claves de un solo uso (pi, Pi) y lo almacena en su billetera. Cualquier entrada puede ser circunstancialmente se prueba que tienen el mismo dueño si aparecen en una sola transacción. en De hecho, esta relación es mucho más difícil de establecer debido a la firma del anillo de una sola vez. Con una firma de anillo, Bob puede ocultar eficazmente cada entrada entre las de otra persona; todo lo posible los gastadores serán equiprobable, incluso el propietario anterior (Alice) no tiene más información que cualquier observador. Al firmar su transacción, Bob especifica n productos extranjeros con la misma cantidad que su salida, mezclándolos todos sin la participación de otros usuarios. El propio Bob (así como cualquier otra persona) no sabe si alguno de estos pagos se ha gastado: se puede utilizar un resultado en miles de firmas como factor de ambigüedad y nunca como objetivo de ocultación. el doble La verificación de gastos se produce en la fase LNK cuando se compara con el conjunto de imágenes clave utilizadas. Bob puede elegir el grado de ambigüedad por su cuenta: n = 1 significa que la probabilidad que tiene gastado, la salida tiene una probabilidad del 50%, n = 99 da 1%. El tamaño de la firma resultante aumenta. linealmente como O(n+1), por lo que el anonimato mejorado le cuesta a Bob tarifas de transacción adicionales. el tambien puede establezca n = 0 y haga que su firma de anillo consista en un solo elemento, sin embargo, esto instantáneamente revelarlo como un derrochador. 10 VER: El verificador comprueba la firma aplicando las transformaciones inversas: ( L′ i = riG + ciPi R′ i = riHp(Pi) + ciI Finalmente, el verificador comprueba si notario público yo=0 ci ?= Hs(m, L′ 0, . . . , L′ norte, R′ 0, . . . , R′ n) mod l Si esta igualdad es correcta, el verificador ejecuta el algoritmo LNK. De lo contrario, el verificador rechaza la firma. LNK: El verificador comprueba si he sido utilizado en firmas pasadas (estos valores se almacenan en el conjunto I). Los usos múltiples implican que se produjeron dos firmas bajo la misma clave secreta. El significado del protocolo: aplicando transformaciones L el firmante demuestra que sabe tal x que al menos un Pi = xG. Para que esta prueba no sea repetible introducimos la imagen clave. como I = xHp(P). El firmante usa los mismos coeficientes (ri, ci) para probar casi la misma afirmación: conoce tal x que al menos un \(H_p(P_i) = I \cdot x^{-1}\). Si el mapeo \(x \to I\) es una inyección: 1. Nadie puede recuperar la clave pública de la imagen de la clave e identificar al firmante; 2. El firmante no puede hacer dos firmas con I diferentes y la misma x. En el Apéndice A se proporciona un análisis de seguridad completo. 4.5 Transacción estándar CryptoNote Al combinar ambos métodos (claves públicas no vinculables y firma de anillo imposible de rastrear), Bob logra nuevo nivel de privacidad en comparación con el esquema original Bitcoin. Sólo requiere que almacene una clave privada (a, b) y publique (A, B) para comenzar a recibir y enviar transacciones anónimas. Mientras valida cada transacción, Bob realiza además solo dos multiplicaciones de curvas elípticas y una suma por salida para verificar si una transacción le pertenece. Por cada uno de ellos salida Bob recupera un par de claves de un solo uso (pi, Pi) y stLo guarda en su billetera. Cualquier entrada puede ser circunstancialmente se prueba que tienen el mismo dueño si aparecen en una sola transacción. en De hecho, esta relación es mucho más difícil de establecer debido a la firma del anillo de una sola vez. Con una firma de anillo, Bob puede ocultar eficazmente cada entrada entre las de otra persona; todo lo posible los gastadores serán equiprobable, incluso el propietario anterior (Alice) no tiene más información que cualquier observador. Al firmar su transacción, Bob especifica n productos extranjeros con la misma cantidad que su salida, mezclándolos todos sin la participación de otros usuarios. El propio Bob (así como cualquier otra persona) no sabe si alguno de estos pagos se ha gastado: se puede utilizar un resultado en miles de firmas como factor de ambigüedad y nunca como objetivo de ocultación. el doble La verificación de gastos se produce en la fase LNK cuando se compara con el conjunto de imágenes clave utilizadas. Bob puede elegir el grado de ambigüedad por su cuenta: n = 1 significa que la probabilidad que tiene gastado, la salida tiene una probabilidad del 50%, n = 99 da 1%. El tamaño de la firma resultante aumenta. linealmente como O(n+1), por lo que el anonimato mejorado le cuesta a Bob tarifas de transacción adicionales. el tambien puede establezca n = 0 y haga que su firma de anillo consista en un solo elemento, sin embargo, esto instantáneamente revelarlo como un derrochador. 10 20 Esto es interesante; Anteriormente, proporcionamos una manera para que un receptor, Bob, haga todos los ENTRANTE transacciones no desvinculables ya sea eligiendo la mitad de sus claves privadas de manera determinista o publicar la mitad de sus claves privadas como públicas. Se trata de una especie de política de no vuelta atrás. Aquí vemos una forma de que un remitente, Alex, elija una única transacción saliente como vinculable, pero en realidad esto revela a Alex como el remitente de toda la red. Esta NO es una política de no vuelta atrás. Esto es transacción por transacción. ¿Existe una tercera política? ¿Puede un receptor, Bob, generar una identificación de pago única para Alex que ¿Nunca cambia, quizás usando un intercambio Diffe-Hellman? Si alguien incluye ese pago La identificación incluida en algún lugar de su transacción en la dirección de Bob, debe haber venido de Alex. De esta manera, Alex no necesita revelarse a toda la red eligiendo vincular un enlace en particular. transacción, pero aún puede identificarse ante la persona a quien envía su dinero. ¿No es esto lo que hace Poloniex?

Transacción entrada de transmisión Salida0 . . . Salidai . . . Salida Imagen clave Firmas Firma del anillo Clave de destino Salida1 Clave de destino Salida Transacciones extranjeras Salida del remitente Clave de destino Par de claves de un solo uso una sola vez clave privada Yo = xHp(P) P,x Fig. 7. Generación de firma de anillo en una transacción estándar. 5 Prueba de trabajo igualitaria En esta sección proponemos y fundamentamos el nuevo algoritmo proof-of-work. Nuestro objetivo principal es cerrar la brecha entre los mineros de CPU (mayoría) y GPU/FPGA/ASIC (minoría). es Es apropiado que algunos usuarios puedan tener cierta ventaja sobre otros, pero sus inversiones debería crecer al menos linealmente con la potencia. En términos más generales, producir dispositivos para fines especiales. tiene que ser lo menos rentable posible. 5.1 Trabajos relacionados El protocolo original Bitcoin proof-of-work utiliza la función de fijación de precios con uso intensivo de CPU SHA-256. Consiste principalmente en operadores lógicos básicos y se basa únicamente en la velocidad computacional de procesador, por lo tanto, es perfectamente adecuado para la implementación multinúcleo/transportador. Sin embargo, las computadoras modernas no están limitadas únicamente por el número de operaciones por segundo, sino también por el tamaño de la memoria. Si bien algunos procesadores pueden ser sustancialmente más rápidos que otros [8], Es menos probable que los tamaños de memoria varíen entre máquinas. Las funciones de precios ligadas a la memoria fueron introducidas por primera vez por Abadi et al y se definieron como “funciones cuyo tiempo de cálculo está dominado por el tiempo dedicado a acceder a la memoria” [15]. La idea principal es construir un algoritmo que asigne un gran bloque de datos ("bloc de notas") dentro de la memoria a la que se puede acceder con relativa lentitud (por ejemplo, RAM) y “acceder a una secuencia impredecible de ubicaciones” dentro de él. Un bloque debe ser lo suficientemente grande como para que la conservación los datos son más ventajosos que recalcularlos para cada acceso. El algoritmo también debe evitar el paralelismo interno, por lo tanto, N subprocesos simultáneos deberían requerir N veces más memoria a la vez. Dwork et al [22] investigaron y formalizaron este enfoque, lo que los llevó a sugerir otro Variante de la función de fijación de precios: “Mbound”. Una obra más pertenece a F. Coelho [20], quien 11 Transacción entrada de transmisión Salida0 . . . Salidai . . . Salida Imagen clave Firmas Firma del anillo Clave de destino Salida1 Clave de destino Salida Transacciones extranjeras Salida del remitente Clave de destino Par de claves de un solo uso una sola vez clave privada Yo = xHp(P) P,x Fig. 7. Generación de firma de anillo en una transacción estándar. 5 Prueba de trabajo igualitaria En esta sección proponemos y fundamentamos el nuevo algoritmo proof-of-work. Nuestro objetivo principal es cerrar la brecha entre los mineros de CPU (mayoría) y GPU/FPGA/ASIC (minoría). es Es apropiado que algunos usuarios puedan tener cierta ventaja sobre otros, pero sus inversiones debería crecer al menos linealmente con la potencia. En términos más generales, producir dispositivos para fines especiales. tiene que ser lo menos rentable posible. 5.1 Trabajos relacionados El protocolo original Bitcoin proof-of-work utiliza la función de fijación de precios con uso intensivo de CPU SHA-256. Consiste principalmente en operadores lógicos básicos y se basa únicamente en la velocidad computacional de procesador, por lo tanto, es perfectamente adecuado para la implementación multinúcleo/transportador. Sin embargo, las computadoras modernas no están limitadas únicamente por el número de operaciones por segundo, sino también por el tamaño de la memoria. Si bien algunos procesadores pueden ser sustancialmente más rápidos que otros [8], Es menos probable que los tamaños de memoria varíen entre máquinas. Las funciones de precios ligadas a la memoria fueron introducidas por primera vez por Abadi et al y se definieron como “funciones cuyo tiempo de cálculo está dominado por el tiempo dedicado a acceder a la memoria” [15]. La idea principal es construir un algoritmo que asigne un gran bloque de datos ("bloc de notas") dentro de la memoria a la que se puede acceder con relativa lentitud (por ejemplo, RAM) y “acceder a una secuencia impredecible de ubicaciones” dentro de él. Un bloque debe ser lo suficientemente grande como para que la conservación los datos son más ventajosos que recalcularlos para cada acceso. El algoritmo también debe evitar el paralelismo interno, por lo tanto, N subprocesos simultáneos deberían requerir N veces más memoria a la vez. Dwork et al [22] investigaron y formalizaron este enfoque, lo que los llevó a sugerir otro Variante de la función de fijación de precios: “Mbound”. Una obra más pertenece a F. Coelho [20], quien 11 21 Estos son, aparentemente, nuestros UTXO: importes y claves de destino. Si Alex es quien construye esta transacción estándar y se la envía a Bob, entonces Alex también tiene las claves privadas. a cada uno de estos. Me gusta mucho este diagrama porque responde a algunas preguntas anteriores. Una entrada Txn consiste de un conjunto de salidas Txn y un key imagen. Luego se firma con una firma circular, incluyendo todos de las claves privadas que Alex posee para todas las transacciones extranjeras incluidas en el acuerdo. el La salida Txn consta de una cantidad y una clave de destino. El receptor de la transacción podrá, a voluntad, generar su clave privada única como se describió anteriormente en el documento para gastar el dinero. Será un placer descubrir en qué medida esto coincide con el código real... No, Nic van Saberhagen describe vagamente algunas propiedades de un algoritmo de prueba de trabajo, sin realmente describir ese algoritmo. El algoritmo CryptoNight en sí REQUIERE un análisis profundo. Cuando leí esto, tartamudeé. ¿Debería la inversión crecer al menos linealmente con el poder, o debería ¿La inversión crece como máximo linealmente con el poder? Y entonces me di cuenta; Yo, como minero o inversor, suelo pensar en "¿cuánta energía puedo obtener?" para una inversión?" no "¿cuánta inversión se requiere para una cantidad fija de energía?" Por supuesto, denotamos la inversión por I y la potencia por P. Si I(P) es la inversión en función de la potencia y P(I) es el poder en función de la inversión, serán inversos entre sí (dondequiera que pueden existir inversas). Y si I (P) es más rápido que lineal, entonces P (I) es más lento que lineal. Por lo tanto, Habrá una tasa de rendimiento reducida para los inversores. Es decir, lo que aquí dice el autor es: "claro, a medida que inviertas más, obtendrás más poder. Pero deberíamos tratar de hacer de esto una tasa de retorno reducida". Las inversiones en CPU eventualmente tendrán un límite sublineal; la pregunta es si los autores Hemos diseñado un algoritmo POW que obligará a los ASIC a hacer también esto. ¿Una hipotética "moneda futura" debería extraerse siempre con los recursos más lentos/limitados? El artículo de Abadi et al (que tiene como autores a algunos ingenieros de Google y Microsoft) es, Básicamente, aprovechando el hecho de que durante los últimos años el tamaño de la memoria ha tenido una reducción mucho menor. entre máquinas que la velocidad del procesador, y con una relación inversión-potencia más que lineal. ¡En unos años esto habrá que reevaluarlo! Todo es una carrera armamentista... Construir una función hash es difícil; construir una función hash que satisfaga estas restricciones parece ser más difícil. Este artículo parece no tener ninguna explicación de la situación real. hashing algoritmo CryptoNight. Creo que es una implementación de SHA-3 con memoria dura, basada en publicaciones del foro pero no tengo idea... y ese es el punto. Hay que explicarlo.

propuso la solución más eficaz: “Hokkaido”. Hasta donde sabemos, el último trabajo basado en la idea de búsquedas pseudoaleatorias en una gran variedad es el algoritmo conocido como “scrypt” por C. Percival [32]. A diferencia de las funciones anteriores se centra en derivación de claves, y no sistemas proof-of-work. A pesar de este hecho, scrypt puede cumplir nuestro propósito: funciona bien como función de fijación de precios en el problema de conversión parcial hash, como SHA-256 en Bitcoin. A estas alturas, scrypt ya se ha aplicado en Litecoin [14] y algunas otras bifurcaciones Bitcoin. Sin embargo, su implementación no está realmente ligada a la memoria: la relación "tiempo de acceso a la memoria / tiempo total time” no es lo suficientemente grande porque cada instancia usa solo 128 KB. Esto permite a los mineros GPU ser aproximadamente 10 veces más efectivo y continúa dejando la posibilidad de crear relativamente Dispositivos de minería baratos pero altamente eficientes. Además, la propia construcción del scrypt permite un equilibrio lineal entre el tamaño de la memoria y el tamaño de la memoria. Velocidad de la CPU debido al hecho de que cada bloque en el scratchpad se deriva únicamente del anterior. Por ejemplo, puede almacenar cada segundo bloque y recalcular los demás de forma diferida, es decir, sólo cuando sea necesario. Se supone que los índices pseudoaleatorios están distribuidos uniformemente, por lo tanto, el valor esperado de los recálculos de los bloques adicionales es 1 \(2 \cdot N\), donde N es el número de iteraciones. El tiempo total de cálculo aumenta menos de la mitad porque también hay operaciones independientes del tiempo (tiempo constante), como preparar el scratchpad y hashing cada iteración. Ahorrar 2/3 de la memoria cuesta 1 \(3 \cdot N\)+1 3 \(\cdot\) \(2 \cdot N\) = N recálculos adicionales; 9/10 resultados en 1 \(10 \cdot N\)+. . . + 1 \(10 \cdot 9 \cdot N\) = 4,5N. Es fácil demostrar que almacenar sólo 1 s de todos los bloques aumenta el tiempo menos que por un factor de s-1 2 . Esto a su vez implica que una máquina con una CPU 200 veces más rápido que los chips modernos, pueden almacenar sólo 320 bytes del scratchpad. 5.2 El algoritmo propuesto Proponemos un nuevo algoritmo vinculado a memoria para la función de fijación de precios proof-of-work. se basa en acceso aleatorio a una memoria lenta y enfatiza la dependencia de la latencia. A diferencia de scrypt cada El nuevo bloque (64 bytes de longitud) depende de todos los bloques anteriores. Como resultado, una hipotética El “ahorro de memoria” debería aumentar exponencialmente su velocidad de cálculo. Nuestro algoritmo requiere alrededor de 2 Mb por instancia por los siguientes motivos: 1. Cabe en la caché L3 (por núcleo) de los procesadores modernos, que deberían convertirse en algo común. en unos años; 2. Un megabyte de memoria interna es un tamaño casi inaceptable para una tubería ASIC moderna; 3. Las GPU pueden ejecutar cientos de instancias simultáneas, pero están limitadas de otras maneras: La memoria GDDR5 es más lenta que la caché L3 de la CPU y destaca por su ancho de banda, no velocidad de acceso aleatorio. 4. Una expansión significativa del scratchpad requeriría un aumento en las iteraciones, lo que en turno implica un aumento general del tiempo. Las llamadas "pesadas" en una red p2p sin confianza pueden provocar vulnerabilidades graves, porque los nodos están obligados a verificar el proof-of-work de cada nuevo bloque. Si un nodo dedica una cantidad considerable de tiempo a cada evaluación hash, puede ser fácilmente DDoSed por una avalancha de objetos falsos con datos de trabajo arbitrarios (valores nonce). 12 propuso la solución más eficaz: “Hokkaido”. Hasta donde sabemos, el último trabajo basado en la idea de búsquedas pseudoaleatorias en una gran variedad es el algoritmo conocido como “scrypt” por C. Percival [32]. A diferencia de las funciones anteriores se centra en derivación de claves, y no sistemas proof-of-work. A pesar de este hecho, scrypt puede cumplir nuestro propósito: funciona bien como función de fijación de precios en el problema de conversión parcial hash, como SHA-256 en Bitcoin. A estas alturas, scrypt ya se ha aplicado en Litecoin [14] y algunas otras bifurcaciones Bitcoin. Sin embargo, su implementación no está realmente ligada a la memoria: la relación "tiempo de acceso a la memoria / tiempo total time” no es lo suficientemente grande porque cada instancia usa solo 128 KB. Esto permite a los mineros GPU ser aproximadamente 10 veces más efectivo y continúa dejando la posibilidad de crear relativamente Dispositivos de minería baratos pero altamente eficientes. Además, la propia construcción del scrypt permite un equilibrio lineal entre el tamaño de la memoria y el tamaño de la memoria. Velocidad de la CPU debido al hecho de que cada bloque en el scratchpad se deriva únicamente del anterior. Por ejemplo, puede almacenar cada segundo bloque y recalcular los demás de forma diferida, es decir, sólo cuando sea necesario. Se supone que los índices pseudoaleatorios están distribuidos uniformemente, por lo tanto, el valor esperado de los recálculos de los bloques adicionales es 1 \(2 \cdot N\), donden es el numero de iteraciones. El tiempo total de cálculo aumenta menos de la mitad porque también hay operaciones independientes del tiempo (tiempo constante), como preparar el bloc de notas y hashing cada iteración. Ahorrar 2/3 de la memoria cuesta 1 \(3 \cdot N\)+1 3 \(\cdot\) \(2 \cdot N\) = N recálculos adicionales; 9/10 resultados en 1 \(10 \cdot N\)+. . . + 1 \(10 \cdot 9 \cdot N\) = 4,5N. Es fácil demostrar que almacenar sólo 1 s de todos los bloques aumenta el tiempo menos que por un factor de s-1 2 . Esto a su vez implica que una máquina con una CPU 200 veces más rápido que los chips modernos, pueden almacenar sólo 320 bytes del scratchpad. 5.2 El algoritmo propuesto Proponemos un nuevo algoritmo vinculado a memoria para la función de fijación de precios proof-of-work. se basa en acceso aleatorio a una memoria lenta y enfatiza la dependencia de la latencia. A diferencia de scrypt cada El nuevo bloque (64 bytes de longitud) depende de todos los bloques anteriores. Como resultado, una hipotética El “ahorro de memoria” debería aumentar exponencialmente su velocidad de cálculo. Nuestro algoritmo requiere alrededor de 2 Mb por instancia por los siguientes motivos: 1. Cabe en la caché L3 (por núcleo) de los procesadores modernos, que deberían convertirse en algo común. en unos años; 2. Un megabyte de memoria interna es un tamaño casi inaceptable para una tubería ASIC moderna; 3. Las GPU pueden ejecutar cientos de instancias simultáneas, pero están limitadas de otras maneras: La memoria GDDR5 es más lenta que la caché L3 de la CPU y destaca por su ancho de banda, no velocidad de acceso aleatorio. 4. Una expansión significativa del scratchpad requeriría un aumento en las iteraciones, lo que en turno implica un aumento general del tiempo. Las llamadas "pesadas" en una red p2p sin confianza pueden provocar vulnerabilidades graves, porque los nodos están obligados a verificar el proof-of-work de cada nuevo bloque. Si un nodo dedica una cantidad considerable de tiempo a cada evaluación hash, puede ser fácilmente DDoSed por una avalancha de objetos falsos con datos de trabajo arbitrarios (valores nonce). 12 22 No importa, ¿es una moneda scrypt? ¿Dónde está el algoritmo? Lo único que veo es un anuncio. Aquí es donde Cryptonote, si su algoritmo PoW vale la pena, realmente brillará. no es Realmente SHA-256, no es realmente scrypt. Es nuevo, está vinculado a la memoria y no recursivo.

6 Otras ventajas 6.1 Emisión suave El límite superior para la cantidad total de monedas digitales CryptoNote es: MSupply = 264 −1 unidades atómicas. Esta es una restricción natural basada únicamente en los límites de implementación, no en la intuición. como “N monedas deberían ser suficientes para cualquiera”. Para garantizar la fluidez del proceso de emisión utilizamos la siguiente fórmula para el bloque recompensas: Recompensa base = (MSuministro −A) ≫18, donde A es la cantidad de monedas generadas previamente. 6.2 Parámetros ajustables 6.2.1 dificultad CryptoNote contiene un algoritmo de orientación que cambia la dificultad de cada bloque. esto disminuye el tiempo de reacción del sistema cuando la red hashrate crece o disminuye intensamente, preservando una tasa de bloqueo constante. El método original Bitcoin calcula la relación de real y el lapso de tiempo objetivo entre los últimos bloques de 2016 y lo utiliza como multiplicador para el actual dificultad. Obviamente, esto no es adecuado para recálculos rápidos (debido a la gran inercia) y produce oscilaciones. La idea general detrás de nuestro algoritmo es sumar todo el trabajo completado por los nodos y divídelo por el tiempo que han pasado. La medida del trabajo son los valores de dificultad correspondientes. en cada bloque. Pero debido a marcas de tiempo inexactas y que no son confiables, no podemos determinar la fecha exacta. intervalo de tiempo entre bloques. Un usuario puede cambiar su marca de tiempo al futuro y a la próxima vez. los intervalos pueden ser improbablemente pequeños o incluso negativos. Presumiblemente habrá pocos incidentes de este tipo, por lo que podemos simplemente ordenar las marcas de tiempo y eliminar los valores atípicos (es decir, 20%). el rango de el resto de valores es el tiempo que se dedicó al 80% de los bloques correspondientes. 6.2.2 Límites de tamaño Los usuarios pagan por almacenar el blockchain y tendrán derecho a votar por su tamaño. cada minero se ocupa del equilibrio entre equilibrar los costos y el beneficio de las tarifas y establece sus propios “límite suave” para crear bloques. Además, la regla básica para el tamaño máximo de bloque es necesaria para evitando que el blockchain se inunde con transacciones falsas; sin embargo, este valor debe no estar codificado. Sea MN el valor mediano de los últimos N tamaños de bloques. Entonces el “límite estricto” para el tamaño de aceptar bloques es \(2 \cdot M_N\). Evita que el blockchain se hinche pero aún permite que el límite crecer lentamente con el tiempo si es necesario. No es necesario limitar explícitamente el tamaño de la transacción. Está delimitado por el tamaño de un bloque; y si alguien quiere crear una transacción enorme con cientos de entradas/salidas (o con Debido al alto grado de ambigüedad en las firmas de anillos), puede hacerlo pagando una tarifa suficiente. 6.2.3 Penalización por exceso de tamaño Un minero todavía tiene la capacidad de llenar un bloque con sus propias transacciones sin tarifa hasta su máximo. tamaño \(2 \cdot M_b\). Aunque sólo la mayoría de los mineros pueden cambiar el valor medio, todavía hay una 13 6 Otras ventajas 6.1 Emisión suave El límite superior para la cantidad total de monedas digitales CryptoNote es: MSupply = 264 −1 unidades atómicas. Esta es una restricción natural basada únicamente en los límites de implementación, no en la intuición. como “N monedas deberían ser suficientes para cualquiera”. Para garantizar la fluidez del proceso de emisión utilizamos la siguiente fórmula para el bloque recompensas: Recompensa base = (MSuministro −A) ≫18, donde A es la cantidad de monedas generadas previamente. 6.2 Parámetros ajustables 6.2.1 dificultad CryptoNote contiene un algoritmo de orientación que cambia la dificultad de cada bloque. esto disminuye el tiempo de reacción del sistema cuando la hashrate de la red crece o disminuye intensamente, preservando una tasa de bloqueo constante. El método original Bitcoin calcula la relación de real y el lapso de tiempo objetivo entre los últimos bloques de 2016 y lo utiliza como multiplicador para el actual dificultad. Obviamente, esto no es adecuado para recálculos rápidos (debido a la gran inercia) y produce oscilaciones. La idea general detrás de nuestro algoritmo es sumar todo el trabajo completado por los nodos y divídelo por el tiempo que han pasado. La medida del trabajo son los valores de dificultad correspondientes. en cada bloque. Pero debido a marcas de tiempo inexactas y que no son confiables, no podemos determinar la fecha exacta. intervalo de tiempo entre bloques. Un usuario puede cambiar su marca de tiempo al futuro y a la próxima vez. los intervalos pueden ser improbablemente pequeños o incluso negativos. Presumiblemente habrá pocos incidentes de este tipo, por lo que podemos simplemente ordenar las marcas de tiempo y eliminar los valores atípicos (es decir, 20%). el rango de el resto de valores es el tiempo que se dedicó al 80% de los bloques correspondientes. 6.2.2 Límites de tamaño Los usuarios pagan por almacenar el blockchain y tendrán derecho a votar por su tamaño. cada minero se ocupa de la compensación entre equilibrare costos y beneficios de las tarifas y establece sus propios “límite suave” para crear bloques. Además, la regla básica para el tamaño máximo de bloque es necesaria para evitando que el blockchain se inunde con transacciones falsas; sin embargo, este valor debe no estar codificado. Sea MN el valor mediano de los últimos N tamaños de bloques. Entonces el “límite estricto” para el tamaño de aceptar bloques es \(2 \cdot M_N\). Evita que el blockchain se hinche pero aún permite que el límite crecer lentamente con el tiempo si es necesario. No es necesario limitar explícitamente el tamaño de la transacción. Está delimitado por el tamaño de un bloque; y si alguien quiere crear una transacción enorme con cientos de entradas/salidas (o con Debido al alto grado de ambigüedad en las firmas de anillos), puede hacerlo pagando una tarifa suficiente. 6.2.3 Penalización por exceso de tamaño Un minero todavía tiene la capacidad de llenar un bloque con sus propias transacciones sin tarifa hasta su máximo. tamaño \(2 \cdot M_b\). Aunque sólo la mayoría de los mineros pueden cambiar el valor medio, todavía hay una 13 23 Unidades atómicas. Me gusta eso. ¿Es este el equivalente de Satoshis? Si es así, eso significa que habrá 185 mil millones de criptomonedas. Sé que esto, eventualmente, debe modificarse en unas pocas páginas, ¿o tal vez hay un error tipográfico? Si la recompensa base es "todas las monedas restantes", entonces sólo un bloque es suficiente para obtener todas las monedas. Instamina. Por otro lado, si se supone que esto es proporcional de algún modo a la ¿Diferencia de tiempo entre ahora y alguna fecha de terminación de la producción de monedas? eso seria tiene sentido. Además, en mi mundo, dos signos mayores que este significan "mucho mayor que". ¿El autor ¿posiblemente signifique algo más? Si el ajuste a la dificultad ocurre en cada bloque, entonces un atacante podría tener una granja muy grande de Las máquinas extraen dentro y fuera en intervalos de tiempo cuidadosamente elegidos. Esto podría causar una explosión caótica (o una caída a cero) en dificultad, si las fórmulas de ajuste de dificultad no se amortiguan adecuadamente. No hay duda de que el método de Bitcoin no es adecuado para recálculos rápidos, pero la idea de inercia en estos sistemas sería necesario demostrarlo, no darlo por sentado. Además, las oscilaciones en la red la dificultad no es necesariamente un problema a menos que resulte en oscilaciones de suministro de monedas, y tener una dificultad que cambia muy rápidamente podría causar una "corrección excesiva". El tiempo invertido, especialmente en un lapso corto como unos pocos minutos, será proporcional al "total número de bloques creados en la red." La constante de proporcionalidad crecerá en sí misma. con el tiempo, presumiblemente de manera exponencial si CN despega. Puede ser una mejor idea simplemente ajustar la dificultad para mantener "los bloques totales creados en el red desde que se agregó el último bloque a la cadena principal" dentro de algún valor constante, o con variación acotada o algo así. Si un algoritmo adaptativo que es computacionalmente Si se puede determinar si es fácil de implementar, esto parecería resolver el problema. Pero entonces, si usáramos ese método, alguien con una gran granja minera podría cerrarla. durante unas horas y vuelva a encenderlo. Durante las primeras cuadras, esa granja hará banco. Entonces, en realidad, este método traería a colación un punto interesante: la minería se convierte (en promedio) en una perder el juego sin retorno de la inversión, especialmente a medida que más personas se conectan a la red. Si la dificultad minera seguimiento muy de cerca de la red hashrate, de alguna manera dudo que la gente extraiga tanto como actualmente lo hago. O, por otro lado, en lugar de mantener sus granjas mineras funcionando las 24 horas del día, los 7 días de la semana, pueden convertirlas en encendido por 6 horas, apagado por 2, encendido por 6, apagado por 2, o algo así. Simplemente cambia a otra moneda durante unas horas, espera a que disminuya la dificultad y luego vuelve a subir para ganar esos pocos puntos extra. bloques de rentabilidad a medida que la red se adapta. ¿Y sabes qué? En realidad esto es probablemente Uno de los mejores escenarios de minería en los que he pensado... Esto podría ser circular, pero si el tiempo de creación del bloque promedia aproximadamente un minuto, ¿podemos simplemente ¿Utiliza el número de bloques como indicador del "tiempo invertido?"

6 Otras ventajas 6.1 Emisión suave El límite superior para la cantidad total de monedas digitales CryptoNote es: MSupply = 264 −1 unidades atómicas. Esta es una restricción natural basada únicamente en los límites de implementación, no en la intuición. como “N monedas deberían ser suficientes para cualquiera”. Para garantizar la fluidez del proceso de emisión utilizamos la siguiente fórmula para el bloque recompensas: Recompensa base = (MSuministro −A) ≫18, donde A es la cantidad de monedas generadas previamente. 6.2 Parámetros ajustables 6.2.1 dificultad CryptoNote contiene un algoritmo de orientación que cambia la dificultad de cada bloque. esto Disminuye el tiempo de reacción del sistema cuando la velocidad de la red hash crece o disminuye intensamente. preservando una tasa de bloqueo constante. El método original Bitcoin calcula la relación de real y el lapso de tiempo objetivo entre los últimos bloques de 2016 y lo utiliza como multiplicador para el actual dificultad. Obviamente, esto no es adecuado para recálculos rápidos (debido a la gran inercia) y produce oscilaciones. La idea general detrás de nuestro algoritmo es sumar todo el trabajo completado por los nodos y divídelo por el tiempo que han pasado. La medida del trabajo son los valores de dificultad correspondientes. en cada bloque. Pero debido a marcas de tiempo inexactas y que no son confiables, no podemos determinar la fecha exacta. intervalo de tiempo entre bloques. Un usuario puede cambiar su marca de tiempo al futuro y a la próxima vez. los intervalos pueden ser improbablemente pequeños o incluso negativos. Presumiblemente habrá pocos incidentes de este tipo, por lo que podemos simplemente ordenar las marcas de tiempo y eliminar los valores atípicos (es decir, 20%). el rango de el resto de valores es el tiempo que se dedicó al 80% de los bloques correspondientes. 6.2.2 Límites de tamaño Los usuarios pagan por almacenar el blockchain y tendrán derecho a votar por su tamaño. cada minero se ocupa del equilibrio entre equilibrar los costos y el beneficio de las tarifas y establece sus propios “límite suave” para crear bloques. Además, la regla básica para el tamaño máximo de bloque es necesaria para evitando que el blockchain se inunde con transacciones falsas; sin embargo, este valor debe no estar codificado. Sea MN el valor mediano de los últimos N tamaños de bloques. Entonces el “límite estricto” para el tamaño de aceptar bloques es \(2 \cdot M_N\). Evita que el blockchain se hinche pero aún permite que el límite crecer lentamente con el tiempo si es necesario. No es necesario limitar explícitamente el tamaño de la transacción. Está delimitado por el tamaño de un bloque; y si alguien quiere crear una transacción enorme con cientos de entradas/salidas (o con Debido al alto grado de ambigüedad en las firmas de anillos), puede hacerlo pagando una tarifa suficiente. 6.2.3 Penalización por exceso de tamaño Un minero todavía tiene la capacidad de llenar un bloque con sus propias transacciones sin tarifa hasta su máximo. tamaño \(2 \cdot M_b\). Aunque sólo la mayoría de los mineros pueden cambiar el valor medio, todavía hay una 13 6 Otras ventajas 6.1 Emisión suave El límite superior para la cantidad total de monedas digitales CryptoNote es: MSupply = 264 −1 unidades atómicas. Esta es una restricción natural basada únicamente en los límites de implementación, no en la intuición. como “N monedas deberían ser suficientes para cualquiera”. Para garantizar la fluidez del proceso de emisión utilizamos la siguiente fórmula para el bloque recompensas: Recompensa base = (MSuministro −A) ≫18, donde A es la cantidad de monedas generadas previamente. 6.2 Parámetros ajustables 6.2.1 dificultad CryptoNote contiene un algoritmo de orientación que cambia la dificultad de cada bloque. esto Disminuye el tiempo de reacción del sistema cuando la hashrate de la red crece o disminuye intensamente. preservando una tasa de bloqueo constante. El método original Bitcoin calcula la relación de real y el lapso de tiempo objetivo entre los últimos bloques de 2016 y lo utiliza como multiplicador para el actual dificultad. Obviamente, esto no es adecuado para recálculos rápidos (debido a la gran inercia) y produce oscilaciones. La idea general detrás de nuestro algoritmo es sumar todo el trabajo completado por los nodos y divídelo por el tiempo que han pasado. La medida del trabajo son los valores de dificultad correspondientes. en cada bloque. Pero debido a marcas de tiempo inexactas y que no son confiables, no podemos determinar la fecha exacta. intervalo de tiempo entre bloques. Un usuario puede cambiar su marca de tiempo al futuro y a la próxima vez. los intervalos pueden ser improbablemente pequeños o incluso negativos. Presumiblemente habrá pocos incidentes de este tipo, por lo que podemos simplemente ordenar las marcas de tiempo y eliminar los valores atípicos (es decir, 20%). el rango de el resto de valores es el tiempo que se dedicó al 80% de los bloques correspondientes. 6.2.2 Límites de tamaño Los usuarios pagan por almacenar el blockchain y tendrán derecho a votar por su tamaño. cada minero se ocupa de la compensación entre equilibrare costos y beneficios de las tarifas y establece sus propios “límite suave” para crear bloques. Además, la regla básica para el tamaño máximo de bloque es necesaria para evitando que el blockchain se inunde con transacciones falsas; sin embargo, este valor debe no estar codificado. Sea MN el valor mediano de los últimos N tamaños de bloques. Entonces el “límite estricto” para el tamaño de aceptar bloques es \(2 \cdot M_N\). Evita que el blockchain se hinche pero aún permite que el límite crecer lentamente con el tiempo si es necesario. No es necesario limitar explícitamente el tamaño de la transacción. Está delimitado por el tamaño de un bloque; y si alguien quiere crear una transacción enorme con cientos de entradas/salidas (o con Debido al alto grado de ambigüedad en las firmas de anillos), puede hacerlo pagando una tarifa suficiente. 6.2.3 Penalización por exceso de tamaño Un minero todavía tiene la capacidad de llenar un bloque con sus propias transacciones sin tarifa hasta su máximo. tamaño \(2 \cdot M_b\). Aunque sólo la mayoría de los mineros pueden cambiar el valor medio, todavía hay una 13 24 Bien, entonces tenemos un blockchain, y cada bloque tiene marcas de tiempo ADEMÁS de simplemente ser ordenado. Esto se insertó claramente simplemente para dificultar el ajuste, porque las marcas de tiempo son muy poco confiable, como se mencionó. ¿Se nos permite tener marcas de tiempo contradictorias en la cadena? Si el bloque A viene antes que el bloque B en la cadena, y todo es consistente en términos financieros, ¿Pero el bloque A parece haber sido creado después del bloque B? Porque, tal vez, alguien poseía una gran parte de la red? ¿Está bien? Probablemente porque las finanzas no están arruinadas. Bien, odio este arbitrario "sólo el 80% de los bloques son legítimos para el blockchain principal" enfoque. ¿Tenía la intención de evitar que los mentirosos modificaran sus marcas de tiempo? Pero ahora añade incentivo para que todos mientan sobre sus marcas de tiempo y simplemente elijan la mediana. Por favor defina. Lo que significa "para este bloque, solo incluya transacciones que incluyan tarifas mayores superior al p%, preferentemente con tarifas superiores al 2p%" o algo así? ¿Qué quieren decir con falso? Si la transacción es consistente con la historia pasada de la blockchain, y la transacción incluye tarifas que satisfacen a los mineros, ¿no es suficiente? Bueno, no, no necesariamente. Si no existe un tamaño de bloque máximo, no hay nada que pueda mantener a un usuario malintencionado desde simplemente cargar un bloque masivo de transacciones a sí mismo de una vez solo para reducir la velocidad la red. Una regla básica para el tamaño máximo de bloque evita que las personas coloquen enormes cantidades de basura datos en el blockchain todos a la vez solo para ralentizar las cosas. Pero tal norma ciertamente tiene que ser adaptable: durante la temporada navideña, por ejemplo, podríamos esperar que el tráfico aumente, y el tamaño del bloque se vuelve muy grande, e inmediatamente después, para que el tamaño del bloque disminuya posteriormente otra vez. Entonces necesitamos a) algún tipo de límite adaptativo ob) un límite lo suficientemente grande como para que el 99% de Los picos navideños razonables no rompen el límite. Por supuesto, ese segundo es imposible de estimación: ¿quién sabe si una moneda tendrá éxito? Es mejor hacerlo adaptable y no preocuparse. al respecto. Pero entonces tenemos un problema de teoría del control: ¿cómo hacer que esto sea adaptativo sin ¿Vulnerabilidad al ataque u oscilaciones salvajes y locas? Observe que un método adaptativo no impide que los usuarios malintencionados acumulen pequeñas cantidades de datos basura a lo largo del tiempo en el blockchain para causar hinchazón a largo plazo. Este es un tema diferente en conjunto y uno con el que las criptomonedas tienen serios problemas.

6 Otras ventajas 6.1 Emisión suave El límite superior para la cantidad total de monedas digitales CryptoNote es: MSupply = 264 −1 unidades atómicas. Esta es una restricción natural basada únicamente en los límites de implementación, no en la intuición. como “N monedas deberían ser suficientes para cualquiera”. Para garantizar la fluidez del proceso de emisión utilizamos la siguiente fórmula para el bloque recompensas: Recompensa base = (MSuministro −A) ≫18, donde A es la cantidad de monedas generadas previamente. 6.2 Parámetros ajustables 6.2.1 dificultad CryptoNote contiene un algoritmo de orientación que cambia la dificultad de cada bloque. esto disminuye el tiempo de reacción del sistema cuando la hashrate de la red crece o disminuye intensamente, preservando una tasa de bloqueo constante. El método original Bitcoin calcula la relación de real y el lapso de tiempo objetivo entre los últimos bloques de 2016 y lo utiliza como multiplicador para el actual dificultad. Obviamente, esto no es adecuado para recálculos rápidos (debido a la gran inercia) y produce oscilaciones. La idea general detrás de nuestro algoritmo es sumar todo el trabajo completado por los nodos y divídelo por el tiempo que han pasado. La medida del trabajo son los valores de dificultad correspondientes. en cada bloque. Pero debido a marcas de tiempo inexactas y que no son confiables, no podemos determinar la fecha exacta. intervalo de tiempo entre bloques. Un usuario puede cambiar su marca de tiempo al futuro y a la próxima vez. los intervalos pueden ser improbablemente pequeños o incluso negativos. Presumiblemente habrá pocos incidentes de este tipo, por lo que podemos simplemente ordenar las marcas de tiempo y eliminar los valores atípicos (es decir, 20%). el rango de el resto de valores es el tiempo que se dedicó al 80% de los bloques correspondientes. 6.2.2 Límites de tamaño Los usuarios pagan por almacenar el blockchain y tendrán derecho a votar por su tamaño. cada minero se ocupa del equilibrio entre equilibrar los costos y el beneficio de las tarifas y establece sus propios “límite suave” para crear bloques. Además, la regla básica para el tamaño máximo de bloque es necesaria para evitando que el blockchain se inunde con transacciones falsas; sin embargo, este valor debe no estar codificado. Sea MN el valor mediano de los últimos N tamaños de bloques. Entonces el “límite estricto” para el tamaño de aceptar bloques es \(2 \cdot M_N\). Evita que el blockchain se hinche pero aún permite que el límite crecer lentamente con el tiempo si es necesario. No es necesario limitar explícitamente el tamaño de la transacción. Está delimitado por el tamaño de un bloque; y si alguien quiere crear una transacción enorme con cientos de entradas/salidas (o con Debido al alto grado de ambigüedad en las firmas de anillos), puede hacerlo pagando una tarifa suficiente. 6.2.3 Penalización por exceso de tamaño Un minero todavía tiene la capacidad de llenar un bloque con sus propias transacciones sin tarifa hasta su máximo. tamaño \(2 \cdot M_b\). Aunque sólo la mayoría de los mineros pueden cambiar el valor medio, todavía hay una 13 6 Otras ventajas 6.1 Emisión suave El límite superior para la cantidad total de monedas digitales CryptoNote es: MSupply = 264 −1 unidades atómicas. Esta es una restricción natural basada únicamente en los límites de implementación, no en la intuición. como “N monedas deberían ser suficientes para cualquiera”. Para garantizar la fluidez del proceso de emisión utilizamos la siguiente fórmula para el bloque recompensas: Recompensa base = (MSuministro −A) ≫18, donde A es la cantidad de monedas generadas previamente. 6.2 Parámetros ajustables 6.2.1 dificultad CryptoNote contiene un algoritmo de orientación que cambia la dificultad de cada bloque. esto Disminuye el tiempo de reacción del sistema cuando la hashrate de la red crece o disminuye intensamente. preservando una tasa de bloqueo constante. El método original Bitcoin calcula la relación de real y el lapso de tiempo objetivo entre los últimos bloques de 2016 y lo utiliza como multiplicador para el actual dificultad. Obviamente, esto no es adecuado para recálculos rápidos (debido a la gran inercia) y produce oscilaciones. La idea general detrás de nuestro algoritmo es sumar todo el trabajo completado por los nodos y divídelo por el tiempo que han pasado. La medida del trabajo son los valores de dificultad correspondientes. en cada bloque. Pero debido a marcas de tiempo inexactas y que no son confiables, no podemos determinar la fecha exacta. intervalo de tiempo entre bloques. Un usuario puede cambiar su marca de tiempo al futuro y a la próxima vez. los intervalos pueden ser improbablemente pequeños o incluso negativos. Presumiblemente habrá pocos incidentes de este tipo, por lo que podemos simplemente ordenar las marcas de tiempo y eliminar los valores atípicos (es decir, 20%). el rango de el resto de valores es el tiempo que se dedicó al 80% de los bloques correspondientes. 6.2.2 Límites de tamaño Los usuarios pagan por almacenar el blockchain y tendrán derecho a votar por su tamaño. cada minero se ocupa de la compensación entre equilibrare costos y beneficios de las tarifas y establece sus propios “límite suave” para crear bloques. Además, la regla básica para el tamaño máximo de bloque es necesaria para evitando que el blockchain se inunde con transacciones falsas; sin embargo, este valor debe no estar codificado. Sea MN el valor mediano de los últimos N tamaños de bloques. Entonces el “límite estricto” para el tamaño de aceptar bloques es \(2 \cdot M_N\). Evita que el blockchain se hinche pero aún permite que el límite crecer lentamente con el tiempo si es necesario. No es necesario limitar explícitamente el tamaño de la transacción. Está delimitado por el tamaño de un bloque; y si alguien quiere crear una transacción enorme con cientos de entradas/salidas (o con Debido al alto grado de ambigüedad en las firmas de anillos), puede hacerlo pagando una tarifa suficiente. 6.2.3 Penalización por exceso de tamaño Un minero todavía tiene la capacidad de llenar un bloque con sus propias transacciones sin tarifa hasta su máximo. tamaño \(2 \cdot M_b\). Aunque sólo la mayoría de los mineros pueden cambiar el valor medio, todavía hay una 13 25 Al reescalar el tiempo para que una unidad de tiempo sea N bloques, el tamaño promedio de bloque aún podría, en teoría, crecer exponencialmente proporcionalmente a 2ˆt. Por otra parte, un límite más general en el siguiente bloque sería M_nf(M_n) para alguna función f. ¿Qué propiedades de f ¿Elegimos para garantizar un "crecimiento razonable" del tamaño del bloque? La progresión de Los tamaños de bloque (después del tiempo de reescalado) serían así: M_n f(M_n)M_n f(f(M_n)M_n)f(M_n)M_n f(f(f(M_n)M_n)f(M_n)M_n)f(f(M_n)M_n)f( ... Y el objetivo aquí es elegir f tal que esta secuencia no crezca más rápido que, digamos, linealmente, o quizás incluso como Log(t). Por supuesto, si f(M_n) = a para alguna constante a, esta secuencia es en realidad M_n aM_n aˆ2M_n aˆ3M_n ... Y, por supuesto, la única manera de limitar esto a un crecimiento lineal como máximo es eligiendo a=1. Por supuesto, esto es inviable. No permite ningún crecimiento. Si, por el contrario, f(M_n) es una función no constante, entonces la situación es mucho más complicada. complicado y puede permitir una solución elegante. Pensaré en esto por un tiempo. Esta tarifa tendrá que ser lo suficientemente grande como para descontar la penalización por exceso de tamaño de la siguiente sección. ¿Por qué se supone que un usuario general es hombre, eh? ¿Eh?

posibilidad de inflar el blockchain y producir una carga adicional en los nodos. para desalentar Para que los participantes malévolos creen bloques grandes, introducimos una función de penalización: NuevaRecompensa = Recompensa Base \(\cdot\) Tamaño negro manganeso −1 2 Esta regla se aplica sólo cuando BlkSize es mayor que el tamaño mínimo de bloque libre que debería estar cerca del máximo (10kb, \(M_N \cdot 110\%\)). A los mineros se les permite crear bloques de "tamaño habitual" e incluso excederlo con utilidades cuando los honorarios globales superen la multa. Pero es poco probable que las tarifas aumenten cuadráticamente diferente del valor de la penalización, por lo que habrá un equilibrio. 6.3 Guiones de transacciones CryptoNote tiene un subsistema de secuencias de comandos muy minimalista. Un remitente especifica una expresión Φ = f (x1, x2, . . . , xn), donde n es el número de claves públicas de destino {Pi}n yo=1. Sólo cinco binarios Se admiten operadores: mínimo, máximo, suma, mul y cmp. Cuando el receptor gasta este pago, produce \(0 \leq k \leq n\) firmas y las pasa a la entrada de la transacción. El proceso de verificación simplemente evalúa Φ con xi = 1 para verificar si hay una firma válida para la clave pública Pi, y xi = 0. Un verificador acepta la prueba si ffΦ > 0. A pesar de su simplicidad, este enfoque cubre todos los casos posibles: • Firma multiumbral/umbral. Para la firma múltiple “M-out-of-N” de estilo Bitcoin (es decir, el receptor debe proporcionar al menos \(0 \leq M \leq N\) firmas válidas) Φ = x1+x2+. . .+xN \(\geq M\) (Para mayor claridad estamos usando notación algebraica común). La firma del umbral ponderado (algunas claves pueden ser más importantes que otras) podría expresarse como Φ = \(w_1 \cdot x_1\) + \(w_2 \cdot x_2\) + . . . + \(w_N \cdot x_N\) \(\geq wM\). Y escenario donde la llave maestra corresponde a Φ = máx(\(M \cdot x\), x1 + x2 + . . . + xN) \(\geq M\). Es fácil demostrar que cualquier caso sofisticado puede ser expresados con estos operadores, es decir, forman base. • Protección por contraseña. La posesión de una contraseña secreta equivale al conocimiento de una clave privada, derivada de manera determinista de la contraseña: k = KDF(s). Por tanto, un receptor puede demostrar que conoce la contraseña aportando otra firma bajo la clave k. El remitente simplemente agrega la clave pública correspondiente a su propia salida. Tenga en cuenta que esto El método es mucho más seguro que el "rompecabezas de transacciones" utilizado en Bitcoin [13], donde el La contraseña se pasa explícitamente en las entradas. • Casos degenerados. Φ = 1 significa que cualquiera puede gastar el dinero; Φ = 0 marca el la producción no se puede gastar para siempre. En el caso de que el script de salida combinado con claves públicas sea demasiado grande para un remitente, él Puede utilizar un tipo de salida especial, que indica que el destinatario pondrá estos datos en su entrada. mientras que el remitente proporciona solo un hash del mismo. Este enfoque es similar al “pago a hash” de Bitcoin. característica, pero en lugar de agregar nuevos comandos de script, manejamos este caso en la estructura de datos nivel. 7 Conclusión Hemos investigado los principales defectos de Bitcoin y hemos propuesto algunas posibles soluciones. Estas características ventajosas y nuestro desarrollo continuo hacen que el nuevo sistema de efectivo electrónico CryptoNote un serio rival de Bitcoin, superando a todas sus bifurcaciones. 14 posibilidad de inflar el blockchain y producir una carga adicional en los nodos. para desalentar Para que los participantes malévolos creen bloques grandes, introducimos una función de penalización: NuevaRecompensa = Recompensa Base \(\cdot\) Tamaño negro manganeso −1 2 Esta regla se aplica sólo cuando BlkSize es mayor que el tamaño mínimo de bloque libre que debería estar cerca del máximo (10kb, \(M_N \cdot 110\%\)). A los mineros se les permite crear bloques de "tamaño habitual" e incluso excederlo con utilidades cuando los honorarios globales superen la multa. Pero es poco probable que las tarifas aumenten cuadráticamente diferente del valor de la penalización, por lo que habrá un equilibrio. 6.3 Guiones de transacciones CryptoNote tiene un subsistema de secuencias de comandos muy minimalista. Un remitente especifica una expresión Φ = f (x1, x2, . . . , xn), donde n es el número de claves públicas de destino {Pi}n yo=1. Sólo cinco binarios Se admiten operadores: mínimo, máximo, suma, mul y cmp. Cuando el receptor gasta este pago, produce \(0 \leq k \leq n\) firmas y las pasa a la entrada de la transacción. El proceso de verificación simplemente evalúa Φ con xi = 1 para verificar si hay una firma válida para la clave pública Pi, y xi = 0. Un verificador acepta la prueba si ffΦ > 0. A pesar de su simplicidad, este enfoque cubre todos los casos posibles: • Firma multiumbral/umbral. Para la firma múltiple “M-out-of-N” de estilo Bitcoin (es decir, el receptor debe proporcionar al menos \(0 \leq M \leq N\) firmas válidas) Φ = x1+x2+. . .+xN \(\geq M\) (Para mayor claridad estamos usando notación algebraica común). La firma del umbral ponderado (algunas claves pueden ser más importantes que otras) podría expresarse como Φ = \(w_1 \cdot x_1\) + \(w_2 \cdot x_2\) + . . . + \(w_N \cdot x_N\) \(\geq wM\). y escenarioio donde la clave maestra corresponde a Φ = máx(\(M \cdot x\), x1 + x2 + . . . + xN) \(\geq M\). Es fácil demostrar que cualquier caso sofisticado puede ser expresados con estos operadores, es decir, forman base. • Protección por contraseña. La posesión de una contraseña secreta equivale al conocimiento de una clave privada, derivada de manera determinista de la contraseña: k = KDF(s). Por tanto, un receptor puede demostrar que conoce la contraseña aportando otra firma bajo la clave k. El remitente simplemente agrega la clave pública correspondiente a su propia salida. Tenga en cuenta que esto El método es mucho más seguro que el "rompecabezas de transacciones" utilizado en Bitcoin [13], donde el La contraseña se pasa explícitamente en las entradas. • Casos degenerados. Φ = 1 significa que cualquiera puede gastar el dinero; Φ = 0 marca el la producción no se puede gastar para siempre. En el caso de que el script de salida combinado con claves públicas sea demasiado grande para un remitente, él Puede utilizar un tipo de salida especial, que indica que el destinatario pondrá estos datos en su entrada. mientras que el remitente proporciona solo un hash del mismo. Este enfoque es similar al “pago a hash” de Bitcoin. característica, pero en lugar de agregar nuevos comandos de script, manejamos este caso en la estructura de datos nivel. 7 Conclusión Hemos investigado los principales defectos de Bitcoin y hemos propuesto algunas posibles soluciones. Estas características ventajosas y nuestro desarrollo continuo hacen que el nuevo sistema de efectivo electrónico CryptoNote un serio rival de Bitcoin, superando a todas sus bifurcaciones. 14 26 Esto puede ser innecesario si podemos encontrar una manera de limitar el tamaño del bloque a lo largo del tiempo... Esto tampoco puede ser correcto. Simplemente configuraron "NewReward" en una parábola orientada hacia arriba donde El tamaño del bloque es la variable independiente. Entonces la nueva recompensa explota hasta el infinito. Si por el otro Por otro lado, la nueva recompensa es Max(0,Base Reward(1-(BlkSize/Mn - 1)ˆ2)), luego la nueva recompensa sería una parábola orientada hacia abajo con pico en el tamaño del bloque = Mn, y con intersecciones en Tamaño de bloque = 0 y Tamaño de bloque = 2Mn. Y eso parece ser lo que intentan describir. Sin embargo, esto no

Transactions intraçables

Dans cette section, nous proposons un schéma de transactions totalement anonymes satisfaisant à la fois l'intracabilité et les conditions de non-liaison. Une caractéristique importante de notre solution est son autonomie : l'expéditeur n'est pas tenu de coopérer avec d'autres utilisateurs ou un tiers de confiance pour effectuer ses transactions ; chaque participant produit donc indépendamment un trafic de couverture. 4.1 Revue de la littérature Notre schéma repose sur la primitive cryptographique appelée signature de groupe. Présenté pour la première fois par D. Chaum et E. van Heyst [19], il permet à un utilisateur de signer son message au nom du groupe. Après avoir signé le message, l'utilisateur ne fournit (à des fins de vérification) pas son propre public. 1C'est ce qu'on appelle la « limite souple » — la restriction client de référence pour la création de nouveaux blocs. Dur maximum de la taille de bloc possible était de 1 Mo 4 si nécessaire, cela provoque les principaux inconvénients. Malheureusement, il est difficile de prédire quand les constantes devront peut-être être modifiées et leur remplacement peut avoir des conséquences terribles. Un bon exemple de changement de limite codé en dur conduisant à des conséquences désastreuses est le blocage limite de taille fixée à 250 Ko1. Cette limite était suffisante pour contenir environ 10 000 transactions standards. Dans début 2013, cette limite était presque atteinte et un accord a été trouvé pour augmenter le limite. Le changement a été implémenté dans la version 0.8 du portefeuille et s'est terminé par une division de chaîne de 24 blocs. et une attaque réussie de double dépense [9]. Bien que le bug ne soit pas dans le protocole Bitcoin, mais au contraire, dans le moteur de base de données, il aurait pu être facilement détecté par un simple test de résistance s'il y avait eu aucune limite de taille de bloc introduite artificiellement. Les constantes agissent également comme une forme de point de centralisation. Malgré la nature peer-to-peer de Bitcoin, une écrasante majorité de nœuds utilisent le client de référence officiel [10] développé par un petit groupe de personnes. Ce groupe prend la décision de mettre en œuvre des modifications au protocole et la plupart des gens acceptent ces changements indépendamment de leur « exactitude ». Certaines décisions ont provoqué discussions animées et même appels au boycott [11], ce qui indique que la communauté et le les développeurs peuvent être en désaccord sur certains points importants. Il semble donc logique d'avoir un protocole avec des variables configurables par l'utilisateur et auto-ajustables comme moyen possible d'éviter ces problèmes. 2.5 Scripts volumineux Le système de script de Bitcoin est une fonctionnalité lourde et complexe. Cela permet potentiellement de créer transactions sophistiquées [12], mais certaines de ses fonctionnalités sont désactivées en raison de problèmes de sécurité et certains n'ont même jamais été utilisés [13]. Le script (y compris les parties des expéditeurs et des destinataires) pour la transaction la plus populaire en Bitcoin ressemble à ceci : OP DUP OP HASH160 OP EQUALVERIFY OP CHECKSIG. Le script fait 164 octets alors que son seul but est de vérifier si le récepteur possède le clé secrète nécessaire pour vérifier sa signature. 3 La technologie CryptoNote Maintenant que nous avons couvert les limites de la technologie Bitcoin, nous allons nous concentrer sur présentant les fonctionnalités de CryptoNote. 4 Transactions intraçables Dans cette section, nous proposons un schéma de transactions totalement anonymes satisfaisant à la fois l'intracabilité et les conditions de non-liaison. Une caractéristique importante de notre solution est son autonomie : l'expéditeur n'est pas tenu de coopérer avec d'autres utilisateurs ou un tiers de confiance pour effectuer ses transactions ; chaque participant produit donc indépendamment un trafic de couverture. 4.1 Revue de la littérature Notre schéma repose sur la primitive cryptographique appelée signature de groupe. Présenté pour la première fois par D. Chaum et E. van Heyst [19], il permet à un utilisateur de signer son message au nom du groupe. Après avoir signé le message, l'utilisateur ne fournit (à des fins de vérification) pas son propre public. 1C'est ce qu'on appelle la « limite souple » — la restriction client de référence pour la création de nouveaux blocs. Dur maximum de la taille de bloc possible était de 1 Mo 4 7 Rétrospectivement, cela semble avoir été une grave erreur de faire de la taille des blocs une limite fixe dans le code. Visa et Mastercard peuvent traiter des milliers, voire des centaines de milliers de transactions par seconde. Cependant, les transactions s'effectuent selon un processus stochastique, parfois par rafales massives, parfois rester silencieux pendant des heures. Pensez au volume des échanges de bitcoins. Cela semble être une excellente idée de concevoir un système qui augmente dynamiquement la taille des blocs lorsque cela est nécessaire pour s'adapter à l'augmentation du trafic de transactions et le diminuer de manière dynamique si nécessaire pour augmenter l’efficacité de la bande passante. Maintenant, appliquez cette notion à tous les paramètres du système. Et tant que nous prenons soin de garder le système de queue de poisson hors de contrôle, ce shça marcherait très bien. https://github.com/bitcoin/bips/blob/master/bip-0050.mediawiki Comme mentionné précédemment, si les variables s'ajustent automatiquement, certains contrôles doivent être imposés afin de empêcher le système de devenir incontrôlable. Nous y reviendrons. S’il s’agissait d’un article Wikipédia, il serait intitulé « STUB ». Même si nous sommes certainement dans le section présentant les « Problèmes de Bitcoin », j'aimerais avoir quelques précisions ici. Pourquoi 164 octets inacceptables pour une simple tâche de « vérification de la clé secrète » ? Jusqu'à quel point peuvent-ils être petits pour un langage de script raisonnable ? Cependant, je ne suis pas informaticien. http://download.springer.com/static/pdf/412/chp%253A10.1007%252F3-540-46416-6_22.pdf?auth66=140 Les signatures de groupe, telles que décrites, nécessitent un gestionnaire de groupe. Le responsable du groupe est capable de révoquer l'anonymat de tout signataire. Il existe donc une centralisation intrinsèque au sein d’un groupe. schéma de signature.

clé, mais les clés de tous les utilisateurs de son groupe. Un vérificateur est convaincu que le véritable signataire est un membre du groupe, mais ne peut identifier exclusivement le signataire. Le protocole initial nécessitait un tiers de confiance (appelé le gestionnaire de groupe), et il était le seul à pouvoir retrouver le signataire. La version suivante appelée signature en anneau, introduite par Rivest et coll. en [34], était un système autonome sans gestionnaire de groupe et sans anonymat révocation. Diverses modifications de ce schéma sont apparues plus tard : signature en anneau connectable [26, 27, 17] a permis de déterminer si deux signatures ont été produites par le même membre du groupe, traçables la signature en anneau [24, 23] limitait l'anonymat excessif en offrant la possibilité de retrouver le signataire de deux messages concernant la même métainformation (ou « tag » en termes de [24]). Une construction cryptographique similaire est également connue sous le nom de signature de groupe ad hoc [16, 38]. Il met l'accent sur la formation arbitraire de groupes, alors que les schémas de signature de groupe/anneau impliquent plutôt une ensemble fixe de membres. Pour l’essentiel, notre solution s’appuie sur l’ouvrage « Traceable ring signature » de E. Fujisaki et K. Suzuki [24]. Afin de distinguer l'algorithme original de notre modification, nous allons appelons cette dernière une signature en anneau à usage unique, soulignant la capacité de l'utilisateur à produire une seule signature valide. signature sous sa clé privée. Nous avons affaibli la propriété de traçabilité et conservé la possibilité de liaison uniquement pour fournir un caractère unique : la clé publique peut apparaître dans de nombreux ensembles de vérification étrangers et le la clé privée peut être utilisée pour générer une signature anonyme unique. En cas de double dépense tentative, ces deux signatures seront liées entre elles, mais il n'est pas nécessaire de révéler le signataire à nos fins. 4.2 Définitions 4.2.1 Paramètres de courbe elliptique Comme algorithme de signature de base, nous avons choisi d'utiliser le schéma rapide EdDSA, qui est développé et mis en œuvre par D.J. Bernstein et coll. [18]. Comme l'ECDSA de Bitcoin, il est basé sur la courbe elliptique problème de logarithme discret, notre schéma pourrait donc également être appliqué à Bitcoin à l'avenir. Les paramètres courants sont : q : un nombre premier ; q = 2255 −19 ; d : un élément de Fq ; d = −121665/121666 ; E : une équation de courbe elliptique ; −x2 + y2 = 1 + dx2y2 ; G : un point de base ; G = (x, −4/5); l : un ordre premier du point de base ; l = 2252 + 27742317777372353535851937790883648493 ; Hs : une fonction cryptographique hash \(\{0, 1\}^* \to \mathbb{F}_q\) ; Hp : une fonction déterministe hash \(E(\mathbb{F}_q) \to E(\mathbb{F}_q)\). 4.2.2 Terminologie La confidentialité renforcée nécessite une nouvelle terminologie qui ne doit pas être confondue avec les entités Bitcoin. la clé ec privée est une clé privée à courbe elliptique standard : un nombre \(a \in [1, l - 1]\) ; la clé ec publique est une clé publique à courbe elliptique standard : un point A = aG ; une paire de clés à usage unique est une paire de clés électroniques privées et publiques ; 5 clé, mais les clés de tous les utilisateurs de son groupe. Un vérificateur est convaincu que le véritable signataire est un membre du groupe, mais ne peut identifier exclusivement le signataire. Le protocole initial nécessitait un tiers de confiance (appelé le gestionnaire de groupe), et il était le seul à pouvoir retrouver le signataire. La version suivante appelée signature en anneau, introduite par Rivest et coll. en [34], était un système autonome sans gestionnaire de groupe et sans anonymat révocation. Diverses modifications de ce schéma sont apparues plus tard : signature en anneau connectable [26, 27, 17] a permis de déterminer si deux signatures ont été produites par le même membre du groupe, traçables la signature en anneau [24, 23] limitait l'anonymat excessif en offrant la possibilité de retrouver le signataire de deux messages concernant la même métainformation (ou « tag » en termes de [24]). Une construction cryptographique similaire est également connue sous le nom de signature de groupe ad hoc [16, 38]. Il met l'accent sur la formation arbitraire de groupes, alors que les schémas de signature de groupe/anneau impliquent plutôt une ensemble fixe de membres. Pour l’essentiel, notre solution s’appuie sur l’ouvrage « Traceable ring signature » de E. Fujisaki et K. Suzuki [24]. Afin de distinguer l'algorithme original de notre modification, nous allons appelons cette dernière une signature en anneau à usage unique, soulignant la capacité de l'utilisateur à produire une seule signature valide. signature sous sa clé privée. Nous avons affaibli la propriété de traçabilité et conservé la possibilité de liaison uniquement pour fournir un caractère unique : la clé publique peut apparaître dans de nombreux ensembles de vérification étrangers et le la clé privée peut être utilisée pour générer une signature anonyme unique. En cas de double dépense tentative, ces deux signatures seront liées entre elles, mais il n'est pas nécessaire de révéler le signataire à nos fins. 4.2 Définitions 4.2.1 Paramètres de courbe elliptique Comme algorithme de signature de base, nous avons choisie d'utiliser le schéma rapide EdDSA, développé et mis en œuvre par D.J. Bernstein et coll. [18]. Comme l'ECDSA de Bitcoin, il est basé sur la courbe elliptique problème de logarithme discret, notre schéma pourrait donc également être appliqué à Bitcoin à l'avenir. Les paramètres courants sont : q : un nombre premier ; q = 2255 −19 ; d : un élément de Fq ; d = −121665/121666 ; E : une équation de courbe elliptique ; −x2 + y2 = 1 + dx2y2 ; G : un point de base ; G = (x, −4/5); l : un ordre premier du point de base ; l = 2252 + 27742317777372353535851937790883648493 ; Hs : une fonction cryptographique hash \(\{0, 1\}^* \to \mathbb{F}_q\) ; Hp : une fonction déterministe hash \(E(\mathbb{F}_q) \to E(\mathbb{F}_q)\). 4.2.2 Terminologie La confidentialité renforcée nécessite une nouvelle terminologie qui ne doit pas être confondue avec les entités Bitcoin. la clé ec privée est une clé privée à courbe elliptique standard : un nombre \(a \in [1, l - 1]\) ; la clé ec publique est une clé publique à courbe elliptique standard : un point A = aG ; une paire de clés à usage unique est une paire de clés électroniques privées et publiques ; 5 8 Une signature en anneau fonctionne comme ceci : Alex veut divulguer un message à WikiLeaks au sujet de son employeur. Chaque collaborateur de son entreprise dispose d'une paire de clés privée/publique (Ri, Ui). Elle compose sa signature avec l'entrée définie comme son message, m, sa clé privée, Ri et celle de TOUT LE MONDE clés publiques, (Ui;i=1...n). N'importe qui (sans connaître de clés privées) peut facilement vérifier que quelque couple (Rj, Uj) a dû être utilisé pour construire la signature... quelqu'un qui travaille pour l’employeur d’Alex… mais il s’agit essentiellement d’une estimation aléatoire pour déterminer de laquelle il s’agit. http://en.wikipedia.org/wiki/Ring_signature#Crypto-currencies http://link.springer.com/chapter/10.1007/3-540-45682-1_32#page-1 http://link.springer.com/chapter/10.1007/11424826_65 http://link.springer.com/chapter/10.1007/978-3-540-27800-9_28 http://link.springer.com/chapter/10.1007%2F11774716_9 Notez qu'une signature en anneau pouvant être liée décrite ici est un peu à l'opposé de "non liée". décrit ci-dessus. Ici, nous interceptons deux messages et nous pouvons déterminer si le même parti les a envoyés, même si nous ne devrions toujours pas être en mesure de déterminer qui est ce parti. Le La définition de « non-liable » utilisée pour construire Cryptonote signifie que nous ne pouvons pas déterminer si c'est le même parti qui les reçoit. Par conséquent, ce que nous avons réellement ici, ce sont QUATRE choses qui se passent. Un système peut être lié ou non associable, selon qu'il est possible ou non de déterminer si l'expéditeur du message deux messages sont identiques (que cela nécessite ou non la révocation de l'anonymat). Et un système peut être dissociable ou non, selon qu'il est possible ou non de déterminer si le destinataire de deux messages est le même (indépendamment du fait que cela nécessite la révocation de l'anonymat). S’il vous plaît, ne me blâmez pas pour cette terrible terminologie. Les théoriciens des graphes devraient probablement être content. Certains d'entre vous seront peut-être plus à l'aise avec « liaison entre le récepteur » et avec « liaison avec l'expéditeur ». http://link.springer.com/chapter/10.1007/978-3-540-71677-8_13 Quand j'ai lu ceci, cela m'a semblé une fonctionnalité idiote. Puis j'ai lu que cela pouvait être une fonctionnalité pour vote électronique, et cela semblait logique. Plutôt cool, de ce point de vue. Mais je suis pas totalement sûr de mettre en œuvre délibérément des signatures en anneau traçables. http://search.ieice.org/bin/summary.php?id=e95-a_1_151

clé, mais les clés de tous les utilisateurs de son groupe. Un vérificateur est convaincu que le véritable signataire est un membre du groupe, mais ne peut identifier exclusivement le signataire. Le protocole initial nécessitait un tiers de confiance (appelé le gestionnaire de groupe), et il était le seul à pouvoir retrouver le signataire. La version suivante appelée signature en anneau, introduite par Rivest et coll. en [34], était un système autonome sans gestionnaire de groupe et sans anonymat révocation. Diverses modifications de ce schéma sont apparues plus tard : signature en anneau connectable [26, 27, 17] a permis de déterminer si deux signatures ont été produites par le même membre du groupe, traçables la signature en anneau [24, 23] limitait l'anonymat excessif en offrant la possibilité de retrouver le signataire de deux messages concernant la même métainformation (ou « tag » en termes de [24]). Une construction cryptographique similaire est également connue sous le nom de signature de groupe ad hoc [16, 38]. Il met l'accent sur la formation arbitraire de groupes, alors que les schémas de signature de groupe/anneau impliquent plutôt une ensemble fixe de membres. Pour l’essentiel, notre solution s’appuie sur l’ouvrage « Traceable ring signature » de E. Fujisaki et K. Suzuki [24]. Afin de distinguer l'algorithme original de notre modification, nous allons appelons cette dernière une signature en anneau à usage unique, soulignant la capacité de l'utilisateur à produire une seule signature valide. signature sous sa clé privée. Nous avons affaibli la propriété de traçabilité et conservé la possibilité de liaison uniquement pour fournir un caractère unique : la clé publique peut apparaître dans de nombreux ensembles de vérification étrangers et le la clé privée peut être utilisée pour générer une signature anonyme unique. En cas de double dépense tentative, ces deux signatures seront liées entre elles, mais il n'est pas nécessaire de révéler le signataire à nos fins. 4.2 Définitions 4.2.1 Paramètres de courbe elliptique Comme algorithme de signature de base, nous avons choisi d'utiliser le schéma rapide EdDSA, qui est développé et mis en œuvre par D.J. Bernstein et coll. [18]. Comme l'ECDSA de Bitcoin, il est basé sur la courbe elliptique problème de logarithme discret, notre schéma pourrait donc également être appliqué à Bitcoin à l'avenir. Les paramètres courants sont : q : un nombre premier ; q = 2255 −19 ; d : un élément de Fq ; d = −121665/121666 ; E : une équation de courbe elliptique ; −x2 + y2 = 1 + dx2y2 ; G : un point de base ; G = (x, −4/5); l : un ordre premier du point de base ; l = 2252 + 27742317777372353535851937790883648493 ; Hs : une fonction cryptographique hash \(\{0, 1\}^* \to \mathbb{F}_q\) ; Hp : une fonction déterministe hash \(E(\mathbb{F}_q) \to E(\mathbb{F}_q)\). 4.2.2 Terminologie La confidentialité renforcée nécessite une nouvelle terminologie qui ne doit pas être confondue avec les entités Bitcoin. la clé ec privée est une clé privée à courbe elliptique standard : un nombre \(a \in [1, l - 1]\) ; la clé ec publique est une clé publique à courbe elliptique standard : un point A = aG ; une paire de clés à usage unique est une paire de clés électroniques privées et publiques ; 5 clé, mais les clés de tous les utilisateurs de son groupe. Un vérificateur est convaincu que le véritable signataire est un membre du groupe, mais ne peut identifier exclusivement le signataire. Le protocole initial nécessitait un tiers de confiance (appelé le gestionnaire de groupe), et il était le seul à pouvoir retrouver le signataire. La version suivante appelée signature en anneau, introduite par Rivest et coll. en [34], était un système autonome sans gestionnaire de groupe et sans anonymat révocation. Diverses modifications de ce schéma sont apparues plus tard : signature en anneau connectable [26, 27, 17] a permis de déterminer si deux signatures ont été produites par le même membre du groupe, traçables la signature en anneau [24, 23] limitait l'anonymat excessif en offrant la possibilité de retrouver le signataire de deux messages concernant la même métainformation (ou « tag » en termes de [24]). Une construction cryptographique similaire est également connue sous le nom de signature de groupe ad hoc [16, 38]. Il met l'accent sur la formation arbitraire de groupes, alors que les schémas de signature de groupe/anneau impliquent plutôt une ensemble fixe de membres. Pour l’essentiel, notre solution s’appuie sur l’ouvrage « Traceable ring signature » de E. Fujisaki et K. Suzuki [24]. Afin de distinguer l'algorithme original de notre modification, nous allons appelons cette dernière une signature en anneau à usage unique, soulignant la capacité de l'utilisateur à produire une seule signature valide. signature sous sa clé privée. Nous avons affaibli la propriété de traçabilité et conservé la possibilité de liaison uniquement pour fournir un caractère unique : la clé publique peut apparaître dans de nombreux ensembles de vérification étrangers et le la clé privée peut être utilisée pour générer une signature anonyme unique. En cas de double dépense tentative, ces deux signatures seront liées entre elles, mais il n'est pas nécessaire de révéler le signataire à nos fins. 4.2 Définitions 4.2.1 Paramètres de courbe elliptique Comme algorithme de signature de base, nous avons choisie d'utiliser le schéma rapide EdDSA, développé et mis en œuvre par D.J. Bernstein et coll. [18]. Comme l'ECDSA de Bitcoin, il est basé sur la courbe elliptique problème de logarithme discret, notre schéma pourrait donc également être appliqué à Bitcoin à l'avenir. Les paramètres courants sont : q : un nombre premier ; q = 2255 −19 ; d : un élément de Fq ; d = −121665/121666 ; E : une équation de courbe elliptique ; −x2 + y2 = 1 + dx2y2 ; G : un point de base ; G = (x, −4/5); l : un ordre premier du point de base ; l = 2252 + 27742317777372353535851937790883648493 ; Hs : une fonction cryptographique hash \(\{0, 1\}^* \to \mathbb{F}_q\) ; Hp : une fonction déterministe hash \(E(\mathbb{F}_q) \to E(\mathbb{F}_q)\). 4.2.2 Terminologie La confidentialité renforcée nécessite une nouvelle terminologie qui ne doit pas être confondue avec les entités Bitcoin. la clé ec privée est une clé privée à courbe elliptique standard : un nombre \(a \in [1, l - 1]\) ; la clé ec publique est une clé publique à courbe elliptique standard : un point A = aG ; une paire de clés à usage unique est une paire de clés électroniques privées et publiques ; 5 9 Mon Dieu, l’auteur de ce livre blanc aurait certainement pu mieux formuler cela ! Disons qu'un l'entreprise détenue par ses salariés souhaite procéder à un vote sur l'acquisition ou non de certains nouveaux actifs, et Alex et Brenda sont tous deux employés. La Société offre à chaque employé un message comme "Je vote oui sur la proposition A!" qui a le "problème" de métainformation [PROP A] et leur demande de le signer avec une signature en anneau traçable s'ils soutiennent la proposition. En utilisant une signature en anneau traditionnelle, un employé malhonnête peut signer le message plusieurs fois, probablement avec différents nonce, afin de voter autant de fois qu'ils le souhaitent. De l'autre D'un autre côté, dans un système de signature en anneau traçable, Alex ira voter et sa clé privée aura été utilisé sur la question [PROP A]. Si Alex essaie de signer un message comme "Moi, Brenda, j'approuve proposition A!" pour "cadrer" Brenda et doubler le vote, ce nouveau message aura aussi de l'enjeu [PROPRIÉTÉ A]. Puisque la clé privée d'Alex a déjà déclenché le problème [PROP A], l'identité d'Alex sera immédiatement révélé comme une fraude. Ce qui, avouons-le, est plutôt cool ! La cryptographie a imposé l’égalité des votes. http://link.springer.com/chapter/10.1007/978-3-540-71677-8_13 Cet article est intéressant, car il crée essentiellement une signature en anneau ad hoc mais sans aucun des le consentement de l’autre participant. La structure de la signature peut être différente ; je n'ai pas creusé profond, et je n’ai pas vu si c’est sécurisé. https://people.csail.mit.edu/rivest/AdidaHohenbergerRivest-AdHocGroupSignaturesFromHijackedKeypai Les signatures des groupes ad hoc sont : les signatures en anneau, qui sont des signatures de groupe sans groupe gestionnaires, pas de centralisation, mais permet à un membre d'un groupe ad hoc de prétendre de manière prouvée que il n'a (pas) émis la signature anonyme au nom du groupe. http://link.springer.com/chapter/10.1007/11908739_9 Ce n’est pas tout à fait exact, d’après ma compréhension. Et ma compréhension changera probablement à mesure que J'approfondis ce projet. Mais d'après ma compréhension, la hiérarchie ressemble à ceci. Signatures de groupe : les gestionnaires de groupe contrôlent la traçabilité et la possibilité d'ajouter ou de supprimer des membres d'être signataires. Ring sigs : Formation de groupe arbitraire sans chef de groupe. Pas de révocation de l'anonymat. Pas question de se répudier d'une signature particulière. Avec anneau traçable et connectable signatures, l'anonymat est quelque peu évolutif. Signatures de groupe ad hoc : comme les signatures en anneau, mais les membres peuvent prouver qu'ils n'ont pas créé une signature particulière. Ceci est important lorsque n’importe qui dans un groupe peut produire une signature. http://link.springer.com/chapter/10.1007/978-3-540-71677-8_13 L'algorithme de Fujisaki et Suzuki est modifié plus tard par l'auteur pour fournir un caractère unique. Alors nous analyserons l'algorithme de Fujisaki et Suzuki en même temps que le nouvel algorithme plutôt que de le parcourir ici.

clé, mais les clés de tous les utilisateurs de son groupe. Un vérificateur est convaincu que le véritable signataire est un membre du groupe, mais ne peut identifier exclusivement le signataire. Le protocole initial nécessitait un tiers de confiance (appelé le gestionnaire de groupe), et il était le seul à pouvoir retrouver le signataire. La version suivante appelée signature en anneau, introduite par Rivest et coll. en [34], était un système autonome sans gestionnaire de groupe et sans anonymat révocation. Diverses modifications de ce schéma sont apparues plus tard : signature en anneau connectable [26, 27, 17] a permis de déterminer si deux signatures ont été produites par le même membre du groupe, traçables la signature en anneau [24, 23] limitait l'anonymat excessif en offrant la possibilité de retrouver le signataire de deux messages concernant la même métainformation (ou « tag » en termes de [24]). Une construction cryptographique similaire est également connue sous le nom de signature de groupe ad hoc [16, 38]. Il met l'accent sur la formation arbitraire de groupes, alors que les schémas de signature de groupe/anneau impliquent plutôt une ensemble fixe de membres. Pour l’essentiel, notre solution s’appuie sur l’ouvrage « Traceable ring signature » de E. Fujisaki et K. Suzuki [24]. Afin de distinguer l'algorithme original de notre modification, nous allons appelons cette dernière une signature en anneau à usage unique, soulignant la capacité de l'utilisateur à produire une seule signature valide. signature sous sa clé privée. Nous avons affaibli la propriété de traçabilité et conservé la possibilité de liaison uniquement pour fournir un caractère unique : la clé publique peut apparaître dans de nombreux ensembles de vérification étrangers et le la clé privée peut être utilisée pour générer une signature anonyme unique. En cas de double dépense tentative, ces deux signatures seront liées entre elles, mais il n'est pas nécessaire de révéler le signataire à nos fins. 4.2 Définitions 4.2.1 Paramètres de courbe elliptique Comme algorithme de signature de base, nous avons choisi d'utiliser le schéma rapide EdDSA, qui est développé et mis en œuvre par D.J. Bernstein et coll. [18]. Comme l'ECDSA de Bitcoin, il est basé sur la courbe elliptique problème de logarithme discret, notre schéma pourrait donc également être appliqué à Bitcoin à l'avenir. Les paramètres courants sont : q : un nombre premier ; q = 2255 −19 ; d : un élément de Fq ; d = −121665/121666 ; E : une équation de courbe elliptique ; −x2 + y2 = 1 + dx2y2 ; G : un point de base ; G = (x, −4/5); l : un ordre premier du point de base ; l = 2252 + 27742317777372353535851937790883648493 ; Hs : une fonction cryptographique hash \(\{0, 1\}^* \to \mathbb{F}_q\) ; Hp : une fonction déterministe hash \(E(\mathbb{F}_q) \to E(\mathbb{F}_q)\). 4.2.2 Terminologie La confidentialité renforcée nécessite une nouvelle terminologie qui ne doit pas être confondue avec les entités Bitcoin. la clé ec privée est une clé privée à courbe elliptique standard : un nombre \(a \in [1, l - 1]\) ; la clé ec publique est une clé publique à courbe elliptique standard : un point A = aG ; une paire de clés à usage unique est une paire de clés électroniques privées et publiques ; 5 clé, mais les clés de tous les utilisateurs de son groupe. Un vérificateur est convaincu que le véritable signataire est un membre du groupe, mais ne peut identifier exclusivement le signataire. Le protocole initial nécessitait un tiers de confiance (appelé le gestionnaire de groupe), et il était le seul à pouvoir retrouver le signataire. La version suivante appelée signature en anneau, introduite par Rivest et coll. en [34], était un système autonome sans gestionnaire de groupe et sans anonymat révocation. Diverses modifications de ce schéma sont apparues plus tard : signature en anneau connectable [26, 27, 17] a permis de déterminer si deux signatures ont été produites par le même membre du groupe, traçables la signature en anneau [24, 23] limitait l'anonymat excessif en offrant la possibilité de retrouver le signataire de deux messages concernant la même métainformation (ou « tag » en termes de [24]). Une construction cryptographique similaire est également connue sous le nom de signature de groupe ad hoc [16, 38]. Il met l'accent sur la formation arbitraire de groupes, alors que les schémas de signature de groupe/anneau impliquent plutôt une ensemble fixe de membres. Pour l’essentiel, notre solution s’appuie sur l’ouvrage « Traceable ring signature » de E. Fujisaki et K. Suzuki [24]. Afin de distinguer l'algorithme original de notre modification, nous allons appelons cette dernière une signature en anneau à usage unique, soulignant la capacité de l'utilisateur à produire une seule signature valide. signature sous sa clé privée. Nous avons affaibli la propriété de traçabilité et conservé la possibilité de liaison uniquement pour fournir un caractère unique : la clé publique peut apparaître dans de nombreux ensembles de vérification étrangers et le la clé privée peut être utilisée pour générer une signature anonyme unique. En cas de double dépense tentative, ces deux signatures seront liées entre elles, mais il n'est pas nécessaire de révéler le signataire à nos fins. 4.2 Définitions 4.2.1 Paramètres de courbe elliptique Comme algorithme de signature de base, nous avons choisie d'utiliser le schéma rapide EdDSA, développé et mis en œuvre par D.J. Bernstein et coll. [18]. Comme l'ECDSA de Bitcoin, il est basé sur la courbe elliptique problème de logarithme discret, notre schéma pourrait donc également être appliqué à Bitcoin à l'avenir. Les paramètres courants sont : q : un nombre premier ; q = 2255 −19 ; d : un élément de Fq ; d = −121665/121666 ; E : une équation de courbe elliptique ; −x2 + y2 = 1 + dx2y2 ; G : un point de base ; G = (x, −4/5); l : un ordre premier du point de base ; l = 2252 + 27742317777372353535851937790883648493 ; Hs : une fonction cryptographique hash \(\{0, 1\}^* \to \mathbb{F}_q\) ; Hp : une fonction déterministe hash \(E(\mathbb{F}_q) \to E(\mathbb{F}_q)\). 4.2.2 Terminologie La confidentialité renforcée nécessite une nouvelle terminologie qui ne doit pas être confondue avec les entités Bitcoin. la clé ec privée est une clé privée à courbe elliptique standard : un nombre \(a \in [1, l - 1]\) ; la clé ec publique est une clé publique à courbe elliptique standard : un point A = aG ; une paire de clés à usage unique est une paire de clés électroniques privées et publiques ; 5 10 La liaison au sens de « signatures en anneau pouvant être liées » signifie que nous pouvons savoir si deux transactions sortantes proviennent de la même source sans révéler qui est la source. Les auteurs affaiblis possibilité de lien afin de (a) préserver la confidentialité, mais toujours (b) repérer toute transaction utilisant une clé privée une seconde fois comme invalide. D'accord, c'est donc une question d'ordre des événements. Considérez le scénario suivant. Mon exploitation minière l'ordinateur aura le blockchain actuel, il aura son propre bloc de transactions qu'il appelle légitime, il travaillera sur ce bloc dans un puzzle proof-of-work, et il aura un liste des transactions en attente à ajouter au bloc suivant. Il enverra également tout nouveau transactions dans ce pool de transactions en attente. Si je ne résous pas le bloc suivant, mais quelqu'un d'autre le fait, je reçois une copie mise à jour du blockchain. Le bloc sur lequel je travaillais et ma liste de transactions en attente peut contenir toutes deux des transactions qui sont maintenant incorporées dans le blockchain. Démêlez mon bloc en attente, combinez-le avec ma liste de transactions en attente et appelez-le mon pool de transactions en attente. Supprimez ceux qui se trouvent maintenant officiellement dans le blockchain. Maintenant, que dois-je faire ? Dois-je d'abord passer par « supprimer toutes les doubles dépenses » ? De l'autre D'autre part, dois-je parcourir la liste et m'assurer que chaque clé privée n'a pas encore été utilisé, et s'il a déjà été utilisé dans ma liste, alors j'ai reçu le premier exemplaire en premier, et donc toute autre copie est illégitime. Ainsi, je supprime simplement toutes les instances après la première de la même clé privée. La géométrie algébrique n’a jamais été mon point fort. http://en.wikipedia.org/wiki/EdDSA Une telle vitesse, vraiment wow. C'est la géométrie algébrique pour la victoire. Non pas que je sache quoi que ce soit à ce sujet. Problématique ou non, les journaux discrets deviennent très rapides. Et les ordinateurs quantiques les mangent pour le petit déjeuner. http://link.springer.com/article/10.1007/s13389-012-0027-1 Cela devient un nombre vraiment important, mais il n'y a aucune explication ni citation sur la manière dont il est obtenu. a été choisi. Choisir simplement un seul grand nombre premier connu serait bien, mais s'il y a des nombres premiers connus des faits sur ce grand nombre premier, qui pourraient influencer notre choix. Différentes variantes de cryptonote pourrait choisir différentes valeurs de eh bien, mais il n'y a aucune discussion dans cet article sur la façon dont cela Ce choix affectera nos choix d’autres paramètres globaux répertoriés à la page 5. Cet article nécessite une section sur le choix des valeurs des paramètres.

la clé d'utilisateur privée est une paire (a, b) de deux clés ec privées différentes ; la clé de suivi est une paire (a, B) de clés ec privées et publiques (où B = bG et a ̸ = b) ; la clé publique d'utilisateur est une paire (A, B) de deux clés ec publiques dérivées de (a, b) ; l'adresse standard est une représentation d'une clé d'utilisateur publique donnée dans une chaîne conviviale avec correction d'erreurs ; l'adresse tronquée est une représentation de la seconde moitié (point B) d'une clé d'utilisateur publique donnée en chaîne conviviale avec correction d’erreur. La structure de la transaction reste similaire à celle de Bitcoin : chaque utilisateur peut choisir plusieurs encaissements indépendants (sorties d'opérations), signez-les avec le code correspondant clés privées et les envoyer à différentes destinations. Contrairement au modèle de Bitcoin, où un utilisateur possède une clé privée et publique unique, dans le cas modèle proposé, un expéditeur génère une clé publique unique basée sur l'adresse du destinataire et quelques données aléatoires. En ce sens, une transaction entrante pour le même destinataire est envoyée à un clé publique unique (pas directement à une adresse unique) et seul le destinataire peut récupérer la partie privée correspondante pour racheter ses fonds (en utilisant sa clé privée unique). Le destinataire peut dépenser les fonds en utilisant une signature en anneau, en gardant anonymes sa propriété et ses dépenses réelles. Les détails du protocole sont expliqués dans les sous-sections suivantes. 4.3 Paiements non liés Les adresses classiques Bitcoin, une fois publiées, deviennent un identifiant sans ambiguïté pour les paiements, en les reliant entre eux et en les liant aux pseudonymes du destinataire. Si quelqu'un veut reçoit une transaction « déliée », il doit transmettre son adresse à l'expéditeur par un canal privé. \(S'\)il souhaite recevoir différentes transactions dont il ne peut être prouvé qu'elles appartiennent au même propriétaire il doit générer toutes les différentes adresses et ne jamais les publier sous son propre pseudonyme. Publique Privé Alice Carole Adresse de Bob 1 Adresse de Bob 2 La clé de Bob 1 La clé de Bob 2 Bob Fig. 2. Modèle traditionnel de clés/transactions Bitcoin. Nous proposons une solution permettant à un utilisateur de publier une adresse unique et de recevoir des paiements non liés. La destination de chaque sortie CryptoNote (par défaut) est une clé publique, dérivé de l’adresse du destinataire et des données aléatoires de l’expéditeur. Le principal avantage contre Bitcoin est que chaque clé de destination est unique par défaut (sauf si l'expéditeur utilise les mêmes données pour chaque clé). de ses transactions vers le même destinataire). Il n’existe donc pas de problème de « réutilisation des adresses » par conception et aucun observateur ne peut déterminer si des transactions ont été envoyées à une adresse ou un lien spécifique deux adresses ensemble. 6 la clé d'utilisateur privée est une paire (a, b) de deux clés ec privées différentes ; la clé de suivi est une paire (a, B) de clés ec privées et publiques (où B = bG et a ̸ = b) ; la clé publique d'utilisateur est une paire (A, B) de deux clés ec publiques dérivées de (a, b) ; l'adresse standard est une représentation d'une clé d'utilisateur publique donnée dans une chaîne conviviale avec correction d'erreurs ; l'adresse tronquée est une représentation de la seconde moitié (point B) d'une clé d'utilisateur publique donnée en chaîne conviviale avec correction d’erreur. La structure de la transaction reste similaire à celle de Bitcoin : chaque utilisateur peut choisir plusieurs encaissements indépendants (sorties d'opérations), signez-les avec le code correspondant clés privées et les envoyer à différentes destinations. Contrairement au modèle de Bitcoin, où un utilisateur possède une clé privée et publique unique, dans le cas modèle proposé, un expéditeur génère une clé publique unique basée sur l'adresse du destinataire et quelques données aléatoires. En ce sens, une transaction entrante pour le même destinataire est envoyée à un clé publique unique (pas directement à une adresse unique) et seul le destinataire peut récupérer la partie privée correspondante pour racheter ses fonds (en utilisant sa clé privée unique). Le destinataire peut dépenser les fonds en utilisant une signature en anneau, en gardant anonymes sa propriété et ses dépenses réelles. Les détails du protocole sont expliqués dans les sous-sections suivantes. 4.3 Paiements non liés Les adresses classiques Bitcoin, une fois publiées, deviennent un identifiant sans ambiguïté pour les paiements, en les reliant entre eux et en les liant aux pseudonymes du destinataire. Si quelqu'un veut reçoit une transaction « déliée », il doit transmettre son adresse à l'expéditeur par un canal privé. \(S'\)il souhaite recevoir différentes transactions dont il ne peut être prouvé qu'elles appartiennent au même propriétaire il doit générer toutes les différentes adresses et ne jamais les publier sous son propre pseudonyme. Publique Privé Alice Carole Adresse de Bob 1 Adresse de Bob 2 La clé de Bob 1 La clé de Bob 2 Bob Fig. 2. Mod traditionnel de clés/transactions Bitcoinél. Nous proposons une solution permettant à un utilisateur de publier une adresse unique et de recevoir des paiements non liés. La destination de chaque sortie CryptoNote (par défaut) est une clé publique, dérivé de l’adresse du destinataire et des données aléatoires de l’expéditeur. Le principal avantage contre Bitcoin est que chaque clé de destination est unique par défaut (sauf si l'expéditeur utilise les mêmes données pour chaque clé). de ses transactions vers le même destinataire). Il n’existe donc pas de problème de « réutilisation des adresses » par conception et aucun observateur ne peut déterminer si des transactions ont été envoyées à une adresse ou un lien spécifique deux adresses ensemble. 6 11 C'est donc comme Bitcoin, mais avec des boîtes postales infinies et anonymes, échangeables uniquement par le destinataire. générer une clé privée aussi anonyme qu'une signature en anneau peut l'être. Bitcoin fonctionne de cette façon. Si Alex a 0,112 Bitcoin dans son portefeuille qu'elle vient de recevoir de Frank, elle a en réalité un message "Je, [FRANK], envoie 0,112 Bitcoin à [alex] + H0 + N0" où 1) Frank a signé le message avec sa clé privée [FRANK], 2) Frank a signé le message avec la clé publique d'Alex clé, [alex], 3) Frank a inclus une certaine forme de l'histoire du bitcoin, H0, et 4) Frank comprend un bit de données aléatoire appelé nonce, N0. Si Alex veut alors envoyer 0,011 Bitcoin à Charlene, elle prendra le message de Frank, et elle définira cela sur H1 et signera deux messages : un pour sa transaction et un pour le changement. H1= "Je, [FRANK], envoie 0,112 Bitcoin à [alex] + H0 + N" "Je, [ALEX], envoie 0,011 Bitcoin à [charlene] + H1 + N1" "Je, [ALEX], envoie 0,101 Bitcoin comme changement à [alex] + H1 + N2." où Alex signe les deux messages avec sa clé privée [ALEX], le premier message avec celle de Charlene clé publique [charlene], le deuxième message avec la clé publique d'Alex [alex], et incluant la historiques et certains nonces N1 et N2 générés aléatoirement de manière appropriée. Cryptonote fonctionne de cette façon : Si Alex a 0,112 Cryptonote dans son portefeuille qu'elle vient de recevoir de Frank, elle a en réalité un message "Je, [quelqu'un dans un groupe ad hoc], envoie 0,112 Cryptonote à [une adresse unique] + H0 +N0." Alex a découvert qu'il s'agissait de son argent en vérifiant sa clé privée [ALEX] [une adresse unique] pour chaque message qui passe, et si elle souhaite le dépenser, elle le fait en de la manière suivante. Elle choisit un destinataire de l'argent, peut-être que Charlene a commencé à voter pour les frappes de drones, alors Alex veut plutôt envoyer de l'argent à Brenda. Alors Alex recherche la clé publique de Brenda, [brenda], et utilise sa propre clé privée, [ALEX], pour générer une adresse unique [ALEX+brenda]. Elle puis choisit une collection arbitraire C parmi le réseau d'utilisateurs de cryptonotes et elle construit une signature circulaire de ce groupe ad hoc. Nous définissons notre historique comme message précédent, ajoutons nonces, et procéder comme d'habitude ? H1 = "Je, [quelqu'un dans un groupe ad hoc], envoie 0,112 Cryptonote à [une adresse unique] + H0 +N0." "Moi, [quelqu'un dans la collection C], j'envoie 0,011 Cryptonote à [adresse unique-faite-à partir d'ALEX+brenda] + H1 + N1" "Moi, [quelqu'un dans la collection C], j'envoie 0,101 Cryptonote en guise de modification à [one-time-address-madefrom-ALEX+alex] + H1 + N2" Désormais, Alex et Brenda analysent tous les deux tous les messages entrants à la recherche d'adresses uniques qui étaient créé à l’aide de leur clé. \(S'\)ils en trouvent, alors ce message est leur propre marque. cryptonote! Et même dans ce cas, la transaction atteindra toujours le blockchain. Si les pièces entrant dans cette adresse sont connus pour être envoyés par des criminels, des contributeurs politiques ou des comités et des comptes avec des budgets stricts (c'est-à-dire détournement de fonds), ou si le nouveau propriétaire de ces pièces commet une erreur et envoie ces pièces à une adresse commune avec les pièces qu'il est connu pour posséder, le gabarit d'anonymat est en hausse en Bitcoin.

la clé d'utilisateur privée est une paire (a, b) de deux clés ec privées différentes ; la clé de suivi est une paire (a, B) de clés ec privées et publiques (où B = bG et a ̸ = b) ; la clé publique d'utilisateur est une paire (A, B) de deux clés ec publiques dérivées de (a, b) ; l'adresse standard est une représentation d'une clé d'utilisateur publique donnée dans une chaîne conviviale avec correction d'erreurs ; l'adresse tronquée est une représentation de la seconde moitié (point B) d'une clé d'utilisateur publique donnée en chaîne conviviale avec correction d’erreur. La structure de la transaction reste similaire à celle de Bitcoin : chaque utilisateur peut choisir plusieurs encaissements indépendants (sorties d'opérations), signez-les avec le code correspondant clés privées et les envoyer à différentes destinations. Contrairement au modèle de Bitcoin, où un utilisateur possède une clé privée et publique unique, dans le cas modèle proposé, un expéditeur génère une clé publique unique basée sur l'adresse du destinataire et quelques données aléatoires. En ce sens, une transaction entrante pour le même destinataire est envoyée à un clé publique unique (pas directement à une adresse unique) et seul le destinataire peut récupérer la partie privée correspondante pour racheter ses fonds (en utilisant sa clé privée unique). Le destinataire peut dépenser les fonds en utilisant une signature en anneau, en gardant anonymes sa propriété et ses dépenses réelles. Les détails du protocole sont expliqués dans les sous-sections suivantes. 4.3 Paiements non liés Les adresses classiques Bitcoin, une fois publiées, deviennent un identifiant sans ambiguïté pour les paiements, en les reliant entre eux et en les liant aux pseudonymes du destinataire. Si quelqu'un veut reçoit une transaction « déliée », il doit transmettre son adresse à l'expéditeur par un canal privé. \(S'\)il souhaite recevoir différentes transactions dont il ne peut être prouvé qu'elles appartiennent au même propriétaire il doit générer toutes les différentes adresses et ne jamais les publier sous son propre pseudonyme. Publique Privé Alice Carole Adresse de Bob 1 Adresse de Bob 2 La clé de Bob 1 La clé de Bob 2 Bob Fig. 2. Modèle traditionnel de clés/transactions Bitcoin. Nous proposons une solution permettant à un utilisateur de publier une adresse unique et de recevoir des paiements non liés. La destination de chaque sortie CryptoNote (par défaut) est une clé publique, dérivé de l’adresse du destinataire et des données aléatoires de l’expéditeur. Le principal avantage contre Bitcoin est que chaque clé de destination est unique par défaut (sauf si l'expéditeur utilise les mêmes données pour chaque clé). de ses transactions vers le même destinataire). Il n’existe donc pas de problème de « réutilisation des adresses » par conception et aucun observateur ne peut déterminer si des transactions ont été envoyées à une adresse ou un lien spécifique deux adresses ensemble. 6 la clé d'utilisateur privée est une paire (a, b) de deux clés ec privées différentes ; la clé de suivi est une paire (a, B) de clés ec privées et publiques (où B = bG et a ̸ = b) ; la clé publique d'utilisateur est une paire (A, B) de deux clés ec publiques dérivées de (a, b) ; l'adresse standard est une représentation d'une clé d'utilisateur publique donnée dans une chaîne conviviale avec correction d'erreurs ; l'adresse tronquée est une représentation de la seconde moitié (point B) d'une clé d'utilisateur publique donnée en chaîne conviviale avec correction d’erreur. La structure de la transaction reste similaire à celle de Bitcoin : chaque utilisateur peut choisir plusieurs encaissements indépendants (sorties d'opérations), signez-les avec le code correspondant clés privées et les envoyer à différentes destinations. Contrairement au modèle de Bitcoin, où un utilisateur possède une clé privée et publique unique, dans le cas modèle proposé, un expéditeur génère une clé publique unique basée sur l'adresse du destinataire et quelques données aléatoires. En ce sens, une transaction entrante pour le même destinataire est envoyée à un clé publique unique (pas directement à une adresse unique) et seul le destinataire peut récupérer la partie privée correspondante pour racheter ses fonds (en utilisant sa clé privée unique). Le destinataire peut dépenser les fonds en utilisant une signature en anneau, en gardant anonymes sa propriété et ses dépenses réelles. Les détails du protocole sont expliqués dans les sous-sections suivantes. 4.3 Paiements non liés Les adresses classiques Bitcoin, une fois publiées, deviennent un identifiant sans ambiguïté pour les paiements, en les reliant entre eux et en les liant aux pseudonymes du destinataire. Si quelqu'un veut reçoit une transaction « déliée », il doit transmettre son adresse à l'expéditeur par un canal privé. \(S'\)il souhaite recevoir différentes transactions dont il ne peut être prouvé qu'elles appartiennent au même propriétaire il doit générer toutes les différentes adresses et ne jamais les publier sous son propre pseudonyme. Publique Privé Alice Carole Adresse de Bob 1 Adresse de Bob 2 La clé de Bob 1 La clé de Bob 2 Bob Fig. 2. Mod traditionnel de clés/transactions Bitcoinél. Nous proposons une solution permettant à un utilisateur de publier une adresse unique et de recevoir des paiements non liés. La destination de chaque sortie CryptoNote (par défaut) est une clé publique, dérivé de l’adresse du destinataire et des données aléatoires de l’expéditeur. Le principal avantage contre Bitcoin est que chaque clé de destination est unique par défaut (sauf si l'expéditeur utilise les mêmes données pour chaque clé). de ses transactions vers le même destinataire). Il n’existe donc pas de problème de « réutilisation des adresses » par conception et aucun observateur ne peut déterminer si des transactions ont été envoyées à une adresse ou un lien spécifique deux adresses ensemble. 6 12 Par conséquent, plutôt que d’envoyer des pièces depuis une adresse (qui est en réalité une clé publique) vers une adresse (une autre clé publique) en utilisant leurs clés privées, les utilisateurs envoient des pièces depuis une boîte postale unique (qui génère en utilisant la clé publique de vos amis) vers une boîte postale unique (de la même manière) en utilisant votre propres clés privées. Dans un sens, nous disons : « D'accord, tout le monde ne met pas la main sur l'argent pendant qu'il est en cours. transféré! Il suffit simplement de savoir que nos clés peuvent ouvrir cette boîte et que nous savons combien d'argent il y a dans la boîte. Ne mettez jamais vos empreintes digitales sur la boîte postale ou Pour l'utiliser réellement, échangez simplement la boîte remplie d'argent liquide elle-même. De cette façon, nous ne savons pas qui a envoyé quoi, mais le contenu de ces discours publics est toujours sans friction, fongible, divisible et possèdent toujours toutes les autres belles qualités d’argent que nous désirons, comme le bitcoin. » Un ensemble infini de boîtes postales. Vous publiez une adresse, j'ai une clé privée. J'utilise ma clé privée et votre adresse, et quelques données aléatoires, pour générer une clé publique. L'algorithme est conçu de telle sorte que, puisque votre L'adresse a été utilisée pour générer la clé publique, seule VOTRE clé privée fonctionne pour déverrouiller le message. Une observatrice, Eve, vous voit publier votre adresse, et voit la clé publique que j'annonce. Cependant, elle ne sait pas si j'ai annoncé ma clé publique en fonction de votre adresse, de la sienne ou de celle de Brenda ou celui de Charlene, ou celui de qui que ce soit. Elle vérifie sa clé privée avec la clé publique que j'ai annoncée et voit que ça ne marche pas ; ce n'est pas son argent. Elle ne connaît la clé privée de personne d’autre, et seul le destinataire du message possède la clé privée permettant de déverrouiller le message. Donc personne écouter peut déterminer qui a reçu l’argent et encore moins prendre l’argent.

Publique Privé Alice Carole Clé à usage unique Clé à usage unique Clé à usage unique Bob La clé de Bob L'adresse de Bob Fig. 3. Modèle de clés/transactions CryptoNote. Tout d'abord, l'expéditeur effectue un échange Diffie-Hellman pour obtenir un secret partagé à partir de ses données et la moitié de l’adresse du destinataire. Il calcule ensuite une clé de destination unique, en utilisant la clé partagée secret et la seconde moitié de l'adresse. Deux clés EC différentes sont requises du destinataire pour ces deux étapes, une adresse CryptoNote standard est donc presque deux fois plus grande qu'un portefeuille Bitcoin adresse. Le récepteur effectue également un échange Diffie-Hellman pour récupérer le signal correspondant. clé secrète. Une séquence de transaction standard se déroule comme suit : 1. Alice souhaite envoyer un paiement à Bob, qui a publié son adresse standard. Elle décompresse l'adresse et obtient la clé publique de Bob (A, B). 2. Alice génère un \(r \in [1, l - 1]\) aléatoire et calcule une clé publique unique \(P = H_s(rA)G +\) B. 3. Alice utilise P comme clé de destination pour la sortie et regroupe également la valeur R = rG (dans le cadre d'une partie de la bourse Diffie-Hellman) quelque part dans la transaction. Notez qu'elle peut créer autres sorties avec des clés publiques uniques : les clés de différents destinataires (Ai, Bi) impliquent des Pi différents même avec le même r. Transaction Clé publique d'émission Sortie d'émission Montant Clé de destination R = rG P = Hs(rA)G + B Le récepteur clé publique Données aléatoires de l'expéditeur r (A, B) Figure 4. Structure de transaction standard. 4. Alice envoie la transaction. 5. Bob vérifie chaque transaction qui passe avec sa clé privée (a, b) et calcule P ′ = Hs(aR)G + B. Si la transaction d’Alice avec Bob comme destinataire en faisait partie, alors aR = arG = rA et P′ = P. 7 Publique Privé Alice Carole Clé à usage unique Clé à usage unique Clé à usage unique Bob La clé de Bob L'adresse de Bob Fig. 3. Modèle de clés/transactions CryptoNote. Tout d'abord, l'expéditeur effectue un échange Diffie-Hellman pour obtenir un secret partagé à partir de ses données et la moitié de l’adresse du destinataire. Il calcule ensuite une clé de destination unique, en utilisant la clé partagée secret et la seconde moitié de l'adresse. Deux clés EC différentes sont requises du destinataire pour ces deux étapes, une adresse CryptoNote standard est donc presque deux fois plus grande qu'un portefeuille Bitcoin adresse. Le récepteur effectue également un échange Diffie-Hellman pour récupérer le signal correspondant. clé secrète. Une séquence de transaction standard se déroule comme suit : 1. Alice souhaite envoyer un paiement à Bob, qui a publié son adresse standard. Elle décompresse l'adresse et obtient la clé publique de Bob (A, B). 2. Alice génère un \(r \in [1, l - 1]\) aléatoire et calcule une clé publique unique \(P = H_s(rA)G +\) B. 3. Alice utilise P comme clé de destination pour la sortie et regroupe également la valeur R = rG (dans le cadre d'une partie de la bourse Diffie-Hellman) quelque part dans la transaction. Notez qu'elle peut créer autres sorties avec des clés publiques uniques : les clés de différents destinataires (Ai, Bi) impliquent des Pi différents même avec le même r. Transaction Clé publique d'émission Sortie d'émission Montant Clé de destination R = rG P = Hs(rA)G + B Le récepteur clé publique Données aléatoires de l'expéditeur r (A, B) Figure 4. Structure de transaction standard. 4. Alice envoie la transaction. 5. Bob vérifie chaque transaction qui passe avec sa clé privée (a, b) et calcule P ′ = Hs(aR)G + B. Si la transaction d’Alice avec Bob comme destinataire en faisait partie, alors aR = arG = rA et P′ = P. 7 13 Je me demande à quel point ce serait pénible de mettre en œuvre un choix de cryptographie schéma. Elliptique ou autre. Ainsi, si un système est brisé à l'avenir, la devise change sans souci. Probablement un gros emmerdeur. D'accord, c'est exactement ce que je viens d'expliquer dans mon commentaire précédent. Le type Diffie-Hellman les échanges sont soignés. Disons qu'Alex et Brenda ont chacun un numéro secret, A et B, et un numéro ils ne se soucient pas de garder le secret, a et b. Ils souhaitent générer un secret partagé sans Eva le découvre. Diffie et Hellman ont trouvé un moyen pour qu'Alex et Brenda partagent les numéros publics a et b, mais pas les numéros privés A et B, et générer un secret partagé, K. En utilisant ce secret partagé, K, sans qu'aucune Eva ne l'écoute pour pouvoir générer le même K, Alex et Brenda peuvent désormais utiliser K comme clé de cryptage secrète et renvoyer des messages secrets et en avant. Voici comment cela PEUT fonctionner, même si cela devrait fonctionner avec des nombres beaucoup plus grands que 100. Nous utiliserons 100 car travailler sur les entiers modulo 100 équivaut à "jeter tout mais les deux derniers chiffres d'un nombre. Alex et Brenda choisissent chacun A, a, B et b. Ils gardent A et B secrets. Alex dit à Brenda sa valeur d'un modulo 100 (juste les deux derniers chiffres) et Brenda le dit à Alex. sa valeur de b modulo 100. Maintenant Eva connaît (a,b) modulo 100. Mais Alex sait (a,b,A) donc elle peut calculer x=abA modulo 100.Alex coupe tous les chiffres sauf le dernier parce qu'on travaille sous les entiers modulo 100 à nouveau. De même, Brenda connaît (a,b,B) donc elle peut calculer y=abB modulo 100. Alex peut désormais publier x et Brenda peut publier y. Mais maintenant, Alex peut calculer yA = abBA modulo 100, et Brenda peut calculer xB. = abBA modulo 100. Ils connaissent tous les deux le même numéro ! Mais tout ce qu'Eva a entendu, c'est (une,b,unebUNE,unebB). Elle n’a pas de moyen simple de calculer abA*B. C’est la manière la plus simple et la moins sûre d’envisager l’échange Diffie-Hellman. Des versions plus sécurisées existent. Mais la plupart des versions fonctionnent car la factorisation entière et discrète les logarithmes sont difficiles, et ces deux problèmes sont facilement résolus par les ordinateurs quantiques. Je vérifierai s’il existe des versions résistantes au quantique. http://en.wikipedia.org/wiki/Diffie%E2%80%93Hellman_key_exchange Il manque tout un tas d'étapes dans la "séquence txn standard" répertoriée ici, comme les SIGNATURES. Ici, ils sont simplement tenus pour acquis. Ce qui est vraiment dommage, car l'ordre dans lequel nous les trucs de signature, les informations incluses dans le message signé, et ainsi de suite... tout cela est extrêmement important pour le protocole. Se tromper sur une ou deux étapes, même légèrement dans le désordre, tout en mettant en œuvre « le séquence de transactions standard" pourrait remettre en question la sécurité de l'ensemble du système. De plus, les preuves présentées plus loin dans cet article risquent de ne pas être suffisamment rigoureuses si le Le cadre dans lequel ils travaillent est aussi vaguement défini que dans cette section.

Publique Privé Alice Carole Clé à usage unique Clé à usage unique Clé à usage unique Bob La clé de Bob L'adresse de Bob Fig. 3. Modèle de clés/transactions CryptoNote. Tout d'abord, l'expéditeur effectue un échange Diffie-Hellman pour obtenir un secret partagé à partir de ses données et la moitié de l’adresse du destinataire. Il calcule ensuite une clé de destination unique, en utilisant la clé partagée secret et la seconde moitié de l'adresse. Deux clés EC différentes sont requises du destinataire pour ces deux étapes, une adresse CryptoNote standard est donc presque deux fois plus grande qu'un portefeuille Bitcoin adresse. Le récepteur effectue également un échange Diffie-Hellman pour récupérer le signal correspondant. clé secrète. Une séquence de transaction standard se déroule comme suit : 1. Alice souhaite envoyer un paiement à Bob, qui a publié son adresse standard. Elle décompresse l'adresse et obtient la clé publique de Bob (A, B). 2. Alice génère un \(r \in [1, l - 1]\) aléatoire et calcule une clé publique unique \(P = H_s(rA)G +\) B. 3. Alice utilise P comme clé de destination pour la sortie et regroupe également la valeur R = rG (dans le cadre d'une partie de la bourse Diffie-Hellman) quelque part dans la transaction. Notez qu'elle peut créer autres sorties avec des clés publiques uniques : les clés de différents destinataires (Ai, Bi) impliquent des Pi différents même avec le même r. Transaction Clé publique d'émission Sortie d'émission Montant Clé de destination R = rG P = Hs(rA)G + B Le récepteur clé publique Données aléatoires de l'expéditeur r (A, B) Figure 4. Structure de transaction standard. 4. Alice envoie la transaction. 5. Bob vérifie chaque transaction qui passe avec sa clé privée (a, b) et calcule P ′ = Hs(aR)G + B. Si la transaction d’Alice avec Bob comme destinataire en faisait partie, alors aR = arG = rA et P′ = P. 7 Publique Privé Alice Carole Clé à usage unique Clé à usage unique Clé à usage unique Bob La clé de Bob L'adresse de Bob Fig. 3. Modèle de clés/transactions CryptoNote. Tout d'abord, l'expéditeur effectue un échange Diffie-Hellman pour obtenir un secret partagé à partir de ses données et la moitié de l’adresse du destinataire. Il calcule ensuite une clé de destination unique, en utilisant la clé partagée secret et la seconde moitié de l'adresse. Deux clés EC différentes sont requises du destinataire pour ces deux étapes, une adresse CryptoNote standard est donc presque deux fois plus grande qu'un portefeuille Bitcoin adresse. Le récepteur effectue également un échange Diffie-Hellman pour récupérer le signal correspondant. clé secrète. Une séquence de transaction standard se déroule comme suit : 1. Alice souhaite envoyer un paiement à Bob, qui a publié son adresse standard. Elle décompresse l'adresse et obtient la clé publique de Bob (A, B). 2. Alice génère un \(r \in [1, l - 1]\) aléatoire et calcule une clé publique unique \(P = H_s(rA)G +\) B. 3. Alice utilise P comme clé de destination pour la sortie et regroupe également la valeur R = rG (dans le cadre d'une partie de la bourse Diffie-Hellman) quelque part dans la transaction. Notez qu'elle peut créer autres sorties avec des clés publiques uniques : les clés de différents destinataires (Ai, Bi) impliquent des Pi différents même avec le même r. Transaction Clé publique d'émission Sortie d'émission Montant Clé de destination R = rG P = Hs(rA)G + B Le récepteur clé publique Données aléatoires de l'expéditeur r (A, B) Figure 4. Structure de transaction standard. 4. Alice envoie la transaction. 5. Bob vérifie chaque transaction qui passe avec sa clé privée (a, b) et calcule P ′ = Hs(aR)G + B. Si la transaction d’Alice avec Bob comme destinataire en faisait partie, alors aR = arG = rA et P′ = P. 7 14 Notez que le(s) auteur(s ?) font un travail épouvantable en gardant leur terminologie claire tout au long le texte, mais surtout dans ce morceau suivant. La prochaine incarnation de cet article sera nécessairement beaucoup plus rigoureux. Dans le texte, ils font référence à P comme étant leur clé publique unique. Dans le diagramme, ils font référence à R comme leur « clé publique Tx » et P comme leur « clé de destination ». Si je devais réécrire ceci, je le ferais exposez très spécifiquement une certaine terminologie avant de discuter de ces sections. Cette aune est massive. Voir page 5. Qui les choisit ? Le diagramme illustre que la clé publique de transaction R = rG, qui est aléatoire et choisie par l'expéditeur, ne fait pas partie de la sortie Tx. C'est parce que cela pourrait être le même pour plusieurs transactions à plusieurs personnes et n’est pas utilisé * PLUS TARD * pour dépenser. Un nouveau R est généré chaque fois que vous souhaitez diffuser une nouvelle transaction CryptoNote. De plus, R n’est utilisé que pour vérifier si vous êtes le destinataire de la transaction. Ce ne sont pas des données indésirables, mais elles le sont pour tout le monde. sans les clés privées associées à (A,B). La clé de destination, en revanche, P = Hs(rA)G + B fait partie de la sortie Tx. Tout le monde qui fouille dans les données de chaque transaction en cours doit vérifier son propre P* généré par rapport à ce P pour voir s'ils possèdent cette transaction de passage. Toute personne disposant d'un résultat de transaction non dépensé (UTXO) aura un tas de ces P qui traînent avec des montants. Afin de dépenserd, ils signez un nouveau message incluant P. Alice doit signer cette transaction avec une ou plusieurs clés privées à usage unique associées à la ou aux clés de destination des sorties de transaction non dépensées. Chaque clé de destination appartenant à Alice est équipée avec une clé privée unique appartenant également (vraisemblablement) à Alice. Chaque fois qu'Alice veut m'envoyer le contenu d'une clé de destination, ou Bob, ou Brenda, ou Charlie ou Charlene, elle utilise sa clé privée pour signer la transaction. Dès réception de la transaction, je recevrai un nouveau Clé publique Tx, une nouvelle clé publique de destination, et je pourrai récupérer une nouvelle clé privée unique x. Combiner ma clé privée unique, x, avec la destination publique de la nouvelle transaction la ou les clés sont la façon dont nous envoyons une nouvelle transaction

  1. Bob peut récupérer la clé privée unique correspondante : x = Hs(aR) + b, de sorte que P = xG. Il peut dépenser cette sortie à tout moment en signant une transaction avec x. Transaction Clé publique d'émission Sortie d'émission Montant Clé de destination P ′ = Hs(aR)G + bG clé publique unique x = Hs(aR) + b clé privée à usage unique Le récepteur clé privée (une, b) R. P' ?=P Fig. 5. Vérification des transactions entrantes. En conséquence, Bob reçoit des paiements entrants, associés à des clés publiques uniques qui sont inattaquable pour un spectateur. Quelques remarques complémentaires : • Lorsque Bob « reconnaît » ses transactions (voir étape 5), il n'utilise pratiquement que la moitié de ses informations privées : (a, B). Cette paire, également connue sous le nom de clé de suivi, peut être transmise à un tiers (Carol). Bob peut lui déléguer le traitement des nouvelles transactions. Bob n'a pas besoin de faire explicitement confiance à Carol, car elle ne peut pas récupérer la clé secrète à usage unique p sans la clé privée complète de Bob (a, b). Cette approche est utile lorsque Bob manque de bande passante ou la puissance de calcul (smartphones, portefeuilles matériels, etc.). • Si Alice souhaite prouver qu'elle a envoyé une transaction à l'adresse de Bob, elle peut soit divulguer r ou utiliser tout type de protocole de connaissance nulle pour prouver qu'elle connaît r (par exemple en signant la transaction avec r). • Si Bob souhaite avoir une adresse compatible avec l'audit où toutes les transactions entrantes sont connectable, il peut soit publier sa clé de suivi, soit utiliser une adresse tronquée. Cette adresse ne représentent qu'une seule clé ec publique B, et la partie restante requise par le protocole est en dérive comme suit : a = Hs(B) et A = Hs(B)G. Dans les deux cas, chaque personne est capable de « reconnaître » toutes les transactions entrantes de Bob, mais, bien sûr, personne ne peut dépenser les fonds qu'ils contiennent sans la clé secrète b. 4.4 Signatures de bague uniques Un protocole basé sur des signatures en anneau uniques permet aux utilisateurs d'obtenir une dissociation inconditionnelle. Malheureusement, les types ordinaires de signatures cryptographiques permettent de retracer les transactions jusqu'à leur émetteurs et récepteurs respectifs. Notre solution à cette lacune réside dans l’utilisation d’une signature différente type que ceux actuellement utilisés dans les systèmes de monnaie électronique. Nous fournirons dans un premier temps une description générale de notre algorithme sans référence explicite à monnaie électronique. Une signature en anneau unique contient quatre algorithmes : (GEN, SIG, VER, LNK) : GEN : prend des paramètres publics et génère une paire ec (P, x) et une clé publique I. SIG : prend un message m, un ensemble \(S'\) de clés publiques {Pi}i̸=s, une paire (Ps, xs) et génère une signature \(\sigma\) et un ensemble \(S = \)S'\( \cup \{P_s\}\). 8
  2. Bob peut récupérer la clé privée unique correspondante : x = Hs(aR) + b, de sorte que P = xG. Il peut dépenser cette sortie à tout moment en signant une transaction avec x. Transaction Clé publique d'émission Sortie d'émission Montant Clé de destination P ′ = Hs(aR)G + bG clé publique unique x = Hs(aR) + b clé privée à usage unique Le récepteur clé privée (une, b) R. P' ?=P Fig. 5. Vérification des transactions entrantes. En conséquence, Bob reçoit des paiements entrants, associés à des clés publiques uniques qui sont inattaquable pour un spectateur. Quelques remarques complémentaires : • Lorsque Bob « reconnaît » ses transactions (voir étape 5), il n'utilise pratiquement que la moitié de ses informations privées : (a, B). Cette paire, également connue sous le nom de clé de suivi, peut être transmise à un tiers (Carol). Bob peut lui déléguer le traitement des nouvelles transactions. Bob n'a pas besoin de faire explicitement confiance à Carol, car elle ne peut pas récupérer la clé secrète à usage unique p sans la clé privée complète de Bob (a, b). Cette approche est utile lorsque Bob manque de bande passante ou la puissance de calcul (smartphones, portefeuilles matériels, etc.). • Si Alice souhaite prouver qu'elle a envoyé une transaction à l'adresse de Bob, elle peut soit divulguer r ou utiliser tout type de protocole de connaissance nulle pour prouver qu'elle connaît r (par exemple en signant la transaction avec r). • Si Bob souhaite avoir une adresse compatible avec l'audit où toutes les transactions entrantes sont connectable, il peut soit publier sa clé de suivi, soit utiliser une adresse tronquée. Cette adresse ne représentent qu'une seule clé ec publique B, et la partie restante requise par le protocole est en dérive comme suit : a = Hs(B) et A = Hs(B)G. Dans les deux cas, chaque personne est capable de « reconnaître » toutes les transactions entrantes de Bob, mais, bien sûr, personne ne peut dépenser les fonds qu'ils contiennent sans la clé secrète b. 4.4 Signatures de bague uniques Un protocole basé sur des signatures en anneau uniques permet aux utilisateurs d'obtenir une dissociation inconditionnelle. Malheureusement, les types ordinaires de signatures cryptographiques permettent de retracer les transactions jusqu'à leur émetteurs et récepteurs respectifs. Notre solution à cette lacune réside dans l’utilisation d’une signature différente type que ceux actuellement utilisés dans les systèmes de monnaie électronique. Nous fournirons dans un premier temps un générateural description de notre algorithme sans référence explicite à monnaie électronique. Une signature en anneau unique contient quatre algorithmes : (GEN, SIG, VER, LNK) : GEN : prend des paramètres publics et génère une paire ec (P, x) et une clé publique I. SIG : prend un message m, un ensemble \(S'\) de clés publiques {Pi}i̸=s, une paire (Ps, xs) et génère une signature \(\sigma\) et un ensemble \(S = \)S'\( \cup \{P_s\}\). 8 15 À quoi ressemble ici un résultat de transaction non dépensé ? Le diagramme suggère que le résultat de la transaction se compose uniquement de deux points de données : le montant et la clé de destination. Mais ce n'est pas suffisant car lorsque j'essaierai de dépenser cette "sortie", j'aurai toujours besoin de connaître R=rG. N'oubliez pas que r est choisi par l'expéditeur et R est a) utilisé pour reconnaître les cryptonotes entrantes comme votre propre et b) utilisé pour générer la clé privée unique utilisée pour « réclamer » votre cryptonote. La partie que je ne comprends pas à ce sujet ? En prenant le théorique "d'accord, nous avons ces signatures et transactions, et nous les transmettons" dans le monde de la programmation "D'accord, quelles informations spécifiquement constituent un individu UTXO ?" La meilleure façon de répondre à cette question est de fouiller dans le corps du code totalement non commenté. Bravo, équipe bytecoin. Rappel : la possibilité de lien signifie « la même personne a-t-elle envoyé ? » et l'indisponibilité signifie "a fait la même chose personne reçoit?". Ainsi, un système peut être lié ou non, impossible à relier ou non. Ennuyeux, je sais. Ainsi, lorsque Nic van Saberhagen dit ici : « ... les paiements entrants [sont] associés à des paiements ponctuels. des clés publiques qui ne peuvent être liées pour un spectateur", voyons ce qu'il veut dire. Tout d’abord, considérons une situation dans laquelle Alice envoie à Bob deux transactions distinctes à partir du même adresse à la même adresse. Dans l'univers Bitcoin, Alice a déjà commis l'erreur d'envoi à partir de la même adresse et la transaction a donc échoué à notre désir de limiter possibilité de liaison. De plus, comme elle a envoyé l’argent à la même adresse, elle a déçu notre désir. pour la non-liaison. Cette transaction Bitcoin était à la fois (totalement) liée et non dissociable. D’un autre côté, dans l’univers des cryptonotes, disons qu’Alice envoie à Bob une cryptonote, en utilisant l’adresse publique de Bob. Elle choisit comme ensemble de clés publiques obscurcissantes toutes les clés publiques connues. clés dans la région métropolitaine de Washington DC. Alex génère une clé publique unique en utilisant la sienne informations et informations publiques de Bob. Elle envoie l'argent, et tout observateur seulement pouvoir glaner "Quelqu'un de la région métropolitaine de Washington DC a envoyé 2,3 cryptonotes à l'adresse publique unique XYZ123." Nous avons ici un contrôle probabiliste sur la possibilité de lien, nous appellerons donc cela « presque non lien ». Nous ne voyons également que les clés publiques uniques auxquelles l’argent est envoyé. Même si on soupçonnait le récepteur était Bob, nous n'avons pas ses clés privées et nous ne pouvons donc pas tester si une transaction passe appartient à Bob et encore moins génère sa clé privée unique pour échanger sa cryptonote. Donc ça est, en fait, totalement « indiscutable ». C’est donc l’astuce la plus intéressante de toutes. Qui veut vraiment faire confiance à un autre MtGox ? Nous pouvons être à l'aise de stocker une certaine quantité de BTC sur Coinbase, mais le nec plus ultra en matière de sécurité Bitcoin est un portefeuille physique. Ce qui est gênant. Dans ce cas, vous pouvez donner en toute confiance la moitié de votre clé privée sans compromettre votre propre capacité à dépenser de l’argent. En faisant cela, tout ce que vous faites, c'est dire à quelqu'un comment briser l'indisponibilité. L'autre les propriétés du CN agissant comme une monnaie sont préservées, comme une preuve contre les doubles dépenses et que sais-je encore.

  3. Bob peut récupérer la clé privée unique correspondante : x = Hs(aR) + b, de sorte que P = xG. Il peut dépenser cette sortie à tout moment en signant une transaction avec x. Transaction Clé publique d'émission Sortie d'émission Montant Clé de destination P ′ = Hs(aR)G + bG clé publique unique x = Hs(aR) + b clé privée à usage unique Le récepteur clé privée (une, b) R. P' ?=P Fig. 5. Vérification des transactions entrantes. En conséquence, Bob reçoit des paiements entrants, associés à des clés publiques uniques qui sont inattaquable pour un spectateur. Quelques remarques complémentaires : • Lorsque Bob « reconnaît » ses transactions (voir étape 5), il n'utilise pratiquement que la moitié de ses informations privées : (a, B). Cette paire, également connue sous le nom de clé de suivi, peut être transmise à un tiers (Carol). Bob peut lui déléguer le traitement des nouvelles transactions. Bob n'a pas besoin de faire explicitement confiance à Carol, car elle ne peut pas récupérer la clé secrète à usage unique p sans la clé privée complète de Bob (a, b). Cette approche est utile lorsque Bob manque de bande passante ou la puissance de calcul (smartphones, portefeuilles matériels, etc.). • Si Alice souhaite prouver qu'elle a envoyé une transaction à l'adresse de Bob, elle peut soit divulguer r ou utiliser tout type de protocole de connaissance nulle pour prouver qu'elle connaît r (par exemple en signant la transaction avec r). • Si Bob souhaite avoir une adresse compatible avec l'audit où toutes les transactions entrantes sont connectable, il peut soit publier sa clé de suivi, soit utiliser une adresse tronquée. Cette adresse ne représentent qu'une seule clé ec publique B, et la partie restante requise par le protocole est en dérive comme suit : a = Hs(B) et A = Hs(B)G. Dans les deux cas, chaque personne est capable de « reconnaître » toutes les transactions entrantes de Bob, mais, bien sûr, personne ne peut dépenser les fonds qu'ils contiennent sans la clé secrète b. 4.4 Signatures de bague uniques Un protocole basé sur des signatures en anneau uniques permet aux utilisateurs d'obtenir une dissociation inconditionnelle. Malheureusement, les types ordinaires de signatures cryptographiques permettent de retracer les transactions jusqu'à leur émetteurs et récepteurs respectifs. Notre solution à cette lacune réside dans l’utilisation d’une signature différente type que ceux actuellement utilisés dans les systèmes de monnaie électronique. Nous fournirons dans un premier temps une description générale de notre algorithme sans référence explicite à monnaie électronique. Une signature en anneau unique contient quatre algorithmes : (GEN, SIG, VER, LNK) : GEN : prend des paramètres publics et génère une paire ec (P, x) et une clé publique I. SIG : prend un message m, un ensemble \(S'\) de clés publiques {Pi}i̸=s, une paire (Ps, xs) et génère une signature \(\sigma\) et un ensemble \(S = \)S'\( \cup \{P_s\}\). 8

  4. Bob peut récupérer la clé privée unique correspondante : x = Hs(aR) + b, de sorte que P = xG. Il peut dépenser cette sortie à tout moment en signant une transaction avec x. Transaction Clé publique d'émission Sortie d'émission Montant Clé de destination P ′ = Hs(aR)G + bG clé publique unique x = Hs(aR) + b clé privée à usage unique Le récepteur clé privée (une, b) R. P' ?=P Fig. 5. Vérification des transactions entrantes. En conséquence, Bob reçoit des paiements entrants, associés à des clés publiques uniques qui sont inattaquable pour un spectateur. Quelques remarques complémentaires : • Lorsque Bob « reconnaît » ses transactions (voir étape 5), il n'utilise pratiquement que la moitié de ses informations privées : (a, B). Cette paire, également connue sous le nom de clé de suivi, peut être transmise à un tiers (Carol). Bob peut lui déléguer le traitement des nouvelles transactions. Bob n'a pas besoin de faire explicitement confiance à Carol, car elle ne peut pas récupérer la clé secrète à usage unique p sans la clé privée complète de Bob (a, b). Cette approche est utile lorsque Bob manque de bande passante ou la puissance de calcul (smartphones, portefeuilles matériels, etc.). • Si Alice souhaite prouver qu'elle a envoyé une transaction à l'adresse de Bob, elle peut soit divulguer r ou utiliser tout type de protocole de connaissance nulle pour prouver qu'elle connaît r (par exemple en signant la transaction avec r). • Si Bob souhaite avoir une adresse compatible avec l'audit où toutes les transactions entrantes sont connectable, il peut soit publier sa clé de suivi, soit utiliser une adresse tronquée. Cette adresse ne représentent qu'une seule clé ec publique B, et la partie restante requise par le protocole est en dérive comme suit : a = Hs(B) et A = Hs(B)G. Dans les deux cas, chaque personne est capable de « reconnaître » toutes les transactions entrantes de Bob, mais, bien sûr, personne ne peut dépenser les fonds qu'ils contiennent sans la clé secrète b. 4.4 Signatures de bague uniques Un protocole basé sur des signatures en anneau uniques permet aux utilisateurs d'obtenir une dissociation inconditionnelle. Malheureusement, les types ordinaires de signatures cryptographiques permettent de retracer les transactions jusqu'à leur émetteurs et récepteurs respectifs. Notre solution à cette lacune réside dans l’utilisation d’une signature différente type que ceux actuellement utilisés dans les systèmes de monnaie électronique. Nous fournirons dans un premier temps un générateural description de notre algorithme sans référence explicite à monnaie électronique. Une signature en anneau unique contient quatre algorithmes : (GEN, SIG, VER, LNK) : GEN : prend des paramètres publics et génère une paire ec (P, x) et une clé publique I. SIG : prend un message m, un ensemble \(S'\) de clés publiques {Pi}i̸=s, une paire (Ps, xs) et génère une signature \(\sigma\) et un ensemble \(S = \)S'\( \cup \{P_s\}\). 8 16 Oui, nous avons maintenant a) une adresse de paiement et b) un identifiant de paiement. Un critique pourrait se demander « est-ce vraiment nécessaire de faire cela ? Après tout, si un commerçant reçoit le 112.00678952 CN exactement, et c'était ma commande, et j'ai une capture d'écran ou un reçu ou autre, n'est-ce pas un degré de précision insensé suffisant ? » La réponse est « peut-être que la plupart du temps, au quotidien, transactions en face à face. Cependant, la situation la plus courante (surtout dans le monde numérique) est la suivante : un commerçant vend un ensemble d'objets, chacun avec un prix fixe. Disons que l'objet A vaut 0,001 CN, l'objet B vaut 0,01 CN et l'objet C vaut 0,1 CN. Maintenant, si le commerçant reçoit une commande de 1,618 CN, il y a beaucoup de (nombreuses !) façons d’organiser une commande pour un client. Et donc sans une sorte d'identifiant de paiement, identifier la commande dite « unique » d'un client avec le coût dit « unique » de sa l'ordre devient impossible. Encore plus drôle : si tout dans ma boutique en ligne coûte exactement 1,0 CN, et je reçois 1000 clients par jour ? Et vous voulez prouver que vous avez acheté exactement 3 objets il y a deux semaines ? Sans identifiant de paiement ? Bonne chance, mon pote. Pour faire court : lorsque Bob publie une adresse de paiement, il peut finir par publier également une adresse de paiement. ainsi que l'identifiant de paiement (voir, par exemple, les dépôts Poloniex XMR). Ceci est différent de ce qui est décrit dans le texte ici où Alice est celle qui génère l'identifiant de paiement. Il doit également y avoir un moyen pour Bob de générer un identifiant de paiement. (une,B) Rappelons que la clé de suivi (a,B) peut être publiée ; perdre le secret de la valeur d’un testament ne pas violer votre capacité à dépenser ni permettre aux gens de vous voler (je pense... cela aurait à prouver), cela permettra simplement aux gens de voir toutes les transactions entrantes. Une adresse tronquée, comme décrit dans ce paragraphe, prend simplement la partie « privée » de la clé et le génère à partir de la partie "publique". Révéler la valeur de « a » supprimera la non-liabilité mais préservera le reste des transactions. L'auteur veut dire "non dissociable" car non dissociable fait référence au récepteur et pouvant être lié fait référence à l'expéditeur. Il est également clair que l’auteur n’avait pas réalisé qu’il y avait deux aspects différents dans la possibilité de lien. Puisque, après tout, la transaction est un objet orienté sur un graphe, deux questions se poseront : "Est-ce que ces deux transactions vont à la même personne ?" et "ces deux transactions arrivent-elles de la même personne ? » Il s'agit d'une politique de « non-retour » en vertu de laquelle la propriété de non-liaison de CryptoNote est conditionnel. C'est-à-dire que Bob peut choisir que ses transactions entrantes ne soient pas dissociables en utilisant cette politique. C’est une affirmation qu’ils prouvent sous le modèle Random Oracle. Nous y reviendrons ; le hasard Oracle a des avantages et des inconvénients.

VER : prend un message m, un ensemble S, une signature \(\sigma\) et renvoie « vrai » ou « faux ». LNK : prend un ensemble I = {Ii}, une signature \(\sigma\) et produit « linked » ou « indep ». L'idée derrière le protocole est assez simple : un utilisateur produit une signature qui peut être vérifié par un ensemble de clés publiques plutôt que par une clé publique unique. L'identité du signataire est impossible à distinguer des autres utilisateurs dont les clés publiques sont dans l'ensemble jusqu'à ce que le propriétaire produise une deuxième signature utilisant la même paire de clés. Clés privées x0 \(\cdots\) xi \(\cdots\) xn Clés publiques P0 \(\cdots\) Pi \(\cdots\) Pn Bague Signature signe vérifier Fig. 6. Anonymat de la signature en anneau. GEN : Le signataire choisit une clé secrète aléatoire \(x \in [1, l - 1]\) et calcule la clé correspondante clé publique P = xG. De plus, il calcule une autre clé publique I = xHp(P) que nous allons appelons « l’image clé ». SIG : le signataire génère une signature en anneau unique avec une connaissance nulle non interactive preuve en utilisant les techniques de [21]. Il sélectionne un sous-ensemble aléatoire \(S'\) de n parmi ceux des autres utilisateurs. clés publiques Pi, sa propre paire de clés (x, P) et l'image clé I. Soit \(0 \leq s \leq n\) l'index secret du signataire dans S (pour que sa clé publique soit Ps). Il choisit un {qi | je = 0 . . . n} et {wi | je = 0 . . . n, i ̸= s} de (1 . . . l) et applique la transformations suivantes : Li = ( qiG, si je = s qiG + wiPi, si je ̸= s Ri = ( qiHp(Pi), si je = s qiHp(Pi) + wiI, si je ̸= s La prochaine étape consiste à relever le défi non interactif : c = Hs(m, L1, . . . , Ln, R1, . . . , Rn) Finalement le signataire calcule la réponse : ci =    Wi, si je ̸= s c- nP je = 0 ci mod l, si je = s ri = ( qi, si je ̸= s qs −csx mod l, si je = s La signature résultante est \(\sigma\) = (I, c1, . . . , cn, r1, . . . , rn). 9 VER : prend un message m, un ensemble S, une signature \(\sigma\) et renvoie « vrai » ou « faux ». LNK : prend un ensemble I = {Ii}, une signature \(\sigma\) et produit « linked » ou « indep ». L'idée derrière le protocole est assez simple : un utilisateur produit une signature qui peut être vérifié par un ensemble de clés publiques plutôt que par une clé publique unique. L'identité du signataire est impossible à distinguer des autres utilisateurs dont les clés publiques sont dans l'ensemble jusqu'à ce que le propriétaire produise une deuxième signature utilisant la même paire de clés. Clés privées x0 \(\cdots\) xi \(\cdots\) xn Clés publiques P0 \(\cdots\) Pi \(\cdots\) Pn Bague Signature signe vérifier Fig. 6. Anonymat de la signature en anneau. GEN : Le signataire choisit une clé secrète aléatoire \(x \in [1, l - 1]\) et calcule la clé correspondante clé publique P = xG. De plus, il calcule une autre clé publique I = xHp(P) que nous allons appelons « l’image clé ». SIG : le signataire génère une signature en anneau unique avec une connaissance nulle non interactive preuve en utilisant les techniques de [21]. Il sélectionne un sous-ensemble aléatoire \(S'\) de n parmi ceux des autres utilisateurs. clés publiques Pi, sa propre paire de clés (x, P) et l'image clé I. Soit \(0 \leq s \leq n\) l'index secret du signataire dans S (pour que sa clé publique soit Ps). Il choisit un {qi | je = 0 . . . n} et {wi | je = 0 . . . n, i ̸= s} de (1 . . . l) et applique la transformations suivantes : Li = ( qiG, si je = s qiG + wiPi, si je ̸= s Ri = ( qiHp(Pi), si je = s qiHp(Pi) + wiI, si je ̸= s La prochaine étape consiste à relever le défi non interactif : c = Hs(m, L1, . . . , Ln, R1, . . . , Rn) Finalement le signataire calcule la réponse : ci =    Wi, si je ̸= s c- nP je = 0 ci mod l, si je = s ri = ( qi, si je ̸= s qs −csx mod l, si je = s La signature résultante est \(\sigma\) = (I, c1, . . . , cn, r1, . . . , rn). 9 17 C'est peut-être stupide, mais il faut être prudent lors de l'union de S et P_s. Si vous ajoutez simplement le dernière clé publique jusqu'à la fin, la dissociation est interrompue car quiconque vérifie les transactions en cours peut simplement vérifier la dernière clé publique répertoriée dans chaque transaction et boum. C'est la clé publique associé à l'expéditeur. Ainsi, après l'union, un générateur de nombres pseudo-aléatoires doit être utilisé pour permuter les clés publiques choisies. "...jusqu'à ce que le propriétaire produise une deuxième signature en utilisant la même paire de clés." Je souhaite au(x) auteur(s?) je développerais cela. Je crois que cela signifie "assurez-vous que chaque fois que vous choisissez un ensemble de clés publiques pour masquer vous-même, vous choisissez un jeu complètement nouveau, sans deux clés identiques. » Ce qui ressemble à un condition assez forte à placer en cas de dissociation. Peut-être que « vous choisissez un nouvel ensemble aléatoire parmi toutes les clés possibles" avec l'hypothèse que, même si des intersections non triviales seront inévitablement cela arrive, cela n’arrivera pas souvent. Quoi qu’il en soit, je dois approfondir cette déclaration. Cela génère la signature de l'anneau. Les preuves sans connaissance sont géniales : je vous mets au défi de me prouver que vous connaissez un secret sans révéler le secret. Par exemple, disons que nous sommes à l'entrée d'une grotte en forme de beignet, et au fond de la grotte (hors de vue depuis l'entrée) se trouve un oporte sans issue vers laquelle vous prétendez que vous avez la clé. Si vous allez dans une direction, cela vous laisse toujours passer, mais si vous allez dans la dans l'autre sens, vous avez besoin d'une clé. Mais tu ne veux même pas me MONTRER la clé, encore moins montre-moi que ça ouvre la porte. Mais tu veux me prouver que tu sais ouvrir le porte. Dans le cadre interactif, je lance une pièce de monnaie. Pile à gauche, pile à droite et vous descendez le grotte en forme de beignet, quelle que soit la direction dans laquelle la pièce vous dirige. Au fond, hors de ma vue, tu ouvrez la porte pour revenir de l'autre côté. Nous répétons l'expérience du tirage au sort jusqu'à ce que je sois convaincu que vous avez la clé. Mais c’est clairement la preuve INTERACTIVE de connaissance zéro. Il existe des versions non interactives dans lesquelles vous et moi n'avons jamais à communiquer ; de cette façon, aucune écoute indiscrète ne peut interférer. http://en.wikipedia.org/wiki/Zero-knowledge_proof Cette définition est inversée par rapport à la définition précédente.

VER : prend un message m, un ensemble S, une signature \(\sigma\) et renvoie « vrai » ou « faux ». LNK : prend un ensemble I = {Ii}, une signature \(\sigma\) et produit « linked » ou « indep ». L'idée derrière le protocole est assez simple : un utilisateur produit une signature qui peut être vérifié par un ensemble de clés publiques plutôt que par une clé publique unique. L'identité du signataire est impossible à distinguer des autres utilisateurs dont les clés publiques sont dans l'ensemble jusqu'à ce que le propriétaire produise une deuxième signature utilisant la même paire de clés. Clés privées x0 \(\cdots\) xi \(\cdots\) xn Clés publiques P0 \(\cdots\) Pi \(\cdots\) Pn Bague Signature signe vérifier Fig. 6. Anonymat de la signature en anneau. GEN : Le signataire choisit une clé secrète aléatoire \(x \in [1, l - 1]\) et calcule la clé correspondante clé publique P = xG. De plus, il calcule une autre clé publique I = xHp(P) que nous allons appelons « l’image clé ». SIG : le signataire génère une signature en anneau unique avec une connaissance nulle non interactive preuve en utilisant les techniques de [21]. Il sélectionne un sous-ensemble aléatoire \(S'\) de n parmi ceux des autres utilisateurs. clés publiques Pi, sa propre paire de clés (x, P) et l'image clé I. Soit \(0 \leq s \leq n\) l'index secret du signataire dans S (pour que sa clé publique soit Ps). Il choisit un {qi | je = 0 . . . n} et {wi | je = 0 . . . n, i ̸= s} de (1 . . . l) et applique la transformations suivantes : Li = ( qiG, si je = s qiG + wiPi, si je ̸= s Ri = ( qiHp(Pi), si je = s qiHp(Pi) + wiI, si je ̸= s La prochaine étape consiste à relever le défi non interactif : c = Hs(m, L1, . . . , Ln, R1, . . . , Rn) Finalement le signataire calcule la réponse : ci =    Wi, si je ̸= s c- nP je = 0 ci mod l, si je = s ri = ( qi, si je ̸= s qs −csx mod l, si je = s La signature résultante est \(\sigma\) = (I, c1, . . . , cn, r1, . . . , rn). 9 VER : prend un message m, un ensemble S, une signature \(\sigma\) et renvoie « vrai » ou « faux ». LNK : prend un ensemble I = {Ii}, une signature \(\sigma\) et produit « linked » ou « indep ». L'idée derrière le protocole est assez simple : un utilisateur produit une signature qui peut être vérifié par un ensemble de clés publiques plutôt que par une clé publique unique. L'identité du signataire est impossible à distinguer des autres utilisateurs dont les clés publiques sont dans l'ensemble jusqu'à ce que le propriétaire produise une deuxième signature utilisant la même paire de clés. Clés privées x0 \(\cdots\) xi \(\cdots\) xn Clés publiques P0 \(\cdots\) Pi \(\cdots\) Pn Bague Signature signe vérifier Fig. 6. Anonymat de la signature en anneau. GEN : Le signataire choisit une clé secrète aléatoire \(x \in [1, l - 1]\) et calcule la clé correspondante clé publique P = xG. De plus, il calcule une autre clé publique I = xHp(P) que nous allons appelons « l’image clé ». SIG : le signataire génère une signature en anneau unique avec une connaissance nulle non interactive preuve en utilisant les techniques de [21]. Il sélectionne un sous-ensemble aléatoire \(S'\) de n parmi ceux des autres utilisateurs. clés publiques Pi, sa propre paire de clés (x, P) et l'image clé I. Soit \(0 \leq s \leq n\) l'index secret du signataire dans S (pour que sa clé publique soit Ps). Il choisit un {qi | je = 0 . . . n} et {wi | je = 0 . . . n, i ̸= s} de (1 . . . l) et applique la transformations suivantes : Li = ( qiG, si je = s qiG + wiPi, si je ̸= s Ri = ( qiHp(Pi), si je = s qiHp(Pi) + wiI, si je ̸= s La prochaine étape consiste à relever le défi non interactif : c = Hs(m, L1, . . . , Ln, R1, . . . , Rn) Finalement le signataire calcule la réponse : ci =    Wi, si je ̸= s c- nP je = 0 ci mod l, si je = s ri = ( qi, si je ̸= s qs −csx mod l, si je = s La signature résultante est \(\sigma\) = (I, c1, . . . , cn, r1, . . . , rn). 9 18 Tout ce domaine est indépendant des cryptonotes, décrivant simplement l'algorithme de signature en anneau sans référence aux monnaies. Je soupçonne qu'une partie de la notation est cohérente avec le reste de l'article, cependant. Par exemple, x est la clé secrète « aléatoire » choisie dans GEN, qui donne la clé publique P et l'image de clé publique I. Cette valeur de x est la valeur que Bob calcule dans la partie 6 page 8. Voilà donc commence à dissiper une partie de la confusion de la description précédente. C'est plutôt cool ; l'argent n'est pas transféré de "l'adresse publique d'Alice vers l'adresse publique de Bob adresse." Il est transféré d'une adresse unique à une adresse unique. Donc, dans un sens, voici comment les choses fonctionnent. Si Alex a des cryptonotes parce que quelqu'un les lui a envoyées, cela signifie qu'elle dispose des clés privées nécessaires pour les envoyer à Bob. Elle utilise un échange Diffie-Hellman utilisant les informations publiques de Bob pour générer une nouvelle adresse unique et les cryptonotes sont transférées à cette adresse. Maintenant, puisqu'un échange DH (vraisemblablement sécurisé) a été utilisé pour générer la nouvelle adresse unique auquel Alex a envoyé son CN, Bob est le seul à disposer des clés privées nécessaires pour répéter le ci-dessus. Alors maintenant, Bob est Alex. http://en.wikipedia.org/wiki/Piecewise#Notation_and_interpretation La sommation doit être indexée sur j et non sur i. Chaque c_i est un déchet aléatoire (puisque w_i est aléatoire) sauf pour le cul de c_iassocié à la clé réelle impliquée dans cette signature. La valeur de c est un hash des informations précédentes. Je pense que cela peut contenir une faute de frappe pire que la réutilisation de l'index 'i', car c_s semble être implicitement, et non explicitement, défini. En effet, si l'on prend cette équation avec foi, alors on détermine que c_s = (1/2)c - (1/2) sum_i neq s c_i. Autrement dit, un hash moins tout un tas de nombres aléatoires. En revanche, si cette sommation est destinée à être lue "c_s = (c - sum_j neq s c_j) mod l", puis nous prenons le hash de nos informations précédentes, générons un tas de nombres aléatoires, soustrayez tous ces nombres aléatoires du hash, et cela nous donne c_s. Cela semble être ce qui "devrait" se produire compte tenu de mon intuition, et correspond à l'étape de vérification de la page 10. Mais l’intuition n’est pas mathématique. Je vais approfondir cela. Comme avant ; tous ces éléments seront des déchets aléatoires, à l'exception de celui associé au véritable clé publique du signataire x. Sauf que cette fois, c'est plus ce que j'attendrais de la structure : r_i est aléatoire pour i!=s et r_s est déterminé uniquement par le secret x et les valeurs s-indexées de q_i et c_i.

VER : Le vérificateur vérifie la signature en appliquant les transformations inverses : ( L' je = riG + ciPi R′ je = riHp(Pi) + ciI Enfin, le vérificateur vérifie si nP je = 0 ci ?= Hs(m, L′ 0, . . . , L' n, R′ 0, . . . , R' n) modèle l Si cette égalité est correcte, le vérificateur exécute l'algorithme LNK. Sinon, le vérificateur rejette la signature. LNK : le vérificateur vérifie si I a été utilisé dans des signatures antérieures (ces valeurs sont stockées dans le définir I). Des utilisations multiples impliquent que deux signatures ont été produites sous la même clé secrète. Le sens du protocole : en appliquant des L-transformations le signataire prouve qu'il sait tel x qu'au moins un Pi = xG. Pour rendre cette preuve non répétable, nous introduisons l'image clé comme je = xHp(P). Le signataire utilise les mêmes coefficients (ri, ci) pour prouver presque la même affirmation : il connaît x tel qu'au moins un \(H_p(P_i) = I \cdot x^{-1}\). Si l'application \(x \to I\) est une injection : 1. Personne ne peut récupérer la clé publique à partir de l’image de clé et identifier le signataire ; 2. Le signataire ne peut pas faire deux signatures avec des I différents et le même x. Une analyse de sécurité complète est fournie à l’Annexe A. 4.5 Transaction CryptoNote standard En combinant les deux méthodes (clés publiques non liées et signature en anneau introuvable), Bob obtient nouveau niveau de confidentialité par rapport au programme Bitcoin original. Cela lui impose de stocker uniquement une clé privée (a, b) et publier (A, B) pour commencer à recevoir et à envoyer des transactions anonymes. Lors de la validation de chaque transaction, Bob effectue en outre uniquement deux multiplications de courbes elliptiques et une addition par sortie pour vérifier si une transaction lui appartient. Pour chacun de ses sortie Bob récupère une paire de clés à usage unique (pi, Pi) et la stocke dans son portefeuille. Toutes les entrées peuvent être il est prouvé de manière circonstancielle qu'ils ont le même propriétaire seulement s'ils apparaissent dans une seule transaction. Dans En fait, cette relation est beaucoup plus difficile à établir en raison de la signature en anneau unique. Avec une signature en anneau, Bob peut efficacement cacher chaque entrée parmi celles de quelqu'un d'autre ; tout est possible les dépensiers seront équiprobables, même le propriétaire précédent (Alice) n'a pas plus d'informations que tout observateur. Lors de la signature de sa transaction, Bob précise n sorties étrangères du même montant que son sortie, en les mélangeant tous sans la participation d’autres utilisateurs. Bob lui-même (ainsi que quelqu'un d'autre) ne sait pas si l'un de ces paiements a été dépensé : un résultat peut être utilisé dans des milliers de signatures comme facteur d'ambiguïté et jamais comme cible de dissimulation. Le doublé Le contrôle des dépenses a lieu dans la phase LNK lors de la vérification par rapport à l'ensemble d'images clés utilisé. Bob peut choisir lui-même le degré d'ambiguïté : n = 1 signifie que la probabilité qu'il ait dépensé, la sortie est de 50 % de probabilité, n = 99 donne 1 %. La taille de la signature résultante augmente linéairement comme O(n+1), donc l'anonymat amélioré coûte à Bob des frais de transaction supplémentaires. Il peut aussi définissez n = 0 et faites en sorte que sa signature en anneau soit composée d'un seul élément, mais cela sera instantanément révélez-le comme un dépensier. 10 VER : Le vérificateur vérifie la signature en appliquant les transformations inverses : ( L' je = riG + ciPi R' je = riHp(Pi) + ciI Enfin, le vérificateur vérifie si nP je = 0 ci ?= Hs(m, L′ 0, . . . , L' n, R′ 0, . . . , R' n) modèle l Si cette égalité est correcte, le vérificateur exécute l'algorithme LNK. Sinon, le vérificateur rejette la signature. LNK : le vérificateur vérifie si I a été utilisé dans des signatures antérieures (ces valeurs sont stockées dans le définir I). Des utilisations multiples impliquent que deux signatures ont été produites sous la même clé secrète. Le sens du protocole : en appliquant des L-transformations le signataire prouve qu'il sait tel x qu'au moins un Pi = xG. Pour rendre cette preuve non répétable, nous introduisons l'image clé comme je = xHp(P). Le signataire utilise les mêmes coefficients (ri, ci) pour prouver presque la même affirmation : il connaît x tel qu'au moins un \(H_p(P_i) = I \cdot x^{-1}\). Si l'application \(x \to I\) est une injection : 1. Personne ne peut récupérer la clé publique à partir de l’image de clé et identifier le signataire ; 2. Le signataire ne peut pas faire deux signatures avec des I différents et le même x. Une analyse de sécurité complète est fournie à l’Annexe A. 4.5 Transaction CryptoNote standard En combinant les deux méthodes (clés publiques non liées et signature en anneau introuvable), Bob obtient nouveau niveau de confidentialité par rapport au programme Bitcoin original. Cela lui impose de stocker uniquement une clé privée (a, b) et publier (A, B) pour commencer à recevoir et à envoyer des transactions anonymes. Lors de la validation de chaque transaction, Bob effectue en outre uniquement deux multiplications de courbes elliptiques et une addition par sortie pour vérifier si une transaction lui appartient. Pour chacun de ses sortie Bob récupère une paire de clés unique (pi, Pi) et stil le met dans son portefeuille. Toutes les entrées peuvent être il est prouvé de manière circonstancielle qu'ils ont le même propriétaire seulement s'ils apparaissent dans une seule transaction. Dans En fait, cette relation est beaucoup plus difficile à établir en raison de la signature en anneau unique. Avec une signature en anneau, Bob peut efficacement cacher chaque entrée parmi celles de quelqu'un d'autre ; tout est possible les dépensiers seront équiprobables, même le propriétaire précédent (Alice) n'a pas plus d'informations que tout observateur. Lors de la signature de sa transaction, Bob précise n sorties étrangères du même montant que son sortie, en les mélangeant tous sans la participation d’autres utilisateurs. Bob lui-même (ainsi que quelqu'un d'autre) ne sait pas si l'un de ces paiements a été dépensé : un résultat peut être utilisé dans des milliers de signatures comme facteur d'ambiguïté et jamais comme cible de dissimulation. Le doublé Le contrôle des dépenses a lieu dans la phase LNK lors de la vérification par rapport à l'ensemble d'images clés utilisé. Bob peut choisir lui-même le degré d'ambiguïté : n = 1 signifie que la probabilité qu'il ait dépensé, la sortie est de 50 % de probabilité, n = 99 donne 1 %. La taille de la signature résultante augmente linéairement comme O(n+1), donc l'anonymat amélioré coûte à Bob des frais de transaction supplémentaires. Il peut aussi définissez n = 0 et faites en sorte que sa signature en anneau soit composée d'un seul élément, mais cela sera instantanément révélez-le comme un dépensier. 10 19 À ce stade, je suis terriblement confus. Alex reçoit un message M avec signature (I,c_1, ..., c_n, r_1, ..., r_n) et liste des publics touches S. et elle exécute VER. Cela calculera L_i' et R_i' Cela vérifie que c_s = c - sum_i neq s c_i sur la page précédente. Au début, j’étais TRÈS (ha) confus. N’importe qui peut calculer L_i’ et R_i’. En effet, chaque r_i et c_i ont été publiés dans la signature sigma avec la valeur de I. L'ensemble S = P_i de toutes les clés publiques a également été publié. Donc, quiconque a vu Sigma et l'ensemble des les clés S = P_i obtiendront les mêmes valeurs pour L_i' et R_i' et vérifieront donc la signature. Mais ensuite je me suis souvenu que cette section décrivait simplement un algorithme de signature, pas un « contrôle » si signé, vérifiez s'il M'EST ENVOYÉ, et si c'est le cas, allez dépenser l'argent." C'est SIMPLEMENT le partie emblématique du jeu. J’ai hâte de lire l’Annexe A lorsque j’y serai enfin. J'aimerais voir une comparaison opération par opération à grande échelle de Cryptonote à Bitcoin. Aussi, électricité/durabilité. Quels éléments des algorithmes constituent ici une « entrée » ? L'entrée de transaction, je crois, est un montant et un ensemble de UTXO dont la somme est supérieure à celle du montant. Montant. Ce n’est pas clair. « Cible de la cachette ? J'y réfléchis depuis quelques minutes maintenant et je n'ai toujours pas le idée la plus floue de ce que cela pourrait signifier. Une attaque à double dépense ne peut être exécutée qu’en manipulant la clé utilisée perçue par un nœud. ensemble d'images \(I\). "Degré d'ambiguïté" = n mais le nombre total de clés publiques incluses dans la transaction est n+1. C'est-à-dire que le degré d'ambiguïté serait "combien d'AUTRES personnes voulez-vous dans la foule ?" La réponse sera probablement, par défaut, « autant que possible ».

VER : Le vérificateur vérifie la signature en appliquant les transformations inverses : ( L' je = riG + ciPi R' je = riHp(Pi) + ciI Enfin, le vérificateur vérifie si nP je = 0 ci ?= Hs(m, L′ 0, . . . , L' n, R′ 0, . . . , R' n) modèle l Si cette égalité est correcte, le vérificateur exécute l'algorithme LNK. Sinon, le vérificateur rejette la signature. LNK : le vérificateur vérifie si I a été utilisé dans des signatures antérieures (ces valeurs sont stockées dans le définir I). Des utilisations multiples impliquent que deux signatures ont été produites sous la même clé secrète. Le sens du protocole : en appliquant des L-transformations le signataire prouve qu'il sait tel x qu'au moins un Pi = xG. Pour rendre cette preuve non répétable, nous introduisons l'image clé comme je = xHp(P). Le signataire utilise les mêmes coefficients (ri, ci) pour prouver presque la même affirmation : il connaît x tel qu'au moins un \(H_p(P_i) = I \cdot x^{-1}\). Si l'application \(x \to I\) est une injection : 1. Personne ne peut récupérer la clé publique à partir de l’image de clé et identifier le signataire ; 2. Le signataire ne peut pas faire deux signatures avec des I différents et le même x. Une analyse de sécurité complète est fournie à l’Annexe A. 4.5 Transaction CryptoNote standard En combinant les deux méthodes (clés publiques non liées et signature en anneau introuvable), Bob obtient nouveau niveau de confidentialité par rapport au programme Bitcoin original. Cela lui impose de stocker uniquement une clé privée (a, b) et publier (A, B) pour commencer à recevoir et à envoyer des transactions anonymes. Lors de la validation de chaque transaction, Bob effectue en outre uniquement deux multiplications de courbes elliptiques et une addition par sortie pour vérifier si une transaction lui appartient. Pour chacun de ses sortie Bob récupère une paire de clés à usage unique (pi, Pi) et la stocke dans son portefeuille. Toutes les entrées peuvent être il est prouvé de manière circonstancielle qu'ils ont le même propriétaire seulement s'ils apparaissent dans une seule transaction. Dans En fait, cette relation est beaucoup plus difficile à établir en raison de la signature en anneau unique. Avec une signature en anneau, Bob peut efficacement cacher chaque entrée parmi celles de quelqu'un d'autre ; tout est possible les dépensiers seront équiprobables, même le propriétaire précédent (Alice) n'a pas plus d'informations que tout observateur. Lors de la signature de sa transaction, Bob précise n sorties étrangères du même montant que son sortie, en les mélangeant tous sans la participation d’autres utilisateurs. Bob lui-même (ainsi que quelqu'un d'autre) ne sait pas si l'un de ces paiements a été dépensé : un résultat peut être utilisé dans des milliers de signatures comme facteur d'ambiguïté et jamais comme cible de dissimulation. Le doublé Le contrôle des dépenses a lieu dans la phase LNK lors de la vérification par rapport à l'ensemble d'images clés utilisé. Bob peut choisir lui-même le degré d'ambiguïté : n = 1 signifie que la probabilité qu'il ait dépensé, la sortie est de 50 % de probabilité, n = 99 donne 1 %. La taille de la signature résultante augmente linéairement comme O(n+1), donc l'anonymat amélioré coûte à Bob des frais de transaction supplémentaires. Il peut aussi définissez n = 0 et faites en sorte que sa signature en anneau soit composée d'un seul élément, mais cela sera instantanément révélez-le comme un dépensier. 10 VER : Le vérificateur vérifie la signature en appliquant les transformations inverses : ( L' je = riG + ciPi R' je = riHp(Pi) + ciI Enfin, le vérificateur vérifie si nP je = 0 ci ?= Hs(m, L′ 0, . . . , L' n, R′ 0, . . . , R' n) modèle l Si cette égalité est correcte, le vérificateur exécute l'algorithme LNK. Sinon, le vérificateur rejette la signature. LNK : le vérificateur vérifie si I a été utilisé dans des signatures antérieures (ces valeurs sont stockées dans le définir I). Des utilisations multiples impliquent que deux signatures ont été produites sous la même clé secrète. Le sens du protocole : en appliquant des L-transformations le signataire prouve qu'il sait tel x qu'au moins un Pi = xG. Pour rendre cette preuve non répétable, nous introduisons l'image clé comme je = xHp(P). Le signataire utilise les mêmes coefficients (ri, ci) pour prouver presque la même affirmation : il connaît x tel qu'au moins un \(H_p(P_i) = I \cdot x^{-1}\). Si l'application \(x \to I\) est une injection : 1. Personne ne peut récupérer la clé publique à partir de l’image de clé et identifier le signataire ; 2. Le signataire ne peut pas faire deux signatures avec des I différents et le même x. Une analyse de sécurité complète est fournie à l’Annexe A. 4.5 Transaction CryptoNote standard En combinant les deux méthodes (clés publiques non liées et signature en anneau introuvable), Bob obtient nouveau niveau de confidentialité par rapport au programme Bitcoin original. Cela lui impose de stocker uniquement une clé privée (a, b) et publier (A, B) pour commencer à recevoir et à envoyer des transactions anonymes. Lors de la validation de chaque transaction, Bob effectue en outre uniquement deux multiplications de courbes elliptiques et une addition par sortie pour vérifier si une transaction lui appartient. Pour chacun de ses sortie Bob récupère une paire de clés unique (pi, Pi) et stil le met dans son portefeuille. Toutes les entrées peuvent être il est prouvé de manière circonstancielle qu'ils ont le même propriétaire seulement s'ils apparaissent dans une seule transaction. Dans En fait, cette relation est beaucoup plus difficile à établir en raison de la signature en anneau unique. Avec une signature en anneau, Bob peut efficacement cacher chaque entrée parmi celles de quelqu'un d'autre ; tout est possible les dépensiers seront équiprobables, même le propriétaire précédent (Alice) n'a pas plus d'informations que tout observateur. Lors de la signature de sa transaction, Bob précise n sorties étrangères du même montant que son sortie, en les mélangeant tous sans la participation d’autres utilisateurs. Bob lui-même (ainsi que quelqu'un d'autre) ne sait pas si l'un de ces paiements a été dépensé : un résultat peut être utilisé dans des milliers de signatures comme facteur d'ambiguïté et jamais comme cible de dissimulation. Le doublé Le contrôle des dépenses a lieu dans la phase LNK lors de la vérification par rapport à l'ensemble d'images clés utilisé. Bob peut choisir lui-même le degré d'ambiguïté : n = 1 signifie que la probabilité qu'il ait dépensé, la sortie est de 50 % de probabilité, n = 99 donne 1 %. La taille de la signature résultante augmente linéairement comme O(n+1), donc l'anonymat amélioré coûte à Bob des frais de transaction supplémentaires. Il peut aussi définissez n = 0 et faites en sorte que sa signature en anneau soit composée d'un seul élément, mais cela sera instantanément révélez-le comme un dépensier. 10 20 C'est intéressant ; plus tôt, nous avons fourni un moyen pour un récepteur, Bob, de transmettre tous les messages ENTRANTS transactions non dissociables soit en choisissant la moitié de ses clés privées de manière déterministe, soit en publier la moitié de ses clés privées comme publiques. Il s’agit d’une politique de non-retour. Ici, nous voyons une façon pour un expéditeur, Alex, de choisir une seule transaction sortante comme pouvant être liée, mais en fait ceci révèle Alex comme l'expéditeur de l'ensemble du réseau. Il ne s’agit PAS d’une politique sans retour en arrière. Il s'agit d'une transaction par transaction. Existe-t-il une troisième politique ? Un destinataire, Bob, peut-il générer un identifiant de paiement unique pour Alex qui ne change jamais, peut-être en utilisant un échange Diffie-Hellman ? Si quelqu'un inclut ce paiement Une pièce d'identité fournie quelque part dans sa transaction à l'adresse de Bob, elle doit provenir d'Alex. De cette façon, Alex n'a pas besoin de se révéler à l'ensemble du réseau en choisissant de lier un transaction, mais elle peut toujours s'identifier auprès de la personne à qui elle envoie son argent. N'est-ce pas ce que fait Poloniex ?

Transaction Entrée d'émission Sortie0 . . . Sortiei . . . Sortie Image clé Signature Signature de la bague Clé de destination Sortie1 Clé de destination Sortie Opérations à l'étranger Résultat de l'expéditeur Clé de destination Paire de clés à usage unique Une fois clé privée je = xHp(P) P, x Fig. 7. Génération de signature en anneau dans une transaction standard. 5 Preuve de travail égalitaire Dans cette section, nous proposons et mettons à la terre le nouvel algorithme proof-of-work. Notre objectif premier est de réduire l’écart entre les mineurs CPU (majoritaires) et GPU/FPGA/ASIC (minoritaires). C'est Il est approprié que certains utilisateurs puissent avoir un certain avantage sur d'autres, mais leurs investissements devrait croître au moins linéairement avec la puissance. Plus généralement, produire des appareils spécialisés doit être le moins rentable possible. 5.1 Œuvres connexes Le protocole Bitcoin proof-of-work d'origine utilise la fonction de tarification gourmande en CPU SHA-256. Il se compose principalement d'opérateurs logiques de base et repose uniquement sur la vitesse de calcul de processeur, est donc parfaitement adapté à la mise en œuvre multicœur/convoyeur. Cependant, les ordinateurs modernes ne sont pas limités uniquement par le nombre d'opérations par seconde, mais aussi par taille de mémoire. Bien que certains processeurs puissent être nettement plus rapides que d'autres [8], les tailles de mémoire sont moins susceptibles de varier entre les machines. Les fonctions de prix liées à la mémoire ont été introduites pour la première fois par Abadi et al et ont été définies comme « fonctions dont le temps de calcul est dominé par le temps passé à accéder à la mémoire » [15]. L’idée principale est de construire un algorithme allouant un gros bloc de données (« scratchpad ») dans une mémoire accessible relativement lentement (par exemple, la RAM) et « l’accès à un séquence imprévisible d'emplacements »à l'intérieur. Un bloc doit être suffisamment grand pour permettre la conservation les données plus avantageuses que de les recalculer pour chaque accès. L'algorithme devrait également empêcher le parallélisme interne, donc N threads simultanés devraient nécessiter N fois plus de mémoire à la fois. Dwork et al [22] ont étudié et formalisé cette approche les amenant à suggérer une autre variante de la fonction de tarification : « Mbound ». Une autre œuvre appartient à F. Coelho [20], qui 11 Transaction Entrée d'émission Sortie0 . . . Sortiei . . . Sortie Image clé Signature Signature de la bague Clé de destination Sortie1 Clé de destination Sortie Opérations à l'étranger Résultat de l'expéditeur Clé de destination Paire de clés à usage unique Une fois clé privée je = xHp(P) P, x Fig. 7. Génération de signature en anneau dans une transaction standard. 5 Preuve de travail égalitaire Dans cette section, nous proposons et mettons à la terre le nouvel algorithme proof-of-work. Notre objectif premier est de réduire l’écart entre les mineurs CPU (majoritaires) et GPU/FPGA/ASIC (minoritaires). C'est Il est approprié que certains utilisateurs puissent avoir un certain avantage sur d'autres, mais leurs investissements devrait croître au moins linéairement avec la puissance. Plus généralement, produire des appareils spécialisés doit être le moins rentable possible. 5.1 Œuvres connexes Le protocole Bitcoin proof-of-work d'origine utilise la fonction de tarification gourmande en CPU SHA-256. Il se compose principalement d'opérateurs logiques de base et repose uniquement sur la vitesse de calcul de processeur, est donc parfaitement adapté à la mise en œuvre multicœur/convoyeur. Cependant, les ordinateurs modernes ne sont pas limités uniquement par le nombre d'opérations par seconde, mais aussi par taille de mémoire. Bien que certains processeurs puissent être nettement plus rapides que d'autres [8], les tailles de mémoire sont moins susceptibles de varier entre les machines. Les fonctions de prix liées à la mémoire ont été introduites pour la première fois par Abadi et al et ont été définies comme « fonctions dont le temps de calcul est dominé par le temps passé à accéder à la mémoire » [15]. L’idée principale est de construire un algorithme allouant un gros bloc de données (« scratchpad ») dans une mémoire accessible relativement lentement (par exemple, la RAM) et « l’accès à un séquence imprévisible d'emplacements »à l'intérieur. Un bloc doit être suffisamment grand pour permettre la conservation les données plus avantageuses que de les recalculer pour chaque accès. L'algorithme devrait également empêcher le parallélisme interne, donc N threads simultanés devraient nécessiter N fois plus de mémoire à la fois. Dwork et al [22] ont étudié et formalisé cette approche les amenant à suggérer une autre variante de la fonction de tarification : « Mbound ». Une autre œuvre appartient à F. Coelho [20], qui 11 21 Ce sont apparemment nos UTXO : montants et clés de destination. Si Alex est celui qui construit cette transaction standard et l'envoie à Bob, alors Alex possède également les clés privées à chacun d'eux. J'aime beaucoup ce diagramme, car il répond à certaines questions précédentes. Une entrée Txn consiste d'un ensemble de sorties Txn et d'un kevotre image. Il est ensuite signé d'une signature en anneau, comprenant tous des clés privées qu'Alex possède pour toutes les transactions étrangères incluses dans la transaction. Le La sortie Txn se compose d’un montant et d’une clé de destination. Le destinataire de la transaction peut, à volonté, génèrent leur clé privée unique comme décrit précédemment dans le document afin de dépenser l'argent. Ce sera ravi de découvrir à quel point cela correspond au code réel... Non, Nic van Saberhagen décrit vaguement certaines propriétés d'un algorithme de preuve de travail, sans réellement décrire cet algorithme. L'algorithme CryptoNight lui-même EXIGERA une analyse approfondie. Quand j'ai lu ceci, j'ai bégayé. Les investissements devraient-ils croître au moins de façon linéaire avec le pouvoir, ou les investissements augmentent au plus linéairement avec le pouvoir ? Et puis j'ai réalisé ; En tant que mineur ou investisseur, je pense généralement à « quelle puissance puis-je obtenir ? pour un investissement ?" et non « combien d'investissement est nécessaire pour une quantité d'énergie fixée ? » Bien sûr, on note l'investissement par I et le pouvoir par P. Si I(P) est l'investissement en fonction du pouvoir et P(I) est la puissance en fonction de l’investissement, ils seront inverses l’un de l’autre (partout où des inverses peuvent exister). Et si I(P) est plus rapide que linéaire, alors P(I) est plus lent que linéaire. Par conséquent, le taux de rendement pour les investisseurs sera réduit. C'est-à-dire que ce que dit ici l'auteur est : « bien sûr, plus vous investissez, plus vous obtiendrez plus ». pouvoir. Mais nous devrions essayer d’en faire un taux de rendement réduit. » Les investissements en CPU finiront par plafonner de manière sublinéaire ; la question est de savoir si les auteurs ont conçu un algorithme POW qui obligera les ASIC à le faire également. Une hypothétique « monnaie du futur » devrait-elle toujours exploiter les ressources les plus lentes/les plus limitées ? L'article d'Abadi et al (dont les auteurs sont des ingénieurs de Google et de Microsoft) est le suivant : essentiellement, en utilisant le fait que ces dernières années la taille de la mémoire a été beaucoup plus petite différence entre les machines que la vitesse du processeur, et avec un rapport investissement/puissance plus que linéaire. Dans quelques années, il faudra peut-être réévaluer cela ! Tout est une course aux armements... Construire une fonction hash est difficile ; construire une fonction hash satisfaisant ces contraintes semble plus difficile. Cet article ne semble contenir aucune explication sur la réalité hashing algorithme CryptoNight. Je pense que c'est une implémentation de SHA-3 gourmande en mémoire, basée sur sur les messages du forum mais je n'en ai aucune idée... et c'est le point. Il faut l'expliquer.

a proposé la solution la plus efficace : « Hokkaido ». A notre connaissance le dernier travail basé sur l'idée de recherches pseudo-aléatoires dans un grand tableau est l'algorithme dit « scrypt » de C. Percival [32]. Contrairement aux fonctions précédentes, il se concentre sur dérivation de clé, et non les systèmes proof-of-work. Malgré ce fait, scrypt peut servir notre objectif : cela fonctionne bien comme fonction de tarification dans le problème de conversion partiel hash tel que SHA-256 dans Bitcoin. À présent, scrypt a déjà été appliqué dans Litecoin [14] et dans quelques autres forks Bitcoin. Cependant, sa mise en œuvre n'est pas vraiment liée à la mémoire : le rapport « temps d'accès mémoire / global » time » n’est pas assez grand car chaque instance n’utilise que 128 Ko. Cela permet aux mineurs GPU être environ 10 fois plus efficace et continue de laisser la possibilité de créer relativement des appareils miniers bon marché mais très efficaces. De plus, la construction du scrypt elle-même permet un compromis linéaire entre la taille de la mémoire et Vitesse du processeur due au fait que chaque bloc du bloc-notes est dérivé uniquement du précédent. Par exemple, vous pouvez stocker un bloc sur deux et recalculer les autres de manière paresseuse, c'est-à-dire uniquement quand cela devient nécessaire. Les indices pseudo-aléatoires sont supposés être uniformément distribués, donc la valeur attendue des recalculs des blocs supplémentaires est 1 \(2 \cdot N\), où N est le nombre d'itérations. Le temps de calcul global augmente de moins de moitié car il y a aussi opérations indépendantes du temps (temps constant) telles que la préparation du bloc-notes et le hashing sur chaque itération. Économiser 2/3 des coûts de mémoire 1 \(3 \cdot N\) + 1 3 \(\cdot\) \(2 \cdot N\) = N recalculs supplémentaires ; 9/10 résultats en 1 \(10 \cdot N\) + . . . + 1 \(10 \cdot 9 \cdot N\) = 4,5N. Il est facile de montrer que stocker seulement 1 s de tous les blocs augmente le temps moins que d'un facteur s−1 2 . Cela implique à son tour qu'une machine dotée d'un processeur 200 fois plus rapide que les puces modernes, elles ne peuvent stocker que 320 octets du bloc-notes. 5.2 L'algorithme proposé Nous proposons un nouvel algorithme lié à la mémoire pour la fonction de tarification proof-of-work. Cela repose sur accès aléatoire à une mémoire lente et met l'accent sur la dépendance à la latence. Contrairement à crypter chaque le nouveau bloc (d’une longueur de 64 octets) dépend de tous les blocs précédents. En conséquence, une hypothétique « économiseur de mémoire » devrait augmenter sa vitesse de calcul de manière exponentielle. Notre algorithme nécessite environ 2 Mo par instance pour les raisons suivantes : 1. Il s'intègre dans le cache L3 (par cœur) des processeurs modernes, qui devraient devenir courants dans quelques années ; 2. Un mégaoctet de mémoire interne est une taille presque inacceptable pour un pipeline ASIC moderne ; 3. Les GPU peuvent exécuter des centaines d’instances simultanées, mais ils sont limités par d’autres moyens : La mémoire GDDR5 est plus lente que le cache CPU L3 et remarquable par sa bande passante, non vitesse d'accès aléatoire. 4. Une expansion significative du bloc-notes nécessiterait une augmentation du nombre d'itérations, ce qui en le tour implique une augmentation globale du temps. Les appels « lourds » dans un réseau p2p sans confiance peuvent conduire à de graves vulnérabilités, car les nœuds sont obligés de vérifier le proof-of-work de chaque nouveau bloc. Si un nœud passe beaucoup de temps sur chaque évaluation hash, il peut facilement être DDoSed par un flot de faux objets avec des données de travail arbitraires (valeurs nonce). 12 a proposé la solution la plus efficace : « Hokkaido ». A notre connaissance le dernier travail basé sur l'idée de recherches pseudo-aléatoires dans un grand tableau est l'algorithme dit « scrypt » de C. Percival [32]. Contrairement aux fonctions précédentes, il se concentre sur dérivation de clé, et non les systèmes proof-of-work. Malgré ce fait, scrypt peut servir notre objectif : cela fonctionne bien comme fonction de tarification dans le problème de conversion partiel hash tel que SHA-256 dans Bitcoin. À présent, scrypt a déjà été appliqué dans Litecoin [14] et dans quelques autres forks Bitcoin. Cependant, sa mise en œuvre n'est pas vraiment liée à la mémoire : le rapport « temps d'accès mémoire / global » time » n’est pas assez grand car chaque instance n’utilise que 128 Ko. Cela permet aux mineurs GPU être environ 10 fois plus efficace et continue de laisser la possibilité de créer relativement des appareils miniers bon marché mais très efficaces. De plus, la construction du scrypt elle-même permet un compromis linéaire entre la taille de la mémoire et Vitesse du processeur due au fait que chaque bloc du bloc-notes est dérivé uniquement du précédent. Par exemple, vous pouvez stocker un bloc sur deux et recalculer les autres de manière paresseuse, c'est-à-dire uniquement quand cela devient nécessaire. Les indices pseudo-aléatoires sont supposés être uniformément distribués, donc la valeur attendue des recalculs des blocs supplémentaires est 1 \(2 \cdot N\), oùN est le nombre d'itérations. Le temps de calcul global augmente de moins de moitié car il y a aussi opérations indépendantes du temps (temps constant) telles que la préparation du bloc-notes et le hashing sur chaque itération. Économiser 2/3 des coûts de mémoire 1 \(3 \cdot N\) + 1 3 \(\cdot\) \(2 \cdot N\) = N recalculs supplémentaires ; 9/10 résultats en 1 \(10 \cdot N\) + . . . + 1 \(10 \cdot 9 \cdot N\) = 4,5N. Il est facile de montrer que stocker seulement 1 s de tous les blocs augmente le temps moins que d'un facteur s−1 2 . Cela implique à son tour qu'une machine dotée d'un processeur 200 fois plus rapide que les puces modernes, elles ne peuvent stocker que 320 octets du bloc-notes. 5.2 L'algorithme proposé Nous proposons un nouvel algorithme lié à la mémoire pour la fonction de tarification proof-of-work. Cela repose sur accès aléatoire à une mémoire lente et met l'accent sur la dépendance à la latence. Contrairement à crypter chaque le nouveau bloc (d’une longueur de 64 octets) dépend de tous les blocs précédents. En conséquence, une hypothétique « économiseur de mémoire » devrait augmenter sa vitesse de calcul de manière exponentielle. Notre algorithme nécessite environ 2 Mo par instance pour les raisons suivantes : 1. Il s'intègre dans le cache L3 (par cœur) des processeurs modernes, qui devraient devenir courants dans quelques années ; 2. Un mégaoctet de mémoire interne est une taille presque inacceptable pour un pipeline ASIC moderne ; 3. Les GPU peuvent exécuter des centaines d’instances simultanées, mais ils sont limités par d’autres moyens : La mémoire GDDR5 est plus lente que le cache CPU L3 et remarquable par sa bande passante, non vitesse d'accès aléatoire. 4. Une expansion significative du bloc-notes nécessiterait une augmentation du nombre d'itérations, ce qui en le tour implique une augmentation globale du temps. Les appels « lourds » dans un réseau p2p sans confiance peuvent conduire à vulnérabilités graves, car les nœuds sont obligés de vérifier le proof-of-work de chaque nouveau bloc. Si un nœud passe beaucoup de temps sur chaque évaluation hash, il peut facilement être DDoSed par un flot de faux objets avec des données de travail arbitraires (valeurs nonce). 12 22 Peu importe, c’est une pièce secrète ? Où est l'algorithme ? Tout ce que je vois, c'est une publicité. C’est là que Cryptonote, si son algorithme PoW en vaut la peine, brillera vraiment. Ce n'est pas vraiment SHA-256, ce n'est pas vraiment un scrypt. C’est nouveau, lié à la mémoire et non récursif.

6 Autres avantages 6.1 Émission douce La limite supérieure du montant total des pièces numériques CryptoNote est : MSupply = 264 −1 unités atomiques. Il s'agit d'une restriction naturelle basée uniquement sur les limites de mise en œuvre, et non sur l'intuition. comme « Les pièces N devraient suffire à tout le monde ». Pour garantir la fluidité du processus d'émission, nous utilisons la formule suivante pour le bloc récompenses : BaseReward = (MSupply −A) ≫18, où A est le nombre de pièces précédemment générées. 6.2 Paramètres réglables 6.2.1 Difficulté CryptoNote contient un algorithme de ciblage qui modifie la difficulté de chaque bloc. Ceci diminue le temps de réaction du système lorsque le réseau hashrate croît ou diminue intensément, en préservant un taux de bloc constant. La méthode originale Bitcoin calcule la relation entre le réel et cibler l'intervalle de temps entre les derniers blocs de 2016 et l'utilise comme multiplicateur pour le courant difficulté. Cela ne convient évidemment pas aux recalculs rapides (en raison de la grande inertie) et entraîne des oscillations. L'idée générale derrière notre algorithme est de résumer tout le travail effectué par les nœuds et divisez-le par le temps qu'ils ont passé. La mesure du travail est constituée des valeurs de difficulté correspondantes dans chaque bloc. Mais en raison d'horodatages inexacts et peu fiables, nous ne pouvons pas déterminer l'heure exacte. intervalle de temps entre les blocs. Un utilisateur peut décaler son horodatage dans le futur et la prochaine fois les intervalles peuvent être incroyablement petits, voire négatifs. Vraisemblablement, il y aura peu d'incidents de ce type, nous pouvons donc simplement trier les horodatages et supprimer les valeurs aberrantes (c'est-à-dire 20 %). La gamme de les valeurs de repos sont le temps qui a été passé pour 80% des blocs correspondants. 6.2.2 Limites de taille Les utilisateurs paient pour stocker le blockchain et ont le droit de voter pour sa taille. Chaque mineur traite du compromis entre l'équilibrage des coûts et le profit des frais et fixe ses propres « soft-limit » pour créer des blocs. La règle de base concernant la taille maximale des blocs est également nécessaire pour empêchant le blockchain d'être inondé de fausses transactions, cependant cette valeur devrait ne pas être codé en dur. Soit MN la valeur médiane des N dernières tailles de blocs. Ensuite, la « limite stricte » pour la taille de blocs accepteurs est de \(2 \cdot M_N\). Il évite les ballonnements au blockchain tout en permettant à la limite de grandir lentement avec le temps si nécessaire. La taille des transactions n’a pas besoin d’être limitée explicitement. Il est délimité par la taille d’un bloc ; et si quelqu'un veut créer une énorme transaction avec des centaines d'entrées/sorties (ou avec le degré élevé d'ambiguïté des signatures en anneau), il peut le faire en payant des frais suffisants. 6.2.3 Pénalité de taille excédentaire Un mineur a toujours la possibilité de remplir un bloc de ses propres transactions sans frais jusqu'à son maximum. taille 2 \(\cdot\) Mo. Même si seule la majorité des mineurs peuvent modifier la valeur médiane, il existe toujours un 13 6 Autres avantages 6.1 Émission douce La limite supérieure du montant total des pièces numériques CryptoNote est : MSupply = 264 −1 unités atomiques. Il s'agit d'une restriction naturelle basée uniquement sur les limites de mise en œuvre, et non sur l'intuition. comme « Les pièces N devraient suffire à tout le monde ». Pour garantir la fluidité du processus d'émission, nous utilisons la formule suivante pour le bloc récompenses : BaseReward = (MSupply −A) ≫18, où A est le nombre de pièces précédemment générées. 6.2 Paramètres réglables 6.2.1 Difficulté CryptoNote contient un algorithme de ciblage qui modifie la difficulté de chaque bloc. Ceci diminue le temps de réaction du système lorsque le réseau hashrate croît ou diminue intensément, en préservant un taux de bloc constant. La méthode originale Bitcoin calcule la relation entre le réel et cibler l'intervalle de temps entre les derniers blocs de 2016 et l'utilise comme multiplicateur pour le courant difficulté. Cela ne convient évidemment pas aux recalculs rapides (en raison de la grande inertie) et entraîne des oscillations. L'idée générale derrière notre algorithme est de résumer tout le travail effectué par les nœuds et divisez-le par le temps qu'ils ont passé. La mesure du travail est constituée des valeurs de difficulté correspondantes dans chaque bloc. Mais en raison d'horodatages inexacts et peu fiables, nous ne pouvons pas déterminer l'heure exacte. intervalle de temps entre les blocs. Un utilisateur peut décaler son horodatage dans le futur et la prochaine fois les intervalles peuvent être incroyablement petits, voire négatifs. Vraisemblablement, il y aura peu d'incidents de ce type, nous pouvons donc simplement trier les horodatages et supprimer les valeurs aberrantes (c'est-à-dire 20 %). La gamme de les valeurs de repos sont le temps qui a été passé pour 80% des blocs correspondants. 6.2.2 Limites de taille Les utilisateurs paient pour stocker le blockchain et ont le droit de voter pour sa taille. Chaque mineur traite du compromis entre l’équilibrage dese coûte et profite des honoraires et fixe les siens « soft-limit » pour créer des blocs. La règle de base concernant la taille maximale des blocs est également nécessaire pour empêchant le blockchain d'être inondé de fausses transactions, cependant cette valeur devrait ne pas être codé en dur. Soit MN la valeur médiane des N dernières tailles de blocs. Ensuite, la « limite stricte » pour la taille de blocs accepteurs est de \(2 \cdot M_N\). Il évite les ballonnements au blockchain tout en permettant à la limite de grandir lentement avec le temps si nécessaire. La taille des transactions n’a pas besoin d’être limitée explicitement. Il est délimité par la taille d’un bloc ; et si quelqu'un veut créer une énorme transaction avec des centaines d'entrées/sorties (ou avec le degré élevé d'ambiguïté des signatures en anneau), il peut le faire en payant des frais suffisants. 6.2.3 Pénalité de taille excédentaire Un mineur a toujours la possibilité de remplir un bloc de ses propres transactions sans frais jusqu'à son maximum. taille 2 \(\cdot\) Mo. Même si seule la majorité des mineurs peuvent modifier la valeur médiane, il existe toujours un 13 23 Unités atomiques. J'aime ça. Est-ce l'équivalent des Satoshis ? Si tel est le cas, cela signifie qu’il y aura 185 milliards de cryptonotes. Je sais que cela doit éventuellement être modifié en quelques pages, ou peut-être y a-t-il une faute de frappe ? Si la récompense de base est « toutes les pièces restantes », alors un seul bloc suffit pour obtenir toutes les pièces. Instaminer. D'un autre côté, si l'on suppose que cela est proportionnel d'une manière ou d'une autre à la différence de temps entre maintenant et une date de fin de production de pièces de monnaie ? Ce serait avoir du sens. De plus, dans mon monde, deux signes plus grands que comme celui-ci signifient « bien plus grand que ». L'auteur est-il peut-être vouloir dire autre chose ? Si l'ajustement à la difficulté se produit à chaque bloc, alors un attaquant pourrait disposer d'une très grande ferme de ressources. les machines exploitent et s'éteignent à des intervalles de temps soigneusement choisis. Cela pourrait provoquer une explosion chaotique (ou un crash à zéro) en difficulté, si les formules d’ajustement de la difficulté ne sont pas correctement amorties. Sans doute que la méthode de Bitcoin est inadaptée aux recalculs rapides, mais la notion d'inertie dans ces systèmes devraient être prouvés et non tenus pour acquis. De plus, les oscillations Les difficultés de réseau ne constituent pas nécessairement un problème, à moins qu’elles n’entraînent des oscillations de paramètres ostensibles. l'approvisionnement en pièces de monnaie - et le fait d'avoir une difficulté évoluant très rapidement pourrait provoquer une « sur-correction ». Le temps passé, surtout sur un laps de temps court comme quelques minutes, sera proportionnel au « total nombre de blocs créés sur le réseau." La constante de proportionnalité va elle-même croître au fil du temps, probablement de façon exponentielle si le CN décolle. Il serait peut-être préférable d'ajuster simplement la difficulté pour conserver le "total des blocs créés sur le terrain". réseau depuis que le dernier bloc a été ajouté à la chaîne principale" dans une certaine valeur constante, ou avec variation limitée ou quelque chose comme ça. Si un algorithme adaptatif informatique facile à mettre en œuvre peut être déterminé, cela semblerait résoudre le problème. Mais ensuite, si nous utilisions cette méthode, quelqu'un possédant une grande ferme minière pourrait fermer sa ferme. pendant quelques heures, puis rallumez-le. Pendant les premiers blocs, cette ferme fera banque. Donc effectivement, cette méthode soulèverait un point intéressant : le minage devient (en moyenne) un perdre la partie sans retour sur investissement, d’autant plus que de plus en plus de personnes se connectent au réseau. Si la difficulté minière réseau très étroitement suivi hashrate, je doute d'une manière ou d'une autre que les gens exploiteraient autant qu'eux fais actuellement. Ou, d’un autre côté, au lieu de maintenir leurs fermes minières en activité 24 heures sur 24 et 7 jours sur 7, ils peuvent les transformer en allumé pendant 6 heures, éteint pendant 2, allumé pendant 6 heures, éteint pendant 2, ou quelque chose comme ça. Passez simplement à une autre pièce pendant quelques heures, attendez que les difficultés disparaissent, puis remontez à bord pour gagner ces quelques extras. des blocs de rentabilité à mesure que le réseau s’adapte. Et tu sais quoi ? C'est en fait probablement l'un des meilleurs scénarios miniers auxquels j'ai pensé... Cela pourrait être circulaire, mais si le temps de création du bloc est en moyenne d'environ une minute, pouvons-nous simplement utiliser le nombre de blocs comme indicateur du « temps passé ? »

6 Autres avantages 6.1 Émission douce La limite supérieure du montant total des pièces numériques CryptoNote est : MSupply = 264 −1 unités atomiques. Il s'agit d'une restriction naturelle basée uniquement sur les limites de mise en œuvre, et non sur l'intuition. comme « Les pièces N devraient suffire à tout le monde ». Pour garantir la fluidité du processus d'émission, nous utilisons la formule suivante pour le bloc récompenses : BaseReward = (MSupply −A) ≫18, où A est le nombre de pièces précédemment générées. 6.2 Paramètres réglables 6.2.1 Difficulté CryptoNote contient un algorithme de ciblage qui modifie la difficulté de chaque bloc. Ceci diminue le temps de réaction du système lorsque le réseau hashrate croît ou diminue intensément, en préservant un taux de bloc constant. La méthode originale Bitcoin calcule la relation entre le réel et cibler l'intervalle de temps entre les derniers blocs de 2016 et l'utilise comme multiplicateur pour le courant difficulté. Cela ne convient évidemment pas aux recalculs rapides (en raison de la grande inertie) et entraîne des oscillations. L'idée générale derrière notre algorithme est de résumer tout le travail effectué par les nœuds et divisez-le par le temps qu'ils ont passé. La mesure du travail est constituée des valeurs de difficulté correspondantes dans chaque bloc. Mais en raison d'horodatages inexacts et peu fiables, nous ne pouvons pas déterminer l'heure exacte. intervalle de temps entre les blocs. Un utilisateur peut décaler son horodatage dans le futur et la prochaine fois les intervalles peuvent être incroyablement petits, voire négatifs. Vraisemblablement, il y aura peu d'incidents de ce type, nous pouvons donc simplement trier les horodatages et supprimer les valeurs aberrantes (c'est-à-dire 20 %). La gamme de les valeurs de repos sont le temps qui a été passé pour 80% des blocs correspondants. 6.2.2 Limites de taille Les utilisateurs paient pour stocker le blockchain et ont le droit de voter pour sa taille. Chaque mineur traite du compromis entre l'équilibrage des coûts et le profit des frais et fixe ses propres « soft-limit » pour créer des blocs. La règle de base concernant la taille maximale des blocs est également nécessaire pour empêchant le blockchain d'être inondé de fausses transactions, cependant cette valeur devrait ne pas être codé en dur. Soit MN la valeur médiane des N dernières tailles de blocs. Ensuite, la « limite stricte » pour la taille de blocs accepteurs est de \(2 \cdot M_N\). Il évite les ballonnements au blockchain tout en permettant à la limite de grandir lentement avec le temps si nécessaire. La taille des transactions n’a pas besoin d’être limitée explicitement. Il est délimité par la taille d’un bloc ; et si quelqu'un veut créer une énorme transaction avec des centaines d'entrées/sorties (ou avec le degré élevé d'ambiguïté des signatures en anneau), il peut le faire en payant des frais suffisants. 6.2.3 Pénalité de taille excédentaire Un mineur a toujours la possibilité de remplir un bloc de ses propres transactions sans frais jusqu'à son maximum. taille 2 \(\cdot\) Mo. Même si seule la majorité des mineurs peuvent modifier la valeur médiane, il existe toujours un 13 6 Autres avantages 6.1 Émission douce La limite supérieure du montant total des pièces numériques CryptoNote est : MSupply = 264 −1 unités atomiques. Il s'agit d'une restriction naturelle basée uniquement sur les limites de mise en œuvre, et non sur l'intuition. comme « Les pièces N devraient suffire à tout le monde ». Pour garantir la fluidité du processus d'émission, nous utilisons la formule suivante pour le bloc récompenses : BaseReward = (MSupply −A) ≫18, où A est le nombre de pièces précédemment générées. 6.2 Paramètres réglables 6.2.1 Difficulté CryptoNote contient un algorithme de ciblage qui modifie la difficulté de chaque bloc. Ceci diminue le temps de réaction du système lorsque le réseau hashrate croît ou diminue intensément, en préservant un taux de bloc constant. La méthode originale Bitcoin calcule la relation entre le réel et cibler l'intervalle de temps entre les derniers blocs de 2016 et l'utilise comme multiplicateur pour le courant difficulté. Cela ne convient évidemment pas aux recalculs rapides (en raison de la grande inertie) et entraîne des oscillations. L'idée générale derrière notre algorithme est de résumer tout le travail effectué par les nœuds et divisez-le par le temps qu'ils ont passé. La mesure du travail est constituée des valeurs de difficulté correspondantes dans chaque bloc. Mais en raison d'horodatages inexacts et peu fiables, nous ne pouvons pas déterminer l'heure exacte. intervalle de temps entre les blocs. Un utilisateur peut décaler son horodatage dans le futur et la prochaine fois les intervalles peuvent être incroyablement petits, voire négatifs. Vraisemblablement, il y aura peu d'incidents de ce type, nous pouvons donc simplement trier les horodatages et supprimer les valeurs aberrantes (c'est-à-dire 20 %). La gamme de les valeurs de repos sont le temps qui a été passé pour 80% des blocs correspondants. 6.2.2 Limites de taille Les utilisateurs paient pour stocker le blockchain et ont le droit de voter pour sa taille. Chaque mineur traite du compromis entre l’équilibrage dese coûte et profite des honoraires et fixe les siens « soft-limit » pour créer des blocs. La règle de base concernant la taille maximale des blocs est également nécessaire pour empêchant le blockchain d'être inondé de fausses transactions, cependant cette valeur devrait ne pas être codé en dur. Soit MN la valeur médiane des N dernières tailles de blocs. Ensuite, la « limite stricte » pour la taille de blocs accepteurs est de \(2 \cdot M_N\). Il évite les ballonnements au blockchain tout en permettant à la limite de grandir lentement avec le temps si nécessaire. La taille des transactions n’a pas besoin d’être limitée explicitement. Il est délimité par la taille d’un bloc ; et si quelqu'un veut créer une énorme transaction avec des centaines d'entrées/sorties (ou avec le degré élevé d'ambiguïté des signatures en anneau), il peut le faire en payant des frais suffisants. 6.2.3 Pénalité de taille excédentaire Un mineur a toujours la possibilité de remplir un bloc de ses propres transactions sans frais jusqu'à son maximum. taille 2 \(\cdot\) Mo. Même si seule la majorité des mineurs peuvent modifier la valeur médiane, il existe toujours un 13 24 D'accord, nous avons donc un blockchain, et chaque bloc a des horodatages EN PLUS du simple fait d'être commandé. Cela a clairement été inséré simplement pour résoudre des difficultés d'ajustement, car les horodatages sont très peu fiable, comme mentionné. Sommes-nous autorisés à avoir des horodatages contradictoires dans la chaîne ? Si le bloc A précède le bloc B dans la chaîne et que tout est cohérent en termes de finances, mais le bloc A semble avoir été créé après le bloc B ? Parce que, peut-être, quelqu'un possédait une grande partie du réseau ? Est-ce que ça va ? Probablement parce que les finances ne sont pas en mauvais état. D'accord, donc je déteste cet arbitraire "seulement 80 % des blocages sont légitimes pour le blockchain principal" approche. C'était destiné à empêcher les menteurs de modifier leurs horodatages ? Mais maintenant, il ajoute une incitation pour tout le monde à mentir sur son horodatage et à simplement choisir la médiane. Veuillez définir. Cela signifie "pour ce bloc, n'inclure que les transactions qui incluent des frais supérieurs que p%, de préférence avec des frais supérieurs à 2p%" ou quelque chose comme ça ? Qu’entendent-ils par faux ? Si la transaction est conforme à l'historique du blockchain, et la transaction comprend des frais qui satisfont les mineurs, n'est-ce pas suffisant ? Eh bien, non, pas nécessairement. \(S'\)il n'existe aucune taille de bloc maximale, rien ne peut retenir un utilisateur malveillant du simple téléchargement d'un bloc massif de transactions sur lui-même en une seule fois juste pour ralentir le réseau. Une règle fondamentale concernant la taille maximale des blocs empêche les gens de mettre d'énormes quantités de déchets données sur le blockchain d'un seul coup juste pour ralentir les choses. Mais une telle règle doit certainement être adaptatif : pendant la période de Noël, par exemple, nous pourrions nous attendre à une augmentation du trafic, et la taille du bloc devient très grande, et immédiatement après, pour que la taille du bloc diminue par la suite encore une fois. Nous avons donc besoin soit a) d’une sorte de plafond adaptatif, soit b) d’un plafond suffisamment grand pour que 99 % des des pics de Noël raisonnables ne brisent pas le plafond. Bien sûr, ce deuxième est impossible à estimation – qui sait si une monnaie fera son chemin ? Mieux vaut le rendre adaptatif et ne pas s'inquiéter à ce sujet. Mais nous sommes alors confrontés à un problème de théorie du contrôle : comment rendre cela adaptatif sans vulnérabilité aux attaques ou oscillations sauvages et folles ? Notez qu'une méthode adaptative n'empêche pas les utilisateurs malveillants d'accumuler de petites sommes de données indésirables au fil du temps sur le blockchain pour provoquer un gonflement à long terme. C'est un problème différent dans l’ensemble et avec lequel les pièces cryptonotes ont de sérieux problèmes.

6 Autres avantages 6.1 Émission douce La limite supérieure du montant total des pièces numériques CryptoNote est : MSupply = 264 −1 unités atomiques. Il s'agit d'une restriction naturelle basée uniquement sur les limites de mise en œuvre, et non sur l'intuition. comme « Les pièces N devraient suffire à tout le monde ». Pour garantir la fluidité du processus d'émission, nous utilisons la formule suivante pour le bloc récompenses : BaseReward = (MSupply −A) ≫18, où A est le nombre de pièces précédemment générées. 6.2 Paramètres réglables 6.2.1 Difficulté CryptoNote contient un algorithme de ciblage qui modifie la difficulté de chaque bloc. Ceci diminue le temps de réaction du système lorsque le réseau hashrate croît ou diminue intensément, en préservant un taux de bloc constant. La méthode originale Bitcoin calcule la relation entre le réel et cibler l'intervalle de temps entre les derniers blocs de 2016 et l'utilise comme multiplicateur pour le courant difficulté. Cela ne convient évidemment pas aux recalculs rapides (en raison de la grande inertie) et entraîne des oscillations. L'idée générale derrière notre algorithme est de résumer tout le travail effectué par les nœuds et divisez-le par le temps qu'ils ont passé. La mesure du travail est constituée des valeurs de difficulté correspondantes dans chaque bloc. Mais en raison d'horodatages inexacts et peu fiables, nous ne pouvons pas déterminer l'heure exacte. intervalle de temps entre les blocs. Un utilisateur peut décaler son horodatage dans le futur et la prochaine fois les intervalles peuvent être incroyablement petits, voire négatifs. Vraisemblablement, il y aura peu d'incidents de ce type, nous pouvons donc simplement trier les horodatages et supprimer les valeurs aberrantes (c'est-à-dire 20 %). La gamme de les valeurs de repos sont le temps qui a été passé pour 80% des blocs correspondants. 6.2.2 Limites de taille Les utilisateurs paient pour stocker le blockchain et ont le droit de voter pour sa taille. Chaque mineur traite du compromis entre l'équilibrage des coûts et le profit des frais et fixe ses propres « soft-limit » pour créer des blocs. La règle de base concernant la taille maximale des blocs est également nécessaire pour empêchant le blockchain d'être inondé de fausses transactions, cependant cette valeur devrait ne pas être codé en dur. Soit MN la valeur médiane des N dernières tailles de blocs. Ensuite, la « limite stricte » pour la taille de blocs accepteurs est de \(2 \cdot M_N\). Il évite les ballonnements au blockchain tout en permettant à la limite de grandir lentement avec le temps si nécessaire. La taille des transactions n’a pas besoin d’être limitée explicitement. Il est délimité par la taille d’un bloc ; et si quelqu'un veut créer une énorme transaction avec des centaines d'entrées/sorties (ou avec le degré élevé d'ambiguïté des signatures en anneau), il peut le faire en payant des frais suffisants. 6.2.3 Pénalité de taille excédentaire Un mineur a toujours la possibilité de remplir un bloc de ses propres transactions sans frais jusqu'à son maximum. taille 2 \(\cdot\) Mo. Même si seule la majorité des mineurs peuvent modifier la valeur médiane, il existe toujours un 13 6 Autres avantages 6.1 Émission douce La limite supérieure du montant total des pièces numériques CryptoNote est : MSupply = 264 −1 unités atomiques. Il s'agit d'une restriction naturelle basée uniquement sur les limites de mise en œuvre, et non sur l'intuition. comme « Les pièces N devraient suffire à tout le monde ». Pour garantir la fluidité du processus d'émission, nous utilisons la formule suivante pour le bloc récompenses : BaseReward = (MSupply −A) ≫18, où A est le nombre de pièces précédemment générées. 6.2 Paramètres réglables 6.2.1 Difficulté CryptoNote contient un algorithme de ciblage qui modifie la difficulté de chaque bloc. Ceci diminue le temps de réaction du système lorsque le réseau hashrate augmente ou diminue intensément, en préservant un taux de bloc constant. La méthode originale Bitcoin calcule la relation entre le réel et cibler l'intervalle de temps entre les derniers blocs de 2016 et l'utilise comme multiplicateur pour le courant difficulté. Cela ne convient évidemment pas aux recalculs rapides (en raison de la grande inertie) et entraîne des oscillations. L'idée générale derrière notre algorithme est de résumer tout le travail effectué par les nœuds et divisez-le par le temps qu'ils ont passé. La mesure du travail est constituée des valeurs de difficulté correspondantes dans chaque bloc. Mais en raison d'horodatages inexacts et peu fiables, nous ne pouvons pas déterminer l'heure exacte. intervalle de temps entre les blocs. Un utilisateur peut décaler son horodatage dans le futur et la prochaine fois les intervalles peuvent être incroyablement petits, voire négatifs. Vraisemblablement, il y aura peu d'incidents de ce type, nous pouvons donc simplement trier les horodatages et supprimer les valeurs aberrantes (c'est-à-dire 20 %). La gamme de les valeurs de repos sont le temps qui a été passé pour 80% des blocs correspondants. 6.2.2 Limites de taille Les utilisateurs paient pour stocker le blockchain et ont le droit de voter pour sa taille. Chaque mineur traite du compromis entre l’équilibrage dese coûte et profite des honoraires et fixe les siens « soft-limit » pour créer des blocs. La règle de base concernant la taille maximale des blocs est également nécessaire pour empêchant le blockchain d'être inondé de fausses transactions, cependant cette valeur devrait ne pas être codé en dur. Soit MN la valeur médiane des N dernières tailles de blocs. Ensuite, la « limite stricte » pour la taille de blocs accepteurs est de \(2 \cdot M_N\). Il évite les ballonnements au blockchain tout en permettant à la limite de grandir lentement avec le temps si nécessaire. La taille des transactions n’a pas besoin d’être limitée explicitement. Il est délimité par la taille d’un bloc ; et si quelqu'un veut créer une énorme transaction avec des centaines d'entrées/sorties (ou avec le degré élevé d'ambiguïté des signatures en anneau), il peut le faire en payant des frais suffisants. 6.2.3 Pénalité de taille excédentaire Un mineur a toujours la possibilité de remplir un bloc de ses propres transactions sans frais jusqu'à son maximum. taille 2 \(\cdot\) Mo. Même si seule la majorité des mineurs peuvent modifier la valeur médiane, il existe toujours un 13 25 En redimensionnant le temps de sorte qu'une unité de temps corresponde à N blocs, la taille moyenne des blocs pourrait encore, en théorie, croître de manière exponentielle proportionnellement à 2 t . En revanche, un plafond plus général sur le bloc suivant serait M_nf(M_n) pour une fonction f. Quelles propriétés de f seraient choisissons-nous afin de garantir une certaine « croissance raisonnable » de la taille des blocs ? La progression de la taille des blocs (après le temps de redimensionnement) ressemblerait à ceci : M_n f(M_n)M_n f(f(M_n)M_n)f(M_n)M_n f(f(f(M_n)M_n)f(M_n)M_n)f(f(M_n)M_n)f( ... Et le but ici est de choisir f tel que cette suite ne croisse pas plus vite que, disons, linéairement, ou peut-être même comme Log(t). Bien sûr, si f(M_n) = a pour une constante a, cette séquence est en fait M_n aM_n aˆ2M_n aˆ3M_n ... Et, bien sûr, la seule façon de limiter cela à une croissance au plus linéaire est de choisir a=1. C’est évidemment irréalisable. Cela ne permet pas du tout la croissance. Si, par contre, f(M_n) est une fonction non constante, alors la situation est bien plus compliqué et peut permettre une solution élégante. Je vais y réfléchir pendant un moment. Ces frais devront être suffisamment élevés pour réduire la pénalité de taille excédentaire de la section suivante. Pourquoi un utilisateur général est-il supposé être un homme, hein ? Hein ?

possibilité de gonfler le blockchain et de produire une charge supplémentaire sur les nœuds. Décourager participants malveillants de créer de gros blocs, nous introduisons une fonction de pénalité : NouvelleRécompense = Récompense de Base \(\cdot\) Taille Noir MN −1 2 Cette règle s'applique uniquement lorsque BlkSize est supérieure à la taille minimale du bloc libre qui devrait être proche du maximum (10 Ko, \(M_N \cdot 110\%\)). Les mineurs sont autorisés à créer des blocs de « taille habituelle » et même dépassez-le avec profit lorsque les frais globaux dépassent la pénalité. Mais il est peu probable que les frais augmentent quadratiquement différent de la valeur de la pénalité, il y aura donc un équilibre. 6.3 Scripts de transactions CryptoNote possède un sous-système de script très minimaliste. Un expéditeur spécifie une expression Φ = f (x1, x2, . . . , xn), où n est le nombre de clés publiques de destination {Pi}n je = 1. Seulement cinq binaires les opérateurs sont pris en charge : min, max, sum, mul et cmp. Lorsque le destinataire dépense ce paiement, il produit \(0 \leq k \leq n\) signatures et les transmet à l'entrée de la transaction. Le processus de vérification évalue simplement Φ avec xi = 1 pour vérifier une signature valide pour la clé publique Pi, et xi = 0. Un vérificateur accepte la preuve si > 0. Malgré sa simplicité, cette approche couvre tous les cas possibles : • Signature multi-/seuil. Pour la multi-signature « M-out-of-N » de style Bitcoin (c.-à-d. le récepteur doit fournir au moins \(0 \leq M \leq N\) signatures valides) Φ = x1+x2+. . .+xN \(\geq M\) (pour plus de clarté, nous utilisons une notation algébrique commune). La signature seuil pondérée (certaines clés peuvent être plus importantes que d’autres) pourrait être exprimée sous la forme Φ = \(w_1 \cdot x_1\) + \(w_2 \cdot x_2\) + . . . + \(w_N \cdot x_N\) \(\geq wM\). Et scénario où le passe-partout correspond à Φ = max(\(M \cdot x\), x1 + x2 + . . . + xN) \(\geq M\). Il est facile de montrer que tout cas complexe peut être exprimés avec ces opérateurs, c'est-à-dire qu'ils constituent la base. • Protection par mot de passe. La possession d'un mot de passe secret équivaut à la connaissance de une clé privée, dérivée de manière déterministe du mot de passe : k = KDF(s). Donc un récepteur peut prouver qu'il connaît le mot de passe en fournissant une autre signature sous la clé k. L'expéditeur ajoute simplement la clé publique correspondante à sa propre sortie. Notez que ceci La méthode est beaucoup plus sécurisée que le « puzzle de transaction » utilisé dans Bitcoin [13], où le le mot de passe est explicitement transmis dans les entrées. • Cas dégénérés. Φ = 1 signifie que n’importe qui peut dépenser de l’argent ; Φ = 0 marque le la production n’est pas dépensable pour toujours. Dans le cas où le script de sortie combiné aux clés publiques est trop volumineux pour un expéditeur, il peut utiliser un type de sortie spécial, qui indique que le destinataire mettra ces données dans son entrée alors que l'expéditeur n'en fournit qu'un hash. Cette approche est similaire au « pay-to-hash » de Bitcoin. fonctionnalité, mais au lieu d'ajouter de nouvelles commandes de script, nous traitons ce cas au niveau de la structure des données niveau. 7 Conclusion Nous avons étudié les défauts majeurs de Bitcoin et proposé quelques solutions possibles. Ces fonctionnalités avantageuses et notre développement continu font du nouveau système de paiement électronique CryptoNote un sérieux rival de Bitcoin, surclassant toutes ses fourchettes. 14 possibilité de gonfler le blockchain et de produire une charge supplémentaire sur les nœuds. Décourager participants malveillants de créer de gros blocs, nous introduisons une fonction de pénalité : NouvelleRécompense = Récompense de Base \(\cdot\) Taille Noir MN −1 2 Cette règle s'applique uniquement lorsque BlkSize est supérieure à la taille minimale du bloc libre qui devrait être proche du maximum (10 Ko, \(M_N \cdot 110\%\)). Les mineurs sont autorisés à créer des blocs de « taille habituelle » et même dépassez-le avec profit lorsque les frais globaux dépassent la pénalité. Mais il est peu probable que les frais augmentent quadratiquement différent de la valeur de la pénalité, il y aura donc un équilibre. 6.3 Scripts de transactions CryptoNote possède un sous-système de script très minimaliste. Un expéditeur spécifie une expression Φ = f (x1, x2, . . . , xn), où n est le nombre de clés publiques de destination {Pi}n je = 1. Seulement cinq binaires les opérateurs sont pris en charge : min, max, sum, mul et cmp. Lorsque le destinataire dépense ce paiement, il produit \(0 \leq k \leq n\) signatures et les transmet à l'entrée de la transaction. Le processus de vérification évalue simplement Φ avec xi = 1 pour vérifier une signature valide pour la clé publique Pi, et xi = 0. Un vérificateur accepte la preuve si > 0. Malgré sa simplicité, cette approche couvre tous les cas possibles : • Signature multi-/seuil. Pour la multi-signature « M-out-of-N » de style Bitcoin (c.-à-d. le récepteur doit fournir au moins \(0 \leq M \leq N\) signatures valides) Φ = x1+x2+. . .+xN \(\geq M\) (pour plus de clarté, nous utilisons une notation algébrique commune). La signature seuil pondérée (certaines clés peuvent être plus importantes que d’autres) pourrait être exprimée sous la forme Φ = \(w_1 \cdot x_1\) + \(w_2 \cdot x_2\) + . . . + \(w_N \cdot x_N\) \(\geq wM\). Et le scénarioio où le passe-partout correspond à Φ = max(\(M \cdot x\), x1 + x2 + . . . + xN) \(\geq M\). Il est facile de montrer que tout cas complexe peut être exprimés avec ces opérateurs, c'est-à-dire qu'ils constituent la base. • Protection par mot de passe. La possession d'un mot de passe secret équivaut à la connaissance de une clé privée, dérivée de manière déterministe du mot de passe : k = KDF(s). Donc un récepteur peut prouver qu'il connaît le mot de passe en fournissant une autre signature sous la clé k. L'expéditeur ajoute simplement la clé publique correspondante à sa propre sortie. Notez que ceci La méthode est beaucoup plus sécurisée que le « puzzle de transaction » utilisé dans Bitcoin [13], où le le mot de passe est explicitement transmis dans les entrées. • Cas dégénérés. Φ = 1 signifie que n’importe qui peut dépenser de l’argent ; Φ = 0 marque le la production n’est pas dépensable pour toujours. Dans le cas où le script de sortie combiné aux clés publiques est trop volumineux pour un expéditeur, il peut utiliser un type de sortie spécial, qui indique que le destinataire mettra ces données dans son entrée alors que l'expéditeur n'en fournit qu'un hash. Cette approche est similaire au « pay-to-hash » de Bitcoin. fonctionnalité, mais au lieu d'ajouter de nouvelles commandes de script, nous traitons ce cas au niveau de la structure des données niveau. 7 Conclusion Nous avons étudié les défauts majeurs de Bitcoin et proposé quelques solutions possibles. Ces fonctionnalités avantageuses et notre développement continu font du nouveau système de paiement électronique CryptoNote un sérieux rival de Bitcoin, surclassant toutes ses fourchettes. 14 26 Cela peut être inutile si nous pouvons trouver un moyen de limiter la taille des blocs au fil du temps... Cela ne peut pas non plus être correct. Ils ont juste réglé "NewReward" sur une parabole orientée vers le haut où la taille du bloc est la variable indépendante. Ainsi une nouvelle récompense explose à l’infini. Si, d'autre part main, la nouvelle récompense est Max(0,Base Reward(1-(BlkSize/Mn - 1)ˆ2)), puis la nouvelle récompense serait une parabole orientée vers le bas avec un pic à la taille du bloc = Mn et avec des intersections à Taille du bloc = 0 et Taille du bloc = 2Mn. Et c’est apparemment ce qu’ils tentent de décrire. Toutefois, cela ne

Análisis

Bitcoin network total computation speed chart showing hashrate and difficulty from 2012 to 2013

5 No es que importe demasiado que mil millones de personas en el mundo vivan con menos de un dólar al año. día y no tengo esperanzas de participar alguna vez en ningún tipo de red minera... pero una economía Un mundo impulsado por un sistema monetario p2p con una CPU, un voto sería, presumiblemente, más más justo que un sistema impulsado por la banca de reserva fraccionaria. Pero el protocolo de Cryptonote todavía requiere un 51% de usuarios honestos... ver, por ejemplo, Cryptonote foros donde uno de los desarrolladores, Pliskov, dice que un ataque tradicional de reemplazo de datos en elblockchain 51% aún puede funcionar. https://forum.cryptonote.org/viewtopic.php?f=2&t=198 Tenga en cuenta que realmente no necesita un 51% de usuarios honestos. Realmente no necesitas "ni un solo deshonesto facción con más del 51% del hashing poder de la red." Llamemos a este llamado problema del bitcoin "rigidez adaptativa". La solución de Cryptonote para la adaptación La rigidez es la flexibilidad adaptativa en los valores de los parámetros del protocolo. Si necesitas tamaños de bloque más grandes, No hay problema, la red se habrá estado ajustando suavemente todo el tiempo. Es decir, la forma en que Bitcoin ajusta la dificultad a lo largo del tiempo se puede replicar en todo nuestro protocolo parámetros de modo que no sea necesario obtener el consenso de la red para actualizar el protocolo. Superficialmente esto parece una buena idea, pero sin una cuidadosa previsión, una solución autoajustable El sistema puede volverse bastante impredecible y caótico. Analizaremos esto más adelante a medida que surgen oportunidades. Los "buenos" sistemas están en algún punto entre adaptativamente rígidos y adaptativamente flexibles, y tal vez incluso la rigidez misma, son adaptativas. Si realmente tuviéramos "una CPU, un voto", entonces colaboraríamos y desarrollaríamos grupos para llegar al 51 %. Sería más difícil. Esperaríamos que todas las CPU del mundo estuvieran minando, desde teléfonos a la CPU integrada de su Tesla mientras se está cargando. http://en.wikipedia.org/wiki/Pareto_principle Sostengo que el equilibrio de Pareto es algo inevitable. O el 20% del sistema poseerá el 80% de las CPU, o el 20% del sistema poseerá el 80% de los ASIC. Mi hipótesis es esto porque la distribución subyacente de la riqueza en la sociedad ya muestra la distribución de Pareto, y a medida que se unen nuevos mineros, se extraen de esa distribución subyacente. Sin embargo, sostengo que los protocolos con una CPU, un voto generarán un retorno de la inversión en el hardware. Bloquear La recompensa por nodo será más proporcional al número de nodos en la red porque La distribución del rendimiento entre los nodos será mucho más ajustada. Bitcoin, por otro Por otro lado, ve una recompensa de bloque (por nodo) más proporcional a la capacidad computacional de ese nodo. Es decir, sólo los "grandes" siguen en el juego de la minería. Por otra parte, Aunque el principio de Pareto seguirá en vigor, en un mundo de una CPU, un voto, todos participa en la seguridad de la red y obtiene algunos ingresos mineros. En un mundo ASIC, no tiene sentido conectar todos los XBox y teléfonos móviles a los míos. En un mundo de una CPU, un voto, es muy sensato en términos de recompensa minera. Como deliciosa consecuencia, Obtener el 51% de los votos es más difícil cuando hay cada vez más votos, lo que arroja un resultado encantador. beneficio para la seguridad de la red.hardware descrito anteriormente. Supongamos que la tasa global hash disminuye significativamente, incluso para Por un momento, ahora puede usar su poder minero para bifurcar la cadena y gastar dos veces. Como veremos Más adelante en este artículo, no es improbable que ocurra el evento descrito anteriormente. 2.3 Emisión irregular Bitcoin tiene una tasa de emisión predeterminada: cada bloque resuelto produce una cantidad fija de monedas. Aproximadamente cada cuatro años esta recompensa se reduce a la mitad. La intención original era crear una emisión suave limitada con caída exponencial, pero de hecho tenemos una emisión lineal por partes función cuyos puntos de interrupción pueden causar problemas a la infraestructura Bitcoin. Cuando ocurre el punto de interrupción, los mineros comienzan a recibir solo la mitad del valor de su anterior recompensa. La diferencia absoluta entre 12,5 y 6,25 BTC (proyectada para el año 2020) puede parece tolerable. Sin embargo, al examinar la caída de 50 a 25 BTC que tuvo lugar en noviembre 28 de 2012, se consideró inapropiado para un número significativo de miembros de la comunidad minera. Figura 1 muestra una disminución dramática en la tasa hash de la red a fines de noviembre, exactamente cuando se produjo la reducción a la mitad. Este evento podría haber sido el momento perfecto para el individuo malévolo. descrito en la sección de funciones proof-of-work para llevar a cabo un ataque de doble gasto [36]. Fig. 1. Bitcoin hashtabla de tasas (fuente: http://bitcoin.sipa.be) 2.4 Constantes codificadas Bitcoin tiene muchos límites codificados, algunos de los cuales son elementos naturales del diseño original (p. ej. frecuencia de bloqueo, cantidad máxima de oferta monetaria, número de confirmaciones) mientras que otros Parecen limitaciones artificiales. No son tanto los límites, sino la incapacidad de cambiar rápidamente 3 hardware descrito anteriormente. Supongamos que la tasa global hash disminuye significativamente, incluso para Por un momento, ahora puede usar su poder minero para bifurcar la cadena y gastar dos veces. Como veremos Más adelante en este artículo, no es improbable que ocurra el evento descrito anteriormente. 2.3 Emisión irregular Bitcoin tiene una tasa de emisión predeterminada: cada bloque resuelto produce una cantidad fija de monedas. Aproximadamente cada cuatro años esta recompensa se reduce a la mitad. La intención original era crear una emisión suave limitada con caída exponencial, pero de hecho tenemos una emisión lineal por partes función cuyos puntos de interrupción pueden causar problemas a la infraestructura Bitcoin. Cuando ocurre el punto de interrupción, los mineros comienzan a recibir solo la mitad del valor de su anterior recompensa. La diferencia absoluta entre 12,5 y 6,25 BTC (proyectada para el año 2020) puede parece tolerable. Sin embargo, al examinar la caída de 50 a 25 BTC que tuvo lugar en noviembre 28 de 2012, se consideró inapropiado para un número significativo de miembros de la comunidad minera. Figura 1 muestra una disminución dramática en la tasa hash de la red a fines de noviembre, exactamente cuando se produjo la reducción a la mitad. Este evento podría haber sido el momento perfecto para el individuo malévolo. descrito en la sección de función proof-of-work para llevar a cabo un ataque de doble gasto [36]. Fig. 1. Bitcoin hashtabla de tasas (fuente: http://bitcoin.sipa.be) 2.4 Constantes codificadas Bitcoin tiene muchos límites codificados, algunos de los cuales son elementos naturales del diseño original (p. ej. frecuencia de bloqueo, cantidad máxima de oferta monetaria, número de confirmaciones) mientras que otros Parecen limitaciones artificiales. No son tanto los límites, sino la incapacidad de cambiar rápidamente 3 6 Llamemos a esto como es, un ataque zombie. Analicemos qué tan continua puede ser la emisión. relacionado con una CPU, un voto en un escenario de ataque zombie. En un mundo de una CPU, un voto, cada teléfono celular y automóvil, siempre que estén inactivos, estarían minando. Recolectar montones de hardware barato para crear una granja minera sería muy, muy fácil, porque solo Casi todo tiene una CPU. Por otro lado, en ese punto, la cantidad de CPU Creo que lo necesario para lanzar un ataque del 51% sería bastante sorprendente. Además, Precisamente porque sería fácil recolectar hardware barato, podemos esperar razonablemente una Mucha gente empieza a acumular cualquier cosa con una CPU. La carrera armamentista en un mundo de una CPU, un voto es necesariamente más igualitario que en un mundo ASIC. Por lo tanto, una discontinuidad en la red. La seguridad debido a las tasas de emisión debería ser un problema MENOR en un mundo de una CPU, un voto. Sin embargo, quedan dos hechos: 1) la discontinuidad en la tasa de emisión puede conducir a un efecto de tartamudeo en la economía y la seguridad de la red, lo cual es malo, y 2) a pesar de que un 51% de ataques realizado por alguien que recolecta hardware barato todavía puede ocurrir en una CPU-una-votar mundo, Parece que debería ser más difícil. Presumiblemente, la salvaguardia contra esto es que todos los actores deshonestos intentarán esto. simultáneamente, y volvemos a la noción de seguridad anterior de Bitcoin: "no requerimos facción para controlar más del 51% de la red". El autor afirma aquí que un problema con bitcoin es la discontinuidad en la emisión de monedas. La tasa podría provocar caídas repentinas en la participación de la red y, por lo tanto, en la seguridad de la red. Así, Es preferible una tasa de emisión de monedas continua, diferenciable y suave. El autor no se equivoca necesariamente. Cualquier tipo de disminución repentina en la participación en la red puede conducir a tal problema, y si podemos eliminar una fuente del mismo, deberíamos hacerlo. Dicho esto, es posible que largos períodos de emisión de monedas "relativamente constantes" puntuados por cambios repentinos es el camino ideal a seguir desde el punto de vista económico. No soy economista. Entonces, tal vez nosotros Debemos decidir si vamos a cambiar la seguridad de la red por algo económico: ¿qué hay aquí? http://arxiv.org/abs/1402.2009ellos si es necesario que causa los principales inconvenientes. Desafortunadamente, es difícil predecir cuándo Es posible que sea necesario cambiar las constantes y reemplazarlas puede tener consecuencias terribles. Un buen ejemplo de un cambio de límite codificado que conduce a consecuencias desastrosas es el bloque límite de tamaño establecido en 250kb1. Este límite era suficiente para albergar unas 10.000 transacciones estándar. en A principios de 2013, este límite casi se había alcanzado y se llegó a un acuerdo para aumentar el límite. El cambio se implementó en la versión 0.8 de la billetera y terminó con una división de la cadena de 24 bloques. y un exitoso ataque de doble gasto [9]. Si bien el error no estaba en el protocolo Bitcoin, pero más bien, en el motor de la base de datos, podría haberse detectado fácilmente mediante una simple prueba de estrés si hubiera No hay límite de tamaño de bloque introducido artificialmente. Las constantes también actúan como una forma de punto de centralización. A pesar de la naturaleza de igual a igual de Bitcoin, una abrumadora mayoría de nodos utilizan el cliente de referencia oficial [10] desarrollado por un pequeño grupo de personas. Este grupo toma la decisión de implementar cambios al protocolo y la mayoría de la gente acepta estos cambios independientemente de su “corrección”. Algunas decisiones provocaron discusiones acaloradas e incluso llamados al boicot [11], lo que indica que la comunidad y el Los desarrolladores pueden no estar de acuerdo en algunos puntos importantes. Por tanto, parece lógico disponer de un protocolo con variables configurables por el usuario y autoajustables como una posible forma de evitar estos problemas. 2.5 Guiones voluminosos El sistema de secuencias de comandos en Bitcoin es una característica pesada y compleja. Potencialmente permite crear transacciones sofisticadas [12], pero algunas de sus funciones están deshabilitadas debido a problemas de seguridad y algunos ni siquiera se han utilizado [13]. El guión (incluidas las partes del remitente y del receptor) para la transacción más popular en Bitcoin se ve así: OP DUP OP HASH160 OP EQUALVERIFY OP CHECKSIG. El script tiene una longitud de 164 bytes y su único propósito es comprobar si el receptor posee la clave secreta requerida para verificar su firma.

Analyse

Bitcoin network total computation speed chart showing hashrate and difficulty from 2012 to 2013

5 Cela n’a pas vraiment d’importance lorsqu’un milliard de personnes dans le monde vivent avec moins d’un dollar par an. jour et n'avons aucun espoir de participer un jour à une quelconque sorte de réseau minier... mais un avenir économique un monde piloté par un système monétaire p2p avec un processeur, une voix serait, vraisemblablement, plus plus juste qu’un système piloté par des banques à réserves fractionnaires. Mais le protocole de Cryptonote exige tout de même 51% d'utilisateurs honnêtes... voir par exemple le Cryptonote forums où l'un des développeurs, Pliskov, affirme qu'une attaque traditionnelle de remplacement des données sur leblockchain 51 % peut toujours fonctionner. https://forum.cryptonote.org/viewtopic.php?f=2&t=198 Notez que vous n’avez pas vraiment besoin de 51 % d’utilisateurs honnêtes. Vous avez juste vraiment besoin de "pas un seul malhonnête faction détenant plus de 51 % de la puissance hashing du réseau." Appelons ce soi-disant problème du Bitcoin « rigidité adaptative ». La solution de Cryptonote pour l'adaptation la rigidité est la flexibilité adaptative dans les valeurs des paramètres du protocole. Si vous avez besoin de blocs de plus grande taille, pas de problème, le réseau s'est ajusté en douceur tout le temps. C'est à dire, la façon dont Bitcoin ajuste la difficulté au fil du temps peut être reproduite dans l'ensemble de notre protocole paramètres de sorte qu’il n’est pas nécessaire d’obtenir un consensus du réseau pour mettre à jour le protocole. En apparence, cela semble être une bonne idée, mais sans une réflexion approfondie, un système d'auto-ajustement le système peut devenir assez imprévisible et chaotique. Nous y reviendrons plus en détail plus tard, à mesure que des opportunités se présentent. Les « bons » systèmes se situent quelque part entre la rigidité adaptative et le système adaptatif. flexible, et peut-être même la rigidité elle-même est adaptative. Si nous avions vraiment « un processeur, une voix », alors collaborer et développer des pools pour atteindre 51 % serait plus difficile. Nous nous attendrions à ce que tous les processeurs du monde exploitent le minage, depuis les téléphones au processeur intégré de votre Tesla pendant la charge. http://en.wikipedia.org/wiki/Pareto_principle Je prétends que l’équilibre de Pareto est quelque peu inévitable. Soit 20% du système sera possédera 80 % des processeurs, ou 20 % du système détiendra 80 % des ASIC. J'émets cette hypothèse parce que la répartition sous-jacente de la richesse dans la société présente déjà la distribution de Pareto, et à mesure que de nouveaux mineurs rejoignent, ils sont tirés de cette distribution sous-jacente. Cependant, je soutiens que les protocoles avec un processeur, un vote entraîneront un retour sur investissement sur le matériel. Bloquer la récompense par nœud sera plus étroitement proportionnelle au nombre de nœuds dans le réseau car la répartition des performances entre les nœuds sera beaucoup plus serrée. Bitcoin, d'autre part d’autre part, voit une récompense de bloc (par nœud) plus proportionnelle à la capacité de calcul de celui-ci. nœud. Autrement dit, seuls les « grands » sont encore dans le jeu minier. D'un autre côté, même si le principe de Pareto sera toujours en jeu, dans un monde à un processeur, une voix, tout le monde participe à la sécurité du réseau et gagne un peu de revenus miniers. Dans un monde ASIC, il n’est pas judicieux d’installer chaque XBox et téléphone portable sur le mien. Dans un monde à un processeur, à une voix, c’est très judicieux en termes de récompense minière. En conséquence délicieuse, obtenir 51 % des suffrages est plus difficile quand il y a de plus en plus de voix, ce qui donne un joli résultat. avantage pour la sécurité du réseau.matériel décrit précédemment. Supposons que le taux global de hash diminue de manière significative, même pour un instant, il peut désormais utiliser son pouvoir minier pour bifurquer la chaîne et doubler ses dépenses. Comme nous le verrons plus loin dans cet article, il n’est pas improbable que l’événement décrit précédemment se produise. 2.3 Émission irrégulière Bitcoin a un taux d'émission prédéterminé : chaque bloc résolu produit une quantité fixe de pièces. Environ tous les quatre ans, cette récompense est réduite de moitié. L'intention initiale était de créer un émission douce limitée avec décroissance exponentielle, mais en fait nous avons une émission linéaire par morceaux fonction dont les points d'arrêt peuvent causer des problèmes à l'infrastructure Bitcoin. Lorsque le point d'arrêt survient, les mineurs commencent à recevoir seulement la moitié de la valeur de leur précédent récompense. La différence absolue entre 12,5 et 6,25 BTC (projetée pour l'année 2020) pourrait semblent tolérables. Cependant, en examinant la baisse de 50 à 25 BTC survenue en novembre 28 2012, semblait inapproprié pour un nombre important de membres de la communauté minière. Chiffre 1 montre une baisse spectaculaire du hashtarif du réseau à la fin du mois de novembre, exactement au moment où le la réduction de moitié a eu lieu. Cet événement aurait pu être le moment idéal pour l'individu malveillant décrit dans la section fonction proof-of-work pour mener une attaque à double dépense [36]. Figure 1. Tableau des taux Bitcoin hash (source : http://bitcoin.sipa.be) 2.4 Constantes codées en dur Bitcoin comporte de nombreuses limites codées en dur, dont certaines sont des éléments naturels de la conception originale (par ex. fréquence de blocage, montant maximum de la masse monétaire, nombre de confirmations) alors que d'autres semblent être des contraintes artificielles. Ce ne sont pas tant les limites que l'incapacité de changer rapidement 3 matériel décrit précédemment. Supposons que le taux global de hash diminue de manière significative, même pour un instant, il peut désormais utiliser son pouvoir minier pour bifurquer la chaîne et doubler ses dépenses. Comme nous le verrons plus loin dans cet article, il n’est pas improbable que l’événement décrit précédemment se produise. 2.3 Émission irrégulière Bitcoin a un taux d'émission prédéterminé : chaque bloc résolu produit une quantité fixe de pièces. Environ tous les quatre ans, cette récompense est réduite de moitié. L'intention initiale était de créer un émission douce limitée avec décroissance exponentielle, mais en fait nous avons une émission linéaire par morceaux fonction dont les points d'arrêt peuvent causer des problèmes à l'infrastructure Bitcoin. Lorsque le point d'arrêt survient, les mineurs commencent à recevoir seulement la moitié de la valeur de leur précédent récompense. La différence absolue entre 12,5 et 6,25 BTC (projetée pour l'année 2020) pourrait semblent tolérables. Cependant, en examinant la baisse de 50 à 25 BTC survenue en novembre 28 2012, semblait inapproprié pour un nombre important de membres de la communauté minière. Chiffre 1 montre une baisse spectaculaire du hashtarif du réseau à la fin du mois de novembre, exactement au moment où le la réduction de moitié a eu lieu. Cet événement aurait pu être le moment idéal pour l'individu malveillant décrit dans la section fonction proof-of-work pour mener une attaque à double dépense [36]. Figure 1. Tableau des taux Bitcoin hash (source : http://bitcoin.sipa.be) 2.4 Constantes codées en dur Bitcoin comporte de nombreuses limites codées en dur, dont certaines sont des éléments naturels de la conception originale (par ex. fréquence de blocage, montant maximum de la masse monétaire, nombre de confirmations) alors que d'autres semblent être des contraintes artificielles. Ce ne sont pas tant les limites que l'incapacité de changer rapidement 3 6 Appelons cela comme ça, une attaque de zombies. Discutons de ce que peut être l'émission continue lié à un processeur, un vote dans un scénario d'attaque de zombies. Dans un monde à un processeur, une voix, chaque téléphone portable et chaque voiture, lorsqu'ils sont inutilisés, seraient exploités. Collecter des tas de matériel bon marché pour créer une ferme minière serait très très simple, car il suffit de à peu près tout contient un processeur. En revanche, à ce stade, le nombre de processeurs nécessaire pour lancer une attaque à 51% serait assez étonnant, je pense. De plus, précisément parce qu'il serait facile de collecter du matériel bon marché, nous pouvons raisonnablement nous attendre à un beaucoup de gens commencent à accumuler n'importe quoi avec un processeur. La course aux armements dans un monde « un processeur, une voix » est forcément plus égalitaire que dans un monde ASIC. D'où une discontinuité dans le réseau la sécurité due aux taux d'émission devrait être MOINS un problème dans un monde à un processeur, une voix. Cependant, deux faits demeurent : 1) la discontinuité du taux d'émission peut conduire à un effet de bégaiement dans l'économie et la sécurité des réseaux, ce qui est mauvais, et 2) même si une attaque de 51 % effectué par quelqu'un collectant du matériel bon marché peut toujours se produire dans un processeur unique-votez le monde, il semble que cela devrait être plus difficile. Vraisemblablement, la protection contre cela est que tous les acteurs malhonnêtes tenteront cela. simultanément, et nous revenons à la notion de sécurité précédente de Bitcoin : "nous n'exigeons aucun faction pour contrôler plus de 51% du réseau. L'auteur affirme ici que l'un des problèmes du Bitcoin est la discontinuité dans l'émission des pièces. Ce taux pourrait entraîner une baisse soudaine de la participation au réseau, et donc de la sécurité du réseau. Ainsi, un taux d’émission de pièces continu, différenciable et régulier est préférable. L’auteur n’a pas forcément tort. Toute sorte de diminution soudaine de la participation au réseau peut conduire à un tel problème, et si nous pouvons en supprimer une source, nous devrions le faire. Cela dit, c'est Il est possible que de longues périodes d'émission de pièces de monnaie « relativement constantes » ponctuées de changements soudains est la voie idéale à suivre d’un point de vue économique. Je ne suis pas économiste. Alors, peut-être que nous devons décider si nous allons échanger la sécurité des réseaux contre quelque chose d’économique – qu’est-ce qu’il y a ici ? http://arxiv.org/abs/1402.2009si nécessaire, cela provoque les principaux inconvénients. Malheureusement, il est difficile de prédire quand les constantes devront peut-être être modifiées et leur remplacement peut avoir des conséquences terribles. Un bon exemple de changement de limite codé en dur conduisant à des conséquences désastreuses est le blocage limite de taille fixée à 250 Ko1. Cette limite était suffisante pour contenir environ 10 000 transactions standards. Dans début 2013, cette limite était presque atteinte et un accord a été trouvé pour augmenter le limite. Le changement a été implémenté dans la version 0.8 du portefeuille et s'est terminé par une division de chaîne de 24 blocs. et une attaque réussie de double dépense [9]. Bien que le bug ne soit pas dans le protocole Bitcoin, mais au contraire, dans le moteur de base de données, il aurait pu être facilement détecté par un simple test de résistance s'il y avait eu aucune limite de taille de bloc introduite artificiellement. Les constantes agissent également comme une forme de point de centralisation. Malgré la nature peer-to-peer de Bitcoin, une écrasante majorité de nœuds utilisent le client de référence officiel [10] développé par un petit groupe de personnes. Ce groupe prend la décision de mettre en œuvre des modifications au protocole et la plupart des gens acceptent ces changements indépendamment de leur « exactitude ». Certaines décisions ont provoqué discussions animées et même appels au boycott [11], ce qui indique que la communauté et le les développeurs peuvent être en désaccord sur certains points importants. Il semble donc logique d'avoir un protocole avec des variables configurables par l'utilisateur et auto-ajustables comme moyen possible d'éviter ces problèmes. 2.5 Scripts volumineux Le système de script de Bitcoin est une fonctionnalité lourde et complexe. Cela permet potentiellement de créer transactions sophistiquées [12], mais certaines de ses fonctionnalités sont désactivées en raison de problèmes de sécurité et certains n'ont même jamais été utilisés [13]. Le script (y compris les parties des expéditeurs et des destinataires) pour la transaction la plus populaire en Bitcoin ressemble à ceci : OP DUP OP HASH160 OP EQUALVERIFY OP CHECKSIG. Le script fait 164 octets alors que son seul but est de vérifier si le récepteur possède le clé secrète nécessaire pour vérifier sa signature.