CryptoNote เวอร์ชัน 2.0

Por Nicolas van Saberhagen · 2013

O artigo apresentado aqui é o whitepaper CryptoNote v2.0, de Nicolas van Saberhagen (2013), que descreve os fundamentos criptográficos sobre os quais o Monero foi construído. Não se trata de um whitepaper específico do Monero — o Monero foi lançado em 2014 como um fork da implementação de referência do CryptoNote (Bytecoin) e evoluiu significativamente além do protocolo original.

Introdução

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

การแนะนำ

“Bitcoin” [1] ประสบความสำเร็จในการนำแนวคิดเงินสดอิเล็กทรอนิกส์ p2p ไปใช้ ทั้งสองอย่าง มืออาชีพและประชาชนทั่วไปต่างก็ชื่นชมการผสมผสานที่สะดวกสบายของ ธุรกรรมสาธารณะและ proof-of-work เป็นรูปแบบความน่าเชื่อถือ ปัจจุบันฐานผู้ใช้เงินสดอิเล็กทรอนิกส์ กำลังเติบโตอย่างมั่นคง ลูกค้าถูกดึงดูดด้วยค่าธรรมเนียมต่ำและการไม่เปิดเผยตัวตน ด้วยเงินสดอิเล็กทรอนิกส์และร้านค้าให้ความสำคัญกับการปล่อยก๊าซเรือนกระจกที่คาดการณ์ไว้และกระจายอำนาจ Bitcoin มี ได้รับการพิสูจน์อย่างมีประสิทธิภาพว่าเงินสดอิเล็กทรอนิกส์สามารถทำได้ง่ายเหมือนกับเงินกระดาษและสะดวกพอ ๆ กับ บัตรเครดิต น่าเสียดายที่ Bitcoin ประสบกับข้อบกพร่องหลายประการ เช่น ระบบมีการกระจาย ธรรมชาติไม่สามารถยืดหยุ่นได้ ทำให้ไม่สามารถใช้งานคุณสมบัติใหม่ได้จนกว่าผู้ใช้เครือข่ายเกือบทั้งหมดจะอัปเดตไคลเอนต์ของตน ข้อบกพร่องที่สำคัญบางประการที่ไม่สามารถแก้ไขได้อย่างรวดเร็วจะขัดขวาง Bitcoin การแพร่กระจายอย่างกว้างขวาง ในโมเดลที่ไม่ยืดหยุ่นดังกล่าว การเปิดตัวโปรเจ็กต์ใหม่จะมีประสิทธิภาพมากกว่า แทนที่จะแก้ไขโครงการเดิมอย่างถาวร ในบทความนี้ เราศึกษาและเสนอวิธีแก้ปัญหาข้อบกพร่องหลักของ Bitcoin เราเชื่อ ว่าระบบที่คำนึงถึงแนวทางแก้ไขที่เราเสนอจะนำไปสู่การแข่งขันที่ดี ในระบบเงินสดอิเล็กทรอนิกส์ต่างๆ นอกจากนี้เรายังเสนอเงินสดอิเล็กทรอนิกส์ของเราเอง “CryptoNote” ชื่อที่เน้นความก้าวหน้าครั้งต่อไปในด้านเงินสดอิเล็กทรอนิกส์

Bitcoin Desvantagens e possíveis soluções

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

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

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

A tecnologia CryptoNote

Agora que cobrimos as limitações da tecnologia Bitcoin, nos concentraremos em apresentando os recursos do CryptoNote.

เทคโนโลยี CryptoNote

ตอนนี้เราได้ครอบคลุมข้อจำกัดของเทคโนโลยี Bitcoin แล้ว เราจะมุ่งเน้นไปที่ นำเสนอคุณสมบัติของ CryptoNote

Transações não rastreáveis

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

ธุรกรรมที่ไม่สามารถติดตามได้

ในส่วนนี้ เราขอเสนอรูปแบบของธุรกรรมที่ไม่เปิดเผยตัวตนโดยสมบูรณ์ซึ่งตอบสนองทั้งความไม่สามารถตรวจสอบย้อนกลับได้ และเงื่อนไขที่ไม่สามารถเชื่อมโยงได้ คุณลักษณะที่สำคัญของโซลูชันของเราคือความเป็นอิสระ: ผู้ส่ง ไม่จำเป็นต้องร่วมมือกับผู้ใช้รายอื่นหรือบุคคลที่สามที่เชื่อถือได้เพื่อทำธุรกรรมของเขา ดังนั้นผู้เข้าร่วมแต่ละคนจึงสร้างการจราจรที่ปกคลุมอย่างอิสระ 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 มีลักษณะดังนี้: OP DUP OP HASH160 OP เท่ากับการตรวจสอบ OP สคริปต์มีความยาว 164 ไบต์ โดยมีวัตถุประสงค์เพียงเพื่อตรวจสอบว่าผู้รับครอบครองหรือไม่ ต้องใช้รหัสลับในการตรวจสอบลายเซ็นของเขา 3 เทคโนโลยี CryptoNote ตอนนี้เราได้กล่าวถึงข้อจำกัดของเทคโนโลยี Bitcoin แล้ว เราจะมุ่งเน้นไปที่ นำเสนอคุณสมบัติของ CryptoNote 4 ธุรกรรมที่ไม่สามารถติดตามได้ ในส่วนนี้ เราขอเสนอรูปแบบของธุรกรรมที่ไม่เปิดเผยตัวตนโดยสมบูรณ์ซึ่งตอบสนองทั้งความไม่สามารถตรวจสอบย้อนกลับได้ และเงื่อนไขที่ไม่สามารถเชื่อมโยงได้ คุณลักษณะที่สำคัญของโซลูชันของเราคือความเป็นอิสระ: ผู้ส่ง ไม่จำเป็นต้องร่วมมือกับผู้ใช้รายอื่นหรือบุคคลที่สามที่เชื่อถือได้เพื่อทำธุรกรรมของเขา ดังนั้นผู้เข้าร่วมแต่ละคนจึงสร้างการจราจรที่ปกคลุมอย่างอิสระ 4.1 การทบทวนวรรณกรรม โครงการของเราอาศัยการเข้ารหัสแบบดั้งเดิมที่เรียกว่าลายเซ็นกลุ่ม นำเสนอครั้งแรกโดย D. Chaum และ E. van Heyst [19] อนุญาตให้ผู้ใช้ลงนามข้อความในนามของกลุ่ม หลังจากลงนามในข้อความที่ผู้ใช้ให้ (เพื่อวัตถุประสงค์ในการตรวจสอบ) ไม่ใช่สาธารณะของเขาเอง 1สิ่งนี้เรียกว่า “ขีดจำกัดซอฟต์” — ข้อจำกัดไคลเอนต์อ้างอิงสำหรับการสร้างบล็อกใหม่ ฮาร์ดสูงสุดของ ขนาดบล็อกที่เป็นไปได้คือ 1 MB 4 7 เมื่อมองย้อนกลับไป ดูเหมือนว่าจะเป็นความผิดพลาดครั้งใหญ่ในการทำให้ขนาดบล็อกเป็นขีดจำกัดคงที่ในโค้ด Visa และ Mastercard สามารถประมวลผลธุรกรรมได้หลายพันรายการ หากไม่ใช่หลายแสนรายการ ต่อวินาที อย่างไรก็ตาม ธุรกรรมเกิดขึ้นในกระบวนการสุ่ม ซึ่งบางครั้งก็เกิดการระเบิดครั้งใหญ่ บางครั้งก็เงียบไปหลายชั่วโมง คิดถึงปริมาณการแลกเปลี่ยน bitcoin ดูเหมือนเป็นแนวคิดที่ยิ่งใหญ่ในการออกแบบระบบที่เพิ่มขนาดบล็อกแบบไดนามิกเมื่อจำเป็น เพื่อรองรับปริมาณธุรกรรมที่เพิ่มขึ้น และลดปริมาณธุรกรรมแบบไดนามิกเมื่อจำเป็น เพิ่มประสิทธิภาพแบนด์วิดธ์fficiency ตอนนี้ให้นำแนวคิดนั้นไปใช้กับพารามิเตอร์ของระบบทั้งหมด และตราบเท่าที่เราระมัดระวังที่จะรักษา ระบบไม่ให้หลุดออกจากการควบคุม ซจะทำงานได้ดีมาก https://github.com/bitcoin/bips/blob/master/bip-0050.mediawiki ดังที่ได้กล่าวไปแล้ว หากตัวแปรปรับตัวเอง จะต้องมีการควบคุมบางอย่างเพื่อให้สามารถดำเนินการได้ ป้องกันไม่ให้ระบบดำเนินการอย่างบ้าคลั่งจนควบคุมไม่ได้ เราจะไปถึงจุดนั้น หากเป็นบทความวิกิพีเดีย จะมีป้ายกำกับว่า "STUB" แม้ว่าเราจะอยู่ในนั้นอย่างแน่นอน ส่วนแนะนำ "ปัญหาของ Bitcoin" ฉันต้องการรายละเอียดเพิ่มเติมที่นี่ ทำไมถึงเป็น 164 ไบต์ไม่สามารถยอมรับได้สำหรับงาน "ตรวจสอบรหัสลับ" ง่ายๆ หรือไม่ พวกเขาจะทำได้น้อยแค่ไหน ภาษาสคริปต์ที่เหมาะสม? แต่ฉันไม่ใช่นักวิทยาศาสตร์คอมพิวเตอร์ http://download.springer.com/static/pdf/412/chp%253A10.1007%252F3-540-46416-6_22.pdf?auth66=140 ลายเซ็นกลุ่มตามที่อธิบายไว้ จำเป็นต้องมีผู้จัดการกลุ่ม ผู้จัดการกลุ่มมีความสามารถ ของการเพิกถอนการไม่เปิดเผยตัวตนของผู้ลงนามใด ๆ ดังนั้นจึงมีการรวมศูนย์ภายในกลุ่ม โครงการลายเซ็น

คีย์ แต่เป็นคีย์ของผู้ใช้ทั้งหมดในกลุ่มของเขา ผู้ตรวจสอบจะเชื่อมั่นว่าผู้ลงนามที่แท้จริงคือ 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 กับปลายทางสาธารณะของธุรกรรมใหม่ คีย์คือวิธีที่เราส่งธุรกรรมใหม่

  1. 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
  2. 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 ที่ทำหน้าที่เหมือนสกุลเงินจะถูกรักษาไว้ เช่น การพิสูจน์การใช้จ่ายซ้ำซ้อน และ อะไรก็ตาม

  3. 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

  4. 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álise

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

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

การวิเคราะห์

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

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 มีลักษณะดังนี้: OP DUP OP HASH160 OP เท่ากับการตรวจสอบ OP สคริปต์มีความยาว 164 ไบต์ โดยมีวัตถุประสงค์เพียงเพื่อตรวจสอบว่าผู้รับครอบครองหรือไม่ ต้องใช้รหัสลับในการตรวจสอบลายเซ็นของเขา