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.

Introdução

“Bitcoin” [1] foi uma implementação bem-sucedida do conceito de dinheiro eletrônico p2p. Ambos profissionais e o público em geral passaram a apreciar a combinação conveniente de transações públicas e proof-of-work como modelo de confiança. Hoje, a base de usuários do dinheiro eletrônico está a crescer a um ritmo constante; os clientes são atraídos por taxas baixas e pelo anonimato fornecido pelo dinheiro eletrônico e os comerciantes valorizam sua emissão prevista e descentralizada. Bitcoin tem provou efetivamente que o dinheiro eletrônico pode ser tão simples quanto o papel-moeda e tão conveniente quanto cartões de crédito. Infelizmente, Bitcoin sofre de diversas deficiências. Por exemplo, o sistema é distribuído a natureza é inflexível, impedindo a implementação de novos recursos até que quase todos os usuários da rede atualizem seus clientes. Algumas falhas críticas que não podem ser corrigidas rapidamente impedem o Bitcoin propagação generalizada. Nesses modelos inflexíveis, é mais eficiente implementar um novo projeto em vez de consertar perpetuamente o projeto original. Neste artigo, estudamos e propomos soluções para as principais deficiências de Bitcoin. Nós acreditamos que um sistema que tenha em conta as soluções que propomos conduzirá a uma concorrência saudável entre diferentes sistemas de dinheiro eletrônico. Propomos também o nosso próprio dinheiro eletrônico, “CryptoNote”, um nome que enfatiza o próximo avanço no dinheiro eletrônico.

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 Desvantagens e possíveis soluções

2 Bitcoin desvantagens e algumas soluções possíveis 2.1 Rastreabilidade das transações Privacidade e anonimato são os aspectos mais importantes do dinheiro eletrônico. Pagamentos ponto a ponto procuram ser ocultados da visão de terceiros, uma diferença distinta quando comparado com o tradicional bancário. Em particular, T. Okamoto e K. Ohta descreveram seis critérios de dinheiro eletrônico ideal, que incluía “privacidade: a relação entre o usuário e suas compras deve ser indetectável por qualquer pessoa” [30]. A partir de sua descrição, derivamos duas propriedades que um relatório totalmente anônimo o modelo de dinheiro eletrônico deve satisfazer para cumprir os requisitos descritos por Okamoto e Ohta: Irrastreabilidade: para cada transação recebida todos os remetentes possíveis são equiprováveis. Desvinculação: para quaisquer duas transações de saída é impossível provar que foram enviadas para a mesma pessoa. Infelizmente, Bitcoin não atende ao requisito de não rastreabilidade. Como todas as transações que ocorrem entre os participantes da rede são públicas, qualquer transação pode ser 1 CriptoNote v 2.0 Nicolas van Saberhagen 17 de outubro de 2013 1 Introdução “Bitcoin” [1] foi uma implementação bem-sucedida do conceito de dinheiro eletrônico p2p. Ambos profissionais e o público em geral passaram a apreciar a combinação conveniente de transações públicas e proof-of-work como modelo de confiança. Hoje, a base de usuários do dinheiro eletrônico está a crescer a um ritmo constante; os clientes são atraídos por taxas baixas e pelo anonimato fornecido pelo dinheiro eletrônico e os comerciantes valorizam sua emissão prevista e descentralizada. Bitcoin tem provou efetivamente que o dinheiro eletrônico pode ser tão simples quanto o papel-moeda e tão conveniente quanto cartões de crédito. Infelizmente, Bitcoin sofre de diversas deficiências. Por exemplo, o sistema é distribuído a natureza é inflexível, impedindo a implementação de novos recursos até que quase todos os usuários da rede atualizem seus clientes. Algumas falhas críticas que não podem ser corrigidas rapidamente dissuadem Bitcoin de propagação generalizada. Nesses modelos inflexíveis, é mais eficiente implementar um novo projeto em vez de consertar perpetuamente o projeto original. Neste artigo, estudamos e propomos soluções para as principais deficiências de Bitcoin. Nós acreditamos que um sistema que tenha em conta as soluções que propomos conduzirá a uma concorrência saudável entre diferentes sistemas de dinheiro eletrônico. Propomos também o nosso próprio dinheiro eletrônico, “CryptoNote”, um nome que enfatiza o próximo avanço no dinheiro eletrônico. 2 Bitcoin desvantagens e algumas soluções possíveis 2.1 Rastreabilidade das transações Privacidade e anonimato são os aspectos mais importantes do dinheiro eletrônico. Pagamentos ponto a ponto procuram ser ocultados da visão de terceiros, uma diferença distinta quando comparado com o tradicional bancário. Em particular, T. Okamoto e K. Ohta descreveram seis critérios de dinheiro eletrônico ideal, que incluía “privacidade: a relação entre o usuário e suas compras deve ser indetectável por qualquer pessoa” [30]. A partir de sua descrição, derivamos duas propriedades que um relatório totalmente anônimo o modelo de dinheiro eletrônico deve satisfazer para cumprir os requisitos descritos por Okamoto e Ohta: Irrastreabilidade: para cada transação recebida todos os remetentes possíveis são equiprováveis. Desvinculação: para quaisquer duas transações de saída é impossível provar que foram enviadas para a mesma pessoa. Infelizmente, Bitcoin não atende ao requisito de não rastreabilidade. Como todas as transações que ocorrem entre os participantes da rede são públicas, qualquer transação pode ser 1 3 Bitcoin definitivamente falha em "não rastreabilidade". Quando eu te envio BTC, a carteira da qual ele é enviado está irrevogavelmente carimbado no blockchain. Não há dúvida sobre quem enviou esses fundos, porque somente quem conhece as chaves privadas pode enviá-las.inequivocamente atribuída a uma origem única e a um destinatário final. Mesmo que dois participantes troquem fundos de forma indireta, um método de descoberta de caminhos adequadamente projetado revelará a origem e destinatário final. Suspeita-se também que Bitcoin não satisfaz a segunda propriedade. Alguns pesquisadores afirmou ([33, 35, 29, 31]) que uma análise cuidadosa de blockchain pode revelar uma conexão entre os usuários da rede Bitcoin e suas transações. Embora vários métodos sejam contestado [25], suspeita-se que muitas informações pessoais ocultas podem ser extraídas do banco de dados público. A falha de Bitcoin em satisfazer as duas propriedades descritas acima nos leva a concluir que é não um sistema de dinheiro eletrônico anônimo, mas pseudo-anônimo. Os usuários foram rápidos em desenvolver soluções para contornar esta lacuna. Duas soluções diretas foram “serviços de lavagem” [2] e o desenvolvimento de métodos distribuídos [3, 4]. Ambas as soluções baseiam-se na ideia de misturar diversas transações públicas e envio através de algum endereço intermediário; que por sua vez sofre a desvantagem de exigir um terceiro confiável. Recentemente, um esquema mais criativo foi proposto por I. Miers et al. [28]: “Zerocoin”. Zerocoin utiliza acumuladores criptográficos unidirecionais e provas de conhecimento zero que permitem aos usuários “converter” bitcoins em zerocoins e gastá-los usando prova anônima de propriedade em vez de assinaturas digitais explícitas baseadas em chave pública. No entanto, tais provas de conhecimento têm uma constante mas tamanho inconveniente - cerca de 30kb (com base nos limites Bitcoin atuais), o que torna a proposta impraticável. Os autores admitem que é improvável que o protocolo seja aceito pela maioria dos Bitcoin usuários [5]. 2.2 A função proof-of-work O criador de Bitcoin, Satoshi Nakamoto, descreveu o algoritmo de tomada de decisão majoritária como “oneCPU-one-vote” e usou uma função de precificação vinculada à CPU (duplo SHA-256) para seu proof-of-work esquema. Como os usuários votam no pedido único de histórico de transações [1], a razoabilidade e a consistência deste processo são condições críticas para todo o sistema. A segurança deste modelo apresenta duas desvantagens. Primeiro, requer 51% da rede o poder de mineração esteja sob o controle de usuários honestos. Em segundo lugar, o progresso do sistema (correções de bugs, correções de segurança, etc...) exigem que a esmagadora maioria dos usuários apoie e concorde com o mudanças (isso ocorre quando os usuários atualizam seu software de carteira) [6].Finalmente esta mesma votação O mecanismo também é usado para pesquisas coletivas sobre a implementação de alguns recursos [7]. Isso nos permite conjecturar as propriedades que devem ser satisfeitas pelo proof-of-work função de precificação. Essa função não deve permitir que um participante da rede tenha um impacto significativo vantagem sobre outro participante; requer uma paridade entre hardware comum e alta custo de dispositivos personalizados. A partir de exemplos recentes [8], podemos ver que a função SHA-256 usada na arquitetura Bitcoin não possui esta propriedade à medida que a mineração se torna mais eficiente em GPUs e dispositivos ASIC em comparação com CPUs de última geração. Portanto, Bitcoin cria condições favoráveis para uma grande lacuna entre o poder de voto de participantes, pois viola o princípio “uma CPU um voto”, uma vez que os proprietários de GPU e ASIC possuem um poder de voto muito maior quando comparado aos proprietários de CPU. É um exemplo clássico do Princípio de Pareto onde 20% dos participantes de um sistema controlam mais de 80% dos votos. Pode-se argumentar que tal desigualdade não é relevante para a segurança da rede, uma vez que não é o pequeno número de participantes que controlam a maioria dos votos, mas a honestidade destes participantes que importa. No entanto, tal argumento é um tanto falho, uma vez que é antes o possibilidade de hardware especializado barato aparecer em vez da honestidade dos participantes que representa uma ameaça. Para demonstrar isso, tomemos o seguinte exemplo. Suponha que um malévolo indivíduo ganha poder de mineração significativo ao criar sua própria fazenda de mineração por meio de recursos baratos. 2 inequivocamente atribuída a uma origem única e a um destinatário final. Mesmo que dois participantes troquem fundos de forma indireta, um método de descoberta de caminhos adequadamente projetado revelará a origem e destinatário final. Suspeita-se também que Bitcoin não satisfaz a segunda propriedade. Alguns pesquisadores afirmou ([33, 35, 29, 31]) que uma análise cuidadosa de blockchain pode revelar uma conexão entre os usuários da rede Bitcoin e suas transações. Embora vários métodos sejam disputado [25], suspeita-se que muitas informações pessoais ocultas podem ser extraídas do banco de dados público. A falha de Bitcoin em satisfazer as duas propriedades descritas acima nos leva a concluir que é não um sistema de dinheiro eletrônico anônimo, mas pseudo-anônimo. Os usuários foram rápidos em desenvolver soluções para contornar esta lacuna. Duas soluções diretas foram “serviços de lavagem” [2] e o desenvolvimento de métodos distribuídos [3, 4]. Ambas as soluções baseiam-se na ideia de misturar diversas transações públicas e envio através de algum endereço intermediário; que por sua vez sofre a desvantagem de exigir um terceiro confiável. Recentemente, um esquema mais criativo foi proposto por I. Miers et al. [28]: “Zerocoin”. Zerocoin utiliza acumuladores criptográficos unidirecionais e provas de conhecimento zero que permitem aos usuários “converter” bitcoins em zerocoins e gastá-los usando prova anônima de propriedade em vez de assinaturas digitais explícitas baseadas em chave pública. No entanto, tais provas de conhecimento têm uma constante mas tamanho inconveniente - cerca de 30kb (com base nos limites Bitcoin atuais), o que torna a proposta impraticável. Os autores admitem que é improvável que o protocolo seja aceito pela maioria dos Bitcoin usuários [5]. 2.2 A função proof-of-work O criador de Bitcoin, Satoshi Nakamoto, descreveu o algoritmo de tomada de decisão majoritária como “oneCPU-one-vote” e usou uma função de precificação vinculada à CPU (duplo SHA-256) para seu proof-of-work esquema. Como os usuários votam no pedido único de histórico de transações [1], a razoabilidade e a consistência deste processo são condições críticas para todo o sistema. A segurança deste modelo apresenta duas desvantagens. Primeiro, requer 51% da rede o poder de mineração esteja sob o controle de usuários honestos. Em segundo lugar, o progresso do sistema (correções de bugs, correções de segurança, etc...) exigem que a esmagadora maioria dos usuários apoie e concorde com o mudanças (isso ocorre quando os usuários atualizam seu software de carteira) [6].Finalmente esta mesma votação O mecanismo também é usado para pesquisas coletivas sobre a implementação de alguns recursos [7]. Isso nos permite conjecturar as propriedades que devem ser satisfeitas pelo proof-of-work função de precificação. Essa função não deve permitir que um participante da rede tenha um impacto significativo vantagem sobre outro participante; requer uma paridade entre hardware comum e alta custo de dispositivos personalizados. A partir de exemplos recentes [8], podemos ver que a função SHA-256 usada na arquitetura Bitcoin não possui esta propriedade à medida que a mineração se torna mais eficiente em GPUs e dispositivos ASIC em comparação com CPUs de última geração. Portanto, Bitcoin cria condições favoráveis para uma grande lacuna entre o poder de voto de participantes, pois viola o princípio “uma CPU um voto”, uma vez que os proprietários de GPU e ASIC possuem um poder de voto muito maior quando comparado aos proprietários de CPU. É um exemplo clássico do Princípio de Pareto onde 20% dos participantes de um sistema controlam mais de 80% dos votos. Pode-se argumentar que tal desigualdade não é relevante para a segurança da rede, uma vez que não é o pequeno número de participantes que controlam a maioria dos votos, mas a honestidade destes participantes que importa. No entanto, tal argumento é um tanto falho, uma vez que é antes o possibilidade de hardware especializado barato aparecer em vez da honestidade dos participantes que representa uma ameaça. Para demonstrar isso, tomemos o seguinte exemplo. Suponha que um malévolo indivíduo ganha poder de mineração significativo ao criar sua própria fazenda de mineração por meio de recursos baratos. 2 4 Presumivelmente, se cada usuário ajudar seu próprio anonimato gerando sempre um novo endereço para CADA pagamento recebido (o que é absurdo, mas tecnicamente a maneira "correta" de fazer isso), e se cada usuário ajudasse o anonimato de todos, insistindo para que nunca enviassem fundos para o mesmo endereço BTC duas vezes, então Bitcoin ainda passaria apenas circunstancialmente o teste de desvinculação. Por que? Os dados do consumidor podem ser usados ​​para descobrir uma quantidade surpreendente sobre as pessoas o tempo todo. Veja, por exemplo, http://www.applieddatalabs.com/content/target-knows-it-shows Agora, imagine que isso aconteça 20 anos no futuro e imagine ainda que a Target não apenas soubesse sobre seus hábitos de compra na Target, mas eles estavam explorando o blockchain para TODOS SUAS COMPRAS PESSOAIS COM SUA CARTEIRA COINBASE DO PASSADO DOZE ANOS. Eles vão ficar tipo "ei, amigo, você pode querer comprar um remédio para tosse esta noite, você não vai sinta-se bem amanhã." Este pode não ser o caso se a classificação multipartidária for explorada corretamente. Veja, por exemplo, estepostagem do blog: http://blog.ezyang.com/2012/07/secure-multiparty-bitcoin-anonymization/ Não estou totalmente convencido da matemática disso, mas... um trabalho de cada vez, certo? Citação necessária. Embora o protocolo Zerocoin (autônomo) possa ser insuficiente, o Zerocash protocolo parece ter implementado transações de tamanho de 1kb. Esse projeto é apoiado por os militares dos EUA e de Israel, claro, por isso quem sabe da sua robustez. Por outro Por outro lado, ninguém deseja poder gastar fundos sem supervisão mais do que os militares. http://zerocash-project.org/ Não estou convencido... veja, por exemplo, http://fc14.ifca.ai/bitcoin/papers/bitcoin14_submission_12.pdf Citando um desenvolvedor do Cryptonote, Maurice Planck (presumivelmente um pseudônimo) do cryptonote fora: "Zerocoin, Zerocash. Esta é a tecnologia mais avançada, devo admitir. Sim, a citação acima é da análise da versão anterior do protocolo. Que eu saiba, não é 288, mas 384 bytes, mas de qualquer forma, são boas notícias. Eles usaram uma técnica totalmente nova chamada SNARK, que tem algumas desvantagens: por exemplo, grande banco de dados inicial de parâmetros públicos necessários para criar uma assinatura (mais de 1 GB) e tempo significativo necessário para criar uma transação (mais de um minuto). Finalmente, eles estão usando um criptografia jovem, que mencionei ser uma ideia discutível: https://forum.cryptonote.org/viewtopic.php?f= " - Maurice P. Qui, 3 de abril de 2014, 19h56 Uma função que é executada na CPU e não é adequada para GPU, FPGA ou ASIC computação. O "quebra-cabeça" usado em proof-of-work é referido como função de preço, função de custo ou função de quebra-cabeça.

inequivocamente atribuída a uma origem única e a um destinatário final. Mesmo que dois participantes troquem fundos de forma indireta, um método de descoberta de caminhos adequadamente projetado revelará a origem e destinatário final. Suspeita-se também que Bitcoin não satisfaz a segunda propriedade. Alguns pesquisadores afirmou ([33, 35, 29, 31]) que uma análise cuidadosa de blockchain pode revelar uma conexão entre os usuários da rede Bitcoin e suas transações. Embora vários métodos sejam contestado [25], suspeita-se que muitas informações pessoais ocultas podem ser extraídas do banco de dados público. A falha de Bitcoin em satisfazer as duas propriedades descritas acima nos leva a concluir que é não um sistema de dinheiro eletrônico anônimo, mas pseudo-anônimo. Os usuários foram rápidos em desenvolver soluções para contornar esta lacuna. Duas soluções diretas foram “serviços de lavagem” [2] e o desenvolvimento de métodos distribuídos [3, 4]. Ambas as soluções baseiam-se na ideia de misturar diversas transações públicas e envio através de algum endereço intermediário; que por sua vez sofre a desvantagem de exigir um terceiro confiável. Recentemente, um esquema mais criativo foi proposto por I. Miers et al. [28]: “Zerocoin”. Zerocoin utiliza acumuladores criptográficos unidirecionais e provas de conhecimento zero que permitem aos usuários “converter” bitcoins em zerocoins e gastá-los usando prova anônima de propriedade em vez de assinaturas digitais explícitas baseadas em chave pública. No entanto, tais provas de conhecimento têm uma constante mas tamanho inconveniente - cerca de 30kb (com base nos limites Bitcoin atuais), o que torna a proposta impraticável. Os autores admitem que é improvável que o protocolo seja aceito pela maioria dos Bitcoin usuários [5]. 2.2 A função proof-of-work O criador de Bitcoin, Satoshi Nakamoto, descreveu o algoritmo de tomada de decisão majoritária como “oneCPU-one-vote” e usou uma função de precificação vinculada à CPU (duplo SHA-256) para seu proof-of-work esquema. Como os usuários votam no pedido único de histórico de transações [1], a razoabilidade e a consistência deste processo são condições críticas para todo o sistema. A segurança deste modelo apresenta duas desvantagens. Primeiro, requer 51% da rede o poder de mineração esteja sob o controle de usuários honestos. Em segundo lugar, o progresso do sistema (correções de bugs, correções de segurança, etc...) exigem que a esmagadora maioria dos usuários apoie e concorde com o mudanças (isso ocorre quando os usuários atualizam seu software de carteira) [6].Finalmente esta mesma votação O mecanismo também é usado para pesquisas coletivas sobre a implementação de alguns recursos [7]. Isso nos permite conjecturar as propriedades que devem ser satisfeitas pelo proof-of-work função de precificação. Essa função não deve permitir que um participante da rede tenha um impacto significativo vantagem sobre outro participante; requer uma paridade entre hardware comum e alta custo de dispositivos personalizados. A partir de exemplos recentes [8], podemos ver que a função SHA-256 usada na arquitetura Bitcoin não possui esta propriedade à medida que a mineração se torna mais eficiente em GPUs e dispositivos ASIC em comparação com CPUs de última geração. Portanto, Bitcoin cria condições favoráveis para uma grande lacuna entre o poder de voto de participantes, pois viola o princípio “uma CPU um voto”, uma vez que os proprietários de GPU e ASIC possuem um poder de voto muito maior quando comparado aos proprietários de CPU. É um exemplo clássico do Princípio de Pareto onde 20% dos participantes de um sistema controlam mais de 80% dos votos. Pode-se argumentar que tal desigualdade não é relevante para a segurança da rede, uma vez que não é o pequeno número de participantes que controlam a maioria dos votos, mas a honestidade destes participantes que importa. No entanto, tal argumento é um tanto falho, uma vez que é antes o possibilidade de hardware especializado barato aparecer em vez da honestidade dos participantes que representa uma ameaça. Para demonstrar isso, tomemos o seguinte exemplo. Suponha que um malévolo indivíduo ganha poder de mineração significativo ao criar sua própria fazenda de mineração por meio de recursos baratos. 2 inequivocamente atribuída a uma origem única e a um destinatário final. Mesmo que dois participantes troquem fundos de forma indireta, um método de descoberta de caminhos adequadamente projetado revelará a origem e destinatário final. Suspeita-se também que Bitcoin não satisfaz a segunda propriedade. Alguns pesquisadores afirmou ([33, 35, 29, 31]) que uma análise cuidadosa de blockchain pode revelar uma conexão entre os usuários da rede Bitcoin e suas transações. Embora vários métodos sejam disputado [25], suspeita-se que muitas informações pessoais ocultas podem ser extraídas do banco de dados público. A falha de Bitcoin em satisfazer as duas propriedades descritas acima nos leva a concluir que é não um sistema de dinheiro eletrônico anônimo, mas pseudo-anônimo. Os usuários foram rápidos em desenvolver soluções para contornar esta lacuna. Duas soluções diretas foram “serviços de lavagem” [2] e o desenvolvimento de métodos distribuídos [3, 4]. Ambas as soluções baseiam-se na ideia de misturar diversas transações públicas e envio através de algum endereço intermediário; que por sua vez sofre a desvantagem de exigir um terceiro confiável. Recentemente, um esquema mais criativo foi proposto por I. Miers et al. [28]: “Zerocoin”. Zerocoin utiliza acumuladores criptográficos unidirecionais e provas de conhecimento zero que permitem aos usuários “converter” bitcoins em zerocoins e gastá-los usando prova anônima de propriedade em vez de assinaturas digitais explícitas baseadas em chave pública. No entanto, tais provas de conhecimento têm uma constante mas tamanho inconveniente - cerca de 30kb (com base nos limites Bitcoin atuais), o que torna a proposta impraticável. Os autores admitem que é improvável que o protocolo seja aceito pela maioria dos Bitcoin usuários [5]. 2.2 A função proof-of-work O criador de Bitcoin, Satoshi Nakamoto, descreveu o algoritmo de tomada de decisão majoritária como “oneCPU-one-vote” e usou uma função de precificação vinculada à CPU (duplo SHA-256) para seu proof-of-work esquema. Como os usuários votam no pedido único de histórico de transações [1], a razoabilidade e a consistência deste processo são condições críticas para todo o sistema. A segurança deste modelo apresenta duas desvantagens. Primeiro, requer 51% da rede o poder de mineração esteja sob o controle de usuários honestos. Em segundo lugar, o progresso do sistema (correções de bugs, correções de segurança, etc...) exigem que a esmagadora maioria dos usuários apoie e concorde com o mudanças (isso ocorre quando os usuários atualizam seu software de carteira) [6].Finalmente esta mesma votação O mecanismo também é usado para pesquisas coletivas sobre a implementação de alguns recursos [7]. Isso nos permite conjecturar as propriedades que devem ser satisfeitas pelo proof-of-work função de precificação. Essa função não deve permitir que um participante da rede tenha um impacto significativo vantagem sobre outro participante; requer uma paridade entre hardware comum e alta custo de dispositivos personalizados. A partir de exemplos recentes [8], podemos ver que a função SHA-256 usada na arquitetura Bitcoin não possui esta propriedade à medida que a mineração se torna mais eficiente em GPUs e dispositivos ASIC em comparação com CPUs de última geração. Portanto, Bitcoin cria condições favoráveis para uma grande lacuna entre o poder de voto de participantes, pois viola o princípio “uma CPU um voto”, uma vez que os proprietários de GPU e ASIC possuem um poder de voto muito maior quando comparado aos proprietários de CPU. É um exemplo clássico do Princípio de Pareto onde 20% dos participantes de um sistema controlam mais de 80% dos votos. Pode-se argumentar que tal desigualdade não é relevante para a segurança da rede, uma vez que não é o pequeno número de participantes que controlam a maioria dos votos, mas a honestidade destes participantes que importa. No entanto, tal argumento é um tanto falho, uma vez que é antes o possibilidade de hardware especializado barato aparecer em vez da honestidade dos participantes que representa uma ameaça. Para demonstrar isso, tomemos o seguinte exemplo. Suponha que um malévolo indivíduo ganha poder de mineração significativo ao criar sua própria fazenda de mineração por meio de recursos baratos. 2 Comentários na página 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.

A tecnologia CryptoNote

Agora que cobrimos as limitações da tecnologia Bitcoin, nos concentraremos em apresentando os recursos do 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

Transações não rastreáveis

Nesta seção propomos um esquema de transações totalmente anônimas que satisfaça tanto a inrastreabilidade e condições de desvinculação. Uma característica importante da nossa solução é a sua autonomia: o remetente não é obrigado a cooperar com outros usuários ou terceiros de confiança para realizar suas transações; portanto, cada participante produz um tráfego de cobertura de forma independente. 4.1 Revisão de literatura Nosso esquema depende da primitiva criptográfica chamada assinatura de grupo. Apresentado pela primeira vez por D. Chaum e E. van Heyst [19], permite que um usuário assine sua mensagem em nome do grupo. Depois de assinar a mensagem, o usuário fornece (para fins de verificação) não seu próprio endereço público. 1Este é o chamado “limite flexível” – a restrição do cliente de referência para a criação de novos blocos. Difícil máximo de o tamanho de bloco possível era de 1 MB 4 se necessário, o que causa as principais desvantagens. Infelizmente, é difícil prever quando constantes podem precisar ser alteradas e substituí-las pode levar a consequências terríveis. Um bom exemplo de alteração de limite codificada que leva a consequências desastrosas é o bloqueio limite de tamanho definido para 250kb1. Este limite foi suficiente para realizar cerca de 10.000 transações padrão. Em No início de 2013, esse limite estava quase alcançado e foi alcançado um acordo para aumentar o limite. A mudança foi implementada na versão 0.8 da carteira e terminou com uma divisão da cadeia de 24 blocos e um ataque de gasto duplo bem-sucedido [9]. Embora o bug não estivesse no protocolo Bitcoin, mas em vez disso, no mecanismo de banco de dados, ele poderia ter sido facilmente detectado por um simples teste de estresse, se houvesse nenhum limite de tamanho de bloco introduzido artificialmente. As constantes também atuam como uma forma de ponto de centralização. Apesar da natureza peer-to-peer Bitcoin, a esmagadora maioria dos nós usa o cliente de referência oficial [10] desenvolvido por um pequeno grupo de pessoas. Este grupo toma a decisão de implementar mudanças no protocolo e a maioria das pessoas aceita estas mudanças independentemente da sua “correcção”. Algumas decisões causaram discussões acaloradas e até apelos ao boicote [11], o que indica que a comunidade e o os desenvolvedores podem discordar em alguns pontos importantes. Parece, portanto, lógico ter um protocolo com variáveis configuráveis pelo usuário e autoajustáveis como uma possível forma de evitar esses problemas. 2,5 Scripts volumosos O sistema de script em Bitcoin é um recurso pesado e complexo. Ele potencialmente permite criar transações sofisticadas [12], mas alguns de seus recursos estão desativados devido a questões de segurança e alguns nunca foram usados [13]. O script (incluindo as partes do remetente e do destinatário) para a transação mais popular em Bitcoin fica assim: OP DUP OP HASH160 OP EQUALVERIFY OP CHECKSIG. O script tem 164 bytes e seu único propósito é verificar se o receptor possui o chave secreta necessária para verificar sua assinatura. 3 A tecnologia CryptoNote Agora que cobrimos as limitações da tecnologia Bitcoin, nos concentraremos em apresentando os recursos do CryptoNote. 4 Transações não rastreáveis Nesta seção propomos um esquema de transações totalmente anônimas que satisfaça tanto a inrastreabilidade e condições de desvinculação. Uma característica importante da nossa solução é a sua autonomia: o remetente não é obrigado a cooperar com outros usuários ou terceiros de confiança para realizar suas transações; portanto, cada participante produz um tráfego de cobertura de forma independente. 4.1 Revisão de literatura Nosso esquema depende da primitiva criptográfica chamada assinatura de grupo. Apresentado pela primeira vez por D. Chaum e E. van Heyst [19], permite que um usuário assine sua mensagem em nome do grupo. Depois de assinar a mensagem, o usuário fornece (para fins de verificação) não seu próprio endereço público. 1Este é o chamado “limite flexível” – a restrição do cliente de referência para a criação de novos blocos. Difícil máximo de o tamanho de bloco possível era de 1 MB 4 7 Em retrospecto, parece ter sido um grande erro tornar o tamanho do bloco um limite fixo no código. Visa e Mastercard podem processar milhares, senão centenas de milhares, de transações por segundo. No entanto, as transações ocorrem num processo estocástico, às vezes em explosões massivas, às vezes ficando quieto por horas. Pense no volume de troca de bitcoins. Parece uma grande ideia projetar um sistema que aumente o tamanho do bloco dinamicamente quando necessário para acomodar o aumento do tráfego de transações e diminuí-lo dinamicamente quando necessário para aumentar a eficiência da largura de banda. Agora, aplique essa noção a todos os parâmetros do sistema. E contanto que tenhamos o cuidado de manter o sistema de pescar fora de controle, este shpoderia funcionar muito bem. https://github.com/bitcoin/bips/blob/master/bip-0050.mediawiki Como mencionado anteriormente, se as variáveis se autoajustam, alguns controles devem ser impostos para evitar que o sistema continue totalmente fora de controle. Chegaremos a isso. Se este fosse um artigo da Wikipedia, seria rotulado como "STUB". Embora estejamos certamente no seção que apresenta os "Problemas de Bitcoin", gostaria de alguns detalhes aqui. Por que é 164 bytes inaceitáveis para uma tarefa simples de "verificar chave secreta"? Quão pequenos eles podem chegar uma linguagem de script razoável? Mas não sou um cientista da computação. http://download.springer.com/static/pdf/412/chp%253A10.1007%252F3-540-46416-6_22.pdf?auth66=140 As assinaturas de grupo, conforme descrito, requerem um gerente de grupo. O gerente do grupo é capaz de revogar o anonimato de qualquer signatário. Portanto, há centralização embutida em um grupo esquema de assinatura.

chave, mas as chaves de todos os usuários de seu grupo. Um verificador está convencido de que o verdadeiro signatário é um membro do grupo, mas não pode identificar exclusivamente o signatário. O protocolo original exigia um terceiro de confiança (chamado Gerente de Grupo), e ele era o único que poderia rastrear o signatário. A próxima versão chamada assinatura de anel, introduzida por Rivest et al. em [34], era um esquema autônomo, sem Gerente de Grupo e anonimato revogação. Várias modificações deste esquema apareceram mais tarde: assinatura de anel vinculável [26, 27, 17] permitiu determinar se duas assinaturas foram produzidas pelo mesmo membro do grupo, rastreáveis a assinatura do anel [24, 23] limitou o anonimato excessivo, fornecendo a possibilidade de rastrear o signatário do duas mensagens relativas à mesma metainformação (ou “tag” em termos de [24]). Uma construção criptográfica semelhante também é conhecida como assinatura de grupo ad-hoc [16, 38]. Isso enfatiza a formação arbitrária de grupos, enquanto os esquemas de assinatura de grupo/anel implicam uma conjunto fixo de membros. Na maior parte, nossa solução é baseada no trabalho “Assinatura de anel rastreável” de E. Fujisaki e K. Suzuki [24]. Para distinguir o algoritmo original e nossa modificação, chame o último de assinatura de toque única, enfatizando a capacidade do usuário de produzir apenas uma assinatura válida. assinatura sob sua chave privada. Enfraquecemos a propriedade de rastreabilidade e mantivemos a vinculabilidade apenas para fornecer unicidade: a chave pública pode aparecer em muitos conjuntos de verificação estrangeiros e o a chave privada pode ser usada para gerar uma assinatura anônima exclusiva. Em caso de gasto duplo tentativa, essas duas assinaturas serão vinculadas, mas não é necessário revelar o signatário para nossos propósitos. 4.2 Definições 4.2.1 Parâmetros de curva elíptica Como nosso algoritmo de assinatura base optamos por utilizar o esquema rápido EdDSA, que é desenvolvido e implementado por D.J. Bernstein et al. [18]. Como o ECDSA de Bitcoin, é baseado na curva elíptica problema de logaritmo discreto, portanto nosso esquema também poderá ser aplicado a Bitcoin no futuro. Os parâmetros comuns são: q: um número primo; q = 2255 −19; d: um elemento de Fq; d = −121665/121666; E: uma equação de curva elíptica; −x2 + y2 = 1 + dx2y2; G: um ponto base; G = (x, −4/5); l: uma ordem prima do ponto base; eu = 2252 + 27742317777372353535851937790883648493; \(H_s\): uma função criptográfica hash \(\{0, 1\}^* \to \mathbb{F}_q\); \(H_p\): uma função determinística hash \(E(\mathbb{F}_q) \to E(\mathbb{F}_q)\). 4.2.2 Terminologia A privacidade aprimorada requer uma nova terminologia que não deve ser confundida com entidades Bitcoin. private ec-key é uma chave privada de curva elíptica padrão: um número \(a \in [1, l - 1]\); public ec-key é uma chave pública de curva elíptica padrão: um ponto A = aG; par de chaves único é um par de chaves eletrônicas privadas e públicas; 5 chave, mas as chaves de todos os usuários de seu grupo. Um verificador está convencido de que o verdadeiro signatário é um membro do grupo, mas não pode identificar exclusivamente o signatário. O protocolo original exigia um terceiro de confiança (chamado Gerente de Grupo), e ele era o único que poderia rastrear o signatário. A próxima versão chamada assinatura de anel, introduzida por Rivest et al. em [34], era um esquema autônomo, sem Gerente de Grupo e anonimato revogação. Várias modificações deste esquema apareceram mais tarde: assinatura de anel vinculável [26, 27, 17] permitiu determinar se duas assinaturas foram produzidas pelo mesmo membro do grupo, rastreáveis a assinatura do anel [24, 23] limitou o anonimato excessivo, fornecendo a possibilidade de rastrear o signatário do duas mensagens relativas à mesma metainformação (ou “tag” em termos de [24]). Uma construção criptográfica semelhante também é conhecida como assinatura de grupo ad-hoc [16, 38]. Isso enfatiza a formação arbitrária de grupos, enquanto os esquemas de assinatura de grupo/anel implicam uma conjunto fixo de membros. Na maior parte, nossa solução é baseada no trabalho “Assinatura de anel rastreável” de E. Fujisaki e K. Suzuki [24]. Para distinguir o algoritmo original e nossa modificação, chame o último de assinatura de toque única, enfatizando a capacidade do usuário de produzir apenas uma assinatura válida. assinatura sob sua chave privada. Enfraquecemos a propriedade de rastreabilidade e mantivemos a vinculabilidade apenas para fornecer unicidade: a chave pública pode aparecer em muitos conjuntos de verificação estrangeiros e o a chave privada pode ser usada para gerar uma assinatura anônima exclusiva. Em caso de gasto duplo tentativa, essas duas assinaturas serão vinculadas, mas não é necessário revelar o signatário para nossos propósitos. 4.2 Definições 4.2.1 Parâmetros de curva elíptica Como nosso algoritmo de assinatura base escolhemose utilizar o esquema rápido EdDSA, que é desenvolvido e implementado por D.J. Bernstein et al. [18]. Como o ECDSA de Bitcoin, é baseado na curva elíptica problema de logaritmo discreto, portanto nosso esquema também poderá ser aplicado a Bitcoin no futuro. Os parâmetros comuns são: q: um número primo; q = 2255 −19; d: um elemento de Fq; d = −121665/121666; E: uma equação de curva elíptica; −x2 + y2 = 1 + dx2y2; G: um ponto base; G = (x, −4/5); l: uma ordem prima do ponto base; eu = 2252 + 27742317777372353535851937790883648493; \(H_s\): uma função criptográfica hash \(\{0, 1\}^* \to \mathbb{F}_q\); \(H_p\): uma função determinística hash \(E(\mathbb{F}_q) \to E(\mathbb{F}_q)\). 4.2.2 Terminologia A privacidade aprimorada requer uma nova terminologia que não deve ser confundida com entidades Bitcoin. private ec-key é uma chave privada de curva elíptica padrão: um número \(a \in [1, l - 1]\); public ec-key é uma chave pública de curva elíptica padrão: um ponto A = aG; par de chaves único é um par de chaves eletrônicas privadas e públicas; 5 8 Uma assinatura de anel funciona assim: Alex quer vazar uma mensagem para o WikiLeaks sobre seu empregador. Cada funcionário de sua empresa possui um par de chaves privada/pública (Ri, Ui). Ela compõe sua assinatura com entrada definida como sua mensagem, m, sua chave privada, Ri e TODOS chaves públicas, (Ui;i=1...n). Qualquer pessoa (sem conhecer nenhuma chave privada) pode verificar facilmente que algum par (Rj, Uj) deve ter sido usado para construir a assinatura... alguém que trabalha para o empregador de Alex... mas é essencialmente um palpite aleatório para descobrir qual poderia 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 Observe que uma assinatura de anel vinculável descrita aqui é o oposto de "desvinculável" descrito acima. Aqui, interceptamos duas mensagens e podemos determinar se a mesma parte os enviou, embora ainda não consigamos determinar quem é essa parte. O A definição de "desvinculável" usada para construir o Cryptonote significa que não podemos determinar se a mesma parte os está recebendo. Portanto, o que realmente temos aqui são QUATRO coisas acontecendo. Um sistema pode ser conectável ou não vinculável, dependendo se é ou não possível determinar se o remetente do duas mensagens são iguais (independentemente de isso exigir a revogação do anonimato). E um sistema pode ser desvinculável ou não desvinculável, dependendo se é ou não possível determinar se o receptor de duas mensagens é o mesmo (independentemente de ser ou não isso requer a revogação do anonimato). Por favor, não me culpe por esta terminologia terrível. Os teóricos dos grafos provavelmente deveriam estar satisfeito. Alguns de vocês podem se sentir mais confortáveis ​​com “vinculável ao receptor” versus “vinculável ao remetente”. http://link.springer.com/chapter/10.1007/978-3-540-71677-8_13 Quando li isso, parecia um recurso bobo. Então li que pode ser um recurso para votação electrónica, e isso parecia fazer sentido. Muito legal, dessa perspectiva. Mas eu estou não tenho certeza sobre a implementação proposital de assinaturas de anel rastreáveis. http://search.ieice.org/bin/summary.php?id=e95-a_1_151

chave, mas as chaves de todos os usuários de seu grupo. Um verificador está convencido de que o verdadeiro signatário é um membro do grupo, mas não pode identificar exclusivamente o signatário. O protocolo original exigia um terceiro de confiança (chamado Gerente de Grupo), e ele era o único que poderia rastrear o signatário. A próxima versão chamada assinatura de anel, introduzida por Rivest et al. em [34], era um esquema autônomo, sem Gerente de Grupo e anonimato revogação. Várias modificações deste esquema apareceram mais tarde: assinatura de anel vinculável [26, 27, 17] permitiu determinar se duas assinaturas foram produzidas pelo mesmo membro do grupo, rastreáveis a assinatura do anel [24, 23] limitou o anonimato excessivo, fornecendo a possibilidade de rastrear o signatário do duas mensagens relativas à mesma metainformação (ou “tag” em termos de [24]). Uma construção criptográfica semelhante também é conhecida como assinatura de grupo ad-hoc [16, 38]. Isso enfatiza a formação arbitrária de grupos, enquanto os esquemas de assinatura de grupo/anel implicam uma conjunto fixo de membros. Na maior parte, nossa solução é baseada no trabalho “Assinatura de anel rastreável” de E. Fujisaki e K. Suzuki [24]. Para distinguir o algoritmo original e nossa modificação, chame o último de assinatura de toque única, enfatizando a capacidade do usuário de produzir apenas uma assinatura válida. assinatura sob sua chave privada. Enfraquecemos a propriedade de rastreabilidade e mantivemos a vinculabilidade apenas para fornecer unicidade: a chave pública pode aparecer em muitos conjuntos de verificação estrangeiros e o a chave privada pode ser usada para gerar uma assinatura anônima exclusiva. Em caso de gasto duplo tentativa, essas duas assinaturas serão vinculadas, mas não é necessário revelar o signatário para nossos propósitos. 4.2 Definições 4.2.1 Parâmetros de curva elíptica Como nosso algoritmo de assinatura base optamos por utilizar o esquema rápido EdDSA, que é desenvolvido e implementado por D.J. Bernstein et al. [18]. Assim como o ECDSA de Bitcoin, é baseado na curva elíptica problema de logaritmo discreto, portanto nosso esquema também poderá ser aplicado a Bitcoin no futuro. Os parâmetros comuns são: q: um número primo; q = 2255 −19; d: um elemento de Fq; d = −121665/121666; E: uma equação de curva elíptica; −x2 + y2 = 1 + dx2y2; G: um ponto base; G = (x, −4/5); l: uma ordem prima do ponto base; eu = 2252 + 27742317777372353535851937790883648493; \(H_s\): uma função criptográfica hash \(\{0, 1\}^* \to \mathbb{F}_q\); \(H_p\): uma função determinística hash \(E(\mathbb{F}_q) \to E(\mathbb{F}_q)\). 4.2.2 Terminologia A privacidade aprimorada requer uma nova terminologia que não deve ser confundida com entidades Bitcoin. private ec-key é uma chave privada de curva elíptica padrão: um número \(a \in [1, l - 1]\); public ec-key é uma chave pública de curva elíptica padrão: um ponto A = aG; par de chaves único é um par de chaves eletrônicas privadas e públicas; 5 chave, mas as chaves de todos os usuários de seu grupo. Um verificador está convencido de que o verdadeiro signatário é um membro do grupo, mas não pode identificar exclusivamente o signatário. O protocolo original exigia um terceiro de confiança (chamado Gerente de Grupo), e ele era o único que poderia rastrear o signatário. A próxima versão chamada assinatura de anel, introduzida por Rivest et al. em [34], era um esquema autônomo, sem Gerente de Grupo e anonimato revogação. Várias modificações deste esquema apareceram mais tarde: assinatura de anel vinculável [26, 27, 17] permitiu determinar se duas assinaturas foram produzidas pelo mesmo membro do grupo, rastreáveis a assinatura do anel [24, 23] limitou o anonimato excessivo, fornecendo a possibilidade de rastrear o signatário do duas mensagens relativas à mesma metainformação (ou “tag” em termos de [24]). Uma construção criptográfica semelhante também é conhecida como assinatura de grupo ad-hoc [16, 38]. Isso enfatiza a formação arbitrária de grupos, enquanto os esquemas de assinatura de grupo/anel implicam uma conjunto fixo de membros. Na maior parte, nossa solução é baseada no trabalho “Assinatura de anel rastreável” de E. Fujisaki e K. Suzuki [24]. Para distinguir o algoritmo original e nossa modificação, chame o último de assinatura de toque única, enfatizando a capacidade do usuário de produzir apenas uma assinatura válida. assinatura sob sua chave privada. Enfraquecemos a propriedade de rastreabilidade e mantivemos a vinculabilidade apenas para fornecer unicidade: a chave pública pode aparecer em muitos conjuntos de verificação estrangeiros e o a chave privada pode ser usada para gerar uma assinatura anônima exclusiva. Em caso de gasto duplo tentativa, essas duas assinaturas serão vinculadas, mas não é necessário revelar o signatário para nossos propósitos. 4.2 Definições 4.2.1 Parâmetros de curva elíptica Como nosso algoritmo de assinatura base escolhemose utilizar o esquema rápido EdDSA, que é desenvolvido e implementado por D.J. Bernstein et al. [18]. Como o ECDSA de Bitcoin, é baseado na curva elíptica problema de logaritmo discreto, portanto nosso esquema também poderá ser aplicado a Bitcoin no futuro. Os parâmetros comuns são: q: um número primo; q = 2255 −19; d: um elemento de Fq; d = −121665/121666; E: uma equação de curva elíptica; −x2 + y2 = 1 + dx2y2; G: um ponto base; G = (x, −4/5); l: uma ordem prima do ponto base; eu = 2252 + 27742317777372353535851937790883648493; \(H_s\): uma função criptográfica hash \(\{0, 1\}^* \to \mathbb{F}_q\); \(H_p\): uma função determinística hash \(E(\mathbb{F}_q) \to E(\mathbb{F}_q)\). 4.2.2 Terminologia A privacidade aprimorada requer uma nova terminologia que não deve ser confundida com entidades Bitcoin. private ec-key é uma chave privada de curva elíptica padrão: um número \(a \in [1, l - 1]\); public ec-key é uma chave pública de curva elíptica padrão: um ponto A = aG; par de chaves único é um par de chaves eletrônicas privadas e públicas; 5 9 Nossa, o autor deste whitepaper certamente poderia ter formulado isso melhor! Digamos que um empresa de propriedade de funcionários deseja votar sobre a aquisição ou não de determinados novos ativos, e Alex e Brenda são funcionários. A Empresa oferece a cada funcionário um mensagem como "Eu voto sim na Proposta A!" que tem o "problema" de metainformação [PROP A] e pede-lhes que assinem com uma assinatura rastreável se apoiarem a proposta. Usando uma assinatura tradicional, um funcionário desonesto pode assinar a mensagem várias vezes, presumivelmente com nonces diferentes, para votar quantas vezes quiserem. Por outro Por outro lado, em um esquema de assinatura de anel rastreável, Alex irá votar e sua chave privada terá foi usado na questão [PROP A]. Se Alex tentar assinar uma mensagem como "Eu, Brenda, aprovo proposição A!" para "enquadrar" Brenda e votar duas vezes, esta nova mensagem também terá o problema [PROP A]. Como a chave privada de Alex já acionou o problema [PROP A], a identidade de Alex será imediatamente revelado como uma fraude. O que, convenhamos, é muito legal! A criptografia impôs a igualdade de voto. http://link.springer.com/chapter/10.1007/978-3-540-71677-8_13 Este artigo é interessante, essencialmente criando uma assinatura de anel ad-hoc, mas sem nenhuma das consentimento do outro participante. A estrutura da assinatura pode ser diferente; eu não cavei profundo e não vi se é seguro. https://people.csail.mit.edu/rivest/AdidaHohenbergerRivest-AdHocGroupSignaturesFromHijackedKeypai As assinaturas de grupo ad-hoc são: assinaturas em anel, que são assinaturas de grupo sem grupo gerentes, sem centralização, mas permite que um membro de um grupo ad-hoc afirme comprovadamente que (não) emitiu a assinatura anônima em nome do grupo. http://link.springer.com/chapter/10.1007/11908739_9 Isso não está totalmente correto, no meu entendimento. E meu entendimento provavelmente mudará à medida que Eu me aprofundo neste projeto. Mas, pelo que entendi, a hierarquia é assim. Assinaturas de grupo: os gerentes de grupo controlam a rastreabilidade e a capacidade de adicionar ou remover membros de serem signatários. Ring assina: Formação arbitrária de grupo sem gerente de grupo. Sem revogação de anonimato. Não há como repudiar uma assinatura específica. Com anel rastreável e conectável assinaturas, o anonimato é um tanto escalonável. Assinaturas de grupo ad-hoc: como assinaturas de anel, mas os membros podem provar que não criaram uma assinatura específica. Isto é importante quando qualquer pessoa de um grupo pode produzir uma assinatura. http://link.springer.com/chapter/10.1007/978-3-540-71677-8_13 O algoritmo de Fujisaki e Suzuki é ajustado posteriormente pelo autor para fornecer unicidade. Então analisaremos o algoritmo de Fujisaki e Suzuki simultaneamente com o novo algoritmo, em vez do que repassar isso aqui.

chave, mas as chaves de todos os usuários de seu grupo. Um verificador está convencido de que o verdadeiro signatário é um membro do grupo, mas não pode identificar exclusivamente o signatário. O protocolo original exigia um terceiro de confiança (chamado Gerente de Grupo), e ele era o único que poderia rastrear o signatário. A próxima versão chamada assinatura de anel, introduzida por Rivest et al. em [34], era um esquema autônomo, sem Gerente de Grupo e anonimato revogação. Várias modificações deste esquema apareceram mais tarde: assinatura de anel vinculável [26, 27, 17] permitiu determinar se duas assinaturas foram produzidas pelo mesmo membro do grupo, rastreáveis a assinatura do anel [24, 23] limitou o anonimato excessivo, fornecendo a possibilidade de rastrear o signatário do duas mensagens relativas à mesma metainformação (ou “tag” em termos de [24]). Uma construção criptográfica semelhante também é conhecida como assinatura de grupo ad-hoc [16, 38]. Isso enfatiza a formação arbitrária de grupos, enquanto os esquemas de assinatura de grupo/anel implicam uma conjunto fixo de membros. Na maior parte, nossa solução é baseada no trabalho “Assinatura de anel rastreável” de E. Fujisaki e K. Suzuki [24]. Para distinguir o algoritmo original e nossa modificação, chame o último de assinatura de toque única, enfatizando a capacidade do usuário de produzir apenas uma assinatura válida. assinatura sob sua chave privada. Enfraquecemos a propriedade de rastreabilidade e mantivemos a vinculabilidade apenas para fornecer unicidade: a chave pública pode aparecer em muitos conjuntos de verificação estrangeiros e o a chave privada pode ser usada para gerar uma assinatura anônima exclusiva. Em caso de gasto duplo tentativa, essas duas assinaturas serão vinculadas, mas não é necessário revelar o signatário para nossos propósitos. 4.2 Definições 4.2.1 Parâmetros de curva elíptica Como nosso algoritmo de assinatura base optamos por utilizar o esquema rápido EdDSA, que é desenvolvido e implementado por D.J. Bernstein et al. [18]. Como o ECDSA de Bitcoin, é baseado na curva elíptica problema de logaritmo discreto, portanto nosso esquema também poderá ser aplicado a Bitcoin no futuro. Os parâmetros comuns são: q: um número primo; q = 2255 −19; d: um elemento de Fq; d = −121665/121666; E: uma equação de curva elíptica; −x2 + y2 = 1 + dx2y2; G: um ponto base; G = (x, −4/5); l: uma ordem prima do ponto base; eu = 2252 + 27742317777372353535851937790883648493; \(H_s\): uma função criptográfica hash \(\{0, 1\}^* \to \mathbb{F}_q\); \(H_p\): uma função determinística hash \(E(\mathbb{F}_q) \to E(\mathbb{F}_q)\). 4.2.2 Terminologia A privacidade aprimorada requer uma nova terminologia que não deve ser confundida com entidades Bitcoin. private ec-key é uma chave privada de curva elíptica padrão: um número \(a \in [1, l - 1]\); public ec-key é uma chave pública de curva elíptica padrão: um ponto A = aG; par de chaves único é um par de chaves eletrônicas privadas e públicas; 5 chave, mas as chaves de todos os usuários de seu grupo. Um verificador está convencido de que o verdadeiro signatário é um membro do grupo, mas não pode identificar exclusivamente o signatário. O protocolo original exigia um terceiro de confiança (chamado Gerente de Grupo), e ele era o único que poderia rastrear o signatário. A próxima versão chamada assinatura de anel, introduzida por Rivest et al. em [34], era um esquema autônomo, sem Gerente de Grupo e anonimato revogação. Várias modificações deste esquema apareceram mais tarde: assinatura de anel vinculável [26, 27, 17] permitiu determinar se duas assinaturas foram produzidas pelo mesmo membro do grupo, rastreáveis a assinatura do anel [24, 23] limitou o anonimato excessivo, fornecendo a possibilidade de rastrear o signatário do duas mensagens relativas à mesma metainformação (ou “tag” em termos de [24]). Uma construção criptográfica semelhante também é conhecida como assinatura de grupo ad-hoc [16, 38]. Isso enfatiza a formação arbitrária de grupos, enquanto os esquemas de assinatura de grupo/anel implicam uma conjunto fixo de membros. Na maior parte, nossa solução é baseada no trabalho “Assinatura de anel rastreável” de E. Fujisaki e K. Suzuki [24]. Para distinguir o algoritmo original e nossa modificação, chame o último de assinatura de toque única, enfatizando a capacidade do usuário de produzir apenas uma assinatura válida. assinatura sob sua chave privada. Enfraquecemos a propriedade de rastreabilidade e mantivemos a vinculabilidade apenas para fornecer unicidade: a chave pública pode aparecer em muitos conjuntos de verificação estrangeiros e o a chave privada pode ser usada para gerar uma assinatura anônima exclusiva. Em caso de gasto duplo tentativa, essas duas assinaturas serão vinculadas, mas não é necessário revelar o signatário para nossos propósitos. 4.2 Definições 4.2.1 Parâmetros de curva elíptica Como nosso algoritmo de assinatura base escolhemose utilizar o esquema rápido EdDSA, que é desenvolvido e implementado por D.J. Bernstein et al. [18]. Assim como o ECDSA de Bitcoin, é baseado na curva elíptica problema de logaritmo discreto, portanto nosso esquema também poderá ser aplicado a Bitcoin no futuro. Os parâmetros comuns são: q: um número primo; q = 2255 −19; d: um elemento de Fq; d = −121665/121666; E: uma equação de curva elíptica; −x2 + y2 = 1 + dx2y2; G: um ponto base; G = (x, −4/5); l: uma ordem prima do ponto base; eu = 2252 + 27742317777372353535851937790883648493; \(H_s\): uma função criptográfica hash \(\{0, 1\}^* \to \mathbb{F}_q\); \(H_p\): uma função determinística hash \(E(\mathbb{F}_q) \to E(\mathbb{F}_q)\). 4.2.2 Terminologia A privacidade aprimorada requer uma nova terminologia que não deve ser confundida com entidades Bitcoin. private ec-key é uma chave privada de curva elíptica padrão: um número \(a \in [1, l - 1]\); public ec-key é uma chave pública de curva elíptica padrão: um ponto A = aG; par de chaves único é um par de chaves eletrônicas privadas e públicas; 5 10 Linkability no sentido de “assinaturas de anel vinculáveis” significa que podemos dizer se duas transações de saída vieram da mesma fonte sem revelar quem é a fonte. Os autores enfraqueceram capacidade de vinculação de modo a (a) preservar a privacidade, mas ainda (b) detectar qualquer transação usando uma chave privada uma segunda vez como inválido. Ok, então esta é uma questão de ordem dos eventos. Considere o seguinte cenário. Minha mineração o computador terá o blockchain atual, terá seu próprio bloco de transações que chama legítimo, ele estará trabalhando nesse bloco em um quebra-cabeça proof-of-work e terá um lista de transações pendentes a serem adicionadas ao próximo bloco. Também enviará novos transações nesse conjunto de transações pendentes. Se eu não resolver o próximo bloco, mas outra pessoa fizer isso, recebo uma cópia atualizada do blockchain. O bloco em que eu estava trabalhando e minha lista de transações pendentes pode ter algumas transações que agora estão incorporadas no blockchain. Desvende meu bloco pendente, combine-o com minha lista de transações pendentes e chame isso meu conjunto de transações pendentes. Remova qualquer um que esteja agora oficialmente em blockchain. Agora, o que eu faço? Devo primeiro analisar e “remover todos os gastos duplos”? Por outro Por outro lado, devo pesquisar na lista e ter certeza de que cada chave privada ainda não foi usado, e se já tiver sido usado na minha lista, então recebi a primeira cópia primeiro e, portanto, qualquer cópia adicional é ilegítima. Assim, procedo simplesmente à exclusão de todas as instâncias após a primeira da mesma chave privada. A geometria algébrica nunca foi meu forte. http://en.wikipedia.org/wiki/EdDSA Tanta velocidade, muito uau. ESTA é geometria algébrica para a vitória. Não que eu saiba de alguma coisa sobre isso. Problematicamente ou não, os logs discretos estão ficando muito rápidos. E os computadores quânticos os comem para o café da manhã. http://link.springer.com/article/10.1007/s13389-012-0027-1 Este se torna um número realmente importante, mas não há explicação ou citação de como ele foi escolhido. Simplesmente escolher um único primo grande conhecido seria bom, mas se houver factos sobre este grande primo, que poderiam influenciar a nossa escolha. Diferentes variantes de cryptonote poderia escolher diferentes valores de tudo bem, mas não há discussão neste artigo sobre como isso escolha afetará nossas escolhas de outros parâmetros globais listados na página 5. Este artigo precisa de uma seção sobre como escolher valores de parâmetros.

a chave privada do usuário é um par (a, b) de duas ec-chaves privadas diferentes; chave de rastreamento é um par (a, B) de chave ec privada e pública (onde B = bG e a ̸= b); a chave pública do usuário é um par (A, B) de duas chaves públicas ec derivadas de (a, b); endereço padrão é uma representação de uma chave pública de usuário fornecida em uma string amigável com correção de erros; endereço truncado é uma representação da segunda metade (ponto B) de uma chave pública de usuário fornecida em uma string amigável com correção de erros. A estrutura da transação permanece semelhante à estrutura em Bitcoin: cada usuário pode escolher vários pagamentos recebidos independentes (saídas de transações), assine-os com o correspondente chaves privadas e enviá-las para diferentes destinos. Ao contrário do modelo de Bitcoin, onde um usuário possui uma chave privada e pública única, no modelo proposto, um remetente gera uma chave pública única com base no endereço do destinatário e alguns dados aleatórios. Neste sentido, uma transação de entrada para o mesmo destinatário é enviada para um chave pública única (não diretamente para um endereço exclusivo) e somente o destinatário pode recuperar a parte privada correspondente para resgatar seus fundos (usando sua chave privada exclusiva). O destinatário pode gastar os fundos usando uma assinatura, mantendo anônima sua propriedade e gastos reais. Os detalhes do protocolo são explicados nas próximas subseções. 4.3 Pagamentos não vinculáveis Os endereços Bitcoin clássicos, uma vez publicados, tornam-se identificadores inequívocos para entrada pagamentos, vinculando-os e vinculando-os aos pseudônimos do destinatário. Se alguém quiser receber uma transação “desamarrada”, ele deverá transmitir seu endereço ao remetente por um canal privado. Se ele quiser receber transações diferentes que não podem ser comprovadas como pertencentes ao mesmo proprietário ele deveria gerar todos os endereços diferentes e nunca publicá-los com seu próprio pseudônimo. Público Privado Alice Carol Endereço 1 de Bob Endereço 2 de Bob Chave 1 de Bob Chave 2 de Bob Bob Figura 2. Modelo tradicional de chaves/transações Bitcoin. Propomos uma solução que permite ao usuário publicar um único endereço e receber informações incondicionais pagamentos invinculáveis. O destino de cada saída do CryptoNote (por padrão) é uma chave pública, derivado do endereço do destinatário e dos dados aleatórios do remetente. A principal vantagem contra Bitcoin é que cada chave de destino é única por padrão (a menos que o remetente use os mesmos dados para cada de suas transações para o mesmo destinatário). Portanto, não existe tal questão como “reutilização de endereço” por design e nenhum observador pode determinar se alguma transação foi enviada para um endereço ou link específico dois endereços juntos. 6 a chave privada do usuário é um par (a, b) de duas ec-chaves privadas diferentes; chave de rastreamento é um par (a, B) de chave ec privada e pública (onde B = bG e a ̸= b); a chave pública do usuário é um par (A, B) de duas chaves públicas ec derivadas de (a, b); endereço padrão é uma representação de uma chave pública de usuário fornecida em uma string amigável com correção de erros; endereço truncado é uma representação da segunda metade (ponto B) de uma chave pública de usuário fornecida em uma string amigável com correção de erros. A estrutura da transação permanece semelhante à estrutura em Bitcoin: cada usuário pode escolher vários pagamentos recebidos independentes (saídas de transações), assine-os com o correspondente chaves privadas e enviá-las para diferentes destinos. Ao contrário do modelo de Bitcoin, onde um usuário possui uma chave privada e pública única, no modelo proposto, um remetente gera uma chave pública única com base no endereço do destinatário e alguns dados aleatórios. Neste sentido, uma transação de entrada para o mesmo destinatário é enviada para um chave pública única (não diretamente para um endereço exclusivo) e somente o destinatário pode recuperar a parte privada correspondente para resgatar seus fundos (usando sua chave privada exclusiva). O destinatário pode gastar os fundos usando uma assinatura, mantendo anônima sua propriedade e gastos reais. Os detalhes do protocolo são explicados nas próximas subseções. 4.3 Pagamentos não vinculáveis Os endereços Bitcoin clássicos, uma vez publicados, tornam-se identificadores inequívocos para entrada pagamentos, vinculando-os e vinculando-os aos pseudônimos do destinatário. Se alguém quiser receber uma transação “desamarrada”, ele deverá transmitir seu endereço ao remetente por um canal privado. Se ele quiser receber transações diferentes que não podem ser comprovadas como pertencentes ao mesmo proprietário ele deveria gerar todos os endereços diferentes e nunca publicá-los com seu próprio pseudônimo. Público Privado Alice Carol Endereço 1 de Bob Endereço 2 de Bob Chave 1 de Bob Chave 2 de Bob Bob Figura 2. Mod tradicional de chaves/transações Bitcoinel. Propomos uma solução que permite ao usuário publicar um único endereço e receber informações incondicionais pagamentos invinculáveis. O destino de cada saída do CryptoNote (por padrão) é uma chave pública, derivado do endereço do destinatário e dos dados aleatórios do remetente. A principal vantagem contra Bitcoin é que cada chave de destino é única por padrão (a menos que o remetente use os mesmos dados para cada de suas transações para o mesmo destinatário). Portanto, não existe tal questão como “reutilização de endereço” por design e nenhum observador pode determinar se alguma transação foi enviada para um endereço ou link específico dois endereços juntos. 6 11 Então é como Bitcoin, mas com caixas postais anônimas e infinitas, resgatáveis apenas pelo destinatário gerar uma chave privada que seja tão anônima quanto uma assinatura de anel pode ser. Bitcoin funciona desta forma. Se Alex tiver 0,112 Bitcoin em sua carteira que acabou de receber de Frank, ela realmente tem um documento assinado mensagem "Eu, [FRANK], envio 0,112 Bitcoin para [alex] + H0 + N0" onde 1) Frank assinou o mensagem com sua chave privada [FRANK], 2) Frank assinou a mensagem com a chave pública de Alex chave, [alex], 3) Frank incluiu alguma forma da história do bitcoin, H0, e 4) Frank inclui um bit aleatório de dados chamado nonce, N0. Se Alex quiser enviar 0.011 Bitcoin para Charlene, ela receberá a mensagem de Frank e definirá isso como H1 e assinará duas mensagens: uma para a transação dela e outra para a alteração. H1= "Eu, [FRANK], envio 0,112 Bitcoin para [alex] + H0 + N" "Eu, [ALEX], envio 0,011 Bitcoin para [charlene] + H1 + N1" "Eu, [ALEX], envio 0,101 Bitcoin como alteração para [alex] + H1 + N2." onde Alex assina ambas as mensagens com sua chave privada [ALEX], a primeira mensagem com a chave privada de Charlene chave pública [charlene], a segunda mensagem com a chave pública de Alex [alex], e incluindo a históricos e alguns nonces N1 e N2 gerados aleatoriamente de forma adequada. Cryptonote funciona desta maneira: Se Alex tiver 0,112 Cryptonote em sua carteira que acabou de receber de Frank, ela realmente tem um documento assinado mensagem "Eu, [alguém em um grupo ad-hoc], envio 0,112 Cryptonote para [um endereço único] + H0 +N0." Alex descobriu que esse era o dinheiro dela, verificando sua chave privada [ALEX] [um endereço único] para cada mensagem que passa, e se ela quiser gastá-lo, ela o faz em da seguinte maneira. Ela escolhe um destinatário do dinheiro, talvez Charlene tenha começado a votar a favor de ataques com drones, então Alex quer enviar dinheiro para Brenda. Então Alex procura a chave pública de Brenda, [brenda], e usa sua própria chave privada, [ALEX], para gerar um endereço único [ALEX+brenda]. Ela então escolhe uma coleção arbitrária C da rede de usuários de criptomoedas e ela constrói uma assinatura de anel deste grupo ad-hoc. Definimos nossa história como a mensagem anterior, adicionamos nonces e proceder normalmente? H1 = "Eu, [alguém em um grupo ad-hoc], envio 0,112 Cryptonote para [um endereço único] + H0 +N0." "Eu, [alguém da coleção C], envio 0,011 Cryptonote para [endereço único feito deALEX+brenda] + H1 + N1" "Eu, [alguém da coleção C], envio 0,101 Cryptonote como alteração para [endereço único feito de ALEX + alex] + H1 + N2" Agora, Alex e Brenda verificam todas as mensagens recebidas em busca de endereços únicos que foram criado usando sua chave. Se eles encontrarem alguma, então essa mensagem é sua própria e totalmente nova. criptonota! E mesmo assim, a transação ainda atingirá blockchain. Se as moedas entrando nesse endereço são conhecidos por serem enviados por criminosos, contribuintes políticos ou por comitês e contas com orçamentos rigorosos (ou seja, desfalque), ou se o novo proprietário dessas moedas cometer um erro e envia essas moedas para um endereço comum com moedas que ele possui, o gabarito do anonimato está em alta no bitcoin.

a chave privada do usuário é um par (a, b) de duas ec-chaves privadas diferentes; chave de rastreamento é um par (a, B) de chave ec privada e pública (onde B = bG e a ̸= b); a chave pública do usuário é um par (A, B) de duas chaves públicas ec derivadas de (a, b); endereço padrão é uma representação de uma chave pública de usuário fornecida em uma string amigável com correção de erros; endereço truncado é uma representação da segunda metade (ponto B) de uma chave pública de usuário fornecida em uma string amigável com correção de erros. A estrutura da transação permanece semelhante à estrutura em Bitcoin: cada usuário pode escolher vários pagamentos recebidos independentes (saídas de transações), assine-os com o correspondente chaves privadas e enviá-las para diferentes destinos. Ao contrário do modelo de Bitcoin, onde um usuário possui uma chave privada e pública única, no modelo proposto, um remetente gera uma chave pública única com base no endereço do destinatário e alguns dados aleatórios. Neste sentido, uma transação de entrada para o mesmo destinatário é enviada para um chave pública única (não diretamente para um endereço exclusivo) e somente o destinatário pode recuperar a parte privada correspondente para resgatar seus fundos (usando sua chave privada exclusiva). O destinatário pode gastar os fundos usando uma assinatura, mantendo anônima sua propriedade e gastos reais. Os detalhes do protocolo são explicados nas próximas subseções. 4.3 Pagamentos não vinculáveis Os endereços Bitcoin clássicos, uma vez publicados, tornam-se identificadores inequívocos para entrada pagamentos, vinculando-os e vinculando-os aos pseudônimos do destinatário. Se alguém quiser receber uma transação “desamarrada”, ele deverá transmitir seu endereço ao remetente por um canal privado. Se ele quiser receber transações diferentes que não podem ser comprovadas como pertencentes ao mesmo proprietário ele deveria gerar todos os endereços diferentes e nunca publicá-los com seu próprio pseudônimo. Público Privado Alice Carol Endereço 1 de Bob Endereço 2 de Bob Chave 1 de Bob Chave 2 de Bob Bob Figura 2. Modelo tradicional de chaves/transações Bitcoin. Propomos uma solução que permite ao usuário publicar um único endereço e receber informações incondicionais pagamentos invinculáveis. O destino de cada saída do CryptoNote (por padrão) é uma chave pública, derivado do endereço do destinatário e dos dados aleatórios do remetente. A principal vantagem contra Bitcoin é que cada chave de destino é única por padrão (a menos que o remetente use os mesmos dados para cada de suas transações para o mesmo destinatário). Portanto, não existe tal questão como “reutilização de endereço” por design e nenhum observador pode determinar se alguma transação foi enviada para um endereço ou link específico dois endereços juntos. 6 a chave privada do usuário é um par (a, b) de duas ec-chaves privadas diferentes; chave de rastreamento é um par (a, B) de chave ec privada e pública (onde B = bG e a ̸= b); a chave pública do usuário é um par (A, B) de duas chaves públicas ec derivadas de (a, b); endereço padrão é uma representação de uma chave pública de usuário fornecida em uma string amigável com correção de erros; endereço truncado é uma representação da segunda metade (ponto B) de uma chave pública de usuário fornecida em uma string amigável com correção de erros. A estrutura da transação permanece semelhante à estrutura em Bitcoin: cada usuário pode escolher vários pagamentos recebidos independentes (saídas de transações), assine-os com o correspondente chaves privadas e enviá-las para diferentes destinos. Ao contrário do modelo de Bitcoin, onde um usuário possui uma chave privada e pública única, no modelo proposto, um remetente gera uma chave pública única com base no endereço do destinatário e alguns dados aleatórios. Neste sentido, uma transação de entrada para o mesmo destinatário é enviada para um chave pública única (não diretamente para um endereço exclusivo) e somente o destinatário pode recuperar a parte privada correspondente para resgatar seus fundos (usando sua chave privada exclusiva). O destinatário pode gastar os fundos usando uma assinatura, mantendo anônima sua propriedade e gastos reais. Os detalhes do protocolo são explicados nas próximas subseções. 4.3 Pagamentos não vinculáveis Os endereços Bitcoin clássicos, uma vez publicados, tornam-se identificadores inequívocos para entrada pagamentos, vinculando-os e vinculando-os aos pseudônimos do destinatário. Se alguém quiser receber uma transação “desamarrada”, ele deverá transmitir seu endereço ao remetente por um canal privado. Se ele quiser receber transações diferentes que não podem ser comprovadas como pertencentes ao mesmo proprietário ele deveria gerar todos os endereços diferentes e nunca publicá-los com seu próprio pseudônimo. Público Privado Alice Carol Endereço 1 de Bob Endereço 2 de Bob Chave 1 de Bob Chave 2 de Bob Bob Figura 2. Mod tradicional de chaves/transações Bitcoinel. Propomos uma solução que permite ao usuário publicar um único endereço e receber informações incondicionais pagamentos invinculáveis. O destino de cada saída do CryptoNote (por padrão) é uma chave pública, derivado do endereço do destinatário e dos dados aleatórios do remetente. A principal vantagem contra Bitcoin é que cada chave de destino é única por padrão (a menos que o remetente use os mesmos dados para cada de suas transações para o mesmo destinatário). Portanto, não existe tal questão como “reutilização de endereço” por design e nenhum observador pode determinar se alguma transação foi enviada para um endereço ou link específico dois endereços juntos. 6 12 Portanto, em vez de os usuários enviarem moedas de um endereço (que na verdade é uma chave pública) para um endereço (outra chave pública) usando suas chaves privadas, os usuários estão enviando moedas de uma caixa postal única (que é gerado usando a chave pública de seus amigos) para uma caixa postal única (da mesma forma) usando seu próprias chaves privadas. De certa forma, estamos dizendo: "Ok, todos tirem as mãos do dinheiro enquanto ele está sendo transferido! Basta saber que nossas chaves podem abrir aquela caixa e aquela sabemos quanto dinheiro está na caixa. Nunca coloque suas impressões digitais na caixa postal ou realmente usá-lo, basta trocar a própria caixa cheia de dinheiro. Assim não sabemos quem enviou o quê, mas o conteúdo desses endereços públicos ainda é sem atrito, fungível, divisível e ainda possuímos todas as outras boas qualidades do dinheiro que desejamos, como o bitcoin." Um conjunto infinito de caixas postais. Você publica um endereço, eu tenho uma chave privada. Eu uso minha chave privada e seu endereço, e alguns dados aleatórios, para gerar uma chave pública. O algoritmo é projetado de tal forma que, desde o seu endereço foi usado para gerar a chave pública, apenas SUA chave privada funciona para desbloquear o mensagem. Uma observadora, Eva, vê você publicar seu endereço e vê a chave pública que anuncio. No entanto, ela não sabe se anunciei minha chave pública com base no seu endereço ou no dela, ou no de Brenda ou de Charlene, ou de quem quer que seja. Ela verifica sua chave privada com a chave pública que anunciei e vê que não funciona; não é o dinheiro dela. Ela não conhece a chave privada de mais ninguém e apenas o destinatário da mensagem possui a chave privada que pode desbloquear a mensagem. Então ninguém ouvir pode determinar quem recebeu o dinheiro e muito menos quem o recebeu.

Público Privado Alice Carol Chave única Chave única Chave única Bob Chave de Bob Endereço de Bob Figura 3. Modelo de chaves/transações do CryptoNote. Primeiro, o remetente realiza uma troca Diffie-Hellman para obter um segredo compartilhado de seus dados e metade do endereço do destinatário. Em seguida, ele calcula uma chave de destino única, usando o método compartilhado segredo e a segunda metade do endereço. Duas ec-keys diferentes são exigidas do destinatário para essas duas etapas, então um endereço CryptoNote padrão é quase duas vezes maior que uma carteira Bitcoin endereço. O receptor também realiza uma troca Diffie-Hellman para recuperar o correspondente chave secreta. Uma sequência de transação padrão é a seguinte: 1. Alice deseja enviar um pagamento para Bob, que publicou seu endereço padrão. Ela descompacta o endereço e obtém a chave pública de Bob (A, B). 2. Alice gera um \(r \in [1, l - 1]\) aleatório e calcula uma chave pública única \(P = H_s(rA)G +\) B. 3. Alice usa P como chave de destino para a saída e também empacota o valor R = rG (como parte da bolsa Diffie-Hellman) em algum ponto da transação. Observe que ela pode criar outras saídas com chaves públicas únicas: chaves de destinatários diferentes (Ai, Bi) implicam Pi diferentes mesmo com o mesmo r. Transação Chave pública Tx Saída de transmissão Quantidade Chave de destino R = rG P = Hs(rA)G + B Do receptor chave pública Dados aleatórios do remetente R (A, B) Figura 4. Estrutura de transação padrão. 4. Alice envia a transação. 5. Bob verifica cada transação que passa com sua chave privada (a, b) e calcula P ′ = Hs(aR)G + B. Se a transação de Alice com Bob como destinatário estivesse entre eles, então aR = arG = rA e P ′ = P. 7 Público Privado Alice Carol Chave única Chave única Chave única Bob Chave de Bob Endereço de Bob Figura 3. Modelo de chaves/transações do CryptoNote. Primeiro, o remetente realiza uma troca Diffie-Hellman para obter um segredo compartilhado de seus dados e metade do endereço do destinatário. Em seguida, ele calcula uma chave de destino única, usando o método compartilhado segredo e a segunda metade do endereço. Duas ec-keys diferentes são exigidas do destinatário para essas duas etapas, então um endereço CryptoNote padrão é quase duas vezes maior que uma carteira Bitcoin endereço. O receptor também realiza uma troca Diffie-Hellman para recuperar o correspondente chave secreta. Uma sequência de transação padrão é a seguinte: 1. Alice deseja enviar um pagamento para Bob, que publicou seu endereço padrão. Ela descompacta o endereço e obtém a chave pública de Bob (A, B). 2. Alice gera um \(r \in [1, l - 1]\) aleatório e calcula uma chave pública única \(P = H_s(rA)G +\) B. 3. Alice usa P como chave de destino para a saída e também empacota o valor R = rG (como parte da bolsa Diffie-Hellman) em algum ponto da transação. Observe que ela pode criar outras saídas com chaves públicas únicas: chaves de destinatários diferentes (Ai, Bi) implicam Pi diferentes mesmo com o mesmo r. Transação Chave pública Tx Saída de transmissão Quantidade Chave de destino R = rG P = Hs(rA)G + B Do receptor chave pública Dados aleatórios do remetente R (A, B) Figura 4. Estrutura de transação padrão. 4. Alice envia a transação. 5. Bob verifica cada transação que passa com sua chave privada (a, b) e calcula P ′ = Hs(aR)G + B. Se a transação de Alice com Bob como destinatário estivesse entre eles, então aR = arG = rA e P ′ = P. 7 13 Eu me pergunto o quanto seria doloroso implementar uma escolha de criptografia esquema. Elíptico ou não. Então, se algum esquema for quebrado no futuro, a moeda muda sem preocupação. Provavelmente um grande pé no saco. Ok, isso é exatamente o que acabei de explicar no meu comentário anterior. O tipo Diffie-Hellman as trocas são perfeitas. Digamos que Alex e Brenda tenham, cada um, um número secreto, A e B, e um número eles não se importam em manter segredo, a e b. Eles desejam gerar um segredo compartilhado sem Eva descobrindo isso. Diffie e Hellman encontraram uma maneira de Alex e Brenda compartilharem o números públicos a e b, mas não os números privados A e B, e geram um segredo compartilhado, K. Usando este segredo compartilhado, K, sem que Eva ouça para poder gerar o mesmo K, Alex e Brenda agora podem usar K como uma chave de criptografia secreta e repassar mensagens secretas e adiante. Veja como PODE funcionar, embora deva funcionar com números muito maiores que 100. Usaremos 100 porque trabalhar sobre os inteiros módulo 100 é equivalente a "jogar fora todos mas os dois últimos dígitos de um número." Alex e Brenda escolhem A, a, B e b. Eles mantêm A e B em segredo. Alex diz a Brenda seu valor de módulo 100 (apenas os dois últimos dígitos) e Brenda diz a Alex seu valor de b módulo 100. Agora Eva sabe (a,b) módulo 100. Mas Alex sabe (a,b,A) então ela pode calcular x=abA módulo 100.Alex corta todos, exceto o último dígito, porque estamos trabalhando sob o módulo inteiro 100 novamente. Da mesma forma, Brenda conhece (a,b,B) então ela pode calcular y=abB módulo 100. Alex agora pode publicar x e Brenda pode publicar y. Mas agora Alex pode calcular yA = abBA módulo 100, e Brenda pode calcular xB = abBA módulo 100. Ambos sabem o mesmo número! Mas tudo o que Eva ouviu foi (a,b,abA,abB). Ela não tem uma maneira fácil de calcular abA*B. Agora, esta é a maneira mais fácil e menos segura de pensar sobre a troca Diffe-Hellman. Existem versões mais seguras. Mas a maioria das versões funciona porque a fatoração inteira e a fatoração discreta logaritmos são difíceis e ambos os problemas são facilmente resolvidos por computadores quânticos. Vou verificar se existe alguma versão resistente ao quantum. http://en.wikipedia.org/wiki/Diffie%E2%80%93Hellman_key_exchange A "sequência txn padrão" listada aqui está faltando várias etapas, como ASSINATURAS. Eles são considerados garantidos aqui. O que é muito ruim, porque a ordem em que assinar coisas, as informações incluídas na mensagem assinada e assim por diante... tudo isso é extremamente importante para o protocolo. Errar um ou dois passos, mesmo que ligeiramente fora de ordem, ao implementar "o sequência de transação padrão" poderia colocar em questão a segurança de todo o sistema. Além disso, as provas apresentadas posteriormente no artigo podem não ser suficientemente rigorosas se o A estrutura sob a qual eles trabalham é definida de forma tão vaga quanto nesta seção.

Público Privado Alice Carol Chave única Chave única Chave única Bob Chave de Bob Endereço de Bob Figura 3. Modelo de chaves/transações do CryptoNote. Primeiro, o remetente realiza uma troca Diffie-Hellman para obter um segredo compartilhado de seus dados e metade do endereço do destinatário. Em seguida, ele calcula uma chave de destino única, usando o método compartilhado segredo e a segunda metade do endereço. Duas ec-keys diferentes são exigidas do destinatário para essas duas etapas, então um endereço CryptoNote padrão é quase duas vezes maior que uma carteira Bitcoin endereço. O receptor também realiza uma troca Diffie-Hellman para recuperar o correspondente chave secreta. Uma sequência de transação padrão é a seguinte: 1. Alice deseja enviar um pagamento para Bob, que publicou seu endereço padrão. Ela descompacta o endereço e obtém a chave pública de Bob (A, B). 2. Alice gera um \(r \in [1, l - 1]\) aleatório e calcula uma chave pública única \(P = H_s(rA)G +\) B. 3. Alice usa P como chave de destino para a saída e também empacota o valor R = rG (como parte da bolsa Diffie-Hellman) em algum ponto da transação. Observe que ela pode criar outras saídas com chaves públicas únicas: chaves de destinatários diferentes (Ai, Bi) implicam Pi diferentes mesmo com o mesmo r. Transação Chave pública Tx Saída de transmissão Quantidade Chave de destino R = rG P = Hs(rA)G + B Do receptor chave pública Dados aleatórios do remetente R (A, B) Figura 4. Estrutura de transação padrão. 4. Alice envia a transação. 5. Bob verifica cada transação que passa com sua chave privada (a, b) e calcula P ′ = Hs(aR)G + B. Se a transação de Alice com Bob como destinatário estivesse entre eles, então aR = arG = rA e P ′ = P. 7 Público Privado Alice Carol Chave única Chave única Chave única Bob Chave de Bob Endereço de Bob Figura 3. Modelo de chaves/transações do CryptoNote. Primeiro, o remetente realiza uma troca Diffie-Hellman para obter um segredo compartilhado de seus dados e metade do endereço do destinatário. Em seguida, ele calcula uma chave de destino única, usando o método compartilhado segredo e a segunda metade do endereço. Duas ec-keys diferentes são exigidas do destinatário para essas duas etapas, então um endereço CryptoNote padrão é quase duas vezes maior que uma carteira Bitcoin endereço. O receptor também realiza uma troca Diffie-Hellman para recuperar o correspondente chave secreta. Uma sequência de transação padrão é a seguinte: 1. Alice deseja enviar um pagamento para Bob, que publicou seu endereço padrão. Ela descompacta o endereço e obtém a chave pública de Bob (A, B). 2. Alice gera um \(r \in [1, l - 1]\) aleatório e calcula uma chave pública única \(P = H_s(rA)G +\) B. 3. Alice usa P como chave de destino para a saída e também empacota o valor R = rG (como parte da bolsa Diffie-Hellman) em algum ponto da transação. Observe que ela pode criar outras saídas com chaves públicas únicas: chaves de destinatários diferentes (Ai, Bi) implicam Pi diferentes mesmo com o mesmo r. Transação Chave pública Tx Saída de transmissão Quantidade Chave de destino R = rG P = Hs(rA)G + B Do receptor chave pública Dados aleatórios do remetente R (A, B) Figura 4. Estrutura de transação padrão. 4. Alice envia a transação. 5. Bob verifica cada transação que passa com sua chave privada (a, b) e calcula P ′ = Hs(aR)G + B. Se a transação de Alice com Bob como destinatário estivesse entre eles, então aR = arG = rA e P ′ = P. 7 14 Observe que o(s) autor(es?) fazem um péssimo trabalho em manter sua terminologia correta ao longo do texto. o texto, mas especialmente nesta próxima parte. A próxima encarnação deste artigo será necessariamente muito mais rigoroso. No texto eles se referem a P como sua chave pública única. No diagrama, eles se referem a R como sua "chave pública Tx" e P como sua "chave de destino". Se eu fosse reescrever isso, eu muito especificamente, apresente alguma terminologia antes de discutir essas seções. Este ell é enorme. Consulte a página 5. Quem escolhe ell? O diagrama ilustra que a chave pública da transação R = rG, que é aleatória e escolhida pelo remetente, não faz parte da saída Tx. Isso ocorre porque pode ser o mesmo para vários transações para várias pessoas e não é usado DEPOIS para gastar. Um novo R é gerado toda vez que você quiser transmitir uma nova transação do CryptoNote. Além disso, R é usado apenas para verificar se você é o destinatário da transação. Não são dados inúteis, mas são lixo para qualquer pessoa sem as chaves privadas associadas a (A,B). A chave Destino, por outro lado, P = Hs(rA)G + B faz parte da saída Tx. Todos vasculhar os dados de cada transação passante deve verificar seu próprio P* gerado este P para ver se eles possuem esta transação de passagem. Qualquer pessoa com uma saída de transação não gasta (UTXO) terá um monte desses Ps com quantias. Para gastard, eles assinar alguma nova mensagem incluindo P. Alice deve assinar esta transação com chaves privadas únicas associadas à(s) saída(s) de transação não gasta(s) Chave(s) de destino. Cada chave de destino de propriedade de Alice vem equipada com uma chave privada única também de propriedade (presumivelmente) de Alice. Toda vez que Alice quer enviar o conteúdo de uma chave de destino para mim, ou Bob, ou Brenda, ou Charlie ou Charlene, ela usa sua chave privada para assinar a transação. Após o recebimento da transação, receberei um novo Chave pública Tx, uma nova chave pública de destino e poderei recuperar uma nova chave privada única x. Combinando minha chave privada única, x, com o destino público da nova transação chave(s) é como enviamos uma nova transação

  1. Bob pode recuperar a chave privada única correspondente: x = Hs(aR) + b, então P = xG. Ele pode gastar essa saída a qualquer momento assinando uma transação com x. Transação Chave pública Tx Saída de transmissão Quantidade Chave de destino P′ = Hs(aR)G + bG chave pública única x = Hs(aR) + b chave privada única Do receptor chave privada (a, b) R P' ?= P Figura 5. Verificação de transação recebida. Como resultado, Bob recebe pagamentos, associados a chaves públicas únicas que são invinculável para um espectador. Algumas notas adicionais: • Quando Bob “reconhece” suas transações (ver passo 5), ele praticamente usa apenas metade de suas informações privadas: (a, B). Este par, também conhecido como chave de rastreamento, pode ser passado a um terceiro (Carol). Bob pode delegar a ela o processamento de novas transações. Bob não precisa confiar explicitamente em Carol, porque ela não pode recuperar a chave secreta única p sem a chave privada completa de Bob (a, b). Esta abordagem é útil quando Bob não tem largura de banda ou poder de computação (smartphones, carteiras de hardware, etc.). • Caso Alice queira provar que enviou uma transação para o endereço de Bob, ela poderá divulgar r ou usar qualquer tipo de protocolo de conhecimento zero para provar que ela conhece r (por exemplo, assinando a transação com r). • Se Bob quiser ter um endereço compatível com auditoria onde todas as transações recebidas sejam vinculável, ele poderá publicar sua chave de rastreamento ou usar um endereço truncado. Esse endereço representam apenas uma chave ec pública B, e a parte restante exigida pelo protocolo é derivado dele da seguinte forma: a = Hs(B) e A = Hs(B)G. Em ambos os casos, cada pessoa é capaz de “reconhecer” todas as transações recebidas de Bob, mas, é claro, ninguém pode gastar o fundos contidos neles sem a chave secreta b. 4.4 Assinaturas de toque únicas Um protocolo baseado em assinaturas de anel únicas permite que os usuários obtenham desvinculação incondicional. Infelizmente, tipos comuns de assinaturas criptográficas permitem rastrear transações até o seu respectivos remetentes e destinatários. Nossa solução para essa deficiência reside no uso de uma assinatura diferente tipo diferente daqueles atualmente usados em sistemas de dinheiro eletrônico. Primeiro forneceremos uma descrição geral do nosso algoritmo sem nenhuma referência explícita a dinheiro eletrônico. Uma assinatura de anel única contém quatro algoritmos: (GEN, SIG, VER, LNK): GEN: pega parâmetros públicos e gera um par ec (P, x) e uma chave pública I. SIG: pega uma mensagem m, um conjunto \(S'\) de chaves públicas {Pi}i̸=s, um par (Ps, xs) e gera uma assinatura \(\sigma\) e um conjunto \(S = \)S'\( \cup \{P_s\}\). 8
  2. Bob pode recuperar a chave privada única correspondente: x = Hs(aR) + b, então P = xG. Ele pode gastar essa saída a qualquer momento assinando uma transação com x. Transação Chave pública Tx Saída de transmissão Quantidade Chave de destino P′ = Hs(aR)G + bG chave pública única x = Hs(aR) + b chave privada única Do receptor chave privada (a,b) R P' ?=P Figura 5. Verificação de transação recebida. Como resultado, Bob recebe pagamentos, associados a chaves públicas únicas que são invinculável para um espectador. Algumas notas adicionais: • Quando Bob “reconhece” suas transações (ver passo 5), ele praticamente usa apenas metade de suas informações privadas: (a, B). Este par, também conhecido como chave de rastreamento, pode ser passado a um terceiro (Carol). Bob pode delegar a ela o processamento de novas transações. Bob não precisa confiar explicitamente em Carol, porque ela não pode recuperar a chave secreta única p sem a chave privada completa de Bob (a, b). Esta abordagem é útil quando Bob não tem largura de banda ou poder de computação (smartphones, carteiras de hardware, etc.). • Caso Alice queira provar que enviou uma transação para o endereço de Bob, ela poderá divulgar r ou usar qualquer tipo de protocolo de conhecimento zero para provar que ela conhece r (por exemplo, assinando a transação com r). • Se Bob quiser ter um endereço compatível com auditoria onde todas as transações recebidas sejam vinculável, ele poderá publicar sua chave de rastreamento ou usar um endereço truncado. Esse endereço representam apenas uma chave ec pública B, e a parte restante exigida pelo protocolo é derivado dele da seguinte forma: a = Hs(B) e A = Hs(B)G. Em ambos os casos, cada pessoa é capaz de “reconhecer” todas as transações recebidas de Bob, mas, é claro, ninguém pode gastar o fundos contidos neles sem a chave secreta b. 4.4 Assinaturas de toque únicas Um protocolo baseado em assinaturas de anel únicas permite que os usuários obtenham desvinculação incondicional. Infelizmente, tipos comuns de assinaturas criptográficas permitem rastrear transações até o seu respectivos remetentes e destinatários. Nossa solução para essa deficiência reside no uso de uma assinatura diferente tipo diferente daqueles atualmente usados em sistemas de dinheiro eletrônico. Primeiro forneceremos um geradordescrição geral do nosso algoritmo sem nenhuma referência explícita a dinheiro eletrônico. Uma assinatura de anel única contém quatro algoritmos: (GEN, SIG, VER, LNK): GEN: pega parâmetros públicos e gera um par ec (P, x) e uma chave pública I. SIG: pega uma mensagem m, um conjunto \(S'\) de chaves públicas {Pi}i̸=s, um par (Ps, xs) e gera uma assinatura \(\sigma\) e um conjunto \(S = \)S'\( \cup \{P_s\}\). 8 15 Qual é a aparência de uma saída de transação não gasta aqui? O diagrama sugere que a saída da transação consiste apenas em dois pontos de dados: valor e chave de destino. Mas isso não é suficiente porque quando eu tentar gastar essa “saída” ainda precisarei saber R=rG. Lembre-se, r é escolhido pelo remetente, e R é a) usado para reconhecer as notas criptográficas recebidas como suas próprio eb) usado para gerar a chave privada única usada para "reivindicar" sua criptonota. A parte disso que eu não entendo? Pegando o teórico "tudo bem, temos esses assinaturas e transações, e nós as repassamos "para o mundo da programação "ok, quais informações especificamente constituem um indivíduo UTXO?" A melhor maneira de responder a essa pergunta é se aprofundar no corpo do código completamente não comentado. Muito bem, equipe bytecoin. Lembre-se: linkabilidade significa "a mesma pessoa enviou?" e desvinculabilidade significa "fez o mesmo pessoa recebe?". Portanto, um sistema pode ser vinculável ou não vinculável, desvinculável ou não desvinculável. Irritante, eu sei. Então, quando Nic van Saberhagen diz aqui "...pagamentos recebidos [estão] associados a pagamentos únicos chaves públicas que não podem ser vinculadas ao espectador", vamos ver o que ele quer dizer. Primeiro, considere uma situação em que Alice envia a Bob duas transações separadas do mesmo endereço para o mesmo endereço. No universo Bitcoin, Alice já cometeu o erro de enviar do mesmo endereço e, portanto, a transação falhou em nosso desejo de limitação capacidade de ligação. Além disso, como ela enviou o dinheiro para o mesmo endereço, ela falhou em nosso desejo. para desvinculação. Esta transação de bitcoin era (totalmente) vinculável e não desvinculável. Por outro lado, no universo da criptonota, digamos que Alice envie alguma criptonota para Bob, usando o endereço público de Bob. Ela escolhe como seu conjunto ofuscante de chaves públicas todas as chaves públicas conhecidas. chaves na área metropolitana de Washington DC. Alex gera uma chave pública única usando sua própria informações e informações públicas de Bob. Ela envia o dinheiro, e qualquer observador irá só ser capaz de colher "Alguém da área metropolitana de Washington DC enviou 2,3 notas criptográficas para o endereço público único XYZ123." Temos um controle probabilístico sobre a vinculação aqui, então chamaremos isso de "quase não vinculável". Também vemos apenas as chaves públicas para as quais o dinheiro é enviado uma única vez. Mesmo se suspeitássemos do receptor era Bob, não temos suas chaves privadas e, portanto, não podemos testar se uma transação passageira pertence a Bob e muito menos gerar sua chave privada única para resgatar sua criptonota. Então isso é, na verdade, totalmente "invincável". Então, este é o truque mais legal de todos. Quem quer realmente confiar em outro MtGox? Nós podemos estar confortável armazenando alguma quantidade de BTC na Coinbase, mas o que há de mais moderno em segurança de bitcoin é uma carteira física. O que é inconveniente. Nesse caso, você pode doar metade de sua chave privada sem comprometer sua segurança. própria capacidade de gastar dinheiro. Ao fazer isso, tudo o que você está fazendo é dizer a alguém como quebrar a desvinculação. O outro propriedades do NC agindo como uma moeda são preservadas, como prova contra gastos duplos e tudo mais.

  3. Bob pode recuperar a chave privada única correspondente: x = Hs(aR) + b, então P = xG. Ele pode gastar essa saída a qualquer momento assinando uma transação com x. Transação Chave pública Tx Saída de transmissão Quantidade Chave de destino P′ = Hs(aR)G + bG chave pública única x = Hs(aR) + b chave privada única Do receptor chave privada (a, b) R P' ?= P Figura 5. Verificação de transação recebida. Como resultado, Bob recebe pagamentos, associados a chaves públicas únicas que são invinculável para um espectador. Algumas notas adicionais: • Quando Bob “reconhece” suas transações (ver passo 5), ele praticamente usa apenas metade de suas informações privadas: (a, B). Este par, também conhecido como chave de rastreamento, pode ser passado a um terceiro (Carol). Bob pode delegar a ela o processamento de novas transações. Bob não precisa confiar explicitamente em Carol, porque ela não pode recuperar a chave secreta única p sem a chave privada completa de Bob (a, b). Esta abordagem é útil quando Bob não tem largura de banda ou poder de computação (smartphones, carteiras de hardware, etc.). • Caso Alice queira provar que enviou uma transação para o endereço de Bob, ela poderá divulgar r ou usar qualquer tipo de protocolo de conhecimento zero para provar que ela conhece r (por exemplo, assinando a transação com r). • Se Bob quiser ter um endereço compatível com auditoria onde todas as transações recebidas sejam vinculável, ele poderá publicar sua chave de rastreamento ou usar um endereço truncado. Esse endereço representam apenas uma chave ec pública B, e a parte restante exigida pelo protocolo é derivado dele da seguinte forma: a = Hs(B) e A = Hs(B)G. Em ambos os casos, cada pessoa é capaz de “reconhecer” todas as transações recebidas de Bob, mas, é claro, ninguém pode gastar o fundos contidos neles sem a chave secreta b. 4.4 Assinaturas de toque únicas Um protocolo baseado em assinaturas de anel únicas permite que os usuários obtenham desvinculação incondicional. Infelizmente, tipos comuns de assinaturas criptográficas permitem rastrear transações até o seu respectivos remetentes e destinatários. Nossa solução para essa deficiência reside no uso de uma assinatura diferente tipo diferente daqueles atualmente usados em sistemas de dinheiro eletrônico. Primeiro forneceremos uma descrição geral do nosso algoritmo sem nenhuma referência explícita a dinheiro eletrônico. Uma assinatura de anel única contém quatro algoritmos: (GEN, SIG, VER, LNK): GEN: pega parâmetros públicos e gera um par ec (P, x) e uma chave pública I. SIG: pega uma mensagem m, um conjunto \(S'\) de chaves públicas {Pi}i̸=s, um par (Ps, xs) e gera uma assinatura \(\sigma\) e um conjunto \(S = \)S'\( \cup \{P_s\}\). 8

  4. Bob pode recuperar a chave privada única correspondente: x = Hs(aR) + b, então P = xG. Ele pode gastar essa saída a qualquer momento assinando uma transação com x. Transação Chave pública Tx Saída de transmissão Quantidade Chave de destino P′ = Hs(aR)G + bG chave pública única x = Hs(aR) + b chave privada única Do receptor chave privada (a,b) R P' ?=P Figura 5. Verificação de transação recebida. Como resultado, Bob recebe pagamentos, associados a chaves públicas únicas que são invinculável para um espectador. Algumas notas adicionais: • Quando Bob “reconhece” suas transações (ver passo 5), ele praticamente usa apenas metade de suas informações privadas: (a, B). Este par, também conhecido como chave de rastreamento, pode ser passado a um terceiro (Carol). Bob pode delegar a ela o processamento de novas transações. Bob não precisa confiar explicitamente em Carol, porque ela não pode recuperar a chave secreta única p sem a chave privada completa de Bob (a, b). Esta abordagem é útil quando Bob não tem largura de banda ou poder de computação (smartphones, carteiras de hardware, etc.). • Caso Alice queira provar que enviou uma transação para o endereço de Bob, ela poderá divulgar r ou usar qualquer tipo de protocolo de conhecimento zero para provar que ela conhece r (por exemplo, assinando a transação com r). • Se Bob quiser ter um endereço compatível com auditoria onde todas as transações recebidas sejam vinculável, ele poderá publicar sua chave de rastreamento ou usar um endereço truncado. Esse endereço representam apenas uma chave ec pública B, e a parte restante exigida pelo protocolo é derivado dele da seguinte forma: a = Hs(B) e A = Hs(B)G. Em ambos os casos, cada pessoa é capaz de “reconhecer” todas as transações recebidas de Bob, mas, é claro, ninguém pode gastar o fundos contidos neles sem a chave secreta b. 4.4 Assinaturas de toque únicas Um protocolo baseado em assinaturas de anel únicas permite que os usuários obtenham desvinculação incondicional. Infelizmente, tipos comuns de assinaturas criptográficas permitem rastrear transações até o seu respectivos remetentes e destinatários. Nossa solução para essa deficiência reside no uso de uma assinatura diferente tipo diferente daqueles atualmente usados em sistemas de dinheiro eletrônico. Primeiro forneceremos um geradordescrição geral do nosso algoritmo sem nenhuma referência explícita a dinheiro eletrônico. Uma assinatura de anel única contém quatro algoritmos: (GEN, SIG, VER, LNK): GEN: pega parâmetros públicos e gera um par ec (P, x) e uma chave pública I. SIG: pega uma mensagem m, um conjunto \(S'\) de chaves públicas {Pi}i̸=s, um par (Ps, xs) e gera uma assinatura \(\sigma\) e um conjunto \(S = \)S'\( \cup \{P_s\}\). 8 16 Sim, agora temos a) um endereço de pagamento eb) um ID de pagamento. Um crítico poderia perguntar "será que realmente precisamos fazer isso? Afinal, se um comerciante receber 112.00678952 CN exatamente, e esse foi o meu pedido, e eu tenho uma captura de tela ou um recibo ou algo assim, não é? grau insano de precisão é suficiente?" A resposta é "talvez, na maioria das vezes, no dia-a-dia, transações presenciais." Contudo, a situação mais comum (especialmente no mundo digital) é esta: um comerciante vende um conjunto de objetos, cada um com um preço fixo. Digamos que o objeto A seja 0,001 CN, o objeto B seja 0,01 CN e o objeto C é 0,1 CN. Agora, se o comerciante receber um pedido de 1.618 CN, há muitos, muitos (muitas!) maneiras de organizar um pedido para um cliente. E assim, sem algum tipo de identificação de pagamento, identificar o chamado pedido “único” de um cliente com o chamado custo “único” de seu a ordem torna-se impossível. Ainda mais engraçado: se tudo na minha loja online custasse exatamente 1,0 CN, e recebo 1.000 clientes por dia? E você quer provar que comprou exatamente 3 objetos há duas semanas? Sem um ID de pagamento? Boa sorte, amigo. Resumindo: quando Bob publica um endereço de pagamento, ele pode acabar publicando também um ID de pagamento também (veja, por exemplo, depósitos Poloniex XMR). Isto é diferente do que está descrito no texto aqui onde Alice é quem gera o ID de pagamento. Deve haver alguma maneira de Bob gerar um ID de pagamento também. (a, B) Lembre-se de que a chave de rastreamento (a,B) pode ser publicada; perder o sigilo do valor de 'a' será não violar sua capacidade de gastar ou permitir que pessoas roubem de você (eu acho... isso teria a ser comprovado), simplesmente permitirá que as pessoas vejam todas as transações recebidas. Um endereço truncado, conforme descrito neste parágrafo, simplesmente ocupa a parte “privada” da chave e o gera a partir da parte "pública". Revelar o valor de 'a' removerá a não vinculabilidade mas preservará o restante das transações. O autor quer dizer “não desvinculável” porque desvinculável refere-se ao receptor e vinculável refere-se ao remetente. Também está claro que o autor não percebeu que havia dois aspectos diferentes na vinculabilidade. Como, afinal, a transação é um objeto direcionado em um gráfico, haverá duas questões: "essas duas transações vão para a mesma pessoa?" e "essas duas transações estão chegando da mesma pessoa?" Esta é uma política de "não retorno" sob a qual a propriedade de desvinculação do CryptoNote é condicional. Ou seja, Bob pode escolher que suas transações recebidas não sejam desvinculáveis usando esta política. Esta é uma afirmação que eles comprovam no Modelo Random Oracle. Chegaremos a isso; o aleatório A Oracle tem prós e contras.

VER: pega uma mensagem m, um conjunto S, uma assinatura \(\sigma\) e gera “verdadeiro” ou “falso”. LNK: pega um conjunto I = {Ii}, uma assinatura \(\sigma\) e gera “vinculado” ou “indep”. A ideia por trás do protocolo é bastante simples: um usuário produz uma assinatura que pode ser verificado por um conjunto de chaves públicas em vez de uma chave pública única. A identidade do signatário é indistinguível dos outros usuários cujas chaves públicas estão no conjunto até que o proprietário produza uma segunda assinatura usando o mesmo par de chaves. Chaves privadas x0 \(\cdots\) xii \(\cdots\) xn Chaves públicas P0 \(\cdots\) Pi \(\cdots\) Pn Anel Assinatura sinal verificar Figura 6. Anonimato da assinatura do anel. GEN: O signatário escolhe uma chave secreta aleatória \(x \in [1, l - 1]\) e calcula a chave correspondente chave pública P = xG. Além disso, ele calcula outra chave pública I = xHp(P) que iremos chamamos de “imagem chave”. SIG: O signatário gera uma assinatura de anel única com conhecimento zero não interativo prova usando as técnicas de [21]. Ele seleciona um subconjunto aleatório \(S'\) de n dos outros usuários chaves públicas Pi, seu próprio par de chaves (x, P) e imagem chave I. Seja \(0 \leq s \leq n\) o índice secreto do signatário em S (de modo que sua chave pública seja Ps). Ele escolhe um {qi | eu = 0. . . n} e {wi | eu = 0. . . n, i ̸= s} de (1 . . . l) e aplica o seguintes transformações: Li = ( qiG, se eu = s qiG + wiPi, se eu ̸= s Ri = ( qiHp(Pi), se eu = s qiHp(Pi) + wiI, se eu ̸= s A próxima etapa é obter o desafio não interativo: c = Hs(m, L1,..., Ln, R1,..., Rn) Finalmente, o signatário calcula a resposta: ci =    eu, se eu ̸= s c- nP eu=0 ci mod eu, se eu = s ri = ( qi, se eu ̸= s qs-csx mod eu, se eu = s A assinatura resultante é \(\sigma\) = (I, c1, . . . , cn, r1, . . . , rn). 9 VER: pega uma mensagem m, um conjunto S, uma assinatura \(\sigma\) e gera “verdadeiro” ou “falso”. LNK: pega um conjunto I = {Ii}, uma assinatura \(\sigma\) e gera “vinculado” ou “indep”. A ideia por trás do protocolo é bastante simples: um usuário produz uma assinatura que pode ser verificado por um conjunto de chaves públicas em vez de uma chave pública única. A identidade do signatário é indistinguível dos outros usuários cujas chaves públicas estão no conjunto até que o proprietário produza uma segunda assinatura usando o mesmo par de chaves. Chaves privadas x0 \(\cdots\) xii \(\cdots\) xn Chaves públicas P0 \(\cdots\) Pi \(\cdots\) Pn Anel Assinatura sinal verificar Figura 6. Anonimato da assinatura do anel. GEN: O signatário escolhe uma chave secreta aleatória \(x \in [1, l - 1]\) e calcula a chave correspondente chave pública P = xG. Além disso, ele calcula outra chave pública I = xHp(P) que iremos chamamos de “imagem chave”. SIG: O signatário gera uma assinatura de anel única com conhecimento zero não interativo prova usando as técnicas de [21]. Ele seleciona um subconjunto aleatório \(S'\) de n dos outros usuários chaves públicas Pi, seu próprio par de chaves (x, P) e imagem chave I. Seja \(0 \leq s \leq n\) o índice secreto do signatário em S (de modo que sua chave pública seja Ps). Ele escolhe um {qi | eu = 0. . . n} e {wi | eu = 0. . . n, i ̸= s} de (1 . . . l) e aplica o seguintes transformações: Li = ( qiG, se eu = s qiG + wiPi, se eu ̸= s Ri = ( qiHp(Pi), se eu = s qiHp(Pi) + wiI, se eu ̸= s A próxima etapa é obter o desafio não interativo: c = Hs(m, L1,..., Ln, R1,..., Rn) Finalmente, o signatário calcula a resposta: ci =    eu, se eu ̸= s c- nP eu=0 ci mod eu, se eu = s ri = ( qi, se eu ̸= s qs-csx mod eu, se eu = s A assinatura resultante é \(\sigma\) = (I, c1, . . . , cn, r1, . . . , rn). 9 17 Talvez isso seja estúpido, mas é preciso ter cuidado ao unir S e P_s. Se você apenas anexar o última chave pública até o fim, a desvinculação é quebrada porque qualquer pessoa que verifica as transações passadas pode apenas verificar a última chave pública listada em cada transação e boom. Essa é a chave pública associado ao remetente. Portanto, após a união, um gerador de números pseudoaleatórios deve ser usado para permutar as chaves públicas escolhidas. "...até que o proprietário produza uma segunda assinatura usando o mesmo par de chaves." Desejo que o(s) autor(es?) iria elaborar sobre isso. Acredito que isso significa "certifique-se de que toda vez que você escolher um conjunto de chaves públicas para ofuscar você mesmo, você escolhe um conjunto completamente novo, sem duas teclas iguais." O que parece um condição bastante forte a ser imposta à desvinculação. Talvez "você escolha um novo conjunto aleatório de todas as chaves possíveis" com a suposição de que, embora as interseções não triviais inevitavelmente acontecer, eles não acontecerão com frequência. De qualquer forma, preciso me aprofundar nessa afirmação. Isso está gerando a assinatura do anel. Provas de conhecimento zero são incríveis: eu desafio você a me provar que conhece um segredo sem revelar o segredo. Por exemplo, digamos que estamos na entrada de uma caverna em forma de donut, e na parte de trás da caverna (além da vista da entrada) há um oporta de mão única para a qual você afirme que você tem a chave. Se você for em uma direção, ela sempre deixará você passar, mas se você for na outra direção, você precisa de uma chave. Mas você nem quer me MOSTRAR a chave, muito menos mostre-me que isso abre a porta. Mas você quer me provar que sabe como abrir o porta. No ambiente interativo, jogo uma moeda. Cara é para a esquerda, coroa para a direita e você desce o caverna em forma de donut para qualquer direção que a moeda o direcione. Na parte de trás, além da minha vista, você abra a porta para voltar pelo outro lado. Repetimos o experimento de lançamento de moeda até que eu tenha certeza de que você tem a chave. Mas essa é claramente a prova INTERATIVA de conhecimento zero. Existem versões não interativas nas quais você e eu nunca precisamos nos comunicar; dessa forma, nenhum bisbilhoteiro poderá interferir. http://en.wikipedia.org/wiki/Zero-knowledge_proof Isto é inverso da definição anterior.

VER: pega uma mensagem m, um conjunto S, uma assinatura \(\sigma\) e gera “verdadeiro” ou “falso”. LNK: pega um conjunto I = {Ii}, uma assinatura \(\sigma\) e gera “vinculado” ou “indep”. A ideia por trás do protocolo é bastante simples: um usuário produz uma assinatura que pode ser verificado por um conjunto de chaves públicas em vez de uma chave pública única. A identidade do signatário é indistinguível dos outros usuários cujas chaves públicas estão no conjunto até que o proprietário produza uma segunda assinatura usando o mesmo par de chaves. Chaves privadas x0 \(\cdots\) xii \(\cdots\) xn Chaves públicas P0 \(\cdots\) Pi \(\cdots\) Pn Anel Assinatura sinal verificar Figura 6. Anonimato da assinatura do anel. GEN: O signatário escolhe uma chave secreta aleatória \(x \in [1, l - 1]\) e calcula a chave correspondente chave pública P = xG. Além disso, ele calcula outra chave pública I = xHp(P) que iremos chamamos de “imagem chave”. SIG: O signatário gera uma assinatura de anel única com conhecimento zero não interativo prova usando as técnicas de [21]. Ele seleciona um subconjunto aleatório \(S'\) de n dos outros usuários chaves públicas Pi, seu próprio par de chaves (x, P) e imagem chave I. Seja \(0 \leq s \leq n\) o índice secreto do signatário em S (de modo que sua chave pública seja Ps). Ele escolhe um {qi | eu = 0. . . n} e {wi | eu = 0. . . n, i ̸= s} de (1 . . . l) e aplica o seguintes transformações: Li = ( qiG, se eu = s qiG + wiPi, se eu ̸= s Ri = ( qiHp(Pi), se eu = s qiHp(Pi) + wiI, se eu ̸= s A próxima etapa é obter o desafio não interativo: c = Hs(m, L1,..., Ln, R1,..., Rn) Finalmente, o signatário calcula a resposta: ci =    eu, se eu ̸= s c- nP eu=0 ci mod eu, se eu = s ri = ( qi, se eu ̸= s qs-csx mod eu, se eu = s A assinatura resultante é \(\sigma\) = (I, c1, . . . , cn, r1, . . . , rn). 9 VER: pega uma mensagem m, um conjunto S, uma assinatura \(\sigma\) e gera “verdadeiro” ou “falso”. LNK: pega um conjunto I = {Ii}, uma assinatura \(\sigma\) e gera “vinculado” ou “indep”. A ideia por trás do protocolo é bastante simples: um usuário produz uma assinatura que pode ser verificado por um conjunto de chaves públicas em vez de uma chave pública única. A identidade do signatário é indistinguível dos outros usuários cujas chaves públicas estão no conjunto até que o proprietário produza uma segunda assinatura usando o mesmo par de chaves. Chaves privadas x0 \(\cdots\) xii \(\cdots\) xn Chaves públicas P0 \(\cdots\) Pi \(\cdots\) Pn Anel Assinatura sinal verificar Figura 6. Anonimato da assinatura do anel. GEN: O signatário escolhe uma chave secreta aleatória \(x \in [1, l - 1]\) e calcula a chave correspondente chave pública P = xG. Além disso, ele calcula outra chave pública I = xHp(P) que iremos chamamos de “imagem chave”. SIG: O signatário gera uma assinatura de anel única com conhecimento zero não interativo prova usando as técnicas de [21]. Ele seleciona um subconjunto aleatório \(S'\) de n dos outros usuários chaves públicas Pi, seu próprio par de chaves (x, P) e imagem chave I. Seja \(0 \leq s \leq n\) o índice secreto do signatário em S (de modo que sua chave pública seja Ps). Ele escolhe um {qi | eu = 0. . . n} e {wi | eu = 0. . . n, i ̸= s} de (1 . . . l) e aplica o seguintes transformações: Li = ( qiG, se eu = s qiG + wiPi, se eu ̸= s Ri = ( qiHp(Pi), se eu = s qiHp(Pi) + wiI, se eu ̸= s A próxima etapa é obter o desafio não interativo: c = Hs(m, L1,..., Ln, R1,..., Rn) Finalmente, o signatário calcula a resposta: ci =    eu, se eu ̸= s c- nP eu=0 ci mod eu, se eu = s ri = ( qi, se eu ̸= s qs-csx mod eu, se eu = s A assinatura resultante é \(\sigma\) = (I, c1, . . . , cn, r1, . . . , rn). 9 18 Toda esta área é agnóstica em relação às criptomoedas, simplesmente descrevendo o algoritmo de assinatura do anel sem referência a moedas. Suspeito que parte da notação seja consistente com o restante do artigo, embora. Por exemplo, x é a chave secreta “aleatória” escolhida em GEN, que fornece a chave pública P e imagem de chave pública I. Este valor de x é o valor que Bob calcula na parte 6, página 8. Portanto, este é começando a esclarecer parte da confusão da descrição anterior. Isso é legal; o dinheiro não está sendo transferido do "endereço público de Alice para o endereço público de Bob endereço." Ele está sendo transferido de endereço único para endereço único. Então, de certa forma, é assim que as coisas funcionam. Se Alex tiver algumas criptomoedas porque alguém os enviou para ela, isso significa que ela possui as chaves privadas necessárias para enviá-los a Bob. Ela usa uma troca Diffie-Hellman usando informações públicas de Bob para gerar um novo endereço único e as criptomoedas são transferidas para esse endereço. Agora, como uma troca DH (presumivelmente segura) foi usada para gerar o novo endereço único para o qual Alex enviou seu CN, Bob é o único com as chaves privadas necessárias para repetir o acima. Então agora, Bob é Alex. http://en.wikipedia.org/wiki/Piecewise#Notation_and_interpretation A soma deve ser indexada em j e não em i. Cada c_i é lixo aleatório (já que w_i é aleatório) exceto a bunda c_iassociada à chave real envolvida nesta assinatura. O valor de c é a hash das informações anteriores. Acho que isso pode conter um erro de digitação pior do que reutilizar o índice 'i', porque c_s parece ser implicitamente, e não explicitamente, definido. Na verdade, se considerarmos esta equação com fé, então determinaremos que c_s = (1/2)c - (1/2) soma_i neq s c_i. Ou seja, hash menos um monte de números aleatórios. Por outro lado, se este somatório se destina a ser lido "c_s = (c - sum_j neq s c_j) mod l", então pegamos o hash de nossas informações anteriores, geramos um monte de números aleatórios, subtraia todos esses números aleatórios de hash e isso nos dá c_s. Isto parece ser o que "deveria" estar acontecendo, dada minha intuição, e corresponde à etapa de verificação na página 10. Mas a intuição não é matemática. Vou me aprofundar nisso. O mesmo que antes; tudo isso será lixo aleatório, exceto aquele associado ao real chave pública do signatário x. Só que desta vez é mais o que eu esperaria da estrutura: r_i é aleatório para i!=s e r_s é determinado apenas pelo segredo x e pelos valores indexados em s de q_i e c_i.

VER: O verificador verifica a assinatura aplicando as transformações inversas: ( eu' i = riG + ciPi R′ i = riHp(Pi) + ciI Finalmente, o verificador verifica se nP eu=0 ci ?= Hs(m, L′ 0, . . . , eu' n, R′ 0, . . . , R′ n) mod l Se esta igualdade estiver correta, o verificador executa o algoritmo LNK. Caso contrário, o verificador rejeita a assinatura. LNK: O verificador verifica se I foi usado em assinaturas anteriores (esses valores são armazenados no conjunto I). Usos múltiplos implicam que duas assinaturas foram produzidas sob a mesma chave secreta. O significado do protocolo: ao aplicar transformações L, o signatário prova que conhece tal x que pelo menos um Pi = xG. Para tornar esta prova não repetível, introduzimos a imagem chave como I = xHp(P). O signatário usa os mesmos coeficientes (ri, ci) para provar quase a mesma afirmação: ele conhece tal x que pelo menos um \(H_p(P_i) = I \cdot x^{-1}\). Se o mapeamento \(x \to I\) for uma injeção: 1. Ninguém pode recuperar a chave pública da imagem chave e identificar o signatário; 2. O signatário não pode fazer duas assinaturas com I’s diferentes e o mesmo x. Uma análise completa de segurança é fornecida no Apêndice A. 4,5 Transação CryptoNote padrão Ao combinar ambos os métodos (chaves públicas não vinculáveis e assinatura de anel não rastreável), Bob consegue novo nível de privacidade em comparação com o esquema Bitcoin original. Requer que ele armazene apenas uma chave privada (a, b) e publicação (A, B) para começar a receber e enviar transações anônimas. Ao validar cada transação, Bob realiza adicionalmente apenas duas multiplicações de curva elíptica e uma adição por saída para verificar se uma transação pertence a ele. Para todos os seus saída Bob recupera um par de chaves único (pi, Pi) e o armazena em sua carteira. Quaisquer entradas podem ser provaram circunstancialmente ter o mesmo proprietário apenas se aparecerem em uma única transação. Em na verdade, esse relacionamento é muito mais difícil de estabelecer devido à assinatura única do anel. Com uma assinatura de anel, Bob pode efetivamente ocultar todas as entradas entre as de outra pessoa; tudo possível gastadores serão equiprováveis, mesmo a proprietária anterior (Alice) não tem mais informações do que qualquer observador. Ao assinar sua transação, Bob especifica n saídas estrangeiras com o mesmo valor que seu saída, misturando todos eles sem a participação de outros usuários. O próprio Bob (assim como qualquer outra pessoa) não sabe se algum desses pagamentos foi gasto: uma saída pode ser usada em milhares de assinaturas como fator de ambiguidade e nunca como alvo de ocultação. O duplo a verificação de gastos ocorre na fase LNK ao verificar o conjunto de imagens-chave usadas. Bob pode escolher o grau de ambigüidade sozinho: n = 1 significa que a probabilidade que ele tem gasto, a saída tem 50% de probabilidade, n = 99 dá 1%. O tamanho da assinatura resultante aumenta linearmente como O (n + 1), portanto, o anonimato aprimorado custa para Bob taxas de transação extras. Ele também pode defina n = 0 e faça com que sua assinatura de anel consista em apenas um elemento, no entanto, isso irá instantaneamente revelá-lo como um gastador. 10 VER: O verificador verifica a assinatura aplicando as transformações inversas: ( eu' i = riG + ciPi R′ i = riHp(Pi) + ciI Finalmente, o verificador verifica se nP eu=0 ci ?= Hs(m, L′ 0, . . . , eu' n, R' 0, . . . , R' n) mod l Se esta igualdade estiver correta, o verificador executa o algoritmo LNK. Caso contrário, o verificador rejeita a assinatura. LNK: O verificador verifica se I foi usado em assinaturas anteriores (esses valores são armazenados no conjunto I). Usos múltiplos implicam que duas assinaturas foram produzidas sob a mesma chave secreta. O significado do protocolo: ao aplicar transformações L, o signatário prova que conhece tal x que pelo menos um Pi = xG. Para tornar esta prova não repetível, introduzimos a imagem chave como I = xHp(P). O signatário usa os mesmos coeficientes (ri, ci) para provar quase a mesma afirmação: ele conhece tal x que pelo menos um \(H_p(P_i) = I \cdot x^{-1}\). Se o mapeamento \(x \to I\) for uma injeção: 1. Ninguém pode recuperar a chave pública da imagem chave e identificar o signatário; 2. O signatário não pode fazer duas assinaturas com I’s diferentes e o mesmo x. Uma análise completa de segurança é fornecida no Apêndice A. 4,5 Transação CryptoNote padrão Ao combinar ambos os métodos (chaves públicas não vinculáveis e assinatura de anel não rastreável), Bob consegue novo nível de privacidade em comparação com o esquema Bitcoin original. Requer que ele armazene apenas uma chave privada (a, b) e publicação (A, B) para começar a receber e enviar transações anônimas. Ao validar cada transação, Bob realiza adicionalmente apenas duas multiplicações de curva elíptica e uma adição por saída para verificar se uma transação pertence a ele. Para todos os seus saída Bob recupera um par de chaves único (pi, Pi) e sto guarda em sua carteira. Quaisquer entradas podem ser provaram circunstancialmente ter o mesmo proprietário apenas se aparecerem em uma única transação. Em na verdade, esse relacionamento é muito mais difícil de estabelecer devido à assinatura única do anel. Com uma assinatura de anel, Bob pode efetivamente ocultar todas as entradas entre as de outra pessoa; tudo possível gastadores serão equiprováveis, mesmo a proprietária anterior (Alice) não tem mais informações do que qualquer observador. Ao assinar sua transação, Bob especifica n saídas estrangeiras com o mesmo valor que seu saída, misturando todos eles sem a participação de outros usuários. O próprio Bob (assim como qualquer outra pessoa) não sabe se algum desses pagamentos foi gasto: uma saída pode ser usada em milhares de assinaturas como fator de ambiguidade e nunca como alvo de ocultação. O duplo a verificação de gastos ocorre na fase LNK ao verificar o conjunto de imagens-chave usadas. Bob pode escolher o grau de ambigüidade sozinho: n = 1 significa que a probabilidade que ele tem gasto, a saída tem 50% de probabilidade, n = 99 dá 1%. O tamanho da assinatura resultante aumenta linearmente como O (n + 1), portanto, o anonimato aprimorado custa para Bob taxas de transação extras. Ele também pode defina n = 0 e faça com que sua assinatura de anel consista em apenas um elemento, no entanto, isso irá instantaneamente revelá-lo como um gastador. 10 19 Neste ponto, estou terrivelmente confuso. Alex recebe uma mensagem M com assinatura (I,c_1, ..., c_n, r_1, ..., r_n) e lista de públicos teclas S. e ela executa VER. Isso irá calcular L_i’ e R_i’ Isso verifica que c_s = c - sum_i neq s c_i na página anterior. No começo eu estava MUITO (ha) confuso. Qualquer um pode calcular L_i’ e R_i’. Na verdade, cada r_i e c_i foram publicados na assinatura sigma junto com o valor de I. O conjunto S = P_i de todas as chaves públicas também foi publicado. Então, qualquer um que tenha visto o sigma e o conjunto de as chaves S = P_i obterão os mesmos valores para L_i’ e R_i’ e, portanto, verificarão a assinatura. Mas então me lembrei que esta seção descreve simplesmente um algoritmo de assinatura, não uma "verificação se assinado, verifique se ENVIADO PARA MIM e, em caso afirmativo, vá gastar o dinheiro." Este é SIMPLESMENTE o parte de assinatura do jogo. Estou interessado em ler o Apêndice A quando finalmente chegar lá. Eu gostaria de ver uma comparação completa operação por operação do Cryptonote com Bitcoin. Além disso, eletricidade/sustentabilidade. Quais partes dos algoritmos constituem a “entrada” aqui? A entrada da transação, acredito, é um Valor e um conjunto de UTXOs que somam um valor maior que o Quantidade. Isto não está claro. “Alvo de esconderijo?” Pensei nisso por alguns minutos e ainda não consegui idéia mais nebulosa do que isso poderia significar. Um ataque de gasto duplo pode ser executado apenas manipulando a chave usada percebida de um nó conjunto de imagens \(I\). "Grau de ambiguidade" = n mas o número total de chaves públicas incluídas na transação é n+1. Ou seja, o grau de ambiguidade seria “quantas OUTRAS pessoas você quer em a multidão?" A resposta provavelmente será, por padrão, “tantas quanto possível”.

VER: O verificador verifica a assinatura aplicando as transformações inversas: ( eu' i = riG + ciPi R′ i = riHp(Pi) + ciI Finalmente, o verificador verifica se nP eu=0 ci ?= Hs(m, L′ 0, . . . , eu' n, R' 0, . . . , R' n) mod l Se esta igualdade estiver correta, o verificador executa o algoritmo LNK. Caso contrário, o verificador rejeita a assinatura. LNK: O verificador verifica se I foi usado em assinaturas anteriores (esses valores são armazenados no conjunto I). Usos múltiplos implicam que duas assinaturas foram produzidas sob a mesma chave secreta. O significado do protocolo: ao aplicar transformações L, o signatário prova que conhece tal x que pelo menos um Pi = xG. Para tornar esta prova não repetível, introduzimos a imagem chave como I = xHp(P). O signatário usa os mesmos coeficientes (ri, ci) para provar quase a mesma afirmação: ele conhece tal x que pelo menos um \(H_p(P_i) = I \cdot x^{-1}\). Se o mapeamento \(x \to I\) for uma injeção: 1. Ninguém pode recuperar a chave pública da imagem chave e identificar o signatário; 2. O signatário não pode fazer duas assinaturas com I’s diferentes e o mesmo x. Uma análise completa de segurança é fornecida no Apêndice A. 4,5 Transação CryptoNote padrão Ao combinar ambos os métodos (chaves públicas não vinculáveis e assinatura de anel não rastreável), Bob consegue novo nível de privacidade em comparação com o esquema Bitcoin original. Requer que ele armazene apenas uma chave privada (a, b) e publicação (A, B) para começar a receber e enviar transações anônimas. Ao validar cada transação, Bob realiza adicionalmente apenas duas multiplicações de curva elíptica e uma adição por saída para verificar se uma transação pertence a ele. Para todos os seus saída Bob recupera um par de chaves único (pi, Pi) e o armazena em sua carteira. Quaisquer entradas podem ser provaram circunstancialmente ter o mesmo proprietário apenas se aparecerem em uma única transação. Em na verdade, esse relacionamento é muito mais difícil de estabelecer devido à assinatura única do anel. Com uma assinatura de anel, Bob pode efetivamente ocultar todas as entradas entre as de outra pessoa; tudo possível gastadores serão equiprováveis, mesmo a proprietária anterior (Alice) não tem mais informações do que qualquer observador. Ao assinar sua transação, Bob especifica n saídas estrangeiras com o mesmo valor que seu saída, misturando todos eles sem a participação de outros usuários. O próprio Bob (assim como qualquer outra pessoa) não sabe se algum desses pagamentos foi gasto: uma saída pode ser usada em milhares de assinaturas como fator de ambiguidade e nunca como alvo de ocultação. O duplo a verificação de gastos ocorre na fase LNK ao verificar o conjunto de imagens-chave usadas. Bob pode escolher o grau de ambigüidade sozinho: n = 1 significa que a probabilidade que ele tem gasto, a saída tem 50% de probabilidade, n = 99 dá 1%. O tamanho da assinatura resultante aumenta linearmente como O (n + 1), portanto, o anonimato aprimorado custa para Bob taxas de transação extras. Ele também pode defina n = 0 e faça com que sua assinatura de anel consista em apenas um elemento, no entanto, isso irá instantaneamente revelá-lo como um gastador. 10 VER: O verificador verifica a assinatura aplicando as transformações inversas: ( eu' i = riG + ciPi R′ i = riHp(Pi) + ciI Finalmente, o verificador verifica se nP eu=0 ci ?= Hs(m, L′ 0, . . . , eu' n, R' 0, . . . , R' n) mod l Se esta igualdade estiver correta, o verificador executa o algoritmo LNK. Caso contrário, o verificador rejeita a assinatura. LNK: O verificador verifica se I foi usado em assinaturas anteriores (esses valores são armazenados no conjunto I). Usos múltiplos implicam que duas assinaturas foram produzidas sob a mesma chave secreta. O significado do protocolo: ao aplicar transformações L, o signatário prova que conhece tal x que pelo menos um Pi = xG. Para tornar esta prova não repetível, introduzimos a imagem chave como I = xHp(P). O signatário usa os mesmos coeficientes (ri, ci) para provar quase a mesma afirmação: ele conhece tal x que pelo menos um \(H_p(P_i) = I \cdot x^{-1}\). Se o mapeamento \(x \to I\) for uma injeção: 1. Ninguém pode recuperar a chave pública da imagem chave e identificar o signatário; 2. O signatário não pode fazer duas assinaturas com I’s diferentes e o mesmo x. Uma análise completa de segurança é fornecida no Apêndice A. 4,5 Transação CryptoNote padrão Ao combinar ambos os métodos (chaves públicas não vinculáveis e assinatura de anel não rastreável), Bob consegue novo nível de privacidade em comparação com o esquema Bitcoin original. Requer que ele armazene apenas uma chave privada (a, b) e publicação (A, B) para começar a receber e enviar transações anônimas. Ao validar cada transação, Bob realiza adicionalmente apenas duas multiplicações de curva elíptica e uma adição por saída para verificar se uma transação pertence a ele. Para todos os seus saída Bob recupera um par de chaves único (pi, Pi) e sto guarda em sua carteira. Quaisquer entradas podem ser provaram circunstancialmente ter o mesmo proprietário apenas se aparecerem em uma única transação. Em na verdade, esse relacionamento é muito mais difícil de estabelecer devido à assinatura única do anel. Com uma assinatura de anel, Bob pode efetivamente ocultar todas as entradas entre as de outra pessoa; tudo possível gastadores serão equiprováveis, mesmo a proprietária anterior (Alice) não tem mais informações do que qualquer observador. Ao assinar sua transação, Bob especifica n saídas estrangeiras com o mesmo valor que seu saída, misturando todos eles sem a participação de outros usuários. O próprio Bob (assim como qualquer outra pessoa) não sabe se algum desses pagamentos foi gasto: uma saída pode ser usada em milhares de assinaturas como fator de ambiguidade e nunca como alvo de ocultação. O duplo a verificação de gastos ocorre na fase LNK ao verificar o conjunto de imagens-chave usadas. Bob pode escolher o grau de ambigüidade sozinho: n = 1 significa que a probabilidade que ele tem gasto, a saída tem 50% de probabilidade, n = 99 dá 1%. O tamanho da assinatura resultante aumenta linearmente como O (n + 1), portanto, o anonimato aprimorado custa para Bob taxas de transação extras. Ele também pode defina n = 0 e faça com que sua assinatura de anel consista em apenas um elemento, no entanto, isso irá instantaneamente revelá-lo como um gastador. 10 20 Isso é interessante; anteriormente, fornecemos uma maneira para um receptor, Bob, fazer todas as entradas transações não desvinculáveis, seja escolhendo metade de suas chaves privadas de forma determinística ou publicando metade de suas chaves privadas como públicas. Este é um tipo de política sem retorno. Aqui, vemos uma maneira de um remetente, Alex, escolher uma única transação de saída como vinculável, mas na verdade isso revela Alex como o remetente de toda a rede. Este NÃO é um tipo de política sem retorno. Isso é transação por transação. Existe uma terceira política? Um destinatário, Bob, pode gerar um ID de pagamento exclusivo para Alex que nunca muda, talvez usando uma troca Diffe-Hellman? Se alguém incluir esse pagamento ID empacotado em algum lugar de sua transação para o endereço de Bob, deve ter vindo de Alex. Dessa forma, Alex não precisa se revelar para toda a rede ao optar por vincular um determinado transação, mas ela ainda pode se identificar perante a pessoa para quem envia seu dinheiro. Não é isso que a Poloniex faz?

Transação Entrada de transmissão Saída0 . . . Saída . . . Saída Imagem principal Assinaturas Assinatura do anel Chave de destino Saída1 Chave de destino Saída Transações estrangeiras Saída do remetente Chave de destino Par de chaves único Único chave privada Eu = xHp(P) P,x Figura 7. Geração de assinatura de anel em uma transação padrão. 5 Prova de trabalho igualitária Nesta seção propomos e fundamentamos o novo algoritmo proof-of-work. Nosso objetivo principal é fechar a lacuna entre os mineradores de CPU (maioria) e GPU/FPGA/ASIC (minoria). É apropriado que alguns usuários possam ter uma certa vantagem sobre outros, mas seus investimentos deve crescer pelo menos linearmente com a potência. De forma mais geral, a produção de dispositivos para fins especiais tem que ser o menos lucrativo possível. 5.1 Trabalhos relacionados O protocolo Bitcoin proof-of-work original usa a função de precificação com uso intensivo de CPU SHA-256. Consiste principalmente em operadores lógicos básicos e depende exclusivamente da velocidade computacional de processador, portanto, é perfeitamente adequado para implementação multicore/conveyer. No entanto, os computadores modernos não estão limitados apenas pelo número de operações por segundo, mas também pelo tamanho da memória. Embora alguns processadores possam ser substancialmente mais rápidos que outros [8], os tamanhos de memória são menos propensos a variar entre as máquinas. As funções de preço ligadas à memória foram introduzidas pela primeira vez por Abadi et al e foram definidas como “funções cujo tempo de computação é dominado pelo tempo gasto no acesso à memória” [15]. A ideia principal é construir um algoritmo alocando um grande bloco de dados (“scratchpad”) dentro da memória que pode ser acessada de forma relativamente lenta (por exemplo, RAM) e “acessando um sequência imprevisível de locais” dentro dele. Um bloco deve ser grande o suficiente para fazer a preservação os dados mais vantajosos do que recalculá-los para cada acesso. O algoritmo também deve evita o paralelismo interno, portanto, N threads simultâneos devem exigir N vezes mais memória de uma vez. Dwork et al [22] investigaram e formalizaram esta abordagem levando-os a sugerir outra variante da função de precificação: “Mbound”. Mais uma obra pertence a F. Coelho [20], que 11 Transação Entrada de transmissão Saída0 . . . Saída . . . Saída Imagem principal Assinaturas Assinatura do anel Chave de destino Saída1 Chave de destino Saída Transações estrangeiras Saída do remetente Chave de destino Par de chaves único Único chave privada Eu = xHp(P) P,x Figura 7. Geração de assinatura de anel em uma transação padrão. 5 Prova de trabalho igualitária Nesta seção propomos e fundamentamos o novo algoritmo proof-of-work. Nosso objetivo principal é fechar a lacuna entre os mineradores de CPU (maioria) e GPU/FPGA/ASIC (minoria). É apropriado que alguns usuários possam ter uma certa vantagem sobre outros, mas seus investimentos deve crescer pelo menos linearmente com a potência. De forma mais geral, a produção de dispositivos para fins especiais tem que ser o menos lucrativo possível. 5.1 Trabalhos relacionados O protocolo Bitcoin proof-of-work original usa a função de precificação com uso intensivo de CPU SHA-256. Consiste principalmente em operadores lógicos básicos e depende exclusivamente da velocidade computacional de processador, portanto, é perfeitamente adequado para implementação multicore/conveyer. No entanto, os computadores modernos não estão limitados apenas pelo número de operações por segundo, mas também pelo tamanho da memória. Embora alguns processadores possam ser substancialmente mais rápidos que outros [8], os tamanhos de memória são menos propensos a variar entre as máquinas. As funções de preço ligadas à memória foram introduzidas pela primeira vez por Abadi et al e foram definidas como “funções cujo tempo de computação é dominado pelo tempo gasto no acesso à memória” [15]. A ideia principal é construir um algoritmo alocando um grande bloco de dados (“scratchpad”) dentro da memória que pode ser acessada de forma relativamente lenta (por exemplo, RAM) e “acessando um sequência imprevisível de locais” dentro dele. Um bloco deve ser grande o suficiente para fazer a preservação os dados mais vantajosos do que recalculá-los para cada acesso. O algoritmo também deve evita o paralelismo interno, portanto, N threads simultâneos devem exigir N vezes mais memória de uma vez. Dwork et al [22] investigaram e formalizaram esta abordagem levando-os a sugerir outra variante da função de precificação: “Mbound”. Mais uma obra pertence a F. Coelho [20], que 11 21 Estes são, aparentemente, nossos UTXO: valores e chaves de destino. Se Alex é quem está construindo esta transação padrão e está enviando para Bob, então Alex também possui as chaves privadas para cada um deles. Gosto muito deste diagrama, porque ele responde a algumas perguntas anteriores. Uma entrada Txn consiste de um conjunto de saídas Txn e um keminha imagem. Em seguida, é assinado com uma assinatura circular, incluindo todos das chaves privadas que Alex possui para todas as transações estrangeiras envolvidas no negócio. O A saída Txn consiste em um valor e uma chave de destino. O destinatário da transação pode, à vontade, gere sua chave privada única, conforme descrito anteriormente no artigo, para gastar o dinheiro. Será um prazer descobrir o quanto isso corresponde ao código real... Não, Nic van Saberhagen descreve vagamente algumas propriedades de um algoritmo de prova de trabalho, sem realmente descrever esse algoritmo. O próprio algoritmo CryptoNight EXIGIRÁ uma análise profunda. Quando li isso, gaguejei. Deveria o investimento crescer pelo menos linearmente com o poder, ou deveria o investimento cresce no máximo linearmente com a potência? E então eu percebi; Eu, como minerador ou investidor, geralmente penso em "quanto poder posso obter para um investimento?" e não "quanto investimento é necessário para uma quantidade fixa de energia?" Claro, denote investimento por I e poder por P. Se I(P) é investimento em função do poder e P(I) é o poder em função do investimento, eles serão inversos um do outro (onde quer que podem existir inversos). E se I(P) for mais rápido que linear, então P(I) será mais lento que linear. Portanto, haverá uma taxa de retorno reduzida para os investidores. Ou seja, o que o autor está dizendo aqui é: "com certeza, à medida que você investe mais, você vai conseguir mais poder. Mas deveríamos tentar fazer disso uma taxa de retorno reduzida." Os investimentos em CPU acabarão sendo sublineares, eventualmente; a questão é se os autores projetaram um algoritmo POW que forçará os ASICs a fazer isso também. Uma hipotética “moeda futura” deveria sempre minerar com os recursos mais lentos/mais limitados? O artigo de Abadi et al (que tem como autores alguns engenheiros do Google e da Microsoft) é, essencialmente, usando o fato de que nos últimos anos o tamanho da memória teve um tamanho muito menor variação entre máquinas do que a velocidade do processador e com uma relação investimento-potência mais do que linear. Em alguns anos, isso poderá ter que ser reavaliado! Tudo é uma corrida armamentista... Construir uma função hash é difícil; construir uma função hash que satisfaça essas restrições parece ser mais difícil. Este artigo parece não ter nenhuma explicação sobre o real hashalgoritmo CryptoNight. Eu acho que é uma implementação do SHA-3 com muita memória, baseada nas postagens do fórum, mas não tenho ideia... e esse é o ponto. Deve ser explicado.

propôs a solução mais eficaz: “Hokkaido”. Até onde sabemos, o último trabalho baseado na ideia de pesquisas pseudo-aleatórias em um grande array é o algoritmo conhecido como “scrypt” por C. Percival [32]. Ao contrário das funções anteriores, ele se concentra em derivação de chave, e não sistemas proof-of-work. Apesar deste fato, o scrypt pode servir ao nosso propósito: funciona bem como uma função de precificação no problema de conversão parcial hash, como SHA-256 em Bitcoin. Até agora, o scrypt já foi aplicado em Litecoin [14] e em alguns outros forks Bitcoin. No entanto, a sua implementação não está realmente limitada à memória: a relação “tempo de acesso à memória / time” não é grande o suficiente porque cada instância usa apenas 128 KB. Isso permite que mineradores de GPU ser cerca de 10 vezes mais eficaz e continua a deixar a possibilidade de criar relativamente dispositivos de mineração baratos, mas altamente eficientes. Além disso, a própria construção do scrypt permite uma troca linear entre tamanho de memória e Velocidade da CPU devido ao fato de que cada bloco do scratchpad é derivado apenas do anterior. Por exemplo, você pode armazenar cada segundo bloco e recalcular os outros de forma preguiçosa, ou seja, apenas quando for necessário. Os índices pseudo-aleatórios são considerados uniformemente distribuídos, portanto, o valor esperado dos recálculos dos blocos adicionais é 1 \(2 \cdot N\), onde N é o número de iterações. O tempo total de cálculo aumenta menos da metade porque também há operações independentes de tempo (tempo constante), como preparar o scratchpad e hashing em cada iteração. Economizar 2/3 da memória custa 1 \(3 \cdot N\) + 1 3 \(\cdot\) \(2 \cdot N\) = N recálculos adicionais; 9/10 resulta em 1 \(10 \cdot N\) + . . . + 1 \(10 \cdot 9 \cdot N\) = 4,5N. É fácil mostrar que armazenar apenas 1 s de todos os blocos aumenta o tempo menos que por um fator de s−1 2. Isto, por sua vez, implica que uma máquina com uma CPU 200 vezes mais rápido que os chips modernos podem armazenar apenas 320 bytes do scratchpad. 5.2 O algoritmo proposto Propomos um novo algoritmo limitado à memória para a função de precificação proof-of-work. Depende de acesso aleatório a uma memória lenta e enfatiza a dependência da latência. Ao contrário de criptografar cada novo bloco (64 bytes de comprimento) depende de todos os blocos anteriores. Como resultado, uma hipótese “economizador de memória” deve aumentar exponencialmente sua velocidade de cálculo. Nosso algoritmo requer cerca de 2 Mb por instância pelos seguintes motivos: 1. Cabe no cache L3 (por núcleo) dos processadores modernos, que deve se tornar mainstream em alguns anos; 2. Um megabyte de memória interna é um tamanho quase inaceitável para um pipeline ASIC moderno; 3. As GPUs podem executar centenas de instâncias simultâneas, mas são limitadas de outras maneiras: A memória GDDR5 é mais lenta que o cache L3 da CPU e notável por sua largura de banda, não velocidade de acesso aleatório. 4. Uma expansão significativa do scratchpad exigiria um aumento nas iterações, o que em turno implica um aumento geral do tempo. Chamadas “pesadas” em uma rede p2p sem confiança podem levar a vulnerabilidades graves, porque os nós são obrigados a verificar o proof-of-work de cada novo bloco. Se um nó gastar uma quantidade considerável de tempo em cada avaliação hash, ele poderá ser facilmente DDoS causado por uma enxurrada de objetos falsos com dados de trabalho arbitrários (valores nonce). 12 propôs a solução mais eficaz: “Hokkaido”. Até onde sabemos, o último trabalho baseado na ideia de pesquisas pseudo-aleatórias em um grande array é o algoritmo conhecido como “scrypt” por C. Percival [32]. Ao contrário das funções anteriores, ele se concentra em derivação de chave, e não sistemas proof-of-work. Apesar deste fato, o scrypt pode servir ao nosso propósito: funciona bem como uma função de precificação no problema de conversão parcial hash, como SHA-256 em Bitcoin. Até agora, o scrypt já foi aplicado em Litecoin [14] e em alguns outros forks Bitcoin. No entanto, a sua implementação não está realmente limitada à memória: a relação “tempo de acesso à memória / time” não é grande o suficiente porque cada instância usa apenas 128 KB. Isso permite que mineradores de GPU ser cerca de 10 vezes mais eficaz e continua a deixar a possibilidade de criar relativamente dispositivos de mineração baratos, mas altamente eficientes. Além disso, a própria construção do scrypt permite uma troca linear entre tamanho de memória e Velocidade da CPU devido ao fato de que cada bloco do scratchpad é derivado apenas do anterior. Por exemplo, você pode armazenar cada segundo bloco e recalcular os outros de forma preguiçosa, ou seja, apenas quando for necessário. Os índices pseudo-aleatórios são considerados uniformemente distribuídos, portanto, o valor esperado dos recálculos dos blocos adicionais é 1 \(2 \cdot N\), ondeN é o número de iterações. O tempo total de cálculo aumenta menos da metade porque também há operações independentes de tempo (tempo constante), como preparar o scratchpad e hashing em cada iteração. Economizar 2/3 da memória custa 1 \(3 \cdot N\) + 1 3 \(\cdot\) \(2 \cdot N\) = N recálculos adicionais; 9/10 resulta em 1 \(10 \cdot N\) + . . . + 1 \(10 \cdot 9 \cdot N\) = 4,5N. É fácil mostrar que armazenar apenas 1 s de todos os blocos aumenta o tempo menos que por um fator de s−1 2. Isto, por sua vez, implica que uma máquina com uma CPU 200 vezes mais rápido que os chips modernos podem armazenar apenas 320 bytes do scratchpad. 5.2 O algoritmo proposto Propomos um novo algoritmo limitado à memória para a função de precificação proof-of-work. Depende de acesso aleatório a uma memória lenta e enfatiza a dependência da latência. Ao contrário de criptografar cada novo bloco (64 bytes de comprimento) depende de todos os blocos anteriores. Como resultado, uma hipótese “economizador de memória” deve aumentar exponencialmente sua velocidade de cálculo. Nosso algoritmo requer cerca de 2 Mb por instância pelos seguintes motivos: 1. Cabe no cache L3 (por núcleo) dos processadores modernos, que deve se tornar mainstream em alguns anos; 2. Um megabyte de memória interna é um tamanho quase inaceitável para um pipeline ASIC moderno; 3. As GPUs podem executar centenas de instâncias simultâneas, mas são limitadas de outras maneiras: A memória GDDR5 é mais lenta que o cache L3 da CPU e notável por sua largura de banda, não velocidade de acesso aleatório. 4. Uma expansão significativa do scratchpad exigiria um aumento nas iterações, o que em turno implica um aumento geral do tempo. Chamadas “pesadas” em uma rede p2p sem confiança podem levar a vulnerabilidades graves, porque os nós são obrigados a verificar o proof-of-work de cada novo bloco. Se um nó gastar uma quantidade considerável de tempo em cada avaliação hash, ele poderá ser facilmente DDoS causado por uma enxurrada de objetos falsos com dados de trabalho arbitrários (valores nonce). 12 22 Deixa pra lá, é uma moeda criptografada? Onde está o algoritmo? Tudo o que vejo é um anúncio. É aqui que o Cryptonote, se seu algoritmo PoW valer a pena, realmente brilhará. Não é realmente SHA-256, não é realmente criptografado. É novo, vinculado à memória e não recursivo.

6 Outras vantagens 6.1 Emissão suave O limite superior para a quantidade total de moedas digitais CryptoNote é: MSupply = 264 −1 unidades atômicas. Esta é uma restrição natural baseada apenas nos limites de implementação, não na intuição como “N moedas deveriam ser suficientes para qualquer pessoa”. Para garantir a suavidade do processo de emissão, usamos a seguinte fórmula para bloco recompensas: BaseReward = (MSupply −A) ≫18, onde A é a quantidade de moedas geradas anteriormente. 6.2 Parâmetros ajustáveis 6.2.1 Dificuldade CryptoNote contém um algoritmo de segmentação que altera a dificuldade de cada bloco. Isto diminui o tempo de reação do sistema quando a taxa de rede hash está crescendo ou diminuindo intensamente, preservando uma taxa de bloqueio constante. O método Bitcoin original calcula a relação do valor real e intervalo de tempo alvo entre os últimos blocos de 2016 e usa-o como multiplicador para o atual dificuldade. Obviamente isto é inadequado para recálculos rápidos (devido à grande inércia) e resulta em oscilações. A ideia geral por trás do nosso algoritmo é somar todo o trabalho concluído pelos nós e divida pelo tempo que gastaram. A medida do trabalho são os valores de dificuldade correspondentes em cada bloco. Mas devido a carimbos de data/hora imprecisos e não confiáveis, não podemos determinar a data exata intervalo de tempo entre blocos. Um usuário pode mudar seu carimbo de data/hora para o futuro e para a próxima vez intervalos podem ser improvavelmente pequenos ou até negativos. Presumivelmente, haverá poucos incidentes de desse tipo, para que possamos apenas classificar os carimbos de data e hora e eliminar os valores discrepantes (ou seja, 20%). A gama de os valores restantes são o tempo gasto em 80% dos blocos correspondentes. 6.2.2 Limites de tamanho Os usuários pagam pelo armazenamento do blockchain e terão direito a votar no seu tamanho. Cada mineiro lida com a compensação entre equilibrar os custos e o lucro das taxas e define seu próprio “soft-limit” para criação de blocos. Além disso, a regra básica para o tamanho máximo do bloco é necessária para evitando que blockchain seja inundado com transações falsas, no entanto, este valor deve não ser codificado. Seja MN o valor mediano dos últimos N tamanhos de blocos. Então o “limite rígido” para o tamanho de aceitar blocos é \(2 \cdot M_N\). Ele evita o inchaço do blockchain, mas ainda permite que o limite crescer lentamente com o tempo, se necessário. O tamanho da transação não precisa ser limitado explicitamente. É limitado pelo tamanho de um bloco; e se alguém quiser criar uma transação enorme com centenas de entradas/saídas (ou com (o elevado grau de ambiguidade nas assinaturas de anéis), ele pode fazê-lo pagando uma taxa suficiente. 6.2.3 Penalidade por excesso de tamanho Um minerador ainda tem a capacidade de encher um bloco com suas próprias transações sem taxa até o limite máximo. tamanho 2 \(\cdot\) MB. Embora apenas a maioria dos mineradores possa alterar o valor mediano, ainda há uma 13 6 Outras vantagens 6.1 Emissão suave O limite superior para a quantidade total de moedas digitais CryptoNote é: MSupply = 264 −1 unidades atômicas. Esta é uma restrição natural baseada apenas nos limites de implementação, não na intuição como “N moedas deveriam ser suficientes para qualquer pessoa”. Para garantir a suavidade do processo de emissão, usamos a seguinte fórmula para bloco recompensas: BaseReward = (MSupply −A) ≫18, onde A é a quantidade de moedas geradas anteriormente. 6.2 Parâmetros ajustáveis 6.2.1 Dificuldade CryptoNote contém um algoritmo de segmentação que altera a dificuldade de cada bloco. Isto diminui o tempo de reação do sistema quando a taxa de rede hash está crescendo ou diminuindo intensamente, preservando uma taxa de bloqueio constante. O método Bitcoin original calcula a relação do valor real e intervalo de tempo alvo entre os últimos blocos de 2016 e usa-o como multiplicador para o atual dificuldade. Obviamente isto é inadequado para recálculos rápidos (devido à grande inércia) e resulta em oscilações. A ideia geral por trás do nosso algoritmo é somar todo o trabalho concluído pelos nós e divida pelo tempo que gastaram. A medida do trabalho são os valores de dificuldade correspondentes em cada bloco. Mas devido a carimbos de data/hora imprecisos e não confiáveis, não podemos determinar a data exata intervalo de tempo entre blocos. Um usuário pode mudar seu carimbo de data/hora para o futuro e para a próxima vez intervalos podem ser improvavelmente pequenos ou até negativos. Presumivelmente, haverá poucos incidentes de desse tipo, para que possamos apenas classificar os carimbos de data e hora e eliminar os valores discrepantes (ou seja, 20%). A gama de os valores restantes são o tempo gasto em 80% dos blocos correspondentes. 6.2.2 Limites de tamanho Os usuários pagam pelo armazenamento do blockchain e terão direito a votar no seu tamanho. Cada mineiro lida com o trade-off entre o equilíbrioe custa e lucra com as taxas e define seu próprio “soft-limit” para criação de blocos. Além disso, a regra básica para o tamanho máximo do bloco é necessária para evitando que blockchain seja inundado com transações falsas, no entanto, este valor deve não ser codificado. Seja MN o valor mediano dos últimos N tamanhos de blocos. Então o “limite rígido” para o tamanho de aceitar blocos é \(2 \cdot M_N\). Ele evita o inchaço do blockchain, mas ainda permite que o limite crescer lentamente com o tempo, se necessário. O tamanho da transação não precisa ser limitado explicitamente. É limitado pelo tamanho de um bloco; e se alguém quiser criar uma transação enorme com centenas de entradas/saídas (ou com (o elevado grau de ambiguidade nas assinaturas de anéis), ele pode fazê-lo pagando uma taxa suficiente. 6.2.3 Penalidade por excesso de tamanho Um minerador ainda tem a capacidade de encher um bloco com suas próprias transações sem taxa até o limite máximo. tamanho 2 \(\cdot\) MB. Embora apenas a maioria dos mineradores possa alterar o valor mediano, ainda há uma 13 23 Unidades atômicas. Eu gosto disso. Isso é equivalente a Satoshis? Se sim, então isso significa que haverá 185 bilhões de criptomoedas. Eu sei que isso deve ser, eventualmente, ajustado em algumas páginas, ou talvez haja um erro de digitação? Se a recompensa base for “todas as moedas restantes”, então apenas um bloco será suficiente para obter todas as moedas. Instamine. Por outro lado, se isto for supostamente proporcional de alguma forma ao diferença de tempo entre agora e alguma data de término da produção de moedas? Isso seria faz sentido. Além disso, no meu mundo, dois sinais de maior que este significam "muito maior que". Será que o autor possivelmente significa outra coisa? Se o ajuste à dificuldade ocorrer a cada bloco, um invasor poderá ter um conjunto muito grande de as máquinas mineram e desligam em intervalos de tempo cuidadosamente escolhidos. Isso pode causar uma explosão caótica (ou cair para zero) na dificuldade, se as fórmulas de ajuste de dificuldade não forem amortecidas adequadamente. Não há dúvida de que o método de Bitcoin é inadequado para recálculos rápidos, mas a ideia de inércia nestes sistemas precisaria ser provada, e não tomada como certa. Além disso, oscilações na dificuldade da rede não é necessariamente um problema, a menos que resulte em oscilações de fornecimento de moedas - e ter uma dificuldade que muda muito rapidamente pode causar "correção excessiva". O tempo gasto, especialmente em um curto espaço de tempo como alguns minutos, será proporcional ao "total número de blocos criados na rede." A constante de proporcionalidade irá, por si só, crescer ao longo do tempo, presumivelmente exponencialmente se o CN decolar. Pode ser uma ideia melhor simplesmente ajustar a dificuldade para manter o "total de blocos criados no rede desde que o último bloco foi adicionado à cadeia principal" dentro de algum valor constante, ou com variação limitada ou algo parecido. Se um algoritmo adaptativo que seja computacionalmente fácil de implementar, isso pareceria resolver o problema. Mas então, se usássemos esse método, alguém com uma grande exploração mineira poderia encerrar a sua exploração. por algumas horas e ligue-o novamente. Nos primeiros quarteirões, aquela fazenda fará banco. Então, na verdade, esse método traria um ponto interessante: a mineração se torna (em média) um perder jogo sem ROI, especialmente à medida que mais pessoas acessam a rede. Se a dificuldade de mineração rede monitorada de perto hashrate, de alguma forma duvido que as pessoas mineriam tanto quanto atualmente faço. Ou, por outro lado, em vez de manterem as suas explorações mineiras a funcionar 24 horas por dia, 7 dias por semana, podem transformá-las ligado por 6 horas, desligado por 2, ligado por 6, desligado por 2 ou algo parecido. Basta mudar para outra moeda por algumas horas, espere a dificuldade diminuir e depois volte para ganhar alguns extras blocos de lucratividade à medida que a rede se adapta. E você sabe o que? Na verdade, isso é provavelmente um dos melhores cenários de mineração em que pensei... Isso poderia ser circular, mas se o tempo de criação do bloco média for cerca de um minuto, podemos simplesmente usar o número de blocos como proxy para "tempo gasto?"

6 Outras vantagens 6.1 Emissão suave O limite superior para a quantidade total de moedas digitais CryptoNote é: MSupply = 264 −1 unidades atômicas. Esta é uma restrição natural baseada apenas nos limites de implementação, não na intuição como “N moedas deveriam ser suficientes para qualquer pessoa”. Para garantir a suavidade do processo de emissão, usamos a seguinte fórmula para bloco recompensas: BaseReward = (MSupply −A) ≫18, onde A é a quantidade de moedas geradas anteriormente. 6.2 Parâmetros ajustáveis 6.2.1 Dificuldade CryptoNote contém um algoritmo de segmentação que altera a dificuldade de cada bloco. Isto diminui o tempo de reação do sistema quando a taxa de rede hash está crescendo ou diminuindo intensamente, preservando uma taxa de bloqueio constante. O método Bitcoin original calcula a relação do valor real e intervalo de tempo alvo entre os últimos blocos de 2016 e usa-o como multiplicador para o atual dificuldade. Obviamente isto é inadequado para recálculos rápidos (devido à grande inércia) e resulta em oscilações. A ideia geral por trás do nosso algoritmo é somar todo o trabalho concluído pelos nós e divida pelo tempo que gastaram. A medida do trabalho são os valores de dificuldade correspondentes em cada bloco. Mas devido a carimbos de data/hora imprecisos e não confiáveis, não podemos determinar a data exata intervalo de tempo entre blocos. Um usuário pode mudar seu carimbo de data/hora para o futuro e para a próxima vez intervalos podem ser improvavelmente pequenos ou até negativos. Presumivelmente, haverá poucos incidentes de desse tipo, para que possamos apenas classificar os carimbos de data e hora e eliminar os valores discrepantes (ou seja, 20%). A gama de os valores restantes são o tempo gasto em 80% dos blocos correspondentes. 6.2.2 Limites de tamanho Os usuários pagam pelo armazenamento do blockchain e terão direito a votar no seu tamanho. Cada mineiro lida com a compensação entre equilibrar os custos e o lucro das taxas e define seu próprio “soft-limit” para criação de blocos. Além disso, a regra básica para o tamanho máximo do bloco é necessária para evitando que blockchain seja inundado com transações falsas, no entanto, este valor deve não ser codificado. Seja MN o valor mediano dos últimos N tamanhos de blocos. Então o “limite rígido” para o tamanho de aceitar blocos é \(2 \cdot M_N\). Ele evita o inchaço do blockchain, mas ainda permite que o limite crescer lentamente com o tempo, se necessário. O tamanho da transação não precisa ser limitado explicitamente. É limitado pelo tamanho de um bloco; e se alguém quiser criar uma transação enorme com centenas de entradas/saídas (ou com (o elevado grau de ambiguidade nas assinaturas de anéis), ele pode fazê-lo pagando uma taxa suficiente. 6.2.3 Penalidade por excesso de tamanho Um minerador ainda tem a capacidade de encher um bloco com suas próprias transações sem taxa até o limite máximo. tamanho 2 \(\cdot\) MB. Embora apenas a maioria dos mineradores possa alterar o valor mediano, ainda há uma 13 6 Outras vantagens 6.1 Emissão suave O limite superior para a quantidade total de moedas digitais CryptoNote é: MSupply = 264 −1 unidades atômicas. Esta é uma restrição natural baseada apenas nos limites de implementação, não na intuição como “N moedas deveriam ser suficientes para qualquer pessoa”. Para garantir a suavidade do processo de emissão, usamos a seguinte fórmula para bloco recompensas: BaseReward = (MSupply −A) ≫18, onde A é a quantidade de moedas geradas anteriormente. 6.2 Parâmetros ajustáveis 6.2.1 Dificuldade CryptoNote contém um algoritmo de segmentação que altera a dificuldade de cada bloco. Isto diminui o tempo de reação do sistema quando a taxa de rede hash está crescendo ou diminuindo intensamente, preservando uma taxa de bloqueio constante. O método Bitcoin original calcula a relação do valor real e intervalo de tempo alvo entre os últimos blocos de 2016 e usa-o como multiplicador para o atual dificuldade. Obviamente isto é inadequado para recálculos rápidos (devido à grande inércia) e resulta em oscilações. A ideia geral por trás do nosso algoritmo é somar todo o trabalho concluído pelos nós e divida pelo tempo que gastaram. A medida do trabalho são os valores de dificuldade correspondentes em cada bloco. Mas devido a carimbos de data/hora imprecisos e não confiáveis, não podemos determinar a data exata intervalo de tempo entre blocos. Um usuário pode mudar seu carimbo de data/hora para o futuro e para a próxima vez intervalos podem ser improvavelmente pequenos ou até negativos. Presumivelmente, haverá poucos incidentes de desse tipo, para que possamos apenas classificar os carimbos de data e hora e eliminar os valores discrepantes (ou seja, 20%). A gama de os valores restantes são o tempo gasto em 80% dos blocos correspondentes. 6.2.2 Limites de tamanho Os usuários pagam pelo armazenamento do blockchain e terão direito a votar no seu tamanho. Cada mineiro lida com o trade-off entre o equilíbrioe custa e lucra com as taxas e define seu próprio “soft-limit” para criação de blocos. Além disso, a regra básica para o tamanho máximo do bloco é necessária para evitando que blockchain seja inundado com transações falsas, no entanto, este valor deve não ser codificado. Seja MN o valor mediano dos últimos N tamanhos de blocos. Então o “limite rígido” para o tamanho de aceitar blocos é \(2 \cdot M_N\). Ele evita o inchaço do blockchain, mas ainda permite que o limite crescer lentamente com o tempo, se necessário. O tamanho da transação não precisa ser limitado explicitamente. É limitado pelo tamanho de um bloco; e se alguém quiser criar uma transação enorme com centenas de entradas/saídas (ou com (o elevado grau de ambiguidade nas assinaturas de anéis), ele pode fazê-lo pagando uma taxa suficiente. 6.2.3 Penalidade por excesso de tamanho Um minerador ainda tem a capacidade de encher um bloco com suas próprias transações sem taxa até o limite máximo. tamanho 2 \(\cdot\) MB. Embora apenas a maioria dos mineradores possa alterar o valor mediano, ainda há uma 13 24 Ok, então temos um blockchain, e cada bloco tem carimbos de data e hora ALÉM de simplesmente ser ordenado. Isto foi claramente inserido simplesmente para ajuste de dificuldade, porque os carimbos de data e hora são muito pouco confiável, como mencionado. Podemos ter carimbos de data/hora contraditórios na cadeia? Se o Bloco A vier antes do Bloco B na cadeia e tudo for consistente em termos financeiros, mas o Bloco A parece ter sido criado depois do Bloco B? Porque, talvez, alguém possuísse uma grande parte da rede? Tudo bem? Provavelmente porque as finanças não estão bagunçadas. Ok, então eu odeio esse arbitrário "apenas 80% dos blocos são legítimos para o blockchain principal" abordagem. A intenção era evitar que mentirosos ajustassem seus carimbos de data e hora? Mas agora, acrescenta incentivo para que todos mintam sobre seus carimbos de data e hora e apenas escolham a mediana. Por favor, defina. Significando "para este bloco, inclua apenas transações que incluam taxas maiores que p%, preferencialmente com taxas maiores que 2p%" ou algo parecido? O que eles querem dizer com falso? Se a transação for consistente com o histórico passado do blockchain, e a transação inclui taxas que satisfazem os mineiros, isso não é suficiente? Bem, não, não necessariamente. Se não existir tamanho máximo de bloco, não há nada que possa manter um usuário mal-intencionado desde simplesmente enviar um enorme bloco de transações para si mesmo de uma só vez apenas para desacelerar a rede. Uma regra básica para o tamanho máximo do bloco evita que as pessoas coloquem enormes quantidades de lixo dados no blockchain de uma só vez, apenas para desacelerar as coisas. Mas tal regra certamente tem que ser adaptativo - durante a época de Natal, por exemplo, podemos esperar que o tráfego aumente, e o tamanho do bloco fique muito grande e, imediatamente depois, o tamanho do bloco diminua posteriormente novamente. Portanto, precisamos de a) algum tipo de limite adaptativo ou b) um limite grande o suficiente para que 99% dos picos de Natal razoáveis não quebram o limite. Claro, esse segundo é impossível de estimativa - quem sabe se uma moeda vai pegar? Melhor torná-lo adaptativo e não se preocupar sobre isso. Mas então temos um problema de teoria de controle: como tornar isso adaptativo sem vulnerabilidade a ataques ou oscilações selvagens e malucas? Observe que um método adaptativo não impede que usuários mal-intencionados acumulem pequenas quantias de dados inúteis ao longo do tempo no blockchain para causar inchaço a longo prazo. Esta é uma questão diferente no geral e com o qual as moedas criptográficas têm sérios problemas.

6 Outras vantagens 6.1 Emissão suave O limite superior para a quantidade total de moedas digitais CryptoNote é: MSupply = 264 −1 unidades atômicas. Esta é uma restrição natural baseada apenas nos limites de implementação, não na intuição como “N moedas deveriam ser suficientes para qualquer pessoa”. Para garantir a suavidade do processo de emissão, usamos a seguinte fórmula para bloco recompensas: BaseReward = (MSupply −A) ≫18, onde A é a quantidade de moedas geradas anteriormente. 6.2 Parâmetros ajustáveis 6.2.1 Dificuldade CryptoNote contém um algoritmo de segmentação que altera a dificuldade de cada bloco. Isto diminui o tempo de reação do sistema quando a taxa de rede hash está crescendo ou diminuindo intensamente, preservando uma taxa de bloqueio constante. O método Bitcoin original calcula a relação do valor real e intervalo de tempo alvo entre os últimos blocos de 2016 e usa-o como multiplicador para o atual dificuldade. Obviamente isto é inadequado para recálculos rápidos (devido à grande inércia) e resulta em oscilações. A ideia geral por trás do nosso algoritmo é somar todo o trabalho concluído pelos nós e divida pelo tempo que gastaram. A medida do trabalho são os valores de dificuldade correspondentes em cada bloco. Mas devido a carimbos de data/hora imprecisos e não confiáveis, não podemos determinar a data exata intervalo de tempo entre blocos. Um usuário pode mudar seu carimbo de data/hora para o futuro e para a próxima vez intervalos podem ser improvavelmente pequenos ou até negativos. Presumivelmente, haverá poucos incidentes de desse tipo, para que possamos apenas classificar os carimbos de data e hora e eliminar os valores discrepantes (ou seja, 20%). A gama de os valores restantes são o tempo gasto em 80% dos blocos correspondentes. 6.2.2 Limites de tamanho Os usuários pagam pelo armazenamento do blockchain e terão direito a votar no seu tamanho. Cada mineiro lida com a compensação entre equilibrar os custos e o lucro das taxas e define seu próprio “soft-limit” para criação de blocos. Além disso, a regra básica para o tamanho máximo do bloco é necessária para evitando que blockchain seja inundado com transações falsas, no entanto, este valor deve não ser codificado. Seja MN o valor mediano dos últimos N tamanhos de blocos. Então o “limite rígido” para o tamanho de aceitar blocos é \(2 \cdot M_N\). Ele evita o inchaço do blockchain, mas ainda permite que o limite crescer lentamente com o tempo, se necessário. O tamanho da transação não precisa ser limitado explicitamente. É limitado pelo tamanho de um bloco; e se alguém quiser criar uma transação enorme com centenas de entradas/saídas (ou com (o elevado grau de ambiguidade nas assinaturas de anéis), ele pode fazê-lo pagando uma taxa suficiente. 6.2.3 Penalidade por excesso de tamanho Um minerador ainda tem a capacidade de encher um bloco com suas próprias transações sem taxa até o limite máximo. tamanho 2 \(\cdot\) MB. Embora apenas a maioria dos mineradores possa alterar o valor mediano, ainda há uma 13 6 Outras vantagens 6.1 Emissão suave O limite superior para a quantidade total de moedas digitais CryptoNote é: MSupply = 264 −1 unidades atômicas. Esta é uma restrição natural baseada apenas nos limites de implementação, não na intuição como “N moedas deveriam ser suficientes para qualquer pessoa”. Para garantir a suavidade do processo de emissão, usamos a seguinte fórmula para bloco recompensas: BaseReward = (MSupply −A) ≫18, onde A é a quantidade de moedas geradas anteriormente. 6.2 Parâmetros ajustáveis 6.2.1 Dificuldade CryptoNote contém um algoritmo de segmentação que altera a dificuldade de cada bloco. Isto diminui o tempo de reação do sistema quando a taxa de rede hash está crescendo ou diminuindo intensamente, preservando uma taxa de bloqueio constante. O método Bitcoin original calcula a relação do valor real e intervalo de tempo alvo entre os últimos blocos de 2016 e usa-o como multiplicador para o atual dificuldade. Obviamente isto é inadequado para recálculos rápidos (devido à grande inércia) e resulta em oscilações. A ideia geral por trás do nosso algoritmo é somar todo o trabalho concluído pelos nós e divida pelo tempo que gastaram. A medida do trabalho são os valores de dificuldade correspondentes em cada bloco. Mas devido a carimbos de data/hora imprecisos e não confiáveis, não podemos determinar a data exata intervalo de tempo entre blocos. Um usuário pode mudar seu carimbo de data/hora para o futuro e para a próxima vez intervalos podem ser improvavelmente pequenos ou até negativos. Presumivelmente, haverá poucos incidentes de desse tipo, para que possamos apenas classificar os carimbos de data e hora e eliminar os valores discrepantes (ou seja, 20%). A gama de os valores restantes são o tempo gasto em 80% dos blocos correspondentes. 6.2.2 Limites de tamanho Os usuários pagam pelo armazenamento do blockchain e terão direito a votar no seu tamanho. Cada mineiro lida com o trade-off entre o equilíbrioe custa e lucra com as taxas e define seu próprio “soft-limit” para criação de blocos. Além disso, a regra básica para o tamanho máximo do bloco é necessária para evitando que blockchain seja inundado com transações falsas, no entanto, este valor deve não ser codificado. Seja MN o valor mediano dos últimos N tamanhos de blocos. Então o “limite rígido” para o tamanho de aceitar blocos é \(2 \cdot M_N\). Ele evita o inchaço do blockchain, mas ainda permite que o limite crescer lentamente com o tempo, se necessário. O tamanho da transação não precisa ser limitado explicitamente. É limitado pelo tamanho de um bloco; e se alguém quiser criar uma transação enorme com centenas de entradas/saídas (ou com (o elevado grau de ambiguidade nas assinaturas de anéis), ele pode fazê-lo pagando uma taxa suficiente. 6.2.3 Penalidade por excesso de tamanho Um minerador ainda tem a capacidade de encher um bloco com suas próprias transações sem taxa até o limite máximo. tamanho 2 \(\cdot\) MB. Embora apenas a maioria dos mineradores possa alterar o valor mediano, ainda há uma 13 25 Redimensionando o tempo para que uma unidade de tempo seja N blocos, o tamanho médio do bloco ainda poderia, teoricamente, crescer exponencialmente proporcionalmente a 2ˆt. Por outro lado, um limite mais geral no próximo bloco seria M_nf(M_n) para alguma função f. Quais propriedades de f seriam escolhemos para garantir algum “crescimento razoável” do tamanho do bloco? A progressão de os tamanhos dos blocos (após o tempo de redimensionamento) seriam assim: 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( ... E o objetivo aqui é escolher f tal que esta sequência não cresça mais rápido do que, digamos, linearmente, ou talvez até como Log(t). Claro, se f(M_n) = a para alguma constante a, esta sequência é na verdade M_n aM_n aˆ2M_n aˆ3M_n ... E, claro, a única maneira de limitar isso ao crescimento no máximo linear é escolhendo a=1. Isto é, obviamente, inviável. Não permite o crescimento de forma alguma. Se, por outro lado, f(M_n) for uma função não constante, então a situação é muito mais complicado e pode permitir uma solução elegante. Vou pensar nisso por um tempo. Esta taxa deverá ser grande o suficiente para descontar a penalidade de excesso de tamanho da próxima seção. Por que um usuário geral é considerado homem, hein? Hein?

possibilidade de inchar o blockchain e produzir uma carga adicional nos nós. Para desencorajar participantes malévolos criem grandes blocos, introduzimos uma função de penalidade: NovaRecompensa = BaseRecompensa \(\cdot\) TamanhoPreto Minnesota −1 2 Esta regra é aplicada somente quando BlkSize é maior que o tamanho mínimo do bloco livre, que deve estar próximo do máximo (10kb, \(M_N \cdot 110\%\)). Os mineiros estão autorizados a criar blocos de “tamanho normal” e até mesmo excedê-lo com lucro quando as taxas gerais ultrapassarem a penalidade. Mas é improvável que as taxas aumentem quadraticamente diferente do valor da penalidade, então haverá um equilíbrio. 6.3 Scripts de transação CryptoNote possui um subsistema de script muito minimalista. Um remetente especifica uma expressão Φ = f (x1, x2, . . . , xn), onde n é o número de chaves públicas de destino {Pi}n eu=1. Apenas cinco binários operadores são suportados: min, max, sum, mul e cmp. Quando o destinatário gasta esse pagamento, ele produz \(0 \leq k \leq n\) assinaturas e as passa para a entrada da transação. O processo de verificação simplesmente avalia Φ com xi = 1 para verificar uma assinatura válida para a chave pública Pi e xi = 0. Um verificador aceita a prova se Φ > 0. Apesar da sua simplicidade, esta abordagem cobre todos os casos possíveis: • Assinatura Multi/Limiar. Para a assinatura múltipla “M-out-of-N” estilo Bitcoin (ou seja, o receptor deve fornecer pelo menos \(0 \leq M \leq N\) assinaturas válidas) Φ = x1+x2+. . .+xN \(\geq M\) (para maior clareza, estamos usando notação algébrica comum). A assinatura de limite ponderado (algumas chaves podem ser mais importantes que outras) poderia ser expressa como Φ = \(w_1 \cdot x_1\) + \(w_2 \cdot x_2\) + . . . + \(w_N \cdot x_N\) \(\geq wM\). E cenário onde a chave mestra corresponde a Φ = máx(\(M \cdot x\), x1 + x2 +. . . + xN) \(\geq M\). É fácil mostrar que qualquer caso sofisticado pode ser expresso com esses operadores, ou seja, eles formam a base. • Proteção por senha. A posse de uma senha secreta equivale ao conhecimento de uma chave privada, derivada deterministicamente da senha: k = KDF(s). Portanto, um receptor pode provar que conhece a senha fornecendo outra assinatura sob a chave k. O remetente simplesmente adiciona a chave pública correspondente à sua própria saída. Observe que isso método é muito mais seguro do que o “quebra-cabeça de transação” usado em Bitcoin [13], onde o a senha é passada explicitamente nas entradas. • Casos degenerados. Φ = 1 significa que qualquer pessoa pode gastar o dinheiro; Φ = 0 marca o produção como não gastável para sempre. No caso em que o script de saída combinado com as chaves públicas for muito grande para um remetente, ele pode usar um tipo de saída especial, que indica que o destinatário colocará esses dados em sua entrada enquanto o remetente fornece apenas hash dele. Esta abordagem é semelhante ao “pagar para-hash” de Bitcoin recurso, mas em vez de adicionar novos comandos de script, tratamos desse caso na estrutura de dados nível. 7 Conclusão Investigamos as principais falhas em Bitcoin e propusemos algumas soluções possíveis. Esses recursos vantajosos e nosso desenvolvimento contínuo tornam o novo sistema de dinheiro eletrônico CryptoNote um sério rival do Bitcoin, superando todos os seus garfos. 14 possibilidade de inchar o blockchain e produzir uma carga adicional nos nós. Para desencorajar participantes malévolos criem grandes blocos, introduzimos uma função de penalidade: NovaRecompensa = BaseRecompensa \(\cdot\) TamanhoPreto Minnesota −1 2 Esta regra é aplicada somente quando BlkSize é maior que o tamanho mínimo do bloco livre, que deve estar próximo do máximo (10kb, \(M_N \cdot 110\%\)). Os mineiros estão autorizados a criar blocos de “tamanho normal” e até mesmo excedê-lo com lucro quando as taxas gerais ultrapassarem a penalidade. Mas é improvável que as taxas aumentem quadraticamente diferente do valor da penalidade, então haverá um equilíbrio. 6.3 Scripts de transação CryptoNote possui um subsistema de script muito minimalista. Um remetente especifica uma expressão Φ = f (x1, x2, . . . , xn), onde n é o número de chaves públicas de destino {Pi}n eu=1. Apenas cinco binários operadores são suportados: min, max, sum, mul e cmp. Quando o destinatário gasta esse pagamento, ele produz \(0 \leq k \leq n\) assinaturas e as passa para a entrada da transação. O processo de verificação simplesmente avalia Φ com xi = 1 para verificar uma assinatura válida para a chave pública Pi e xi = 0. Um verificador aceita a prova se Φ > 0. Apesar da sua simplicidade, esta abordagem cobre todos os casos possíveis: • Assinatura Multi/Limiar. Para a assinatura múltipla “M-out-of-N” estilo Bitcoin (ou seja, o receptor deve fornecer pelo menos \(0 \leq M \leq N\) assinaturas válidas) Φ = x1+x2+. . .+xN \(\geq M\) (para maior clareza, estamos usando notação algébrica comum). A assinatura de limite ponderado (algumas chaves podem ser mais importantes que outras) poderia ser expressa como Φ = \(w_1 \cdot x_1\) + \(w_2 \cdot x_2\) + . . . + \(w_N \cdot x_N\) \(\geq wM\). E cenárioio onde a chave mestra corresponde a Φ = máx(\(M \cdot x\), x1 + x2 +. . . + xN) \(\geq M\). É fácil mostrar que qualquer caso sofisticado pode ser expresso com esses operadores, ou seja, eles formam a base. • Proteção por senha. A posse de uma senha secreta equivale ao conhecimento de uma chave privada, derivada deterministicamente da senha: k = KDF(s). Portanto, um receptor pode provar que conhece a senha fornecendo outra assinatura sob a chave k. O remetente simplesmente adiciona a chave pública correspondente à sua própria saída. Observe que isso método é muito mais seguro do que o “quebra-cabeça de transação” usado em Bitcoin [13], onde o a senha é passada explicitamente nas entradas. • Casos degenerados. Φ = 1 significa que qualquer pessoa pode gastar o dinheiro; Φ = 0 marca o produção como não gastável para sempre. No caso em que o script de saída combinado com as chaves públicas for muito grande para um remetente, ele pode usar um tipo de saída especial, que indica que o destinatário colocará esses dados em sua entrada enquanto o remetente fornece apenas hash dele. Esta abordagem é semelhante ao “pagar para-hash” de Bitcoin recurso, mas em vez de adicionar novos comandos de script, tratamos desse caso na estrutura de dados nível. 7 Conclusão Investigamos as principais falhas em Bitcoin e propusemos algumas soluções possíveis. Esses recursos vantajosos e nosso desenvolvimento contínuo tornam o novo sistema de dinheiro eletrônico CryptoNote um sério rival de Bitcoin, superando todos os seus garfos. 14 26 Isso pode ser desnecessário se pudermos descobrir uma maneira de limitar o tamanho do bloco ao longo do tempo... Isso também não pode estar correto. Eles apenas definiram "NewReward" como uma parábola voltada para cima onde o tamanho do bloco é a variável independente. Assim, a nova recompensa explode até o infinito. Se, por outro Por outro lado, a nova recompensa é Max(0,Base Reward(1-(BlkSize/Mn - 1)ˆ2)), então a nova recompensa seria uma parábola voltada para baixo com pico no tamanho do bloco = Mn, e com interceptações em Tamanho do bloco = 0 e Tamanho do bloco = 2Mn. E parece ser isso que eles estão tentando descrever. No entanto, isso não

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.

Análise

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

5 Não que isso importe muito quando um bilhão de pessoas no mundo vivem com menos de um dólar por dia e não tenho esperança de participar de qualquer tipo de rede de mineração... mas uma economia mundo impulsionado por um sistema monetário p2p com uma CPU-um-voto seria, presumivelmente, mais justo do que um sistema impulsionado por reservas bancárias fracionárias. Mas o protocolo do Cryptonote ainda exige 51% de usuários honestos... veja, por exemplo, o Cryptonote fóruns onde um dos desenvolvedores, Pliskov, diz que um ataque tradicional de substituição de dados noblockchain 51% ainda pode funcionar. https://forum.cryptonote.org/viewtopic.php?f=2&t=198 Observe que você realmente não precisa de 51% de usuários honestos. Você realmente precisa de "nenhum desonesto facção com mais de 51% do poder hashing da rede." Vamos chamar esse chamado problema do bitcoin de “rigidez adaptativa”. A solução da Cryptonote para adaptação rigidez é flexibilidade adaptativa nos valores dos parâmetros do protocolo. Se você precisar de tamanhos de bloco maiores, não tem problema, a rede terá se ajustado suavemente o tempo todo. Quer dizer, a maneira como Bitcoin ajusta a dificuldade ao longo do tempo pode ser replicada em todo o nosso protocolo parâmetros para que o consenso da rede não precise ser obtido para atualizar o protocolo. Superficialmente, isso parece uma boa ideia, mas sem uma reflexão cuidadosa, um sistema auto-ajustável sistema pode se tornar bastante imprevisível e caótico. Veremos isso mais adiante, pois o surgem oportunidades. Os “bons” sistemas estão em algum lugar entre adaptativamente rígidos e adaptativamente flexíveis e talvez até a própria rigidez sejam adaptativas. Se realmente tivéssemos “uma CPU-um-voto”, então colaborando e desenvolvendo pools para chegar a 51% seria mais difícil. Esperaríamos que todas as CPUs do mundo minerassem, a partir de telefones à CPU integrada do seu Tesla enquanto ele está carregando. http://en.wikipedia.org/wiki/Pareto_principle Afirmo que o equilíbrio de Pareto é um tanto inevitável. Ou 20% do sistema possuirá 80% das CPUs, ou 20% do sistema possuirá 80% dos ASICs. Coloco a hipótese disto porque a distribuição subjacente da riqueza na sociedade já apresenta a distribuição de Pareto, e à medida que novos mineradores se juntam, eles são retirados dessa distribuição subjacente. No entanto, argumento que os protocolos com uma CPU e um voto terão ROI no hardware. Bloquear a recompensa por nó será mais proporcional ao número de nós na rede porque a distribuição do desempenho entre os nós será muito mais restrita. Bitcoin, por outro Por outro lado, vê uma recompensa de bloco (por nó) mais proporcional à capacidade computacional daquele nó. Ou seja, apenas os “grandes” ainda estão no jogo da mineração. Por outro lado, mesmo que o princípio de Pareto ainda esteja em jogo, em um mundo de uma CPU, um voto, todos participa da segurança da rede e ganha um pouco da receita da mineração. Em um mundo ASIC, não é sensato equipar todos os XBox e celulares aos meus. Em um mundo de uma CPU, um voto, é muito sensato em termos de recompensa de mineração. Como uma deliciosa consequência, ganhar 51% dos votos é mais difícil quando há cada vez mais votos, rendendo um resultado adorável benefício para a segurança da rede.hardware descrito anteriormente. Suponha que a taxa global hash diminua significativamente, mesmo para por um momento, ele agora pode usar seu poder de mineração para bifurcar a corrente e gastar o dobro. Como veremos mais adiante neste artigo, não é improvável que o evento descrito anteriormente ocorra. 2.3 Emissão irregular Bitcoin possui uma taxa de emissão pré-determinada: cada bloco resolvido produz uma quantidade fixa de moedas. Aproximadamente a cada quatro anos esta recompensa é reduzida pela metade. A intenção original era criar um emissão suave limitada com decaimento exponencial, mas na verdade temos uma emissão linear por partes função cujos pontos de interrupção podem causar problemas à infraestrutura Bitcoin. Quando ocorre o breakpoint, os mineradores passam a receber apenas metade do valor do seu valor anterior. recompensa. A diferença absoluta entre 12,5 e 6,25 BTC (projetada para o ano de 2020) pode parecem toleráveis. No entanto, ao examinar a queda de 50 para 25 BTC que ocorreu em novembro 28 de 2012, pareceu inapropriado para um número significativo de membros da comunidade mineira. Figura 1 mostra uma diminuição dramática na taxa hashda rede no final de novembro, exatamente quando o ocorreu a redução pela metade. Este evento poderia ter sido o momento perfeito para o indivíduo malévolo descrito na seção de função proof-of-work para realizar um ataque de gastos duplos [36]. Figura 1. Bitcoin hashgráfico de taxas (fonte: http://bitcoin.sipa.be) 2.4 Constantes codificadas Bitcoin tem muitos limites codificados, onde alguns são elementos naturais do design original (por exemplo, frequência de bloqueio, quantidade máxima de oferta monetária, número de confirmações), enquanto outros parecem ser restrições artificiais. Não são tanto os limites, mas a incapacidade de mudar rapidamente 3 hardware descrito anteriormente. Suponha que a taxa global hash diminua significativamente, mesmo para por um momento, ele agora pode usar seu poder de mineração para bifurcar a corrente e gastar o dobro. Como veremos mais adiante neste artigo, não é improvável que o evento descrito anteriormente ocorra. 2.3 Emissão irregular Bitcoin possui uma taxa de emissão pré-determinada: cada bloco resolvido produz uma quantidade fixa de moedas. Aproximadamente a cada quatro anos esta recompensa é reduzida pela metade. A intenção original era criar um emissão suave limitada com decaimento exponencial, mas na verdade temos uma emissão linear por partes função cujos pontos de interrupção podem causar problemas à infraestrutura Bitcoin. Quando ocorre o breakpoint, os mineradores passam a receber apenas metade do valor do seu valor anterior. recompensa. A diferença absoluta entre 12,5 e 6,25 BTC (projetada para o ano de 2020) pode parecem toleráveis. No entanto, ao examinar a queda de 50 para 25 BTC que ocorreu em novembro 28 de 2012, pareceu inapropriado para um número significativo de membros da comunidade mineira. Figura 1 mostra uma diminuição dramática na taxa hashda rede no final de novembro, exatamente quando o ocorreu a redução pela metade. Este evento poderia ter sido o momento perfeito para o indivíduo malévolo descrito na seção de função proof-of-work para realizar um ataque de gastos duplos [36]. Figura 1. Bitcoin hashgráfico de taxas (fonte: http://bitcoin.sipa.be) 2.4 Constantes codificadas Bitcoin tem muitos limites codificados, onde alguns são elementos naturais do design original (por exemplo, frequência de bloqueio, quantidade máxima de oferta monetária, número de confirmações), enquanto outros parecem ser restrições artificiais. Não são tanto os limites, mas a incapacidade de mudar rapidamente 3 6 Vamos chamar isso do que realmente é, um ataque de zumbis. Vamos discutir como a emissão contínua pode ser relacionado a um-cpu-um-voto em um cenário de ataque zumbi. Em um mundo de uma CPU, um voto, todos os celulares e carros, sempre que ociosos, estariam minerando. Coletar montes de hardware barato para criar uma fazenda de mineração seria muito fácil, porque bastaria quase tudo tem uma CPU. Por outro lado, nesse ponto, o número de CPUs necessário para lançar um ataque de 51% seria bastante surpreendente, eu acho. Além disso, precisamente porque seria fácil coletar hardware barato, podemos razoavelmente esperar um muita gente começa a acumular qualquer coisa com uma CPU. A corrida armamentista em um mundo de uma CPU, um voto é necessariamente mais igualitário do que em um mundo ASIC. Portanto, uma descontinuidade na rede a segurança devido às taxas de emissão deveria ser um problema MENOS em um mundo de uma CPU, um voto. Contudo, dois fatos permanecem: 1) a descontinuidade na taxa de emissão pode levar a um efeito de gagueira em na economia e na segurança da rede, o que é ruim, e 2) mesmo que um ataque de 51% executado por alguém coletando hardware barato ainda pode ocorrer em uma CPU-uma-votar mundo, parece que deveria ser mais difícil. Presumivelmente, a salvaguarda contra isso é que todos os atores desonestos tentarão fazer isso simultaneamente, e voltamos à noção de segurança anterior de Bitcoin: "não exigimos nenhum comportamento desonesto facção para controlar mais de 51% da rede." O autor está afirmando aqui que um problema com o bitcoin é a descontinuidade na emissão de moedas taxa poderia levar a quedas repentinas na participação na rede e, portanto, na segurança da rede. Assim, é preferível uma taxa de emissão de moedas contínua, diferenciável e suave. O autor não está errado, necessariamente. Qualquer tipo de diminuição repentina na participação na rede pode levar a esse problema, e se pudermos remover uma fonte dele, deveríamos fazê-lo. Dito isto, é possível que longos períodos de emissão de moedas "relativamente constantes" pontuados por mudanças repentinas é o caminho ideal a seguir do ponto de vista económico. Eu não sou economista. Então, talvez nós devemos decidir se vamos trocar a segurança da rede por algo econômico – o que há aqui? http://arxiv.org/abs/1402.2009se necessário, o que causa as principais desvantagens. Infelizmente, é difícil prever quando constantes podem precisar ser alteradas e substituí-las pode levar a consequências terríveis. Um bom exemplo de alteração de limite codificada que leva a consequências desastrosas é o bloqueio limite de tamanho definido para 250kb1. Este limite foi suficiente para realizar cerca de 10.000 transações padrão. Em No início de 2013, esse limite estava quase alcançado e foi alcançado um acordo para aumentar o limite. A mudança foi implementada na versão 0.8 da carteira e terminou com uma divisão da cadeia de 24 blocos e um ataque de gasto duplo bem-sucedido [9]. Embora o bug não estivesse no protocolo Bitcoin, mas em vez disso, no mecanismo de banco de dados, ele poderia ter sido facilmente detectado por um simples teste de estresse, se houvesse nenhum limite de tamanho de bloco introduzido artificialmente. As constantes também atuam como uma forma de ponto de centralização. Apesar da natureza peer-to-peer Bitcoin, a esmagadora maioria dos nós usa o cliente de referência oficial [10] desenvolvido por um pequeno grupo de pessoas. Este grupo toma a decisão de implementar mudanças no protocolo e a maioria das pessoas aceita estas mudanças independentemente da sua “correcção”. Algumas decisões causaram discussões acaloradas e até apelos ao boicote [11], o que indica que a comunidade e o os desenvolvedores podem discordar em alguns pontos importantes. Parece, portanto, lógico ter um protocolo com variáveis configuráveis pelo usuário e autoajustáveis como uma possível forma de evitar esses problemas. 2,5 Scripts volumosos O sistema de script em Bitcoin é um recurso pesado e complexo. Ele potencialmente permite criar transações sofisticadas [12], mas alguns de seus recursos estão desativados devido a questões de segurança e alguns nunca foram usados [13]. O script (incluindo as partes do remetente e do destinatário) para a transação mais popular em Bitcoin é assim: OP DUP OP HASH160 OP EQUALVERIFY OP CHECKSIG. O script tem 164 bytes e seu único propósito é verificar se o receptor possui o chave secreta necessária para verificar sua assinatura.