CryptoNote เวอร์ชัน 2.0
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.
การแนะนำ
“Bitcoin” [1] ประสบความสำเร็จในการนำแนวคิดเงินสดอิเล็กทรอนิกส์ p2p ไปใช้ ทั้งสองอย่าง มืออาชีพและประชาชนทั่วไปต่างก็ชื่นชมการผสมผสานที่สะดวกสบายของ ธุรกรรมสาธารณะและ proof-of-work เป็นรูปแบบความน่าเชื่อถือ ปัจจุบันฐานผู้ใช้เงินสดอิเล็กทรอนิกส์ กำลังเติบโตอย่างมั่นคง ลูกค้าถูกดึงดูดด้วยค่าธรรมเนียมต่ำและการไม่เปิดเผยตัวตน ด้วยเงินสดอิเล็กทรอนิกส์และร้านค้าให้ความสำคัญกับการปล่อยก๊าซเรือนกระจกที่คาดการณ์ไว้และกระจายอำนาจ Bitcoin มี ได้รับการพิสูจน์อย่างมีประสิทธิภาพว่าเงินสดอิเล็กทรอนิกส์สามารถทำได้ง่ายเหมือนกับเงินกระดาษและสะดวกพอ ๆ กับ บัตรเครดิต น่าเสียดายที่ Bitcoin ประสบกับข้อบกพร่องหลายประการ เช่น ระบบมีการกระจาย ธรรมชาติไม่สามารถยืดหยุ่นได้ ทำให้ไม่สามารถใช้งานคุณสมบัติใหม่ได้จนกว่าผู้ใช้เครือข่ายเกือบทั้งหมดจะอัปเดตไคลเอนต์ของตน ข้อบกพร่องที่สำคัญบางประการที่ไม่สามารถแก้ไขได้อย่างรวดเร็วจะขัดขวาง Bitcoin การแพร่กระจายอย่างกว้างขวาง ในโมเดลที่ไม่ยืดหยุ่นดังกล่าว การเปิดตัวโปรเจ็กต์ใหม่จะมีประสิทธิภาพมากกว่า แทนที่จะแก้ไขโครงการเดิมอย่างถาวร ในบทความนี้ เราศึกษาและเสนอวิธีแก้ปัญหาข้อบกพร่องหลักของ Bitcoin เราเชื่อ ว่าระบบที่คำนึงถึงแนวทางแก้ไขที่เราเสนอจะนำไปสู่การแข่งขันที่ดี ในระบบเงินสดอิเล็กทรอนิกส์ต่างๆ นอกจากนี้เรายังเสนอเงินสดอิเล็กทรอนิกส์ของเราเอง “CryptoNote” ชื่อที่เน้นความก้าวหน้าครั้งต่อไปในด้านเงินสดอิเล็กทรอนิกส์
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 ข้อเสียและวิธีแก้ปัญหาที่เป็นไปได้
2 Bitcoin ข้อเสียและวิธีแก้ปัญหาที่เป็นไปได้ 2.1 การติดตามธุรกรรม ความเป็นส่วนตัวและการไม่เปิดเผยตัวตนเป็นสิ่งสำคัญที่สุดของเงินสดอิเล็กทรอนิกส์ การชำระเงินแบบเพียร์ทูเพียร์ พยายามปกปิดจากมุมมองของบุคคลที่สาม ซึ่งเป็นความแตกต่างที่ชัดเจนเมื่อเปรียบเทียบกับแบบดั้งเดิม การธนาคาร โดยเฉพาะอย่างยิ่ง T. Okamoto และ K. Ohta ได้อธิบายเกณฑ์หกประการของเงินสดอิเล็กทรอนิกส์ในอุดมคติ ซึ่งรวมถึง “ความเป็นส่วนตัว: ความสัมพันธ์ระหว่างผู้ใช้กับการซื้อของเขาจะต้องไม่สามารถติดตามได้ โดยใครก็ตาม” [30]. จากคำอธิบาย เราได้รับคุณสมบัติสองประการที่ไม่ระบุชื่อโดยสมบูรณ์ แบบจำลองเงินสดอิเล็กทรอนิกส์จะต้องเป็นไปตามข้อกำหนดเพื่อให้เป็นไปตามข้อกำหนดที่ Okamoto ระบุไว้ และโอตะ: ไม่สามารถติดตามได้: สำหรับแต่ละธุรกรรมที่เข้ามา ผู้ส่งที่เป็นไปได้ทั้งหมดสามารถติดตั้งได้ ไม่สามารถเชื่อมโยงได้: สำหรับธุรกรรมขาออกสองรายการใดๆ จะไม่สามารถพิสูจน์ได้ว่าถูกส่งไป คนคนเดียวกัน ขออภัย Bitcoin ไม่เป็นไปตามข้อกำหนดที่ไม่สามารถติดตามได้ เนื่องจากธุรกรรมทั้งหมดที่เกิดขึ้นระหว่างผู้เข้าร่วมเครือข่ายนั้นเป็นแบบสาธารณะ ธุรกรรมใดๆ ก็สามารถเกิดขึ้นได้ 1 CryptoNote เวอร์ชัน 2.0 นิโคลัส ฟาน ซาเบอร์ฮาเกน 17 ตุลาคม 2556 1 บทนำ “Bitcoin” [1] ประสบความสำเร็จในการนำแนวคิดเงินสดอิเล็กทรอนิกส์ p2p ไปใช้ ทั้งสองอย่าง มืออาชีพและประชาชนทั่วไปต่างก็ชื่นชมการผสมผสานที่สะดวกสบายของ ธุรกรรมสาธารณะและ proof-of-work เป็นรูปแบบความน่าเชื่อถือ ปัจจุบันฐานผู้ใช้เงินสดอิเล็กทรอนิกส์ กำลังเติบโตอย่างมั่นคง ลูกค้าถูกดึงดูดด้วยค่าธรรมเนียมต่ำและการไม่เปิดเผยตัวตน ด้วยเงินสดอิเล็กทรอนิกส์และร้านค้าให้ความสำคัญกับการปล่อยก๊าซเรือนกระจกที่คาดการณ์ไว้และกระจายอำนาจ Bitcoin มี ได้รับการพิสูจน์อย่างมีประสิทธิภาพว่าเงินสดอิเล็กทรอนิกส์สามารถทำได้ง่ายเหมือนกับเงินกระดาษและสะดวกพอ ๆ กับ บัตรเครดิต น่าเสียดายที่ Bitcoin ประสบกับข้อบกพร่องหลายประการ เช่น ระบบมีการกระจาย ธรรมชาติไม่สามารถยืดหยุ่นได้ ทำให้ไม่สามารถใช้งานคุณสมบัติใหม่ได้จนกว่าผู้ใช้เครือข่ายเกือบทั้งหมดจะอัปเดตไคลเอนต์ของตน ข้อบกพร่องที่สำคัญบางประการที่ไม่สามารถแก้ไขได้อย่างรวดเร็วจะขัดขวาง Bitcoin การแพร่กระจายอย่างกว้างขวาง ในโมเดลที่ไม่ยืดหยุ่นดังกล่าว การเปิดตัวโปรเจ็กต์ใหม่จะมีประสิทธิภาพมากกว่า แทนที่จะแก้ไขโครงการเดิมอย่างถาวร ในบทความนี้ เราศึกษาและเสนอวิธีแก้ปัญหาข้อบกพร่องหลักของ Bitcoin เราเชื่อ ว่าระบบที่คำนึงถึงแนวทางแก้ไขที่เราเสนอจะนำไปสู่การแข่งขันที่ดี ในระบบเงินสดอิเล็กทรอนิกส์ต่างๆ นอกจากนี้เรายังเสนอเงินสดอิเล็กทรอนิกส์ของเราเอง “CryptoNote” ชื่อที่เน้นความก้าวหน้าครั้งต่อไปในด้านเงินสดอิเล็กทรอนิกส์ 2 Bitcoin ข้อเสียและวิธีแก้ปัญหาที่เป็นไปได้ 2.1 การติดตามธุรกรรม ความเป็นส่วนตัวและการไม่เปิดเผยตัวตนเป็นสิ่งสำคัญที่สุดของเงินสดอิเล็กทรอนิกส์ การชำระเงินแบบเพียร์ทูเพียร์ พยายามปกปิดจากมุมมองของบุคคลที่สาม ซึ่งเป็นความแตกต่างที่ชัดเจนเมื่อเปรียบเทียบกับแบบดั้งเดิม การธนาคาร โดยเฉพาะอย่างยิ่ง T. Okamoto และ K. Ohta ได้อธิบายเกณฑ์หกประการของเงินสดอิเล็กทรอนิกส์ในอุดมคติ ซึ่งรวมถึง “ความเป็นส่วนตัว: ความสัมพันธ์ระหว่างผู้ใช้กับการซื้อของเขาจะต้องไม่สามารถติดตามได้ โดยใครก็ตาม” [30] จากคำอธิบาย เราได้รับคุณสมบัติสองประการที่ไม่ระบุชื่อโดยสมบูรณ์ แบบจำลองเงินสดอิเล็กทรอนิกส์จะต้องเป็นไปตามข้อกำหนดเพื่อให้เป็นไปตามข้อกำหนดที่ Okamoto ระบุไว้ และโอตะ: ไม่สามารถติดตามได้: สำหรับแต่ละธุรกรรมที่เข้ามา ผู้ส่งที่เป็นไปได้ทั้งหมดสามารถติดตั้งได้ ไม่สามารถเชื่อมโยงได้: สำหรับธุรกรรมขาออกสองรายการใดๆ จะไม่สามารถพิสูจน์ได้ว่าถูกส่งไป คนคนเดียวกัน ขออภัย Bitcoin ไม่เป็นไปตามข้อกำหนดที่ไม่สามารถติดตามได้ เนื่องจากธุรกรรมทั้งหมดที่เกิดขึ้นระหว่างผู้เข้าร่วมเครือข่ายนั้นเป็นแบบสาธารณะ ธุรกรรมใดๆ ก็สามารถเกิดขึ้นได้ 1 3 Bitcoin ล้มเหลวอย่างแน่นอน "ไม่สามารถติดตามได้" เมื่อฉันส่ง BTC ให้คุณ ซึ่งเป็นกระเป๋าเงินที่มันถูกส่งไป ได้รับการประทับตราอย่างถาวรบน blockchain ไม่มีคำถามว่าใครเป็นผู้ส่งเงินเหล่านั้น เพราะมีเพียงผู้รู้คีย์ส่วนตัวเท่านั้นที่สามารถส่งได้สืบเชื้อสายมาจากแหล่งกำเนิดและผู้รับขั้นสุดท้ายอย่างไม่คลุมเครือ แม้ว่าผู้เข้าร่วมสองคนจะแลกเปลี่ยนกันก็ตาม กองทุนในทางอ้อม วิธีการค้นหาเส้นทางที่ออกแบบมาอย่างเหมาะสมจะเปิดเผยที่มาและ ผู้รับขั้นสุดท้าย ยังสงสัยว่า Bitcoin ไม่เป็นไปตามคุณสมบัติที่สอง นักวิจัยบางคน ระบุไว้ ([33, 35, 29, 31]) ว่าการวิเคราะห์ blockchain อย่างรอบคอบอาจเปิดเผยความเชื่อมโยงระหว่าง ผู้ใช้เครือข่าย Bitcoin และธุรกรรมของพวกเขา แม้ว่าจะมีหลายวิธีก็ตาม โต้แย้ง [25] เป็นที่สงสัยว่าสามารถดึงข้อมูลส่วนบุคคลที่ซ่อนอยู่จำนวนมากออกจาก ฐานข้อมูลสาธารณะ Bitcoin ความล้มเหลวในการปฏิบัติตามคุณสมบัติทั้งสองที่สรุปไว้ข้างต้นทำให้เราสรุปได้ว่า ไม่ใช่ระบบเงินสดอิเล็กทรอนิกส์ที่ไม่เปิดเผยตัวตน แต่เป็นระบบเงินสดอิเล็กทรอนิกส์ที่ไม่เปิดเผยตัวตน ผู้ใช้มีการพัฒนาอย่างรวดเร็ว แนวทางแก้ไขเพื่อหลีกเลี่ยงข้อบกพร่องนี้ วิธีแก้ปัญหาโดยตรงสองประการคือ "บริการฟอก" [2] และ การพัฒนาวิธีการแบบกระจาย [3, 4] โซลูชันทั้งสองมีพื้นฐานมาจากแนวคิดเรื่องการผสม ธุรกรรมสาธารณะหลายรายการและส่งผ่านที่อยู่ตัวกลางบางแห่ง ซึ่งในทางกลับกัน ประสบข้อเสียเปรียบในการต้องมีบุคคลที่สามที่เชื่อถือได้ เมื่อเร็ว ๆ นี้ I. Miers และคณะเสนอแผนการสร้างสรรค์เพิ่มเติม [28]: “ซีโร่คอยน์” ซีโร่คอยน์ ใช้ตัวสะสมแบบเข้ารหัสทางเดียวและการพิสูจน์ที่ไม่มีความรู้ซึ่งอนุญาตให้ผู้ใช้ “แปลง” bitcoins ให้เป็นศูนย์เหรียญและใช้มันโดยใช้หลักฐานการเป็นเจ้าของที่ไม่เปิดเผยตัวตนแทน ลายเซ็นดิจิทัลที่ใช้คีย์สาธารณะที่ชัดเจน อย่างไรก็ตาม การพิสูจน์ความรู้ดังกล่าวมีความคงที่ แต่ขนาดไม่สะดวก - ประมาณ 30kb (ตามขีดจำกัด Bitcoin ของวันนี้) ซึ่งทำให้ข้อเสนอ ทำไม่ได้ ผู้เขียนยอมรับว่าโปรโตคอลนี้ไม่น่าจะได้รับการยอมรับจากคนส่วนใหญ่ Bitcoin ผู้ใช้ [5] 2.2 ฟังก์ชัน proof-of-work Bitcoin ผู้สร้าง Satoshi Nakamoto อธิบายอัลกอริธึมการตัดสินใจส่วนใหญ่ว่า "หนึ่ง CPU-หนึ่งโหวต" และใช้ฟังก์ชันการกำหนดราคาที่ผูกกับ CPU (สองเท่า SHA-256) สำหรับ proof-of-work ของเขา โครงการ เนื่องจากผู้ใช้ลงคะแนนสำหรับประวัติธุรกรรมเดียวเพื่อ [1] ความสมเหตุสมผลและ ความสม่ำเสมอของกระบวนการนี้เป็นเงื่อนไขที่สำคัญสำหรับทั้งระบบ ความปลอดภัยของรุ่นนี้มีข้อบกพร่องสองประการ อันดับแรก ต้องใช้ 51% ของเครือข่าย อำนาจการขุดให้อยู่ภายใต้การควบคุมของผู้ใช้ที่ซื่อสัตย์ ประการที่สอง ความคืบหน้าของระบบ (แก้ไขข้อบกพร่อง การแก้ไขด้านความปลอดภัย ฯลฯ...) ต้องการให้ผู้ใช้ส่วนใหญ่สนับสนุนและยอมรับ การเปลี่ยนแปลง (สิ่งนี้เกิดขึ้นเมื่อผู้ใช้อัปเดตซอฟต์แวร์กระเป๋าเงินของตน) [6].ในที่สุดการโหวตแบบเดียวกันนี้ กลไกนี้ยังใช้สำหรับการสำรวจความคิดเห็นโดยรวมเกี่ยวกับการใช้งานคุณลักษณะบางอย่าง [7] สิ่งนี้ทำให้เราสามารถคาดเดาคุณสมบัติที่จะต้องได้รับความพึงพอใจจาก proof-of-work ฟังก์ชั่นการกำหนดราคา ฟังก์ชันดังกล่าวจะต้องไม่ทำให้ผู้เข้าร่วมเครือข่ายมีนัยสำคัญ ได้เปรียบเหนือผู้เข้าร่วมรายอื่น มันต้องมีความเท่าเทียมกันระหว่างฮาร์ดแวร์ทั่วไปและสูง ต้นทุนของอุปกรณ์ที่กำหนดเอง จากตัวอย่างล่าสุด [8] เราจะเห็นว่ามีการใช้ฟังก์ชัน SHA-256 ในสถาปัตยกรรม Bitcoin ไม่มีคุณสมบัตินี้ เนื่องจากการขุดมีประสิทธิภาพมากขึ้น GPU และอุปกรณ์ ASIC เมื่อเปรียบเทียบกับ CPU ระดับสูง ดังนั้น Bitcoin จึงสร้างเงื่อนไขที่เอื้ออำนวยสำหรับช่องว่างขนาดใหญ่ระหว่างอำนาจการลงคะแนนของ ผู้เข้าร่วมเนื่องจากละเมิดหลักการ "หนึ่ง CPU - หนึ่งโหวต" เนื่องจากเจ้าของ GPU และ ASIC ครอบครอง พลังการลงคะแนนที่ใหญ่กว่ามากเมื่อเปรียบเทียบกับเจ้าของ CPU เป็นตัวอย่างคลาสสิกของ หลักการพาเรโตโดยที่ผู้เข้าร่วม 20% ของระบบควบคุมคะแนนเสียงมากกว่า 80% อาจมีคนแย้งว่าความไม่เท่าเทียมกันดังกล่าวไม่เกี่ยวข้องกับความปลอดภัยของเครือข่ายเนื่องจากไม่เป็นเช่นนั้น ผู้เข้าร่วมจำนวนน้อยที่ควบคุมคะแนนเสียงส่วนใหญ่แต่มีความซื่อสัตย์สุจริต ผู้เข้าร่วมที่สำคัญ อย่างไรก็ตาม ข้อโต้แย้งดังกล่าวค่อนข้างมีข้อบกพร่องเนื่องจากค่อนข้างจะเป็นเช่นนั้น ความเป็นไปได้ของฮาร์ดแวร์พิเศษราคาถูกที่ปรากฏมากกว่าความซื่อสัตย์ของผู้เข้าร่วมซึ่ง ก่อให้เกิดภัยคุกคาม เพื่อแสดงให้เห็นสิ่งนี้ ให้เรายกตัวอย่างต่อไปนี้ สมมุติว่าเป็นคนใจร้าย แต่ละคนได้รับพลังการขุดที่สำคัญโดยการสร้างฟาร์มขุดของตัวเองด้วยราคาถูก 2 สืบเชื้อสายมาจากแหล่งกำเนิดและผู้รับขั้นสุดท้ายอย่างไม่คลุมเครือ แม้ว่าผู้เข้าร่วมสองคนจะแลกเปลี่ยนกันก็ตาม กองทุนในทางอ้อม วิธีการค้นหาเส้นทางที่ออกแบบมาอย่างเหมาะสมจะเปิดเผยที่มาและ ผู้รับขั้นสุดท้าย ยังสงสัยว่า Bitcoin ไม่เป็นไปตามคุณสมบัติที่สอง นักวิจัยบางคน ระบุไว้ ([33, 35, 29, 31]) ว่าการวิเคราะห์ blockchain อย่างรอบคอบอาจเปิดเผยความเชื่อมโยงระหว่าง ผู้ใช้เครือข่าย Bitcoin และธุรกรรมของพวกเขา แม้ว่าจะมีหลายวิธีก็ตาม งระบุ [25] เป็นที่สงสัยว่าสามารถดึงข้อมูลส่วนบุคคลที่ซ่อนอยู่จำนวนมากออกจาก ฐานข้อมูลสาธารณะ Bitcoin ความล้มเหลวในการปฏิบัติตามคุณสมบัติทั้งสองที่ระบุไว้ข้างต้นทำให้เราสรุปได้ว่า ไม่ใช่ระบบเงินสดอิเล็กทรอนิกส์ที่ไม่เปิดเผยตัวตน แต่เป็นระบบเงินสดอิเล็กทรอนิกส์ที่ไม่เปิดเผยตัวตน ผู้ใช้มีการพัฒนาอย่างรวดเร็ว แนวทางแก้ไขเพื่อหลีกเลี่ยงข้อบกพร่องนี้ วิธีแก้ปัญหาโดยตรงสองวิธีคือ "บริการฟอก" [2] และ การพัฒนาวิธีการแบบกระจาย [3, 4] โซลูชันทั้งสองมีพื้นฐานมาจากแนวคิดเรื่องการผสม ธุรกรรมสาธารณะหลายรายการและส่งผ่านที่อยู่ตัวกลางบางแห่ง ซึ่งในทางกลับกัน ประสบข้อเสียเปรียบในการต้องมีบุคคลที่สามที่เชื่อถือได้ เมื่อเร็ว ๆ นี้ I. Miers และคณะเสนอแผนการสร้างสรรค์เพิ่มเติม [28]: “ซีโร่คอยน์” ซีโร่คอยน์ ใช้ตัวสะสมแบบเข้ารหัสทางเดียวและการพิสูจน์ที่ไม่มีความรู้ซึ่งอนุญาตให้ผู้ใช้ “แปลง” bitcoins ให้เป็นศูนย์เหรียญและใช้มันโดยใช้หลักฐานการเป็นเจ้าของที่ไม่เปิดเผยตัวตนแทน ลายเซ็นดิจิทัลที่ใช้คีย์สาธารณะที่ชัดเจน อย่างไรก็ตาม การพิสูจน์ความรู้ดังกล่าวมีความคงที่ แต่ขนาดไม่สะดวก - ประมาณ 30kb (ตามขีดจำกัด Bitcoin ของวันนี้) ซึ่งทำให้ข้อเสนอ ทำไม่ได้ ผู้เขียนยอมรับว่าโปรโตคอลนี้ไม่น่าจะได้รับการยอมรับจากคนส่วนใหญ่ Bitcoin ผู้ใช้ [5] 2.2 ฟังก์ชัน proof-of-work Bitcoin ผู้สร้าง Satoshi Nakamoto อธิบายอัลกอริธึมการตัดสินใจส่วนใหญ่ว่า "หนึ่ง CPU-หนึ่งโหวต" และใช้ฟังก์ชันการกำหนดราคาที่ผูกกับ CPU (สองเท่า SHA-256) สำหรับ proof-of-work ของเขา โครงการ เนื่องจากผู้ใช้ลงคะแนนสำหรับประวัติธุรกรรมเดียวเพื่อ [1] ความสมเหตุสมผลและ ความสม่ำเสมอของกระบวนการนี้เป็นเงื่อนไขที่สำคัญสำหรับทั้งระบบ ความปลอดภัยของรุ่นนี้มีข้อบกพร่องสองประการ อันดับแรก ต้องใช้ 51% ของเครือข่าย อำนาจการขุดให้อยู่ภายใต้การควบคุมของผู้ใช้ที่ซื่อสัตย์ ประการที่สอง ความคืบหน้าของระบบ (แก้ไขข้อบกพร่อง การแก้ไขด้านความปลอดภัย ฯลฯ...) ต้องการให้ผู้ใช้ส่วนใหญ่สนับสนุนและยอมรับ การเปลี่ยนแปลง (เกิดขึ้นเมื่อผู้ใช้อัปเดตซอฟต์แวร์กระเป๋าเงินของตน) [6].ในที่สุดการโหวตแบบเดียวกันนี้ กลไกนี้ยังใช้สำหรับการสำรวจความคิดเห็นโดยรวมเกี่ยวกับการใช้งานคุณลักษณะบางอย่าง [7] สิ่งนี้ทำให้เราสามารถคาดเดาคุณสมบัติที่จะต้องได้รับความพึงพอใจจาก proof-of-work ฟังก์ชั่นการกำหนดราคา ฟังก์ชันดังกล่าวจะต้องไม่ทำให้ผู้เข้าร่วมเครือข่ายมีนัยสำคัญ ได้เปรียบเหนือผู้เข้าร่วมรายอื่น มันต้องมีความเท่าเทียมกันระหว่างฮาร์ดแวร์ทั่วไปและสูง ต้นทุนของอุปกรณ์ที่กำหนดเอง จากตัวอย่างล่าสุด [8] เราจะเห็นว่ามีการใช้ฟังก์ชัน SHA-256 ในสถาปัตยกรรม Bitcoin ไม่มีคุณสมบัตินี้ เนื่องจากการขุดมีประสิทธิภาพมากขึ้น GPU และอุปกรณ์ ASIC เมื่อเปรียบเทียบกับ CPU ระดับสูง ดังนั้น Bitcoin จึงสร้างเงื่อนไขที่เอื้ออำนวยสำหรับช่องว่างขนาดใหญ่ระหว่างอำนาจการลงคะแนนของ ผู้เข้าร่วมเนื่องจากละเมิดหลักการ "หนึ่ง CPU - หนึ่งโหวต" เนื่องจากเจ้าของ GPU และ ASIC ครอบครอง พลังการลงคะแนนที่ใหญ่กว่ามากเมื่อเปรียบเทียบกับเจ้าของ CPU เป็นตัวอย่างคลาสสิกของ หลักการพาเรโตโดยที่ผู้เข้าร่วม 20% ของระบบควบคุมคะแนนเสียงมากกว่า 80% อาจมีคนแย้งว่าความไม่เท่าเทียมกันดังกล่าวไม่เกี่ยวข้องกับความปลอดภัยของเครือข่ายเนื่องจากไม่เป็นเช่นนั้น ผู้เข้าร่วมจำนวนน้อยที่ควบคุมคะแนนเสียงส่วนใหญ่แต่มีความซื่อสัตย์สุจริต ผู้เข้าร่วมที่สำคัญ อย่างไรก็ตาม ข้อโต้แย้งดังกล่าวค่อนข้างมีข้อบกพร่องเนื่องจากค่อนข้างจะเป็นเช่นนั้น ความเป็นไปได้ของฮาร์ดแวร์พิเศษราคาถูกที่ปรากฏมากกว่าความซื่อสัตย์ของผู้เข้าร่วมซึ่ง ก่อให้เกิดภัยคุกคาม เพื่อแสดงให้เห็นสิ่งนี้ ให้เรายกตัวอย่างต่อไปนี้ สมมุติว่าเป็นคนใจร้าย แต่ละคนได้รับพลังการขุดที่สำคัญโดยการสร้างฟาร์มขุดของตัวเองด้วยราคาถูก 2 4 สมมุติว่าหากผู้ใช้ทุกคนช่วยปกปิดตัวตนของตนเองด้วยการสร้างที่อยู่ใหม่อยู่เสมอ สำหรับทุกการชำระเงินที่ได้รับ (ซึ่งไร้สาระ แต่ในทางเทคนิคแล้วเป็นวิธีที่ "ถูกต้อง" ในการดำเนินการ) และหากผู้ใช้ทุกคนช่วยปกปิดตัวตนของคนอื่นโดยยืนกรานว่าพวกเขาจะไม่ส่งเงิน ไปยังที่อยู่ BTC เดียวกันสองครั้ง จากนั้น Bitcoin จะยังคงเพียง ตามสถานการณ์ เท่านั้นที่ผ่าน การทดสอบการเชื่อมต่อไม่ได้ ทำไม ข้อมูลผู้บริโภคสามารถใช้เพื่อระบุจำนวนที่น่าอัศจรรย์เกี่ยวกับผู้คนได้ตลอดเวลา ดูตัวอย่าง http://www.applieddatalabs.com/content/target-knows-it-shows ลองจินตนาการว่านี่คืออีก 20 ปีข้างหน้า และจินตนาการเพิ่มเติมว่า Target ไม่ได้เพิ่งรู้ เกี่ยวกับนิสัยการซื้อของคุณที่ Target แต่พวกเขาได้ขุด blockchain มาทั้งหมด การซื้อส่วนตัวของคุณด้วยกระเป๋าเงิน COINBASE ของคุณในอดีต สิบสองปี พวกเขาจะประมาณว่า "เฮ้เพื่อน คืนนี้คุณอาจจะไปซื้อยาแก้ไอก็ได้ คุณไม่ไปหรอก พรุ่งนี้จะรู้สึกดี” กรณีนี้อาจไม่เกิดขึ้นหากมีการใช้ประโยชน์จากการเรียงลำดับหลายฝ่ายอย่างถูกต้อง ดูตัวอย่างนี้โพสต์ในบล็อก: http://blog.ezyang.com/2012/07/secure-multiparty-bitcoin-anonymization/ ฉันไม่มั่นใจกับคณิตศาสตร์ในเรื่องนี้โดยสิ้นเชิง แต่ ... ทีละฉบับใช่ไหม จำเป็นต้องมีการอ้างอิง ในขณะที่โปรโตคอล Zerocoin (แบบสแตนด์อโลน) อาจไม่เพียงพอ Zerocash ดูเหมือนว่าโปรโตคอลจะใช้ธุรกรรมขนาด 1kb โครงการดังกล่าวได้รับการสนับสนุนโดย แน่นอนว่ากองทัพสหรัฐฯ และอิสราเอล ใครจะรู้เกี่ยวกับความแข็งแกร่งของมัน ในอีกทางหนึ่ง มือไม่มีใครอยากที่จะใช้จ่ายเงินโดยไม่ต้องกำกับดูแลมากกว่ากองทัพ http://zerocash-project.org/ ฉันไม่มั่นใจ... ดูตัวอย่าง http://fc14.ifca.ai/bitcoin/papers/bitcoin14_submission_12.pdf อ้างอิงจากผู้พัฒนา Cryptonote Maurice Planck (อาจเป็นนามแฝง) จาก cryptonote ฟอรั่ม: “ซีโร่คอยน์, ซีโร่แคช” นี่คือเทคโนโลยีที่ทันสมัยที่สุดฉันต้องยอมรับ ใช่คำพูด ข้างต้นมาจากการวิเคราะห์โปรโตคอลเวอร์ชันก่อนหน้า สำหรับความรู้ของฉันมันไม่ใช่ 288 แต่เป็น 384 ไบต์ แต่อย่างไรก็ตาม นี่เป็นข่าวดี พวกเขาใช้เทคนิคใหม่ล่าสุดที่เรียกว่า SNARK ซึ่งมีข้อเสียบางประการ: ตัวอย่างเช่น ฐานข้อมูลเริ่มต้นขนาดใหญ่ของพารามิเตอร์สาธารณะที่จำเป็นในการสร้างลายเซ็น (มากกว่า 1 GB) และ เวลาสำคัญที่จำเป็นในการสร้างธุรกรรม (มากกว่าหนึ่งนาที) ในที่สุดพวกเขาก็ใช้ a crypto รุ่นเยาว์ ซึ่งฉันพูดถึงไปแล้วว่าเป็นแนวคิดที่น่าโต้แย้ง: https://forum.cryptonote.org/viewtopic.php?f= " - Maurice P. พฤ. 03 เม.ย. 2557 19:56 น ฟังก์ชันที่ทำงานใน CPU และไม่เหมาะกับ GPU, FPGA หรือ ASIC การคำนวณ "ปริศนา" ที่ใช้ใน proof-of-work เรียกว่าฟังก์ชันการกำหนดราคา ฟังก์ชันต้นทุน หรือ ฟังก์ชั่นปริศนา
สืบเชื้อสายมาจากแหล่งกำเนิดและผู้รับขั้นสุดท้ายอย่างไม่คลุมเครือ แม้ว่าผู้เข้าร่วมสองคนจะแลกเปลี่ยนกันก็ตาม กองทุนในทางอ้อม วิธีการค้นหาเส้นทางที่ออกแบบมาอย่างเหมาะสมจะเปิดเผยที่มาและ ผู้รับขั้นสุดท้าย ยังสงสัยว่า Bitcoin ไม่เป็นไปตามคุณสมบัติที่สอง นักวิจัยบางคน ระบุไว้ ([33, 35, 29, 31]) ว่าการวิเคราะห์ blockchain อย่างรอบคอบอาจเปิดเผยความเชื่อมโยงระหว่าง ผู้ใช้เครือข่าย Bitcoin และธุรกรรมของพวกเขา แม้ว่าจะมีหลายวิธีก็ตาม โต้แย้ง [25] เป็นที่สงสัยว่าสามารถดึงข้อมูลส่วนบุคคลที่ซ่อนอยู่จำนวนมากออกจาก ฐานข้อมูลสาธารณะ Bitcoin ความล้มเหลวในการปฏิบัติตามคุณสมบัติทั้งสองที่ระบุไว้ข้างต้นทำให้เราสรุปได้ว่า ไม่ใช่ระบบเงินสดอิเล็กทรอนิกส์ที่ไม่เปิดเผยตัวตน แต่เป็นระบบเงินสดอิเล็กทรอนิกส์ที่ไม่เปิดเผยตัวตน ผู้ใช้มีการพัฒนาอย่างรวดเร็ว แนวทางแก้ไขเพื่อหลีกเลี่ยงข้อบกพร่องนี้ วิธีแก้ปัญหาโดยตรงสองประการคือ "บริการฟอก" [2] และ การพัฒนาวิธีการแบบกระจาย [3, 4] โซลูชันทั้งสองมีพื้นฐานมาจากแนวคิดเรื่องการผสม ธุรกรรมสาธารณะหลายรายการและส่งผ่านที่อยู่ตัวกลางบางแห่ง ซึ่งในทางกลับกัน ประสบข้อเสียเปรียบในการต้องมีบุคคลที่สามที่เชื่อถือได้ เมื่อเร็ว ๆ นี้ I. Miers และคณะเสนอแผนการสร้างสรรค์เพิ่มเติม [28]: “ซีโร่คอยน์” ซีโร่คอยน์ ใช้ตัวสะสมแบบเข้ารหัสทางเดียวและการพิสูจน์ที่ไม่มีความรู้ซึ่งอนุญาตให้ผู้ใช้ “แปลง” bitcoins ให้เป็นศูนย์เหรียญและใช้มันโดยใช้หลักฐานการเป็นเจ้าของที่ไม่เปิดเผยตัวตนแทน ลายเซ็นดิจิทัลที่ใช้คีย์สาธารณะที่ชัดเจน อย่างไรก็ตาม การพิสูจน์ความรู้ดังกล่าวมีความคงที่ แต่ขนาดไม่สะดวก - ประมาณ 30kb (ขึ้นอยู่กับขีดจำกัด Bitcoin ของวันนี้) ซึ่งทำให้ข้อเสนอ ทำไม่ได้ ผู้เขียนยอมรับว่าโปรโตคอลนี้ไม่น่าจะได้รับการยอมรับจากคนส่วนใหญ่ Bitcoin ผู้ใช้ [5] 2.2 ฟังก์ชัน proof-of-work Bitcoin ผู้สร้าง Satoshi Nakamoto อธิบายอัลกอริธึมการตัดสินใจส่วนใหญ่ว่า "หนึ่ง CPU-หนึ่งโหวต" และใช้ฟังก์ชันการกำหนดราคาที่ผูกกับ CPU (สองเท่า SHA-256) สำหรับ proof-of-work ของเขา โครงการ เนื่องจากผู้ใช้ลงคะแนนสำหรับประวัติธุรกรรมเดียวเพื่อ [1] ความสมเหตุสมผลและ ความสม่ำเสมอของกระบวนการนี้เป็นเงื่อนไขที่สำคัญสำหรับทั้งระบบ ความปลอดภัยของรุ่นนี้มีข้อบกพร่องสองประการ อันดับแรก ต้องใช้ 51% ของเครือข่าย อำนาจการขุดให้อยู่ภายใต้การควบคุมของผู้ใช้ที่ซื่อสัตย์ ประการที่สอง ความคืบหน้าของระบบ (แก้ไขข้อบกพร่อง การแก้ไขด้านความปลอดภัย ฯลฯ...) ต้องการให้ผู้ใช้ส่วนใหญ่สนับสนุนและยอมรับ การเปลี่ยนแปลง (เกิดขึ้นเมื่อผู้ใช้อัปเดตซอฟต์แวร์กระเป๋าเงินของตน) [6].ในที่สุดการโหวตแบบเดียวกันนี้ กลไกนี้ยังใช้สำหรับการสำรวจความคิดเห็นโดยรวมเกี่ยวกับการใช้งานคุณลักษณะบางอย่าง [7] สิ่งนี้ทำให้เราสามารถคาดเดาคุณสมบัติที่จะต้องได้รับความพึงพอใจจาก proof-of-work ฟังก์ชั่นการกำหนดราคา ฟังก์ชันดังกล่าวจะต้องไม่ทำให้ผู้เข้าร่วมเครือข่ายมีนัยสำคัญ ได้เปรียบเหนือผู้เข้าร่วมรายอื่น มันต้องมีความเท่าเทียมกันระหว่างฮาร์ดแวร์ทั่วไปและสูง ต้นทุนของอุปกรณ์ที่กำหนดเอง จากตัวอย่างล่าสุด [8] เราจะเห็นว่ามีการใช้ฟังก์ชัน SHA-256 ในสถาปัตยกรรม Bitcoin ไม่มีคุณสมบัตินี้ เนื่องจากการขุดมีประสิทธิภาพมากขึ้น GPU และอุปกรณ์ ASIC เมื่อเปรียบเทียบกับ CPU ระดับสูง ดังนั้น Bitcoin จึงสร้างเงื่อนไขที่เอื้ออำนวยสำหรับช่องว่างขนาดใหญ่ระหว่างอำนาจการลงคะแนนของ ผู้เข้าร่วมเนื่องจากละเมิดหลักการ "หนึ่ง CPU - หนึ่งโหวต" เนื่องจากเจ้าของ GPU และ ASIC ครอบครอง พลังการลงคะแนนที่ใหญ่กว่ามากเมื่อเปรียบเทียบกับเจ้าของ CPU เป็นตัวอย่างคลาสสิกของ หลักการพาเรโตโดยที่ผู้เข้าร่วม 20% ของระบบควบคุมคะแนนเสียงมากกว่า 80% อาจมีคนแย้งว่าความไม่เท่าเทียมกันดังกล่าวไม่เกี่ยวข้องกับความปลอดภัยของเครือข่ายเนื่องจากไม่เป็นเช่นนั้น ผู้เข้าร่วมจำนวนน้อยที่ควบคุมคะแนนเสียงส่วนใหญ่แต่มีความซื่อสัตย์สุจริต ผู้เข้าร่วมที่สำคัญ อย่างไรก็ตาม ข้อโต้แย้งดังกล่าวค่อนข้างมีข้อบกพร่องเนื่องจากค่อนข้างจะเป็นเช่นนั้น ความเป็นไปได้ของฮาร์ดแวร์พิเศษราคาถูกที่ปรากฏมากกว่าความซื่อสัตย์ของผู้เข้าร่วมซึ่ง ก่อให้เกิดภัยคุกคาม เพื่อแสดงให้เห็นสิ่งนี้ ให้เรายกตัวอย่างต่อไปนี้ สมมุติว่าเป็นคนใจร้าย แต่ละคนได้รับพลังการขุดที่สำคัญโดยการสร้างฟาร์มขุดของตัวเองด้วยราคาถูก 2 สืบเชื้อสายมาจากแหล่งกำเนิดและผู้รับขั้นสุดท้ายอย่างไม่คลุมเครือ แม้ว่าผู้เข้าร่วมสองคนจะแลกเปลี่ยนกันก็ตาม กองทุนในทางอ้อม วิธีการค้นหาเส้นทางที่ออกแบบมาอย่างเหมาะสมจะเปิดเผยที่มาและ ผู้รับขั้นสุดท้าย ยังสงสัยว่า Bitcoin ไม่เป็นไปตามคุณสมบัติที่สอง นักวิจัยบางคน ระบุ ([33, 35, 29, 31]) ว่าการวิเคราะห์ blockchain อย่างรอบคอบอาจเปิดเผยความเชื่อมโยงระหว่าง ผู้ใช้เครือข่าย Bitcoin และธุรกรรมของพวกเขา แม้ว่าจะมีหลายวิธีก็ตาม งระบุ [25] เป็นที่สงสัยว่าสามารถดึงข้อมูลส่วนบุคคลที่ซ่อนอยู่จำนวนมากออกจาก ฐานข้อมูลสาธารณะ Bitcoin ความล้มเหลวในการปฏิบัติตามคุณสมบัติทั้งสองที่ระบุไว้ข้างต้นทำให้เราสรุปได้ว่า ไม่ใช่ระบบเงินสดอิเล็กทรอนิกส์ที่ไม่เปิดเผยตัวตน แต่เป็นระบบเงินสดอิเล็กทรอนิกส์ที่ไม่เปิดเผยตัวตน ผู้ใช้มีการพัฒนาอย่างรวดเร็ว แนวทางแก้ไขเพื่อหลีกเลี่ยงข้อบกพร่องนี้ วิธีแก้ปัญหาโดยตรงสองวิธีคือ "บริการฟอก" [2] และ การพัฒนาวิธีการแบบกระจาย [3, 4] โซลูชันทั้งสองมีพื้นฐานมาจากแนวคิดเรื่องการผสม ธุรกรรมสาธารณะหลายรายการและส่งผ่านที่อยู่ตัวกลางบางแห่ง ซึ่งในทางกลับกัน ประสบข้อเสียเปรียบในการต้องมีบุคคลที่สามที่เชื่อถือได้ เมื่อเร็ว ๆ นี้ I. Miers และคณะเสนอแผนการสร้างสรรค์เพิ่มเติม [28]: “ซีโร่คอยน์” ซีโร่คอยน์ ใช้ตัวสะสมแบบเข้ารหัสทางเดียวและการพิสูจน์ที่ไม่มีความรู้ซึ่งอนุญาตให้ผู้ใช้ “แปลง” bitcoins ให้เป็นศูนย์เหรียญและใช้มันโดยใช้หลักฐานการเป็นเจ้าของที่ไม่เปิดเผยตัวตนแทน ลายเซ็นดิจิทัลที่ใช้คีย์สาธารณะที่ชัดเจน อย่างไรก็ตาม การพิสูจน์ความรู้ดังกล่าวมีความคงที่ แต่ขนาดไม่สะดวก - ประมาณ 30kb (ขึ้นอยู่กับขีดจำกัด Bitcoin ของวันนี้) ซึ่งทำให้ข้อเสนอ ทำไม่ได้ ผู้เขียนยอมรับว่าโปรโตคอลนี้ไม่น่าจะได้รับการยอมรับจากคนส่วนใหญ่ Bitcoin ผู้ใช้ [5] 2.2 ฟังก์ชัน proof-of-work Bitcoin ผู้สร้าง Satoshi Nakamoto อธิบายอัลกอริธึมการตัดสินใจส่วนใหญ่ว่า "หนึ่ง CPU-หนึ่งโหวต" และใช้ฟังก์ชันการกำหนดราคาที่ผูกกับ CPU (สองเท่า SHA-256) สำหรับ proof-of-work ของเขา โครงการ เนื่องจากผู้ใช้ลงคะแนนสำหรับประวัติธุรกรรมเดียวเพื่อ [1] ความสมเหตุสมผลและ ความสม่ำเสมอของกระบวนการนี้เป็นเงื่อนไขที่สำคัญสำหรับทั้งระบบ ความปลอดภัยของรุ่นนี้มีข้อบกพร่องสองประการ อันดับแรก ต้องใช้ 51% ของเครือข่าย อำนาจการขุดให้อยู่ภายใต้การควบคุมของผู้ใช้ที่ซื่อสัตย์ ประการที่สอง ความคืบหน้าของระบบ (แก้ไขข้อบกพร่อง การแก้ไขด้านความปลอดภัย ฯลฯ...) ต้องการให้ผู้ใช้ส่วนใหญ่สนับสนุนและยอมรับ การเปลี่ยนแปลง (เกิดขึ้นเมื่อผู้ใช้อัปเดตซอฟต์แวร์กระเป๋าเงินของตน) [6].ในที่สุดการโหวตแบบเดียวกันนี้ กลไกนี้ยังใช้สำหรับการสำรวจความคิดเห็นโดยรวมเกี่ยวกับการใช้งานคุณลักษณะบางอย่าง [7] สิ่งนี้ทำให้เราสามารถคาดเดาคุณสมบัติที่จะต้องได้รับความพึงพอใจจาก proof-of-work ฟังก์ชั่นการกำหนดราคา ฟังก์ชันดังกล่าวจะต้องไม่ทำให้ผู้เข้าร่วมเครือข่ายมีนัยสำคัญ ได้เปรียบเหนือผู้เข้าร่วมรายอื่น มันต้องมีความเท่าเทียมกันระหว่างฮาร์ดแวร์ทั่วไปและสูง ต้นทุนของอุปกรณ์ที่กำหนดเอง จากตัวอย่างล่าสุด [8] เราจะเห็นว่ามีการใช้ฟังก์ชัน SHA-256 ในสถาปัตยกรรม Bitcoin ไม่มีคุณสมบัตินี้ เนื่องจากการขุดมีประสิทธิภาพมากขึ้น GPU และอุปกรณ์ ASIC เมื่อเปรียบเทียบกับ CPU ระดับสูง ดังนั้น Bitcoin จึงสร้างเงื่อนไขที่เอื้ออำนวยสำหรับช่องว่างขนาดใหญ่ระหว่างอำนาจการลงคะแนนของ ผู้เข้าร่วมเนื่องจากละเมิดหลักการ "หนึ่ง CPU - หนึ่งโหวต" เนื่องจากเจ้าของ GPU และ ASIC ครอบครอง พลังการลงคะแนนที่ใหญ่กว่ามากเมื่อเปรียบเทียบกับเจ้าของ CPU เป็นตัวอย่างคลาสสิกของ หลักการพาเรโตโดยที่ผู้เข้าร่วม 20% ของระบบควบคุมคะแนนเสียงมากกว่า 80% อาจมีคนแย้งว่าความไม่เท่าเทียมกันดังกล่าวไม่เกี่ยวข้องกับความปลอดภัยของเครือข่ายเนื่องจากไม่เป็นเช่นนั้น ผู้เข้าร่วมจำนวนน้อยที่ควบคุมคะแนนเสียงส่วนใหญ่แต่มีความซื่อสัตย์สุจริต ผู้เข้าร่วมที่สำคัญ อย่างไรก็ตาม ข้อโต้แย้งดังกล่าวค่อนข้างมีข้อบกพร่องเนื่องจากค่อนข้างจะเป็นเช่นนั้น ความเป็นไปได้ของฮาร์ดแวร์พิเศษราคาถูกที่ปรากฏมากกว่าความซื่อสัตย์ของผู้เข้าร่วมซึ่ง ก่อให้เกิดภัยคุกคาม เพื่อแสดงให้เห็นสิ่งนี้ ให้เรายกตัวอย่างต่อไปนี้ สมมุติว่าเป็นคนใจร้าย แต่ละคนได้รับพลังการขุดที่สำคัญโดยการสร้างฟาร์มขุดของตัวเองด้วยราคาถูก 2 ความเห็นหน้า 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.
เทคโนโลยี CryptoNote
ตอนนี้เราได้ครอบคลุมข้อจำกัดของเทคโนโลยี Bitcoin แล้ว เราจะมุ่งเน้นไปที่ นำเสนอคุณสมบัติของ 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í:
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.
- 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
-
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.
-
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
- 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
ธุรกรรมที่ไม่สามารถติดตามได้
ในส่วนนี้ เราขอเสนอรูปแบบของธุรกรรมที่ไม่เปิดเผยตัวตนโดยสมบูรณ์ซึ่งตอบสนองทั้งความไม่สามารถตรวจสอบย้อนกลับได้
และเงื่อนไขที่ไม่สามารถเชื่อมโยงได้ คุณลักษณะที่สำคัญของโซลูชันของเราคือความเป็นอิสระ: ผู้ส่ง
ไม่จำเป็นต้องร่วมมือกับผู้ใช้รายอื่นหรือบุคคลที่สามที่เชื่อถือได้เพื่อทำธุรกรรมของเขา
ดังนั้นผู้เข้าร่วมแต่ละคนจึงสร้างการจราจรที่ปกคลุมอย่างอิสระ
4.1
การทบทวนวรรณกรรม
โครงการของเราอาศัยการเข้ารหัสแบบดั้งเดิมที่เรียกว่าลายเซ็นกลุ่ม นำเสนอครั้งแรกโดย
D. Chaum และ E. van Heyst [19] อนุญาตให้ผู้ใช้ลงนามข้อความในนามของกลุ่ม
หลังจากลงนามในข้อความที่ผู้ใช้ให้ (เพื่อวัตถุประสงค์ในการตรวจสอบ) ไม่ใช่สาธารณะของเขาเอง
1สิ่งนี้เรียกว่า “ขีดจำกัดซอฟต์” — ข้อจำกัดไคลเอนต์อ้างอิงสำหรับการสร้างบล็อกใหม่ ฮาร์ดสูงสุดของ
ขนาดบล็อกที่เป็นไปได้คือ 1 MB
4
หากจำเป็นซึ่งทำให้เกิดข้อเสียเปรียบหลัก น่าเสียดายที่เป็นการยากที่จะคาดเดาได้ว่าเมื่อใด
ค่าคงที่อาจจำเป็นต้องเปลี่ยนและการแทนที่อาจนำไปสู่ผลลัพธ์ที่เลวร้าย
ตัวอย่างที่ดีของการเปลี่ยนแปลงขีดจำกัดแบบฮาร์ดโค้ดที่นำไปสู่ผลที่ตามมาที่ร้ายแรงคือการบล็อก
จำกัดขนาดไว้ที่ 250kb1 ขีดจำกัดนี้เพียงพอที่จะรองรับธุรกรรมมาตรฐานได้ประมาณ 10,000 รายการ ใน
ต้นปี 2013 เกือบจะถึงขีดจำกัดนี้แล้ว และได้บรรลุข้อตกลงเพื่อเพิ่ม
ขีด จำกัด การเปลี่ยนแปลงถูกนำไปใช้ในกระเป๋าเงินเวอร์ชัน 0.8 และจบลงด้วยการแยกลูกโซ่ 24 บล็อก
และการโจมตีแบบใช้จ่ายสองครั้งที่ประสบความสำเร็จ [9] ในขณะที่จุดบกพร่องไม่ได้อยู่ในโปรโตคอล Bitcoin แต่
แต่ในกลไกฐานข้อมูลนั้นสามารถตรวจจับได้ง่ายโดยการทดสอบความเครียดแบบง่าย ๆ หากมี
ไม่มีการจำกัดขนาดบล็อกที่แนะนำโดยไม่ได้ตั้งใจ
ค่าคงที่ยังทำหน้าที่เป็นรูปแบบหนึ่งของจุดรวมศูนย์
แม้ว่าลักษณะแบบ peer-to-peer ของ
Bitcoin โหนดส่วนใหญ่ใช้ไคลเอนต์อ้างอิงอย่างเป็นทางการ [10] พัฒนาโดย
คนกลุ่มเล็กๆ กลุ่มนี้ตัดสินใจดำเนินการเปลี่ยนแปลงโปรโตคอล
และคนส่วนใหญ่ยอมรับการเปลี่ยนแปลงเหล่านี้โดยไม่คำนึงถึง "ความถูกต้อง" ของพวกเขา การตัดสินใจบางอย่างเกิดขึ้น
การอภิปรายอย่างดุเดือดและแม้กระทั่งเรียกร้องให้คว่ำบาตร [11] ซึ่งบ่งชี้ว่าชุมชนและ
นักพัฒนาซอฟต์แวร์อาจไม่เห็นด้วยกับประเด็นสำคัญบางประการ ดังนั้นจึงดูเหมือนสมเหตุสมผลที่จะมีโปรโตคอล
ด้วยตัวแปรที่ผู้ใช้สามารถกำหนดค่าได้และปรับได้เองซึ่งเป็นวิธีที่เป็นไปได้ในการหลีกเลี่ยงปัญหาเหล่านี้
2.5
สคริปต์ขนาดใหญ่
ระบบการเขียนสคริปต์ใน Bitcoin เป็นคุณลักษณะที่หนักและซับซ้อน มันอาจทำให้ใครคนหนึ่งสามารถสร้างได้
ธุรกรรมที่ซับซ้อน [12] แต่คุณลักษณะบางอย่างถูกปิดใช้งานเนื่องจากข้อกังวลด้านความปลอดภัยและ
บางตัวไม่เคยใช้ด้วยซ้ำ [13] สคริปต์ (รวมทั้งส่วนของผู้ส่งและผู้รับ)
สำหรับธุรกรรมยอดนิยมใน Bitcoin มีลักษณะดังนี้:
คีย์ แต่เป็นคีย์ของผู้ใช้ทั้งหมดในกลุ่มของเขา ผู้ตรวจสอบจะเชื่อมั่นว่าผู้ลงนามที่แท้จริงคือ a เป็นสมาชิกของกลุ่ม แต่ไม่สามารถระบุเฉพาะผู้ลงนามได้ โปรโตคอลดั้งเดิมจำเป็นต้องมีบุคคลที่สามที่เชื่อถือได้ (เรียกว่าผู้จัดการกลุ่ม) และเขาก็เป็นเช่นนั้น คนเดียวที่สามารถติดตามผู้ลงนามได้ รุ่นถัดไปเรียกว่าลายเซ็นแหวนแนะนำ โดย Rivest และคณะ ใน [34] เป็นโครงการอิสระที่ไม่มีผู้จัดการกลุ่มและไม่เปิดเผยตัวตน การเพิกถอน การปรับเปลี่ยนต่างๆ ของโครงร่างนี้ปรากฏในภายหลัง: ลายเซ็นวงแหวนที่เชื่อมโยงได้ [26, 27, 17] อนุญาตให้ตรวจสอบว่ามีการสร้างลายเซ็นสองรายการโดยสมาชิกกลุ่มคนเดียวกันหรือไม่ ซึ่งสามารถตรวจสอบย้อนกลับได้ ลายเซ็นต์แหวน [24, 23] จำกัด การไม่เปิดเผยตัวตนมากเกินไปโดยให้ความเป็นไปได้ในการติดตามผู้ลงนาม สองข้อความที่เกี่ยวข้องกับข้อมูลเมตาเดียวกัน (หรือ "แท็ก" ในแง่ของ [24]) โครงสร้างการเข้ารหัสที่คล้ายกันเรียกอีกอย่างว่าลายเซ็นกลุ่มเฉพาะกิจ [16, 38] มัน เน้นการสร้างกลุ่มตามอำเภอใจ ในขณะที่แผนลายเซ็นกลุ่ม/วงแหวนค่อนข้างจะสื่อถึง a ชุดสมาชิกคงที่ โดยส่วนใหญ่ โซลูชันของเราอิงจากงาน “Traceable ring Signature” โดย E. Fujisaki และเค.ซูซูกิ [24]. เพื่อที่จะแยกแยะความแตกต่างระหว่างอัลกอริธึมดั้งเดิมและการปรับเปลี่ยนของเรา เรียกแบบหลังว่าเป็นลายเซ็นกริ่งแบบครั้งเดียว โดยเน้นย้ำถึงความสามารถของผู้ใช้ในการสร้างลายเซ็นที่ถูกต้องเพียงอันเดียว ลายเซ็นใต้คีย์ส่วนตัวของเขา เราลดคุณสมบัติการตรวจสอบย้อนกลับลงและรักษาความสามารถในการเชื่อมโยงไว้ เพื่อให้เกิดเพียงครั้งเดียวเท่านั้น: กุญแจสาธารณะอาจปรากฏในชุดการตรวจสอบต่างประเทศจำนวนมากและ รหัสส่วนตัวสามารถใช้ในการสร้างลายเซ็นที่ไม่ระบุชื่อที่ไม่ซ้ำใครได้ ในกรณีที่ใช้จ่ายซ้ำซ้อน การพยายามลงนามทั้งสองลายเซ็นจะเชื่อมโยงเข้าด้วยกัน แต่ไม่จำเป็นต้องเปิดเผยผู้ลงนาม เพื่อวัตถุประสงค์ของเรา 4.2 คำจำกัดความ 4.2.1 พารามิเตอร์เส้นโค้งวงรี เนื่องจากอัลกอริธึมลายเซ็นพื้นฐานของเรา เราเลือกใช้รูปแบบที่รวดเร็ว EdDSA ซึ่งได้รับการพัฒนาและ ดำเนินการโดยดีเจ เบิร์นสไตน์ และคณะ [18]. เช่นเดียวกับ ECDSA ของ Bitcoin มันขึ้นอยู่กับเส้นโค้งรูปวงรี ปัญหาลอการิทึมแบบไม่ต่อเนื่อง ดังนั้นโครงร่างของเราจึงสามารถนำไปใช้กับ Bitcoin ได้ในอนาคต พารามิเตอร์ทั่วไปคือ: q: จำนวนเฉพาะ; q = 2255 −19; d: องค์ประกอบของ Fq; ง = −121665/121666; E: สมการเส้นโค้งวงรี −x2 + y2 = 1 + dx2y2; G: จุดฐาน; G = (x, −4/5); l: ลำดับเฉพาะของจุดฐาน ล. = 2252 + 27742317777372353535851937790883648493; \(H_s\): ฟังก์ชันการเข้ารหัส hash \(\{0, 1\}^* \to \mathbb{F}_q\); \(H_p\): ฟังก์ชัน hash ที่กำหนดขึ้น \(E(\mathbb{F}_q) \to E(\mathbb{F}_q)\) 4.2.2 คำศัพท์เฉพาะทาง ความเป็นส่วนตัวที่ได้รับการปรับปรุงต้องใช้คำศัพท์ใหม่ซึ่งไม่ควรสับสนกับเอนทิตี Bitcoin ec-key ส่วนตัวเป็นคีย์ส่วนตัวโค้งวงรีมาตรฐาน: ตัวเลข \(a \in [1, l - 1]\); ec-key สาธารณะเป็นคีย์สาธารณะโค้งรูปไข่มาตรฐาน: จุด A = aG; keypair แบบครั้งเดียวคือคู่ของ ec-key ส่วนตัวและสาธารณะ 5 คีย์ แต่เป็นคีย์ของผู้ใช้ทั้งหมดในกลุ่มของเขา ผู้ตรวจสอบจะเชื่อมั่นว่าผู้ลงนามที่แท้จริงคือ a เป็นสมาชิกของกลุ่ม แต่ไม่สามารถระบุเฉพาะผู้ลงนามได้ โปรโตคอลดั้งเดิมจำเป็นต้องมีบุคคลที่สามที่เชื่อถือได้ (เรียกว่าผู้จัดการกลุ่ม) และเขาก็เป็นเช่นนั้น คนเดียวที่สามารถติดตามผู้ลงนามได้ รุ่นถัดไปเรียกว่าลายเซ็นแหวนแนะนำ โดย Rivest และคณะ ใน [34] เป็นโครงการอิสระที่ไม่มีผู้จัดการกลุ่มและไม่เปิดเผยตัวตน การเพิกถอน การปรับเปลี่ยนต่างๆ ของโครงร่างนี้ปรากฏในภายหลัง: ลายเซ็นวงแหวนที่เชื่อมโยงได้ [26, 27, 17] อนุญาตให้ตรวจสอบว่ามีการสร้างลายเซ็นสองรายการโดยสมาชิกกลุ่มคนเดียวกันหรือไม่ ซึ่งสามารถตรวจสอบย้อนกลับได้ ลายเซ็นต์แหวน [24, 23] จำกัด การไม่เปิดเผยตัวตนมากเกินไปโดยให้ความเป็นไปได้ในการติดตามผู้ลงนาม สองข้อความที่เกี่ยวข้องกับข้อมูลเมตาเดียวกัน (หรือ "แท็ก" ในแง่ของ [24]) โครงสร้างการเข้ารหัสที่คล้ายกันเรียกอีกอย่างว่าลายเซ็นกลุ่มเฉพาะกิจ [16, 38] มัน เน้นการสร้างกลุ่มตามอำเภอใจ ในขณะที่แผนลายเซ็นกลุ่ม/วงแหวนค่อนข้างจะสื่อถึง a ชุดสมาชิกคงที่ โดยส่วนใหญ่ โซลูชันของเราอิงจากงาน “Traceable ring Signature” โดย E. Fujisaki และเค. ซูซูกิ [24]. เพื่อที่จะแยกแยะความแตกต่างระหว่างอัลกอริธึมดั้งเดิมและการปรับเปลี่ยนของเรา เรียกแบบหลังว่าเป็นลายเซ็นกริ่งแบบครั้งเดียว โดยเน้นย้ำถึงความสามารถของผู้ใช้ในการสร้างลายเซ็นที่ถูกต้องเพียงอันเดียว ลายเซ็นใต้คีย์ส่วนตัวของเขา เราลดคุณสมบัติการตรวจสอบย้อนกลับลงและรักษาความสามารถในการเชื่อมโยงไว้ เพื่อให้เกิดเพียงครั้งเดียวเท่านั้น: กุญแจสาธารณะอาจปรากฏในชุดการตรวจสอบต่างประเทศจำนวนมากและ รหัสส่วนตัวสามารถใช้ในการสร้างลายเซ็นที่ไม่ระบุชื่อที่ไม่ซ้ำใครได้ ในกรณีที่ใช้จ่ายซ้ำซ้อน การพยายามลงนามทั้งสองลายเซ็นจะเชื่อมโยงเข้าด้วยกัน แต่ไม่จำเป็นต้องเปิดเผยผู้ลงนาม เพื่อวัตถุประสงค์ของเรา 4.2 คำจำกัดความ 4.2.1 พารามิเตอร์เส้นโค้งวงรี เนื่องจากเราเลือกอัลกอริธึมลายเซ็นพื้นฐานของเราe เพื่อใช้รูปแบบที่รวดเร็ว EdDSA ซึ่งได้รับการพัฒนาและ ดำเนินการโดยดีเจ เบิร์นสไตน์ และคณะ [18]. เช่นเดียวกับ ECDSA ของ Bitcoin มันขึ้นอยู่กับเส้นโค้งรูปวงรี ปัญหาลอการิทึมแบบไม่ต่อเนื่อง ดังนั้นโครงร่างของเราจึงสามารถนำไปใช้กับ Bitcoin ได้ในอนาคต พารามิเตอร์ทั่วไปคือ: q: จำนวนเฉพาะ; q = 2255 −19; d: องค์ประกอบของ Fq; ง = −121665/121666; E: สมการเส้นโค้งวงรี −x2 + y2 = 1 + dx2y2; G: จุดฐาน; G = (x, −4/5); l: ลำดับเฉพาะของจุดฐาน ล. = 2252 + 27742317777372353535851937790883648493; \(H_s\): ฟังก์ชันการเข้ารหัส hash \(\{0, 1\}^* \to \mathbb{F}_q\); \(H_p\): ฟังก์ชัน hash ที่กำหนดขึ้น \(E(\mathbb{F}_q) \to E(\mathbb{F}_q)\) 4.2.2 คำศัพท์เฉพาะทาง ความเป็นส่วนตัวที่ได้รับการปรับปรุงต้องใช้คำศัพท์ใหม่ซึ่งไม่ควรสับสนกับเอนทิตี Bitcoin ec-key ส่วนตัวเป็นคีย์ส่วนตัวโค้งวงรีมาตรฐาน: ตัวเลข \(a \in [1, l - 1]\); ec-key สาธารณะเป็นคีย์สาธารณะโค้งรูปไข่มาตรฐาน: จุด A = aG; keypair แบบครั้งเดียวคือคู่ของ ec-key ส่วนตัวและสาธารณะ 5 8 ลายเซ็นต์แหวนทำงานดังนี้: Alex ต้องการส่งข้อความถึง WikiLeaks เกี่ยวกับนายจ้างของเธอรั่วไหล พนักงานทุกคนในบริษัทของเธอมีคู่คีย์ส่วนตัว/สาธารณะ (Ri, Ui) เธอแต่ง ลายเซ็นของเธอพร้อมชุดอินพุตเป็นข้อความของเธอ, ม, คีย์ส่วนตัวของเธอ, Ri และของทุกคน กุญแจสาธารณะ (Ui;i=1...n) ทุกคน (โดยไม่ทราบรหัสส่วนตัว) สามารถตรวจสอบได้อย่างง่ายดาย ต้องใช้ บางคู่ (Rj, Uj) เพื่อสร้างลายเซ็น... คนที่ทำงาน สำหรับนายจ้างของอเล็กซ์... แต่โดยพื้นฐานแล้วมันเป็นการเดาสุ่มเพื่อดูว่าอันไหนจะเป็นอันไหน 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 โปรดสังเกตว่าลายเซ็นวงแหวนที่ลิงก์ได้ซึ่งอธิบายไว้ที่นี่เป็นสิ่งที่ตรงกันข้ามกับ "ไม่สามารถลิงก์ได้" อธิบายไว้ข้างต้น ที่นี่ เราสกัดกั้นข้อความสองข้อความ และเราสามารถระบุได้ว่าข้อความเดียวกันหรือไม่ ฝ่ายนั้นส่งพวกเขามา แม้ว่าเราจะยังคงไม่สามารถระบุได้ว่าใครคือฝ่ายนั้น ที่ คำจำกัดความของ "ไม่สามารถเชื่อมโยงได้" ที่ใช้ในการสร้าง Cryptonote หมายความว่าเราไม่สามารถระบุได้ว่า ฝ่ายเดียวกันกำลังรับพวกเขา ดังนั้นสิ่งที่เรามีจริงๆ ที่นี่คือสี่สิ่งที่เกิดขึ้น ระบบสามารถเชื่อมโยงหรือ ไม่สามารถเชื่อมโยงได้ ขึ้นอยู่กับว่าเป็นไปได้หรือไม่ที่จะตัดสินว่าผู้ส่งของ สองข้อความเหมือนกัน (ไม่ว่าจะต้องเพิกถอนการไม่เปิดเผยตัวตนหรือไม่ก็ตาม) และ ระบบสามารถยกเลิกการเชื่อมโยงหรือไม่สามารถยกเลิกการเชื่อมโยงได้ ขึ้นอยู่กับว่าเป็นไปได้หรือไม่ กำหนดว่าผู้รับข้อความทั้งสองคนเหมือนกันหรือไม่ (ไม่ว่าจะหรือไม่ก็ตาม สิ่งนี้จำเป็นต้องเพิกถอนการไม่เปิดเผยตัวตน) โปรดอย่าตำหนิฉันสำหรับคำศัพท์ที่น่ากลัวนี้ นักทฤษฎีกราฟน่าจะเป็นเช่นนั้น ยินดี บางท่านอาจจะรู้สึกสบายใจกว่าหากใช้ "ตัวรับที่ลิงก์ได้" กับ "ตัวส่งที่ลิงก์ได้" http://link.springer.com/chapter/10.1007/978-3-540-71677-8_13 เมื่อฉันอ่านสิ่งนี้ดูเหมือนเป็นคุณลักษณะที่โง่เขลา แล้วผมก็อ่านเจอว่ามันอาจจะเป็นฟีเจอร์สำหรับ การลงคะแนนเสียงทางอิเล็กทรอนิกส์ และนั่นก็ดูสมเหตุสมผล ค่อนข้างเจ๋งจากมุมมองนั้น แต่ฉัน ไม่แน่ใจโดยสิ้นเชิงเกี่ยวกับการใช้ลายเซ็นวงแหวนที่ตรวจสอบย้อนกลับได้โดยเจตนา http://search.ieice.org/bin/summary.php?id=e95-a_1_151
คีย์ แต่เป็นคีย์ของผู้ใช้ทั้งหมดในกลุ่มของเขา ผู้ตรวจสอบจะเชื่อมั่นว่าผู้ลงนามที่แท้จริงคือ a เป็นสมาชิกของกลุ่ม แต่ไม่สามารถระบุเฉพาะผู้ลงนามได้ โปรโตคอลดั้งเดิมจำเป็นต้องมีบุคคลที่สามที่เชื่อถือได้ (เรียกว่าผู้จัดการกลุ่ม) และเขาก็เป็นเช่นนั้น คนเดียวที่สามารถติดตามผู้ลงนามได้ รุ่นถัดไปเรียกว่าลายเซ็นแหวนแนะนำ โดย Rivest และคณะ ใน [34] เป็นโครงการอิสระที่ไม่มีผู้จัดการกลุ่มและไม่เปิดเผยตัวตน การเพิกถอน การปรับเปลี่ยนต่างๆ ของโครงร่างนี้ปรากฏในภายหลัง: ลายเซ็นวงแหวนที่เชื่อมโยงได้ [26, 27, 17] อนุญาตให้ตรวจสอบว่ามีการสร้างลายเซ็นสองรายการโดยสมาชิกกลุ่มคนเดียวกันหรือไม่ ซึ่งสามารถตรวจสอบย้อนกลับได้ ลายเซ็นต์แหวน [24, 23] จำกัด การไม่เปิดเผยตัวตนมากเกินไปโดยให้ความเป็นไปได้ในการติดตามผู้ลงนาม สองข้อความที่เกี่ยวข้องกับข้อมูลเมตาเดียวกัน (หรือ "แท็ก" ในแง่ของ [24]) โครงสร้างการเข้ารหัสที่คล้ายกันเรียกอีกอย่างว่าลายเซ็นกลุ่มเฉพาะกิจ [16, 38] มัน เน้นการสร้างกลุ่มตามอำเภอใจ ในขณะที่แผนลายเซ็นกลุ่ม/วงแหวนค่อนข้างจะสื่อถึง a ชุดสมาชิกคงที่ โดยส่วนใหญ่ โซลูชันของเราอิงจากงาน “Traceable ring Signature” โดย E. Fujisaki และเค. ซูซูกิ [24]. เพื่อที่จะแยกแยะความแตกต่างระหว่างอัลกอริธึมดั้งเดิมและการปรับเปลี่ยนของเรา เรียกแบบหลังว่าเป็นลายเซ็นกริ่งแบบครั้งเดียว โดยเน้นย้ำถึงความสามารถของผู้ใช้ในการสร้างลายเซ็นที่ถูกต้องเพียงอันเดียว ลายเซ็นใต้คีย์ส่วนตัวของเขา เราลดคุณสมบัติการตรวจสอบย้อนกลับลงและรักษาความสามารถในการเชื่อมโยงไว้ เพื่อให้เกิดเพียงครั้งเดียวเท่านั้น: กุญแจสาธารณะอาจปรากฏในชุดการตรวจสอบต่างประเทศจำนวนมากและ รหัสส่วนตัวสามารถใช้ในการสร้างลายเซ็นที่ไม่ระบุชื่อที่ไม่ซ้ำใครได้ ในกรณีที่ใช้จ่ายซ้ำซ้อน การพยายามลงนามทั้งสองลายเซ็นจะเชื่อมโยงเข้าด้วยกัน แต่ไม่จำเป็นต้องเปิดเผยผู้ลงนาม เพื่อวัตถุประสงค์ของเรา 4.2 คำจำกัดความ 4.2.1 พารามิเตอร์เส้นโค้งวงรี เนื่องจากอัลกอริธึมลายเซ็นพื้นฐานของเรา เราเลือกใช้รูปแบบที่รวดเร็ว EdDSA ซึ่งได้รับการพัฒนาและ ดำเนินการโดยดีเจ เบิร์นสไตน์ และคณะ [18]. เช่นเดียวกับ ECDSA ของ Bitcoin มันขึ้นอยู่กับเส้นโค้งรูปวงรี ปัญหาลอการิทึมแบบไม่ต่อเนื่อง ดังนั้นโครงร่างของเราจึงสามารถนำไปใช้กับ Bitcoin ได้ในอนาคต พารามิเตอร์ทั่วไปคือ: q: จำนวนเฉพาะ; q = 2255 −19; d: องค์ประกอบของ Fq; ง = −121665/121666; E: สมการเส้นโค้งวงรี −x2 + y2 = 1 + dx2y2; G: จุดฐาน; G = (x, −4/5); l: ลำดับเฉพาะของจุดฐาน ล. = 2252 + 27742317777372353535851937790883648493; \(H_s\): ฟังก์ชันการเข้ารหัส hash \(\{0, 1\}^* \to \mathbb{F}_q\); \(H_p\): ฟังก์ชัน hash ที่กำหนดขึ้น \(E(\mathbb{F}_q) \to E(\mathbb{F}_q)\) 4.2.2 คำศัพท์เฉพาะทาง ความเป็นส่วนตัวที่ได้รับการปรับปรุงต้องใช้คำศัพท์ใหม่ซึ่งไม่ควรสับสนกับเอนทิตี Bitcoin ec-key ส่วนตัวเป็นคีย์ส่วนตัวโค้งวงรีมาตรฐาน: ตัวเลข \(a \in [1, l - 1]\); ec-key สาธารณะเป็นคีย์สาธารณะโค้งรูปไข่มาตรฐาน: จุด A = aG; keypair แบบครั้งเดียวคือคู่ของ ec-key ส่วนตัวและสาธารณะ 5 คีย์ แต่เป็นคีย์ของผู้ใช้ทั้งหมดในกลุ่มของเขา ผู้ตรวจสอบจะเชื่อมั่นว่าผู้ลงนามที่แท้จริงคือ a เป็นสมาชิกของกลุ่ม แต่ไม่สามารถระบุเฉพาะผู้ลงนามได้ โปรโตคอลดั้งเดิมจำเป็นต้องมีบุคคลที่สามที่เชื่อถือได้ (เรียกว่าผู้จัดการกลุ่ม) และเขาก็เป็นเช่นนั้น คนเดียวที่สามารถติดตามผู้ลงนามได้ รุ่นถัดไปเรียกว่าลายเซ็นแหวนแนะนำ โดย Rivest และคณะ ใน [34] เป็นโครงการอิสระที่ไม่มีผู้จัดการกลุ่มและไม่เปิดเผยตัวตน การเพิกถอน การปรับเปลี่ยนต่างๆ ของโครงร่างนี้ปรากฏในภายหลัง: ลายเซ็นวงแหวนที่เชื่อมโยงได้ [26, 27, 17] อนุญาตให้ตรวจสอบว่ามีการสร้างลายเซ็นสองรายการโดยสมาชิกกลุ่มคนเดียวกันหรือไม่ ซึ่งสามารถตรวจสอบย้อนกลับได้ ลายเซ็นต์แหวน [24, 23] จำกัด การไม่เปิดเผยตัวตนมากเกินไปโดยให้ความเป็นไปได้ในการติดตามผู้ลงนาม สองข้อความที่เกี่ยวข้องกับข้อมูลเมตาเดียวกัน (หรือ "แท็ก" ในแง่ของ [24]) โครงสร้างการเข้ารหัสที่คล้ายกันเรียกอีกอย่างว่าลายเซ็นกลุ่มเฉพาะกิจ [16, 38] มัน เน้นการสร้างกลุ่มตามอำเภอใจ ในขณะที่แผนลายเซ็นกลุ่ม/วงแหวนค่อนข้างจะสื่อถึง a ชุดสมาชิกคงที่ โดยส่วนใหญ่ โซลูชันของเราอิงจากงาน “Traceable ring Signature” โดย E. Fujisaki และเค. ซูซูกิ [24]. เพื่อที่จะแยกแยะความแตกต่างระหว่างอัลกอริธึมดั้งเดิมและการปรับเปลี่ยนของเรา เรียกแบบหลังว่าเป็นลายเซ็นกริ่งแบบครั้งเดียว โดยเน้นย้ำถึงความสามารถของผู้ใช้ในการสร้างลายเซ็นที่ถูกต้องเพียงอันเดียว ลายเซ็นใต้คีย์ส่วนตัวของเขา เราลดคุณสมบัติการตรวจสอบย้อนกลับลงและรักษาความสามารถในการเชื่อมโยงไว้ เพื่อให้เกิดเพียงครั้งเดียวเท่านั้น: กุญแจสาธารณะอาจปรากฏในชุดการตรวจสอบต่างประเทศจำนวนมากและ รหัสส่วนตัวสามารถใช้ในการสร้างลายเซ็นที่ไม่ระบุชื่อที่ไม่ซ้ำใครได้ ในกรณีที่ใช้จ่ายซ้ำซ้อน การพยายามลงนามทั้งสองลายเซ็นจะเชื่อมโยงเข้าด้วยกัน แต่ไม่จำเป็นต้องเปิดเผยผู้ลงนาม เพื่อวัตถุประสงค์ของเรา 4.2 คำจำกัดความ 4.2.1 พารามิเตอร์เส้นโค้งวงรี เนื่องจากเราเลือกอัลกอริธึมลายเซ็นพื้นฐานของเราe เพื่อใช้รูปแบบที่รวดเร็ว EdDSA ซึ่งได้รับการพัฒนาและ ดำเนินการโดยดีเจ เบิร์นสไตน์ และคณะ [18]. เช่นเดียวกับ ECDSA ของ Bitcoin มันขึ้นอยู่กับเส้นโค้งรูปวงรี ปัญหาลอการิทึมแบบไม่ต่อเนื่อง ดังนั้นโครงการของเราจึงสามารถนำไปใช้กับ Bitcoin ได้ในอนาคต พารามิเตอร์ทั่วไปคือ: q: จำนวนเฉพาะ; q = 2255 −19; d: องค์ประกอบของ Fq; ง = −121665/121666; E: สมการเส้นโค้งวงรี −x2 + y2 = 1 + dx2y2; G: จุดฐาน; G = (x, −4/5); l: ลำดับเฉพาะของจุดฐาน ล. = 2252 + 27742317777372353535851937790883648493; \(H_s\): ฟังก์ชันการเข้ารหัส hash \(\{0, 1\}^* \to \mathbb{F}_q\); \(H_p\): ฟังก์ชัน hash ที่กำหนดขึ้น \(E(\mathbb{F}_q) \to E(\mathbb{F}_q)\) 4.2.2 คำศัพท์เฉพาะทาง ความเป็นส่วนตัวที่ได้รับการปรับปรุงต้องใช้คำศัพท์ใหม่ซึ่งไม่ควรสับสนกับเอนทิตี Bitcoin ec-key ส่วนตัวเป็นคีย์ส่วนตัวโค้งวงรีมาตรฐาน: ตัวเลข \(a \in [1, l - 1]\); ec-key สาธารณะเป็นคีย์สาธารณะโค้งรูปไข่มาตรฐาน: จุด A = aG; keypair แบบครั้งเดียวคือคู่ของ ec-key ส่วนตัวและสาธารณะ 5 9 เอ้ย ผู้เขียน whitepaper นี้น่าจะใช้คำพูดได้ดีกว่านี้แน่นอน! สมมติว่าเป็น บริษัทที่พนักงานเป็นเจ้าของต้องการลงคะแนนเสียงว่าจะซื้อกิจการใหม่บางอย่างหรือไม่ สินทรัพย์ และอเล็กซ์และเบรนด้าก็เป็นพนักงานทั้งคู่ บริษัทจัดให้มีพนักงานแต่ละคนก ข้อความเช่น "ฉันลงคะแนนว่าใช่ในข้อเสนอ A!" ซึ่งมี metatainformation “ประเด็น” [PROP A] และขอให้พวกเขาลงนามด้วยลายเซ็นวงแหวนที่ติดตามได้หากพวกเขาสนับสนุนข้อเสนอ การใช้ลายเซ็นวงแหวนแบบดั้งเดิม พนักงานที่ไม่ซื่อสัตย์สามารถเซ็นข้อความได้หลายครั้ง อาจมี nonces ที่แตกต่างกันเพื่อที่จะลงคะแนนได้มากเท่าที่ต้องการ ในอีกทางหนึ่ง ในรูปแบบลายเซ็นวงแหวนที่ติดตามได้ อเล็กซ์จะไปลงคะแนน และคีย์ส่วนตัวของเธอจะมี ถูกนำมาใช้ในประเด็น [PROP A] ถ้าอเล็กซ์พยายามเซ็นข้อความเช่น "ฉัน เบรนด้า อนุมัติแล้ว" ข้อเสนอ A!" เพื่อ "เฟรม" เบรนดาและโหวตสองครั้ง ข้อความใหม่นี้จะมีปัญหาเช่นกัน [ข้อเสนอ ก]. เนื่องจากคีย์ส่วนตัวของ Alex ได้สะดุดปัญหา [PROP A] แล้ว ตัวตนของ Alex จะถูกเปิดเผยทันทีว่าเป็นการฉ้อโกง ซึ่งหน้ามันเจ๋งมาก! การเข้ารหัสบังคับใช้ความเท่าเทียมกันในการลงคะแนนเสียง http://link.springer.com/chapter/10.1007/978-3-540-71677-8_13 บทความนี้น่าสนใจ โดยพื้นฐานแล้วเป็นการสร้างลายเซ็นเฉพาะกิจ แต่ไม่มีสิ่งใดเลย ความยินยอมของผู้เข้าร่วมรายอื่น โครงสร้างของลายเซ็นอาจแตกต่างกัน ฉันไม่ได้ขุด ลึกและฉันก็ไม่เห็นว่ามันปลอดภัยหรือไม่ https://people.csail.mit.edu/rivest/AdidaHohenbergerRivest-AdHocGroupSignaturesFromHijackedKeypai ลายเซ็นกลุ่มเฉพาะกิจคือ: ลายเซ็นวงแหวนซึ่งเป็นลายเซ็นกลุ่มที่ไม่มีกลุ่ม ผู้จัดการ ไม่มีการรวมศูนย์ แต่อนุญาตให้สมาชิกในกลุ่มเฉพาะกิจสามารถอ้างสิทธิ์ดังกล่าวได้อย่างพิสูจน์ได้ ได้ (ไม่) ออกลายเซ็นนิรนามในนามของกลุ่ม http://link.springer.com/chapter/10.1007/11908739_9 นี่ไม่ถูกต้องนักจากความเข้าใจของฉัน และความเข้าใจของฉันก็คงจะเปลี่ยนตาม ฉันเจาะลึกโครงการนี้มากขึ้น แต่จากความเข้าใจของฉัน ลำดับชั้นมีลักษณะเช่นนี้ ลายเซ็นกลุ่ม: ผู้จัดการกลุ่มควบคุมการตรวจสอบย้อนกลับและความสามารถในการเพิ่มหรือลบสมาชิก จากการเป็นผู้ลงนาม Ring sigs: การสร้างกลุ่มตามอำเภอใจโดยไม่มีผู้จัดการกลุ่ม ไม่มีการเพิกถอนการไม่เปิดเผยตัวตน ไม่มีทางที่จะปฏิเสธตนเองจากลายเซ็นเฉพาะ ด้วยวงแหวนที่ตรวจสอบย้อนกลับและเชื่อมโยงได้ ลายเซ็น การไม่เปิดเผยตัวตนสามารถปรับขนาดได้เล็กน้อย ลายเซ็นกลุ่มเฉพาะกิจ: เช่นเดียวกับลายเซ็นวงแหวน แต่สมาชิกสามารถพิสูจน์ได้ว่าพวกเขาไม่ได้สร้างขึ้น ลายเซ็นเฉพาะ นี่เป็นสิ่งสำคัญเมื่อใครก็ตามในกลุ่มสามารถสร้างลายเซ็นได้ http://link.springer.com/chapter/10.1007/978-3-540-71677-8_13 อัลกอริธึมของฟูจิซากิและซูซูกิได้รับการปรับแต่งในภายหลังโดยผู้เขียนเพื่อให้เกิดเพียงครั้งเดียว ดังนั้น เราจะวิเคราะห์อัลกอริทึมของ Fujisaki และ Suzuki ไปพร้อมกับอัลกอริทึมใหม่แทน กว่าการไปที่นี่
คีย์ แต่เป็นคีย์ของผู้ใช้ทั้งหมดในกลุ่มของเขา ผู้ตรวจสอบจะเชื่อมั่นว่าผู้ลงนามที่แท้จริงคือ a เป็นสมาชิกของกลุ่ม แต่ไม่สามารถระบุเฉพาะผู้ลงนามได้ โปรโตคอลดั้งเดิมจำเป็นต้องมีบุคคลที่สามที่เชื่อถือได้ (เรียกว่าผู้จัดการกลุ่ม) และเขาก็เป็นเช่นนั้น คนเดียวที่สามารถติดตามผู้ลงนามได้ รุ่นถัดไปเรียกว่าลายเซ็นแหวนแนะนำ โดย Rivest และคณะ ใน [34] เป็นโครงการอิสระที่ไม่มีผู้จัดการกลุ่มและไม่เปิดเผยตัวตน การเพิกถอน การปรับเปลี่ยนต่างๆ ของโครงร่างนี้ปรากฏในภายหลัง: ลายเซ็นวงแหวนที่เชื่อมโยงได้ [26, 27, 17] อนุญาตให้ตรวจสอบว่ามีการสร้างลายเซ็นสองรายการโดยสมาชิกกลุ่มคนเดียวกันหรือไม่ ซึ่งสามารถตรวจสอบย้อนกลับได้ ลายเซ็นต์แหวน [24, 23] จำกัด การไม่เปิดเผยตัวตนมากเกินไปโดยให้ความเป็นไปได้ในการติดตามผู้ลงนาม สองข้อความที่เกี่ยวข้องกับข้อมูลเมตาเดียวกัน (หรือ "แท็ก" ในแง่ของ [24]) โครงสร้างการเข้ารหัสที่คล้ายกันเรียกอีกอย่างว่าลายเซ็นกลุ่มเฉพาะกิจ [16, 38] มัน เน้นการสร้างกลุ่มตามอำเภอใจ ในขณะที่แผนลายเซ็นกลุ่ม/วงแหวนค่อนข้างจะสื่อถึง a ชุดสมาชิกคงที่ โดยส่วนใหญ่ โซลูชันของเราอิงจากงาน “Traceable ring Signature” โดย E. Fujisaki และเค. ซูซูกิ [24]. เพื่อที่จะแยกแยะความแตกต่างระหว่างอัลกอริธึมดั้งเดิมและการปรับเปลี่ยนของเรา เรียกแบบหลังว่าเป็นลายเซ็นกริ่งแบบครั้งเดียว โดยเน้นย้ำถึงความสามารถของผู้ใช้ในการสร้างลายเซ็นที่ถูกต้องเพียงอันเดียว ลายเซ็นใต้คีย์ส่วนตัวของเขา เราลดคุณสมบัติการตรวจสอบย้อนกลับลงและรักษาความสามารถในการเชื่อมโยงไว้ เพื่อให้เกิดเพียงครั้งเดียวเท่านั้น: กุญแจสาธารณะอาจปรากฏในชุดการตรวจสอบต่างประเทศจำนวนมากและ รหัสส่วนตัวสามารถใช้ในการสร้างลายเซ็นที่ไม่ระบุชื่อที่ไม่ซ้ำใครได้ ในกรณีที่ใช้จ่ายซ้ำซ้อน การพยายามลงนามทั้งสองลายเซ็นจะเชื่อมโยงเข้าด้วยกัน แต่ไม่จำเป็นต้องเปิดเผยผู้ลงนาม เพื่อวัตถุประสงค์ของเรา 4.2 คำจำกัดความ 4.2.1 พารามิเตอร์เส้นโค้งวงรี เนื่องจากอัลกอริธึมลายเซ็นพื้นฐานของเรา เราเลือกใช้รูปแบบที่รวดเร็ว EdDSA ซึ่งได้รับการพัฒนาและ ดำเนินการโดยดีเจ เบิร์นสไตน์ และคณะ [18]. เช่นเดียวกับ ECDSA ของ Bitcoin มันขึ้นอยู่กับเส้นโค้งรูปวงรี ปัญหาลอการิทึมแบบไม่ต่อเนื่อง ดังนั้นโครงร่างของเราจึงสามารถนำไปใช้กับ Bitcoin ได้ในอนาคต พารามิเตอร์ทั่วไปคือ: q: จำนวนเฉพาะ; q = 2255 −19; d: องค์ประกอบของ Fq; ง = −121665/121666; E: สมการเส้นโค้งวงรี −x2 + y2 = 1 + dx2y2; G: จุดฐาน; G = (x, −4/5); l: ลำดับเฉพาะของจุดฐาน ล. = 2252 + 27742317777372353535851937790883648493; \(H_s\): ฟังก์ชันการเข้ารหัส hash \(\{0, 1\}^* \to \mathbb{F}_q\); \(H_p\): ฟังก์ชัน hash ที่กำหนดขึ้น \(E(\mathbb{F}_q) \to E(\mathbb{F}_q)\) 4.2.2 คำศัพท์เฉพาะทาง ความเป็นส่วนตัวที่ได้รับการปรับปรุงต้องใช้คำศัพท์ใหม่ซึ่งไม่ควรสับสนกับเอนทิตี Bitcoin ec-key ส่วนตัวเป็นคีย์ส่วนตัวโค้งวงรีมาตรฐาน: ตัวเลข \(a \in [1, l - 1]\); ec-key สาธารณะเป็นคีย์สาธารณะโค้งรูปไข่มาตรฐาน: จุด A = aG; keypair แบบครั้งเดียวคือคู่ของ ec-key ส่วนตัวและสาธารณะ 5 คีย์ แต่เป็นคีย์ของผู้ใช้ทั้งหมดในกลุ่มของเขา ผู้ตรวจสอบจะเชื่อมั่นว่าผู้ลงนามที่แท้จริงคือ a เป็นสมาชิกของกลุ่ม แต่ไม่สามารถระบุเฉพาะผู้ลงนามได้ โปรโตคอลดั้งเดิมจำเป็นต้องมีบุคคลที่สามที่เชื่อถือได้ (เรียกว่าผู้จัดการกลุ่ม) และเขาก็เป็นเช่นนั้น คนเดียวที่สามารถติดตามผู้ลงนามได้ รุ่นถัดไปเรียกว่าลายเซ็นแหวนแนะนำ โดย Rivest และคณะ ใน [34] เป็นโครงการอิสระที่ไม่มีผู้จัดการกลุ่มและไม่เปิดเผยตัวตน การเพิกถอน การปรับเปลี่ยนต่างๆ ของโครงร่างนี้ปรากฏในภายหลัง: ลายเซ็นวงแหวนที่เชื่อมโยงได้ [26, 27, 17] อนุญาตให้ตรวจสอบว่ามีการสร้างลายเซ็นสองรายการโดยสมาชิกกลุ่มคนเดียวกันหรือไม่ ซึ่งสามารถตรวจสอบย้อนกลับได้ ลายเซ็นต์แหวน [24, 23] จำกัด การไม่เปิดเผยตัวตนมากเกินไปโดยให้ความเป็นไปได้ในการติดตามผู้ลงนาม สองข้อความที่เกี่ยวข้องกับข้อมูลเมตาเดียวกัน (หรือ "แท็ก" ในแง่ของ [24]) โครงสร้างการเข้ารหัสที่คล้ายกันเรียกอีกอย่างว่าลายเซ็นกลุ่มเฉพาะกิจ [16, 38] มัน เน้นการสร้างกลุ่มตามอำเภอใจ ในขณะที่แผนลายเซ็นกลุ่ม/วงแหวนค่อนข้างจะสื่อถึง a ชุดสมาชิกคงที่ โดยส่วนใหญ่ โซลูชันของเราอิงจากงาน “Traceable ring Signature” โดย E. Fujisaki และเค. ซูซูกิ [24]. เพื่อที่จะแยกแยะความแตกต่างระหว่างอัลกอริธึมดั้งเดิมและการปรับเปลี่ยนของเรา เรียกแบบหลังว่าเป็นลายเซ็นกริ่งแบบครั้งเดียว โดยเน้นย้ำถึงความสามารถของผู้ใช้ในการสร้างลายเซ็นที่ถูกต้องเพียงอันเดียว ลายเซ็นใต้คีย์ส่วนตัวของเขา เราลดคุณสมบัติการตรวจสอบย้อนกลับลงและรักษาความสามารถในการเชื่อมโยงไว้ เพื่อให้เกิดเพียงครั้งเดียวเท่านั้น: กุญแจสาธารณะอาจปรากฏในชุดการตรวจสอบต่างประเทศจำนวนมากและ รหัสส่วนตัวสามารถใช้ในการสร้างลายเซ็นที่ไม่ระบุชื่อที่ไม่ซ้ำใครได้ ในกรณีที่ใช้จ่ายซ้ำซ้อน การพยายามลงนามทั้งสองลายเซ็นจะเชื่อมโยงเข้าด้วยกัน แต่ไม่จำเป็นต้องเปิดเผยผู้ลงนาม เพื่อวัตถุประสงค์ของเรา 4.2 คำจำกัดความ 4.2.1 พารามิเตอร์เส้นโค้งวงรี เนื่องจากเราเลือกอัลกอริธึมลายเซ็นพื้นฐานของเราe เพื่อใช้รูปแบบที่รวดเร็ว EdDSA ซึ่งได้รับการพัฒนาและ ดำเนินการโดยดีเจ เบิร์นสไตน์ และคณะ [18]. เช่นเดียวกับ ECDSA ของ Bitcoin มันขึ้นอยู่กับเส้นโค้งรูปวงรี ปัญหาลอการิทึมแบบไม่ต่อเนื่อง ดังนั้นโครงร่างของเราจึงสามารถนำไปใช้กับ Bitcoin ได้ในอนาคต พารามิเตอร์ทั่วไปคือ: q: จำนวนเฉพาะ; q = 2255 −19; d: องค์ประกอบของ Fq; ง = −121665/121666; E: สมการเส้นโค้งวงรี −x2 + y2 = 1 + dx2y2; G: จุดฐาน; G = (x, −4/5); l: ลำดับเฉพาะของจุดฐาน ล. = 2252 + 27742317777372353535851937790883648493; \(H_s\): ฟังก์ชันการเข้ารหัส hash \(\{0, 1\}^* \to \mathbb{F}_q\); \(H_p\): ฟังก์ชัน hash ที่กำหนดขึ้น \(E(\mathbb{F}_q) \to E(\mathbb{F}_q)\) 4.2.2 คำศัพท์เฉพาะทาง ความเป็นส่วนตัวที่ได้รับการปรับปรุงต้องใช้คำศัพท์ใหม่ซึ่งไม่ควรสับสนกับเอนทิตี Bitcoin ec-key ส่วนตัวเป็นคีย์ส่วนตัวโค้งวงรีมาตรฐาน: ตัวเลข \(a \in [1, l - 1]\); ec-key สาธารณะเป็นคีย์สาธารณะโค้งรูปไข่มาตรฐาน: จุด A = aG; keypair แบบครั้งเดียวคือคู่ของ ec-key ส่วนตัวและสาธารณะ 5 10 ความสามารถในการเชื่อมโยงในแง่ของ "ลายเซ็นวงแหวนที่เชื่อมโยงได้" หมายความว่าเราสามารถบอกได้ว่าธุรกรรมขาออกสองรายการมาจากแหล่งเดียวกันโดยไม่เปิดเผยว่าใครคือแหล่งที่มา ผู้เขียนอ่อนแอลง ความสามารถในการเชื่อมโยงเพื่อ (ก) รักษาความเป็นส่วนตัว แต่ยังคง (ข) มองเห็นธุรกรรมใด ๆ โดยใช้รหัสส่วนตัว ครั้งที่สองว่าไม่ถูกต้อง โอเค นี่คือคำถามลำดับเหตุการณ์ พิจารณาสถานการณ์ต่อไปนี้ การขุดของฉัน คอมพิวเตอร์จะมี blockchain ปัจจุบัน โดยจะมีบล็อกธุรกรรมที่เรียกใช้เอง ถูกต้องตามกฎหมาย มันจะทำงานกับบล็อกนั้นในปริศนา proof-of-work และจะมี รายการธุรกรรมที่รอดำเนินการที่จะเพิ่มในบล็อกถัดไป มันยังจะส่งใหม่อีกด้วย ธุรกรรมในกลุ่มธุรกรรมที่รอดำเนินการนั้น ถ้าผมแก้บล็อกต่อไปไม่ได้แต่ มีคนอื่นทำ ฉันได้รับสำเนาที่อัปเดตของ blockchain บล็อกที่ฉันกำลังทำงานอยู่และ รายการธุรกรรมที่รอดำเนินการของฉันทั้งสองอาจมีธุรกรรมบางรายการที่รวมเข้าด้วยกันแล้ว ลงใน blockchain คลี่คลายบล็อกที่รอดำเนินการของฉัน รวมเข้ากับรายการธุรกรรมที่รอดำเนินการของฉัน แล้วเรียกสิ่งนั้น กลุ่มธุรกรรมที่รอดำเนินการของฉัน ลบสิ่งที่อยู่ใน blockchain อย่างเป็นทางการออก ตอนนี้ฉันจะทำอย่างไร? ฉันควรดำเนินการก่อนและ "ลบการใช้จ่ายซ้ำซ้อนทั้งหมด" หรือไม่ ในอีกทางหนึ่ง ฉันควรค้นหาผ่านรายการและตรวจสอบให้แน่ใจว่ายังไม่มีคีย์ส่วนตัวแต่ละรายการ ใช้แล้ว และถ้าได้ใช้อยู่ในรายการข้าพเจ้าแล้ว ข้าพเจ้าก็ได้รับสำเนาฉบับแรกก่อน และด้วยเหตุนี้ สำเนาเพิ่มเติมใด ๆ ถือเป็นสิ่งผิดกฎหมาย ดังนั้นฉันจึงดำเนินการลบอินสแตนซ์ทั้งหมดหลังจากครั้งแรก ของคีย์ส่วนตัวอันเดียวกัน เรขาคณิตพีชคณิตไม่เคยเหมาะกับฉันเลย http://en.wikipedia.org/wiki/EdDSA ความเร็วขนาดนี้ว้าวมาก นี่คือเรขาคณิตเชิงพีชคณิตสำหรับการชนะ ไม่ใช่ว่าฉันไม่รู้อะไรเลย เกี่ยวกับเรื่องนั้น บันทึกแบบแยกจะมีปัญหาหรือไม่ก็ตามกำลังดำเนินไปอย่างรวดเร็ว และคอมพิวเตอร์ควอนตัมก็กินพวกมัน สำหรับอาหารเช้า http://link.springer.com/article/10.1007/s13389-012-0027-1 นี่กลายเป็นตัวเลขที่สำคัญมาก แต่ไม่มีคำอธิบายหรือการอ้างอิงว่าตัวเลขดังกล่าวเป็นอย่างไร ได้รับเลือก เพียงแค่เลือกจำนวนเฉพาะขนาดใหญ่ที่ทราบเพียงตัวเดียวก็ไม่เป็นไร แต่ถ้าทราบจำนวนเฉพาะนั้น ข้อเท็จจริงเกี่ยวกับไพรม์ขนาดใหญ่นี้ ที่อาจมีอิทธิพลต่อการเลือกของเรา Cryptonote หลากหลายรูปแบบ สามารถเลือกค่าที่แตกต่างกันของ ใช่ แต่ไม่มีการสนทนาในบทความนี้เกี่ยวกับวิธีการนั้น ตัวเลือกจะส่งผลต่อการเลือกพารามิเตอร์ส่วนกลางอื่น ๆ ของเราที่แสดงอยู่ในหน้า 5 บทความนี้ต้องการหัวข้อเกี่ยวกับการเลือกค่าพารามิเตอร์
คีย์ผู้ใช้ส่วนตัวคือคู่ (a, b) ของคีย์ ec ส่วนตัวสองตัวที่แตกต่างกัน รหัสติดตามคือคู่ (a, B) ของ ec-key ส่วนตัวและสาธารณะ (โดยที่ B = bG และ a ̸= b) รหัสผู้ใช้สาธารณะคือคู่ (A, B) ของสองคีย์ ec สาธารณะที่ได้มาจาก (a, b); ที่อยู่มาตรฐานคือการแสดงรหัสผู้ใช้สาธารณะที่กำหนดให้กับสตริงที่เป็นมิตรกับมนุษย์ มีการแก้ไขข้อผิดพลาด ที่อยู่ที่ถูกตัดทอนเป็นตัวแทนของครึ่งหลัง (จุด B) ของรหัสผู้ใช้สาธารณะที่กำหนด เป็นสตริงที่เป็นมิตรต่อมนุษย์พร้อมการแก้ไขข้อผิดพลาด โครงสร้างธุรกรรมยังคงคล้ายกับโครงสร้างใน Bitcoin: ผู้ใช้ทุกคนสามารถเลือกได้ การชำระเงินขาเข้าที่เป็นอิสระหลายรายการ (ผลลัพธ์ของธุรกรรม) ลงนามด้วยสิ่งที่เกี่ยวข้อง กุญแจส่วนตัวและส่งไปยังปลายทางที่แตกต่างกัน ตรงกันข้ามกับโมเดลของ Bitcoin ซึ่งผู้ใช้มีคีย์ส่วนตัวและคีย์สาธารณะที่ไม่ซ้ำกันใน โมเดลที่นำเสนอ ผู้ส่งจะสร้างคีย์สาธารณะแบบครั้งเดียวตามที่อยู่ของผู้รับและ ข้อมูลสุ่มบางอย่าง ในแง่นี้ ธุรกรรมขาเข้าสำหรับผู้รับคนเดียวกันจะถูกส่งไปยัง กุญแจสาธารณะแบบครั้งเดียว (ไม่ใช่โดยตรงไปยังที่อยู่ที่ไม่ซ้ำกัน) และมีเพียงผู้รับเท่านั้นที่สามารถกู้คืนได้ ส่วนตัวที่เกี่ยวข้องเพื่อแลกเงินของเขา (โดยใช้รหัสส่วนตัวเฉพาะของเขา) ผู้รับก็ได้ ใช้จ่ายเงินโดยใช้ลายเซ็นต์แหวน โดยรักษาความเป็นเจ้าของและการใช้จ่ายจริงโดยไม่เปิดเผยชื่อ รายละเอียดของระเบียบการจะอธิบายไว้ในส่วนย่อยถัดไป 4.3 การชำระเงินที่ไม่สามารถเชื่อมโยงได้ ที่อยู่ Bitcoin แบบคลาสสิก เมื่อเผยแพร่แล้ว จะกลายเป็นตัวระบุที่ชัดเจนสำหรับขาเข้า การชำระเงิน เชื่อมโยงเข้าด้วยกันและผูกเข้ากับนามแฝงของผู้รับ หากใครต้องการ รับธุรกรรม "ผูกมัด" เขาควรแจ้งที่อยู่ของเขาไปยังผู้ส่งโดยช่องทางส่วนตัว หากเขาต้องการรับธุรกรรมที่แตกต่างซึ่งไม่สามารถพิสูจน์ได้ว่าเป็นของเจ้าของคนเดียวกัน เขาควรสร้างที่อยู่ที่แตกต่างกันทั้งหมดและไม่เคยเผยแพร่โดยใช้นามแฝงของเขาเอง สาธารณะ ส่วนตัว อลิซ แครอล Addr ของ Bob 1 Addr ของ Bob 2 กุญแจของบ๊อบ 1 กุญแจของบ๊อบ 2 บ๊อบ รูปที่ 2 โมเดล Bitcoin คีย์/ธุรกรรมแบบดั้งเดิม เราเสนอวิธีแก้ปัญหาเพื่อให้ผู้ใช้สามารถเผยแพร่ที่อยู่เดียวและรับโดยไม่มีเงื่อนไข การชำระเงินที่ไม่สามารถเชื่อมโยงได้ ปลายทางของเอาต์พุต CryptoNote แต่ละรายการ (โดยค่าเริ่มต้น) คือคีย์สาธารณะ มาจากที่อยู่ของผู้รับและข้อมูลสุ่มของผู้ส่ง ข้อได้เปรียบหลักเทียบกับ Bitcoin คือคีย์ปลายทางทุกอันจะไม่ซ้ำกันตามค่าเริ่มต้น (เว้นแต่ผู้ส่งจะใช้ข้อมูลเดียวกันสำหรับแต่ละรายการ ของการทำธุรกรรมของเขาไปยังผู้รับคนเดียวกัน) ดังนั้นจึงไม่มีปัญหาเช่น “การใช้ที่อยู่ซ้ำ” โดย การออกแบบและผู้สังเกตการณ์ไม่สามารถระบุได้ว่าธุรกรรมใดๆ ถูกส่งไปยังที่อยู่หรือลิงก์เฉพาะหรือไม่ ที่อยู่สองแห่งพร้อมกัน 6 คีย์ผู้ใช้ส่วนตัวคือคู่ (a, b) ของคีย์ ec ส่วนตัวสองตัวที่แตกต่างกัน รหัสติดตามคือคู่ (a, B) ของ ec-key ส่วนตัวและสาธารณะ (โดยที่ B = bG และ a ̸= b) รหัสผู้ใช้สาธารณะคือคู่ (A, B) ของสองคีย์ ec สาธารณะที่ได้มาจาก (a, b); ที่อยู่มาตรฐานคือการแสดงรหัสผู้ใช้สาธารณะที่กำหนดให้กับสตริงที่เป็นมิตรกับมนุษย์ มีการแก้ไขข้อผิดพลาด ที่อยู่ที่ถูกตัดทอนเป็นตัวแทนของครึ่งหลัง (จุด B) ของรหัสผู้ใช้สาธารณะที่กำหนด เป็นสตริงที่เป็นมิตรต่อมนุษย์พร้อมการแก้ไขข้อผิดพลาด โครงสร้างธุรกรรมยังคงคล้ายกับโครงสร้างใน Bitcoin: ผู้ใช้ทุกคนสามารถเลือกได้ การชำระเงินขาเข้าที่เป็นอิสระหลายรายการ (ผลลัพธ์ของธุรกรรม) ลงนามด้วยสิ่งที่เกี่ยวข้อง กุญแจส่วนตัวและส่งไปยังปลายทางที่แตกต่างกัน ตรงกันข้ามกับโมเดลของ Bitcoin ซึ่งผู้ใช้มีคีย์ส่วนตัวและคีย์สาธารณะที่ไม่ซ้ำกันใน โมเดลที่นำเสนอ ผู้ส่งจะสร้างคีย์สาธารณะแบบครั้งเดียวตามที่อยู่ของผู้รับและ ข้อมูลสุ่มบางอย่าง ในแง่นี้ ธุรกรรมขาเข้าสำหรับผู้รับคนเดียวกันจะถูกส่งไปยัง กุญแจสาธารณะแบบครั้งเดียว (ไม่ใช่โดยตรงไปยังที่อยู่ที่ไม่ซ้ำกัน) และมีเพียงผู้รับเท่านั้นที่สามารถกู้คืนได้ ส่วนตัวที่เกี่ยวข้องเพื่อแลกเงินของเขา (โดยใช้รหัสส่วนตัวเฉพาะของเขา) ผู้รับก็ได้ ใช้จ่ายเงินโดยใช้ลายเซ็นต์แหวน โดยรักษาความเป็นเจ้าของและการใช้จ่ายจริงโดยไม่เปิดเผยชื่อ รายละเอียดของระเบียบการจะอธิบายไว้ในส่วนย่อยถัดไป 4.3 การชำระเงินที่ไม่สามารถเชื่อมโยงได้ ที่อยู่ Bitcoin แบบคลาสสิก เมื่อเผยแพร่แล้ว จะกลายเป็นตัวระบุที่ชัดเจนสำหรับขาเข้า การชำระเงิน เชื่อมโยงเข้าด้วยกันและผูกเข้ากับนามแฝงของผู้รับ หากใครต้องการ รับธุรกรรม "ผูกมัด" เขาควรแจ้งที่อยู่ของเขาไปยังผู้ส่งโดยช่องทางส่วนตัว หากเขาต้องการรับธุรกรรมที่แตกต่างซึ่งไม่สามารถพิสูจน์ได้ว่าเป็นของเจ้าของคนเดียวกัน เขาควรสร้างที่อยู่ที่แตกต่างกันทั้งหมดและไม่เคยเผยแพร่โดยใช้นามแฝงของเขาเอง สาธารณะ ส่วนตัว อลิซ แครอล Addr ของ Bob 1 Addr ของ Bob 2 กุญแจของบ๊อบ 1 กุญแจของบ๊อบ 2 บ๊อบ รูปที่ 2. ตัวดัดแปลง Bitcoin คีย์/ธุรกรรมแบบดั้งเดิมเอล เราเสนอวิธีแก้ปัญหาเพื่อให้ผู้ใช้สามารถเผยแพร่ที่อยู่เดียวและรับโดยไม่มีเงื่อนไข การชำระเงินที่ไม่สามารถเชื่อมโยงได้ ปลายทางของเอาต์พุต CryptoNote แต่ละรายการ (โดยค่าเริ่มต้น) คือคีย์สาธารณะ มาจากที่อยู่ของผู้รับและข้อมูลสุ่มของผู้ส่ง ข้อได้เปรียบหลักเทียบกับ Bitcoin คือคีย์ปลายทางทุกอันจะไม่ซ้ำกันตามค่าเริ่มต้น (เว้นแต่ผู้ส่งจะใช้ข้อมูลเดียวกันสำหรับแต่ละรายการ ของการทำธุรกรรมของเขาไปยังผู้รับคนเดียวกัน) ดังนั้นจึงไม่มีปัญหาเช่น “การใช้ที่อยู่ซ้ำ” โดย การออกแบบและผู้สังเกตการณ์ไม่สามารถระบุได้ว่าธุรกรรมใดๆ ถูกส่งไปยังที่อยู่หรือลิงก์เฉพาะหรือไม่ ที่อยู่สองแห่งพร้อมกัน 6 11 นี่ก็เหมือนกับ Bitcoin แต่ด้วยตู้ไปรษณีย์ที่ไม่ระบุตัวตนที่ไม่มีที่สิ้นสุด ผู้รับเท่านั้นที่แลกได้ การสร้างคีย์ส่วนตัวที่ไม่เปิดเผยตัวตนเหมือนกับลายเซ็นวงแหวน Bitcoin ทำงานในลักษณะนี้ ถ้าอเล็กซ์มี 0.112 Bitcoin ในกระเป๋าสตางค์ของเธอที่เธอเพิ่งได้รับจากแฟรงก์ เธอมีลายเซ็นจริงๆ ข้อความ "ฉัน [FRANK] ส่ง 0.112 Bitcoin ไปที่ [alex] + H0 + N0" โดยที่ 1) Frank ได้ลงนามใน ข้อความด้วยคีย์ส่วนตัวของเขา [FRANK] 2) Frank ได้ลงนามข้อความกับสาธารณะของ Alex คีย์ [alex] 3) Frank ได้รวมประวัติของ bitcoin, H0 และ 4) Frank ไว้ด้วย รวมบิตข้อมูลสุ่มที่เรียกว่า nonce, N0 ถ้าอเล็กซ์ต้องการส่ง 0.011 Bitcoin ถึงชาร์ลีน เธอจะรับข้อความของแฟรงค์ และเธอ จะตั้งค่านั้นเป็น H1 และลงนามสองข้อความ: ข้อความหนึ่งสำหรับธุรกรรมของเธอ และอีกข้อความหนึ่งสำหรับการเปลี่ยนแปลง H1= "ฉัน [FRANK] ส่ง 0.112 Bitcoin ถึง [alex] + H0 + N" "ฉัน [ALEX] ส่ง 0.011 Bitcoin ถึง [charlene] + H1 + N1" "ฉัน [ALEX] ส่ง 0.101 Bitcoin เปลี่ยนเป็น [alex] + H1 + N2" โดยที่อเล็กซ์ลงนามทั้งสองข้อความด้วยคีย์ส่วนตัวของเธอ [ALEX] ซึ่งเป็นข้อความแรกกับชาร์ลีน รหัสสาธารณะ [charlene] ข้อความที่สองพร้อมรหัสสาธารณะของ Alex [alex] และรวมถึง ประวัติและ nonces N1 และ N2 ที่สร้างขึ้นแบบสุ่มบางส่วนอย่างเหมาะสม Cryptonote ทำงานในลักษณะนี้: หาก Alex มี Cryptonote 0.112 ในกระเป๋าเงินของเธอที่เธอเพิ่งได้รับจาก Frank เธอก็จะมีลายเซ็นจริงๆ ข้อความ "ฉัน [ใครบางคนในกลุ่มเฉพาะกิจ] ส่ง 0.112 Cryptonote ไปยัง [ที่อยู่แบบครั้งเดียว] + H0 + N0" อเล็กซ์ค้นพบว่านี่คือเงินของเธอโดยการตรวจสอบคีย์ส่วนตัวของเธอ [ALEX] [ที่อยู่แบบครั้งเดียว] สำหรับทุกข้อความที่ส่ง และหากเธอต้องการใช้จ่าย เธอก็ทำเช่นนั้น ตามวิธีต่อไปนี้ เธอเลือกผู้รับเงิน บางทีชาร์ลีนอาจเริ่มโหวตให้โดรนโจมตีแล้วก็ได้ อเล็กซ์ต้องการส่งเงินให้เบรนดาแทน อเล็กซ์จึงค้นหากุญแจสาธารณะของเบรนดา [เบรนดา] และใช้คีย์ส่วนตัวของเธอเอง [ALEX] เพื่อสร้างที่อยู่แบบครั้งเดียว [ALEX+brenda] เธอ จากนั้นเลือกคอลเลกชัน C โดยพลการจากเครือข่ายของผู้ใช้ cryptonote และเธอก็สร้าง ลายเซ็นต์จากกลุ่มเฉพาะกิจนี้ เรากำหนดประวัติของเราเป็นข้อความก่อนหน้าเพิ่ม nonces และดำเนินการตามปกติหรือไม่ H1 = "ฉัน [ใครบางคนในกลุ่มเฉพาะกิจ] ส่ง 0.112 Cryptonote ไปที่ [ที่อยู่แบบครั้งเดียว] + H0 + N0" "ฉัน [คนในคอลเลกชั่น C] ส่ง Cryptonote 0.011 ไปที่ [ที่อยู่ครั้งเดียวทำจากALEX+brenda] + H1 + N1" "ฉัน [คนในคอลเลกชัน C] ส่ง 0.101 Cryptonote เป็นการเปลี่ยนเป็น [one-time-address-madefrom-ALEX+alex] + H1 + N2" ตอนนี้ Alex และ Brenda ต่างสแกนข้อความขาเข้าทั้งหมดเพื่อหาที่อยู่แบบครั้งเดียว สร้างขึ้นโดยใช้กุญแจของพวกเขา หากพวกเขาพบข้อความนั้นก็ถือเป็นข้อความใหม่ของพวกเขาเอง คริปโตโน๊ต! และถึงอย่างนั้น ธุรกรรมก็ยังคงไปถึง blockchain หากเหรียญเข้าที่อยู่นั้น เป็นที่รู้กันว่าส่งมาจากอาชญากร ผู้มีส่วนร่วมทางการเมือง หรือจากคณะกรรมการและบัญชี ด้วยงบประมาณที่เข้มงวด (เช่น การยักยอก) หรือหากเจ้าของเหรียญเหล่านี้คนใหม่เคยทำผิดพลาด และส่งเหรียญเหล่านี้ไปยังที่อยู่ทั่วไปซึ่งมีเหรียญที่เขารู้จักเป็นเจ้าของ นั่นก็คือจิ๊กไม่เปิดเผยตัวตน เพิ่มขึ้นเป็น bitcoin
คีย์ผู้ใช้ส่วนตัวคือคู่ (a, b) ของคีย์ ec ส่วนตัวสองตัวที่แตกต่างกัน รหัสติดตามคือคู่ (a, B) ของ ec-key ส่วนตัวและสาธารณะ (โดยที่ B = bG และ a ̸= b) รหัสผู้ใช้สาธารณะคือคู่ (A, B) ของสองคีย์ ec สาธารณะที่ได้มาจาก (a, b); ที่อยู่มาตรฐานคือการแสดงรหัสผู้ใช้สาธารณะที่กำหนดให้กับสตริงที่เป็นมิตรกับมนุษย์ มีการแก้ไขข้อผิดพลาด ที่อยู่ที่ถูกตัดทอนเป็นตัวแทนของครึ่งหลัง (จุด B) ของรหัสผู้ใช้สาธารณะที่กำหนด เป็นสตริงที่เป็นมิตรต่อมนุษย์พร้อมการแก้ไขข้อผิดพลาด โครงสร้างธุรกรรมยังคงคล้ายกับโครงสร้างใน Bitcoin: ผู้ใช้ทุกคนสามารถเลือกได้ การชำระเงินขาเข้าที่เป็นอิสระหลายรายการ (ผลลัพธ์ของธุรกรรม) ลงนามด้วยสิ่งที่เกี่ยวข้อง กุญแจส่วนตัวและส่งไปยังปลายทางที่แตกต่างกัน ตรงกันข้ามกับโมเดลของ Bitcoin ซึ่งผู้ใช้มีคีย์ส่วนตัวและสาธารณะที่ไม่ซ้ำกันใน โมเดลที่นำเสนอ ผู้ส่งจะสร้างคีย์สาธารณะแบบครั้งเดียวตามที่อยู่ของผู้รับและ ข้อมูลสุ่มบางอย่าง ในแง่นี้ ธุรกรรมขาเข้าสำหรับผู้รับคนเดียวกันจะถูกส่งไปยัง กุญแจสาธารณะแบบครั้งเดียว (ไม่ใช่โดยตรงไปยังที่อยู่ที่ไม่ซ้ำกัน) และมีเพียงผู้รับเท่านั้นที่สามารถกู้คืนได้ ส่วนตัวที่เกี่ยวข้องเพื่อแลกเงินของเขา (โดยใช้รหัสส่วนตัวเฉพาะของเขา) ผู้รับก็ได้ ใช้จ่ายเงินโดยใช้ลายเซ็นต์แหวน โดยรักษาความเป็นเจ้าของและการใช้จ่ายจริงโดยไม่เปิดเผยชื่อ รายละเอียดของระเบียบการจะอธิบายไว้ในส่วนย่อยถัดไป 4.3 การชำระเงินที่ไม่สามารถเชื่อมโยงได้ ที่อยู่ Bitcoin แบบคลาสสิก เมื่อเผยแพร่แล้ว จะกลายเป็นตัวระบุที่ชัดเจนสำหรับขาเข้า การชำระเงิน เชื่อมโยงเข้าด้วยกันและผูกเข้ากับนามแฝงของผู้รับ หากใครต้องการ รับธุรกรรม "ผูกมัด" เขาควรแจ้งที่อยู่ของเขาไปยังผู้ส่งโดยช่องทางส่วนตัว หากเขาต้องการรับธุรกรรมที่แตกต่างซึ่งไม่สามารถพิสูจน์ได้ว่าเป็นของเจ้าของคนเดียวกัน เขาควรสร้างที่อยู่ที่แตกต่างกันทั้งหมดและไม่เคยเผยแพร่โดยใช้นามแฝงของเขาเอง สาธารณะ ส่วนตัว อลิซ แครอล Addr ของ Bob 1 Addr ของ Bob 2 กุญแจของบ๊อบ 1 กุญแจของบ๊อบ 2 บ๊อบ รูปที่ 2 โมเดล Bitcoin คีย์/ธุรกรรมแบบดั้งเดิม เราเสนอวิธีแก้ปัญหาเพื่อให้ผู้ใช้สามารถเผยแพร่ที่อยู่เดียวและรับโดยไม่มีเงื่อนไข การชำระเงินที่ไม่สามารถเชื่อมโยงได้ ปลายทางของเอาต์พุต CryptoNote แต่ละรายการ (โดยค่าเริ่มต้น) คือคีย์สาธารณะ มาจากที่อยู่ของผู้รับและข้อมูลสุ่มของผู้ส่ง ข้อได้เปรียบหลักเทียบกับ Bitcoin คือคีย์ปลายทางทุกอันจะไม่ซ้ำกันตามค่าเริ่มต้น (เว้นแต่ผู้ส่งจะใช้ข้อมูลเดียวกันสำหรับแต่ละรายการ ของการทำธุรกรรมของเขาไปยังผู้รับคนเดียวกัน) ดังนั้นจึงไม่มีปัญหาเช่น “การใช้ที่อยู่ซ้ำ” โดย การออกแบบและผู้สังเกตการณ์ไม่สามารถระบุได้ว่าธุรกรรมใดๆ ถูกส่งไปยังที่อยู่หรือลิงก์เฉพาะหรือไม่ ที่อยู่สองแห่งพร้อมกัน 6 คีย์ผู้ใช้ส่วนตัวคือคู่ (a, b) ของคีย์ ec ส่วนตัวสองตัวที่แตกต่างกัน รหัสติดตามคือคู่ (a, B) ของ ec-key ส่วนตัวและสาธารณะ (โดยที่ B = bG และ a ̸= b) รหัสผู้ใช้สาธารณะคือคู่ (A, B) ของสองคีย์ ec สาธารณะที่ได้มาจาก (a, b); ที่อยู่มาตรฐานคือการแสดงรหัสผู้ใช้สาธารณะที่กำหนดให้กับสตริงที่เป็นมิตรกับมนุษย์ มีการแก้ไขข้อผิดพลาด ที่อยู่ที่ถูกตัดทอนเป็นตัวแทนของครึ่งหลัง (จุด B) ของรหัสผู้ใช้สาธารณะที่กำหนด เป็นสตริงที่เป็นมิตรต่อมนุษย์พร้อมการแก้ไขข้อผิดพลาด โครงสร้างธุรกรรมยังคงคล้ายกับโครงสร้างใน Bitcoin: ผู้ใช้ทุกคนสามารถเลือกได้ การชำระเงินขาเข้าที่เป็นอิสระหลายรายการ (ผลลัพธ์ของธุรกรรม) ลงนามด้วยสิ่งที่เกี่ยวข้อง กุญแจส่วนตัวและส่งไปยังปลายทางที่แตกต่างกัน ตรงกันข้ามกับโมเดลของ Bitcoin ซึ่งผู้ใช้มีคีย์ส่วนตัวและสาธารณะที่ไม่ซ้ำกันใน โมเดลที่นำเสนอ ผู้ส่งจะสร้างคีย์สาธารณะแบบครั้งเดียวตามที่อยู่ของผู้รับและ ข้อมูลสุ่มบางอย่าง ในแง่นี้ ธุรกรรมขาเข้าสำหรับผู้รับคนเดียวกันจะถูกส่งไปยัง กุญแจสาธารณะแบบครั้งเดียว (ไม่ใช่โดยตรงไปยังที่อยู่ที่ไม่ซ้ำกัน) และมีเพียงผู้รับเท่านั้นที่สามารถกู้คืนได้ ส่วนตัวที่เกี่ยวข้องเพื่อแลกเงินของเขา (โดยใช้รหัสส่วนตัวเฉพาะของเขา) ผู้รับก็ได้ ใช้จ่ายเงินโดยใช้ลายเซ็นต์แหวน โดยรักษาความเป็นเจ้าของและการใช้จ่ายจริงโดยไม่เปิดเผยชื่อ รายละเอียดของระเบียบการจะอธิบายไว้ในส่วนย่อยถัดไป 4.3 การชำระเงินที่ไม่สามารถเชื่อมโยงได้ ที่อยู่ Bitcoin แบบคลาสสิก เมื่อเผยแพร่แล้ว จะกลายเป็นตัวระบุที่ชัดเจนสำหรับขาเข้า การชำระเงิน เชื่อมโยงเข้าด้วยกันและผูกเข้ากับนามแฝงของผู้รับ หากใครต้องการ รับธุรกรรม "ผูกมัด" เขาควรแจ้งที่อยู่ของเขาไปยังผู้ส่งโดยช่องทางส่วนตัว หากเขาต้องการรับธุรกรรมที่แตกต่างซึ่งไม่สามารถพิสูจน์ได้ว่าเป็นของเจ้าของคนเดียวกัน เขาควรสร้างที่อยู่ที่แตกต่างกันทั้งหมดและไม่เคยเผยแพร่โดยใช้นามแฝงของเขาเอง สาธารณะ ส่วนตัว อลิซ แครอล Addr ของ Bob 1 Addr ของ Bob 2 กุญแจของบ๊อบ 1 กุญแจของบ๊อบ 2 บ๊อบ รูปที่ 2. mod Bitcoin คีย์/ธุรกรรมแบบดั้งเดิมเอล เราเสนอวิธีแก้ปัญหาเพื่อให้ผู้ใช้สามารถเผยแพร่ที่อยู่เดียวและรับโดยไม่มีเงื่อนไข การชำระเงินที่ไม่สามารถเชื่อมโยงได้ ปลายทางของเอาต์พุต CryptoNote แต่ละรายการ (โดยค่าเริ่มต้น) คือคีย์สาธารณะ มาจากที่อยู่ของผู้รับและข้อมูลสุ่มของผู้ส่ง ข้อได้เปรียบหลักเทียบกับ Bitcoin คือคีย์ปลายทางทุกอันจะไม่ซ้ำกันตามค่าเริ่มต้น (เว้นแต่ผู้ส่งจะใช้ข้อมูลเดียวกันสำหรับแต่ละรายการ ของการทำธุรกรรมของเขาไปยังผู้รับคนเดียวกัน) ดังนั้นจึงไม่มีปัญหาเช่น “การใช้ที่อยู่ซ้ำ” โดย การออกแบบและผู้สังเกตการณ์ไม่สามารถระบุได้ว่าธุรกรรมใดๆ ถูกส่งไปยังที่อยู่หรือลิงก์เฉพาะหรือไม่ ที่อยู่สองแห่งพร้อมกัน 6 12 ดังนั้น แทนที่จะให้ผู้ใช้ส่งเหรียญจากที่อยู่ (ซึ่งเป็นกุญแจสาธารณะจริงๆ) ไปยังที่อยู่ (กุญแจสาธารณะอื่น) โดยใช้กุญแจส่วนตัว ผู้ใช้จะส่งเหรียญจากตู้ไปรษณีย์แบบครั้งเดียว (ซึ่งสร้างโดยใช้รหัสสาธารณะของเพื่อนของคุณ) ไปยังตู้ไปรษณีย์แบบครั้งเดียว (ในทำนองเดียวกัน) โดยใช้ของคุณ คีย์ส่วนตัวของตัวเอง ในแง่หนึ่ง เรากำลังพูดว่า "เอาล่ะ ทุกคนเอาเงินของคุณไปในขณะที่เงินกำลังเป็นอยู่ โอนไปรอบ ๆ ! แค่รู้ว่ากุญแจของเรา สามารถ เปิดกล่องนั้นและกล่องนั้นได้ เรารู้ว่ามีเงินอยู่ในกล่องเท่าไหร่ อย่าวางลายนิ้วมือของคุณบนตู้ไปรษณีย์หรือ ใช้จริงแค่แลกกล่องที่เต็มไปด้วยเงินสดนั่นเอง โดยที่เราไม่รู้ว่าใครส่งมา อะไร แต่เนื้อหาของคำปราศรัยสาธารณะเหล่านี้ยังคงไม่มีความขัดแย้ง ทดแทนได้ แบ่งแยกได้ และ ยังคงมีคุณสมบัติที่ดีอื่น ๆ ของเงินที่เราต้องการเช่น Bitcoin" ชุดตู้ไปรษณีย์ที่ไม่มีที่สิ้นสุด คุณเผยแพร่ที่อยู่ฉันมีรหัสส่วนตัว ฉันใช้รหัสส่วนตัวและที่อยู่ของคุณและ ข้อมูลสุ่มบางส่วนเพื่อสร้างกุญแจสาธารณะ อัลกอริธึมได้รับการออกแบบเช่นนั้นเนื่องจากคุณ ที่อยู่ถูกใช้เพื่อสร้างกุญแจสาธารณะ มีเพียงกุญแจส่วนตัวของคุณเท่านั้นที่ใช้งานได้เพื่อปลดล็อค ข้อความ ผู้สังเกตการณ์ อีฟ เห็นคุณเผยแพร่ที่อยู่ของคุณ และเห็นกุญแจสาธารณะที่ฉันประกาศ อย่างไรก็ตาม เธอไม่รู้ว่าฉันประกาศกุญแจสาธารณะของฉันตามที่อยู่ของคุณหรือของเธอ หรือของเบรนดา หรือของชาร์ลีนหรือใครก็ตาม เธอตรวจสอบคีย์ส่วนตัวของเธอกับคีย์สาธารณะที่ฉันประกาศ และเห็นว่ามันไม่ได้ผล มันไม่ใช่เงินของเธอ เธอไม่รู้จักรหัสส่วนตัวของคนอื่นและ เฉพาะผู้รับข้อความเท่านั้นที่มีรหัสส่วนตัวที่สามารถปลดล็อคข้อความได้ เลยไม่มีใคร. การฟังสามารถระบุได้ว่าใครได้รับเงินน้อยกว่ามากจึงเอาเงินไป
สาธารณะ ส่วนตัว อลิซ แครอล คีย์ครั้งเดียว คีย์ครั้งเดียว คีย์ครั้งเดียว บ๊อบ กุญแจของบ๊อบ ที่อยู่ของบ๊อบ รูปที่ 3 คีย์ CryptoNote/โมเดลธุรกรรม ขั้นแรก ผู้ส่งทำการแลกเปลี่ยน Diffie-Hellman เพื่อรับความลับที่แบ่งปันจากข้อมูลของเขาและ ครึ่งหนึ่งของที่อยู่ผู้รับ จากนั้นเขาจะคำนวณคีย์ปลายทางแบบครั้งเดียวโดยใช้การแชร์ ความลับและที่อยู่ครึ่งหลัง ผู้รับต้องใช้คีย์ ec ที่แตกต่างกันสองชุด สำหรับสองขั้นตอนนี้ ดังนั้นที่อยู่ CryptoNote มาตรฐานจึงมีขนาดใหญ่เกือบสองเท่าของกระเป๋าเงิน Bitcoin ที่อยู่ ผู้รับยังทำการแลกเปลี่ยน Diffie-Hellman เพื่อกู้คืนสิ่งที่เกี่ยวข้องด้วย รหัสลับ ลำดับธุรกรรมมาตรฐานจะเป็นดังนี้: 1. อลิซต้องการส่งการชำระเงินให้กับ Bob ซึ่งได้เผยแพร่ที่อยู่มาตรฐานของเขาแล้ว เธอ แกะที่อยู่และรับกุญแจสาธารณะของ Bob (A, B) 2. อลิซสร้างสุ่ม \(r \in [1, l - 1]\) และคำนวณคีย์สาธารณะแบบครั้งเดียว \(P = H_s(rA)G +\) บี. 3. อลิซใช้ P เป็นคีย์ปลายทางสำหรับเอาต์พุตและยังแพ็คค่า R = rG (เป็นส่วนหนึ่ง ของการแลกเปลี่ยน Diffie-Hellman) ในการทำธุรกรรม โปรดทราบว่าเธอสามารถสร้างได้ เอาต์พุตอื่นๆ ที่มีคีย์สาธารณะเฉพาะ: คีย์ของผู้รับที่แตกต่างกัน (Ai, Bi) บ่งบอกถึง Pi ที่แตกต่างกัน แม้จะมี r เดียวกันก็ตาม การทำธุรกรรม รหัสสาธารณะ Tx เอาท์พุท TX จำนวน กุญแจปลายทาง อาร์ = อาร์จี P = Hs(rA)G + B ผู้รับ กุญแจสาธารณะ ข้อมูลสุ่มของผู้ส่ง ร (ก, ข) รูปที่ 4 โครงสร้างธุรกรรมมาตรฐาน 4. อลิซส่งธุรกรรม 5. Bob ตรวจสอบทุกธุรกรรมที่ส่งผ่านด้วยรหัสส่วนตัวของเขา (a, b) และคำนวณ P ′= Hs(aR)G + B. หากธุรกรรมของอลิซกับบ๊อบเป็นผู้รับอยู่ในหมู่พวกเขา จากนั้น aR = arG = rA และ P ′ = P 7 สาธารณะ ส่วนตัว อลิซ แครอล คีย์ครั้งเดียว คีย์ครั้งเดียว คีย์ครั้งเดียว บ๊อบ กุญแจของบ๊อบ ที่อยู่ของบ๊อบ รูปที่ 3 คีย์ CryptoNote/โมเดลธุรกรรม ขั้นแรก ผู้ส่งทำการแลกเปลี่ยน Diffie-Hellman เพื่อรับความลับที่แบ่งปันจากข้อมูลของเขาและ ครึ่งหนึ่งของที่อยู่ผู้รับ จากนั้นเขาจะคำนวณคีย์ปลายทางแบบครั้งเดียวโดยใช้การแชร์ ความลับและที่อยู่ครึ่งหลัง ผู้รับต้องใช้คีย์ ec ที่แตกต่างกันสองชุด สำหรับสองขั้นตอนนี้ ดังนั้นที่อยู่ CryptoNote มาตรฐานจึงมีขนาดใหญ่เป็นเกือบสองเท่าของกระเป๋าเงิน Bitcoin ที่อยู่ ผู้รับยังทำการแลกเปลี่ยน Diffie-Hellman เพื่อกู้คืนสิ่งที่เกี่ยวข้องด้วย รหัสลับ ลำดับธุรกรรมมาตรฐานจะเป็นดังนี้: 1. อลิซต้องการส่งการชำระเงินให้กับ Bob ซึ่งได้เผยแพร่ที่อยู่มาตรฐานของเขาแล้ว เธอ แกะที่อยู่และรับกุญแจสาธารณะของ Bob (A, B) 2. อลิซสร้างสุ่ม \(r \in [1, l - 1]\) และคำนวณคีย์สาธารณะแบบครั้งเดียว \(P = H_s(rA)G +\) บี. 3. อลิซใช้ P เป็นคีย์ปลายทางสำหรับเอาต์พุตและยังแพ็คค่า R = rG (เป็นส่วนหนึ่ง ของการแลกเปลี่ยน Diffie-Hellman) ในการทำธุรกรรม โปรดทราบว่าเธอสามารถสร้างได้ เอาต์พุตอื่นๆ ที่มีคีย์สาธารณะเฉพาะ: คีย์ของผู้รับที่แตกต่างกัน (Ai, Bi) บ่งบอกถึง Pi ที่แตกต่างกัน แม้จะมี r เดียวกันก็ตาม การทำธุรกรรม รหัสสาธารณะ Tx เอาท์พุท TX จำนวน กุญแจปลายทาง อาร์ = อาร์จี P = Hs(rA)G + B ผู้รับ กุญแจสาธารณะ ข้อมูลสุ่มของผู้ส่ง ร (ก, ข) รูปที่ 4 โครงสร้างธุรกรรมมาตรฐาน 4. อลิซส่งธุรกรรม 5. Bob ตรวจสอบทุกธุรกรรมที่ส่งผ่านด้วยรหัสส่วนตัวของเขา (a, b) และคำนวณ P ′= Hs(aR)G + B. หากธุรกรรมของอลิซกับบ๊อบเป็นผู้รับอยู่ในหมู่พวกเขา จากนั้น aR = arG = rA และ P ′ = P 7 13 ฉันสงสัยว่ามันจะปวดคอขนาดไหนหากใช้ ทางเลือก ของการเข้ารหัส โครงการ รูปไข่หรืออย่างอื่น ดังนั้นหากแผนการบางอย่างพังในอนาคต สกุลเงินจะเปลี่ยนไป โดยไม่ต้องกังวล คงจะปวดก้นมาก โอเค นี่คือสิ่งที่ฉันเพิ่งอธิบายไปในความคิดเห็นก่อนหน้า ประเภท Diffie-Hellman การแลกเปลี่ยนเป็นระเบียบเรียบร้อย สมมติว่าอเล็กซ์และเบรนดาต่างมีหมายเลขลับ A และ B และตัวเลข พวกเขาไม่สนใจที่จะเก็บความลับ ก และ ข พวกเขาต้องการสร้างความลับร่วมกันโดยปราศจาก เอวาค้นพบมัน Diffie และ Hellman คิดหาวิธีให้ Alex และ Brenda ร่วมกัน หมายเลขสาธารณะ a และ b แต่ไม่ใช่หมายเลขส่วนตัว A และ B และสร้างความลับร่วมกัน K. การใช้ความลับร่วมกันนี้ K โดยที่ Eva ไม่รับฟังในการสร้างสิ่งเดียวกัน K, Alex และ Brenda สามารถใช้ K เป็นคีย์เข้ารหัสลับและส่งข้อความลับกลับไปได้แล้ว และออกไป นี่คือวิธีการ CAN ทำงาน แม้ว่าควรจะทำงานกับตัวเลขที่มากกว่า 100 มากก็ตาม เราจะใช้ 100 เพราะการทำงานกับจำนวนเต็มแบบโมดูโล 100 เทียบเท่ากับ "การละทิ้งทั้งหมด แต่เป็นเลขสองหลักสุดท้าย" อเล็กซ์และเบรนดาต่างก็เลือก A, a, B และ b พวกเขาเก็บความลับ A และ B อเล็กซ์บอกเบรนดาว่าเธอมีค่าเป็นโมดูโล 100 (แค่เลขสองหลักสุดท้าย) และเบรนดาบอกอเล็กซ์ ค่าของเธอของ b โมดูโล 100 ตอนนี้เอวารู้ (a,b) โมดูโล 100 แต่อเล็กซ์รู้ (a,b,A) ดังนั้นเธอ สามารถคำนวณ x=abA แบบโมดูโล 100อเล็กซ์สับทั้งหมดยกเว้นเลขสุดท้ายเพราะเรากำลังดำเนินการอยู่ ภายใต้จำนวนเต็มโมดูโล 100 อีกครั้ง ในทำนองเดียวกัน เบรนดารู้ (a,b,B) ดังนั้นเธอจึงสามารถคำนวณได้ y=abB โมดูโล 100 ตอนนี้ Alex สามารถเผยแพร่ x และ Brenda สามารถเผยแพร่ y ได้ แต่ตอนนี้อเล็กซ์สามารถคำนวณ yA = abBA แบบโมดูโล 100 ได้ และเบรนดาสามารถคำนวณ xB ได้ = abBA โมดูโล 100 พวกเขาทั้งสองรู้หมายเลขเดียวกัน! แต่ทั้งหมดที่เอวาได้ยินก็คือ (ก,ข,กขก,กขข) เธอไม่มีวิธีง่ายๆ ในการคำนวณ abA*B ตอนนี้ นี่เป็นวิธีคิดที่ง่ายและปลอดภัยน้อยที่สุดเกี่ยวกับการแลกเปลี่ยน Diffie-Hellman มีเวอร์ชันที่ปลอดภัยมากขึ้น แต่เวอร์ชันส่วนใหญ่ใช้งานได้เพราะการแยกตัวประกอบจำนวนเต็มและไม่ต่อเนื่อง ลอการิทึมเป็นเรื่องยาก และปัญหาทั้งสองนั้นแก้ไขได้อย่างง่ายดายด้วยคอมพิวเตอร์ควอนตัม ฉันจะดูว่ามีเวอร์ชันใดบ้างที่ทนทานต่อควอนตัม http://en.wikipedia.org/wiki/Diffie%E2%80%93Hellman_key_exchange "ลำดับ txn มาตรฐาน" ที่แสดงไว้ที่นี่ขาดขั้นตอนมากมาย เช่น SIGNATURES พวกเขาเพิ่งได้รับที่นี่ ซึ่งแย่มากจริงๆเพราะลำดับที่เรา ลงนาม ข้อมูลที่รวมอยู่ในข้อความที่ลงนาม และอื่นๆ... ทั้งหมดนี้สุดยอดมาก มีความสำคัญต่อโปรโตคอล ทำผิดขั้นตอนหนึ่งหรือสองขั้นตอน แม้จะผิดลำดับเล็กน้อยก็ตาม ในขณะที่ใช้ "the ลำดับธุรกรรมมาตรฐาน" อาจทำให้ความปลอดภัยของทั้งระบบเกิดความสงสัยได้ นอกจากนี้ หลักฐานที่นำเสนอในภายหลังในรายงานอาจไม่เข้มงวดเพียงพอหาก กรอบการทำงานภายใต้คำจำกัดความที่กำหนดไว้อย่างหลวมๆ ดังในส่วนนี้
สาธารณะ ส่วนตัว อลิซ แครอล คีย์ครั้งเดียว คีย์ครั้งเดียว คีย์ครั้งเดียว บ๊อบ กุญแจของบ๊อบ ที่อยู่ของบ๊อบ รูปที่ 3 คีย์ CryptoNote/โมเดลธุรกรรม ขั้นแรก ผู้ส่งทำการแลกเปลี่ยน Diffie-Hellman เพื่อรับความลับที่แบ่งปันจากข้อมูลของเขาและ ครึ่งหนึ่งของที่อยู่ผู้รับ จากนั้นเขาจะคำนวณคีย์ปลายทางแบบครั้งเดียวโดยใช้การแชร์ ความลับและที่อยู่ครึ่งหลัง ผู้รับต้องใช้คีย์ ec ที่แตกต่างกันสองชุด สำหรับสองขั้นตอนนี้ ดังนั้นที่อยู่ CryptoNote มาตรฐานจึงมีขนาดใหญ่เกือบสองเท่าของกระเป๋าเงิน Bitcoin ที่อยู่ ผู้รับยังทำการแลกเปลี่ยน Diffie-Hellman เพื่อกู้คืนสิ่งที่เกี่ยวข้องด้วย รหัสลับ ลำดับธุรกรรมมาตรฐานจะเป็นดังนี้: 1. อลิซต้องการส่งการชำระเงินให้กับ Bob ซึ่งได้เผยแพร่ที่อยู่มาตรฐานของเขาแล้ว เธอ แกะที่อยู่และรับกุญแจสาธารณะของ Bob (A, B) 2. อลิซสร้างสุ่ม \(r \in [1, l - 1]\) และคำนวณคีย์สาธารณะแบบครั้งเดียว \(P = H_s(rA)G +\) บี. 3. อลิซใช้ P เป็นคีย์ปลายทางสำหรับเอาต์พุตและยังแพ็คค่า R = rG (เป็นส่วนหนึ่ง ของการแลกเปลี่ยน Diffie-Hellman) ในการทำธุรกรรม โปรดทราบว่าเธอสามารถสร้างได้ เอาต์พุตอื่นๆ ที่มีคีย์สาธารณะเฉพาะ: คีย์ของผู้รับที่แตกต่างกัน (Ai, Bi) บ่งบอกถึง Pi ที่แตกต่างกัน แม้จะมี r เดียวกันก็ตาม การทำธุรกรรม รหัสสาธารณะ Tx เอาท์พุท TX จำนวน กุญแจปลายทาง อาร์ = อาร์จี P = Hs(rA)G + B ผู้รับ กุญแจสาธารณะ ข้อมูลสุ่มของผู้ส่ง ร (ก, ข) รูปที่ 4 โครงสร้างธุรกรรมมาตรฐาน 4. อลิซส่งธุรกรรม 5. Bob ตรวจสอบทุกธุรกรรมที่ส่งผ่านด้วยรหัสส่วนตัวของเขา (a, b) และคำนวณ P ′= Hs(aR)G + B. หากธุรกรรมของอลิซกับบ๊อบเป็นผู้รับอยู่ในหมู่พวกเขา จากนั้น aR = arG = rA และ P ′ = P 7 สาธารณะ ส่วนตัว อลิซ แครอล คีย์ครั้งเดียว คีย์ครั้งเดียว คีย์ครั้งเดียว บ๊อบ กุญแจของบ๊อบ ที่อยู่ของบ๊อบ รูปที่ 3 คีย์ CryptoNote/โมเดลธุรกรรม ขั้นแรก ผู้ส่งทำการแลกเปลี่ยน Diffie-Hellman เพื่อรับความลับที่แบ่งปันจากข้อมูลของเขาและ ครึ่งหนึ่งของที่อยู่ผู้รับ จากนั้นเขาจะคำนวณคีย์ปลายทางแบบครั้งเดียวโดยใช้การแชร์ ความลับและที่อยู่ครึ่งหลัง ผู้รับต้องใช้คีย์ ec ที่แตกต่างกันสองชุด สำหรับสองขั้นตอนนี้ ดังนั้นที่อยู่ CryptoNote มาตรฐานจึงมีขนาดใหญ่เป็นเกือบสองเท่าของกระเป๋าเงิน Bitcoin ที่อยู่ ผู้รับยังทำการแลกเปลี่ยน Diffie-Hellman เพื่อกู้คืนสิ่งที่เกี่ยวข้องด้วย รหัสลับ ลำดับธุรกรรมมาตรฐานจะเป็นดังนี้: 1. อลิซต้องการส่งการชำระเงินให้กับ Bob ซึ่งได้เผยแพร่ที่อยู่มาตรฐานของเขาแล้ว เธอ แกะที่อยู่และรับกุญแจสาธารณะของ Bob (A, B) 2. อลิซสร้างสุ่ม \(r \in [1, l - 1]\) และคำนวณคีย์สาธารณะแบบครั้งเดียว \(P = H_s(rA)G +\) บี. 3. อลิซใช้ P เป็นคีย์ปลายทางสำหรับเอาต์พุตและยังแพ็คค่า R = rG (เป็นส่วนหนึ่ง ของการแลกเปลี่ยน Diffie-Hellman) ในการทำธุรกรรม โปรดทราบว่าเธอสามารถสร้างได้ เอาต์พุตอื่นๆ ที่มีคีย์สาธารณะเฉพาะ: คีย์ของผู้รับที่แตกต่างกัน (Ai, Bi) บ่งบอกถึง Pi ที่แตกต่างกัน แม้จะมี r เดียวกันก็ตาม การทำธุรกรรม รหัสสาธารณะ Tx เอาท์พุท TX จำนวน กุญแจปลายทาง อาร์ = อาร์จี P = Hs(rA)G + B ผู้รับ กุญแจสาธารณะ ข้อมูลสุ่มของผู้ส่ง ร (ก, ข) รูปที่ 4 โครงสร้างธุรกรรมมาตรฐาน 4. อลิซส่งธุรกรรม 5. Bob ตรวจสอบทุกธุรกรรมที่ส่งผ่านด้วยรหัสส่วนตัวของเขา (a, b) และคำนวณ P ′= Hs(aR)G + B. หากธุรกรรมของอลิซกับบ๊อบเป็นผู้รับอยู่ในหมู่พวกเขา จากนั้น aR = arG = rA และ P ′ = P 7 14 โปรดทราบว่าผู้เขียนทำหน้าที่ได้แย่มากในการรักษาคำศัพท์ให้ตรงตลอด ข้อความ แต่โดยเฉพาะในส่วนถัดไปนี้ การจุติครั้งต่อไปของบทความนี้จะต้องเป็น เข้มงวดมากขึ้น ในข้อความพวกเขาอ้างถึง P เป็นกุญแจสาธารณะแบบใช้ครั้งเดียว ในแผนภาพจะเรียก R ว่า "คีย์สาธารณะ Tx" และ P เป็น "คีย์ปลายทาง" ถ้าฉันจะเขียนเรื่องนี้ใหม่ฉันจะ กำหนดคำศัพท์เฉพาะเจาะจงก่อนที่จะพูดคุยในส่วนเหล่านี้ เอลนี้มีขนาดใหญ่มาก ดูหน้า 5. ใครเลือกเอลล์? แผนภาพแสดงให้เห็นว่าคีย์สาธารณะของธุรกรรม R = rG ซึ่งเป็นแบบสุ่มและเลือก โดยผู้ส่งไม่ได้เป็นส่วนหนึ่งของเอาต์พุต Tx เนื่องจากอาจเหมือนกันสำหรับหลายรายการ ทำธุรกรรมกับหลาย ๆ คน และไม่ได้ใช้ ภายหลัง เพื่อใช้จ่าย R ใหม่ถูกสร้างขึ้น ทุกครั้งที่คุณต้องการออกอากาศธุรกรรม CryptoNote ใหม่ นอกจากนี้ R จะใช้เท่านั้น เพื่อตรวจสอบว่าคุณเป็นผู้รับรายการหรือไม่ ไม่ใช่ข้อมูลขยะ แต่เป็นขยะสำหรับทุกคน โดยไม่มีคีย์ส่วนตัวที่เกี่ยวข้องกับ (A,B) ในทางกลับกัน คีย์ปลายทาง P = Hs(rA)G + B เป็นส่วนหนึ่งของเอาต์พุต Tx ทุกคน การเจาะข้อมูลของธุรกรรมที่ส่งผ่านทุกครั้งจะต้องตรวจสอบ P* ที่สร้างขึ้นเอง P นี้เพื่อดูว่าพวกเขาเป็นเจ้าของธุรกรรมที่ส่งผ่านนี้หรือไม่ ทุกคนที่มีเอาท์พุตธุรกรรมที่ยังไม่ได้ใช้ (UTXO) จะมี Ps เหล่านี้จำนวนหนึ่งวางอยู่รอบๆ ด้วยจำนวน เพื่อที่จะใช้จ่ายง พวกเขา ลงนามข้อความใหม่รวมทั้ง P. อลิซจะต้องลงนามในธุรกรรมนี้ด้วยคีย์ส่วนตัวแบบครั้งเดียวที่เกี่ยวข้องกับคีย์ปลายทางของเอาต์พุตธุรกรรมที่ยังไม่ได้ใช้ กุญแจปลายทางแต่ละอันที่อลิซเป็นเจ้าของมาพร้อมกับอุปกรณ์ครบครัน ด้วยรหัสส่วนตัวแบบครั้งเดียวที่อลิซเป็นเจ้าของ (สมมุติ) ทุกครั้งที่อลิซต้องการ ส่งเนื้อหาของรหัสปลายทางมาให้ฉัน หรือ Bob หรือ Brenda หรือ Charlie หรือ Charlene เธอ ใช้คีย์ส่วนตัวของเธอเพื่อลงนามในธุรกรรม เมื่อได้รับธุรกรรมแล้ว ฉันจะได้รับรายการใหม่ รหัสสาธารณะ Tx ซึ่งเป็นรหัสสาธารณะปลายทางใหม่ และฉันจะสามารถกู้คืนรหัสส่วนตัวแบบครั้งเดียวใหม่ได้ x การรวมคีย์ส่วนตัวแบบครั้งเดียวของฉัน x กับปลายทางสาธารณะของธุรกรรมใหม่ คีย์คือวิธีที่เราส่งธุรกรรมใหม่
- Bob สามารถกู้คืนคีย์ส่วนตัวแบบครั้งเดียวที่เกี่ยวข้องได้: x = Hs(aR) + b ดังนั้น P = xG เขาสามารถใช้เอาต์พุตนี้ได้ตลอดเวลาโดยการลงนามในธุรกรรมกับ x การทำธุรกรรม รหัสสาธารณะ Tx เอาท์พุท TX จำนวน กุญแจปลายทาง P ′ = Hs(aR)G + bG กุญแจสาธารณะแบบครั้งเดียว x = Hs(aR) + b รหัสส่วนตัวแบบครั้งเดียว ผู้รับ รหัสส่วนตัว (ก ข) ร พี' ?= ป มะเดื่อ 5. การตรวจสอบธุรกรรมขาเข้า ผลก็คือ Bob ได้รับการชำระเงินเข้ามา ซึ่งเกี่ยวข้องกับกุญแจสาธารณะแบบครั้งเดียวซึ่งก็คือ ไม่สามารถเชื่อมโยงได้สำหรับผู้ชม หมายเหตุเพิ่มเติมบางประการ: • เมื่อ Bob “รับรู้” ธุรกรรมของเขา (ดูขั้นตอนที่ 5) เขาใช้จริงเพียงครึ่งหนึ่งของธุรกรรมของเขา ข้อมูลส่วนตัว: (ก, ข) คู่นี้หรือที่เรียกว่าคีย์ติดตามสามารถส่งผ่านได้ ไปยังบุคคลที่สาม (แครอล) Bob สามารถมอบหมายให้เธอดำเนินการธุรกรรมใหม่ได้ บ๊อบ ไม่จำเป็นต้องเชื่อถือแครอลอย่างชัดเจน เพราะเธอไม่สามารถกู้คืนคีย์ลับแบบครั้งเดียว p ได้ โดยไม่มีคีย์ส่วนตัวแบบเต็มของ Bob (a, b) วิธีการนี้มีประโยชน์เมื่อ Bob ขาดแบนด์วิดท์ หรือพลังการคำนวณ (สมาร์ทโฟน กระเป๋าฮาร์ดแวร์ ฯลฯ) • ในกรณีที่อลิซต้องการพิสูจน์ว่าเธอส่งธุรกรรมไปยังที่อยู่ของ Bob เธอสามารถเปิดเผยได้ หรือใช้วิธีปฏิบัติแบบไม่มีความรู้ใดๆ เพื่อพิสูจน์ว่าเธอรู้ (เช่น โดยการลงนาม การทำธุรกรรมกับ r) • หาก Bob ต้องการมีที่อยู่ที่รองรับการตรวจสอบซึ่งมีธุรกรรมขาเข้าทั้งหมด สามารถลิงก์ได้ เขาสามารถเผยแพร่คีย์ติดตามหรือใช้ที่อยู่ที่ถูกตัดทอนได้ ที่อยู่นั้น เป็นตัวแทน ec-key สาธารณะ B เพียงอันเดียว และส่วนที่เหลือตามที่โปรโตคอลต้องการคือ ได้มาดังนี้: a = Hs(B) และ A = Hs(B)G ในทั้งสองกรณีทุกคนเป็น สามารถ "รับรู้" ธุรกรรมขาเข้าทั้งหมดของ Bob ได้ แต่แน่นอนว่าไม่มีใครสามารถใช้จ่ายได้ เงินทุนที่อยู่ในนั้นโดยไม่มีรหัสลับ b. 4.4 ลายเซ็นแหวนแบบครั้งเดียว โปรโตคอลที่ใช้ลายเซ็นวงแหวนแบบครั้งเดียวช่วยให้ผู้ใช้สามารถยกเลิกการเชื่อมโยงได้โดยไม่มีเงื่อนไข น่าเสียดายที่ลายเซ็นเข้ารหัสประเภททั่วไปอนุญาตให้ติดตามธุรกรรมไปยังพวกเขาได้ ผู้ส่งและผู้รับตามลำดับ วิธีแก้ปัญหาข้อบกพร่องนี้อยู่ที่การใช้ลายเซ็นที่แตกต่างกัน มากกว่าที่ใช้ในระบบเงินสดอิเล็กทรอนิกส์ในปัจจุบัน ก่อนอื่นเราจะให้คำอธิบายทั่วไปของอัลกอริทึมของเราโดยไม่มีการอ้างอิงที่ชัดเจน เงินสดอิเล็กทรอนิกส์ ลายเซ็นกริ่งแบบครั้งเดียวประกอบด้วยสี่อัลกอริธึม: (GEN, SIG, VER, LNK): GEN: รับพารามิเตอร์สาธารณะและส่งออก ec-pair (P, x) และคีย์สาธารณะ I SIG: รับข้อความ m, ชุด \(S'\) ของกุญแจสาธารณะ {Pi}i̸=s, คู่ (Ps, xs) และส่งออกลายเซ็น \(\sigma\) และเซต \(S = \)S'\( \cup \{P_s\}\) 8
-
Bob สามารถกู้คืนคีย์ส่วนตัวแบบครั้งเดียวที่เกี่ยวข้องได้: x = Hs(aR) + b ดังนั้น P = xG เขาสามารถใช้เอาต์พุตนี้ได้ตลอดเวลาโดยการลงนามในธุรกรรมกับ x การทำธุรกรรม รหัสสาธารณะ Tx เอาท์พุท TX จำนวน กุญแจปลายทาง P ′ = Hs(aR)G + bG กุญแจสาธารณะแบบครั้งเดียว x = Hs(aR) + b รหัสส่วนตัวแบบครั้งเดียว ผู้รับ รหัสส่วนตัว (ก ข) ร พี' ?= ป มะเดื่อ 5. การตรวจสอบธุรกรรมขาเข้า ผลก็คือ Bob ได้รับการชำระเงินเข้ามา ซึ่งเกี่ยวข้องกับกุญแจสาธารณะแบบครั้งเดียวซึ่งได้แก่ ไม่สามารถเชื่อมโยงได้สำหรับผู้ชม หมายเหตุเพิ่มเติมบางประการ: • เมื่อ Bob “รับรู้” ธุรกรรมของเขา (ดูขั้นตอนที่ 5) เขาใช้จริงเพียงครึ่งหนึ่งของธุรกรรมของเขา ข้อมูลส่วนตัว: (ก, ข) คู่นี้หรือที่เรียกว่าคีย์ติดตามสามารถส่งผ่านได้ ไปยังบุคคลที่สาม (แครอล) Bob สามารถมอบหมายให้เธอดำเนินการธุรกรรมใหม่ได้ บ๊อบ ไม่จำเป็นต้องเชื่อถือแครอลอย่างชัดเจน เพราะเธอไม่สามารถกู้คืนคีย์ลับแบบครั้งเดียว p ได้ โดยไม่มีคีย์ส่วนตัวแบบเต็มของ Bob (a, b) วิธีการนี้มีประโยชน์เมื่อ Bob ขาดแบนด์วิดท์ หรือพลังการคำนวณ (สมาร์ทโฟน กระเป๋าฮาร์ดแวร์ ฯลฯ) • ในกรณีที่อลิซต้องการพิสูจน์ว่าเธอส่งธุรกรรมไปยังที่อยู่ของ Bob เธอสามารถเปิดเผยได้ หรือใช้วิธีปฏิบัติแบบไม่มีความรู้ใดๆ เพื่อพิสูจน์ว่าเธอรู้ (เช่น โดยการลงนาม การทำธุรกรรมกับ r) • หาก Bob ต้องการมีที่อยู่ที่รองรับการตรวจสอบซึ่งมีธุรกรรมขาเข้าทั้งหมด สามารถลิงก์ได้ เขาสามารถเผยแพร่คีย์ติดตามหรือใช้ที่อยู่ที่ถูกตัดทอนได้ ที่อยู่นั้น เป็นตัวแทน ec-key สาธารณะ B เพียงอันเดียว และส่วนที่เหลือตามที่โปรโตคอลต้องการคือ ได้มาดังนี้: a = Hs(B) และ A = Hs(B)G ในทั้งสองกรณีทุกคนเป็น สามารถ "รับรู้" ธุรกรรมขาเข้าทั้งหมดของ Bob ได้ แต่แน่นอนว่าไม่มีใครสามารถใช้จ่ายได้ เงินทุนที่อยู่ในนั้นโดยไม่มีรหัสลับ b. 4.4 ลายเซ็นแหวนแบบครั้งเดียว โปรโตคอลที่ใช้ลายเซ็นวงแหวนแบบครั้งเดียวช่วยให้ผู้ใช้สามารถยกเลิกการเชื่อมโยงได้โดยไม่มีเงื่อนไข น่าเสียดายที่ลายเซ็นเข้ารหัสประเภททั่วไปอนุญาตให้ติดตามธุรกรรมไปยังพวกเขาได้ ผู้ส่งและผู้รับตามลำดับ วิธีแก้ปัญหาข้อบกพร่องนี้อยู่ที่การใช้ลายเซ็นที่แตกต่างกัน มากกว่าที่ใช้ในระบบเงินสดอิเล็กทรอนิกส์ในปัจจุบัน ก่อนอื่นเราจะจัดให้มีรุ่นคำอธิบายอัลกอริธึมของเราโดยไม่มีการอ้างอิงที่ชัดเจน เงินสดอิเล็กทรอนิกส์ ลายเซ็นกริ่งแบบครั้งเดียวประกอบด้วยสี่อัลกอริธึม: (GEN, SIG, VER, LNK): GEN: รับพารามิเตอร์สาธารณะและส่งออก ec-pair (P, x) และคีย์สาธารณะ I SIG: รับข้อความ m, ชุด \(S'\) ของกุญแจสาธารณะ {Pi}i̸=s, คู่ (Ps, xs) และส่งออกลายเซ็น \(\sigma\) และเซต \(S = \)S'\( \cup \{P_s\}\) 8 15 ผลลัพธ์ของธุรกรรมที่ยังไม่ได้ใช้มีลักษณะเป็นอย่างไรที่นี่ แผนภาพแสดงให้เห็นว่าเอาท์พุตธุรกรรมประกอบด้วยจุดข้อมูลเพียงสองจุดเท่านั้น ได้แก่ จำนวนเงินและคีย์ปลายทาง แต่นี่ไม่ใช่ เพียงพอเพราะเมื่อฉันพยายามใช้ "เอาต์พุต" นี้ ฉันยังคงจำเป็นต้องรู้ R=rG โปรดจำไว้ว่า r ถูกเลือกโดยผู้ส่ง และ R คือ a) ใช้เพื่อจดจำ cryptonotes ที่เข้ามาเป็นของคุณ เป็นเจ้าของและ b) ใช้เพื่อสร้างคีย์ส่วนตัวแบบครั้งเดียวที่ใช้เพื่อ "อ้างสิทธิ์" cryptonote ของคุณ ส่วนเกี่ยวกับเรื่องนี้ที่ฉันไม่เข้าใจ? ตามทฤษฎี "เอาล่ะ เรามีสิ่งเหล่านี้ ลายเซ็นและธุรกรรม แล้วเราจะส่งต่อกลับไปกลับมา" สู่โลกแห่งการเขียนโปรแกรม "โอเค ข้อมูลอะไร โดยเฉพาะ ที่ประกอบขึ้นเป็นรายบุคคล UTXO?" วิธีที่ดีที่สุดในการตอบคำถามนั้นคือการเจาะลึกเข้าไปในเนื้อความของโค้ดที่ไม่มีเครื่องหมายข้อคิดเห็นทั้งหมด เยี่ยมไปเลยทีม bytecoin จำได้ว่า: ความสามารถในการเชื่อมโยงหมายถึง "คนคนเดียวกันส่งหรือเปล่า" และไม่สามารถเชื่อมโยงได้หมายความว่า "ทำเช่นเดียวกัน คนรับ?". ดังนั้นระบบจึงสามารถเชื่อมโยงได้หรือไม่สามารถเชื่อมโยงได้ ไม่สามารถเชื่อมโยงได้หรือไม่สามารถเชื่อมโยงได้ น่ารำคาญฉันรู้ ดังนั้น เมื่อ Nic van Saberhagen พูดว่า "...การชำระเงินที่เข้ามา [จะ] เชื่อมโยงกับแบบครั้งเดียว กุญแจสาธารณะซึ่งผู้ชมไม่สามารถเชื่อมโยงได้" มาดูกันว่าเขาหมายถึงอะไร ขั้นแรก ให้พิจารณาสถานการณ์ที่ Alice ส่งธุรกรรมสองรายการแยกจากรายการเดียวกันให้ Bob ที่อยู่ไปยังที่อยู่เดียวกัน ในจักรวาล Bitcoin อลิซได้ทำผิดพลาดไปแล้ว ของการส่งจากที่อยู่เดียวกันดังนั้นการทำธุรกรรมจึงล้มเหลวในความต้องการของเรา ความสามารถในการเชื่อมโยง นอกจากนี้ เนื่องจากเธอส่งเงินไปยังที่อยู่เดียวกัน เธอจึงล้มเหลวตามความปรารถนาของเรา สำหรับการไม่สามารถเชื่อมโยงได้ ธุรกรรม bitcoin นี้สามารถเชื่อมโยงได้ (ทั้งหมด) และไม่สามารถเชื่อมโยงได้ ในทางกลับกัน ในจักรวาล cryptonote สมมติว่า Alice ส่ง cryptonote ให้กับ Bob โดยใช้ที่อยู่สาธารณะของ Bob เธอเลือกเป็นชุดกุญแจสาธารณะที่น่าสับสนซึ่งทุกคนรู้จัก กุญแจในพื้นที่รถไฟใต้ดินวอชิงตัน ดี.ซี. อเล็กซ์สร้างรหัสสาธารณะแบบใช้ครั้งเดียวโดยใช้ของเธอเอง ข้อมูลและข้อมูลสาธารณะของ Bob เธอส่งเงินไป และผู้สังเกตการณ์คนใดก็จะส่งเงินไป เท่านั้นที่สามารถรวบรวมได้ "มีคนจากพื้นที่รถไฟใต้ดินวอชิงตัน ดี.ซี. ส่ง cryptonotes 2.3 รายการไปให้ ที่อยู่สาธารณะแบบครั้งเดียว XYZ123" เรามีการควบคุมความน่าจะเป็นสำหรับการเชื่อมโยงได้ที่นี่ ดังนั้นเราจะเรียกสิ่งนี้ว่า "เกือบจะไม่สามารถเชื่อมโยงได้" นอกจากนี้เรายังเห็นเฉพาะเงินคีย์สาธารณะที่ถูกส่งไปเท่านั้น แม้ว่าเราจะสงสัยว่าผู้รับ คือบ็อบ เราไม่มีคีย์ส่วนตัวของเขา ดังนั้นเราจึงไม่สามารถทดสอบได้ว่ามีธุรกรรมที่ผ่านหรือไม่ เป็นของ Bob ไม่ต้องพูดถึงการสร้างคีย์ส่วนตัวเพียงครั้งเดียวเพื่อแลก cryptonote ของเขา ดังนั้นนี้ ที่จริงแล้วคือ "ไม่สามารถเชื่อมโยงได้" โดยสิ้นเชิง นี่เป็นเคล็ดลับที่ประณีตที่สุด ใครอยากจะเชื่อถือ MtGox อื่นจริงๆ? เราอาจจะ จัดเก็บ BTC จำนวนหนึ่งบน Coinbase ได้อย่างสะดวกสบาย แต่ความปลอดภัยขั้นสูงสุดของ Bitcoin ก็คือ กระเป๋าเงินจริง ซึ่งไม่สะดวก. ในกรณีนี้ คุณสามารถมอบคีย์ส่วนตัวของคุณครึ่งหนึ่งได้อย่างไม่ไว้วางใจโดยไม่กระทบต่อคุณ ความสามารถในการใช้จ่ายเงินของตัวเอง เมื่อทำเช่นนี้ สิ่งที่คุณทำคือบอกใครสักคนถึงวิธีทำลายการเชื่อมต่อไม่ได้ ส่วนอื่นๆ คุณสมบัติของ CN ที่ทำหน้าที่เหมือนสกุลเงินจะถูกรักษาไว้ เช่น การพิสูจน์การใช้จ่ายซ้ำซ้อน และ อะไรก็ตาม
-
Bob สามารถกู้คืนคีย์ส่วนตัวแบบครั้งเดียวที่เกี่ยวข้องได้: x = Hs(aR) + b ดังนั้น P = xG เขาสามารถใช้เอาต์พุตนี้ได้ตลอดเวลาโดยการลงนามในธุรกรรมกับ x การทำธุรกรรม รหัสสาธารณะ Tx เอาท์พุท TX จำนวน กุญแจปลายทาง P ′ = Hs(aR)G + bG กุญแจสาธารณะแบบครั้งเดียว x = Hs(aR) + b รหัสส่วนตัวแบบครั้งเดียว ผู้รับ รหัสส่วนตัว (ก ข) ร พี' ?= ป มะเดื่อ 5. การตรวจสอบธุรกรรมขาเข้า ผลก็คือ Bob ได้รับการชำระเงินเข้ามา ซึ่งเกี่ยวข้องกับกุญแจสาธารณะแบบครั้งเดียวซึ่งก็คือ ไม่สามารถเชื่อมโยงได้สำหรับผู้ชม หมายเหตุเพิ่มเติมบางประการ: • เมื่อ Bob “รับรู้” ธุรกรรมของเขา (ดูขั้นตอนที่ 5) เขาใช้จริงเพียงครึ่งหนึ่งของธุรกรรมของเขา ข้อมูลส่วนตัว: (ก, ข) คู่นี้หรือที่เรียกว่าคีย์ติดตามสามารถส่งผ่านได้ ไปยังบุคคลที่สาม (แครอล) Bob สามารถมอบหมายให้เธอดำเนินการธุรกรรมใหม่ได้ บ๊อบ ไม่จำเป็นต้องเชื่อถือแครอลอย่างชัดเจน เพราะเธอไม่สามารถกู้คืนคีย์ลับแบบครั้งเดียว p ได้ โดยไม่มีคีย์ส่วนตัวแบบเต็มของ Bob (a, b) วิธีการนี้มีประโยชน์เมื่อ Bob ขาดแบนด์วิดท์ หรือพลังการคำนวณ (สมาร์ทโฟน กระเป๋าฮาร์ดแวร์ ฯลฯ) • ในกรณีที่อลิซต้องการพิสูจน์ว่าเธอส่งธุรกรรมไปยังที่อยู่ของ Bob เธอสามารถเปิดเผยได้ หรือใช้วิธีปฏิบัติแบบไม่มีความรู้ใดๆ เพื่อพิสูจน์ว่าเธอรู้ (เช่น โดยการลงนาม การทำธุรกรรมกับ r) • หาก Bob ต้องการมีที่อยู่ที่รองรับการตรวจสอบซึ่งมีธุรกรรมขาเข้าทั้งหมด สามารถลิงก์ได้ เขาสามารถเผยแพร่คีย์ติดตามหรือใช้ที่อยู่ที่ถูกตัดทอนได้ ที่อยู่นั้น เป็นตัวแทน ec-key สาธารณะ B เพียงอันเดียว และส่วนที่เหลือตามที่โปรโตคอลต้องการคือ ได้มาดังนี้: a = Hs(B) และ A = Hs(B)G ในทั้งสองกรณีทุกคนเป็น สามารถ "รับรู้" ธุรกรรมขาเข้าทั้งหมดของ Bob ได้ แต่แน่นอนว่าไม่มีใครสามารถใช้จ่ายได้ เงินทุนที่อยู่ในนั้นโดยไม่มีรหัสลับ b. 4.4 ลายเซ็นแหวนแบบครั้งเดียว โปรโตคอลที่ใช้ลายเซ็นวงแหวนแบบครั้งเดียวช่วยให้ผู้ใช้สามารถยกเลิกการเชื่อมโยงได้โดยไม่มีเงื่อนไข น่าเสียดายที่ลายเซ็นเข้ารหัสประเภททั่วไปอนุญาตให้ติดตามธุรกรรมไปยังพวกเขาได้ ผู้ส่งและผู้รับตามลำดับ วิธีแก้ปัญหาข้อบกพร่องนี้อยู่ที่การใช้ลายเซ็นที่แตกต่างกัน มากกว่าที่ใช้ในระบบเงินสดอิเล็กทรอนิกส์ในปัจจุบัน ก่อนอื่นเราจะให้คำอธิบายทั่วไปของอัลกอริทึมของเราโดยไม่มีการอ้างอิงที่ชัดเจน เงินสดอิเล็กทรอนิกส์ ลายเซ็นกริ่งแบบครั้งเดียวประกอบด้วยสี่อัลกอริธึม: (GEN, SIG, VER, LNK): GEN: รับพารามิเตอร์สาธารณะและส่งออก ec-pair (P, x) และคีย์สาธารณะ I SIG: รับข้อความ m, ชุด \(S'\) ของกุญแจสาธารณะ {Pi}i̸=s, คู่ (Ps, xs) และส่งออกลายเซ็น \(\sigma\) และเซต \(S = \)S'\( \cup \{P_s\}\) 8
- Bob สามารถกู้คืนคีย์ส่วนตัวแบบครั้งเดียวที่เกี่ยวข้องได้: x = Hs(aR) + b ดังนั้น P = xG เขาสามารถใช้เอาต์พุตนี้ได้ตลอดเวลาโดยการลงนามในธุรกรรมกับ x การทำธุรกรรม รหัสสาธารณะ Tx เอาท์พุท TX จำนวน กุญแจปลายทาง P ′ = Hs(aR)G + bG กุญแจสาธารณะแบบครั้งเดียว x = Hs(aR) + b รหัสส่วนตัวแบบครั้งเดียว ผู้รับ รหัสส่วนตัว (ก ข) ร พี' ?= ป มะเดื่อ 5. การตรวจสอบธุรกรรมขาเข้า ผลก็คือ Bob ได้รับการชำระเงินเข้ามา ซึ่งเกี่ยวข้องกับกุญแจสาธารณะแบบครั้งเดียวซึ่งได้แก่ ไม่สามารถเชื่อมโยงได้สำหรับผู้ชม หมายเหตุเพิ่มเติมบางประการ: • เมื่อ Bob “รับรู้” ธุรกรรมของเขา (ดูขั้นตอนที่ 5) เขาใช้จริงเพียงครึ่งหนึ่งของธุรกรรมของเขา ข้อมูลส่วนตัว: (ก, ข) คู่นี้หรือที่เรียกว่าคีย์ติดตามสามารถส่งผ่านได้ ไปยังบุคคลที่สาม (แครอล) Bob สามารถมอบหมายให้เธอดำเนินการธุรกรรมใหม่ได้ บ๊อบ ไม่จำเป็นต้องเชื่อถือแครอลอย่างชัดเจน เพราะเธอไม่สามารถกู้คืนคีย์ลับแบบครั้งเดียว p ได้ โดยไม่มีคีย์ส่วนตัวแบบเต็มของ Bob (a, b) วิธีการนี้มีประโยชน์เมื่อ Bob ขาดแบนด์วิดท์ หรือพลังการคำนวณ (สมาร์ทโฟน กระเป๋าฮาร์ดแวร์ ฯลฯ) • ในกรณีที่อลิซต้องการพิสูจน์ว่าเธอส่งธุรกรรมไปยังที่อยู่ของ Bob เธอสามารถเปิดเผยได้ หรือใช้วิธีปฏิบัติแบบไม่มีความรู้ใดๆ เพื่อพิสูจน์ว่าเธอรู้ (เช่น โดยการลงนาม การทำธุรกรรมกับ r) • หาก Bob ต้องการมีที่อยู่ที่รองรับการตรวจสอบซึ่งมีธุรกรรมขาเข้าทั้งหมด สามารถลิงก์ได้ เขาสามารถเผยแพร่คีย์ติดตามหรือใช้ที่อยู่ที่ถูกตัดทอนได้ ที่อยู่นั้น เป็นตัวแทน ec-key สาธารณะ B เพียงอันเดียว และส่วนที่เหลือตามที่โปรโตคอลต้องการคือ ได้มาดังนี้: a = Hs(B) และ A = Hs(B)G ในทั้งสองกรณีทุกคนเป็น สามารถ "รับรู้" ธุรกรรมขาเข้าทั้งหมดของ Bob ได้ แต่แน่นอนว่าไม่มีใครสามารถใช้จ่ายได้ เงินทุนที่อยู่ในนั้นโดยไม่มีรหัสลับ b. 4.4 ลายเซ็นแหวนแบบครั้งเดียว โปรโตคอลที่ใช้ลายเซ็นวงแหวนแบบครั้งเดียวช่วยให้ผู้ใช้สามารถยกเลิกการเชื่อมโยงได้โดยไม่มีเงื่อนไข น่าเสียดายที่ลายเซ็นเข้ารหัสประเภททั่วไปอนุญาตให้ติดตามธุรกรรมไปยังพวกเขาได้ ผู้ส่งและผู้รับตามลำดับ วิธีแก้ปัญหาข้อบกพร่องนี้อยู่ที่การใช้ลายเซ็นที่แตกต่างกัน มากกว่าที่ใช้ในระบบเงินสดอิเล็กทรอนิกส์ในปัจจุบัน ก่อนอื่นเราจะจัดให้มีรุ่นคำอธิบายอัลกอริธึมของเราโดยไม่มีการอ้างอิงที่ชัดเจน เงินสดอิเล็กทรอนิกส์ ลายเซ็นกริ่งแบบครั้งเดียวประกอบด้วยสี่อัลกอริธึม: (GEN, SIG, VER, LNK): GEN: รับพารามิเตอร์สาธารณะและส่งออก ec-pair (P, x) และคีย์สาธารณะ I SIG: รับข้อความ m, ชุด \(S'\) ของกุญแจสาธารณะ {Pi}i̸=s, คู่ (Ps, xs) และส่งออกลายเซ็น \(\sigma\) และเซต \(S = \)S'\( \cup \{P_s\}\) 8 16 ใช่ ตอนนี้เรามี a) ที่อยู่การชำระเงิน และ b) รหัสการชำระเงิน นักวิจารณ์อาจถามว่า "เราจำเป็นต้องทำเช่นนี้จริงๆ หรือไม่ เพราะหากร้านค้าได้รับ 112.00678952 CN นั่นแหละ นั่นคือคำสั่งของฉัน และฉันมีภาพหน้าจอหรือใบเสร็จหรืออะไรก็ตาม ไม่ใช่อย่างนั้น ระดับความแม่นยำที่บ้าคลั่งเพียงพอ?” คำตอบคือ "บางที โดยส่วนใหญ่ ในแต่ละวัน การทำธุรกรรมแบบเห็นหน้ากัน" อย่างไรก็ตาม สถานการณ์ที่พบบ่อยกว่า (โดยเฉพาะในโลกดิจิทัล) คือ: พ่อค้าขายของ ชุดของวัตถุ แต่ละชิ้นมีราคาคงที่ สมมติว่าวัตถุ A คือ 0.001 CN, วัตถุ B คือ 0.01 CN และ วัตถุ C คือ 0.1 CN ตอนนี้หากพ่อค้าได้รับคำสั่งซื้อจำนวน 1.618 CN ก็มีจำนวนมากมาย (หลายวิธี!) ในการจัดเตรียมคำสั่งซื้อให้กับลูกค้า หากไม่มีรหัสการชำระเงิน การระบุคำสั่งซื้อที่เรียกว่า "ไม่ซ้ำกัน" ของลูกค้าด้วยต้นทุนที่เรียกว่า "ไม่ซ้ำกัน" ของลูกค้า คำสั่งกลายเป็นไปไม่ได้ ตลกยิ่งกว่า: ถ้าทุกอย่างในร้านค้าออนไลน์ของฉันมีราคา 1.0 พอดี CN และฉันได้รับลูกค้า 1,000 รายต่อวันเหรอ? และคุณต้องการพิสูจน์ว่าคุณซื้อวัตถุมา 3 ชิ้นพอดี สองสัปดาห์ก่อน? ไม่มีรหัสการชำระเงิน? ขอให้โชคดีนะเพื่อน เรื่องสั้นเรื่องยาว: เมื่อ Bob เผยแพร่ที่อยู่การชำระเงิน เขาอาจลงเอยด้วยการเผยแพร่ a รหัสการชำระเงินด้วย (ดู เช่น การฝากเงิน Poloniex XMR) สิ่งนี้แตกต่างไปจากที่อธิบายไว้ ในข้อความที่นี่ โดยที่ Alice เป็นคนสร้างรหัสการชำระเงิน Bob จะต้องมีวิธีสร้างรหัสการชำระเงินด้วยเช่นกัน (ก,ข) โปรดจำไว้ว่าสามารถเผยแพร่คีย์การติดตาม (a,B) ได้ สูญเสียความลับของคุณค่าของพินัยกรรม 'a' ไม่ละเมิดความสามารถในการจับจ่ายหรือยอมให้คนอื่นมาขโมยของ (ผมคิดว่า...ก็คงมี ได้รับการพิสูจน์แล้ว) จะช่วยให้ผู้ใช้สามารถดูธุรกรรมที่เข้ามาทั้งหมดได้ ที่อยู่ที่ถูกตัดทอนตามที่อธิบายไว้ในย่อหน้านี้ จะใช้ส่วน "ส่วนตัว" ของคีย์เท่านั้น และสร้างขึ้นจากส่วน "สาธารณะ" การเปิดเผยค่าสำหรับ 'a' จะลบความสามารถในการลิงก์ไม่ได้ แต่จะเก็บธุรกรรมที่เหลือไว้ ผู้เขียนหมายถึง "ไม่สามารถเชื่อมโยงได้" เพราะไม่สามารถเชื่อมโยงได้หมายถึงผู้รับและสามารถเชื่อมโยงได้ หมายถึงผู้ส่ง เห็นได้ชัดว่าผู้เขียนไม่ได้ตระหนักดีว่าการเชื่อมโยงได้มีแง่มุมที่แตกต่างกันสองประการ เนื่องจากท้ายที่สุดแล้ว ธุรกรรมเป็นวัตถุที่มีทิศทางบนกราฟ จึงมีคำถามสองข้อ: "ธุรกรรมทั้งสองนี้ไปที่บุคคลคนเดียวกันหรือไม่" และ "ธุรกรรมทั้งสองนี้กำลังจะมา จากคนคนเดียวกัน?” นี่เป็นนโยบาย "ไม่ย้อนกลับ" ซึ่งเป็นคุณสมบัติที่ไม่สามารถเชื่อมโยงได้ของ CryptoNote มีเงื่อนไข กล่าวคือ Bob สามารถเลือกธุรกรรมที่เข้ามาของเขาว่าไม่สามารถยกเลิกการเชื่อมโยงได้ การใช้นโยบายนี้ นี่คือการอ้างสิทธิ์ที่พวกเขาพิสูจน์ภายใต้ Random Oracle Model เราจะไปถึงจุดนั้น การสุ่ม ออราเคิลมีข้อดีและข้อเสีย
VER: รับข้อความ m, ชุด S, ลายเซ็น \(\sigma\) และเอาต์พุตเป็น "จริง" หรือ "เท็จ" LNK: รับชุด I = {Ii} ลายเซ็น \(\sigma\) และเอาต์พุต "เชื่อมโยง" หรือ "indep" แนวคิดเบื้องหลังโปรโตคอลนั้นค่อนข้างง่าย: ผู้ใช้สร้างลายเซ็นซึ่งสามารถเป็นได้ ตรวจสอบโดยชุดกุญแจสาธารณะแทนที่จะเป็นกุญแจสาธารณะเฉพาะ ตัวตนของผู้ลงนามคือ แยกไม่ออกจากผู้ใช้รายอื่นที่มีกุญแจสาธารณะอยู่ในชุดจนกว่าเจ้าของจะผลิต ลายเซ็นที่สองโดยใช้คู่กุญแจเดียวกัน คีย์ส่วนตัว x0 \(\cdots\) ซี \(\cdots\) xn กุญแจสาธารณะ ป0 \(\cdots\) พาย \(\cdots\) พีเอ็น แหวน ลายเซ็น ลงชื่อ ตรวจสอบ มะเดื่อ 6. การไม่เปิดเผยชื่อลายเซ็นของแหวน GEN: ผู้ลงนามเลือกคีย์ลับแบบสุ่ม \(x \in [1, l - 1]\) และคำนวณค่าที่สอดคล้องกัน กุญแจสาธารณะ P = xG นอกจากนี้เขายังคำนวณกุญแจสาธารณะอีกอัน I = xHp(P) ซึ่งเราจะทำ เรียกว่า “ภาพสำคัญ” SIG: ผู้ลงนามสร้างลายเซ็นวงแหวนแบบครั้งเดียวโดยมีความรู้เป็นศูนย์แบบไม่โต้ตอบ พิสูจน์โดยใช้เทคนิคจาก [21] เขาเลือกเซตย่อยแบบสุ่ม \(S'\) ของ n จากผู้ใช้รายอื่น คีย์สาธารณะ Pi, คู่คีย์ของเขาเอง (x, P) และคีย์อิมเมจ I ให้ \(0 \leq s \leq n\) เป็นดัชนีลับของผู้ลงนาม ใน S (เพื่อให้รหัสสาธารณะของเขาคือ Ps) เขาสุ่มเลือก {qi | ฉัน = 0 . . . n} และ {wi | ฉัน = 0 . . . n, i ̸= s} จาก (1 . . . l) และใช้ การเปลี่ยนแปลงต่อไปนี้: หลี่ = ( ชี่จี, ถ้าฉัน = ส คิวจี + วิปิ, ถ้าฉัน ̸= ส ริ= ( ฉีHp(Pi) ถ้าฉัน = ส qiHp(Pi) + wiI, ถ้าฉัน ̸= ส ขั้นตอนต่อไปคือการได้รับความท้าทายแบบไม่โต้ตอบ: c = Hs(ม, L1, . . . , Ln, R1, . . . , Rn) ในที่สุดผู้ลงนามจะคำนวณคำตอบ: ซี = วิ ถ้าฉัน ̸= ส ค - เอ็นพี ผม=0 ci ดัดแปลง ถ้าฉัน = ส ริ = ( ฉี ถ้าฉัน ̸= ส qs −csx ดัดแปลง ถ้าฉัน = ส ผลลัพธ์ลายเซ็นต์คือ \(\sigma\) = (I, c1, . . . , cn, r1, . . . , rn) 9 VER: รับข้อความ m, ชุด S, ลายเซ็น \(\sigma\) และเอาต์พุตเป็น "จริง" หรือ "เท็จ" LNK: รับชุด I = {Ii} ลายเซ็น \(\sigma\) และเอาต์พุต "เชื่อมโยง" หรือ "indep" แนวคิดเบื้องหลังโปรโตคอลนั้นค่อนข้างง่าย: ผู้ใช้สร้างลายเซ็นซึ่งสามารถเป็นได้ ตรวจสอบโดยชุดกุญแจสาธารณะแทนที่จะเป็นกุญแจสาธารณะเฉพาะ ตัวตนของผู้ลงนามคือ แยกไม่ออกจากผู้ใช้รายอื่นที่มีกุญแจสาธารณะอยู่ในชุดจนกว่าเจ้าของจะผลิต ลายเซ็นที่สองโดยใช้คู่กุญแจเดียวกัน คีย์ส่วนตัว x0 \(\cdots\) ซี \(\cdots\) xn กุญแจสาธารณะ ป0 \(\cdots\) พาย \(\cdots\) พีเอ็น แหวน ลายเซ็น ลงชื่อ ตรวจสอบ มะเดื่อ 6. การไม่เปิดเผยชื่อลายเซ็นของแหวน GEN: ผู้ลงนามเลือกคีย์ลับแบบสุ่ม \(x \in [1, l - 1]\) และคำนวณค่าที่สอดคล้องกัน กุญแจสาธารณะ P = xG นอกจากนี้เขายังคำนวณกุญแจสาธารณะอีกอัน I = xHp(P) ซึ่งเราจะทำ เรียกว่า “ภาพสำคัญ” SIG: ผู้ลงนามสร้างลายเซ็นวงแหวนแบบครั้งเดียวโดยมีความรู้เป็นศูนย์แบบไม่โต้ตอบ พิสูจน์โดยใช้เทคนิคจาก [21] เขาเลือกเซตย่อยแบบสุ่ม \(S'\) ของ n จากผู้ใช้รายอื่น คีย์สาธารณะ Pi, คู่คีย์ของเขาเอง (x, P) และคีย์อิมเมจ I ให้ \(0 \leq s \leq n\) เป็นดัชนีลับของผู้ลงนาม ใน S (เพื่อให้รหัสสาธารณะของเขาคือ Ps) เขาสุ่มเลือก {qi | ฉัน = 0 . . . n} และ {wi | ฉัน = 0 . . . n, i ̸= s} จาก (1 . . . l) และใช้ การเปลี่ยนแปลงต่อไปนี้: หลี่ = ( ชี่จี, ถ้าฉัน = ส คิวจี + วิปิ, ถ้าฉัน ̸= ส ริ= ( ฉีHp(Pi) ถ้าฉัน = ส qiHp(Pi) + wiI, ถ้าฉัน ̸= ส ขั้นตอนต่อไปคือการได้รับความท้าทายแบบไม่โต้ตอบ: c = Hs(ม, L1, . . . , Ln, R1, . . . , Rn) ในที่สุดผู้ลงนามจะคำนวณคำตอบ: ซี = วิ ถ้าฉัน ̸= ส ค - เอ็นพี ผม=0 ci ดัดแปลง ถ้าฉัน = ส ริ = ( ฉี ถ้าฉัน ̸= ส qs −csx ดัดแปลง ถ้าฉัน = ส ผลลัพธ์ลายเซ็นต์คือ \(\sigma\) = (I, c1, . . . , cn, r1, . . . , rn) 9 17 บางทีนี่อาจจะโง่ แต่ต้องระมัดระวังเมื่อรวม S และ P_s หากคุณเพียงแค่ต่อท้าย พับลิกคีย์ตัวสุดท้าย การเชื่อมต่อไม่ได้เสียหายเพราะใครก็ตามที่ตรวจสอบธุรกรรมที่ส่งผ่าน สามารถตรวจสอบรหัสสาธารณะล่าสุดที่แสดงในแต่ละธุรกรรมและบูมได้ นั่นคือกุญแจสาธารณะ ที่เกี่ยวข้องกับผู้ส่ง ดังนั้นหลังจากการรวมตัวแล้ว จะต้องมีเครื่องกำเนิดตัวเลขสุ่มเทียม ใช้เพื่อสับเปลี่ยนกุญแจสาธารณะที่เลือก "...จนกว่าเจ้าของจะจัดทำลายเซ็นครั้งที่สองโดยใช้คู่กุญแจอันเดียวกัน" ฉันหวังว่าผู้เขียน(s?) จะอธิบายรายละเอียดเกี่ยวกับเรื่องนี้ ฉันเชื่อว่านี่หมายถึง "ตรวจสอบให้แน่ใจว่าทุกครั้งที่คุณเลือกชุดกุญแจสาธารณะเพื่อทำให้สับสน ตัวคุณเองด้วย คุณเลือกชุดใหม่ที่ไม่มีกุญแจสองดอกเหมือนกัน" ซึ่งดูเหมือนก สภาพค่อนข้างแข็งแกร่งเมื่อไม่สามารถเชื่อมต่อได้ บางที "คุณเลือกชุดสุ่มใหม่จาก กุญแจที่เป็นไปได้ทั้งหมด" โดยมีสมมติฐานว่าถึงแม้ทางแยกที่ไม่เล็กน้อยจะหลีกเลี่ยงไม่ได้ เกิดขึ้นก็ไม่ได้เกิดขึ้นบ่อยนัก ไม่ว่าจะด้วยวิธีใด ฉันต้องเจาะลึกลงไปในข้อความนี้ นี่คือการสร้างลายเซ็นแหวน การพิสูจน์ที่ไม่มีความรู้นั้นยอดเยี่ยมมาก ฉันขอท้าให้คุณพิสูจน์ให้ฉันเห็นว่าคุณรู้ความลับ โดยไม่เปิดเผยความลับ เช่น สมมติว่าเราอยู่ปากทางเข้าถ้ำรูปโดนัท และด้านหลังถ้ำ (เกินสายตาจากทางเข้า) มีโอประตูทางใหม่ที่คุณไป อ้างว่าคุณมีกุญแจ ถ้าคุณไปทางเดียว มันจะทำให้คุณผ่านไปได้เสมอ แต่ถ้าคุณไปทางนั้น ไปทางอื่นคุณต้องมีกุญแจ แต่คุณไม่ต้องการแสดงกุญแจให้ฉันเห็นด้วยซ้ำ แสดงให้ฉันเห็นว่ามันเปิดประตู แต่คุณต้องการพิสูจน์ให้ฉันเห็นว่าคุณรู้วิธีเปิด ประตู ในสภาพแวดล้อมแบบโต้ตอบ ฉันจะหงายเหรียญ หัวอยู่ซ้าย หางอยู่ขวา แล้วคุณก็ลงไป ถ้ำรูปโดนัทไม่ว่าเหรียญจะพาคุณไปในทางใดก็ตาม ที่ด้านหลังสุดสายตาของฉันคุณ เปิดประตูกลับมาอีกด้าน เราทำซ้ำการทดลองหยอดเหรียญ จนกว่าฉันจะพอใจที่คุณมีกุญแจ แต่นั่นเป็นการพิสูจน์ความรู้แบบไม่มีศูนย์เชิงโต้ตอบอย่างชัดเจน มีเวอร์ชันที่ไม่โต้ตอบซึ่งคุณและฉันไม่ต้องสื่อสารกัน ด้วยวิธีนี้ไม่มีผู้ดักฟังสามารถรบกวนได้ http://en.wikipedia.org/wiki/Zero-knowledge_proof สิ่งนี้กลับกันจากคำจำกัดความก่อนหน้า
VER: รับข้อความ m, ชุด S, ลายเซ็น \(\sigma\) และเอาต์พุตเป็น "จริง" หรือ "เท็จ" LNK: รับชุด I = {Ii} ลายเซ็น \(\sigma\) และเอาต์พุต "เชื่อมโยง" หรือ "indep" แนวคิดเบื้องหลังโปรโตคอลนั้นค่อนข้างง่าย: ผู้ใช้สร้างลายเซ็นซึ่งสามารถเป็นได้ ตรวจสอบโดยชุดกุญแจสาธารณะแทนที่จะเป็นกุญแจสาธารณะเฉพาะ ตัวตนของผู้ลงนามคือ แยกไม่ออกจากผู้ใช้รายอื่นที่มีกุญแจสาธารณะอยู่ในชุดจนกว่าเจ้าของจะผลิต ลายเซ็นที่สองโดยใช้คู่กุญแจเดียวกัน คีย์ส่วนตัว x0 \(\cdots\) ซี \(\cdots\) xn กุญแจสาธารณะ ป0 \(\cdots\) พาย \(\cdots\) พีเอ็น แหวน ลายเซ็น ลงชื่อ ตรวจสอบ มะเดื่อ 6. การไม่เปิดเผยชื่อลายเซ็นของแหวน GEN: ผู้ลงนามเลือกคีย์ลับแบบสุ่ม \(x \in [1, l - 1]\) และคำนวณค่าที่สอดคล้องกัน กุญแจสาธารณะ P = xG นอกจากนี้เขายังคำนวณกุญแจสาธารณะอีกอัน I = xHp(P) ซึ่งเราจะทำ เรียกว่า “ภาพสำคัญ” SIG: ผู้ลงนามสร้างลายเซ็นวงแหวนแบบครั้งเดียวโดยมีความรู้เป็นศูนย์แบบไม่โต้ตอบ พิสูจน์โดยใช้เทคนิคจาก [21] เขาเลือกเซตย่อยแบบสุ่ม \(S'\) ของ n จากผู้ใช้รายอื่น คีย์สาธารณะ Pi, คู่คีย์ของเขาเอง (x, P) และคีย์อิมเมจ I ให้ \(0 \leq s \leq n\) เป็นดัชนีลับของผู้ลงนาม ใน S (เพื่อให้รหัสสาธารณะของเขาคือ Ps) เขาสุ่มเลือก {qi | ฉัน = 0 . . . n} และ {wi | ฉัน = 0 . . . n, i ̸= s} จาก (1 . . . l) และใช้ การเปลี่ยนแปลงต่อไปนี้: หลี่ = ( ชี่จี, ถ้าฉัน = ส คิวจี + วิปิ, ถ้าฉัน ̸= ส ริ= ( ฉีHp(Pi) ถ้าฉัน = ส qiHp(Pi) + wiI, ถ้าฉัน ̸= ส ขั้นตอนต่อไปคือการได้รับความท้าทายแบบไม่โต้ตอบ: c = Hs(ม, L1, . . . , Ln, R1, . . . , Rn) ในที่สุดผู้ลงนามจะคำนวณคำตอบ: ซี = วิ ถ้าฉัน ̸= ส ค - เอ็นพี ผม=0 ci ดัดแปลง ถ้าฉัน = ส ริ = ( ฉี ถ้าฉัน ̸= ส qs −csx ดัดแปลง ถ้าฉัน = ส ผลลัพธ์ลายเซ็นต์คือ \(\sigma\) = (I, c1, . . . , cn, r1, . . . , rn) 9 VER: รับข้อความ m, ชุด S, ลายเซ็น \(\sigma\) และเอาต์พุตเป็น "จริง" หรือ "เท็จ" LNK: รับชุด I = {Ii} ลายเซ็น \(\sigma\) และเอาต์พุต "เชื่อมโยง" หรือ "indep" แนวคิดเบื้องหลังโปรโตคอลนั้นค่อนข้างง่าย: ผู้ใช้สร้างลายเซ็นซึ่งสามารถเป็นได้ ตรวจสอบโดยชุดกุญแจสาธารณะแทนที่จะเป็นกุญแจสาธารณะเฉพาะ ตัวตนของผู้ลงนามคือ แยกไม่ออกจากผู้ใช้รายอื่นที่มีกุญแจสาธารณะอยู่ในชุดจนกว่าเจ้าของจะผลิต ลายเซ็นที่สองโดยใช้คู่กุญแจเดียวกัน คีย์ส่วนตัว x0 \(\cdots\) ซี \(\cdots\) xn กุญแจสาธารณะ ป0 \(\cdots\) พาย \(\cdots\) พีเอ็น แหวน ลายเซ็น ลงชื่อ ตรวจสอบ มะเดื่อ 6. การไม่เปิดเผยชื่อลายเซ็นของแหวน GEN: ผู้ลงนามเลือกคีย์ลับแบบสุ่ม \(x \in [1, l - 1]\) และคำนวณค่าที่สอดคล้องกัน กุญแจสาธารณะ P = xG นอกจากนี้เขายังคำนวณกุญแจสาธารณะอีกอัน I = xHp(P) ซึ่งเราจะทำ เรียกว่า “ภาพสำคัญ” SIG: ผู้ลงนามสร้างลายเซ็นวงแหวนแบบครั้งเดียวโดยมีความรู้เป็นศูนย์แบบไม่โต้ตอบ พิสูจน์โดยใช้เทคนิคจาก [21] เขาเลือกเซตย่อยแบบสุ่ม \(S'\) ของ n จากผู้ใช้รายอื่น คีย์สาธารณะ Pi, คู่คีย์ของเขาเอง (x, P) และคีย์อิมเมจ I ให้ \(0 \leq s \leq n\) เป็นดัชนีลับของผู้ลงนาม ใน S (เพื่อให้รหัสสาธารณะของเขาคือ Ps) เขาสุ่มเลือก {qi | ฉัน = 0 . . . n} และ {wi | ฉัน = 0 . . . n, i ̸= s} จาก (1 . . . l) และใช้ การเปลี่ยนแปลงต่อไปนี้: หลี่ = ( ชี่จี, ถ้าฉัน = ส คิวจี + วิปิ, ถ้าฉัน ̸= ส ริ= ( ฉีHp(Pi) ถ้าฉัน = ส qiHp(Pi) + wiI, ถ้าฉัน ̸= ส ขั้นตอนต่อไปคือการได้รับความท้าทายแบบไม่โต้ตอบ: c = Hs(ม, L1, . . . , Ln, R1, . . . , Rn) ในที่สุดผู้ลงนามจะคำนวณคำตอบ: ซี = วิ ถ้าฉัน ̸= ส ค - เอ็นพี ผม=0 ci ดัดแปลง ถ้าฉัน = ส ริ = ( ฉี ถ้าฉัน ̸= ส qs −csx ดัดแปลง ถ้าฉัน = ส ผลลัพธ์ลายเซ็นต์คือ \(\sigma\) = (I, c1, . . . , cn, r1, . . . , rn) 9 18 พื้นที่ทั้งหมดนี้เป็นผู้ไม่เชื่อเรื่อง cryptonote เพียงแค่อธิบายอัลกอริธึมลายเซ็นวงแหวนโดยไม่มี อ้างอิงถึงสกุลเงิน ฉันสงสัยว่าสัญกรณ์บางอย่างสอดคล้องกับส่วนที่เหลือของรายงาน แม้ว่า ตัวอย่างเช่น x คือคีย์ลับ "สุ่ม" ที่เลือกใน GEN ซึ่งให้คีย์สาธารณะ P และอิมเมจคีย์สาธารณะ I ค่าของ x นี้คือค่าที่ Bob คำนวณไว้ในตอนที่ 6 หน้า 8 นี่ก็คือ เริ่มคลายความสับสนจากคำอธิบายที่แล้ว นี่มันเจ๋งมาก เงินไม่ได้ถูกโอนจาก "ที่อยู่สาธารณะของอลิซไปยังสาธารณะของ Bob ที่อยู่" กำลังโอนจากที่อยู่แบบครั้งเดียวไปยังที่อยู่แบบครั้งเดียว ในแง่หนึ่ง นี่คือวิธีการทำงานของนักเรียน ถ้าอเล็กซ์มี cryptonotes เพราะใครบางคน ส่งให้พวกเขาไปหาเธอ ซึ่งหมายความว่าเธอมีกุญแจส่วนตัวที่จำเป็นในการส่งให้บ็อบ เธอใช้ การแลกเปลี่ยน Diffie-Hellman โดยใช้ข้อมูลสาธารณะของ Bob เพื่อสร้างที่อยู่แบบครั้งเดียวใหม่ และ cryptonotes จะถูกโอนไปยังที่อยู่นั้น ขณะนี้ เนื่องจากมีการใช้การแลกเปลี่ยน DH (น่าจะปลอดภัย) เพื่อสร้างที่อยู่แบบครั้งเดียวใหม่ ซึ่งอเล็กซ์ส่ง CN ของเธอให้ Bob เป็นคนเดียวที่มีคีย์ส่วนตัวที่จำเป็นในการทำซ้ำ ด้านบน ตอนนี้บ๊อบก็คืออเล็กซ์ http://en.wikipedia.org/wiki/Piecewise#Notation_and_interpretation ผลรวมควรจัดทำดัชนีเหนือ j ไม่ใช่ i แต่ละ c_i เป็นขยะแบบสุ่ม (เนื่องจาก w_i เป็นแบบสุ่ม) ยกเว้นตูด c_iเชื่อมโยงกับรหัสจริงที่เกี่ยวข้องกับลายเซ็นนี้ ค่าของ c คือ a hash ของข้อมูลก่อนหน้านี้ ฉันคิดว่านี่อาจมีการพิมพ์ผิดที่แย่กว่าการใช้ดัชนี 'i' อีกครั้งเพราะดูเหมือนว่า c_s โดยปริยาย, ไม่ชัดเจน, กำหนดไว้. อันที่จริง หากเราใช้สมการนี้โดยอาศัยศรัทธา เราจะตัดสินว่า c_s = (1/2)c - (1/2) sum_i neq s c_i นั่นคือ hash ลบตัวเลขสุ่มทั้งกลุ่ม ในทางกลับกัน หากการรวมนี้ตั้งใจให้อ่าน "c_s = (c - sum_j neq s c_j) mod l" จากนั้นเราจะนำ hash จากข้อมูลก่อนหน้าของเรามาสร้างตัวเลขสุ่มจำนวนหนึ่ง ลบตัวเลขสุ่มเหล่านั้นทั้งหมดของ hash และนั่นทำให้เรา c_s ดูเหมือนว่าจะเป็นเช่นนั้น สิ่งที่ "ควร" เกิดขึ้นตามสัญชาตญาณของฉัน และตรงกับขั้นตอนการตรวจสอบในหน้า 10 แต่สัญชาตญาณไม่ใช่คณิตศาสตร์ ฉันจะเจาะลึกเรื่องนี้ เหมือนเมื่อก่อน; ทั้งหมดนี้จะเป็นขยะแบบสุ่ม ยกเว้นอันที่เกี่ยวข้องกับของจริง กุญแจสาธารณะของผู้ลงนาม x ยกเว้นครั้งนี้ นี่คือสิ่งที่ฉันคาดหวังจากโครงสร้างมากกว่านี้: r_i เป็นการสุ่มสำหรับ i!=s และ r_s ถูกกำหนดโดยค่าลับ x และค่าดัชนี s ของ q_i และ c_i
VER: ผู้ตรวจสอบจะตรวจสอบลายเซ็นโดยใช้การแปลงแบบผกผัน: ( ล' ฉัน = riG + ciPi อาร์' i = riHp(Pi) + ciI สุดท้าย ผู้ตรวจสอบจะตรวจสอบว่า เอ็นพี ผม=0 ci ?= Hs(ม, L′ 0, . . . , ล' เอ็น, ร' 0, . . . , ร' ก) ม็อด ล หากความเท่าเทียมกันนี้ถูกต้อง ผู้ตรวจสอบจะรันอัลกอริทึม LNK มิฉะนั้นผู้ตรวจสอบจะปฏิเสธ ลายเซ็น LNK: ผู้ตรวจสอบจะตรวจสอบว่าฉันถูกใช้ในลายเซ็นที่ผ่านมาหรือไม่ (ค่าเหล่านี้จะถูกเก็บไว้ในไฟล์ ตั้งฉัน) การใช้งานหลายครั้งหมายความว่ามีการสร้างลายเซ็นสองรายการภายใต้รหัสลับเดียวกัน ความหมายของระเบียบการ: โดยการใช้การแปลงรูปตัว L ผู้ลงนามจะพิสูจน์ว่าเขารู้ x ดังกล่าว โดยที่อย่างน้อยหนึ่ง Pi = xG เพื่อให้การพิสูจน์นี้ไม่สามารถทำซ้ำได้ เราจึงแนะนำอิมเมจหลัก เนื่องจาก I = xHp(P) ผู้ลงนามใช้ coefficients เดียวกัน (ri, ci) เพื่อพิสูจน์ข้อความที่เกือบจะเหมือนกัน: เขารู้ x อย่างน้อยหนึ่ง \(H_p(P_i) = I \cdot x^{-1}\) หากการแมป \(x \to I\) เป็นการเติม: 1. ไม่มีใครสามารถกู้คืนคีย์สาธารณะจากอิมเมจคีย์และระบุผู้ลงนามได้ 2. ผู้ลงนามไม่สามารถลงนามสองลายเซ็นที่มี I ต่างกันและมี x เหมือนกันได้ การวิเคราะห์ความปลอดภัยฉบับสมบูรณ์มีให้ไว้ในภาคผนวก A 4.5 ธุรกรรม CryptoNote มาตรฐาน ด้วยการรวมทั้งสองวิธีเข้าด้วยกัน (กุญแจสาธารณะที่ไม่สามารถเชื่อมโยงได้และลายเซ็นวงแหวนที่ไม่สามารถติดตามได้) Bob ประสบความสำเร็จ ระดับความเป็นส่วนตัวใหม่เมื่อเปรียบเทียบกับแผน Bitcoin ดั้งเดิม มันต้องการให้เขาเก็บเท่านั้น หนึ่งคีย์ส่วนตัว (a, b) และเผยแพร่ (A, B) เพื่อเริ่มรับและส่งธุรกรรมที่ไม่ระบุชื่อ ในขณะที่ตรวจสอบความถูกต้องของธุรกรรมแต่ละรายการ Bob ยังทำการคูณเส้นโค้งวงรีเพียงสองครั้งและบวกอีกหนึ่งรายการต่อเอาต์พุตเพื่อตรวจสอบว่าธุรกรรมเป็นของเขาหรือไม่ สำหรับเขาทุกๆ เอาต์พุต Bob กู้คืนคู่คีย์แบบครั้งเดียว (pi, Pi) และเก็บไว้ในกระเป๋าเงินของเขา อินพุตใดก็ได้ ได้รับการพิสูจน์โดยสถานการณ์ว่ามีเจ้าของคนเดียวกันก็ต่อเมื่อปรากฏในการทำธุรกรรมครั้งเดียว ใน ความจริงแล้วความสัมพันธ์นี้สร้างได้ยากกว่ามากเนื่องจากการลงนามแหวนเพียงครั้งเดียว ด้วยลายเซ็นต์ของแหวน Bob สามารถซ่อนทุกอินพุตระหว่างของคนอื่นได้อย่างมีประสิทธิภาพ เป็นไปได้ทั้งหมด ผู้ใช้จ่ายจะสวมใส่ได้ แม้แต่เจ้าของคนก่อน (อลิซ) ก็ไม่มีข้อมูลมากไปกว่านั้น ผู้สังเกตการณ์คนใดคนหนึ่ง เมื่อลงนามในธุรกรรมของเขา Bob จะระบุเอาต์พุตต่างประเทศด้วยจำนวนเดียวกันกับของเขา เอาท์พุทผสมทั้งหมดโดยไม่ต้องมีส่วนร่วมของผู้ใช้รายอื่น บ๊อบเอง (เช่นเดียวกับ ใครก็ตาม) ไม่ทราบว่าได้ใช้การชำระเงินเหล่านี้ไปแล้วหรือไม่: สามารถใช้เอาต์พุตได้ ลายเซ็นหลายพันลายเซ็นถือเป็นปัจจัยแห่งความคลุมเครือและไม่เคยตกเป็นเป้าหมายของการซ่อนตัว ดับเบิ้ล การตรวจสอบการใช้จ่ายเกิดขึ้นในเฟส LNK เมื่อตรวจสอบกับชุดอิมเมจหลักที่ใช้ บ๊อบสามารถเลือกระดับความคลุมเครือได้ด้วยตัวเอง: n = 1 หมายความว่าความน่าจะเป็นที่เขามี ใช้เอาท์พุตคือความน่าจะเป็น 50%, n = 99 ให้ 1% ขนาดของลายเซ็นผลลัพธ์จะเพิ่มขึ้น เชิงเส้นตรงเท่ากับ O(n+1) ดังนั้นการปรับปรุงการไม่เปิดเผยตัวตนจะมีค่าใช้จ่ายค่าธรรมเนียมการทำธุรกรรมเพิ่มเติมของ Bob เขายังสามารถ ตั้งค่า n = 0 และทำให้ลายเซ็นวงแหวนของเขาประกอบด้วยองค์ประกอบเดียวเท่านั้น อย่างไรก็ตาม สิ่งนี้จะเกิดขึ้นทันที เผยให้เห็นว่าเขาเป็นคนใช้จ่าย 10 VER: ผู้ตรวจสอบจะตรวจสอบลายเซ็นโดยใช้การแปลงแบบผกผัน: ( ล' ฉัน = riG + ciPi อาร์' i = riHp(Pi) + ciI สุดท้าย ผู้ตรวจสอบจะตรวจสอบว่า เอ็นพี ผม=0 ci ?= Hs(ม, L′ 0, . . . , ล' เอ็น, ร' 0, . . . , ร' ก) ม็อด ล หากความเท่าเทียมกันนี้ถูกต้อง ผู้ตรวจสอบจะรันอัลกอริทึม LNK มิฉะนั้นผู้ตรวจสอบจะปฏิเสธ ลายเซ็น LNK: ผู้ตรวจสอบจะตรวจสอบว่าฉันถูกใช้ในลายเซ็นที่ผ่านมาหรือไม่ (ค่าเหล่านี้จะถูกเก็บไว้ในไฟล์ ตั้งฉัน) การใช้งานหลายครั้งหมายความว่ามีการสร้างลายเซ็นสองรายการภายใต้รหัสลับเดียวกัน ความหมายของระเบียบการ: โดยการใช้การแปลงรูปตัว L ผู้ลงนามจะพิสูจน์ว่าเขารู้ x ดังกล่าว โดยที่อย่างน้อยหนึ่ง Pi = xG เพื่อให้การพิสูจน์นี้ไม่สามารถทำซ้ำได้ เราจึงแนะนำอิมเมจหลัก เนื่องจาก I = xHp(P) ผู้ลงนามใช้ coefficients เดียวกัน (ri, ci) เพื่อพิสูจน์ข้อความที่เกือบจะเหมือนกัน: เขารู้ x อย่างน้อยหนึ่ง \(H_p(P_i) = I \cdot x^{-1}\) หากการแมป \(x \to I\) เป็นการเติม: 1. ไม่มีใครสามารถกู้คืนคีย์สาธารณะจากอิมเมจคีย์และระบุผู้ลงนามได้ 2. ผู้ลงนามไม่สามารถลงนามสองลายเซ็นที่มี I ต่างกันและมี x เหมือนกันได้ การวิเคราะห์ความปลอดภัยฉบับสมบูรณ์มีให้ไว้ในภาคผนวก A 4.5 ธุรกรรม CryptoNote มาตรฐาน ด้วยการรวมทั้งสองวิธีเข้าด้วยกัน (กุญแจสาธารณะที่ไม่สามารถเชื่อมโยงได้และลายเซ็นวงแหวนที่ไม่สามารถติดตามได้) Bob ประสบความสำเร็จ ระดับความเป็นส่วนตัวใหม่เมื่อเปรียบเทียบกับแผน Bitcoin ดั้งเดิม มันต้องการให้เขาเก็บเท่านั้น หนึ่งคีย์ส่วนตัว (a, b) และเผยแพร่ (A, B) เพื่อเริ่มรับและส่งธุรกรรมที่ไม่ระบุชื่อ ในขณะที่ตรวจสอบความถูกต้องของธุรกรรมแต่ละรายการ Bob ยังทำการคูณเส้นโค้งวงรีเพียงสองครั้งและบวกอีกหนึ่งรายการต่อเอาต์พุตเพื่อตรวจสอบว่าธุรกรรมเป็นของเขาหรือไม่ สำหรับเขาทุกๆ เอาต์พุต Bob กู้คืนคู่คีย์แบบครั้งเดียว (pi, Pi) และ stแร่มันอยู่ในกระเป๋าเงินของเขา อินพุตใดก็ได้ ได้รับการพิสูจน์โดยสถานการณ์ว่ามีเจ้าของคนเดียวกันก็ต่อเมื่อปรากฏในการทำธุรกรรมครั้งเดียว ใน ความจริงแล้วความสัมพันธ์นี้สร้างได้ยากกว่ามากเนื่องจากการลงนามแหวนเพียงครั้งเดียว ด้วยลายเซ็นต์ของแหวน Bob สามารถซ่อนทุกอินพุตระหว่างของคนอื่นได้อย่างมีประสิทธิภาพ เป็นไปได้ทั้งหมด ผู้ใช้จ่ายจะสวมใส่ได้ แม้แต่เจ้าของคนก่อน (อลิซ) ก็ไม่มีข้อมูลมากไปกว่านั้น ผู้สังเกตการณ์คนใดคนหนึ่ง เมื่อลงนามในธุรกรรมของเขา Bob จะระบุเอาต์พุตต่างประเทศด้วยจำนวนเดียวกันกับของเขา เอาท์พุทผสมทั้งหมดโดยไม่ต้องมีส่วนร่วมของผู้ใช้รายอื่น บ๊อบเอง (เช่นเดียวกับ ใครก็ตาม) ไม่ทราบว่าได้ใช้การชำระเงินเหล่านี้ไปแล้วหรือไม่: สามารถใช้เอาต์พุตได้ ลายเซ็นหลายพันลายเซ็นถือเป็นปัจจัยแห่งความคลุมเครือและไม่เคยตกเป็นเป้าหมายของการซ่อนตัว ดับเบิ้ล การตรวจสอบการใช้จ่ายเกิดขึ้นในเฟส LNK เมื่อตรวจสอบกับชุดอิมเมจหลักที่ใช้ บ๊อบสามารถเลือกระดับความคลุมเครือได้ด้วยตัวเอง: n = 1 หมายความว่าความน่าจะเป็นที่เขามี ใช้เอาท์พุตคือความน่าจะเป็น 50%, n = 99 ให้ 1% ขนาดของลายเซ็นผลลัพธ์จะเพิ่มขึ้น เชิงเส้นตรงเท่ากับ O(n+1) ดังนั้นการปรับปรุงการไม่เปิดเผยตัวตนจะมีค่าใช้จ่ายค่าธรรมเนียมการทำธุรกรรมเพิ่มเติมของ Bob เขายังสามารถ ตั้งค่า n = 0 และทำให้ลายเซ็นวงแหวนของเขาประกอบด้วยองค์ประกอบเดียวเท่านั้น อย่างไรก็ตาม สิ่งนี้จะเกิดขึ้นทันที เผยให้เห็นว่าเขาเป็นคนใช้จ่าย 10 19 เมื่อมาถึงจุดนี้ฉันสับสนมาก Alex ได้รับข้อความ M พร้อมลายเซ็น (I,c_1, ..., c_n, r_1, ..., r_n) และรายชื่อสาธารณะ คีย์ เอส และเธอวิ่ง VER สิ่งนี้จะคำนวณ L_i’ และ R_i’ สิ่งนี้ยืนยันว่า c_s = c - sum_i neq s c_i ในหน้าก่อนหน้า ตอนแรกฉันรู้สึกสับสนมาก (ฮ่า) ใครๆ ก็สามารถคำนวณ L_i’ และ R_i’ ได้ แท้จริงแล้วแต่ละ r_i และ c_i ได้รับการเผยแพร่ในลายเซ็นแล้ว ซิกมาพร้อมกับค่าสำหรับ I เซต S = P_i ของกุญแจสาธารณะทั้งหมดก็ได้รับการเผยแพร่เช่นกัน ดังนั้นใครที่ได้ดูซิกม่าและเซ็ตของ คีย์ S = P_i จะได้รับค่าเดียวกันสำหรับ L_i’ และ R_i’ ดังนั้นให้ตรวจสอบลายเซ็น แต่แล้วฉันก็จำได้ว่าส่วนนี้เป็นเพียงการอธิบายอัลกอริธึมลายเซ็น ไม่ใช่ "ตรวจสอบ หากลงนามแล้ว ให้ตรวจสอบว่าส่งถึงฉันหรือไม่ และหากเป็นเช่นนั้น ก็ให้ใช้เงิน" นี่เป็นเพียง ส่วนหนึ่งของเกมอันเป็นเอกลักษณ์ ฉันสนใจที่จะอ่านภาคผนวก A เมื่อไปถึงที่นั่นในที่สุด ฉันต้องการดูการเปรียบเทียบการดำเนินการโดยเต็มรูปแบบของ Cryptonote กับ Bitcoin อีกทั้งไฟฟ้า/ความยั่งยืน อัลกอริธึมส่วนใดที่ประกอบขึ้นเป็น "อินพุต" ที่นี่ ฉันเชื่อว่าอินพุตธุรกรรมคือจำนวนเงินและชุดของ UTXOs ที่รวมกันเป็นจำนวนที่มากกว่า จำนวน. สิ่งนี้ไม่ชัดเจน “เป้าหมายในการซ่อนตัว?” ฉันคิดเกี่ยวกับเรื่องนี้มาสองสามนาทีแล้วและฉันก็ยังไม่ได้ ความคิดที่คลุมเครือที่สุดว่ามันอาจหมายถึงอะไร การโจมตีแบบใช้จ่ายสองครั้งสามารถทำได้โดยการจัดการคีย์ที่ใช้ที่รับรู้ของโหนดเท่านั้น ชุดรูปภาพ \(I\) "ระดับความคลุมเครือ" = n แต่จำนวนกุญแจสาธารณะทั้งหมดที่รวมอยู่ในธุรกรรมคือ n+1 กล่าวคือ ระดับความกำกวมจะเป็น "คุณต้องการให้มีบุคคลอื่นอีกกี่คน" ฝูงชน?” คำตอบน่าจะเป็น "ให้มากที่สุด" โดยค่าเริ่มต้น
VER: ผู้ตรวจสอบจะตรวจสอบลายเซ็นโดยใช้การแปลงแบบผกผัน: ( ล' ฉัน = riG + ciPi อาร์' i = riHp(Pi) + ciI สุดท้าย ผู้ตรวจสอบจะตรวจสอบว่า เอ็นพี ผม=0 ci ?= Hs(ม, L′ 0, . . . , ล' เอ็น, ร' 0, . . . , ร' ก) ม็อด ล หากความเท่าเทียมกันนี้ถูกต้อง ผู้ตรวจสอบจะรันอัลกอริทึม LNK มิฉะนั้นผู้ตรวจสอบจะปฏิเสธ ลายเซ็น LNK: ผู้ตรวจสอบจะตรวจสอบว่าฉันถูกใช้ในลายเซ็นที่ผ่านมาหรือไม่ (ค่าเหล่านี้จะถูกเก็บไว้ในไฟล์ ตั้งฉัน) การใช้งานหลายครั้งหมายความว่ามีการสร้างลายเซ็นสองรายการภายใต้รหัสลับเดียวกัน ความหมายของระเบียบการ: โดยการใช้การแปลงรูปตัว L ผู้ลงนามจะพิสูจน์ว่าเขารู้ x ดังกล่าว โดยที่อย่างน้อยหนึ่ง Pi = xG เพื่อให้การพิสูจน์นี้ไม่สามารถทำซ้ำได้ เราจึงแนะนำอิมเมจหลัก เนื่องจาก I = xHp(P) ผู้ลงนามใช้ coefficients เดียวกัน (ri, ci) เพื่อพิสูจน์ข้อความที่เกือบจะเหมือนกัน: เขารู้ x อย่างน้อยหนึ่ง \(H_p(P_i) = I \cdot x^{-1}\) หากการแมป \(x \to I\) เป็นการเติม: 1. ไม่มีใครสามารถกู้คืนคีย์สาธารณะจากอิมเมจคีย์และระบุผู้ลงนามได้ 2. ผู้ลงนามไม่สามารถลงนามสองลายเซ็นที่มี I ต่างกันและมี x เหมือนกันได้ การวิเคราะห์ความปลอดภัยฉบับสมบูรณ์มีให้ไว้ในภาคผนวก A 4.5 ธุรกรรม CryptoNote มาตรฐาน ด้วยการรวมทั้งสองวิธีเข้าด้วยกัน (กุญแจสาธารณะที่ไม่สามารถเชื่อมโยงได้และลายเซ็นวงแหวนที่ไม่สามารถติดตามได้) Bob ประสบความสำเร็จ ระดับความเป็นส่วนตัวใหม่เมื่อเปรียบเทียบกับแผน Bitcoin ดั้งเดิม มันต้องการให้เขาเก็บเท่านั้น หนึ่งคีย์ส่วนตัว (a, b) และเผยแพร่ (A, B) เพื่อเริ่มรับและส่งธุรกรรมที่ไม่ระบุชื่อ ในขณะที่ตรวจสอบความถูกต้องของธุรกรรมแต่ละรายการ Bob ยังทำการคูณเส้นโค้งวงรีเพียงสองครั้งและบวกอีกหนึ่งรายการต่อเอาต์พุตเพื่อตรวจสอบว่าธุรกรรมเป็นของเขาหรือไม่ สำหรับเขาทุกๆ เอาต์พุต Bob กู้คืนคู่คีย์แบบครั้งเดียว (pi, Pi) และเก็บไว้ในกระเป๋าเงินของเขา อินพุตใดก็ได้ ได้รับการพิสูจน์โดยสถานการณ์ว่ามีเจ้าของคนเดียวกันก็ต่อเมื่อปรากฏในการทำธุรกรรมครั้งเดียว ใน ความจริงแล้วความสัมพันธ์นี้สร้างได้ยากกว่ามากเนื่องจากการลงนามแหวนเพียงครั้งเดียว ด้วยลายเซ็นต์ของแหวน Bob สามารถซ่อนทุกอินพุตระหว่างของคนอื่นได้อย่างมีประสิทธิภาพ เป็นไปได้ทั้งหมด ผู้ใช้จ่ายจะสวมใส่ได้ แม้แต่เจ้าของคนก่อน (อลิซ) ก็ไม่มีข้อมูลมากไปกว่านั้น ผู้สังเกตการณ์คนใดคนหนึ่ง เมื่อลงนามในธุรกรรมของเขา Bob จะระบุเอาต์พุตต่างประเทศด้วยจำนวนเดียวกันกับของเขา เอาท์พุทผสมทั้งหมดโดยไม่ต้องมีส่วนร่วมของผู้ใช้รายอื่น บ๊อบเอง (เช่นเดียวกับ ใครก็ตาม) ไม่ทราบว่าได้ใช้การชำระเงินเหล่านี้ไปแล้วหรือไม่: สามารถใช้เอาต์พุตได้ ลายเซ็นหลายพันลายเซ็นถือเป็นปัจจัยแห่งความคลุมเครือและไม่เคยตกเป็นเป้าหมายของการซ่อนตัว ดับเบิ้ล การตรวจสอบการใช้จ่ายเกิดขึ้นในเฟส LNK เมื่อตรวจสอบกับชุดอิมเมจหลักที่ใช้ บ๊อบสามารถเลือกระดับความคลุมเครือได้ด้วยตัวเอง: n = 1 หมายความว่าความน่าจะเป็นที่เขามี ใช้เอาท์พุตคือความน่าจะเป็น 50%, n = 99 ให้ 1% ขนาดของลายเซ็นผลลัพธ์จะเพิ่มขึ้น เชิงเส้นตรงเท่ากับ O(n+1) ดังนั้นการปรับปรุงการไม่เปิดเผยตัวตนจะมีค่าใช้จ่ายค่าธรรมเนียมการทำธุรกรรมเพิ่มเติมของ Bob เขายังสามารถ ตั้งค่า n = 0 และทำให้ลายเซ็นวงแหวนของเขาประกอบด้วยองค์ประกอบเดียวเท่านั้น อย่างไรก็ตาม สิ่งนี้จะเกิดขึ้นทันที เผยให้เห็นว่าเขาเป็นคนใช้จ่าย 10 VER: ผู้ตรวจสอบจะตรวจสอบลายเซ็นโดยใช้การแปลงแบบผกผัน: ( ล' ฉัน = riG + ciPi อาร์' i = riHp(Pi) + ciI สุดท้าย ผู้ตรวจสอบจะตรวจสอบว่า เอ็นพี ผม=0 ci ?= Hs(ม, L′ 0, . . . , ล' เอ็น, ร' 0, . . . , ร' ก) ม็อด ล หากความเท่าเทียมกันนี้ถูกต้อง ผู้ตรวจสอบจะรันอัลกอริทึม LNK มิฉะนั้นผู้ตรวจสอบจะปฏิเสธ ลายเซ็น LNK: ผู้ตรวจสอบจะตรวจสอบว่าฉันถูกใช้ในลายเซ็นที่ผ่านมาหรือไม่ (ค่าเหล่านี้จะถูกเก็บไว้ในไฟล์ ตั้งฉัน) การใช้งานหลายครั้งหมายความว่ามีการสร้างลายเซ็นสองรายการภายใต้รหัสลับเดียวกัน ความหมายของระเบียบการ: โดยการใช้การแปลงรูปตัว L ผู้ลงนามจะพิสูจน์ว่าเขารู้ x ดังกล่าว โดยที่อย่างน้อยหนึ่ง Pi = xG เพื่อให้การพิสูจน์นี้ไม่สามารถทำซ้ำได้ เราจึงแนะนำอิมเมจหลัก เนื่องจาก I = xHp(P) ผู้ลงนามใช้ coefficients เดียวกัน (ri, ci) เพื่อพิสูจน์ข้อความที่เกือบจะเหมือนกัน: เขารู้ x อย่างน้อยหนึ่ง \(H_p(P_i) = I \cdot x^{-1}\) หากการแมป \(x \to I\) เป็นการเติม: 1. ไม่มีใครสามารถกู้คืนคีย์สาธารณะจากอิมเมจคีย์และระบุผู้ลงนามได้ 2. ผู้ลงนามไม่สามารถลงนามสองลายเซ็นที่มี I ต่างกันและมี x เหมือนกันได้ การวิเคราะห์ความปลอดภัยฉบับสมบูรณ์มีให้ไว้ในภาคผนวก A 4.5 ธุรกรรม CryptoNote มาตรฐาน ด้วยการรวมทั้งสองวิธีเข้าด้วยกัน (กุญแจสาธารณะที่ไม่สามารถเชื่อมโยงได้และลายเซ็นวงแหวนที่ไม่สามารถติดตามได้) Bob ประสบความสำเร็จ ระดับความเป็นส่วนตัวใหม่เมื่อเปรียบเทียบกับแผน Bitcoin ดั้งเดิม มันต้องการให้เขาเก็บเท่านั้น หนึ่งคีย์ส่วนตัว (a, b) และเผยแพร่ (A, B) เพื่อเริ่มรับและส่งธุรกรรมที่ไม่ระบุชื่อ ในขณะที่ตรวจสอบความถูกต้องของธุรกรรมแต่ละรายการ Bob ยังทำการคูณเส้นโค้งวงรีเพียงสองครั้งและบวกอีกหนึ่งรายการต่อเอาต์พุตเพื่อตรวจสอบว่าธุรกรรมเป็นของเขาหรือไม่ สำหรับเขาทุกๆ เอาต์พุต Bob กู้คืนคู่คีย์แบบครั้งเดียว (pi, Pi) และ stแร่มันอยู่ในกระเป๋าเงินของเขา อินพุตใดก็ได้ ได้รับการพิสูจน์โดยสถานการณ์ว่ามีเจ้าของคนเดียวกันก็ต่อเมื่อปรากฏในการทำธุรกรรมครั้งเดียว ใน ความจริงแล้วความสัมพันธ์นี้สร้างได้ยากกว่ามากเนื่องจากการลงนามแหวนเพียงครั้งเดียว ด้วยลายเซ็นต์ของแหวน Bob สามารถซ่อนทุกอินพุตระหว่างของคนอื่นได้อย่างมีประสิทธิภาพ เป็นไปได้ทั้งหมด ผู้ใช้จ่ายจะสวมใส่ได้ แม้แต่เจ้าของคนก่อน (อลิซ) ก็ไม่มีข้อมูลมากไปกว่านั้น ผู้สังเกตการณ์คนใดคนหนึ่ง เมื่อลงนามในธุรกรรมของเขา Bob จะระบุเอาต์พุตต่างประเทศด้วยจำนวนเดียวกันกับของเขา เอาท์พุทผสมทั้งหมดโดยไม่ต้องมีส่วนร่วมของผู้ใช้รายอื่น บ๊อบเอง (เช่นเดียวกับ ใครก็ตาม) ไม่ทราบว่าได้ใช้การชำระเงินเหล่านี้ไปแล้วหรือไม่: สามารถใช้เอาต์พุตได้ ลายเซ็นหลายพันลายเซ็นถือเป็นปัจจัยแห่งความคลุมเครือและไม่เคยตกเป็นเป้าหมายของการซ่อนตัว ดับเบิ้ล การตรวจสอบการใช้จ่ายเกิดขึ้นในเฟส LNK เมื่อตรวจสอบกับชุดอิมเมจหลักที่ใช้ บ๊อบสามารถเลือกระดับความคลุมเครือได้ด้วยตัวเอง: n = 1 หมายความว่าความน่าจะเป็นที่เขามี ใช้เอาท์พุตคือความน่าจะเป็น 50%, n = 99 ให้ 1% ขนาดของลายเซ็นผลลัพธ์จะเพิ่มขึ้น เชิงเส้นตรงเท่ากับ O(n+1) ดังนั้นการปรับปรุงการไม่เปิดเผยตัวตนจะมีค่าใช้จ่ายค่าธรรมเนียมการทำธุรกรรมเพิ่มเติมของ Bob เขายังสามารถ ตั้งค่า n = 0 และทำให้ลายเซ็นวงแหวนของเขาประกอบด้วยองค์ประกอบเดียวเท่านั้น อย่างไรก็ตาม สิ่งนี้จะเกิดขึ้นทันที เผยให้เห็นว่าเขาเป็นคนใช้จ่าย 10 20 สิ่งนี้น่าสนใจ ก่อนหน้านี้ เราได้จัดเตรียมช่องทางให้ผู้รับ Bob เพื่อทำการ INCOMING ทั้งหมด ธุรกรรมที่ไม่สามารถยกเลิกการเชื่อมโยงได้โดยการเลือกครึ่งหนึ่งของคีย์ส่วนตัวของเขาตามที่กำหนดหรือโดย เผยแพร่คีย์ส่วนตัวของเขาครึ่งหนึ่งเป็นสาธารณะ นี่เป็นนโยบายประเภทที่ไม่มีการย้อนกลับ ที่นี่เราเห็น วิธีการของผู้ส่ง Alex ในการเลือกธุรกรรมขาออกรายการเดียวที่สามารถเชื่อมโยงได้ แต่ในความเป็นจริงแล้ว เผยอเล็กซ์เป็นผู้ส่งทั้งเครือข่าย นี่ไม่ใช่นโยบายประเภทที่ไม่มีการย้อนกลับ นี่คือธุรกรรมต่อธุรกรรม มีนโยบายที่สามหรือไม่? Bob ผู้รับสามารถสร้างรหัสการชำระเงินเฉพาะสำหรับ Alex ได้หรือไม่ ไม่เคยเปลี่ยนแปลง บางทีอาจใช้การแลกเปลี่ยน Diffie-Hellman? หากใครรวมการชำระเงินนั้นไว้ด้วย รหัสที่รวมไว้ที่ไหนสักแห่งในการทำธุรกรรมของเธอไปยังที่อยู่ของ Bob นั้นต้องมาจากอเล็กซ์ ด้วยวิธีนี้ อเล็กซ์ไม่จำเป็นต้องเปิดเผยตัวเองต่อทั้งเครือข่ายโดยเลือกที่จะเชื่อมโยงเครือข่ายใดเครือข่ายหนึ่งโดยเฉพาะ ทำธุรกรรม แต่เธอยังคงสามารถระบุตัวเองกับบุคคลที่เธอส่งเงินให้ได้ นี่ไม่ใช่สิ่งที่ Poloniex ทำใช่ไหม
การทำธุรกรรม อินพุต TX เอาท์พุต0 . . . เอาท์พุต . . . เอาท์พุต รูปภาพที่สำคัญ ลายเซ็น ลายเซ็นต์แหวน กุญแจปลายทาง เอาท์พุต1 กุญแจปลายทาง เอาท์พุต ธุรกรรมต่างประเทศ เอาต์พุตของผู้ส่ง กุญแจปลายทาง คู่กุญแจแบบครั้งเดียว ครั้งเดียว รหัสส่วนตัว ผม = xHp(P) พี,เอ็กซ์ รูปที่ 7 การสร้างลายเซ็น Ring ในธุรกรรมมาตรฐาน 5 หลักฐานการทำงานที่เท่าเทียมกัน ในส่วนนี้เราขอเสนอและวางอัลกอริทึม proof-of-work ใหม่ เป้าหมายหลักของเรา คือการปิดช่องว่างระหว่าง CPU (ส่วนใหญ่) และ GPU/FPGA/ASIC (ชนกลุ่มน้อย) ผู้ขุด มันคือ เหมาะสมที่ผู้ใช้บางคนสามารถมีข้อได้เปรียบเหนือผู้อื่นได้ แต่การลงทุนของพวกเขา ควรจะเติบโตอย่างน้อยเป็นเส้นตรงตามกำลัง โดยทั่วไปแล้ว การผลิตอุปกรณ์ที่มีวัตถุประสงค์พิเศษ จะต้องมีกำไรน้อยที่สุด 5.1 ผลงานที่เกี่ยวข้อง โปรโตคอล Bitcoin proof-of-work ดั้งเดิมใช้ฟังก์ชันการกำหนดราคาที่เน้น CPU SHA-256 โดยส่วนใหญ่ประกอบด้วยตัวดำเนินการเชิงตรรกะขั้นพื้นฐานและอาศัยความเร็วในการคำนวณเท่านั้น โปรเซสเซอร์จึงเหมาะอย่างยิ่งสำหรับการใช้งานแบบมัลติคอร์/สายพานลำเลียง อย่างไรก็ตาม คอมพิวเตอร์สมัยใหม่ไม่ได้ถูกจำกัดด้วยจำนวนการทำงานต่อวินาทีเพียงอย่างเดียว แต่ยังตามขนาดหน่วยความจำด้วย แม้ว่าโปรเซสเซอร์บางตัวอาจเร็วกว่าตัวประมวลผลอื่นอย่างมาก [8] ขนาดหน่วยความจำมีโอกาสน้อยที่จะแตกต่างกันระหว่างเครื่อง ฟังก์ชันราคาที่ผูกกับหน่วยความจำถูกนำมาใช้ครั้งแรกโดย Abadi และคณะ และถูกกำหนดให้เป็น “ฟังก์ชันที่เวลาในการคำนวณถูกครอบงำโดยเวลาที่ใช้ในการเข้าถึงหน่วยความจำ” [15] แนวคิดหลักคือการสร้างอัลกอริทึมที่จัดสรรบล็อกข้อมูลขนาดใหญ่ (“scratchpad”) ภายในหน่วยความจำที่สามารถเข้าถึงได้ค่อนข้างช้า (เช่น RAM) และ "การเข้าถึงไฟล์ ลำดับตำแหน่งที่คาดเดาไม่ได้” ภายในนั้น บล็อกควรมีขนาดใหญ่พอที่จะเก็บรักษาได้ ข้อมูลที่ได้เปรียบมากกว่าการคำนวณใหม่สำหรับการเข้าถึงแต่ละครั้ง อัลกอริทึมก็ควรเช่นกัน ป้องกันการขนานภายใน ดังนั้นเธรดพร้อมกัน N ควรต้องใช้หน่วยความจำเพิ่มขึ้น N เท่า ในครั้งเดียว Dwork และคณะ [22] ตรวจสอบและทำให้แนวทางนี้เป็นทางการ ซึ่งทำให้พวกเขาเสนอแนะแนวทางอื่น ตัวแปรของฟังก์ชันการกำหนดราคา: "Mbound" อีกหนึ่งงานเป็นของ F. Coelho [20] ใคร 11 การทำธุรกรรม อินพุต TX เอาท์พุต0 . . . เอาท์พุต . . . เอาท์พุต รูปภาพที่สำคัญ ลายเซ็น ลายเซ็นต์แหวน กุญแจปลายทาง เอาท์พุต1 กุญแจปลายทาง เอาท์พุต ธุรกรรมต่างประเทศ เอาต์พุตของผู้ส่ง กุญแจปลายทาง คู่กุญแจแบบครั้งเดียว ครั้งเดียว รหัสส่วนตัว ผม = xHp(P) พี,เอ็กซ์ รูปที่ 7 การสร้างลายเซ็น Ring ในธุรกรรมมาตรฐาน 5 หลักฐานการทำงานที่เท่าเทียมกัน ในส่วนนี้เราขอเสนอและวางอัลกอริทึม proof-of-work ใหม่ เป้าหมายหลักของเรา คือการปิดช่องว่างระหว่าง CPU (ส่วนใหญ่) และ GPU/FPGA/ASIC (ชนกลุ่มน้อย) ผู้ขุด มันคือ เหมาะสมที่ผู้ใช้บางคนสามารถมีข้อได้เปรียบเหนือผู้อื่นได้ แต่การลงทุนของพวกเขา ควรจะเติบโตอย่างน้อยเป็นเส้นตรงตามกำลัง โดยทั่วไปแล้ว การผลิตอุปกรณ์ที่มีวัตถุประสงค์พิเศษ จะต้องมีกำไรน้อยที่สุด 5.1 ผลงานที่เกี่ยวข้อง โปรโตคอล Bitcoin proof-of-work ดั้งเดิมใช้ฟังก์ชันการกำหนดราคาที่เน้น CPU SHA-256 โดยส่วนใหญ่ประกอบด้วยตัวดำเนินการเชิงตรรกะขั้นพื้นฐานและอาศัยความเร็วในการคำนวณเท่านั้น โปรเซสเซอร์จึงเหมาะอย่างยิ่งสำหรับการใช้งานแบบมัลติคอร์/สายพานลำเลียง อย่างไรก็ตาม คอมพิวเตอร์สมัยใหม่ไม่ได้ถูกจำกัดด้วยจำนวนการทำงานต่อวินาทีเพียงอย่างเดียว แต่ยังตามขนาดหน่วยความจำด้วย แม้ว่าโปรเซสเซอร์บางตัวอาจเร็วกว่าโปรเซสเซอร์ตัวอื่นอย่างมาก [8] ขนาดหน่วยความจำมีโอกาสน้อยที่จะแตกต่างกันระหว่างเครื่อง ฟังก์ชันราคาที่ผูกกับหน่วยความจำถูกนำมาใช้ครั้งแรกโดย Abadi และคณะ และถูกกำหนดให้เป็น “ฟังก์ชันที่เวลาในการคำนวณถูกครอบงำโดยเวลาที่ใช้ในการเข้าถึงหน่วยความจำ” [15] แนวคิดหลักคือการสร้างอัลกอริทึมที่จัดสรรบล็อกข้อมูลขนาดใหญ่ (“scratchpad”) ภายในหน่วยความจำที่สามารถเข้าถึงได้ค่อนข้างช้า (เช่น RAM) และ "การเข้าถึงไฟล์ ลำดับตำแหน่งที่คาดเดาไม่ได้” ภายในนั้น บล็อกควรมีขนาดใหญ่พอที่จะเก็บรักษาได้ ข้อมูลที่ได้เปรียบมากกว่าการคำนวณใหม่สำหรับการเข้าถึงแต่ละครั้ง อัลกอริทึมก็ควรเช่นกัน ป้องกันการขนานภายใน ดังนั้นเธรดพร้อมกัน N ควรต้องใช้หน่วยความจำเพิ่มขึ้น N เท่า ในครั้งเดียว Dwork และคณะ [22] ตรวจสอบและทำให้แนวทางนี้เป็นทางการ ทำให้พวกเขาเสนอแนะแนวทางอื่น ตัวแปรของฟังก์ชันการกำหนดราคา: "Mbound" อีกหนึ่งงานเป็นของ F. Coelho [20] ใคร 11 21 เห็นได้ชัดว่านี่คือ UTXO's ของเรา: จำนวนและคีย์ปลายทาง หาก Alex เป็นคนสร้างธุรกรรมมาตรฐานนี้และส่งไปให้ Bob แสดงว่า Alex ก็มีคีย์ส่วนตัวเช่นกัน ในแต่ละสิ่งเหล่านี้ ฉันชอบไดอะแกรมนี้มาก เพราะมันตอบคำถามก่อนหน้านี้บางข้อ อินพุต Txn ประกอบด้วย ของชุดเอาต์พุต Txn และ keรูปภาพของคุณ จากนั้นจะมีการลงนามด้วยลายเซ็นแหวนรวมทั้งทั้งหมด ของคีย์ส่วนตัวที่ Alex เป็นเจ้าของธุรกรรมต่างประเทศทั้งหมดที่รวมอยู่ในข้อตกลง ที่ เอาต์พุต Txn ประกอบด้วยจำนวนเงินและคีย์ปลายทาง ผู้รับรายการอาจ หากต้องการ ให้สร้างคีย์ส่วนตัวแบบครั้งเดียวตามที่อธิบายไว้ก่อนหน้าในรายงานเพื่อใช้จ่าย เงิน คงจะน่ายินดีที่ได้ทราบว่าสิ่งนี้ตรงกับโค้ดจริงมากน้อยเพียงใด... ไม่ Nic van Saberhagen อธิบายคุณสมบัติบางอย่างของอัลกอริธึมการพิสูจน์การทำงานอย่างหลวมๆ โดยไม่ได้อธิบายอัลกอริทึมนั้นจริงๆ อัลกอริธึม CryptoNight นั้นจำเป็นต้องมีการวิเคราะห์เชิงลึก เมื่อฉันอ่านสิ่งนี้ฉันก็พูดติดอ่าง การลงทุนควรเติบโตอย่างน้อยเชิงเส้นตามกำลังหรือควร การลงทุนเติบโต สูงสุด เป็นเส้นตรงด้วยพลังใช่ไหม? แล้วฉันก็ตระหนักได้ว่า ฉันในฐานะคนขุดแร่หรือนักลงทุน มักจะคิดว่า "ฉันจะได้รับพลังงานได้มากเพียงใด เพื่อการลงทุน?” ไม่ใช่ "ต้องลงทุนเท่าไหร่ถึงจะได้พลังงานที่แน่นอน" แน่นอน แสดงว่าการลงทุนโดย I และกำลังโดย P ถ้า I(P) คือการลงทุนในรูปของกำลัง และ P(I) คือกำลังที่เป็นหน้าที่ของการลงทุน พวกมันจะผกผันกัน (ไม่ว่าจะอยู่ที่ใดก็ตาม ผกผันสามารถมีได้) และถ้า I(P) เร็วกว่าเชิงเส้น มากกว่า P(I) ก็จะช้ากว่าเชิงเส้น ดังนั้น จะมีอัตราผลตอบแทนลดลงสำหรับผู้ลงทุน กล่าวคือสิ่งที่ผู้เขียนพูดในที่นี้ก็คือ "แน่นอน เมื่อคุณลงทุนมากขึ้น คุณก็จะได้รับมากขึ้น" อำนาจ แต่เราควรพยายามทำให้อัตราผลตอบแทนลดลง" การลงทุนของ CPU จะจำกัดขอบเขตย่อยเชิงเส้นในที่สุด คำถามก็คือว่าผู้เขียน ได้ออกแบบอัลกอริธึม POW ที่จะบังคับให้ ASIC ทำเช่นนี้ด้วย "สกุลเงินในอนาคต" สมมุติควรขุดด้วยทรัพยากรที่ช้าที่สุด/จำกัดที่สุดเสมอหรือไม่ บทความโดย Abadi และคณะ (ซึ่งมีวิศวกรของ Google และ Microsoft บางคนเป็นผู้เขียน) คือ โดยพื้นฐานแล้วโดยใช้ความจริงที่ว่าขนาดหน่วยความจำ ในช่วงไม่กี่ปีที่ผ่านมา มีขนาดเล็กลงมาก ความแปรปรวนในเครื่องต่างๆ มากกว่าความเร็วของโปรเซสเซอร์ และมีอัตราส่วนการลงทุนต่อกำลังที่มากกว่าเชิงเส้น อีกไม่กี่ปีอาจต้องประเมินใหม่! ทุกอย่างคือการแข่งขันทางอาวุธ... การสร้างฟังก์ชัน hash เป็นเรื่องยาก การสร้างฟังก์ชัน hash ที่เป็นไปตามข้อจำกัดเหล่านี้ดูเหมือนจะยากกว่า บทความนี้ดูเหมือนจะไม่มีคำอธิบายเกี่ยวกับความเป็นจริง hashing อัลกอริทึม CryptoNight ฉันคิดว่ามันเป็นการใช้งาน SHA-3 ที่ต้องใช้หน่วยความจำอย่างหนัก ในโพสต์ในฟอรัม แต่ฉันไม่รู้... และนั่นคือประเด็น มันจะต้องอธิบาย
เสนอวิธีแก้ปัญหาที่มีประสิทธิภาพสูงสุด: “ฮอกไกโด” สำหรับความรู้ของเรา งานล่าสุดที่มีพื้นฐานอยู่บนแนวคิดของการค้นหาแบบสุ่มหลอกในอาเรย์ขนาดใหญ่คือ อัลกอริธึมที่เรียกว่า “scrypt” โดย C. Percival [32] ต่างจากฟังก์ชั่นก่อนหน้านี้ที่เน้นไปที่ แหล่งที่มาของคีย์ และไม่ใช่ระบบ proof-of-work แม้ว่าข้อเท็จจริงนี้ scrypt สามารถตอบสนองวัตถุประสงค์ของเราได้: มันทำงานได้ดีเป็นฟังก์ชันการกำหนดราคาในปัญหาการแปลง hash บางส่วน เช่น SHA-256 ใน Bitcoin. ถึงตอนนี้ scrypt ได้ถูกนำไปใช้ใน Litecoin [14] และ Bitcoin forks อื่นๆ แล้ว อย่างไรก็ตาม การใช้งานนั้นไม่ได้ผูกกับหน่วยความจำจริงๆ: อัตราส่วน "เวลาในการเข้าถึงหน่วยความจำ/โดยรวม time” ไม่เพียงพอ เนื่องจากแต่ละอินสแตนซ์ใช้พื้นที่เพียง 128 KB สิ่งนี้อนุญาตให้นักขุด GPU ให้มีประสิทธิภาพมากขึ้นประมาณ 10 เท่า และยังคงทิ้งความเป็นไปได้ในการสร้างสรรค์ไว้ค่อนข้างมาก อุปกรณ์ขุดเหมืองราคาถูกแต่มีประสิทธิภาพสูง นอกจากนี้ โครงสร้างการเข้ารหัสยังช่วยให้สามารถแลกเปลี่ยนขนาดหน่วยความจำเป็นเส้นตรงและ ความเร็วของ CPU เนื่องจากทุกบล็อกใน scratchpad นั้นได้มาจากบล็อกก่อนหน้าเท่านั้น ตัวอย่างเช่น คุณสามารถจัดเก็บบล็อกทุก ๆ วินาทีและคำนวณบล็อกอื่น ๆ ในลักษณะขี้เกียจได้ เช่น เท่านั้น เมื่อจำเป็น ดัชนีสุ่มหลอกจะถือว่ามีการกระจายอย่างสม่ำเสมอ ดังนั้นค่าที่คาดหวังของการคำนวณใหม่ของบล็อกเพิ่มเติมคือ 1 \(2 \cdot N\) โดยที่ N คือตัวเลข ของการวนซ้ำ เวลาคำนวณโดยรวมเพิ่มขึ้นน้อยกว่าครึ่งเพราะยังมี การดำเนินการที่ไม่ขึ้นอยู่กับเวลา (เวลาคงที่) เช่น การเตรียมแผ่นรอยขีดข่วนและ hashing on การวนซ้ำทุกครั้ง ประหยัด 2/3 ของต้นทุนหน่วยความจำ 1 3 \(\cdot\) ยังไม่มี + 1 3 \(\cdot\) \(2 \cdot N\) = N การคำนวณใหม่เพิ่มเติม ผล 9/10 เข้า 1 10 \(\cdot\) ยังไม่มี + . . . +1 10 \(\cdot\) 9 \(\cdot\) ยังไม่มีข้อความ = 4.5N. มันง่ายที่จะแสดงให้เห็นว่าการจัดเก็บเพียง 1 ของบล็อกทั้งหมด เพิ่มเวลาน้อยกว่าปัจจัยของ s−1 2. นี่หมายถึงเครื่องที่มี CPU เร็วกว่าชิปสมัยใหม่ถึง 200 เท่า สามารถจัดเก็บ scratchpad ได้เพียง 320 ไบต์ 5.2 อัลกอริธึมที่นำเสนอ เราขอเสนออัลกอริธึมที่ผูกกับหน่วยความจำใหม่สำหรับฟังก์ชันการกำหนดราคา proof-of-work มันขึ้นอยู่กับ การเข้าถึงหน่วยความจำช้าแบบสุ่มและเน้นการพึ่งพาเวลาแฝง ตรงข้ามกับการเข้ารหัสทุกครั้ง บล็อกใหม่ (ความยาว 64 ไบต์) ขึ้นอยู่กับบล็อกก่อนหน้าทั้งหมด จึงเกิดเรื่องสมมุติขึ้นมา “โปรแกรมรักษาหน่วยความจำ” ควรเพิ่มความเร็วในการคำนวณแบบทวีคูณ อัลกอริทึมของเราต้องการประมาณ 2 Mb ต่ออินสแตนซ์ด้วยเหตุผลต่อไปนี้: 1. พอดีกับแคช L3 (ต่อคอร์) ของโปรเซสเซอร์สมัยใหม่ ซึ่งควรจะกลายเป็นกระแสหลัก ในอีกไม่กี่ปี; 2. หน่วยความจำภายในหนึ่งเมกะไบต์เป็นขนาดที่แทบจะยอมรับไม่ได้สำหรับไปป์ไลน์ ASIC สมัยใหม่ 3. GPU อาจเรียกใช้อินสแตนซ์หลายร้อยอินสแตนซ์พร้อมกัน แต่ถูกจำกัดด้วยวิธีอื่น: หน่วยความจำ GDDR5 ช้ากว่าแคช CPU L3 และน่าทึ่งในเรื่องแบนด์วิธด้วย ความเร็วในการเข้าถึงแบบสุ่ม 4. การขยาย Scratchpad อย่างมีนัยสำคัญจะต้องมีการวนซ้ำเพิ่มขึ้น ซึ่งใน เทิร์นหมายถึงการเพิ่มเวลาโดยรวม การโทร "หนัก" ในเครือข่าย p2p ที่ไม่น่าเชื่อถืออาจนำไปสู่ ช่องโหว่ร้ายแรง เนื่องจากโหนดจำเป็นต้องตรวจสอบ proof-of-work ของทุกบล็อกใหม่ หากโหนดใช้เวลาเป็นจำนวนมากในการประเมิน hash แต่ละครั้ง ก็สามารถดำเนินการได้อย่างง่ายดาย DDoSed โดยวัตถุปลอมมากมายพร้อมข้อมูลงานที่กำหนดเอง (ค่า nonce) 12 เสนอวิธีแก้ปัญหาที่มีประสิทธิภาพสูงสุด: “ฮอกไกโด” สำหรับความรู้ของเรา งานล่าสุดที่มีพื้นฐานอยู่บนแนวคิดของการค้นหาแบบสุ่มหลอกในอาเรย์ขนาดใหญ่คือ อัลกอริธึมที่เรียกว่า “scrypt” โดย C. Percival [32] ต่างจากฟังก์ชั่นก่อนหน้านี้ที่เน้นไปที่ แหล่งที่มาของคีย์ และไม่ใช่ระบบ proof-of-work แม้ว่าข้อเท็จจริงนี้ scrypt สามารถตอบสนองวัตถุประสงค์ของเราได้: มันทำงานได้ดีเป็นฟังก์ชันการกำหนดราคาในปัญหาการแปลง hash บางส่วน เช่น SHA-256 ใน Bitcoin. ถึงตอนนี้ scrypt ได้ถูกนำไปใช้ใน Litecoin [14] และ Bitcoin forks อื่นๆ แล้ว อย่างไรก็ตาม การใช้งานนั้นไม่ได้ผูกกับหน่วยความจำจริงๆ: อัตราส่วน "เวลาในการเข้าถึงหน่วยความจำ / โดยรวม time” ไม่เพียงพอ เนื่องจากแต่ละอินสแตนซ์ใช้พื้นที่เพียง 128 KB สิ่งนี้อนุญาตให้นักขุด GPU ให้มีประสิทธิภาพมากขึ้นประมาณ 10 เท่า และยังคงทิ้งความเป็นไปได้ในการสร้างสรรค์ไว้ค่อนข้างมาก อุปกรณ์ขุดเหมืองราคาถูกแต่มีประสิทธิภาพสูง นอกจากนี้ โครงสร้างการเข้ารหัสยังช่วยให้สามารถแลกเปลี่ยนขนาดหน่วยความจำเป็นเส้นตรงและ ความเร็วของ CPU เนื่องจากทุกบล็อกใน scratchpad นั้นได้มาจากบล็อกก่อนหน้าเท่านั้น ตัวอย่างเช่น คุณสามารถจัดเก็บบล็อกทุก ๆ วินาทีและคำนวณบล็อกอื่น ๆ ในลักษณะขี้เกียจได้ เช่น เท่านั้น เมื่อจำเป็น ดัชนีสุ่มหลอกจะถือว่ามีการกระจายอย่างสม่ำเสมอ ดังนั้นค่าที่คาดหวังของการคำนวณใหม่ของบล็อกเพิ่มเติมคือ 1 \(2 \cdot N\) โดยที่N คือตัวเลข ของการวนซ้ำ เวลาคำนวณโดยรวมเพิ่มขึ้นน้อยกว่าครึ่งเพราะยังมี การดำเนินการที่ไม่ขึ้นอยู่กับเวลา (เวลาคงที่) เช่น การเตรียมแผ่นรอยขีดข่วนและ hashing on การวนซ้ำทุกครั้ง ประหยัด 2/3 ของต้นทุนหน่วยความจำ 1 3 \(\cdot\) ยังไม่มี + 1 3 \(\cdot\) \(2 \cdot N\) = N การคำนวณใหม่เพิ่มเติม ผล 9/10 เข้า 1 10 \(\cdot\) ยังไม่มี + . . . +1 10 \(\cdot\) 9 \(\cdot\) ยังไม่มีข้อความ = 4.5N. มันง่ายที่จะแสดงให้เห็นว่าการจัดเก็บเพียง 1 ของบล็อกทั้งหมด เพิ่มเวลาน้อยกว่าปัจจัยของ s−1 2. นี่หมายถึงเครื่องที่มี CPU เร็วกว่าชิปสมัยใหม่ถึง 200 เท่า สามารถจัดเก็บ scratchpad ได้เพียง 320 ไบต์ 5.2 อัลกอริธึมที่นำเสนอ เราขอเสนออัลกอริธึมที่ผูกกับหน่วยความจำใหม่สำหรับฟังก์ชันการกำหนดราคา proof-of-work มันขึ้นอยู่กับ การเข้าถึงหน่วยความจำช้าแบบสุ่มและเน้นการพึ่งพาเวลาแฝง ตรงข้ามกับการเข้ารหัสทุกครั้ง บล็อกใหม่ (ความยาว 64 ไบต์) ขึ้นอยู่กับบล็อกก่อนหน้าทั้งหมด จึงเกิดเรื่องสมมุติขึ้นมา “โปรแกรมรักษาหน่วยความจำ” ควรเพิ่มความเร็วในการคำนวณแบบทวีคูณ อัลกอริทึมของเราต้องการประมาณ 2 Mb ต่ออินสแตนซ์ด้วยเหตุผลต่อไปนี้: 1. พอดีกับแคช L3 (ต่อคอร์) ของโปรเซสเซอร์สมัยใหม่ ซึ่งควรจะกลายเป็นกระแสหลัก ในอีกไม่กี่ปี; 2. หน่วยความจำภายในหนึ่งเมกะไบต์เป็นขนาดที่แทบจะยอมรับไม่ได้สำหรับไปป์ไลน์ ASIC สมัยใหม่ 3. GPU อาจเรียกใช้อินสแตนซ์หลายร้อยอินสแตนซ์พร้อมกัน แต่ถูกจำกัดด้วยวิธีอื่น: หน่วยความจำ GDDR5 ช้ากว่าแคช CPU L3 และน่าทึ่งในเรื่องแบนด์วิธด้วย ความเร็วในการเข้าถึงแบบสุ่ม 4. การขยาย Scratchpad อย่างมีนัยสำคัญจะต้องมีการวนซ้ำเพิ่มขึ้น ซึ่งใน เทิร์นหมายถึงการเพิ่มเวลาโดยรวม การโทร "หนัก" ในเครือข่าย p2p ที่ไม่น่าเชื่อถืออาจนำไปสู่ ช่องโหว่ร้ายแรง เนื่องจากโหนดจำเป็นต้องตรวจสอบ proof-of-work ของทุกบล็อกใหม่ หากโหนดใช้เวลาเป็นจำนวนมากในการประเมิน hash แต่ละครั้ง ก็สามารถดำเนินการได้อย่างง่ายดาย DDoSed โดยวัตถุปลอมมากมายพร้อมข้อมูลงานที่กำหนดเอง (ค่า nonce) 12 22 ไม่เป็นไร มันเป็นเหรียญเข้ารหัสเหรอ? อัลกอริธึมอยู่ที่ไหน? ทั้งหมดที่ฉันเห็นคือโฆษณา นี่คือจุดที่ Cryptonote หากอัลกอริธึม PoW ของพวกเขาคุ้มค่า ก็จะโดดเด่นขึ้นมาจริงๆ มันไม่ใช่ จริงๆ SHA-256 มันไม่ใช่การเข้ารหัสจริงๆ เป็นสิ่งใหม่ หน่วยความจำที่ถูกผูกไว้ และไม่เรียกซ้ำ
6 ข้อดีเพิ่มเติม 6.1 การปล่อยก๊าซเรือนกระจกที่ราบรื่น ขอบเขตบนสำหรับจำนวนเหรียญดิจิทัล CryptoNote ทั้งหมดคือ: MSupply = 264 −1 หน่วยอะตอม นี่เป็นข้อจำกัดตามธรรมชาติที่ขึ้นอยู่กับขีดจำกัดในการดำเนินการเท่านั้น ไม่ใช่จากสัญชาตญาณ เช่น “เหรียญ N น่าจะเพียงพอสำหรับทุกคน” เพื่อให้มั่นใจถึงความราบรื่นของกระบวนการปล่อยก๊าซเรือนกระจก เราใช้สูตรต่อไปนี้สำหรับบล็อก รางวัล: รางวัลฐาน = (MSupply -A) ≫18, โดยที่ A คือจำนวนเหรียญที่สร้างขึ้นก่อนหน้านี้ 6.2 พารามิเตอร์ที่ปรับได้ 6.2.1 ความยากลำบาก CryptoNote มีอัลกอริธึมการกำหนดเป้าหมายซึ่งเปลี่ยนความยากของทุกบล็อก นี้ ลดเวลาตอบสนองของระบบเมื่อเครือข่าย hashrate มีการเติบโตหรือลดลงอย่างมาก รักษาอัตราการบล็อกให้คงที่ เมธอด Bitcoin ดั้งเดิมจะคำนวณความสัมพันธ์ของค่าจริง และช่วงเวลาเป้าหมายระหว่างบล็อกปี 2559 ล่าสุด และใช้เป็นตัวคูณสำหรับปัจจุบัน ความยากลำบาก แน่นอนว่าสิ่งนี้ไม่เหมาะสำหรับการคำนวณใหม่อย่างรวดเร็ว (เนื่องจากมีความเฉื่อยมาก) และ ส่งผลให้เกิดความสั่นสะเทือน แนวคิดทั่วไปเบื้องหลังอัลกอริธึมของเราคือการรวมงานทั้งหมดที่โหนดและทำเสร็จแล้ว แบ่งตามเวลาที่พวกเขาใช้ไป การวัดงานคือค่าความยากที่สอดคล้องกัน ในแต่ละบล็อก แต่เนื่องจากการประทับเวลาที่ไม่ถูกต้องและไม่น่าเชื่อถือ เราจึงไม่สามารถระบุเวลาที่แน่ชัดได้ ช่วงเวลาระหว่างบล็อก ผู้ใช้สามารถเปลี่ยนการประทับเวลาของเขาไปสู่อนาคตและครั้งต่อไปได้ ช่วงเวลาอาจจะน้อยหรือเป็นลบอย่างไม่น่าเชื่อ คงจะเกิดเหตุไม่น้อย. ประเภทนี้ เราจึงสามารถจัดเรียงการประทับเวลาและตัดค่าผิดปกติได้ (เช่น 20%) ช่วงของ ค่าที่เหลือคือเวลาที่ใช้ไป 80% ของบล็อกที่เกี่ยวข้อง 6.2.2 ขีดจำกัดขนาด ผู้ใช้ชำระค่าจัดเก็บ blockchain และจะมีสิทธิ์โหวตตามขนาดของมัน นักขุดทุกคน จัดการกับการแลกเปลี่ยนระหว่างต้นทุนและกำไรจากค่าธรรมเนียมให้สมดุลและกำหนดด้วยตนเอง “soft-limit” สำหรับการสร้างบล็อก กฎหลักสำหรับขนาดบล็อกสูงสุดก็จำเป็นเช่นกัน ป้องกันไม่ให้ blockchain ถูกน้ำท่วมด้วยธุรกรรมปลอม อย่างไรก็ตาม ค่านี้ควร ไม่ต้องฮาร์ดโค้ด ให้ MN เป็นค่ามัธยฐานของขนาดบล็อก N สุดท้าย จากนั้นจึงกำหนด "ขีดจำกัดยาก" สำหรับขนาด ของการรับบล็อกคือ \(2 \cdot M_N\) มันป้องกันไม่ให้ blockchain ท้องอืด แต่ยังคงอนุญาตให้มีขีดจำกัด ค่อยๆ เติบโตตามเวลาหากจำเป็น ขนาดของธุรกรรมไม่จำเป็นต้องถูกจำกัดอย่างชัดเจน ล้อมรอบด้วยขนาดของบล็อก และถ้าใครต้องการสร้างธุรกรรมขนาดใหญ่ที่มีอินพุต/เอาท์พุตหลายร้อยรายการ (หรือด้วย ระดับความคลุมเครือในลายเซ็นแหวนสูง) เขาสามารถทำได้โดยการจ่ายค่าธรรมเนียมเพียงพอ 6.2.3 โทษขนาดเกิน นักขุดยังคงมีความสามารถในการสร้างบล็อกที่เต็มไปด้วยธุรกรรมที่ไม่มีค่าธรรมเนียมของตัวเองจนถึงระดับสูงสุด ขนาด 2 \(\cdot\) เมกะไบต์ แม้ว่านักขุดส่วนใหญ่เท่านั้นที่สามารถเปลี่ยนค่ามัธยฐานได้ แต่ก็ยังมี 13 6 ข้อดีเพิ่มเติม 6.1 การปล่อยก๊าซเรือนกระจกที่ราบรื่น ขอบเขตบนสำหรับจำนวนเหรียญดิจิทัล CryptoNote ทั้งหมดคือ: MSupply = 264 −1 หน่วยอะตอม นี่เป็นข้อจำกัดตามธรรมชาติที่ขึ้นอยู่กับขีดจำกัดในการดำเนินการเท่านั้น ไม่ใช่จากสัญชาตญาณ เช่น “เหรียญ N น่าจะเพียงพอสำหรับทุกคน” เพื่อให้มั่นใจถึงความราบรื่นของกระบวนการปล่อยก๊าซเรือนกระจก เราใช้สูตรต่อไปนี้สำหรับบล็อก รางวัล: รางวัลฐาน = (MSupply -A) ≫18, โดยที่ A คือจำนวนเหรียญที่สร้างขึ้นก่อนหน้านี้ 6.2 พารามิเตอร์ที่ปรับได้ 6.2.1 ความยากลำบาก CryptoNote มีอัลกอริธึมการกำหนดเป้าหมายซึ่งเปลี่ยนความยากของทุกบล็อก นี้ ลดเวลาตอบสนองของระบบเมื่อเครือข่าย hashrate มีการเติบโตหรือลดลงอย่างมาก รักษาอัตราการบล็อกให้คงที่ เมธอด Bitcoin ดั้งเดิมจะคำนวณความสัมพันธ์ของค่าจริง และช่วงเวลาเป้าหมายระหว่างบล็อกปี 2559 ล่าสุด และใช้เป็นตัวคูณสำหรับปัจจุบัน ความยากลำบาก แน่นอนว่าสิ่งนี้ไม่เหมาะสำหรับการคำนวณใหม่อย่างรวดเร็ว (เนื่องจากมีความเฉื่อยมาก) และ ส่งผลให้เกิดความสั่นสะเทือน แนวคิดทั่วไปเบื้องหลังอัลกอริธึมของเราคือการรวมงานทั้งหมดที่โหนดและทำเสร็จแล้ว แบ่งตามเวลาที่พวกเขาใช้ไป การวัดงานคือค่าความยากที่สอดคล้องกัน ในแต่ละบล็อก แต่เนื่องจากการประทับเวลาที่ไม่ถูกต้องและไม่น่าเชื่อถือ เราจึงไม่สามารถระบุเวลาที่แน่ชัดได้ ช่วงเวลาระหว่างบล็อก ผู้ใช้สามารถเปลี่ยนการประทับเวลาของเขาไปสู่อนาคตและครั้งต่อไปได้ ช่วงเวลาอาจจะน้อยหรือเป็นลบอย่างไม่น่าเชื่อ คงจะเกิดเหตุไม่น้อย. ประเภทนี้ เราจึงสามารถจัดเรียงการประทับเวลาและตัดค่าผิดปกติได้ (เช่น 20%) ช่วงของ ค่าที่เหลือคือเวลาที่ใช้ไป 80% ของบล็อกที่เกี่ยวข้อง 6.2.2 ขีดจำกัดขนาด ผู้ใช้ชำระค่าจัดเก็บ blockchain และจะมีสิทธิ์โหวตตามขนาดของมัน นักขุดทุกคน เกี่ยวข้องกับการแลกเปลี่ยนระหว่างความสมดุลe ต้นทุนและกำไรจากค่าธรรมเนียมและกำหนดของเขาเอง “soft-limit” สำหรับการสร้างบล็อก กฎหลักสำหรับขนาดบล็อกสูงสุดก็จำเป็นเช่นกัน ป้องกันไม่ให้ blockchain ถูกน้ำท่วมด้วยธุรกรรมปลอม อย่างไรก็ตาม ค่านี้ควร ไม่ต้องฮาร์ดโค้ด ให้ MN เป็นค่ามัธยฐานของขนาดบล็อก N สุดท้าย จากนั้นจึงกำหนด "ขีดจำกัดยาก" สำหรับขนาด ของการรับบล็อกคือ \(2 \cdot M_N\) มันป้องกันไม่ให้ blockchain ท้องอืด แต่ยังคงอนุญาตให้มีขีดจำกัด ค่อยๆ เติบโตตามเวลาหากจำเป็น ขนาดของธุรกรรมไม่จำเป็นต้องถูกจำกัดอย่างชัดเจน ล้อมรอบด้วยขนาดของบล็อก และถ้าใครต้องการสร้างธุรกรรมขนาดใหญ่ที่มีอินพุต/เอาท์พุตหลายร้อยรายการ (หรือด้วย ระดับความคลุมเครือในลายเซ็นแหวนสูง) เขาสามารถทำได้โดยการจ่ายค่าธรรมเนียมเพียงพอ 6.2.3 โทษขนาดเกิน นักขุดยังคงมีความสามารถในการสร้างบล็อกที่เต็มไปด้วยธุรกรรมที่ไม่มีค่าธรรมเนียมของตัวเองจนถึงระดับสูงสุด ขนาด 2 \(\cdot\) เมกะไบต์ แม้ว่านักขุดส่วนใหญ่เท่านั้นที่สามารถเปลี่ยนค่ามัธยฐานได้ แต่ก็ยังมี 13 23 หน่วยอะตอม ฉันชอบแบบนั้น นี่เทียบเท่ากับ Satoshis หรือไม่? หากเป็นเช่นนั้น นั่นหมายความว่าจะมี cryptonote อยู่ที่ 185 พันล้าน ฉันรู้ว่าในที่สุดแล้วสิ่งนี้จะต้องได้รับการปรับแต่งในไม่กี่หน้า หรืออาจมีการพิมพ์ผิด หากรางวัลพื้นฐานคือ "เหรียญที่เหลือทั้งหมด" มีเพียงบล็อกเดียวเท่านั้นที่จะสามารถรับเหรียญทั้งหมดได้ อินสตามีน. ในทางกลับกัน หากนี่ควรจะเป็นสัดส่วนไม่ทางใดก็ทางหนึ่ง ความแตกต่างในเวลาระหว่างปัจจุบันและวันที่สิ้นสุดการผลิตเหรียญบางรายการ? นั่นก็จะ สมเหตุสมผล นอกจากนี้ ในโลกของฉัน สองสัญลักษณ์ที่ยิ่งใหญ่กว่าเช่นนี้หมายถึง "ยิ่งใหญ่กว่ามาก" ผู้เขียนทำ อาจหมายถึงอย่างอื่นใช่ไหม? หากการปรับตัวต่อความยากลำบากเกิดขึ้นทุกๆ บล็อก ผู้โจมตีก็อาจมีฟาร์มขนาดใหญ่มาก เครื่องจักรขุดและขุดตามช่วงเวลาที่เลือกอย่างระมัดระวัง สิ่งนี้อาจทำให้เกิดการระเบิดวุ่นวาย (หรือความผิดพลาดจนเหลือศูนย์) ในความยากลำบาก หากสูตรการปรับความยากลำบากไม่ได้รับการหน่วงอย่างเหมาะสม ไม่ต้องสงสัยเลยว่าวิธีการของ Bitcoin นั้นไม่เหมาะสมสำหรับการคำนวณใหม่อย่างรวดเร็ว แต่เป็นแนวคิดเรื่องความเฉื่อย ในระบบเหล่านี้จะต้องได้รับการพิสูจน์ ไม่ใช่ถูกมองข้าม นอกจากนี้การแกว่ง ในความยากลำบากของเครือข่ายไม่จำเป็นต้องเป็นปัญหา เว้นแต่จะส่งผลให้เกิดความผันผวนที่เห็นได้ชัด การจัดหาเหรียญ - และการมีปัญหาที่เปลี่ยนแปลงอย่างรวดเร็วอาจทำให้เกิด "การแก้ไขมากเกินไป" เวลาที่ใช้โดยเฉพาะในช่วงเวลาสั้นๆ เช่น ไม่กี่นาที จะเป็นสัดส่วนกับ "ผลรวม จำนวนบล็อกที่สร้างขึ้นบนเครือข่าย" ค่าคงที่ของสัดส่วนก็จะเติบโตขึ้นด้วยตัวมันเอง เมื่อเวลาผ่านไป น่าจะเป็นแบบทวีคูณหาก CN ปิดกิจการ อาจเป็นความคิดที่ดีกว่าที่จะปรับความยากเพื่อเก็บ "บล็อกทั้งหมดที่สร้างขึ้นใน เครือข่ายตั้งแต่บล็อกสุดท้ายถูกเพิ่มเข้าไปในเชนหลัก" ภายในค่าคงที่บางส่วนหรือด้วย การแปรผันที่มีขอบเขตหรืออะไรทำนองนั้น ถ้าเป็นอัลกอริธึมแบบปรับตัวที่มีการคำนวณ สามารถกำหนดได้ว่านำไปปฏิบัติได้ง่ายซึ่งดูเหมือนจะช่วยแก้ปัญหาได้ แต่ถ้าเราใช้วิธีการนั้น ผู้ที่มีฟาร์มขุดขนาดใหญ่ก็สามารถปิดฟาร์มของตนได้ สักสองสามชั่วโมงแล้วเปิดใหม่อีกครั้ง ในช่วงสองสามช่วงตึกแรก ฟาร์มนั้นจะสร้าง ธนาคาร ดังนั้น จริงๆ แล้ว วิธีการนี้จะนำมาซึ่งจุดที่น่าสนใจ: การขุดกลายเป็น (โดยเฉลี่ย) แพ้เกมโดยไม่มี ROI โดยเฉพาะอย่างยิ่งเมื่อมีผู้คนกระโดดเข้าสู่เครือข่ายมากขึ้น หากเกิดความยุ่งยากในการขุด เครือข่ายที่มีการติดตามอย่างใกล้ชิดมาก hashrate ฉันสงสัยว่าผู้คนจะขุดได้มากเท่ากับพวกเขา กำลังทำอยู่ หรือในทางกลับกัน แทนที่จะให้ฟาร์มขุดเปิดตลอด 24 ชั่วโมงทุกวัน พวกเขาอาจเปลี่ยนมัน เปิดเป็นเวลา 6 ชั่วโมง ปิดเป็นเวลา 2 เปิดเป็นเวลา 6 ชั่วโมง ปิดเป็นเวลา 2 หรืออะไรทำนองนั้น เพียงเปลี่ยนไปใช้เหรียญอื่น สองสามชั่วโมง รอให้ความยากลดลง จากนั้นค่อยกลับมาลุยต่อเพื่อรับส่วนพิเศษเหล่านั้น บล็อกความสามารถในการทำกำไรเมื่อเครือข่ายปรับตัว และคุณรู้อะไรไหม? นี่คงจะเป็นอย่างนั้นจริงๆ หนึ่งในสถานการณ์การขุดที่ดีกว่าที่ฉันคำนึงถึง... นี่อาจเป็นวงกลม แต่ถ้าเวลาในการสร้างบล็อก เฉลี่ย ประมาณหนึ่งนาที เราก็สามารถทำได้ ใช้จำนวนบล็อกเป็นพร็อกซีสำหรับ "เวลาที่ใช้ไป"
6 ข้อดีเพิ่มเติม 6.1 การปล่อยก๊าซเรือนกระจกที่ราบรื่น ขอบเขตบนสำหรับจำนวนเหรียญดิจิทัล CryptoNote ทั้งหมดคือ: MSupply = 264 −1 หน่วยอะตอม นี่เป็นข้อจำกัดตามธรรมชาติที่ขึ้นอยู่กับขีดจำกัดในการดำเนินการเท่านั้น ไม่ใช่จากสัญชาตญาณ เช่น “เหรียญ N น่าจะเพียงพอสำหรับทุกคน” เพื่อให้มั่นใจถึงความราบรื่นของกระบวนการปล่อยก๊าซเรือนกระจก เราใช้สูตรต่อไปนี้สำหรับบล็อก รางวัล: รางวัลฐาน = (MSupply -A) ≫18, โดยที่ A คือจำนวนเหรียญที่สร้างขึ้นก่อนหน้านี้ 6.2 พารามิเตอร์ที่ปรับได้ 6.2.1 ความยากลำบาก CryptoNote มีอัลกอริธึมการกำหนดเป้าหมายซึ่งเปลี่ยนความยากของทุกบล็อก นี้ ลดเวลาตอบสนองของระบบเมื่อเครือข่าย hashrate มีการเติบโตหรือลดลงอย่างมาก รักษาอัตราการบล็อกให้คงที่ เมธอด Bitcoin ดั้งเดิมจะคำนวณความสัมพันธ์ของค่าจริง และช่วงเวลาเป้าหมายระหว่างบล็อกปี 2559 ล่าสุด และใช้เป็นตัวคูณสำหรับปัจจุบัน ความยากลำบาก แน่นอนว่าสิ่งนี้ไม่เหมาะสำหรับการคำนวณใหม่อย่างรวดเร็ว (เนื่องจากมีความเฉื่อยมาก) และ ส่งผลให้เกิดความสั่นสะเทือน แนวคิดทั่วไปเบื้องหลังอัลกอริธึมของเราคือการรวมงานทั้งหมดที่โหนดและทำเสร็จแล้ว แบ่งตามเวลาที่พวกเขาใช้ไป การวัดงานคือค่าความยากที่สอดคล้องกัน ในแต่ละบล็อก แต่เนื่องจากการประทับเวลาที่ไม่ถูกต้องและไม่น่าเชื่อถือ เราจึงไม่สามารถระบุเวลาที่แน่ชัดได้ ช่วงเวลาระหว่างบล็อก ผู้ใช้สามารถเปลี่ยนการประทับเวลาของเขาไปสู่อนาคตและครั้งต่อไปได้ ช่วงเวลาอาจจะน้อยหรือเป็นลบอย่างไม่น่าเชื่อ คงจะเกิดเหตุไม่น้อย. ประเภทนี้ เราจึงสามารถจัดเรียงการประทับเวลาและตัดค่าผิดปกติได้ (เช่น 20%) ช่วงของ ค่าที่เหลือคือเวลาที่ใช้ไป 80% ของบล็อกที่เกี่ยวข้อง 6.2.2 ขีดจำกัดขนาด ผู้ใช้ชำระค่าจัดเก็บ blockchain และจะมีสิทธิ์โหวตตามขนาดของมัน นักขุดทุกคน จัดการกับการแลกเปลี่ยนระหว่างต้นทุนและกำไรจากค่าธรรมเนียมให้สมดุลและกำหนดด้วยตนเอง “soft-limit” สำหรับการสร้างบล็อก กฎหลักสำหรับขนาดบล็อกสูงสุดก็จำเป็นเช่นกัน ป้องกันไม่ให้ blockchain ถูกน้ำท่วมด้วยธุรกรรมปลอม อย่างไรก็ตาม ค่านี้ควร ไม่ต้องฮาร์ดโค้ด ให้ MN เป็นค่ามัธยฐานของขนาดบล็อก N สุดท้าย จากนั้นจึงกำหนด "ขีดจำกัดยาก" สำหรับขนาด ของการรับบล็อกคือ \(2 \cdot M_N\) มันป้องกันไม่ให้ blockchain ท้องอืด แต่ยังคงอนุญาตให้มีขีดจำกัด ค่อยๆ เติบโตตามเวลาหากจำเป็น ขนาดของธุรกรรมไม่จำเป็นต้องถูกจำกัดอย่างชัดเจน ล้อมรอบด้วยขนาดของบล็อก และถ้าใครต้องการสร้างธุรกรรมขนาดใหญ่ที่มีอินพุต/เอาท์พุตหลายร้อยรายการ (หรือด้วย ระดับความคลุมเครือในลายเซ็นแหวนสูง) เขาสามารถทำได้โดยการจ่ายค่าธรรมเนียมเพียงพอ 6.2.3 โทษขนาดเกิน นักขุดยังคงมีความสามารถในการสร้างบล็อกที่เต็มไปด้วยธุรกรรมที่ไม่มีค่าธรรมเนียมของตัวเองจนถึงระดับสูงสุด ขนาด 2 \(\cdot\) เมกะไบต์ แม้ว่านักขุดส่วนใหญ่เท่านั้นที่สามารถเปลี่ยนค่ามัธยฐานได้ แต่ก็ยังมี 13 6 ข้อดีเพิ่มเติม 6.1 การปล่อยก๊าซเรือนกระจกที่ราบรื่น ขอบเขตบนสำหรับจำนวนเหรียญดิจิทัล CryptoNote ทั้งหมดคือ: MSupply = 264 −1 หน่วยอะตอม นี่เป็นข้อจำกัดตามธรรมชาติที่ขึ้นอยู่กับขีดจำกัดในการดำเนินการเท่านั้น ไม่ใช่จากสัญชาตญาณ เช่น “เหรียญ N น่าจะเพียงพอสำหรับทุกคน” เพื่อให้มั่นใจถึงความราบรื่นของกระบวนการปล่อยก๊าซเรือนกระจก เราใช้สูตรต่อไปนี้สำหรับบล็อก รางวัล: รางวัลฐาน = (MSupply -A) ≫18, โดยที่ A คือจำนวนเหรียญที่สร้างขึ้นก่อนหน้านี้ 6.2 พารามิเตอร์ที่ปรับได้ 6.2.1 ความยากลำบาก CryptoNote มีอัลกอริธึมการกำหนดเป้าหมายซึ่งเปลี่ยนความยากของทุกบล็อก นี้ ลดเวลาตอบสนองของระบบเมื่อเครือข่าย hashrate มีการเติบโตหรือลดลงอย่างมาก รักษาอัตราการบล็อกให้คงที่ เมธอด Bitcoin ดั้งเดิมจะคำนวณความสัมพันธ์ของค่าจริง และช่วงเวลาเป้าหมายระหว่างบล็อกปี 2559 ล่าสุด และใช้เป็นตัวคูณสำหรับปัจจุบัน ความยากลำบาก แน่นอนว่าสิ่งนี้ไม่เหมาะสำหรับการคำนวณใหม่อย่างรวดเร็ว (เนื่องจากมีความเฉื่อยมาก) และ ส่งผลให้เกิดความสั่นสะเทือน แนวคิดทั่วไปเบื้องหลังอัลกอริธึมของเราคือการรวมงานทั้งหมดที่โหนดและทำเสร็จแล้ว แบ่งตามเวลาที่พวกเขาใช้ไป การวัดงานคือค่าความยากที่สอดคล้องกัน ในแต่ละบล็อก แต่เนื่องจากการประทับเวลาที่ไม่ถูกต้องและไม่น่าเชื่อถือ เราจึงไม่สามารถระบุเวลาที่แน่ชัดได้ ช่วงเวลาระหว่างบล็อก ผู้ใช้สามารถเปลี่ยนการประทับเวลาของเขาไปสู่อนาคตและครั้งต่อไปได้ ช่วงเวลาอาจจะน้อยหรือเป็นลบอย่างไม่น่าเชื่อ คงจะเกิดเหตุไม่น้อย. ประเภทนี้ เราจึงสามารถจัดเรียงการประทับเวลาและตัดค่าผิดปกติได้ (เช่น 20%) ช่วงของ ค่าที่เหลือคือเวลาที่ใช้ไป 80% ของบล็อกที่เกี่ยวข้อง 6.2.2 ขีดจำกัดขนาด ผู้ใช้ชำระค่าจัดเก็บ blockchain และจะมีสิทธิ์โหวตตามขนาดของมัน นักขุดทุกคน เกี่ยวข้องกับการแลกเปลี่ยนระหว่างความสมดุลe ต้นทุนและกำไรจากค่าธรรมเนียมและกำหนดของเขาเอง “soft-limit” สำหรับการสร้างบล็อก กฎหลักสำหรับขนาดบล็อกสูงสุดก็จำเป็นเช่นกัน ป้องกันไม่ให้ blockchain ถูกน้ำท่วมด้วยธุรกรรมปลอม อย่างไรก็ตาม ค่านี้ควร ไม่ต้องฮาร์ดโค้ด ให้ MN เป็นค่ามัธยฐานของขนาดบล็อก N สุดท้าย จากนั้นจึงกำหนด "ขีดจำกัดยาก" สำหรับขนาด ของการรับบล็อกคือ \(2 \cdot M_N\) มันป้องกันไม่ให้ blockchain ท้องอืด แต่ยังคงอนุญาตให้มีขีดจำกัด ค่อยๆ เติบโตตามเวลาหากจำเป็น ขนาดของธุรกรรมไม่จำเป็นต้องถูกจำกัดอย่างชัดเจน ล้อมรอบด้วยขนาดของบล็อก และถ้าใครต้องการสร้างธุรกรรมขนาดใหญ่ที่มีอินพุต/เอาท์พุตหลายร้อยรายการ (หรือด้วย ระดับความคลุมเครือในลายเซ็นแหวนสูง) เขาสามารถทำได้โดยการจ่ายค่าธรรมเนียมเพียงพอ 6.2.3 โทษขนาดเกิน นักขุดยังคงมีความสามารถในการสร้างบล็อกที่เต็มไปด้วยธุรกรรมที่ไม่มีค่าธรรมเนียมของตัวเองจนถึงระดับสูงสุด ขนาด 2 \(\cdot\) เมกะไบต์ แม้ว่านักขุดส่วนใหญ่เท่านั้นที่สามารถเปลี่ยนค่ามัธยฐานได้ แต่ก็ยังมี 13 24 เอาล่ะ เรามี blockchain และแต่ละบล็อกมีการประทับเวลา นอกเหนือจากนั้น สั่ง สิ่งนี้ถูกแทรกไว้อย่างชัดเจนเพื่อการปรับเปลี่ยนความยากเนื่องจากการประทับเวลา เชื่อถือไม่ได้มากดังที่กล่าวไปแล้ว เราได้รับอนุญาตให้มีการประทับเวลาที่ขัดแย้งกันในห่วงโซ่หรือไม่ หาก Block A มาก่อน Block B ในห่วงโซ่ และทุกอย่างสอดคล้องกันในแง่ของการเงิน แต่ดูเหมือนว่า Block A จะถูกสร้างขึ้นหลังจาก Block B? เพราะบางทีอาจมีคนเป็นเจ้าของ ส่วนใหญ่ของเครือข่าย? ไม่เป็นไรใช่ไหม? อาจเป็นเพราะการเงินไม่ได้ถูกหลอก โอเค ฉันเกลียดกฎเกณฑ์นี้ "มีเพียง 80% ของบล็อกที่ถูกต้องตามกฎหมายสำหรับหลัก blockchain" วิธีการ มีจุดประสงค์เพื่อป้องกันไม่ให้คนโกหกปรับแต่งการประทับเวลาของตนหรือไม่ แต่ตอนนี้มันเพิ่ม สิ่งจูงใจให้ทุกคนโกหกเรื่องการประทับเวลาและเลือกค่ามัธยฐาน กรุณากำหนด. ความหมาย "สำหรับบล็อกนี้ให้รวมเฉพาะธุรกรรมที่รวมค่าธรรมเนียมมากกว่าเท่านั้น มากกว่า p% โดยเฉพาะอย่างยิ่งมีค่าธรรมเนียมมากกว่า 2p%" หรืออะไรทำนองนั้น พวกเขาหมายถึงอะไรโดยหลอกลวง? หากการทำธุรกรรมสอดคล้องกับประวัติที่ผ่านมาของ blockchain และการทำธุรกรรมรวมค่าธรรมเนียมที่นักขุดพึงพอใจ ยังไม่เพียงพอหรือ? เอาละ ไม่ ไม่จำเป็น หากไม่มีขนาดบล็อกสูงสุด ก็ไม่มีอะไรที่จะเก็บผู้ใช้ที่เป็นอันตรายได้ จากการอัปโหลดธุรกรรมจำนวนมหาศาลถึงตัวเขาในคราวเดียวเพื่อทำให้ช้าลง เครือข่าย กฎหลักสำหรับขนาดบล็อกสูงสุดจะป้องกันไม่ให้ผู้คนใส่ขยะจำนวนมหาศาล ข้อมูลบน blockchain ทั้งหมดพร้อมกันเพื่อทำให้สิ่งต่างๆ ช้าลง แต่ต้องมีกฎดังกล่าวอย่างแน่นอน ปรับตัว เช่น ในช่วงเทศกาลคริสต์มาส การจราจรจะติดขัด และ ขนาดบล็อกจะใหญ่มากและหลังจากนั้นทันทีเพื่อให้ขนาดบล็อกลดลงในภายหลัง อีกครั้ง ดังนั้นเราจึงต้องมี a) หมวกแบบปรับได้บางประเภท หรือ b) หมวกที่ใหญ่เพียงพอถึง 99% ยอดเขาคริสต์มาสที่สมเหตุสมผลไม่ทำให้หมวกแตก แน่นอนว่าอันที่สองนั้นเป็นไปไม่ได้ การประมาณการ - ใครจะรู้ว่าสกุลเงินจะปรับตัวทันหรือไม่? ดีกว่าที่จะปรับตัวและไม่ต้องกังวล เกี่ยวกับมัน แต่แล้วเราก็มีปัญหาเกี่ยวกับทฤษฎีการควบคุม: จะทำให้สิ่งนี้ปรับตัวได้อย่างไรโดยไม่ต้อง ช่องโหว่ในการโจมตีหรือการแกว่งอย่างดุเดือดและบ้าคลั่ง? สังเกตว่าวิธีการปรับเปลี่ยนไม่ได้หยุดผู้ใช้ที่เป็นอันตรายจากการสะสมจำนวนเล็กน้อย ของข้อมูลขยะเมื่อเวลาผ่านไปบน blockchain ทำให้เกิดการขยายตัวในระยะยาว นี่เป็นปัญหาที่แตกต่าง โดยรวมแล้วเหรียญ cryptonote มีปัญหาร้ายแรงด้วย
6 ข้อดีเพิ่มเติม 6.1 การปล่อยก๊าซเรือนกระจกที่ราบรื่น ขอบเขตบนสำหรับจำนวนเหรียญดิจิทัล CryptoNote ทั้งหมดคือ: MSupply = 264 −1 หน่วยอะตอม นี่เป็นข้อจำกัดตามธรรมชาติที่ขึ้นอยู่กับขีดจำกัดในการดำเนินการเท่านั้น ไม่ใช่จากสัญชาตญาณ เช่น “เหรียญ N น่าจะเพียงพอสำหรับทุกคน” เพื่อให้มั่นใจถึงความราบรื่นของกระบวนการปล่อยก๊าซเรือนกระจก เราใช้สูตรต่อไปนี้สำหรับบล็อก รางวัล: รางวัลฐาน = (MSupply -A) ≫18, โดยที่ A คือจำนวนเหรียญที่สร้างขึ้นก่อนหน้านี้ 6.2 พารามิเตอร์ที่ปรับได้ 6.2.1 ความยากลำบาก CryptoNote มีอัลกอริธึมการกำหนดเป้าหมายซึ่งเปลี่ยนความยากของทุกบล็อก นี้ ลดเวลาตอบสนองของระบบเมื่อเครือข่าย hashrate มีการเติบโตหรือลดลงอย่างมาก รักษาอัตราการบล็อกให้คงที่ เมธอด Bitcoin ดั้งเดิมจะคำนวณความสัมพันธ์ของค่าจริง และช่วงเวลาเป้าหมายระหว่างบล็อกปี 2559 ล่าสุด และใช้เป็นตัวคูณสำหรับปัจจุบัน ความยากลำบาก แน่นอนว่าสิ่งนี้ไม่เหมาะสำหรับการคำนวณใหม่อย่างรวดเร็ว (เนื่องจากมีความเฉื่อยมาก) และ ส่งผลให้เกิดความสั่นสะเทือน แนวคิดทั่วไปเบื้องหลังอัลกอริธึมของเราคือการรวมงานทั้งหมดที่โหนดและทำเสร็จแล้ว แบ่งตามเวลาที่พวกเขาใช้ไป การวัดงานคือค่าความยากที่สอดคล้องกัน ในแต่ละบล็อก แต่เนื่องจากการประทับเวลาที่ไม่ถูกต้องและไม่น่าเชื่อถือ เราจึงไม่สามารถระบุเวลาที่แน่ชัดได้ ช่วงเวลาระหว่างบล็อก ผู้ใช้สามารถเปลี่ยนการประทับเวลาของเขาไปสู่อนาคตและครั้งต่อไปได้ ช่วงเวลาอาจจะน้อยหรือเป็นลบอย่างไม่น่าเชื่อ คงจะเกิดเหตุไม่น้อย. ประเภทนี้ เราจึงสามารถจัดเรียงการประทับเวลาและตัดค่าผิดปกติได้ (เช่น 20%) ช่วงของ ค่าที่เหลือคือเวลาที่ใช้ไป 80% ของบล็อกที่เกี่ยวข้อง 6.2.2 ขีดจำกัดขนาด ผู้ใช้ชำระค่าจัดเก็บ blockchain และจะมีสิทธิ์โหวตตามขนาดของมัน นักขุดทุกคน จัดการกับการแลกเปลี่ยนระหว่างต้นทุนและกำไรจากค่าธรรมเนียมให้สมดุลและกำหนดด้วยตนเอง “soft-limit” สำหรับการสร้างบล็อก กฎหลักสำหรับขนาดบล็อกสูงสุดก็จำเป็นเช่นกัน ป้องกันไม่ให้ blockchain ถูกน้ำท่วมด้วยธุรกรรมปลอม อย่างไรก็ตาม ค่านี้ควร ไม่ต้องฮาร์ดโค้ด ให้ MN เป็นค่ามัธยฐานของขนาดบล็อก N สุดท้าย จากนั้นจึงกำหนด "ขีดจำกัดยาก" สำหรับขนาด ของการรับบล็อกคือ \(2 \cdot M_N\) มันป้องกันไม่ให้ blockchain ท้องอืด แต่ยังคงอนุญาตให้มีขีดจำกัด ค่อยๆ เติบโตตามเวลาหากจำเป็น ขนาดของธุรกรรมไม่จำเป็นต้องถูกจำกัดอย่างชัดเจน ล้อมรอบด้วยขนาดของบล็อก และถ้าใครต้องการสร้างธุรกรรมขนาดใหญ่ที่มีอินพุต/เอาท์พุตหลายร้อยรายการ (หรือด้วย ระดับความคลุมเครือในลายเซ็นแหวนสูง) เขาสามารถทำได้โดยการจ่ายค่าธรรมเนียมเพียงพอ 6.2.3 โทษขนาดเกิน นักขุดยังคงมีความสามารถในการสร้างบล็อกที่เต็มไปด้วยธุรกรรมที่ไม่มีค่าธรรมเนียมของตัวเองจนถึงระดับสูงสุด ขนาด 2 \(\cdot\) เมกะไบต์ แม้ว่านักขุดส่วนใหญ่เท่านั้นที่สามารถเปลี่ยนค่ามัธยฐานได้ แต่ก็ยังมี 13 6 ข้อดีเพิ่มเติม 6.1 การปล่อยก๊าซเรือนกระจกที่ราบรื่น ขอบเขตบนสำหรับจำนวนเหรียญดิจิทัล CryptoNote ทั้งหมดคือ: MSupply = 264 −1 หน่วยอะตอม นี่เป็นข้อจำกัดตามธรรมชาติที่ขึ้นอยู่กับขีดจำกัดในการดำเนินการเท่านั้น ไม่ใช่จากสัญชาตญาณ เช่น “เหรียญ N น่าจะเพียงพอสำหรับทุกคน” เพื่อให้มั่นใจถึงความราบรื่นของกระบวนการปล่อยก๊าซเรือนกระจก เราใช้สูตรต่อไปนี้สำหรับบล็อก รางวัล: รางวัลฐาน = (MSupply -A) ≫18, โดยที่ A คือจำนวนเหรียญที่สร้างขึ้นก่อนหน้านี้ 6.2 พารามิเตอร์ที่ปรับได้ 6.2.1 ความยากลำบาก CryptoNote มีอัลกอริธึมการกำหนดเป้าหมายซึ่งเปลี่ยนความยากของทุกบล็อก นี้ ลดเวลาตอบสนองของระบบเมื่อเครือข่าย hashrate มีการเติบโตหรือลดลงอย่างมาก รักษาอัตราการบล็อกให้คงที่ เมธอด Bitcoin ดั้งเดิมจะคำนวณความสัมพันธ์ของค่าจริง และช่วงเวลาเป้าหมายระหว่างบล็อกปี 2559 ล่าสุด และใช้เป็นตัวคูณสำหรับปัจจุบัน ความยากลำบาก แน่นอนว่าสิ่งนี้ไม่เหมาะสำหรับการคำนวณใหม่อย่างรวดเร็ว (เนื่องจากมีความเฉื่อยมาก) และ ส่งผลให้เกิดความสั่นสะเทือน แนวคิดทั่วไปเบื้องหลังอัลกอริธึมของเราคือการรวมงานทั้งหมดที่โหนดและทำเสร็จแล้ว แบ่งตามเวลาที่พวกเขาใช้ไป การวัดงานคือค่าความยากที่สอดคล้องกัน ในแต่ละบล็อก แต่เนื่องจากการประทับเวลาที่ไม่ถูกต้องและไม่น่าเชื่อถือ เราจึงไม่สามารถระบุเวลาที่แน่ชัดได้ ช่วงเวลาระหว่างบล็อก ผู้ใช้สามารถเปลี่ยนการประทับเวลาของเขาไปสู่อนาคตและครั้งต่อไปได้ ช่วงเวลาอาจจะน้อยหรือเป็นลบอย่างไม่น่าเชื่อ คงจะเกิดเหตุไม่น้อย. ประเภทนี้ เราจึงสามารถจัดเรียงการประทับเวลาและตัดค่าผิดปกติได้ (เช่น 20%) ช่วงของ ค่าที่เหลือคือเวลาที่ใช้ไป 80% ของบล็อกที่เกี่ยวข้อง 6.2.2 ขีดจำกัดขนาด ผู้ใช้ชำระค่าจัดเก็บ blockchain และจะมีสิทธิ์โหวตตามขนาดของมัน นักขุดทุกคน เกี่ยวข้องกับการแลกเปลี่ยนระหว่างความสมดุลe ต้นทุนและกำไรจากค่าธรรมเนียมและกำหนดของเขาเอง “soft-limit” สำหรับการสร้างบล็อก กฎหลักสำหรับขนาดบล็อกสูงสุดก็จำเป็นเช่นกัน ป้องกันไม่ให้ blockchain ถูกน้ำท่วมด้วยธุรกรรมปลอม อย่างไรก็ตาม ค่านี้ควร ไม่ต้องฮาร์ดโค้ด ให้ MN เป็นค่ามัธยฐานของขนาดบล็อก N สุดท้าย จากนั้นจึงกำหนด "ขีดจำกัดยาก" สำหรับขนาด ของการรับบล็อกคือ \(2 \cdot M_N\) มันป้องกันไม่ให้ blockchain ท้องอืด แต่ยังคงอนุญาตให้มีขีดจำกัด ค่อยๆ เติบโตตามเวลาหากจำเป็น ขนาดของธุรกรรมไม่จำเป็นต้องถูกจำกัดอย่างชัดเจน ล้อมรอบด้วยขนาดของบล็อก และถ้าใครต้องการสร้างธุรกรรมขนาดใหญ่ที่มีอินพุต/เอาท์พุตหลายร้อยรายการ (หรือด้วย ระดับความคลุมเครือในลายเซ็นแหวนสูง) เขาสามารถทำได้โดยการจ่ายค่าธรรมเนียมเพียงพอ 6.2.3 โทษขนาดเกิน นักขุดยังคงมีความสามารถในการสร้างบล็อกที่เต็มไปด้วยธุรกรรมที่ไม่มีค่าธรรมเนียมของตัวเองจนถึงระดับสูงสุด ขนาด 2 \(\cdot\) เมกะไบต์ แม้ว่านักขุดส่วนใหญ่เท่านั้นที่สามารถเปลี่ยนค่ามัธยฐานได้ แต่ก็ยังมี 13 25 การขยายขนาดเวลาเพื่อให้หนึ่งหน่วยเวลาเป็น N บล็อก ขนาดบล็อกเฉลี่ยอาจยังคงเพิ่มขึ้นตามสัดส่วนแบบทวีคูณเป็น 2ˆt ตามทฤษฎี ในทางกลับกัน หมวกทั่วไปมากกว่า ในบล็อกถัดไปจะเป็น M_nf(M_n) สำหรับบางฟังก์ชัน f สมบัติของ f จะเป็นเท่าใด เราเลือกเพื่อรับประกัน "การเติบโตที่เหมาะสม" ของขนาดบล็อก? ความก้าวหน้าของ ขนาดบล็อก (หลังจากเวลาปรับขนาดใหม่) จะเป็นดังนี้: 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( ... และเป้าหมายตรงนี้คือเลือก f โดยให้ลำดับนี้เติบโตไม่เร็วไปกว่าแบบเชิงเส้น หรือบางทีอาจจะเป็น Log(t) แน่นอน ถ้า f(M_n) = a สำหรับค่าคงที่ a ลำดับนี้จะเท่ากับ จริงๆ แล้ว M_n กM_n aˆ2M_n aˆ3M_n ... และแน่นอน วิธีเดียวที่จะจำกัดการเติบโตเชิงเส้นให้ได้มากที่สุดก็คือการเลือก a=1 แน่นอนว่านี่เป็นไปไม่ได้ มันไม่อนุญาตให้มีการเติบโตเลย ในทางกลับกัน หาก f(M_n) เป็นฟังก์ชันที่ไม่คงที่ สถานการณ์ก็จะมากกว่านั้นมาก ซับซ้อนและอาจนำไปสู่วิธีแก้ปัญหาที่หรูหรา ฉันจะคิดเรื่องนี้สักพัก ค่าธรรมเนียมนี้จะต้องมากพอที่จะลดค่าปรับขนาดส่วนเกินจากส่วนถัดไป ทำไมผู้ใช้ทั่วไปถึงคิดว่าเป็นผู้ชายล่ะฮะ? ฮะ?
ความเป็นไปได้ที่จะขยาย blockchain และสร้างภาระเพิ่มเติมบนโหนด ที่จะท้อแท้ ผู้เข้าร่วมที่ประสงค์ร้ายจากการสร้างบล็อกขนาดใหญ่เราแนะนำฟังก์ชันการลงโทษ: รางวัลใหม่ = รางวัลฐาน \(\cdot\) BlkSize มน −1 2 กฎนี้ใช้เฉพาะเมื่อ BlkSize มากกว่าขนาดบล็อกอิสระขั้นต่ำที่ควรจะเป็น ใกล้เคียงกับค่าสูงสุด (10kb, \(M_N \cdot 110\%\)) คนงานเหมืองได้รับอนุญาตให้สร้างบล็อกที่มี "ขนาดปกติ" และแม้แต่เท่าๆ กัน เกินด้วยผลกำไรเมื่อค่าธรรมเนียมโดยรวมเกินกว่าค่าปรับ แต่ค่าธรรมเนียมไม่น่าจะเติบโต ไม่เหมือนค่าปรับกำลังสองจึงจะมีความสมดุล 6.3 สคริปต์ธุรกรรม CryptoNote มีระบบย่อยการเขียนสคริปต์ที่เรียบง่ายมาก ผู้ส่งระบุนิพจน์ Φ = f (x1, x2, . . . , xn) โดยที่ n คือจำนวนคีย์สาธารณะปลายทาง {Pi}n ผม=1. ไบนารีห้าเท่านั้น รองรับตัวดำเนินการ: ต่ำสุด สูงสุด ผลรวม mul และ cmp เมื่อผู้รับชำระเงินนี้แล้ว เขาสร้างลายเซ็น \(0 \leq k \leq n\) และส่งต่อไปยังอินพุตธุรกรรม กระบวนการตรวจสอบ เพียงประเมิน Φ ด้วย xi = 1 เพื่อตรวจสอบลายเซ็นที่ถูกต้องสำหรับคีย์สาธารณะ Pi และ xi = 0 ผู้ตรวจสอบยอมรับการพิสูจน์ iffΦ > 0 แม้จะเรียบง่าย แต่วิธีนี้ก็ครอบคลุมทุกกรณีที่เป็นไปได้: • ลายเซ็นหลาย/เกณฑ์ สำหรับลายเซ็นหลายลายเซ็นแบบ Bitcoin สไตล์ “M-out-of-N” (เช่น ผู้รับควรจัดเตรียมลายเซ็นที่ถูกต้องอย่างน้อย \(0 \leq M \leq N\)) Φ = x1+x2+ . .+xN \(\geq M\) (เพื่อความชัดเจน เราใช้สัญลักษณ์พีชคณิตทั่วไป) ลายเซ็นขีดจำกัดแบบถ่วงน้ำหนัก (บางคีย์อาจมีความสำคัญมากกว่าคีย์อื่น) สามารถแสดงเป็น Φ = \(w_1 \cdot x_1\) + \(w_2 \cdot x_2\) + . . . + \(w_N \cdot x_N\) \(\geq wM\) และสถานการณ์ที่มาสเตอร์คีย์สอดคล้องกับ Φ = สูงสุด(\(M \cdot x\), x1 + x2 + . . . + xN) \(\geq M\) มันง่ายที่จะแสดงให้เห็นว่าเคสที่ซับซ้อนใดๆ ก็สามารถเป็นได้ แสดงกับตัวดำเนินการเหล่านี้ เช่น พวกเขาสร้างพื้นฐาน • การป้องกันด้วยรหัสผ่าน การครอบครองรหัสผ่านลับนั้นเทียบเท่ากับความรู้ของ คีย์ส่วนตัว ซึ่งกำหนดมาจากรหัสผ่าน: k = KDF(s) จึงเป็นผู้รับ สามารถพิสูจน์ได้ว่าเขารู้รหัสผ่านโดยการให้ลายเซ็นอื่นใต้คีย์ k ผู้ส่งเพียงแค่เพิ่มกุญแจสาธารณะที่เกี่ยวข้องให้กับเอาท์พุทของเขาเอง โปรดทราบว่าสิ่งนี้ วิธีการมีความปลอดภัยมากกว่า "ปริศนาธุรกรรม" ที่ใช้ใน Bitcoin [13] โดยที่ รหัสผ่านถูกส่งอย่างชัดเจนในอินพุต • กรณีเสื่อมโทรม Φ = 1 หมายความว่าใครๆ ก็สามารถใช้จ่ายเงินได้ Φ = 0 ทำเครื่องหมาย ผลผลิตออกมาใช้ไม่ได้ตลอดไป ในกรณีที่สคริปต์เอาต์พุตรวมกับกุญแจสาธารณะมีขนาดใหญ่เกินไปสำหรับผู้ส่ง สามารถใช้ประเภทเอาต์พุตพิเศษซึ่งระบุว่าผู้รับจะใส่ข้อมูลนี้ลงในอินพุตของเขา ในขณะที่ผู้ส่งให้ข้อมูลเพียง hash เท่านั้น วิธีการนี้คล้ายกับ “จ่ายเพื่อ-hash” ของ Bitcoin คุณลักษณะ แต่แทนที่จะเพิ่มคำสั่งสคริปต์ใหม่ เราจะจัดการกรณีนี้ที่โครงสร้างข้อมูล ระดับ 7 บทสรุป เราได้ตรวจสอบข้อบกพร่องที่สำคัญใน Bitcoin และเสนอแนวทางแก้ไขที่เป็นไปได้ คุณสมบัติที่เป็นประโยชน์เหล่านี้และการพัฒนาอย่างต่อเนื่องของเราทำให้เกิดระบบเงินสดอิเล็กทรอนิกส์ใหม่ CryptoNote เป็นคู่แข่งสำคัญของ Bitcoin ซึ่งเหนือกว่าทางแยกทั้งหมด 14 ความเป็นไปได้ที่จะขยาย blockchain และสร้างภาระเพิ่มเติมบนโหนด ที่จะท้อแท้ ผู้เข้าร่วมที่ประสงค์ร้ายจากการสร้างบล็อกขนาดใหญ่เราแนะนำฟังก์ชันการลงโทษ: รางวัลใหม่ = รางวัลฐาน \(\cdot\) BlkSize มน −1 2 กฎนี้ใช้เฉพาะเมื่อ BlkSize มากกว่าขนาดบล็อกอิสระขั้นต่ำที่ควรจะเป็น ใกล้เคียงกับค่าสูงสุด (10kb, \(M_N \cdot 110\%\)) คนงานเหมืองได้รับอนุญาตให้สร้างบล็อกที่มี "ขนาดปกติ" และแม้แต่เท่าๆ กัน เกินด้วยผลกำไรเมื่อค่าธรรมเนียมโดยรวมเกินกว่าค่าปรับ แต่ค่าธรรมเนียมไม่น่าจะเติบโต ไม่เหมือนค่าปรับกำลังสองจึงจะมีความสมดุล 6.3 สคริปต์ธุรกรรม CryptoNote มีระบบย่อยการเขียนสคริปต์ที่เรียบง่ายมาก ผู้ส่งระบุนิพจน์ Φ = f (x1, x2, . . . , xn) โดยที่ n คือจำนวนคีย์สาธารณะปลายทาง {Pi}n ผม=1. ไบนารีห้าเท่านั้น รองรับตัวดำเนินการ: ต่ำสุด สูงสุด ผลรวม mul และ cmp เมื่อผู้รับชำระเงินนี้แล้ว เขาสร้างลายเซ็น \(0 \leq k \leq n\) และส่งต่อไปยังอินพุตธุรกรรม กระบวนการตรวจสอบ เพียงประเมิน Φ ด้วย xi = 1 เพื่อตรวจสอบลายเซ็นที่ถูกต้องสำหรับคีย์สาธารณะ Pi และ xi = 0 ผู้ตรวจสอบยอมรับการพิสูจน์ iffΦ > 0 แม้จะเรียบง่าย แต่วิธีนี้ก็ครอบคลุมทุกกรณีที่เป็นไปได้: • ลายเซ็นหลาย/เกณฑ์ สำหรับลายเซ็นหลายลายเซ็นแบบ Bitcoin สไตล์ “M-out-of-N” (เช่น ผู้รับควรจัดเตรียมลายเซ็นที่ถูกต้องอย่างน้อย \(0 \leq M \leq N\)) Φ = x1+x2+ . .+xN \(\geq M\) (เพื่อความชัดเจน เราใช้สัญลักษณ์พีชคณิตทั่วไป) ลายเซ็นขีดจำกัดแบบถ่วงน้ำหนัก (บางคีย์อาจมีความสำคัญมากกว่าคีย์อื่น) สามารถแสดงเป็น Φ = \(w_1 \cdot x_1\) + \(w_2 \cdot x_2\) + . . . + \(w_N \cdot x_N\) \(\geq wM\) และฉากio โดยที่มาสเตอร์คีย์สอดคล้องกับ Φ = สูงสุด(\(M \cdot x\), x1 + x2 + . . . + xN) \(\geq M\) มันง่ายที่จะแสดงให้เห็นว่าเคสที่ซับซ้อนใดๆ ก็สามารถเป็นได้ แสดงกับตัวดำเนินการเหล่านี้ เช่น พวกเขาสร้างพื้นฐาน • การป้องกันด้วยรหัสผ่าน การครอบครองรหัสผ่านลับนั้นเทียบเท่ากับความรู้ของ คีย์ส่วนตัว ซึ่งกำหนดมาจากรหัสผ่าน: k = KDF(s) จึงเป็นผู้รับ สามารถพิสูจน์ได้ว่าเขารู้รหัสผ่านโดยการให้ลายเซ็นอื่นใต้คีย์ k ผู้ส่งเพียงแค่เพิ่มกุญแจสาธารณะที่เกี่ยวข้องให้กับเอาท์พุทของเขาเอง โปรดทราบว่าสิ่งนี้ วิธีการนี้มีความปลอดภัยมากกว่า "ปริศนาธุรกรรม" ที่ใช้ใน Bitcoin [13] โดยที่ รหัสผ่านถูกส่งอย่างชัดเจนในอินพุต • กรณีเสื่อมโทรม Φ = 1 หมายความว่าใครๆ ก็สามารถใช้จ่ายเงินได้ Φ = 0 ทำเครื่องหมาย ผลผลิตออกมาใช้ไม่ได้ตลอดไป ในกรณีที่สคริปต์เอาต์พุตรวมกับกุญแจสาธารณะมีขนาดใหญ่เกินไปสำหรับผู้ส่ง สามารถใช้ประเภทเอาต์พุตพิเศษซึ่งระบุว่าผู้รับจะใส่ข้อมูลนี้ลงในอินพุตของเขา ในขณะที่ผู้ส่งให้ข้อมูลเพียง hash เท่านั้น วิธีการนี้คล้ายกับ “จ่ายเพื่อ-hash” ของ Bitcoin คุณลักษณะ แต่แทนที่จะเพิ่มคำสั่งสคริปต์ใหม่ เราจะจัดการกรณีนี้ที่โครงสร้างข้อมูล ระดับ 7 บทสรุป เราได้ตรวจสอบข้อบกพร่องที่สำคัญใน Bitcoin และเสนอแนวทางแก้ไขที่เป็นไปได้ คุณสมบัติที่เป็นประโยชน์เหล่านี้และการพัฒนาอย่างต่อเนื่องของเราทำให้เกิดระบบเงินสดอิเล็กทรอนิกส์ใหม่ CryptoNote เป็นคู่แข่งสำคัญของ Bitcoin ซึ่งเหนือกว่าทางแยกทั้งหมด 14 26 สิ่งนี้อาจไม่จำเป็นหากเราสามารถหาวิธีผูกขนาดบล็อกเมื่อเวลาผ่านไปได้... สิ่งนี้ก็ไม่ถูกต้องเช่นกัน พวกเขาเพิ่งตั้งค่า "NewReward" ให้เป็นพาราโบลาที่หันขึ้นด้านบน ขนาดบล็อกเป็นตัวแปรอิสระ รางวัลใหม่จึงระเบิดขึ้นจนไม่มีที่สิ้นสุด ถ้าในทางกลับกัน มือ รางวัลใหม่คือสูงสุด(0,รางวัลฐาน(1-(BlkSize/Mn - 1)ˆ2)) จากนั้นรางวัลใหม่ จะเป็นพาราโบลาหันหน้าลงโดยมีจุดสูงสุดที่ขนาดบล็อก = Mn และมีจุดตัดที่ ขนาดบล็อก = 0 และขนาดบล็อก = 2Mn และนั่นดูเหมือนจะเป็นสิ่งที่พวกเขาพยายามจะอธิบาย อย่างไรก็ตามสิ่งนี้ไม่ได้
Análisis

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í:
การวิเคราะห์

5
ไม่ใช่ว่ามันจะสำคัญมากเกินไปเมื่อผู้คนนับพันล้านคนในโลกนี้ใช้ชีวิตด้วยเงินน้อยกว่าหนึ่งดอลลาร์ต่อหนึ่งดอลลาร์
และไม่มีความหวังที่จะเข้าร่วมในเครือข่ายการขุดใดๆ... แต่เป็นเศรษฐกิจ
โลกที่ขับเคลื่อนด้วยระบบสกุลเงิน p2p ที่มีหนึ่ง cpu หนึ่งโหวตน่าจะมากกว่านั้น
ยุติธรรมกว่าระบบที่ขับเคลื่อนโดยธนาคารสำรองแบบเศษส่วน
แต่โปรโตคอลของ Cryptonote ยังคงต้องการผู้ใช้ที่ซื่อสัตย์ 51%... ดูตัวอย่าง Cryptonote
ฟอรัมที่ Pliskov หนึ่งในนักพัฒนากล่าวว่าการโจมตีแบบแทนที่ข้อมูลบน theblockchain 51% ยังคงสามารถทำงานได้ https://forum.cryptonote.org/viewtopic.php?f=2&t=198
โปรดทราบว่าคุณไม่จำเป็นต้องมีผู้ใช้ที่ซื่อสัตย์ถึง 51% คุณแค่ต้องการ "ไม่มีความทุจริตแม้แต่คนเดียว"
ฝ่ายที่มีอำนาจมากกว่า 51% ของ hashing ของเครือข่าย"
ลองเรียกสิ่งนี้ว่าปัญหาของ bitcoin ว่า "ความแข็งแกร่งในการปรับตัว" โซลูชันของ Cryptonote เพื่อการปรับตัว
ความแข็งแกร่งคือความยืดหยุ่นในการปรับตัวในค่าพารามิเตอร์โปรโตคอล หากคุณต้องการขนาดบล็อกที่ใหญ่ขึ้น
ไม่มีปัญหา เครือข่ายจะมีการปรับเบาๆ ตลอดเวลา
กล่าวคือ
วิธีที่ Bitcoin ปรับความยากเมื่อเวลาผ่านไปสามารถทำซ้ำได้ทั่วทั้งโปรโตคอลของเรา
พารามิเตอร์เพื่อให้ไม่จำเป็นต้องได้รับฉันทามติของเครือข่ายในการอัพเดตโปรโตคอล
ดูเผินๆ ดูเหมือนเป็นความคิดที่ดี แต่หากปราศจากการไตร่ตรองอย่างรอบคอบ จะเป็นการปรับตัวเอง
ระบบอาจคาดเดาไม่ได้และวุ่นวายเลยทีเดียว เราจะพิจารณาเรื่องนี้เพิ่มเติมในภายหลังในฐานะ
โอกาสเกิดขึ้น ระบบ "ดี" อยู่ระหว่างการปรับตัวที่เข้มงวดกับการปรับตัว
ยืดหยุ่นได้ และบางทีแม้แต่ความแข็งแกร่งเองก็สามารถปรับเปลี่ยนได้
หากเรามี "หนึ่ง CPU-หนึ่ง-โหวต" อย่างแท้จริง ให้ร่วมมือกันและพัฒนากลุ่มเพื่อให้ได้คะแนนถึง 51%
คงจะลำบากกว่า.. เราคาดหวังว่า CPU ทุกตัวในโลกจะถูกขุดจากโทรศัพท์
ไปยัง CPU ออนบอร์ดใน Tesla ของคุณในขณะที่กำลังชาร์จ
http://en.wikipedia.org/wiki/Pareto_principle
ฉันอ้างว่าสมดุลของพาเรโตค่อนข้างหลีกเลี่ยงไม่ได้ 20% ของระบบจะเป็นเช่นนั้น
เป็นเจ้าของ CPU 80% หรือ 20% ของระบบจะเป็นเจ้าของ ASIC 80% ฉันตั้งสมมติฐานนี้เพราะว่าการกระจายความมั่งคั่งในสังคมนั้นได้แสดงให้เห็นการกระจายของพาเรโตแล้ว
และเมื่อมีผู้ขุดรายใหม่เข้าร่วม พวกเขาจะถูกดึงมาจากการกระจายพื้นฐานนั้น
อย่างไรก็ตาม ฉันยืนยันว่าโปรโตคอลที่มีหนึ่ง cpu-หนึ่งโหวตจะเห็น ROI บนฮาร์ดแวร์
บล็อก
รางวัลต่อโหนดจะแปรผันตามจำนวนโหนดในเครือข่ายอย่างใกล้ชิดมากขึ้นเพราะว่า
การกระจายประสิทธิภาพข้ามโหนดจะแน่นแฟ้นยิ่งขึ้น Bitcoin อีกด้านหนึ่ง
hand เห็นรางวัลบล็อก (ต่อโหนด) เป็นสัดส่วนมากกว่าความสามารถในการคำนวณของสิ่งนั้น
โหนด กล่าวคือ มีเพียง "หนุ่มใหญ่" เท่านั้นที่ยังคงอยู่ในเกมการขุด ในทางกลับกัน
แม้ว่าหลักการ Pareto จะยังคงมีบทบาทอยู่ แต่ในโลกที่มีหนึ่ง CPU หนึ่งเสียง ทุกคน
มีส่วนร่วมในการรักษาความปลอดภัยเครือข่ายและได้รับรายได้จากการขุดเล็กน้อย
ในโลกของ ASIC มันไม่สมเหตุสมผลเลยที่จะขุด XBox และโทรศัพท์มือถือทุกเครื่องมาทำเหมือง
ในโลกแบบ onecpu-one-vote มันสมเหตุสมผลมากในแง่ของรางวัลการขุด ผลอันน่ายินดีก็คือ
การได้คะแนนเสียงถึง 51% จะยิ่งยากขึ้นไปอีกเมื่อมีคะแนนโหวตเพิ่มมากขึ้นเรื่อยๆ ทำให้ได้คะแนนน่ารัก
ประโยชน์ต่อความปลอดภัยของเครือข่าย..ฮาร์ดแวร์ที่อธิบายไว้ก่อนหน้านี้ สมมติว่าอัตรา hash ทั่วโลกลดลงอย่างมีนัยสำคัญ แม้กระทั่งสำหรับ
ขณะนี้เขาสามารถใช้พลังการขุดเพื่อแยกโซ่และใช้จ่ายสองเท่า ดังที่เราจะได้เห็น
ภายหลังในบทความนี้ ไม่น่าเป็นไปได้ที่เหตุการณ์ที่อธิบายไว้ก่อนหน้านี้จะเกิดขึ้น
2.3
การปล่อยก๊าซเรือนกระจกไม่สม่ำเสมอ
Bitcoin มีอัตราการปล่อยก๊าซที่กำหนดไว้ล่วงหน้า: แต่ละบล็อกที่แก้ไขได้จะผลิตเหรียญจำนวนคงที่
ประมาณทุกๆ สี่ปี รางวัลนี้จะลดลงครึ่งหนึ่ง ความตั้งใจเดิมคือการสร้าง
การแผ่รังสีที่ราบรื่นจำกัดโดยมีการสลายตัวแบบเอ็กซ์โปเนนเชียล แต่จริงๆ แล้ว เรามีการแผ่รังสีเชิงเส้นแบบชิ้นๆ
ฟังก์ชั่นที่มีจุดพักอาจทำให้เกิดปัญหากับโครงสร้างพื้นฐาน Bitcoin
เมื่อจุดพักเกิดขึ้น นักขุดจะเริ่มได้รับเพียงครึ่งหนึ่งของมูลค่าก่อนหน้า
รางวัล ความแตกต่างสัมบูรณ์ระหว่าง 12.5 และ 6.25 BTC (คาดการณ์สำหรับปี 2020) อาจ
ดูเหมือนจะทนได้ อย่างไรก็ตาม เมื่อตรวจสอบการลดลง 50 ถึง 25 BTC ที่เกิดขึ้นในเดือนพฤศจิกายน
เมื่อวันที่ 28 กันยายน 2012 รู้สึกว่าไม่เหมาะสมสำหรับสมาชิกของชุมชนเหมืองแร่จำนวนที่มีนัยสำคัญ รูปที่
1 แสดงการลดลงอย่างมากในอัตรา hashของเครือข่ายในช่วงปลายเดือนพฤศจิกายน ซึ่งตรงกับเวลาที่
การลดจำนวนลงครึ่งหนึ่งเกิดขึ้น เหตุการณ์นี้อาจเป็นช่วงเวลาที่สมบูรณ์แบบสำหรับบุคคลที่มุ่งร้าย
อธิบายไว้ในส่วนฟังก์ชัน proof-of-work เพื่อดำเนินการโจมตีการใช้จ่ายสองเท่า [36]
รูปที่ 1. Bitcoin hashกราฟอัตรา
(ที่มา: http://bitcoin.sipa.be)
2.4
ค่าคงที่แบบฮาร์ดโค้ด
Bitcoin มีข้อจำกัดแบบฮาร์ดโค้ดมากมาย โดยที่บางส่วนเป็นองค์ประกอบตามธรรมชาติของการออกแบบดั้งเดิม (เช่น
ความถี่บล็อก ปริมาณเงินสูงสุด จำนวนการยืนยัน) ในขณะที่อื่นๆ
ดูเหมือนจะเป็นข้อจำกัดเทียม ไม่ได้มีข้อจำกัดมากนัก เนื่องจากไม่สามารถเปลี่ยนแปลงได้อย่างรวดเร็ว
3
ฮาร์ดแวร์ที่อธิบายไว้ก่อนหน้านี้ สมมติว่าอัตรา hash ทั่วโลกลดลงอย่างมีนัยสำคัญ แม้แต่ด้วยซ้ำ
ขณะนี้เขาสามารถใช้พลังการขุดเพื่อแยกโซ่และใช้จ่ายสองเท่า ดังที่เราจะได้เห็น
ภายหลังในบทความนี้ ไม่น่าเป็นไปได้ที่เหตุการณ์ที่อธิบายไว้ก่อนหน้านี้จะเกิดขึ้น
2.3
การปล่อยก๊าซเรือนกระจกไม่สม่ำเสมอ
Bitcoin มีอัตราการปล่อยก๊าซที่กำหนดไว้ล่วงหน้า: แต่ละบล็อกที่แก้ไขได้จะผลิตเหรียญจำนวนคงที่
ประมาณทุกๆ สี่ปี รางวัลนี้จะลดลงครึ่งหนึ่ง ความตั้งใจเดิมคือการสร้าง
การแผ่รังสีที่ราบรื่นจำกัดโดยมีการสลายตัวแบบเอ็กซ์โปเนนเชียล แต่จริงๆ แล้ว เรามีการแผ่รังสีเชิงเส้นแบบชิ้นๆ
ฟังก์ชั่นที่มีจุดพักอาจทำให้เกิดปัญหากับโครงสร้างพื้นฐาน Bitcoin
เมื่อจุดพักเกิดขึ้น นักขุดจะเริ่มได้รับเพียงครึ่งหนึ่งของมูลค่าก่อนหน้า
รางวัล ความแตกต่างสัมบูรณ์ระหว่าง 12.5 และ 6.25 BTC (คาดการณ์สำหรับปี 2020) อาจ
ดูเหมือนจะทนได้ อย่างไรก็ตาม เมื่อตรวจสอบการลดลง 50 ถึง 25 BTC ที่เกิดขึ้นในเดือนพฤศจิกายน
เมื่อวันที่ 28 กันยายน 2012 รู้สึกว่าไม่เหมาะสมสำหรับสมาชิกของชุมชนเหมืองแร่จำนวนที่มีนัยสำคัญ รูปที่
1 แสดงการลดลงอย่างมากในอัตรา hash ของเครือข่ายในช่วงปลายเดือนพฤศจิกายน ซึ่งตรงกับเวลาที่
การลดจำนวนลงครึ่งหนึ่งเกิดขึ้น เหตุการณ์นี้อาจเป็นช่วงเวลาที่สมบูรณ์แบบสำหรับบุคคลที่มุ่งร้าย
อธิบายไว้ในส่วนฟังก์ชัน proof-of-work เพื่อดำเนินการโจมตีการใช้จ่ายสองเท่า [36]
รูปที่ 1. Bitcoin hashกราฟอัตรา
(ที่มา: http://bitcoin.sipa.be)
2.4
ค่าคงที่แบบฮาร์ดโค้ด
Bitcoin มีข้อจำกัดแบบฮาร์ดโค้ดมากมาย โดยที่บางส่วนเป็นองค์ประกอบตามธรรมชาติของการออกแบบดั้งเดิม (เช่น
ความถี่บล็อก ปริมาณเงินสูงสุด จำนวนการยืนยัน) ในขณะที่อื่นๆ
ดูเหมือนจะเป็นข้อจำกัดเทียม ไม่ได้มีข้อจำกัดมากนัก เนื่องจากไม่สามารถเปลี่ยนแปลงได้อย่างรวดเร็ว
3
6
เรียกสิ่งนี้ว่ามันคือการโจมตีของซอมบี้
เรามาหารือกันว่าการปล่อยก๊าซเรือนกระจกอย่างต่อเนื่องจะเป็นอย่างไร
เกี่ยวข้องกับ one-cpu-one-vote ในสถานการณ์การโจมตีด้วยซอมบี้
ในโลกที่มีหนึ่ง CPU หนึ่งโหวต โทรศัพท์มือถือและรถยนต์ทุกเครื่อง เมื่อใดก็ตามที่ไม่ได้ใช้งาน จะถูกขุดเหมือง การรวบรวมฮาร์ดแวร์ราคาถูกจำนวนมากเพื่อสร้างฟาร์มขุดจะง่ายมากเพราะเพียง
เกี่ยวกับทุกสิ่งที่มี CPU อยู่ในนั้น ในทางกลับกัน ณ จุดนั้นคือจำนวน CPU
ฉันคิดว่าจำเป็นต้องทำการโจมตี 51% ค่อนข้างน่าประหลาดใจ
นอกจากนี้
แม่นยำ เพราะ ง่ายต่อการรวบรวมฮาร์ดแวร์ราคาถูก เราจึงสามารถคาดหวังได้อย่างสมเหตุสมผล
หลายๆ คนเริ่มสะสมอะไรก็ตามด้วย CPU การแข่งขันทางอาวุธในโลกที่มีหนึ่งซีพียูหนึ่งโหวต
จำเป็นต้องมีความเสมอภาคมากกว่าในโลก ASIC
จึงมีความไม่ต่อเนื่องในเครือข่าย
ความปลอดภัยเนื่องจากอัตราการปล่อยมลพิษควรจะเป็นปัญหาน้อยกว่าในโลกที่มีหนึ่งซีพียูหนึ่งเสียง
อย่างไรก็ตาม ยังมีข้อเท็จจริงสองประการ: 1) อัตราการปล่อยก๊าซที่ไม่ต่อเนื่องอาจทำให้เกิดอาการติดอ่างใน
ทั้งด้านเศรษฐกิจและความปลอดภัยเครือข่าย ซึ่งแย่ และ 2) แม้ว่าจะมีการโจมตีถึง 51% ก็ตาม
ดำเนินการโดยคนที่รวบรวมฮาร์ดแวร์ราคาถูกยังสามารถเกิดขึ้นในซีพียูตัวเดียวได้-โหวตโลก
ดูเหมือนว่ามันควรจะยากกว่านี้
สมมุติว่าการป้องกันสิ่งนี้ก็คือ นักแสดงที่ไม่ซื่อสัตย์ทั้งหมด จะลองทำสิ่งนี้
พร้อมกัน และเราถอยกลับไปใช้แนวคิดด้านความปลอดภัยก่อนหน้าของ Bitcoin: "เราไม่ต้องการการทุจริต
ฝ่ายที่จะควบคุมมากกว่า 51% ของเครือข่าย”
ผู้เขียนอ้างที่นี่ว่าปัญหาหนึ่งของ bitcoin ก็คือความไม่ต่อเนื่องในการปล่อยเหรียญ
อัตรานี้อาจส่งผลให้การมีส่วนร่วมของเครือข่ายลดลงอย่างกะทันหัน และด้วยเหตุนี้ความปลอดภัยของเครือข่าย ดังนั้น
อัตราการปล่อยเหรียญที่ต่อเนื่อง เปลี่ยนแปลงได้ และราบรื่นจะดีกว่า
ผู้เขียนไม่ผิดแน่นอน การมีส่วนร่วมของเครือข่ายที่ลดลงอย่างกะทันหันสามารถทำได้
นำไปสู่ปัญหาดังกล่าว และถ้าเราสามารถลบแหล่งที่มาของมันได้ เราก็ควรทำ พูดแล้วก็เป็นอย่างนั้น
เป็นไปได้ว่าการปล่อยเหรียญ "ค่อนข้างคงที่" เป็นระยะเวลานานจะถูกคั่นด้วยการเปลี่ยนแปลงอย่างกะทันหัน
เป็นวิธีที่เหมาะที่จะไปจากมุมมองทางเศรษฐศาสตร์ ฉันไม่ใช่นักเศรษฐศาสตร์ ดังนั้นบางทีเรา
ต้องตัดสินใจว่าเราจะแลกความปลอดภัยเครือข่ายเพื่ออะไรบางอย่างทางเศรษฐกิจหรือไม่?
http://arxiv.org/abs/1402.2009หากจำเป็นซึ่งทำให้เกิดข้อเสียเปรียบหลัก น่าเสียดายที่เป็นการยากที่จะคาดเดาได้ว่าเมื่อใด
ค่าคงที่อาจจำเป็นต้องเปลี่ยนและการแทนที่อาจนำไปสู่ผลลัพธ์ที่เลวร้าย
ตัวอย่างที่ดีของการเปลี่ยนแปลงขีดจำกัดแบบฮาร์ดโค้ดที่นำไปสู่ผลที่ตามมาที่ร้ายแรงคือการบล็อก
จำกัดขนาดไว้ที่ 250kb1 ขีดจำกัดนี้เพียงพอที่จะรองรับธุรกรรมมาตรฐานได้ประมาณ 10,000 รายการ ใน
ต้นปี 2013 เกือบจะถึงขีดจำกัดนี้แล้ว และได้บรรลุข้อตกลงเพื่อเพิ่ม
ขีด จำกัด การเปลี่ยนแปลงถูกนำไปใช้ในกระเป๋าเงินเวอร์ชัน 0.8 และจบลงด้วยการแยกลูกโซ่ 24 บล็อก
และการโจมตีแบบใช้จ่ายสองครั้งที่ประสบความสำเร็จ [9] ในขณะที่จุดบกพร่องไม่ได้อยู่ในโปรโตคอล Bitcoin แต่
แต่ในกลไกฐานข้อมูลนั้นสามารถตรวจจับได้ง่ายโดยการทดสอบความเครียดแบบง่าย ๆ หากมี
ไม่มีการจำกัดขนาดบล็อกที่แนะนำโดยไม่ได้ตั้งใจ
ค่าคงที่ยังทำหน้าที่เป็นรูปแบบหนึ่งของจุดรวมศูนย์
แม้ว่าลักษณะแบบ peer-to-peer ของ
Bitcoin โหนดส่วนใหญ่ใช้ไคลเอนต์อ้างอิงอย่างเป็นทางการ [10] พัฒนาโดย
คนกลุ่มเล็กๆ กลุ่มนี้ตัดสินใจดำเนินการเปลี่ยนแปลงโปรโตคอล
และคนส่วนใหญ่ยอมรับการเปลี่ยนแปลงเหล่านี้โดยไม่คำนึงถึง "ความถูกต้อง" ของพวกเขา การตัดสินใจบางอย่างเกิดขึ้น
การอภิปรายอย่างเผ็ดร้อนและแม้กระทั่งเรียกร้องให้คว่ำบาตร [11] ซึ่งบ่งชี้ว่าชุมชนและ
นักพัฒนาซอฟต์แวร์อาจไม่เห็นด้วยกับประเด็นสำคัญบางประการ ดังนั้นจึงดูเหมือนสมเหตุสมผลที่จะมีโปรโตคอล
ด้วยตัวแปรที่ผู้ใช้สามารถกำหนดค่าได้และปรับได้เองซึ่งเป็นวิธีที่เป็นไปได้ในการหลีกเลี่ยงปัญหาเหล่านี้
2.5
สคริปต์ขนาดใหญ่
ระบบการเขียนสคริปต์ใน Bitcoin เป็นคุณลักษณะที่หนักและซับซ้อน มันอาจทำให้ใครคนหนึ่งสามารถสร้างได้
ธุรกรรมที่ซับซ้อน [12] แต่คุณลักษณะบางอย่างถูกปิดใช้งานเนื่องจากข้อกังวลด้านความปลอดภัยและ
บางตัวไม่เคยใช้ด้วยซ้ำ [13] สคริปต์ (รวมทั้งส่วนของผู้ส่งและผู้รับ)
สำหรับธุรกรรมยอดนิยมใน Bitcoin มีลักษณะดังนี้: