CryptoNote v2.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.

Perkenalan

“Bitcoin” [1] telah berhasil menerapkan konsep uang elektronik p2p. Keduanya para profesional dan masyarakat umum mulai menghargai kombinasi yang nyaman dari transaksi publik dan proof-of-work sebagai model kepercayaan. Saat ini, basis pengguna uang elektronik tumbuh dengan kecepatan yang stabil; pelanggan tertarik dengan biaya rendah dan anonimitas yang diberikan oleh uang elektronik dan pedagang menilai emisi yang diprediksi dan didesentralisasi. Bitcoin punya secara efektif membuktikan bahwa uang elektronik bisa sesederhana uang kertas dan senyaman mungkin kartu kredit. Sayangnya, Bitcoin mempunyai beberapa kekurangan. Misalnya saja sistem terdistribusi sifatnya tidak fleksibel, mencegah penerapan fitur-fitur baru hingga hampir semua pengguna jaringan memperbarui klien mereka. Beberapa kelemahan kritis yang tidak dapat diperbaiki dengan cepat menghalangi Bitcoin penyebarannya secara luas. Dalam model yang tidak fleksibel seperti ini, akan lebih efisien jika meluncurkan proyek baru daripada terus-menerus memperbaiki proyek aslinya. Dalam makalah ini, kami mempelajari dan mengusulkan solusi terhadap kekurangan utama Bitcoin. Kami percaya bahwa sistem yang mempertimbangkan solusi yang kami usulkan akan menghasilkan persaingan yang sehat antara sistem kas elektronik yang berbeda. Kami juga mengusulkan uang elektronik kami sendiri, “CryptoNote”, sebuah nama yang menekankan terobosan berikutnya dalam uang elektronik.

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 Kekurangan dan Kemungkinan Solusinya

2 Bitcoin kekurangan dan beberapa kemungkinan solusi 2.1 Ketertelusuran transaksi Privasi dan anonimitas adalah aspek terpenting dari uang elektronik. Pembayaran antar rekan berusaha untuk disembunyikan dari pandangan pihak ketiga, perbedaan yang nyata jika dibandingkan dengan tradisional perbankan. Secara khusus, T. Okamoto dan K. Ohta menjelaskan enam kriteria uang elektronik yang ideal, yang mencakup “privasi: hubungan antara pengguna dan pembeliannya harus tidak dapat dilacak oleh siapa pun” [30]. Dari uraiannya, kami memperoleh dua properti yang sepenuhnya anonim model uang elektronik harus memenuhi persyaratan yang digariskan oleh Okamoto dan Ohta: Untraceability: untuk setiap transaksi masuk, semua pengirim yang mungkin memiliki kemungkinan yang sama. Tidak dapat dihubungkan: untuk dua transaksi keluar mana pun, tidak mungkin dibuktikan bahwa mereka telah dikirim orang yang sama. Sayangnya, Bitcoin tidak memenuhi persyaratan tidak dapat dilacak. Karena semua transaksi yang terjadi di antara peserta jaringan bersifat publik, maka transaksi apa pun bisa bersifat publik 1 Catatan Kripto v 2.0 Nicolas van Saberhagen 17 Oktober 2013 1 Pendahuluan “Bitcoin” [1] telah berhasil menerapkan konsep uang elektronik p2p. Keduanya para profesional dan masyarakat umum mulai menghargai kombinasi yang nyaman dari transaksi publik dan proof-of-work sebagai model kepercayaan. Saat ini, basis pengguna uang elektronik tumbuh dengan kecepatan yang stabil; pelanggan tertarik dengan biaya rendah dan anonimitas yang diberikan oleh uang elektronik dan pedagang menilai emisi yang diprediksi dan didesentralisasi. Bitcoin punya secara efektif membuktikan bahwa uang elektronik bisa sesederhana uang kertas dan senyaman mungkin kartu kredit. Sayangnya, Bitcoin mempunyai beberapa kekurangan. Misalnya saja sistem terdistribusi sifatnya tidak fleksibel, mencegah penerapan fitur-fitur baru hingga hampir semua pengguna jaringan memperbarui klien mereka. Beberapa kelemahan kritis yang tidak dapat diperbaiki dengan cepat menghalangi Bitcoin penyebarannya secara luas. Dalam model yang tidak fleksibel seperti ini, akan lebih efisien jika meluncurkan proyek baru daripada terus-menerus memperbaiki proyek aslinya. Dalam makalah ini, kami mempelajari dan mengusulkan solusi terhadap kekurangan utama Bitcoin. Kami percaya bahwa sistem yang mempertimbangkan solusi yang kami usulkan akan menghasilkan persaingan yang sehat antara sistem kas elektronik yang berbeda. Kami juga mengusulkan uang elektronik kami sendiri, “CryptoNote”, sebuah nama yang menekankan terobosan berikutnya dalam uang elektronik. 2 Bitcoin kekurangan dan beberapa kemungkinan solusi 2.1 Ketertelusuran transaksi Privasi dan anonimitas adalah aspek terpenting dari uang elektronik. Pembayaran antar rekan berusaha untuk disembunyikan dari pandangan pihak ketiga, perbedaan yang nyata jika dibandingkan dengan tradisional perbankan. Secara khusus, T. Okamoto dan K. Ohta menjelaskan enam kriteria uang elektronik yang ideal, yang mencakup “privasi: hubungan antara pengguna dan pembeliannya harus tidak dapat dilacak oleh siapa pun” [30]. Dari uraiannya, kami memperoleh dua properti yang sepenuhnya anonim model uang elektronik harus memenuhi persyaratan yang digariskan oleh Okamoto dan Ohta: Untraceability: untuk setiap transaksi masuk, semua pengirim yang mungkin memiliki kemungkinan yang sama. Tidak dapat dihubungkan: untuk dua transaksi keluar mana pun, tidak mungkin dibuktikan bahwa mereka telah dikirim orang yang sama. Sayangnya, Bitcoin tidak memenuhi persyaratan tidak dapat dilacak. Karena semua transaksi yang terjadi di antara peserta jaringan bersifat publik, maka transaksi apa pun bisa bersifat publik 1 3 Bitcoin pasti gagal dalam "tidak dapat dilacak". Saat saya mengirimi Anda BTC, dompet asal pengirimannya dicap secara tidak dapat ditarik kembali pada blockchain. Tidak ada pertanyaan tentang siapa yang mengirim dana tersebut, karena hanya orang yang mengetahui kunci privat yang dapat mengirimkannya.ditelusuri secara jelas ke asal yang unik dan penerima akhir. Bahkan jika dua peserta bertukar dana secara tidak langsung, metode pencarian jalur yang dirancang dengan baik akan mengungkap asal usul dan penerima akhir. Diduga juga Bitcoin tidak memenuhi properti kedua. Beberapa peneliti menyatakan ([33, 35, 29, 31]) bahwa analisis blockchain yang cermat dapat mengungkapkan hubungan antara pengguna jaringan Bitcoin dan transaksinya. Meskipun ada beberapa metode yang bisa dilakukan disengketakan [25], diduga banyak informasi pribadi tersembunyi yang dapat diambil dari basis data publik. Kegagalan Bitcoin dalam memenuhi kedua sifat yang diuraikan di atas membuat kita menyimpulkan bahwa hal tersebut memang benar adanya bukan sistem kas elektronik anonim melainkan sistem kas elektronik pseudo-anonim. Pengguna cepat berkembang solusi untuk menghindari kelemahan ini. Dua solusi langsung adalah “layanan pencucian” [2] dan pengembangan metode terdistribusi [3, 4]. Kedua solusi tersebut didasarkan pada gagasan pencampuran beberapa transaksi publik dan mengirimkannya melalui beberapa alamat perantara; yang pada gilirannya menderita kelemahan karena membutuhkan pihak ketiga yang tepercaya. Baru-baru ini, skema yang lebih kreatif diusulkan oleh I. Miers dkk. [28]: “Nolkoin”. nol koin menggunakan akumulator kriptografi satu arah dan bukti tanpa pengetahuan yang memungkinkan pengguna melakukannya “konversi” bitcoin menjadi zerocoin dan belanjakan menggunakan bukti kepemilikan anonim tanda tangan digital berbasis kunci publik yang eksplisit. Namun, bukti-bukti pengetahuan tersebut mempunyai keteguhan tetapi ukurannya tidak nyaman - sekitar 30kb (berdasarkan batas Bitcoin saat ini), yang membuat proposal tidak praktis. Penulis mengakui bahwa protokol tersebut kemungkinan besar tidak akan pernah diterima oleh mayoritas orang Bitcoin pengguna [5]. 2.2 Fungsi proof-of-work Pencipta Bitcoin Satoshi Nakamoto mendeskripsikan algoritme pengambilan keputusan mayoritas sebagai “oneCPU-one-vote” dan menggunakan fungsi penetapan harga yang terikat CPU (ganda SHA-256) untuk proof-of-work miliknya skema. Karena pengguna memilih satu riwayat transaksi pesanan [1], kewajaran dan Konsistensi proses ini merupakan kondisi kritis bagi keseluruhan sistem. Keamanan model ini memiliki dua kelemahan. Pertama, ini membutuhkan 51% jaringan kekuatan penambangan berada di bawah kendali pengguna yang jujur. Kedua, kemajuan sistem (perbaikan bug, perbaikan keamanan, dll...) mengharuskan sebagian besar pengguna untuk mendukung dan menyetujuinya perubahan (ini terjadi ketika pengguna memperbarui perangkat lunak dompet mereka) [6]. Akhirnya pemungutan suara yang sama Mekanisme ini juga digunakan untuk jajak pendapat kolektif tentang penerapan beberapa fitur [7]. Hal ini memungkinkan kita untuk menduga sifat-sifat yang harus dipenuhi oleh proof-of-work fungsi penetapan harga. Fungsi tersebut tidak boleh memungkinkan peserta jaringan untuk memiliki signifikansi keunggulan dibandingkan peserta lain; itu membutuhkan keseimbangan antara perangkat keras umum dan perangkat keras tinggi biaya perangkat khusus. Dari contoh terbaru [8], kita dapat melihat bahwa fungsi SHA-256 digunakan dalam arsitektur Bitcoin tidak memiliki properti ini karena penambangan menjadi lebih efisien pada GPU dan perangkat ASIC jika dibandingkan dengan CPU kelas atas. Oleh karena itu, Bitcoin menciptakan kondisi yang menguntungkan bagi kesenjangan yang besar antara hak suara peserta karena melanggar prinsip “satu CPU-satu suara” yang dimiliki oleh pemilik GPU dan ASIC hak suara yang jauh lebih besar jika dibandingkan dengan pemilik CPU. Ini adalah contoh klasik dari Prinsip Pareto dimana 20% peserta sistem mengontrol lebih dari 80% suara. Ada yang berpendapat bahwa ketidaksetaraan tersebut tidak relevan dengan keamanan jaringan karena memang tidak relevan jumlah peserta yang sedikit menguasai suara mayoritas tetapi kejujurannya peserta yang penting. Akan tetapi, argumen tersebut agak cacat karena justru merupakan argumen yang salah kemungkinan munculnya perangkat keras khusus yang murah daripada kejujuran peserta yang mana menimbulkan ancaman. Untuk mendemonstrasikannya, mari kita ambil contoh berikut. Misalkan seorang yang jahat individu memperoleh kekuatan penambangan yang signifikan dengan menciptakan lahan penambangannya sendiri dengan biaya murah 2 ditelusuri secara jelas ke asal yang unik dan penerima akhir. Bahkan jika dua peserta bertukar dana secara tidak langsung, metode pencarian jalur yang dirancang dengan baik akan mengungkap asal usul dan penerima akhir. Diduga juga Bitcoin tidak memenuhi properti kedua. Beberapa peneliti menyatakan ([33, 35, 29, 31]) bahwa analisis blockchain yang cermat dapat mengungkapkan hubungan antara pengguna jaringan Bitcoin dan transaksinya. Meskipun ada beberapa metode yang bisa dilakukan ddisengketakan [25], diduga banyak informasi pribadi tersembunyi yang dapat diekstraksi dari basis data publik. Kegagalan Bitcoin dalam memenuhi dua sifat yang diuraikan di atas membuat kita menyimpulkan bahwa hal tersebut memang benar adanya bukan sistem kas elektronik anonim melainkan sistem kas elektronik pseudo-anonim. Pengguna cepat berkembang solusi untuk menghindari kelemahan ini. Dua solusi langsung adalah “layanan pencucian” [2] dan pengembangan metode terdistribusi [3, 4]. Kedua solusi tersebut didasarkan pada gagasan pencampuran beberapa transaksi publik dan mengirimkannya melalui beberapa alamat perantara; yang pada gilirannya menderita kelemahan karena membutuhkan pihak ketiga yang tepercaya. Baru-baru ini, skema yang lebih kreatif diusulkan oleh I. Miers dkk. [28]: “Nolkoin”. nol koin menggunakan akumulator kriptografi satu arah dan bukti tanpa pengetahuan yang memungkinkan pengguna melakukannya “konversi” bitcoin menjadi zerocoin dan belanjakan menggunakan bukti kepemilikan anonim tanda tangan digital berbasis kunci publik yang eksplisit. Namun, bukti-bukti pengetahuan tersebut mempunyai keteguhan tetapi ukurannya tidak nyaman - sekitar 30kb (berdasarkan batas Bitcoin saat ini), yang membuat proposal tidak praktis. Penulis mengakui bahwa protokol tersebut kemungkinan besar tidak akan pernah diterima oleh mayoritas orang Bitcoin pengguna [5]. 2.2 Fungsi proof-of-work Pencipta Bitcoin Satoshi Nakamoto mendeskripsikan algoritme pengambilan keputusan mayoritas sebagai “oneCPU-one-vote” dan menggunakan fungsi penetapan harga yang terikat CPU (ganda SHA-256) untuk proof-of-work miliknya skema. Karena pengguna memilih satu riwayat transaksi pesanan [1], kewajaran dan Konsistensi proses ini merupakan kondisi kritis bagi keseluruhan sistem. Keamanan model ini memiliki dua kelemahan. Pertama, ini membutuhkan 51% jaringan kekuatan penambangan berada di bawah kendali pengguna yang jujur. Kedua, kemajuan sistem (perbaikan bug, perbaikan keamanan, dll...) mengharuskan sebagian besar pengguna untuk mendukung dan menyetujuinya perubahan (ini terjadi ketika pengguna memperbarui perangkat lunak dompet mereka) [6]. Akhirnya pemungutan suara yang sama Mekanisme ini juga digunakan untuk jajak pendapat kolektif tentang penerapan beberapa fitur [7]. Hal ini memungkinkan kita untuk menduga sifat-sifat yang harus dipenuhi oleh proof-of-work fungsi penetapan harga. Fungsi tersebut tidak boleh memungkinkan peserta jaringan untuk memiliki signifikansi keunggulan dibandingkan peserta lain; itu membutuhkan keseimbangan antara perangkat keras umum dan perangkat keras tinggi biaya perangkat khusus. Dari contoh terbaru [8], kita dapat melihat bahwa fungsi SHA-256 digunakan dalam arsitektur Bitcoin tidak memiliki properti ini karena penambangan menjadi lebih efisien GPU dan perangkat ASIC jika dibandingkan dengan CPU kelas atas. Oleh karena itu, Bitcoin menciptakan kondisi yang menguntungkan bagi kesenjangan yang besar antara hak suara peserta karena melanggar prinsip “satu CPU-satu suara” yang dimiliki oleh pemilik GPU dan ASIC hak suara yang jauh lebih besar jika dibandingkan dengan pemilik CPU. Ini adalah contoh klasik dari Prinsip Pareto dimana 20% peserta sistem mengontrol lebih dari 80% suara. Ada yang berpendapat bahwa ketidaksetaraan tersebut tidak relevan dengan keamanan jaringan karena memang tidak relevan jumlah peserta yang sedikit menguasai suara mayoritas tetapi kejujurannya peserta yang penting. Akan tetapi, argumen tersebut agak cacat karena justru merupakan argumen yang salah kemungkinan munculnya perangkat keras khusus yang murah daripada kejujuran peserta yang mana menimbulkan ancaman. Untuk mendemonstrasikannya, mari kita ambil contoh berikut. Misalkan seorang yang jahat individu memperoleh kekuatan penambangan yang signifikan dengan menciptakan lahan penambangannya sendiri dengan biaya murah 2 4 Agaknya, jika setiap pengguna membantu anonimitas mereka dengan selalu membuat alamat baru untuk SETIAP pembayaran yang diterima (yang tidak masuk akal tetapi secara teknis merupakan cara yang "benar" untuk melakukannya), dan jika setiap pengguna membantu anonimitas orang lain dengan bersikeras bahwa mereka tidak pernah mengirim dana ke alamat BTC yang sama dua kali, maka Bitcoin hanya akan secara tidak langsung meneruskan tes ketidakterhubungan. Mengapa? Data konsumen dapat digunakan untuk mengetahui banyak hal tentang orang-orang sepanjang waktu. Lihat, misalnya http://www.applieddatalabs.com/content/target-knows-it-shows Sekarang, bayangkan ini 20 tahun ke depan dan bayangkan lebih jauh bahwa Target tidak mengetahuinya begitu saja tentang kebiasaan pembelian Anda di Target, tetapi mereka telah menambang blockchain untuk SEMUANYA PEMBELIAN PRIBADI ANDA DENGAN DOMPET COINBASE ANDA UNTUK MASA LALU DUA BELAS TAHUN. Mereka akan berkata, "hai sobat, kamu mungkin ingin membeli obat batuk malam ini, tapi kamu tidak akan melakukannya merasa sehat besok." Hal ini mungkin tidak terjadi jika penyortiran multi-pihak dieksploitasi dengan benar. Lihat, misalnya, inientri blog: http://blog.ezyang.com/2012/07/secure-multiparty-bitcoin-anonymization/ Saya tidak sepenuhnya yakin dengan perhitungan matematisnya, tapi... satu makalah pada satu waktu, bukan? Diperlukan kutipan. Meskipun protokol Zerocoin (mandiri) mungkin tidak mencukupi, Zerocash protokol tampaknya telah menerapkan transaksi berukuran 1kb. Proyek itu didukung oleh tentu saja militer AS dan Israel, jadi siapa yang tahu tentang ketangguhannya. Di sisi lain Di sisi lain, tidak ada orang yang lebih ingin mengeluarkan dana tanpa pengawasan selain pihak militer. http://zerocash-project.org/ Saya tidak yakin... lihat, misalnya, http://fc14.ifca.ai/bitcoin/papers/bitcoin14_submission_12.pdf Mengutip pengembang Cryptonote Maurice Planck (mungkin nama samaran) dari cryptonote tersebut forum: "Zerocoin, Zerocash. Harus saya akui, ini adalah teknologi tercanggih. Ya, kutipannya di atas adalah dari analisis protokol versi sebelumnya. Sepengetahuan saya, ternyata tidak 288, tapi 384 byte, tapi bagaimanapun ini adalah kabar baik. Mereka menggunakan teknik baru yang disebut SNARK, yang memiliki kelemahan tertentu: misalnya, database awal yang besar dari parameter publik yang diperlukan untuk membuat tanda tangan (lebih dari 1 GB) dan waktu yang signifikan diperlukan untuk membuat transaksi (lebih dari satu menit). Akhirnya, mereka menggunakan a crypto muda, yang saya sebutkan sebagai ide yang bisa diperdebatkan: https://forum.cryptonote.org/viewtopic.php?f= " - Maurice P. Kam 03 Apr 2014 19:56 Fungsi yang dijalankan di CPU dan tidak cocok untuk GPU, FPGA, atau ASIC komputasi. "Teka-teki" yang digunakan di proof-of-work disebut sebagai fungsi harga, fungsi biaya, atau fungsi teka-teki.

ditelusuri secara jelas ke asal yang unik dan penerima akhir. Bahkan jika dua peserta bertukar dana secara tidak langsung, metode pencarian jalur yang dirancang dengan baik akan mengungkap asal usul dan penerima akhir. Diduga juga Bitcoin tidak memenuhi properti kedua. Beberapa peneliti menyatakan ([33, 35, 29, 31]) bahwa analisis blockchain yang cermat dapat mengungkapkan hubungan antara pengguna jaringan Bitcoin dan transaksinya. Meskipun ada beberapa metode yang bisa dilakukan disengketakan [25], diduga banyak informasi pribadi tersembunyi yang dapat diambil dari basis data publik. Kegagalan Bitcoin dalam memenuhi kedua sifat yang diuraikan di atas membuat kita menyimpulkan bahwa hal tersebut memang benar adanya bukan sistem kas elektronik anonim melainkan sistem kas elektronik pseudo-anonim. Pengguna cepat berkembang solusi untuk menghindari kelemahan ini. Dua solusi langsung adalah “layanan pencucian” [2] dan pengembangan metode terdistribusi [3, 4]. Kedua solusi tersebut didasarkan pada gagasan pencampuran beberapa transaksi publik dan mengirimkannya melalui beberapa alamat perantara; yang pada gilirannya menderita kelemahan karena membutuhkan pihak ketiga yang tepercaya. Baru-baru ini, skema yang lebih kreatif diusulkan oleh I. Miers dkk. [28]: “Nolkoin”. nol koin menggunakan akumulator kriptografi satu arah dan bukti tanpa pengetahuan yang memungkinkan pengguna melakukannya “konversi” bitcoin menjadi zerocoin dan belanjakan menggunakan bukti kepemilikan anonim tanda tangan digital berbasis kunci publik yang eksplisit. Namun, bukti-bukti pengetahuan tersebut mempunyai keteguhan tetapi ukurannya tidak nyaman - sekitar 30kb (berdasarkan batas Bitcoin hari ini), yang membuat proposal tidak praktis. Penulis mengakui bahwa protokol tersebut kemungkinan besar tidak akan pernah diterima oleh mayoritas orang Bitcoin pengguna [5]. 2.2 Fungsi proof-of-work Pencipta Bitcoin Satoshi Nakamoto mendeskripsikan algoritme pengambilan keputusan mayoritas sebagai “oneCPU-one-vote” dan menggunakan fungsi penetapan harga yang terikat CPU (ganda SHA-256) untuk proof-of-work miliknya skema. Karena pengguna memilih satu riwayat transaksi pesanan [1], kewajaran dan Konsistensi proses ini merupakan kondisi kritis bagi keseluruhan sistem. Keamanan model ini memiliki dua kelemahan. Pertama, ini membutuhkan 51% jaringan kekuatan penambangan berada di bawah kendali pengguna yang jujur. Kedua, kemajuan sistem (perbaikan bug, perbaikan keamanan, dll...) mengharuskan sebagian besar pengguna untuk mendukung dan menyetujuinya perubahan (ini terjadi ketika pengguna memperbarui perangkat lunak dompet mereka) [6]. Akhirnya pemungutan suara yang sama Mekanisme ini juga digunakan untuk jajak pendapat kolektif tentang penerapan beberapa fitur [7]. Hal ini memungkinkan kita untuk menduga sifat-sifat yang harus dipenuhi oleh proof-of-work fungsi penetapan harga. Fungsi tersebut tidak boleh memungkinkan peserta jaringan untuk memiliki signifikansi keunggulan dibandingkan peserta lain; itu membutuhkan keseimbangan antara perangkat keras umum dan perangkat keras tinggi biaya perangkat khusus. Dari contoh terbaru [8], kita dapat melihat bahwa fungsi SHA-256 digunakan dalam arsitektur Bitcoin tidak memiliki properti ini karena penambangan menjadi lebih efisien pada GPU dan perangkat ASIC jika dibandingkan dengan CPU kelas atas. Oleh karena itu, Bitcoin menciptakan kondisi yang menguntungkan bagi kesenjangan yang besar antara hak suara peserta karena melanggar prinsip “satu CPU-satu suara” yang dimiliki oleh pemilik GPU dan ASIC hak suara yang jauh lebih besar jika dibandingkan dengan pemilik CPU. Ini adalah contoh klasik dari Prinsip Pareto dimana 20% peserta sistem mengontrol lebih dari 80% suara. Ada yang berpendapat bahwa ketidaksetaraan tersebut tidak relevan dengan keamanan jaringan karena memang tidak relevan jumlah peserta yang sedikit menguasai suara mayoritas tetapi kejujurannya peserta yang penting. Akan tetapi, argumen tersebut agak cacat karena justru merupakan argumen yang salah kemungkinan munculnya perangkat keras khusus yang murah daripada kejujuran peserta yang mana menimbulkan ancaman. Untuk mendemonstrasikannya, mari kita ambil contoh berikut. Misalkan seorang yang jahat individu memperoleh kekuatan penambangan yang signifikan dengan menciptakan lahan penambangannya sendiri dengan biaya murah 2 ditelusuri secara jelas ke asal yang unik dan penerima akhir. Bahkan jika dua peserta bertukar dana secara tidak langsung, metode pencarian jalur yang dirancang dengan baik akan mengungkap asal usul dan penerima akhir. Diduga juga Bitcoin tidak memenuhi properti kedua. Beberapa peneliti menyatakan ([33, 35, 29, 31]) bahwa analisis blockchain yang cermat dapat mengungkapkan hubungan antara pengguna jaringan Bitcoin dan transaksinya. Meskipun ada beberapa metode yang bisa dilakukan ddisengketakan [25], diduga banyak informasi pribadi tersembunyi yang dapat diekstraksi dari basis data publik. Kegagalan Bitcoin dalam memenuhi kedua sifat yang diuraikan di atas membuat kita menyimpulkan bahwa hal tersebut memang benar adanya bukan sistem kas elektronik anonim melainkan sistem kas elektronik pseudo-anonim. Pengguna cepat berkembang solusi untuk menghindari kelemahan ini. Dua solusi langsung adalah “layanan pencucian” [2] dan pengembangan metode terdistribusi [3, 4]. Kedua solusi tersebut didasarkan pada gagasan pencampuran beberapa transaksi publik dan mengirimkannya melalui beberapa alamat perantara; yang pada gilirannya menderita kelemahan karena membutuhkan pihak ketiga yang tepercaya. Baru-baru ini, skema yang lebih kreatif diusulkan oleh I. Miers dkk. [28]: “Nolkoin”. nol koin menggunakan akumulator kriptografi satu arah dan bukti tanpa pengetahuan yang memungkinkan pengguna melakukannya “konversi” bitcoin menjadi zerocoin dan belanjakan menggunakan bukti kepemilikan anonim tanda tangan digital berbasis kunci publik yang eksplisit. Namun, bukti-bukti pengetahuan tersebut mempunyai keteguhan tetapi ukurannya tidak nyaman - sekitar 30kb (berdasarkan batas Bitcoin saat ini), yang membuat proposal tidak praktis. Penulis mengakui bahwa protokol tersebut kemungkinan besar tidak akan pernah diterima oleh mayoritas orang Bitcoin pengguna [5]. 2.2 Fungsi proof-of-work Pencipta Bitcoin Satoshi Nakamoto mendeskripsikan algoritme pengambilan keputusan mayoritas sebagai “oneCPU-one-vote” dan menggunakan fungsi penetapan harga yang terikat CPU (ganda SHA-256) untuk proof-of-work miliknya skema. Karena pengguna memilih satu riwayat transaksi pesanan [1], kewajaran dan Konsistensi proses ini merupakan kondisi kritis bagi keseluruhan sistem. Keamanan model ini memiliki dua kelemahan. Pertama, ini membutuhkan 51% jaringan kekuatan penambangan berada di bawah kendali pengguna yang jujur. Kedua, kemajuan sistem (perbaikan bug, perbaikan keamanan, dll...) mengharuskan sebagian besar pengguna untuk mendukung dan menyetujuinya perubahan (ini terjadi ketika pengguna memperbarui perangkat lunak dompet mereka) [6]. Akhirnya pemungutan suara yang sama Mekanisme ini juga digunakan untuk jajak pendapat kolektif tentang penerapan beberapa fitur [7]. Hal ini memungkinkan kita untuk menduga sifat-sifat yang harus dipenuhi oleh proof-of-work fungsi penetapan harga. Fungsi tersebut tidak boleh memungkinkan peserta jaringan untuk memiliki signifikansi keunggulan dibandingkan peserta lain; itu membutuhkan keseimbangan antara perangkat keras umum dan perangkat keras tinggi biaya perangkat khusus. Dari contoh terbaru [8], kita dapat melihat bahwa fungsi SHA-256 digunakan dalam arsitektur Bitcoin tidak memiliki properti ini karena penambangan menjadi lebih efisien pada GPU dan perangkat ASIC jika dibandingkan dengan CPU kelas atas. Oleh karena itu, Bitcoin menciptakan kondisi yang menguntungkan bagi kesenjangan yang besar antara hak suara peserta karena melanggar prinsip “satu CPU-satu suara” yang dimiliki oleh pemilik GPU dan ASIC hak suara yang jauh lebih besar jika dibandingkan dengan pemilik CPU. Ini adalah contoh klasik dari Prinsip Pareto dimana 20% peserta sistem mengontrol lebih dari 80% suara. Ada yang berpendapat bahwa ketidaksetaraan tersebut tidak relevan dengan keamanan jaringan karena memang tidak relevan jumlah peserta yang sedikit menguasai suara mayoritas tetapi kejujurannya peserta yang penting. Akan tetapi, argumen tersebut agak cacat karena justru merupakan argumen yang salah kemungkinan munculnya perangkat keras khusus yang murah daripada kejujuran peserta yang mana menimbulkan ancaman. Untuk mendemonstrasikannya, mari kita ambil contoh berikut. Misalkan seorang yang jahat individu memperoleh kekuatan penambangan yang signifikan dengan menciptakan lahan penambangannya sendiri dengan biaya murah 2 Komentar di halaman 2

A tecnologia CryptoNote

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

Teknologi CryptoNote

Sekarang kita telah membahas keterbatasan teknologi Bitcoin, kita akan berkonsentrasi pada hal tersebut menyajikan fitur-fitur 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

Transaksi yang Tidak Dapat Dilacak

Pada bagian ini kami mengusulkan skema transaksi anonim yang memenuhi kedua kondisi tidak dapat dilacak dan kondisi tidak dapat dihubungkan. Fitur penting dari solusi kami adalah otonominya: pengirim tidak diharuskan bekerja sama dengan pengguna lain atau pihak ketiga yang dipercaya untuk melakukan transaksinya; karenanya setiap peserta menghasilkan lalu lintas sampul secara mandiri. 4.1 Tinjauan literatur Skema kami bergantung pada primitif kriptografi yang disebut tanda tangan grup. Pertama kali disajikan oleh D. Chaum dan E. van Heyst [19], memungkinkan pengguna untuk menandatangani pesannya atas nama grup. Setelah menandatangani pesan, pengguna memberikan (untuk tujuan verifikasi) bukan pesan publiknya sendiri 1Ini disebut “batas lunak” — batasan klien referensi untuk membuat blok baru. Keras maksimal kemungkinan ukuran blokir adalah 1 MB 4 mereka jika perlu yang menyebabkan kelemahan utama. Sayangnya, sulit untuk memprediksi kapan hal tersebut akan terjadi konstanta mungkin perlu diubah dan menggantinya dapat menimbulkan konsekuensi yang buruk. Contoh bagus dari perubahan batas hardcode yang menyebabkan konsekuensi bencana adalah pemblokiran batas ukuran disetel ke 250kb1. Batas ini cukup untuk menampung sekitar 10.000 transaksi standar. Di awal tahun 2013, batas tersebut hampir tercapai dan tercapai kesepakatan untuk meningkatkannya batas. Perubahan tersebut diterapkan pada dompet versi 0.8 dan diakhiri dengan pemisahan rantai 24 blok dan serangan pembelanjaan ganda yang berhasil [9]. Meskipun bugnya bukan pada protokol Bitcoin, tapi melainkan di mesin database, hal itu bisa dengan mudah ditangkap dengan stress test sederhana jika ada tidak ada batasan ukuran blok yang diperkenalkan secara artifisial. Konstanta juga berperan sebagai bentuk titik sentralisasi. Meskipun bersifat peer-to-peer Bitcoin, sebagian besar node menggunakan klien referensi resmi [10] yang dikembangkan oleh sekelompok kecil orang. Kelompok ini membuat keputusan untuk menerapkan perubahan pada protokol dan kebanyakan orang menerima perubahan ini terlepas dari “kebenarannya”. Beberapa keputusan menyebabkan diskusi yang memanas bahkan seruan boikot [11], yang menandakan bahwa komunitas dan pengembang mungkin tidak setuju pada beberapa poin penting. Oleh karena itu tampaknya logis untuk memiliki protokol dengan variabel yang dapat dikonfigurasi pengguna dan dapat disesuaikan sendiri sebagai cara yang mungkin untuk menghindari masalah ini. 2.5 Skrip besar Sistem skrip di Bitcoin adalah fitur yang berat dan kompleks. Ini berpotensi memungkinkan seseorang untuk berkreasi transaksi canggih [12], namun beberapa fiturnya dinonaktifkan karena masalah keamanan dan bahkan ada yang belum pernah dipakai [13]. Naskah (termasuk bagian pengirim dan penerima) untuk transaksi terpopuler di Bitcoin tampilannya seperti ini: OP DUP OP HASH160 OP SAMAKAN VERIFIKASI OP CHECKSIG. Skrip ini panjangnya 164 byte sedangkan tujuan satu-satunya adalah untuk memeriksa apakah penerima memilikinya kunci rahasia diperlukan untuk memverifikasi tanda tangannya. 3 Teknologi CryptoNote Sekarang kita telah membahas keterbatasan teknologi Bitcoin, kita akan berkonsentrasi pada hal tersebut menyajikan fitur-fitur CryptoNote. 4 Transaksi yang Tidak Dapat Dilacak Pada bagian ini kami mengusulkan skema transaksi anonim yang memenuhi kedua kondisi tidak dapat dilacak dan kondisi tidak dapat dihubungkan. Fitur penting dari solusi kami adalah otonominya: pengirim tidak diharuskan bekerja sama dengan pengguna lain atau pihak ketiga yang dipercaya untuk melakukan transaksinya; karenanya setiap peserta menghasilkan lalu lintas sampul secara mandiri. 4.1 Tinjauan literatur Skema kami bergantung pada primitif kriptografi yang disebut tanda tangan grup. Pertama kali disajikan oleh D. Chaum dan E. van Heyst [19], memungkinkan pengguna untuk menandatangani pesannya atas nama grup. Setelah menandatangani pesan, pengguna memberikan (untuk tujuan verifikasi) bukan pesan publiknya sendiri 1Ini disebut “batas lunak” — batasan klien referensi untuk membuat blok baru. Keras maksimal kemungkinan ukuran blokir adalah 1 MB 4 7 Jika dipikir-pikir lagi, tampaknya merupakan kesalahan besar jika menjadikan ukuran blok sebagai batas tetap dalam kode. Visa dan Mastercard dapat memproses ribuan, bahkan ratusan ribu transaksi per detik. Namun, transaksi terjadi dalam proses stokastik, terkadang dalam ledakan besar, terkadang diam berjam-jam. Pikirkan volume pertukaran bitcoin. Sepertinya ide bagus untuk merancang sistem yang meningkatkan ukuran blok secara dinamis bila diperlukan untuk mengakomodasi peningkatan lalu lintas transaksi, dan menguranginya secara dinamis bila diperlukan meningkatkan efisiensi bandwidth. Sekarang, terapkan gagasan itu ke semua parameter sistem. Dan selama kita berhati-hati dalam menjaganya sistem dari fishtailing di luar kendali, sh inibisa bekerja dengan baik. https://github.com/bitcoin/bips/blob/master/bip-0050.mediawiki Seperti disebutkan sebelumnya, jika variabel dapat menyesuaikan diri, beberapa kontrol harus diterapkan agar dapat disesuaikan menjaga agar sistem tidak berjalan liar di luar kendali. Kami akan membahasnya. Jika ini adalah artikel wikipedia, maka akan diberi label "STUB". Meskipun kita pasti berada di dalamnya bagian memperkenalkan "Masalah Bitcoin," Saya ingin penjelasan lebih lanjut di sini. Mengapa demikian 164 byte tidak dapat diterima untuk tugas sederhana "periksa kunci rahasia"? Seberapa kecil yang bisa mereka peroleh bahasa skrip yang masuk akal? Tapi saya bukan ilmuwan komputer. http://download.springer.com/static/pdf/412/chp%253A10.1007%252F3-540-46416-6_22.pdf?auth66=140 Tanda tangan grup, seperti yang dijelaskan, memerlukan manajer grup. Manajer grup mampu untuk mencabut anonimitas penanda tangan mana pun. Oleh karena itu, ada sentralisasi yang tertanam dalam suatu kelompok skema tanda tangan.

kunci, tetapi kunci semua pengguna grupnya. Verifier yakin bahwa penandatangan sebenarnya adalah a anggota kelompok, tetapi tidak dapat secara eksklusif mengidentifikasi penandatangannya. Protokol asli memerlukan pihak ketiga yang tepercaya (disebut Manajer Grup), dan dialah yang melakukannya satu-satunya yang bisa melacak penandatangannya. Versi selanjutnya yang disebut tanda tangan cincin, diperkenalkan oleh Rivest dkk. di [34], merupakan skema otonom tanpa Manajer Grup dan anonimitas pencabutan. Berbagai modifikasi skema ini muncul kemudian: tanda tangan cincin yang dapat ditautkan [26, 27, 17] diperbolehkan untuk menentukan apakah dua tanda tangan dihasilkan oleh anggota kelompok yang sama, dapat dilacak tanda tangan cincin [24, 23] membatasi anonimitas berlebihan dengan memberikan kemungkinan untuk melacak penandatangan dua pesan sehubungan dengan metainformasi yang sama (atau “tag” dalam istilah [24]). Konstruksi kriptografi serupa juga dikenal sebagai tanda tangan kelompok ad-hoc [16, 38]. Itu menekankan pembentukan kelompok yang sewenang-wenang, sedangkan skema tanda tangan kelompok/lingkaran lebih menyiratkan a kumpulan anggota yang tetap. Sebagian besar, solusi kami didasarkan pada karya “Traceable Ring Signature” oleh E. Fujisaki dan K.Suzuki [24]. Untuk membedakan algoritma asli dan modifikasi kami, kami akan melakukannya menyebut yang terakhir sebagai tanda dering satu kali, yang menekankan kemampuan pengguna untuk menghasilkan hanya satu tanda dering yang valid tanda tangan di bawah kunci pribadinya. Kami melemahkan properti ketertelusuran dan mempertahankan keterhubungan hanya untuk memberikan ketepatan waktu: kunci publik dapat muncul di banyak set verifikasi asing dan kunci pribadi dapat digunakan untuk menghasilkan tanda tangan anonim yang unik. Jika terjadi pembelanjaan ganda upayakan kedua tanda tangan ini akan dihubungkan bersama, tetapi tidak perlu mengungkapkan penandatangannya untuk tujuan kita. 4.2 Definisi 4.2.1 Parameter kurva elips Sebagai algoritma tanda tangan dasar kami, kami memilih untuk menggunakan skema cepat EdDSA, yang dikembangkan dan dilaksanakan oleh D.J. Bernstein dkk. [18]. Seperti ECDSA Bitcoin, ECDSA ini didasarkan pada kurva elips masalah logaritma diskrit, sehingga skema kami juga dapat diterapkan ke Bitcoin di masa depan. Parameter umum adalah: q: bilangan prima; q = 2255 −19; d: unsur Fq; d = −121665/121666; E: persamaan kurva elips; −x2 + y2 = 1 + dx2y2; G: titik dasar; G = (x, −4/5); l : orde prima dari titik dasar; aku = 2252 + 27742317777372353535851937790883648493; \(H_s\): fungsi kriptografi hash \(\{0, 1\}^* \to \mathbb{F}_q\); \(H_p\): fungsi hash deterministik \(E(\mathbb{F}_q) \to E(\mathbb{F}_q)\). 4.2.2 Terminologi Peningkatan privasi memerlukan terminologi baru yang berbeda dengan entitas Bitcoin. private ec-key adalah kunci privat kurva elips standar: angka \(a \in [1, l - 1]\); kunci ec publik adalah kunci publik kurva elips standar: titik A = aG; pasangan kunci satu kali adalah sepasang kunci pribadi dan publik; 5 kunci, tetapi kunci semua pengguna grupnya. Verifier yakin bahwa penandatangan sebenarnya adalah a anggota kelompok, tetapi tidak dapat secara eksklusif mengidentifikasi penandatangannya. Protokol asli memerlukan pihak ketiga yang tepercaya (disebut Manajer Grup), dan dialah yang melakukannya satu-satunya yang bisa melacak penandatangannya. Versi selanjutnya yang disebut tanda tangan cincin, diperkenalkan oleh Rivest dkk. di [34], merupakan skema otonom tanpa Manajer Grup dan anonimitas pencabutan. Berbagai modifikasi skema ini muncul kemudian: tanda tangan cincin yang dapat ditautkan [26, 27, 17] diperbolehkan untuk menentukan apakah dua tanda tangan dihasilkan oleh anggota kelompok yang sama, dapat dilacak tanda tangan cincin [24, 23] membatasi anonimitas berlebihan dengan memberikan kemungkinan untuk melacak penandatangan dua pesan sehubungan dengan metainformasi yang sama (atau “tag” dalam istilah [24]). Konstruksi kriptografi serupa juga dikenal sebagai tanda tangan kelompok ad-hoc [16, 38]. Itu menekankan pembentukan kelompok yang sewenang-wenang, sedangkan skema tanda tangan kelompok/lingkaran lebih menyiratkan a kumpulan anggota yang tetap. Sebagian besar, solusi kami didasarkan pada karya “Traceable Ring Signature” oleh E. Fujisaki dan K.Suzuki [24]. Untuk membedakan algoritma asli dan modifikasi kami, kami akan melakukannya menyebut yang terakhir sebagai tanda dering satu kali, yang menekankan kemampuan pengguna untuk menghasilkan hanya satu tanda dering yang valid tanda tangan di bawah kunci pribadinya. Kami melemahkan properti ketertelusuran dan mempertahankan keterhubungan hanya untuk memberikan ketepatan waktu: kunci publik dapat muncul di banyak set verifikasi asing dan kunci pribadi dapat digunakan untuk menghasilkan tanda tangan anonim yang unik. Jika terjadi pembelanjaan ganda upayakan kedua tanda tangan ini akan dihubungkan bersama, tetapi tidak perlu mengungkapkan penandatangannya untuk tujuan kita. 4.2 Definisi 4.2.1 Parameter kurva elips Sebagai algoritma tanda tangan dasar, kami memilihe menggunakan skema cepat EdDSA, yang dikembangkan dan dilaksanakan oleh D.J. Bernstein dkk. [18]. Seperti ECDSA Bitcoin, ECDSA ini didasarkan pada kurva elips masalah logaritma diskrit, sehingga skema kami juga dapat diterapkan ke Bitcoin di masa depan. Parameter umum adalah: q: bilangan prima; q = 2255 −19; d: unsur Fq; d = −121665/121666; E: persamaan kurva elips; −x2 + y2 = 1 + dx2y2; G: titik dasar; G = (x, −4/5); l : orde prima dari titik dasar; aku = 2252 + 27742317777372353535851937790883648493; \(H_s\): fungsi kriptografi hash \(\{0, 1\}^* \to \mathbb{F}_q\); \(H_p\): fungsi hash deterministik \(E(\mathbb{F}_q) \to E(\mathbb{F}_q)\). 4.2.2 Terminologi Privasi yang ditingkatkan memerlukan terminologi baru yang berbeda dengan entitas Bitcoin. private ec-key adalah kunci privat kurva elips standar: angka \(a \in [1, l - 1]\); kunci ec publik adalah kunci publik kurva elips standar: titik A = aG; pasangan kunci satu kali adalah sepasang kunci pribadi dan publik; 5 8 Tanda tangan cincin berfungsi seperti ini: Alex ingin membocorkan pesan ke WikiLeaks tentang majikannya. Setiap karyawan di Perusahaannya memiliki pasangan kunci privat/publik (Ri, Ui). Dia menulis tanda tangannya dengan masukan yang ditetapkan sebagai pesannya, m, kunci pribadinya, Ri, dan milik SEMUA ORANG kunci publik, (Ui;i=1...n). Siapa pun (tanpa mengetahui kunci pribadi apa pun) dapat memverifikasinya dengan mudah beberapa pasangan (Rj, Uj) pasti digunakan untuk membuat tanda tangan... seseorang yang bekerja untuk majikan Alex... tapi pada dasarnya ini hanyalah tebakan acak untuk mengetahui perusahaan mana yang dimaksud. 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 Perhatikan bahwa tanda cincin yang dapat ditautkan yang dijelaskan di sini adalah kebalikan dari "tidak dapat ditautkan" dijelaskan di atas. Di sini, kami mencegat dua pesan, dan kami dapat menentukan apakah pesan tersebut sama pihak yang mengirimkannya, meskipun kami masih belum dapat menentukan siapa pihak tersebut. Itu definisi "tidak dapat ditautkan" yang digunakan untuk membuat Cryptonote berarti kita tidak dapat menentukan apakah pihak yang sama menerimanya. Oleh karena itu, apa yang sebenarnya kita miliki di sini adalah EMPAT hal yang terjadi. Suatu sistem dapat ditautkan atau tidak dapat ditautkan, tergantung pada apakah mungkin untuk menentukan apakah pengirimnya dua pesan adalah sama (terlepas dari apakah hal ini memerlukan pencabutan anonimitas). Dan suatu sistem dapat dibatalkan tautannya atau tidak dapat dibatalkan tautannya, bergantung pada apakah hal itu memungkinkan atau tidak menentukan apakah penerima dua pesan itu sama (terlepas dari apakah atau tidak ini memerlukan pencabutan anonimitas). Tolong jangan salahkan saya atas terminologi buruk ini. Para ahli teori grafik mungkin seharusnya begitu senang. Beberapa dari Anda mungkin lebih nyaman dengan "receiver linkable" versus "sender linkable". http://link.springer.com/chapter/10.1007/978-3-540-71677-8_13 Ketika saya membaca ini, ini tampak seperti fitur yang konyol. Kemudian saya membaca bahwa itu mungkin fitur untuk pemungutan suara elektronik, dan itu tampaknya masuk akal. Agak keren, dari sudut pandang itu. Tapi aku tidak sepenuhnya yakin tentang penerapan tanda tangan cincin yang dapat dilacak dengan sengaja. http://search.ieice.org/bin/summary.php?id=e95-a_1_151

kunci, tetapi kunci semua pengguna grupnya. Verifier yakin bahwa penandatangan sebenarnya adalah a anggota kelompok, tetapi tidak dapat secara eksklusif mengidentifikasi penandatangannya. Protokol asli memerlukan pihak ketiga yang tepercaya (disebut Manajer Grup), dan dialah yang melakukannya satu-satunya yang bisa melacak penandatangannya. Versi selanjutnya yang disebut tanda tangan cincin, diperkenalkan oleh Rivest dkk. di [34], merupakan skema otonom tanpa Manajer Grup dan anonimitas pencabutan. Berbagai modifikasi skema ini muncul kemudian: tanda tangan cincin yang dapat ditautkan [26, 27, 17] diperbolehkan untuk menentukan apakah dua tanda tangan dihasilkan oleh anggota kelompok yang sama, dapat dilacak tanda tangan cincin [24, 23] membatasi anonimitas berlebihan dengan memberikan kemungkinan untuk melacak penandatangan dua pesan sehubungan dengan metainformasi yang sama (atau “tag” dalam istilah [24]). Konstruksi kriptografi serupa juga dikenal sebagai tanda tangan kelompok ad-hoc [16, 38]. Itu menekankan pembentukan kelompok yang sewenang-wenang, sedangkan skema tanda tangan kelompok/lingkaran lebih menyiratkan a kumpulan anggota yang tetap. Sebagian besar, solusi kami didasarkan pada karya “Traceable Ring Signature” oleh E. Fujisaki dan K.Suzuki [24]. Untuk membedakan algoritma asli dan modifikasi kami, kami akan melakukannya menyebut yang terakhir sebagai tanda dering satu kali, yang menekankan kemampuan pengguna untuk menghasilkan hanya satu tanda dering yang valid tanda tangan di bawah kunci pribadinya. Kami melemahkan properti ketertelusuran dan mempertahankan keterhubungan hanya untuk memberikan ketepatan waktu: kunci publik dapat muncul di banyak set verifikasi asing dan kunci pribadi dapat digunakan untuk menghasilkan tanda tangan anonim yang unik. Jika terjadi pembelanjaan ganda upayakan kedua tanda tangan ini akan dihubungkan bersama, tetapi tidak perlu mengungkapkan penandatangannya untuk tujuan kita. 4.2 Definisi 4.2.1 Parameter kurva elips Sebagai algoritma tanda tangan dasar kami, kami memilih untuk menggunakan skema cepat EdDSA, yang dikembangkan dan dilaksanakan oleh D.J. Bernstein dkk. [18]. Seperti ECDSA Bitcoin, ECDSA ini didasarkan pada kurva elips masalah logaritma diskrit, sehingga skema kami juga dapat diterapkan ke Bitcoin di masa depan. Parameter umum adalah: q: bilangan prima; q = 2255 −19; d: unsur Fq; d = −121665/121666; E: persamaan kurva elips; −x2 + y2 = 1 + dx2y2; G: titik dasar; G = (x, −4/5); l : orde prima dari titik dasar; aku = 2252 + 27742317777372353535851937790883648493; \(H_s\): fungsi kriptografi hash \(\{0, 1\}^* \to \mathbb{F}_q\); \(H_p\): fungsi hash deterministik \(E(\mathbb{F}_q) \to E(\mathbb{F}_q)\). 4.2.2 Terminologi Privasi yang ditingkatkan memerlukan terminologi baru yang berbeda dengan entitas Bitcoin. private ec-key adalah kunci privat kurva elips standar: angka \(a \in [1, l - 1]\); kunci ec publik adalah kunci publik kurva elips standar: titik A = aG; pasangan kunci satu kali adalah sepasang kunci pribadi dan publik; 5 kunci, tetapi kunci semua pengguna grupnya. Verifier yakin bahwa penandatangan sebenarnya adalah a anggota kelompok, tetapi tidak dapat secara eksklusif mengidentifikasi penandatangannya. Protokol asli memerlukan pihak ketiga yang tepercaya (disebut Manajer Grup), dan dialah yang melakukannya satu-satunya yang bisa melacak penandatangannya. Versi selanjutnya yang disebut tanda tangan cincin, diperkenalkan oleh Rivest dkk. di [34], merupakan skema otonom tanpa Manajer Grup dan anonimitas pencabutan. Berbagai modifikasi skema ini muncul kemudian: tanda tangan cincin yang dapat ditautkan [26, 27, 17] diperbolehkan untuk menentukan apakah dua tanda tangan dihasilkan oleh anggota kelompok yang sama, dapat dilacak tanda tangan cincin [24, 23] membatasi anonimitas berlebihan dengan memberikan kemungkinan untuk melacak penandatangan dua pesan sehubungan dengan metainformasi yang sama (atau “tag” dalam istilah [24]). Konstruksi kriptografi serupa juga dikenal sebagai tanda tangan kelompok ad-hoc [16, 38]. Itu menekankan pembentukan kelompok yang sewenang-wenang, sedangkan skema tanda tangan kelompok/lingkaran lebih menyiratkan a kumpulan anggota yang tetap. Sebagian besar, solusi kami didasarkan pada karya “Traceable Ring Signature” oleh E. Fujisaki dan K.Suzuki [24]. Untuk membedakan algoritma asli dan modifikasi kami, kami akan melakukannya menyebut yang terakhir sebagai tanda dering satu kali, yang menekankan kemampuan pengguna untuk menghasilkan hanya satu tanda dering yang valid tanda tangan di bawah kunci pribadinya. Kami melemahkan properti ketertelusuran dan mempertahankan keterhubungan hanya untuk memberikan ketepatan waktu: kunci publik dapat muncul di banyak set verifikasi asing dan kunci pribadi dapat digunakan untuk menghasilkan tanda tangan anonim yang unik. Jika terjadi pembelanjaan ganda upayakan kedua tanda tangan ini akan dihubungkan bersama, tetapi tidak perlu mengungkapkan penandatangannya untuk tujuan kita. 4.2 Definisi 4.2.1 Parameter kurva elips Sebagai algoritma tanda tangan dasar, kami memilihe menggunakan skema cepat EdDSA, yang dikembangkan dan dilaksanakan oleh D.J. Bernstein dkk. [18]. Seperti ECDSA Bitcoin, ECDSA ini didasarkan pada kurva elips masalah logaritma diskrit, sehingga skema kami juga dapat diterapkan pada Bitcoin di masa mendatang. Parameter umum adalah: q: bilangan prima; q = 2255 −19; d: unsur Fq; d = −121665/121666; E: persamaan kurva elips; −x2 + y2 = 1 + dx2y2; G: titik dasar; G = (x, −4/5); l : orde prima dari titik dasar; aku = 2252 + 27742317777372353535851937790883648493; \(H_s\): fungsi kriptografi hash \(\{0, 1\}^* \to \mathbb{F}_q\); \(H_p\): fungsi hash deterministik \(E(\mathbb{F}_q) \to E(\mathbb{F}_q)\). 4.2.2 Terminologi Privasi yang ditingkatkan memerlukan terminologi baru yang berbeda dengan entitas Bitcoin. private ec-key adalah kunci privat kurva elips standar: angka \(a \in [1, l - 1]\); kunci ec publik adalah kunci publik kurva elips standar: titik A = aG; pasangan kunci satu kali adalah sepasang kunci pribadi dan publik; 5 9 Astaga, penulis whitepaper ini pasti bisa menjelaskannya dengan lebih baik! Katakanlah sebuah perusahaan milik karyawan ingin mengambil suara apakah akan mengakuisisi perusahaan baru tertentu atau tidak aset, dan Alex serta Brenda keduanya adalah karyawan. Perusahaan membekali setiap karyawan a pesan seperti "Saya memilih ya pada Proposisi A!" yang memiliki metainformasi "masalah" [PROP A] dan meminta mereka untuk menandatanganinya dengan tanda cincin yang dapat dilacak jika mereka mendukung proposisi tersebut. Dengan menggunakan tanda tangan cincin tradisional, karyawan yang tidak jujur dapat menandatangani pesan tersebut berkali-kali, mungkin dengan nonce yang berbeda, untuk memilih sebanyak yang mereka suka. Di sisi lain sisi lain, dalam skema tanda tangan cincin yang dapat dilacak, Alex akan memilih, dan kunci pribadinya akan memilikinya telah digunakan pada masalah [PROP A]. Jika Alex mencoba menandatangani pesan seperti "Saya, Brenda, menyetujuinya proposisi A!" untuk "menjebak" Brenda dan memberikan suara ganda, pesan baru ini juga akan menimbulkan masalah [PROP A]. Karena kunci pribadi Alex telah mengatasi masalah [PROP A], identitas Alex akan segera terungkap sebagai penipuan. Jujur saja, itu cukup keren! Kriptografi menegakkan kesetaraan suara. http://link.springer.com/chapter/10.1007/978-3-540-71677-8_13 Makalah ini menarik, pada dasarnya membuat tanda tangan cincin ad-hoc tetapi tanpa satupun persetujuan peserta lain. Struktur tanda tangannya mungkin berbeda; Saya belum menggali dalam, dan saya belum melihat apakah itu aman. https://people.csail.mit.edu/rivest/AdidaHohenbergerRivest-AdHocGroupSignaturesFromHijackedKeypai Tanda tangan kelompok ad-hoc adalah: tanda tangan cincin, yaitu tanda tangan kelompok yang tidak ada kelompoknya manajer, tidak ada sentralisasi, namun mengizinkan anggota dalam kelompok ad-hoc untuk mengklaim hal tersebut mereka (belum) mengeluarkan tanda tangan anonim atas nama grup. http://link.springer.com/chapter/10.1007/11908739_9 Menurut pemahaman saya, ini kurang tepat. Dan pemahaman saya kemungkinan besar akan berubah Saya mendalami proyek ini lebih dalam. Tapi dari pemahaman saya, hierarkinya terlihat seperti ini. Tanda grup: manajer grup mengontrol ketertelusuran dan kemampuan menambah atau menghapus anggota dari menjadi penandatangan. Ring sign : Pembentukan grup secara sewenang-wenang tanpa adanya manajer grup. Tidak ada pencabutan anonimitas. Tidak ada cara untuk menolak diri sendiri dari tanda tangan tertentu. Dengan cincin yang dapat dilacak dan dihubungkan tanda tangan, anonimitas agak terukur. Tanda tangan kelompok ad-hoc: seperti tanda tangan cincin, namun anggota dapat membuktikan bahwa mereka tidak membuat tanda tangan tertentu. Hal ini penting ketika siapa pun dalam kelompok dapat membuat tanda tangan. http://link.springer.com/chapter/10.1007/978-3-540-71677-8_13 Algoritme Fujisaki dan Suzuki kemudian diubah oleh penulis untuk memberikan ketepatan waktu. Jadi kami akan menganalisis algoritma Fujisaki dan Suzuki secara bersamaan dengan algoritma baru daripada membahasnya di sini.

kunci, tetapi kunci semua pengguna grupnya. Verifier yakin bahwa penandatangan sebenarnya adalah a anggota kelompok, tetapi tidak dapat secara eksklusif mengidentifikasi penandatangannya. Protokol asli memerlukan pihak ketiga yang tepercaya (disebut Manajer Grup), dan dialah yang melakukannya satu-satunya yang bisa melacak penandatangannya. Versi selanjutnya yang disebut tanda tangan cincin, diperkenalkan oleh Rivest dkk. di [34], merupakan skema otonom tanpa Manajer Grup dan anonimitas pencabutan. Berbagai modifikasi skema ini muncul kemudian: tanda tangan cincin yang dapat ditautkan [26, 27, 17] diperbolehkan untuk menentukan apakah dua tanda tangan dihasilkan oleh anggota kelompok yang sama, dapat dilacak tanda tangan cincin [24, 23] membatasi anonimitas berlebihan dengan memberikan kemungkinan untuk melacak penandatangan dua pesan sehubungan dengan metainformasi yang sama (atau “tag” dalam istilah [24]). Konstruksi kriptografi serupa juga dikenal sebagai tanda tangan kelompok ad-hoc [16, 38]. Itu menekankan pembentukan kelompok yang sewenang-wenang, sedangkan skema tanda tangan kelompok/lingkaran lebih menyiratkan a kumpulan anggota yang tetap. Sebagian besar, solusi kami didasarkan pada karya “Traceable Ring Signature” oleh E. Fujisaki dan K.Suzuki [24]. Untuk membedakan algoritma asli dan modifikasi kami, kami akan melakukannya menyebut yang terakhir sebagai tanda dering satu kali, yang menekankan kemampuan pengguna untuk menghasilkan hanya satu tanda dering yang valid tanda tangan di bawah kunci pribadinya. Kami melemahkan properti ketertelusuran dan mempertahankan keterhubungan hanya untuk memberikan ketepatan waktu: kunci publik dapat muncul di banyak set verifikasi asing dan kunci pribadi dapat digunakan untuk menghasilkan tanda tangan anonim yang unik. Jika terjadi pembelanjaan ganda upayakan kedua tanda tangan ini akan dihubungkan bersama, tetapi tidak perlu mengungkapkan penandatangannya untuk tujuan kita. 4.2 Definisi 4.2.1 Parameter kurva elips Sebagai algoritma tanda tangan dasar kami, kami memilih untuk menggunakan skema cepat EdDSA, yang dikembangkan dan dilaksanakan oleh D.J. Bernstein dkk. [18]. Seperti ECDSA Bitcoin, ECDSA ini didasarkan pada kurva elips masalah logaritma diskrit, sehingga skema kami juga dapat diterapkan ke Bitcoin di masa depan. Parameter umum adalah: q: bilangan prima; q = 2255 −19; d: unsur Fq; d = −121665/121666; E: persamaan kurva elips; −x2 + y2 = 1 + dx2y2; G: titik dasar; G = (x, −4/5); l : orde prima dari titik dasar; aku = 2252 + 27742317777372353535851937790883648493; \(H_s\): fungsi kriptografi hash \(\{0, 1\}^* \to \mathbb{F}_q\); \(H_p\): fungsi hash deterministik \(E(\mathbb{F}_q) \to E(\mathbb{F}_q)\). 4.2.2 Terminologi Privasi yang ditingkatkan memerlukan terminologi baru yang berbeda dengan entitas Bitcoin. private ec-key adalah kunci privat kurva elips standar: angka \(a \in [1, l - 1]\); kunci ec publik adalah kunci publik kurva elips standar: titik A = aG; pasangan kunci satu kali adalah sepasang kunci pribadi dan publik; 5 kunci, tetapi kunci semua pengguna grupnya. Verifier yakin bahwa penandatangan sebenarnya adalah a anggota kelompok, tetapi tidak dapat secara eksklusif mengidentifikasi penandatangannya. Protokol asli memerlukan pihak ketiga yang tepercaya (disebut Manajer Grup), dan dialah yang melakukannya satu-satunya yang bisa melacak penandatangannya. Versi selanjutnya yang disebut tanda tangan cincin, diperkenalkan oleh Rivest dkk. di [34], merupakan skema otonom tanpa Manajer Grup dan anonimitas pencabutan. Berbagai modifikasi skema ini muncul kemudian: tanda tangan cincin yang dapat ditautkan [26, 27, 17] diperbolehkan untuk menentukan apakah dua tanda tangan dihasilkan oleh anggota kelompok yang sama, dapat dilacak tanda tangan cincin [24, 23] membatasi anonimitas berlebihan dengan memberikan kemungkinan untuk melacak penandatangan dua pesan sehubungan dengan metainformasi yang sama (atau “tag” dalam istilah [24]). Konstruksi kriptografi serupa juga dikenal sebagai tanda tangan kelompok ad-hoc [16, 38]. Itu menekankan pembentukan kelompok yang sewenang-wenang, sedangkan skema tanda tangan kelompok/lingkaran lebih menyiratkan a kumpulan anggota yang tetap. Sebagian besar, solusi kami didasarkan pada karya “Traceable Ring Signature” oleh E. Fujisaki dan K.Suzuki [24]. Untuk membedakan algoritma asli dan modifikasi kami, kami akan melakukannya menyebut yang terakhir sebagai tanda dering satu kali, yang menekankan kemampuan pengguna untuk menghasilkan hanya satu tanda dering yang valid tanda tangan di bawah kunci pribadinya. Kami melemahkan properti ketertelusuran dan mempertahankan keterhubungan hanya untuk memberikan ketepatan waktu: kunci publik dapat muncul di banyak set verifikasi asing dan kunci pribadi dapat digunakan untuk menghasilkan tanda tangan anonim yang unik. Jika terjadi pembelanjaan ganda upayakan kedua tanda tangan ini akan dihubungkan bersama, tetapi tidak perlu mengungkapkan penandatangannya untuk tujuan kita. 4.2 Definisi 4.2.1 Parameter kurva elips Sebagai algoritma tanda tangan dasar, kami memilihe menggunakan skema cepat EdDSA, yang dikembangkan dan dilaksanakan oleh D.J. Bernstein dkk. [18]. Seperti ECDSA Bitcoin, ECDSA ini didasarkan pada kurva elips masalah logaritma diskrit, sehingga skema kami juga dapat diterapkan ke Bitcoin di masa depan. Parameter umum adalah: q: bilangan prima; q = 2255 −19; d: unsur Fq; d = −121665/121666; E: persamaan kurva elips; −x2 + y2 = 1 + dx2y2; G: titik dasar; G = (x, −4/5); l : orde prima dari titik dasar; aku = 2252 + 27742317777372353535851937790883648493; \(H_s\): fungsi kriptografi hash \(\{0, 1\}^* \to \mathbb{F}_q\); \(H_p\): fungsi hash deterministik \(E(\mathbb{F}_q) \to E(\mathbb{F}_q)\). 4.2.2 Terminologi Peningkatan privasi memerlukan terminologi baru yang berbeda dengan entitas Bitcoin. private ec-key adalah kunci privat kurva elips standar: angka \(a \in [1, l - 1]\); kunci ec publik adalah kunci publik kurva elips standar: titik A = aG; pasangan kunci satu kali adalah sepasang kunci pribadi dan publik; 5 10 Keterhubungan dalam arti “tanda tangan cincin yang dapat ditautkan” berarti kita dapat mengetahui apakah dua transaksi keluar berasal dari sumber yang sama tanpa mengungkapkan siapa sumbernya. Para penulis melemah keterhubungan sehingga (a) menjaga privasi, namun tetap (b) mendeteksi transaksi apa pun yang menggunakan kunci pribadi kedua kalinya sebagai tidak sah. Oke, jadi ini pertanyaan urutan kejadian. Pertimbangkan skenario berikut. Penambangan saya komputer akan memiliki blockchain saat ini, ia akan memiliki blok transaksi sendiri yang dipanggilnya sah, ia akan mengerjakan blok itu dalam teka-teki proof-of-work, dan ia akan memiliki daftar transaksi yang tertunda untuk ditambahkan ke blok berikutnya. Itu juga akan mengirimkan yang baru transaksi ke dalam kumpulan transaksi yang tertunda itu. Jika saya tidak menyelesaikan blok berikutnya, tapi orang lain melakukannya, saya mendapatkan salinan terbaru dari blockchain. Blok yang sedang saya kerjakan dan daftar transaksi saya yang tertunda, keduanya mungkin memiliki beberapa transaksi yang sekarang dimasukkan ke dalam blockchain. Buka blok saya yang tertunda, gabungkan itu dengan daftar transaksi saya yang tertunda, dan panggil itu kumpulan transaksi saya yang tertunda. Hapus semua yang sekarang secara resmi ada di blockchain. Sekarang, apa yang harus saya lakukan? Haruskah saya terlebih dahulu melakukan dan "menghapus semua pembelanjaan ganda"? Di sisi lain Sebaliknya, haruskah saya menelusuri daftar dan memastikan bahwa setiap kunci pribadi belum ada digunakan, dan jika sudah digunakan dalam daftar saya, maka saya menerima salinan pertama terlebih dahulu, dan karenanya salinan selanjutnya tidak sah. Jadi saya melanjutkan dengan menghapus semua instance setelah yang pertama dari kunci pribadi yang sama. Geometri aljabar tidak pernah menjadi keahlian saya. http://en.wikipedia.org/wiki/EdDSA Kecepatan seperti itu, wow. INI adalah geometri aljabar untuk kemenangan. Bukannya aku tahu apa pun tentang itu. Masalahnya, atau tidak, log diskrit menjadi sangat cepat. Dan komputer kuantum memakannya untuk sarapan. http://link.springer.com/article/10.1007/s13389-012-0027-1 Ini menjadi angka yang sangat penting, namun tidak ada penjelasan atau kutipan bagaimana caranya dipilih. Cukup dengan memilih satu bilangan prima besar yang diketahui saja sudah cukup, tetapi jika memang ada bilangan prima yang diketahui fakta tentang bilangan prima besar ini, yang dapat memengaruhi pilihan kita. Varian berbeda dari cryptonote dapat memilih nilai yang berbeda eh, tapi belum ada pembahasan di tulisan ini tentang bagaimana caranya pilihan kita akan memengaruhi pilihan kita terhadap parameter global lainnya yang tercantum di halaman 5. Makalah ini memerlukan bagian tentang pemilihan nilai parameter.

kunci pengguna pribadi adalah pasangan (a, b) dari dua kunci pribadi yang berbeda; kunci pelacakan adalah pasangan (a, B) dari kunci ec pribadi dan publik (di mana B = bG dan a ̸= b); kunci pengguna publik adalah pasangan (A, B) dari dua kunci ec publik yang berasal dari (a, b); alamat standar adalah representasi kunci pengguna publik yang diberikan ke dalam string ramah manusia dengan koreksi kesalahan; alamat terpotong adalah representasi paruh kedua (titik B) dari kunci pengguna publik yang diberikan menjadi string ramah manusia dengan koreksi kesalahan. Struktur transaksi tetap serupa dengan struktur di Bitcoin: setiap pengguna dapat memilih beberapa pembayaran masuk independen (keluaran transaksi), tandatangani dengan yang sesuai kunci pribadi dan mengirimkannya ke tujuan yang berbeda. Bertentangan dengan model Bitcoin, di mana pengguna memiliki kunci pribadi dan publik yang unik, dalam model yang diusulkan pengirim menghasilkan kunci publik satu kali berdasarkan alamat penerima dan beberapa data acak. Dalam pengertian ini, transaksi masuk untuk penerima yang sama dikirim ke a kunci publik satu kali (tidak langsung ke alamat unik) dan hanya penerima yang dapat memulihkannya bagian pribadi yang sesuai untuk menebus dananya (menggunakan kunci pribadi uniknya). Penerima bisa membelanjakan dananya menggunakan tanda tangan cincin, menjaga kepemilikan dan pengeluaran aktualnya tetap anonim. Rincian protokol dijelaskan pada subbagian berikutnya. 4.3 Pembayaran yang tidak dapat ditautkan Alamat Bitcoin klasik, setelah dipublikasikan, menjadi pengenal yang jelas untuk masuk pembayaran, menghubungkannya dan mengaitkannya dengan nama samaran penerima. Jika seseorang ingin menerima transaksi “tidak terikat”, ia harus menyampaikan alamatnya kepada pengirim melalui saluran pribadi. Jika dia ingin menerima transaksi berbeda yang tidak dapat dibuktikan milik pemilik yang sama dia harus membuat semua alamat yang berbeda dan tidak pernah mempublikasikannya dengan nama samarannya sendiri. Publik Pribadi Alice Karol Addr Bob 1 Addr Bob 2 Kunci Bob 1 Kunci Bob 2 Bob Gambar 2. Model kunci/transaksi Bitcoin tradisional. Kami mengusulkan solusi yang memungkinkan pengguna untuk mempublikasikan satu alamat dan menerima tanpa syarat pembayaran yang tidak dapat dihubungkan. Tujuan dari setiap keluaran CryptoNote (secara default) adalah kunci publik, berasal dari alamat penerima dan data acak pengirim. Keuntungan utama melawan Bitcoin adalah setiap kunci tujuan bersifat unik secara default (kecuali pengirim menggunakan data yang sama untuk masing-masing kunci tujuan transaksinya kepada penerima yang sama). Oleh karena itu, tidak ada masalah seperti “penggunaan kembali alamat” oleh desainnya dan tidak ada pengamat yang dapat menentukan apakah ada transaksi yang dikirim ke alamat atau tautan tertentu dua alamat bersama-sama. 6 kunci pengguna pribadi adalah pasangan (a, b) dari dua kunci pribadi yang berbeda; kunci pelacakan adalah pasangan (a, B) dari kunci ec pribadi dan publik (di mana B = bG dan a ̸= b); kunci pengguna publik adalah pasangan (A, B) dari dua kunci ec publik yang berasal dari (a, b); alamat standar adalah representasi kunci pengguna publik yang diberikan ke dalam string ramah manusia dengan koreksi kesalahan; alamat terpotong adalah representasi paruh kedua (titik B) dari kunci pengguna publik yang diberikan menjadi string ramah manusia dengan koreksi kesalahan. Struktur transaksi tetap serupa dengan struktur di Bitcoin: setiap pengguna dapat memilih beberapa pembayaran masuk independen (keluaran transaksi), tandatangani dengan yang sesuai kunci pribadi dan mengirimkannya ke tujuan yang berbeda. Bertentangan dengan model Bitcoin, di mana pengguna memiliki kunci pribadi dan publik yang unik, dalam model yang diusulkan pengirim menghasilkan kunci publik satu kali berdasarkan alamat penerima dan beberapa data acak. Dalam pengertian ini, transaksi masuk untuk penerima yang sama dikirim ke a kunci publik satu kali (tidak langsung ke alamat unik) dan hanya penerima yang dapat memulihkannya bagian pribadi yang sesuai untuk menebus dananya (menggunakan kunci pribadi uniknya). Penerima bisa membelanjakan dananya menggunakan tanda tangan cincin, menjaga kepemilikan dan pengeluaran aktualnya tetap anonim. Rincian protokol dijelaskan pada subbagian berikutnya. 4.3 Pembayaran yang tidak dapat ditautkan Alamat Bitcoin klasik, setelah dipublikasikan, menjadi pengenal yang jelas untuk masuk pembayaran, menghubungkannya dan mengaitkannya dengan nama samaran penerima. Jika seseorang ingin menerima transaksi “tidak terikat”, ia harus menyampaikan alamatnya kepada pengirim melalui saluran pribadi. Jika dia ingin menerima transaksi berbeda yang tidak dapat dibuktikan milik pemilik yang sama dia harus membuat semua alamat yang berbeda dan tidak pernah mempublikasikannya dengan nama samarannya sendiri. Publik Pribadi Alice Karol Addr Bob 1 Addr Bob 2 Kunci Bob 1 Kunci Bob 2 Bob Gambar 2. Mod kunci/transaksi Bitcoin tradisionalel. Kami mengusulkan solusi yang memungkinkan pengguna untuk mempublikasikan satu alamat dan menerima tanpa syarat pembayaran yang tidak dapat dihubungkan. Tujuan dari setiap keluaran CryptoNote (secara default) adalah kunci publik, berasal dari alamat penerima dan data acak pengirim. Keuntungan utama melawan Bitcoin adalah setiap kunci tujuan bersifat unik secara default (kecuali pengirim menggunakan data yang sama untuk masing-masing kunci tujuan transaksinya kepada penerima yang sama). Oleh karena itu, tidak ada masalah seperti “penggunaan kembali alamat” oleh desainnya dan tidak ada pengamat yang dapat menentukan apakah ada transaksi yang dikirim ke alamat atau tautan tertentu dua alamat bersama-sama. 6 11 Jadi ini seperti Bitcoin, tetapi dengan PO Box anonim yang tak terbatas, hanya dapat ditukarkan oleh penerima menghasilkan kunci pribadi yang anonim seperti tanda tangan cincin. Bitcoin bekerja dengan cara ini. Jika Alex memiliki 0,112 Bitcoin di dompetnya yang baru saja dia terima dari Frank, dia benar-benar memiliki tanda tangan pesan "Saya, [FRANK], kirim 0,112 Bitcoin ke [alex] + H0 + N0" dimana 1) Frank telah menandatangani pesan dengan kunci pribadinya [FRANK], 2) Frank telah menandatangani pesan tersebut dengan publik Alex key, [alex], 3) Frank telah memasukkan beberapa bentuk sejarah bitcoin, H0, dan 4) Frank menyertakan sedikit data acak yang disebut nonce, N0. Jika Alex kemudian ingin mengirim 0,011 Bitcoin ke Charlene, dia akan menerima pesan Frank, dan dia akan menyetelnya ke H1, dan menandatangani dua pesan: satu untuk transaksinya, dan satu lagi untuk perubahan. H1= "Saya, [FRANK], kirim 0,112 Bitcoin ke [alex] + H0 + N" "Saya, [ALEX], kirim 0,011 Bitcoin ke [charlene] + H1 + N1" "Saya, [ALEX], kirim 0,101 Bitcoin sebagai perubahan ke [alex] + H1 + N2." di mana Alex menandatangani kedua pesan dengan kunci pribadinya [ALEX], pesan pertama dengan milik Charlene kunci publik [charlene], pesan kedua dengan kunci publik Alex [alex], dan termasuk sejarah dan beberapa nonces N1 dan N2 yang dihasilkan secara acak dengan tepat. Cryptonote bekerja dengan cara ini: Jika Alex memiliki 0,112 Cryptonote di dompetnya yang baru saja dia terima dari Frank, dia benar-benar memiliki tanda tangan pesan "Saya, [seseorang dalam grup ad-hoc], mengirim 0,112 Cryptonote ke [alamat satu kali] + H0 + Tidak0." Alex mengetahui bahwa ini adalah uangnya dengan memeriksa kunci pribadinya [ALEX]. [alamat satu kali] untuk setiap pesan yang lewat, dan jika dia ingin membelanjakannya, dia melakukannya cara berikut. Dia memilih penerima uang, mungkin Charlene sudah mulai memilih serangan drone Alex malah ingin mengirim uang ke Brenda. Jadi Alex mencari kunci publik Brenda, [brenda], dan menggunakan kunci pribadinya sendiri, [ALEX], untuk menghasilkan alamat satu kali [ALEX+brenda]. Dia kemudian memilih koleksi C yang sewenang-wenang dari jaringan pengguna cryptonote dan dia membangunnya tanda tangan cincin dari grup ad-hoc ini. Kami mengatur riwayat kami seperti pesan sebelumnya, tambahkan nonces, dan lanjutkan seperti biasa? H1 = "Saya, [seseorang dalam grup ad-hoc], mengirim 0,112 Cryptonote ke [alamat satu kali] + H0 + Tidak0." "Saya, [seseorang di koleksi C], mengirim 0,011 Cryptonote ke [alamat-satu-kali-dibuat-dariALEX+brenda] + H1 + N1" "Saya, [seseorang di koleksi C], mengirimkan 0,101 Cryptonote sebagai perubahan ke [alamat-satu-kali-dibuat dari-ALEX+alex] + H1 + N2" Sekarang, Alex dan Brenda memindai semua pesan masuk untuk mencari alamat satu kali yang ada dibuat menggunakan kunci mereka. Jika mereka menemukannya, maka pesan itu adalah pesan baru bagi mereka uang kripto! Itupun transaksinya masih akan mencapai blockchain. Jika koin masuk ke alamat itu diketahui dikirim dari penjahat, kontributor politik, atau dari komite dan akun dengan anggaran yang ketat (yaitu penggelapan), atau jika pemilik baru koin tersebut melakukan kesalahan dan mengirimkan koin-koin ini ke alamat yang sama dengan koin-koin yang diketahui miliknya, jig anonimitas ada di bitcoin.

kunci pengguna pribadi adalah pasangan (a, b) dari dua kunci pribadi yang berbeda; kunci pelacakan adalah pasangan (a, B) dari kunci ec pribadi dan publik (di mana B = bG dan a ̸= b); kunci pengguna publik adalah pasangan (A, B) dari dua kunci ec publik yang berasal dari (a, b); alamat standar adalah representasi kunci pengguna publik yang diberikan ke dalam string ramah manusia dengan koreksi kesalahan; alamat terpotong adalah representasi paruh kedua (titik B) dari kunci pengguna publik yang diberikan menjadi string ramah manusia dengan koreksi kesalahan. Struktur transaksi tetap serupa dengan struktur di Bitcoin: setiap pengguna dapat memilih beberapa pembayaran masuk independen (keluaran transaksi), tandatangani dengan yang sesuai kunci pribadi dan mengirimkannya ke tujuan yang berbeda. Bertentangan dengan model Bitcoin, di mana pengguna memiliki kunci pribadi dan publik yang unik, dalam model yang diusulkan pengirim menghasilkan kunci publik satu kali berdasarkan alamat penerima dan beberapa data acak. Dalam pengertian ini, transaksi masuk untuk penerima yang sama dikirim ke a kunci publik satu kali (tidak langsung ke alamat unik) dan hanya penerima yang dapat memulihkannya bagian pribadi yang sesuai untuk menebus dananya (menggunakan kunci pribadi uniknya). Penerima bisa membelanjakan dananya menggunakan tanda tangan cincin, menjaga kepemilikan dan pengeluaran aktualnya tetap anonim. Rincian protokol dijelaskan pada subbagian berikutnya. 4.3 Pembayaran yang tidak dapat ditautkan Alamat Bitcoin klasik, setelah dipublikasikan, menjadi pengenal yang jelas untuk masuk pembayaran, menghubungkannya dan mengaitkannya dengan nama samaran penerima. Jika seseorang ingin menerima transaksi “tidak terikat”, ia harus menyampaikan alamatnya kepada pengirim melalui saluran pribadi. Jika dia ingin menerima transaksi berbeda yang tidak dapat dibuktikan milik pemilik yang sama dia harus membuat semua alamat yang berbeda dan tidak pernah mempublikasikannya dengan nama samarannya sendiri. Publik Pribadi Alice Karol Addr Bob 1 Addr Bob 2 Kunci Bob 1 Kunci Bob 2 Bob Gambar 2. Model kunci/transaksi Bitcoin tradisional. Kami mengusulkan solusi yang memungkinkan pengguna untuk mempublikasikan satu alamat dan menerima tanpa syarat pembayaran yang tidak dapat dihubungkan. Tujuan dari setiap keluaran CryptoNote (secara default) adalah kunci publik, berasal dari alamat penerima dan data acak pengirim. Keuntungan utama melawan Bitcoin adalah setiap kunci tujuan bersifat unik secara default (kecuali pengirim menggunakan data yang sama untuk masing-masing kunci tujuan transaksinya kepada penerima yang sama). Oleh karena itu, tidak ada masalah seperti “penggunaan kembali alamat” oleh desainnya dan tidak ada pengamat yang dapat menentukan apakah ada transaksi yang dikirim ke alamat atau tautan tertentu dua alamat bersama-sama. 6 kunci pengguna pribadi adalah pasangan (a, b) dari dua kunci pribadi yang berbeda; kunci pelacakan adalah pasangan (a, B) dari kunci ec pribadi dan publik (di mana B = bG dan a ̸= b); kunci pengguna publik adalah pasangan (A, B) dari dua kunci ec publik yang berasal dari (a, b); alamat standar adalah representasi kunci pengguna publik yang diberikan ke dalam string ramah manusia dengan koreksi kesalahan; alamat terpotong adalah representasi paruh kedua (titik B) dari kunci pengguna publik yang diberikan menjadi string ramah manusia dengan koreksi kesalahan. Struktur transaksi tetap serupa dengan struktur di Bitcoin: setiap pengguna dapat memilih beberapa pembayaran masuk independen (keluaran transaksi), tandatangani dengan yang sesuai kunci pribadi dan mengirimkannya ke tujuan yang berbeda. Bertentangan dengan model Bitcoin, di mana pengguna memiliki kunci pribadi dan publik yang unik, di model yang diusulkan pengirim menghasilkan kunci publik satu kali berdasarkan alamat penerima dan beberapa data acak. Dalam pengertian ini, transaksi masuk untuk penerima yang sama dikirim ke a kunci publik satu kali (tidak langsung ke alamat unik) dan hanya penerima yang dapat memulihkannya bagian pribadi yang sesuai untuk menebus dananya (menggunakan kunci pribadi uniknya). Penerima bisa membelanjakan dananya menggunakan tanda tangan cincin, menjaga kepemilikan dan pengeluaran aktualnya tetap anonim. Rincian protokol dijelaskan pada subbagian berikutnya. 4.3 Pembayaran yang tidak dapat ditautkan Alamat Bitcoin klasik, setelah dipublikasikan, menjadi pengenal yang jelas untuk masuk pembayaran, menghubungkannya dan mengaitkannya dengan nama samaran penerima. Jika seseorang ingin menerima transaksi “tidak terikat”, ia harus menyampaikan alamatnya kepada pengirim melalui saluran pribadi. Jika dia ingin menerima transaksi berbeda yang tidak dapat dibuktikan milik pemilik yang sama dia harus membuat semua alamat yang berbeda dan tidak pernah mempublikasikannya dengan nama samarannya sendiri. Publik Pribadi Alice Karol Addr Bob 1 Addr Bob 2 Kunci Bob 1 Kunci Bob 2 Bob Gambar 2. Mod kunci/transaksi Bitcoin tradisionalel. Kami mengusulkan solusi yang memungkinkan pengguna untuk mempublikasikan satu alamat dan menerima tanpa syarat pembayaran yang tidak dapat dihubungkan. Tujuan dari setiap keluaran CryptoNote (secara default) adalah kunci publik, berasal dari alamat penerima dan data acak pengirim. Keuntungan utama melawan Bitcoin adalah setiap kunci tujuan bersifat unik secara default (kecuali pengirim menggunakan data yang sama untuk masing-masing kunci tujuan transaksinya kepada penerima yang sama). Oleh karena itu, tidak ada masalah seperti “penggunaan kembali alamat” oleh desainnya dan tidak ada pengamat yang dapat menentukan apakah ada transaksi yang dikirim ke alamat atau tautan tertentu dua alamat bersama-sama. 6 12 Oleh karena itu, daripada pengguna mengirimkan koin dari alamat (yang sebenarnya merupakan kunci publik) ke alamat (kunci publik lainnya) menggunakan kunci pribadi mereka, pengguna mengirimkan koin dari PO-box satu kali (yang dihasilkan menggunakan kunci publik teman Anda) ke PO-box satu kali (demikian pula) menggunakan kunci pribadinya sendiri. Dalam arti tertentu, kita mengatakan, "Oke, semuanya, ambillah uang itu selagi masih ada dipindahkan! Cukup mengetahui bahwa kunci kita dapat membuka kotak itu dan itu kita tahu berapa banyak uang yang ada di dalam kotak. Jangan pernah menaruh sidik jari Anda di PO Box atau benar-benar menggunakannya, cukup tukarkan kotak yang berisi uang tunai itu sendiri. Dengan begitu kita tidak tahu siapa yang mengirim apa, tapi isi dari pidato publik ini masih tanpa gesekan, sepadan, dapat dibagi, dan masih memiliki semua kualitas uang bagus lainnya yang kita inginkan seperti bitcoin." Satu set kotak PO yang tak terbatas. Anda mempublikasikan alamat, saya punya kunci pribadi. Saya menggunakan kunci pribadi saya dan alamat Anda, dan beberapa data acak, untuk menghasilkan kunci publik. Algoritma ini dirancang sedemikian rupa sehingga, sejak Anda alamat digunakan untuk menghasilkan kunci publik, hanya kunci pribadi ANDA yang berfungsi untuk membuka kunci pesan. Seorang pengamat, Eve, melihat Anda mempublikasikan alamat Anda, dan melihat kunci publik yang saya umumkan. Namun, dia tidak tahu apakah saya mengumumkan kunci publik saya berdasarkan alamat Anda, alamatnya, atau alamat Brenda atau milik Charlene, atau siapa pun. Dia memeriksa kunci pribadinya dengan kunci publik yang saya umumkan dan melihatnya tidak berhasil; itu bukan uangnya. Dia tidak mengetahui kunci pribadi orang lain, dan hanya penerima pesan yang memiliki kunci pribadi yang dapat membuka kunci pesan tersebut. Jadi tidak ada seorang pun mendengarkan dapat menentukan siapa yang menerima uang apalagi mengambil uang tersebut.

Publik Pribadi Alice Karol Kunci satu kali Kunci satu kali Kunci satu kali Bob Kunci Bob Alamat Bob Gambar 3. Kunci/model transaksi CryptoNote. Pertama, pengirim melakukan pertukaran Diffie-Hellman untuk mendapatkan rahasia bersama dari datanya dan setengah dari alamat penerima. Kemudian dia menghitung kunci tujuan satu kali, menggunakan kunci bersama rahasia dan paruh kedua alamat. Dua kunci ec yang berbeda diperlukan dari penerima untuk dua langkah ini, jadi alamat CryptoNote standar hampir dua kali lebih besar dari dompet Bitcoin alamat. Penerima juga melakukan pertukaran Diffie-Hellman untuk memulihkannya kunci rahasia. Urutan transaksi standar adalah sebagai berikut: 1. Alice ingin mengirimkan pembayaran kepada Bob, yang telah mempublikasikan alamat standarnya. Dia membongkar alamatnya dan mendapatkan kunci publik Bob (A, B). 2. Alice membangkitkan r acak \(\in\)[1, l−1] dan menghitung kunci publik satu kali \(P = H_s(rA)G +\) B. 3. Alice menggunakan P sebagai kunci tujuan untuk keluaran dan juga mengemas nilai R = rG (sebagai bagian dari bursa Diffie-Hellman) di suatu tempat dalam transaksi. Perhatikan bahwa dia bisa mencipta keluaran lain dengan kunci publik unik: kunci penerima yang berbeda (Ai, Bi) menyiratkan Pi yang berbeda bahkan dengan r yang sama. Transaksi Terima kasih kunci publik Keluaran terima kasih Jumlah Kunci tujuan R = rG P = Hs(rA)G + B Penerima kunci publik Data acak pengirim r (A,B) Gambar 4. Struktur transaksi standar. 4. Alice mengirimkan transaksi. 5. Bob memeriksa setiap transaksi yang lewat dengan kunci privatnya (a, b), dan menghitung P ′ = Hs(ar)G + B. Jika transaksi Alice dengan Bob sebagai penerima ada di antara mereka, maka aR = arG = rA dan P′ = P. 7 Publik Pribadi Alice Karol Kunci satu kali Kunci satu kali Kunci satu kali Bob Kunci Bob Alamat Bob Gambar 3. Kunci/model transaksi CryptoNote. Pertama, pengirim melakukan pertukaran Diffie-Hellman untuk mendapatkan rahasia bersama dari datanya dan setengah dari alamat penerima. Kemudian dia menghitung kunci tujuan satu kali, menggunakan kunci bersama rahasia dan paruh kedua alamat. Dua kunci ec yang berbeda diperlukan dari penerima untuk dua langkah ini, jadi alamat CryptoNote standar hampir dua kali lebih besar dari dompet Bitcoin alamat. Penerima juga melakukan pertukaran Diffie-Hellman untuk memulihkannya kunci rahasia. Urutan transaksi standar adalah sebagai berikut: 1. Alice ingin mengirimkan pembayaran kepada Bob, yang telah mempublikasikan alamat standarnya. Dia membongkar alamatnya dan mendapatkan kunci publik Bob (A, B). 2. Alice membangkitkan r acak \(\in\)[1, l−1] dan menghitung kunci publik satu kali \(P = H_s(rA)G +\) B. 3. Alice menggunakan P sebagai kunci tujuan untuk keluaran dan juga mengemas nilai R = rG (sebagai bagian dari bursa Diffie-Hellman) di suatu tempat dalam transaksi. Perhatikan bahwa dia bisa mencipta keluaran lain dengan kunci publik unik: kunci penerima yang berbeda (Ai, Bi) menyiratkan Pi yang berbeda bahkan dengan r yang sama. Transaksi Terima kasih kunci publik Keluaran terima kasih Jumlah Kunci tujuan R = rG P = Hs(rA)G + B Penerima kunci publik Data acak pengirim r (A,B) Gambar 4. Struktur transaksi standar. 4. Alice mengirimkan transaksi. 5. Bob memeriksa setiap transaksi yang lewat dengan kunci privatnya (a, b), dan menghitung P ′ = Hs(ar)G + B. Jika transaksi Alice dengan Bob sebagai penerima ada di antara mereka, maka aR = arG = rA dan P′ = P. 7 13 Saya bertanya-tanya betapa sulitnya menerapkan pilihan kriptografi skema. Elips atau lainnya. Jadi jika suatu skema dilanggar di masa depan, mata uang akan beralih tanpa rasa khawatir. Mungkin sangat menyebalkan. Oke, ini persis seperti yang baru saja saya jelaskan di komentar saya sebelumnya. Tipe Diffe-Hellman pertukarannya rapi. Katakanlah Alex dan Brenda masing-masing mempunyai nomor rahasia, A dan B, dan sebuah nomor mereka tidak peduli untuk menjaga rahasia, a dan b. Mereka ingin menghasilkan rahasia bersama tanpa Eva menemukannya. Diffie dan Hellman menemukan cara agar Alex dan Brenda berbagi nomor publik a dan b, tetapi bukan nomor pribadi A dan B, dan menghasilkan rahasia bersama, K. Menggunakan rahasia bersama ini, K, tanpa ada Eva yang mendengarkan untuk dapat menghasilkan hal yang sama K, Alex dan Brenda sekarang dapat menggunakan K sebagai kunci enkripsi rahasia dan meneruskan pesan rahasia kembali dan sebagainya. Begini cara kerjanya BISA, meskipun harus bekerja dengan angka yang jauh lebih besar dari 100. Kita akan menggunakan 100 karena mengerjakan bilangan bulat modulo 100 sama dengan "membuang semua tapi dua digit terakhir dari sebuah angka." Alex dan Brenda masing-masing memilih A, a, B, dan b. Mereka merahasiakan A dan B. Alex memberi tahu Brenda nilai modulo 100 (hanya dua digit terakhir) dan Brenda memberi tahu Alex nilai b modulo 100. Sekarang Eva tahu (a,b) modulo 100. Tapi Alex tahu (a,b,A) jadi dia dapat menghitung x=abA modulo 100.Alex memotong semuanya kecuali angka terakhir karena kami sedang mengerjakan di bawah bilangan bulat modulo 100 lagi. Demikian pula, Brenda mengetahui (a,b,B) sehingga dia dapat menghitung y=abB modulo 100. Alex sekarang dapat mempublikasikan x dan Brenda dapat mempublikasikan y. Tapi sekarang Alex bisa menghitung yA = abBA modulo 100, dan Brenda bisa menghitung xB = abBA modulo 100. Mereka berdua tahu nomor yang sama! Tapi yang Eva dengar hanyalah (a,b,abA,abB). Dia tidak memiliki cara mudah untuk menghitung abA*B. Sekarang, ini adalah cara berpikir yang paling mudah dan paling tidak aman tentang pertukaran Diffie-Hellman. Ada versi yang lebih aman. Tetapi sebagian besar versi berfungsi karena faktorisasi bilangan bulat dan diskrit logaritma itu sulit, dan kedua permasalahan tersebut mudah diselesaikan oleh komputer kuantum. Saya akan melihat apakah ada versi yang tahan terhadap kuantum. http://en.wikipedia.org/wiki/Diffie%E2%80%93Hellman_key_exchange "Urutan txn standar" yang tercantum di sini tidak memiliki banyak langkah, seperti TANDA TANGAN. Mereka dianggap remeh di sini. Yang benar-benar buruk, karena urutannya kita barang tanda tangan, informasi yang disertakan dalam pesan yang ditandatangani, dan sebagainya... semua ini luar biasa penting bagi protokol. Melakukan satu atau dua langkah yang salah, bahkan sedikit tidak sesuai, saat menerapkan "the urutan transaksi standar" dapat mempertanyakan keamanan seluruh sistem. Selain itu, bukti-bukti yang disajikan kemudian dalam makalah ini mungkin tidak cukup teliti jika kerangka kerja di mana mereka bekerja didefinisikan secara longgar seperti pada bagian ini.

Publik Pribadi Alice Karol Kunci satu kali Kunci satu kali Kunci satu kali Bob Kunci Bob Alamat Bob Gambar 3. Kunci/model transaksi CryptoNote. Pertama, pengirim melakukan pertukaran Diffie-Hellman untuk mendapatkan rahasia bersama dari datanya dan setengah dari alamat penerima. Kemudian dia menghitung kunci tujuan satu kali, menggunakan kunci bersama rahasia dan paruh kedua alamat. Dua kunci ec yang berbeda diperlukan dari penerima untuk dua langkah ini, jadi alamat CryptoNote standar hampir dua kali lebih besar dari dompet Bitcoin alamat. Penerima juga melakukan pertukaran Diffie-Hellman untuk memulihkannya kunci rahasia. Urutan transaksi standar adalah sebagai berikut: 1. Alice ingin mengirimkan pembayaran kepada Bob, yang telah mempublikasikan alamat standarnya. Dia membongkar alamatnya dan mendapatkan kunci publik Bob (A, B). 2. Alice membangkitkan r acak \(\in\)[1, l−1] dan menghitung kunci publik satu kali \(P = H_s(rA)G +\) B. 3. Alice menggunakan P sebagai kunci tujuan untuk keluaran dan juga mengemas nilai R = rG (sebagai bagian dari bursa Diffie-Hellman) di suatu tempat dalam transaksi. Perhatikan bahwa dia bisa mencipta keluaran lain dengan kunci publik unik: kunci penerima yang berbeda (Ai, Bi) menyiratkan Pi yang berbeda bahkan dengan r yang sama. Transaksi Terima kasih kunci publik Keluaran terima kasih Jumlah Kunci tujuan R = rG P = Hs(rA)G + B Penerima kunci publik Data acak pengirim r (A,B) Gambar 4. Struktur transaksi standar. 4. Alice mengirimkan transaksi. 5. Bob memeriksa setiap transaksi yang lewat dengan kunci privatnya (a, b), dan menghitung P ′ = Hs(ar)G + B. Jika transaksi Alice dengan Bob sebagai penerima ada di antara mereka, maka aR = arG = rA dan P′ = P. 7 Publik Pribadi Alice Karol Kunci satu kali Kunci satu kali Kunci satu kali Bob Kunci Bob Alamat Bob Gambar 3. Kunci/model transaksi CryptoNote. Pertama, pengirim melakukan pertukaran Diffie-Hellman untuk mendapatkan rahasia bersama dari datanya dan setengah dari alamat penerima. Kemudian dia menghitung kunci tujuan satu kali, menggunakan kunci bersama rahasia dan paruh kedua alamat. Dua kunci ec yang berbeda diperlukan dari penerima untuk dua langkah ini, jadi alamat CryptoNote standar hampir dua kali lebih besar dari dompet Bitcoin alamat. Penerima juga melakukan pertukaran Diffie-Hellman untuk memulihkannya kunci rahasia. Urutan transaksi standar adalah sebagai berikut: 1. Alice ingin mengirimkan pembayaran kepada Bob, yang telah mempublikasikan alamat standarnya. Dia membongkar alamatnya dan mendapatkan kunci publik Bob (A, B). 2. Alice membangkitkan r acak \(\in\)[1, l−1] dan menghitung kunci publik satu kali \(P = H_s(rA)G +\) B. 3. Alice menggunakan P sebagai kunci tujuan untuk keluaran dan juga mengemas nilai R = rG (sebagai bagian dari bursa Diffie-Hellman) di suatu tempat dalam transaksi. Perhatikan bahwa dia bisa mencipta keluaran lain dengan kunci publik unik: kunci penerima yang berbeda (Ai, Bi) menyiratkan Pi yang berbeda bahkan dengan r yang sama. Transaksi Terima kasih kunci publik Keluaran terima kasih Jumlah Kunci tujuan R = rG P = Hs(rA)G + B Penerima kunci publik Data acak pengirim r (A,B) Gambar 4. Struktur transaksi standar. 4. Alice mengirimkan transaksi. 5. Bob memeriksa setiap transaksi yang lewat dengan kunci privatnya (a, b), dan menghitung P ′ = Hs(ar)G + B. Jika transaksi Alice dengan Bob sebagai penerima ada di antara mereka, maka aR = arG = rA dan P′ = P. 7 14 Perhatikan bahwa penulisnya melakukan pekerjaan yang buruk dalam menjaga terminologi mereka tetap lurus teksnya, tetapi terutama di bagian berikutnya. Inkarnasi berikutnya dari makalah ini tentu saja akan terjadi jauh lebih ketat. Dalam teks mereka menyebut P sebagai kunci publik satu kali. Dalam diagram, mereka menyebut R sebagai "Kunci publik Tx" dan P sebagai "Kunci Tujuan". Jika saya ingin menulis ulang ini, saya akan melakukannya secara khusus memaparkan beberapa terminologi sebelum membahas bagian ini. Ell ini sangat besar. Lihat halaman 5. Siapa yang memilih El? Diagram tersebut menggambarkan bahwa transaksi kunci publik R = rG yang bersifat acak dan terpilih oleh pengirim, bukan bagian dari keluaran Tx. Ini karena bisa jadi sama untuk banyak orang transaksi ke banyak orang, dan tidak digunakan KEMUDIAN untuk dibelanjakan. R baru dihasilkan setiap kali Anda ingin menyiarkan transaksi CryptoNote baru. Selanjutnya R hanya digunakan untuk memeriksa apakah Anda adalah penerima transaksi. Ini bukan data sampah, tapi sampah bagi siapa pun tanpa kunci pribadi yang terkait dengan (A,B). Sebaliknya, kunci Tujuan, P = Hs(rA)G + B adalah bagian dari keluaran Tx. Semuanya mengobrak-abrik setiap data transaksi yang lewat harus memeriksa P* yang dihasilkannya sendiri P ini untuk melihat apakah mereka memiliki transaksi yang lewat ini. Siapa pun yang memiliki keluaran transaksi yang belum terpakai (UTXO) akan memiliki banyak Ps yang berserakan dengan jumlah. Untuk menghabiskand, mereka menandatangani beberapa pesan baru termasuk P. Alice harus menandatangani transaksi ini dengan kunci pribadi satu kali yang terkait dengan Kunci Tujuan keluaran transaksi yang tidak terpakai. Setiap kunci tujuan yang dimiliki oleh Alice dilengkapi dengan kunci pribadi satu kali yang juga dimiliki (mungkin) oleh Alice. Setiap kali Alice menginginkannya kirimkan isi kunci tujuan kepadaku, atau Bob, atau Brenda, atau Charlie atau Charlene, dia menggunakan kunci pribadinya untuk menandatangani transaksi. Setelah menerima transaksi, saya akan menerima yang baru Kunci publik Tx, kunci publik Tujuan baru, dan saya akan dapat memulihkan kunci pribadi satu kali yang baru x. Menggabungkan kunci pribadi satu kali saya, x, dengan Tujuan publik transaksi baru kuncinya adalah cara kami mengirim transaksi baru

  1. Bob dapat memulihkan kunci pribadi satu kali yang sesuai: x = Hs(aR) + b, sehingga P = xG. Dia dapat membelanjakan output ini kapan saja dengan menandatangani transaksi dengan x. Transaksi Terima kasih kunci publik Keluaran terima kasih Jumlah Kunci tujuan P′ = Hs(aR)G + bG kunci publik satu kali x = Hs(aR) + b kunci pribadi satu kali Penerima kunci pribadi (a,b) R P' ?= hal Gambar 5. Pengecekan transaksi masuk. Hasilnya Bob mendapat pembayaran masuk, terkait dengan kunci publik satu kali tidak dapat dihubungkan untuk penonton. Beberapa catatan tambahan: • Ketika Bob “mengenali” transaksinya (lihat langkah 5) praktis dia hanya menggunakan setengah dari transaksinya informasi pribadi: (a, B). Pasangan ini, juga dikenal sebagai kunci pelacakan, dapat diteruskan kepada pihak ketiga (Carol). Bob dapat mendelegasikan kepadanya pemrosesan transaksi baru. Bob tidak perlu mempercayai Carol secara eksplisit, karena dia tidak dapat memulihkan kunci rahasia satu kali p tanpa kunci pribadi lengkap Bob (a, b). Pendekatan ini berguna ketika Bob kekurangan bandwidth atau kekuatan komputasi (ponsel pintar, dompet perangkat keras, dll.). • Jika Alice ingin membuktikan bahwa dia mengirimkan transaksi ke alamat Bob, dia dapat mengungkapkannya r atau gunakan protokol tanpa pengetahuan apa pun untuk membuktikan bahwa dia mengetahui r (misalnya dengan menandatangani transaksi dengan r). • Jika Bob ingin memiliki alamat yang kompatibel dengan audit di mana semua transaksi masuk berada dapat ditautkan, dia dapat mempublikasikan kunci pelacakannya atau menggunakan alamat yang terpotong. Alamat itu hanya mewakili satu kunci ec publik B, dan bagian sisanya yang diperlukan oleh protokol adalah diturunkan darinya sebagai berikut: a = Hs(B) dan A = Hs(B)G. Dalam kedua kasus tersebut, setiap orang demikian mampu “mengenali” semua transaksi masuk Bob, namun tentu saja tidak ada yang bisa membelanjakannya dana yang terkandung di dalamnya tanpa kunci rahasia b. 4.4 Tanda tangan cincin satu kali Protokol yang didasarkan pada tanda tangan dering satu kali memungkinkan pengguna mencapai ketidakterhubungan tanpa syarat. Sayangnya, jenis tanda tangan kriptografi biasa mengizinkan pelacakan transaksi ke mereka masing-masing pengirim dan penerima. Solusi kami terhadap kekurangan ini terletak pada penggunaan tanda tangan yang berbeda jenisnya dibandingkan yang saat ini digunakan dalam sistem kas elektronik. Pertama-tama kami akan memberikan gambaran umum tentang algoritma kami tanpa referensi eksplisit uang elektronik. Tanda tangan dering satu kali berisi empat algoritma: (GEN, SIG, VER, LNK): GEN: mengambil parameter publik dan mengeluarkan pasangan ec (P, x) dan kunci publik I. SIG: mengambil pesan m, satu set \(S'\) kunci publik {Pi}i̸=s, sepasang (Ps, xs) dan menghasilkan tanda tangan \(\sigma\) dan himpunan \(S = \)S'\( \cup \{P_s\}\). 8
  2. Bob dapat memulihkan kunci pribadi satu kali yang sesuai: x = Hs(aR) + b, sehingga P = xG. Dia dapat membelanjakan output ini kapan saja dengan menandatangani transaksi dengan x. Transaksi Terima kasih kunci publik Keluaran terima kasih Jumlah Kunci tujuan P′ = Hs(aR)G + bG kunci publik satu kali x = Hs(aR) + b kunci pribadi satu kali Penerima kunci pribadi (a,b) R P' ?= hal Gambar 5. Pengecekan transaksi masuk. Hasilnya Bob mendapat pembayaran masuk, terkait dengan kunci publik satu kali tidak dapat dihubungkan untuk penonton. Beberapa catatan tambahan: • Ketika Bob “mengenali” transaksinya (lihat langkah 5) praktis dia hanya menggunakan setengah dari transaksinya informasi pribadi: (a, B). Pasangan ini, juga dikenal sebagai kunci pelacakan, dapat diteruskan kepada pihak ketiga (Carol). Bob dapat mendelegasikan kepadanya pemrosesan transaksi baru. Bob tidak perlu mempercayai Carol secara eksplisit, karena dia tidak dapat memulihkan kunci rahasia satu kali p tanpa kunci pribadi lengkap Bob (a,b). Pendekatan ini berguna ketika Bob kekurangan bandwidth atau kekuatan komputasi (ponsel pintar, dompet perangkat keras, dll.). • Jika Alice ingin membuktikan bahwa dia mengirimkan transaksi ke alamat Bob, dia dapat mengungkapkannya r atau gunakan protokol tanpa pengetahuan apa pun untuk membuktikan bahwa dia mengetahui r (misalnya dengan menandatangani transaksi dengan r). • Jika Bob ingin memiliki alamat yang kompatibel dengan audit di mana semua transaksi masuk berada dapat ditautkan, dia dapat mempublikasikan kunci pelacakannya atau menggunakan alamat yang terpotong. Alamat itu hanya mewakili satu kunci ec publik B, dan bagian sisanya yang diperlukan oleh protokol adalah diturunkan darinya sebagai berikut: a = Hs(B) dan A = Hs(B)G. Dalam kedua kasus tersebut, setiap orang demikian mampu “mengenali” semua transaksi masuk Bob, namun tentu saja tidak ada yang bisa membelanjakannya dana yang terkandung di dalamnya tanpa kunci rahasia b. 4.4 Tanda tangan cincin satu kali Protokol yang didasarkan pada tanda tangan dering satu kali memungkinkan pengguna mencapai ketidakterhubungan tanpa syarat. Sayangnya, jenis tanda tangan kriptografi biasa mengizinkan pelacakan transaksi ke mereka masing-masing pengirim dan penerima. Solusi kami terhadap kekurangan ini terletak pada penggunaan tanda tangan yang berbeda jenisnya dibandingkan yang saat ini digunakan dalam sistem kas elektronik. Pertama-tama kami akan menyediakan general deskripsi algoritma kami tanpa referensi eksplisit uang elektronik. Tanda tangan dering satu kali berisi empat algoritma: (GEN, SIG, VER, LNK): GEN: mengambil parameter publik dan mengeluarkan pasangan ec (P, x) dan kunci publik I. SIG: mengambil pesan m, satu set \(S'\) kunci publik {Pi}i̸=s, sepasang (Ps, xs) dan menghasilkan tanda tangan \(\sigma\) dan himpunan \(S = \)S'\( \cup \{P_s\}\). 8 15 Seperti apa keluaran transaksi yang belum terpakai di sini? Diagram menunjukkan bahwa keluaran transaksi hanya terdiri dari dua titik data: jumlah dan kunci tujuan. Tapi ini tidak cukup karena ketika saya mencoba menggunakan "output" ini saya masih perlu mengetahui R=rG. Ingat, r dipilih oleh pengirim, dan R a) digunakan untuk mengenali catatan kripto yang masuk sebagai milik Anda milik sendiri dan b) digunakan untuk menghasilkan kunci pribadi satu kali yang digunakan untuk "mengklaim" uang kripto Anda. Bagian tentang ini yang aku tidak mengerti? Mengambil teori "oke, kita punya ini tanda tangan dan transaksi, dan kami menyebarkannya bolak-balik" ke dunia pemrograman "oke informasi apa khususnya yang membentuk seorang individu UTXO?" Cara terbaik untuk menjawab pertanyaan itu adalah dengan menggali isi kode yang sepenuhnya tidak dikomentari. Bagus sekali, tim bytecoin. Ingat: keterhubungan berarti "apakah orang yang sama mengirim?" dan unlinkability berarti "melakukan hal yang sama orang menerima?". Jadi suatu sistem bisa bersifat linkable atau non-linkable, unlinkable atau non-unlinkable. Mengganggu, aku tahu. Jadi ketika Nic van Saberhagen di sini mengatakan "...pembayaran yang masuk dikaitkan dengan satu kali saja kunci publik yang tidak dapat ditautkan oleh penonton," mari kita lihat apa maksudnya. Pertama, pertimbangkan situasi di mana Alice mengirim Bob dua transaksi terpisah dari transaksi yang sama alamat ke alamat yang sama. Di alam semesta Bitcoin, Alice telah melakukan kesalahan mengirim dari alamat yang sama sehingga transaksi telah gagal memenuhi keinginan kami secara terbatas keterhubungan. Terlebih lagi, karena dia mengirimkan uang ke alamat yang sama, dia menggagalkan keinginan kami untuk tidak dapat dihubungkan. Transaksi bitcoin ini (sepenuhnya) dapat ditautkan dan tidak dapat dibatalkan tautannya. Di sisi lain, di dunia cryptonote, katakanlah Alice mengirimi Bob beberapa cryptonote, menggunakan alamat publik Bob. Dia memilih sebagai kumpulan kunci publiknya yang mengaburkan semua publik yang dikenal kunci di wilayah metro Washington DC. Alex menghasilkan kunci publik satu kali menggunakan miliknya sendiri informasi dan informasi publik Bob. Dia mengirimkan uangnya, dan pengamat mana pun akan melakukannya hanya dapat memperoleh informasi "Seseorang dari wilayah metro Washington DC mengirim 2,3 cryptonotes ke alamat publik satu kali XYZ123." Kami memiliki kendali probabilistik atas keterhubungan di sini, jadi kami menyebutnya "hampir tidak dapat ditautkan". Kami juga hanya melihat satu kali kunci publik yang menjadi tujuan pengiriman uang. Bahkan jika kita mencurigai penerimanya adalah Bob, kami tidak memiliki kunci pribadinya sehingga kami tidak dapat menguji apakah transaksi tersebut lewat milik Bob apalagi menghasilkan kunci pribadi satu kali untuk menebus cryptonote-nya. Jadi ini pada kenyataannya, sama sekali "tidak dapat dihubungkan". Jadi, ini adalah trik yang paling rapi. Siapa yang ingin mempercayai MtGox lain? Kita mungkin saja nyaman menyimpan sejumlah BTC di Coinbase, tetapi keamanan bitcoin yang paling utama adalah dompet fisik. Itu tidak nyaman. Dalam hal ini, Anda dapat memberikan setengah dari kunci pribadi Anda tanpa mengorbankan kunci pribadi Anda kemampuan sendiri untuk membelanjakan uang. Saat melakukan ini, yang Anda lakukan hanyalah memberi tahu seseorang cara memutus ketidakterhubungan. Yang lainnya properti CN yang bertindak seperti mata uang dipertahankan, sebagai bukti terhadap pembelanjaan ganda dan yang lainnya.

  3. Bob dapat memulihkan kunci pribadi satu kali yang sesuai: x = Hs(aR) + b, sehingga P = xG. Dia dapat membelanjakan output ini kapan saja dengan menandatangani transaksi dengan x. Transaksi Terima kasih kunci publik Keluaran terima kasih Jumlah Kunci tujuan P′ = Hs(aR)G + bG kunci publik satu kali x = Hs(aR) + b kunci pribadi satu kali Penerima kunci pribadi (a,b) R P' ?= hal Gambar 5. Pengecekan transaksi masuk. Hasilnya Bob mendapat pembayaran masuk, terkait dengan kunci publik satu kali tidak dapat dihubungkan untuk penonton. Beberapa catatan tambahan: • Ketika Bob “mengenali” transaksinya (lihat langkah 5) praktis dia hanya menggunakan setengah dari transaksinya informasi pribadi: (a, B). Pasangan ini, juga dikenal sebagai kunci pelacakan, dapat diteruskan kepada pihak ketiga (Carol). Bob dapat mendelegasikan kepadanya pemrosesan transaksi baru. Bob tidak perlu mempercayai Carol secara eksplisit, karena dia tidak dapat memulihkan kunci rahasia satu kali p tanpa kunci pribadi lengkap Bob (a, b). Pendekatan ini berguna ketika Bob kekurangan bandwidth atau kekuatan komputasi (ponsel pintar, dompet perangkat keras, dll.). • Jika Alice ingin membuktikan bahwa dia mengirimkan transaksi ke alamat Bob, dia dapat mengungkapkannya r atau gunakan protokol tanpa pengetahuan apa pun untuk membuktikan bahwa dia mengetahui r (misalnya dengan menandatangani transaksi dengan r). • Jika Bob ingin memiliki alamat yang kompatibel dengan audit di mana semua transaksi masuk berada dapat ditautkan, dia dapat mempublikasikan kunci pelacakannya atau menggunakan alamat yang terpotong. Alamat itu hanya mewakili satu kunci ec publik B, dan bagian sisanya yang diperlukan oleh protokol adalah diturunkan darinya sebagai berikut: a = Hs(B) dan A = Hs(B)G. Dalam kedua kasus tersebut, setiap orang demikian mampu “mengenali” semua transaksi masuk Bob, namun tentu saja tidak ada yang bisa membelanjakannya dana yang terkandung di dalamnya tanpa kunci rahasia b. 4.4 Tanda tangan cincin satu kali Protokol yang didasarkan pada tanda tangan dering satu kali memungkinkan pengguna mencapai ketidakterhubungan tanpa syarat. Sayangnya, jenis tanda tangan kriptografi biasa mengizinkan pelacakan transaksi ke mereka masing-masing pengirim dan penerima. Solusi kami terhadap kekurangan ini terletak pada penggunaan tanda tangan yang berbeda jenisnya dibandingkan yang saat ini digunakan dalam sistem kas elektronik. Pertama-tama kami akan memberikan gambaran umum tentang algoritma kami tanpa referensi eksplisit uang elektronik. Tanda tangan dering satu kali berisi empat algoritma: (GEN, SIG, VER, LNK): GEN: mengambil parameter publik dan mengeluarkan pasangan ec (P, x) dan kunci publik I. SIG: mengambil pesan m, satu set \(S'\) kunci publik {Pi}i̸=s, sepasang (Ps, xs) dan menghasilkan tanda tangan \(\sigma\) dan himpunan \(S = \)S'\( \cup \{P_s\}\). 8

  4. Bob dapat memulihkan kunci pribadi satu kali yang sesuai: x = Hs(aR) + b, sehingga P = xG. Dia dapat membelanjakan output ini kapan saja dengan menandatangani transaksi dengan x. Transaksi Terima kasih kunci publik Keluaran terima kasih Jumlah Kunci tujuan P′ = Hs(aR)G + bG kunci publik satu kali x = Hs(aR) + b kunci pribadi satu kali Penerima kunci pribadi (a,b) R P' ?= hal Gambar 5. Pengecekan transaksi masuk. Hasilnya Bob mendapat pembayaran masuk, terkait dengan kunci publik satu kali tidak dapat dihubungkan untuk penonton. Beberapa catatan tambahan: • Ketika Bob “mengenali” transaksinya (lihat langkah 5) praktis dia hanya menggunakan setengah dari transaksinya informasi pribadi: (a, B). Pasangan ini, juga dikenal sebagai kunci pelacakan, dapat diteruskan kepada pihak ketiga (Carol). Bob dapat mendelegasikan kepadanya pemrosesan transaksi baru. Bob tidak perlu mempercayai Carol secara eksplisit, karena dia tidak dapat memulihkan kunci rahasia satu kali p tanpa kunci pribadi lengkap Bob (a,b). Pendekatan ini berguna ketika Bob kekurangan bandwidth atau kekuatan komputasi (ponsel pintar, dompet perangkat keras, dll.). • Jika Alice ingin membuktikan bahwa dia mengirimkan transaksi ke alamat Bob, dia dapat mengungkapkannya r atau gunakan protokol tanpa pengetahuan apa pun untuk membuktikan bahwa dia mengetahui r (misalnya dengan menandatangani transaksi dengan r). • Jika Bob ingin memiliki alamat yang kompatibel dengan audit di mana semua transaksi masuk berada dapat ditautkan, dia dapat mempublikasikan kunci pelacakannya atau menggunakan alamat yang terpotong. Alamat itu hanya mewakili satu kunci ec publik B, dan bagian sisanya yang diperlukan oleh protokol adalah diturunkan darinya sebagai berikut: a = Hs(B) dan A = Hs(B)G. Dalam kedua kasus tersebut, setiap orang demikian mampu “mengenali” semua transaksi masuk Bob, namun tentu saja tidak ada yang bisa membelanjakannya dana yang terkandung di dalamnya tanpa kunci rahasia b. 4.4 Tanda tangan cincin satu kali Protokol yang didasarkan pada tanda tangan dering satu kali memungkinkan pengguna mencapai ketidakterhubungan tanpa syarat. Sayangnya, jenis tanda tangan kriptografi biasa mengizinkan pelacakan transaksi ke mereka masing-masing pengirim dan penerima. Solusi kami terhadap kekurangan ini terletak pada penggunaan tanda tangan yang berbeda jenisnya dibandingkan yang saat ini digunakan dalam sistem kas elektronik. Pertama-tama kami akan menyediakan general deskripsi algoritma kami tanpa referensi eksplisit uang elektronik. Tanda tangan dering satu kali berisi empat algoritma: (GEN, SIG, VER, LNK): GEN: mengambil parameter publik dan mengeluarkan pasangan ec (P, x) dan kunci publik I. SIG: mengambil pesan m, satu set \(S'\) kunci publik {Pi}i̸=s, sepasang (Ps, xs) dan menghasilkan tanda tangan \(\sigma\) dan himpunan \(S = \)S'\( \cup \{P_s\}\). 8 16 Ya, jadi sekarang kami memiliki a) alamat pembayaran dan b) ID pembayaran. Kritikus mungkin bertanya "apakah kita benar-benar perlu melakukan ini? Lagi pula, jika pedagang menerima 112.00678952 CN tepatnya, dan itu pesanan saya, dan saya punya tangkapan layar atau tanda terima atau apa pun, bukan tingkat presisi yang gila, cukup?" Jawabannya adalah "mungkin, sering kali, dalam kehidupan sehari-hari, transaksi tatap muka.” Namun, situasi yang lebih umum (terutama di dunia digital) adalah: seorang pedagang menjual sekumpulan objek yang masing-masing mempunyai harga tetap. Katakanlah benda A 0,001 CN, benda B 0,01 CN dan benda C adalah 0,1 CN. Nah kalau merchant mendapat order 1.618 CN, banyak sekali (banyak!) cara untuk mengatur pesanan untuk pelanggan. Jadi tanpa semacam ID pembayaran, mengidentifikasi apa yang disebut pesanan "unik" pelanggan dengan apa yang disebut biaya "unik" mereka ketertiban menjadi mustahil. Yang lebih lucu lagi: jika semua yang ada di toko online saya harganya tepat 1,0 CN, dan saya mendapatkan 1000 pelanggan sehari? Dan Anda ingin membuktikan bahwa Anda membeli tepat 3 benda dua minggu lalu? Tanpa ID pembayaran? Semoga berhasil, sobat. Singkat cerita: Saat Bob menerbitkan alamat pembayaran, dia mungkin juga menerbitkan a ID pembayaran juga (lihat, misalnya deposit Poloniex XMR). Hal ini berbeda dengan apa yang dijelaskan dalam teks di sini di mana Alice adalah orang yang menghasilkan ID pembayaran. Pasti ada cara bagi Bob untuk menghasilkan ID pembayaran juga. (a,b) Ingatlah bahwa kunci pelacakan (a,B) dapat dipublikasikan; kehilangan kerahasiaan nilai surat wasiat 'a' tidak melanggar kemampuan Anda untuk membelanjakan uang atau membiarkan orang mencuri dari Anda (menurut saya... itu akan terjadi dibuktikan), itu hanya akan memungkinkan orang untuk melihat semua transaksi masuk. Alamat yang terpotong, seperti yang dijelaskan dalam paragraf ini, hanya mengambil bagian "pribadi" dari kunci tersebut dan menghasilkannya dari bagian "publik". Mengungkap nilai 'a' akan menghilangkan ketidakterhubungan tetapi akan mempertahankan sisa transaksi. Yang dimaksud penulis adalah "tidak dapat ditautkan" karena tidak dapat ditautkan mengacu pada penerima dan dapat ditautkan mengacu pada pengirimnya. Jelas juga bahwa penulis tidak menyadari bahwa ada dua aspek berbeda dalam keterhubungan. Karena transaksi adalah objek berarah pada grafik, maka akan timbul dua pertanyaan: "Apakah kedua transaksi ini ditujukan kepada orang yang sama?" dan "apakah kedua transaksi ini akan datang dari orang yang sama?" Ini adalah kebijakan "tidak ada jalan kembali" yang mendasari properti tidak dapat ditautkannya CryptoNote bersyarat. Artinya, Bob dapat memilih agar transaksi masuknya tidak dapat dibatalkan tautannya menggunakan kebijakan ini. Ini adalah klaim yang mereka buktikan berdasarkan Random Oracle Model. Kita akan membahasnya; yang Acak Oracle memiliki pro dan kontra.

VER: mengambil pesan m, satu set S, tanda tangan \(\sigma\) dan menghasilkan output “benar” atau “salah”. LNK: mengambil himpunan I = {Ii}, tanda tangan \(\sigma\) dan menghasilkan keluaran “tertaut” atau “indep”. Ide di balik protokol ini cukup sederhana: pengguna membuat tanda tangan diperiksa oleh sekumpulan kunci publik, bukan kunci publik unik. Identitas penandatangan adalah tidak dapat dibedakan dari pengguna lain yang kunci publiknya ada di set sampai pemiliknya memproduksinya tanda tangan kedua menggunakan pasangan kunci yang sama. Kunci pribadi x0 \(\cdots\) xi \(\cdots\) xn Kunci publik P0 \(\cdots\) pi \(\cdots\) hal Cincin Tanda tangan tanda tangan verifikasi Gambar 6. Anonimitas tanda tangan dering. GEN: Penanda tangan mengambil kunci rahasia acak \(x \in [1, l - 1]\) dan menghitung kunci rahasia yang sesuai kunci publik P = xG. Selain itu, dia menghitung kunci publik lain I = xHp(P) yang akan kita lakukan sebut "gambar kunci". SIG: Penandatangan menghasilkan tanda tangan dering satu kali dengan pengetahuan nol non-interaktif pembuktian menggunakan teknik dari [21]. Dia memilih subset acak \(S'\) dari n dari pengguna lain. kunci publik Pi, pasangan kuncinya sendiri (x, P) dan gambar kunci I. Misalkan \(0 \leq s \leq n\) menjadi indeks rahasia penanda tangan di S (sehingga kunci publiknya adalah Ps). Dia memilih {qi | secara acak saya = 0 . . . n} dan {wi | saya = 0 . . . n, i ̸= s} dari (1 . . . l) dan menerapkan transformasi berikut: Li = ( qiG, jika saya = s qiG + wiPi, jika saya ̸= s Ri = ( qiHp(Pi), jika saya = s qiHp(Pi) + wiI, jika saya ̸= s Langkah selanjutnya adalah mendapatkan tantangan non-interaktif: c = Hs(m, L1, . . . , Ln, R1, . . . , Rn) Akhirnya penandatangan menghitung responsnya: ci =    wi, jika saya ̸= s c - nP saya=0 ci mod aku, jika saya = s ri = ( qi, jika saya ̸= s qs−csx mod aku, jika saya = s Tanda tangan yang dihasilkan adalah \(\sigma\) = (I, c1, . . . , cn, r1, . . . , rn). 9 VER: mengambil pesan m, satu set S, tanda tangan \(\sigma\) dan menghasilkan output “benar” atau “salah”. LNK: mengambil himpunan I = {Ii}, tanda tangan \(\sigma\) dan menghasilkan keluaran “tertaut” atau “indep”. Ide di balik protokol ini cukup sederhana: pengguna membuat tanda tangan diperiksa oleh sekumpulan kunci publik, bukan kunci publik unik. Identitas penandatangan adalah tidak dapat dibedakan dari pengguna lain yang kunci publiknya ada di set sampai pemiliknya memproduksinya tanda tangan kedua menggunakan pasangan kunci yang sama. Kunci pribadi x0 \(\cdots\) xi \(\cdots\) xn Kunci publik P0 \(\cdots\) pi \(\cdots\) hal Cincin Tanda tangan tanda tangan verifikasi Gambar 6. Anonimitas tanda tangan dering. GEN: Penanda tangan mengambil kunci rahasia acak \(x \in [1, l - 1]\) dan menghitung kunci rahasia yang sesuai kunci publik P = xG. Selain itu, dia menghitung kunci publik lain I = xHp(P) yang akan kita lakukan sebut "gambar kunci". SIG: Penandatangan menghasilkan tanda tangan dering satu kali dengan pengetahuan nol non-interaktif pembuktian menggunakan teknik dari [21]. Dia memilih subset acak \(S'\) dari n dari pengguna lain. kunci publik Pi, pasangan kuncinya sendiri (x, P) dan gambar kunci I. Misalkan \(0 \leq s \leq n\) menjadi indeks rahasia penanda tangan di S (sehingga kunci publiknya adalah Ps). Dia memilih {qi | secara acak saya = 0 . . . n} dan {wi | saya = 0 . . . n, i ̸= s} dari (1 . . . l) dan menerapkan transformasi berikut: Li = ( qiG, jika saya = s qiG + wiPi, jika saya ̸= s Ri = ( qiHp(Pi), jika saya = s qiHp(Pi) + wiI, jika saya ̸= s Langkah selanjutnya adalah mendapatkan tantangan non-interaktif: c = Hs(m, L1, . . . , Ln, R1, . . . , Rn) Akhirnya penandatangan menghitung responsnya: ci =    wi, jika saya ̸= s c - nP saya=0 ci mod aku, jika saya = s ri = ( qi, jika saya ̸= s qs−csx mod aku, jika saya = s Tanda tangan yang dihasilkan adalah \(\sigma\) = (I, c1, . . . , cn, r1, . . . , rn). 9 17 Mungkin ini bodoh, tapi kehati-hatian harus diberikan saat menyatukan S dan P_s. Jika Anda hanya menambahkan kunci publik terakhir sampai akhir, ketidakterhubungan rusak karena siapa pun memeriksa transaksi yang lewat cukup memeriksa kunci publik terakhir yang terdaftar di setiap transaksi dan booming. Itu kunci publiknya berhubungan dengan pengirimnya. Jadi setelah penyatuan, generator nomor pseudorandom harus ada digunakan untuk mengubah kunci publik yang dipilih. "...sampai pemilik membuat tanda tangan kedua menggunakan pasangan kunci yang sama." Saya berharap penulisnya? akan menguraikan hal ini. Saya yakin ini berarti "pastikan bahwa setiap kali Anda memilih sekumpulan kunci publik untuk dikaburkan sendiri, Anda memilih satu set yang benar-benar baru tanpa dua kunci yang sama." Yang tampak seperti a kondisi yang cukup kuat untuk ditempatkan pada ketidakterhubungan. Mungkin "Anda memilih kumpulan acak baru semua kunci yang mungkin" dengan asumsi bahwa, meskipun persimpangan nontrivial pasti akan terjadi terjadi, hal itu tidak akan sering terjadi. Apa pun yang terjadi, saya perlu menggali lebih dalam pernyataan ini. Ini menghasilkan tanda tangan cincin. Bukti tanpa pengetahuan itu luar biasa: Saya menantang Anda untuk membuktikan kepada saya bahwa Anda mengetahui sebuah rahasia tanpa mengungkapkan rahasianya. Misalnya saja kita berada di pintu masuk gua yang berbentuk donat, dan di belakang gua (di luar pandangan dari pintu masuk) ada opintu baru ke mana Anda mengaku kamu punya kuncinya. Jika Anda pergi ke satu arah, ia selalu membiarkan Anda lewat, tetapi jika Anda pergi ke arah yang lain arah lain, Anda memerlukan kunci. Tapi Anda bahkan tidak mau TUNJUKKAN kuncinya kepada saya, apalagi tunjukkan padaku bahwa itu membuka pintu. Tapi Anda ingin membuktikan kepada saya bahwa Anda tahu cara membukanya pintu. Dalam suasana interaktif, saya melempar koin. Kepala di kiri, ekor di kanan, dan Anda turun ke bawah gua berbentuk donat ke arah mana pun koin mengarahkan Anda. Di belakang, di luar pandanganku, kamu buka pintu untuk kembali ke sisi lain. Kami mengulangi eksperimen melempar koin sampai saya puas bahwa Anda memiliki kuncinya. Tapi itu jelas merupakan bukti tanpa pengetahuan yang INTERAKTIF. Ada versi non-interaktif di mana Anda dan saya tidak perlu berkomunikasi; dengan cara ini, tidak ada penyadap yang dapat mengganggu. http://en.wikipedia.org/wiki/Zero-knowledge_proof Ini kebalikan dari definisi sebelumnya.

VER: mengambil pesan m, satu set S, tanda tangan \(\sigma\) dan menghasilkan output “benar” atau “salah”. LNK: mengambil himpunan I = {Ii}, tanda tangan \(\sigma\) dan menghasilkan keluaran “tertaut” atau “indep”. Ide di balik protokol ini cukup sederhana: pengguna membuat tanda tangan diperiksa oleh sekumpulan kunci publik, bukan kunci publik unik. Identitas penandatangan adalah tidak dapat dibedakan dari pengguna lain yang kunci publiknya ada di set sampai pemiliknya memproduksinya tanda tangan kedua menggunakan pasangan kunci yang sama. Kunci pribadi x0 \(\cdots\) xi \(\cdots\) xn Kunci publik P0 \(\cdots\) pi \(\cdots\) hal Cincin Tanda tangan tanda tangan verifikasi Gambar 6. Anonimitas tanda tangan dering. GEN: Penanda tangan mengambil kunci rahasia acak \(x \in [1, l - 1]\) dan menghitung kunci rahasia yang sesuai kunci publik P = xG. Selain itu, dia menghitung kunci publik lain I = xHp(P) yang akan kita lakukan sebut "gambar kunci". SIG: Penandatangan menghasilkan tanda tangan dering satu kali dengan pengetahuan nol non-interaktif bukti menggunakan teknik dari [21]. Dia memilih subset acak \(S'\) dari n dari pengguna lain. kunci publik Pi, pasangan kuncinya sendiri (x, P) dan gambar kunci I. Misalkan \(0 \leq s \leq n\) menjadi indeks rahasia penanda tangan di S (sehingga kunci publiknya adalah Ps). Dia memilih {qi | secara acak saya = 0 . . . n} dan {wi | saya = 0 . . . n, i ̸= s} dari (1 . . . l) dan menerapkan transformasi berikut: Li = ( qiG, jika saya = s qiG + wiPi, jika saya ̸= s Ri = ( qiHp(Pi), jika saya = s qiHp(Pi) + wiI, jika saya ̸= s Langkah selanjutnya adalah mendapatkan tantangan non-interaktif: c = Hs(m, L1, . . . , Ln, R1, . . . , Rn) Akhirnya penandatangan menghitung responsnya: ci =    wi, jika saya ̸= s c - nP saya=0 ci mod aku, jika saya = s ri = ( qi, jika saya ̸= s qs−csx mod aku, jika saya = s Tanda tangan yang dihasilkan adalah \(\sigma\) = (I, c1, . . . , cn, r1, . . . , rn). 9 VER: mengambil pesan m, satu set S, tanda tangan \(\sigma\) dan menghasilkan output “benar” atau “salah”. LNK: mengambil himpunan I = {Ii}, tanda tangan \(\sigma\) dan menghasilkan keluaran “tertaut” atau “indep”. Ide di balik protokol ini cukup sederhana: pengguna membuat tanda tangan diperiksa oleh sekumpulan kunci publik, bukan kunci publik unik. Identitas penandatangan adalah tidak dapat dibedakan dari pengguna lain yang kunci publiknya ada di set sampai pemiliknya memproduksinya tanda tangan kedua menggunakan pasangan kunci yang sama. Kunci pribadi x0 \(\cdots\) xi \(\cdots\) xn Kunci publik P0 \(\cdots\) pi \(\cdots\) hal Cincin Tanda tangan tanda tangan verifikasi Gambar 6. Anonimitas tanda tangan dering. GEN: Penanda tangan mengambil kunci rahasia acak \(x \in [1, l - 1]\) dan menghitung kunci rahasia yang sesuai kunci publik P = xG. Selain itu, dia menghitung kunci publik lain I = xHp(P) yang akan kita lakukan sebut "gambar kunci". SIG: Penandatangan menghasilkan tanda tangan dering satu kali dengan pengetahuan nol non-interaktif bukti menggunakan teknik dari [21]. Dia memilih subset acak \(S'\) dari n dari pengguna lain. kunci publik Pi, pasangan kuncinya sendiri (x, P) dan gambar kunci I. Misalkan \(0 \leq s \leq n\) menjadi indeks rahasia penanda tangan di S (sehingga kunci publiknya adalah Ps). Dia memilih {qi | secara acak saya = 0 . . . n} dan {wi | saya = 0 . . . n, i ̸= s} dari (1 . . . l) dan menerapkan transformasi berikut: Li = ( qiG, jika saya = s qiG + wiPi, jika saya ̸= s Ri = ( qiHp(Pi), jika saya = s qiHp(Pi) + wiI, jika saya ̸= s Langkah selanjutnya adalah mendapatkan tantangan non-interaktif: c = Hs(m, L1, . . . , Ln, R1, . . . , Rn) Akhirnya penandatangan menghitung responsnya: ci =    wi, jika saya ̸= s c - nP saya=0 ci mod aku, jika saya = s ri = ( qi, jika saya ̸= s qs−csx mod aku, jika saya = s Tanda tangan yang dihasilkan adalah \(\sigma\) = (I, c1, . . . , cn, r1, . . . , rn). 9 18 Seluruh area ini adalah cryptonote agnostic, hanya menggambarkan algoritma tanda tangan cincin tanpa referensi mata uang. Saya curiga beberapa notasinya konsisten dengan makalah lainnya, meskipun begitu. Misalnya, x adalah kunci rahasia "acak" yang dipilih di GEN, yang menghasilkan kunci publik P dan gambar kunci publik I. Nilai x ini adalah nilai yang dihitung Bob di bagian 6 halaman 8. Jadi begini mulai menjernihkan beberapa kebingungan dari uraian sebelumnya. Ini keren; uang tidak ditransfer dari "alamat publik Alice ke publik Bob alamat." Ini sedang ditransfer dari alamat satu kali ke alamat satu kali. Jadi, dalam arti tertentu, inilah cara kerjanya. Jika Alex memiliki beberapa cryptonotes karena seseorang mengirimkannya kepadanya, ini berarti dia memiliki kunci pribadi yang diperlukan untuk mengirimkannya kepada Bob. Dia menggunakan pertukaran Diffie-Hellman menggunakan informasi publik Bob untuk menghasilkan alamat satu kali yang baru dan cryptonotes ditransfer ke alamat itu. Sekarang, karena pertukaran DH (yang mungkin aman) digunakan untuk menghasilkan alamat satu kali yang baru kepada siapa Alex mengirimkan CN-nya, Bob adalah satu-satunya yang memiliki kunci pribadi yang diperlukan untuk mengulanginya di atas. Jadi sekarang, Bob adalah Alex. http://en.wikipedia.org/wiki/Piecewise#Notation_and_interpretation Penjumlahan harus diindeks pada j bukan i. Setiap c_i adalah sampah acak (karena w_i acak) kecuali pantat c_iterkait dengan kunci sebenarnya yang terlibat dalam tanda tangan ini. Nilai c adalah a hash dari informasi sebelumnya. Saya pikir ini mungkin mengandung kesalahan ketik yang lebih buruk daripada menggunakan kembali indeks 'i', karena sepertinya c_s untuk didefinisikan secara implisit, bukan eksplisit. Memang, jika kita mengambil persamaan ini dengan keyakinan, maka kita menentukan bahwa c_s = (1/2)c - (1/2) jumlah_i neq s c_i. Artinya, hash dikurangi sejumlah angka acak. Sebaliknya jika penjumlahan ini dimaksudkan untuk dibaca "c_s = (c - sum_j neq s c_j) mod l", lalu kita ambil hash dari informasi kita sebelumnya, buat sekumpulan angka acak, kurangi semua angka acak itu dari hash, dan itu memberi kita c_s. Ini tampaknya terjadi apa yang "seharusnya" terjadi berdasarkan intuisi saya, dan cocok dengan langkah verifikasi di halaman 10. Tapi intuisi bukanlah matematika. Saya akan menggali lebih dalam tentang ini. Sama seperti sebelumnya; semua ini akan menjadi sampah acak kecuali yang terkait dengan yang sebenarnya kunci publik penandatangan x. Kecuali kali ini, inilah yang saya harapkan dari strukturnya: r_i acak untuk i!=s dan r_s hanya ditentukan oleh rahasia x dan nilai indeks s dari q_i dan c_i.

VER: Pemverifikasi memeriksa tanda tangan dengan menerapkan transformasi terbalik: ( aku saya = riG + ciPi R′ saya = riHp(Pi) + ciI Akhirnya, pemverifikasi memeriksa apakah nP saya=0 ci ?= Hs(m, L′ 0, . . . , aku′ n, R′ 0, . . . , R′ n) mod l Jika persamaan ini benar, pemverifikasi menjalankan algoritma LNK. Jika tidak, pemverifikasi akan menolak tanda tangan. LNK: Pemverifikasi memeriksa apakah saya telah digunakan pada tanda tangan sebelumnya (nilai-nilai ini disimpan di set I). Penggunaan ganda menyiratkan bahwa dua tanda tangan dihasilkan di bawah kunci rahasia yang sama. Arti protokol: dengan menerapkan transformasi L, penandatangan membuktikan bahwa dia mengetahuinya sedemikian rupa sehingga setidaknya satu Pi = xG. Untuk membuat bukti ini tidak dapat diulangi, kami memperkenalkan gambar kuncinya karena saya = xHp(P). Penandatangan menggunakan koefisien yang sama (ri, ci) untuk membuktikan pernyataan yang hampir sama: dia mengetahui x sedemikian rupa sehingga setidaknya satu \(H_p(P_i) = I \cdot x^{-1}\). Jika pemetaan \(x \to I\) adalah injeksi: 1. Tidak ada seorang pun yang dapat memulihkan kunci publik dari gambar kunci dan mengidentifikasi penandatangannya; 2. Penanda tangan tidak boleh membuat dua tanda tangan dengan huruf I berbeda dan x yang sama. Analisis keamanan lengkap disediakan di Lampiran A. 4.5 Transaksi CryptoNote standar Dengan menggabungkan kedua metode (kunci publik yang tidak dapat ditautkan dan tanda tangan cincin yang tidak dapat dilacak), Bob berhasil mencapainya tingkat privasi baru dibandingkan dengan skema Bitcoin asli. Itu mengharuskan dia untuk menyimpan saja satu kunci pribadi (a, b) dan publikasikan (A, B) untuk mulai menerima dan mengirim transaksi anonim. Saat memvalidasi setiap transaksi, Bob juga hanya melakukan dua perkalian kurva elips dan satu penambahan per output untuk memeriksa apakah suatu transaksi miliknya. Untuk setiap miliknya keluaran Bob memulihkan pasangan kunci satu kali (pi, Pi) dan menyimpannya di dompetnya. Masukan apa saja bisa terbukti secara tidak langsung mempunyai pemilik yang sama hanya jika mereka muncul dalam satu transaksi. Di Faktanya, hubungan ini jauh lebih sulit untuk dibangun karena tanda tangan satu kali saja. Dengan tanda tangan cincin, Bob dapat secara efektif menyembunyikan setiap masukan dari masukan orang lain; semua mungkin pembelanja akan sama besarnya, bahkan pemilik sebelumnya (Alice) tidak memiliki informasi lebih dari itu pengamat mana pun. Saat menandatangani transaksinya, Bob menentukan n output luar negeri dengan jumlah yang sama dengan miliknya keluaran, mencampur semuanya tanpa partisipasi pengguna lain. Bob sendiri (dan juga orang lain) tidak mengetahui apakah pembayaran ini telah dibelanjakan: suatu keluaran dapat digunakan dalam ribuan tanda tangan sebagai faktor ambiguitas dan tidak pernah menjadi sasaran persembunyian. Ganda pemeriksaan pembelanjaan terjadi pada fase LNK saat memeriksa kumpulan gambar kunci yang digunakan. Bob dapat memilih sendiri derajat ambiguitasnya: n = 1 berarti probabilitas yang dimilikinya menghabiskan output adalah probabilitas 50%, n = 99 menghasilkan 1%. Ukuran tanda tangan yang dihasilkan bertambah linier sebagai O(n+1), sehingga peningkatan anonimitas memerlukan biaya transaksi tambahan bagi Bob. Dia juga bisa setel n = 0 dan buat tanda tangan cincinnya hanya terdiri dari satu elemen, namun ini akan langsung terjadi mengungkapkan dia sebagai seorang pemboros. 10 VER: Pemverifikasi memeriksa tanda tangan dengan menerapkan transformasi terbalik: ( aku saya = riG + ciPi R′ saya = riHp(Pi) + ciI Akhirnya, pemverifikasi memeriksa apakah nP saya=0 ci ?= Hs(m, L′ 0, . . . , aku' n, R′ 0, . . . , R′ n) mod l Jika persamaan ini benar, pemverifikasi menjalankan algoritma LNK. Jika tidak, pemverifikasi akan menolak tanda tangan. LNK: Pemverifikasi memeriksa apakah saya telah digunakan pada tanda tangan sebelumnya (nilai-nilai ini disimpan di set I). Penggunaan ganda menyiratkan bahwa dua tanda tangan dihasilkan di bawah kunci rahasia yang sama. Arti protokol: dengan menerapkan transformasi L, penandatangan membuktikan bahwa dia mengetahuinya sedemikian rupa sehingga setidaknya satu Pi = xG. Untuk membuat bukti ini tidak dapat diulangi, kami memperkenalkan gambar kuncinya karena saya = xHp(P). Penandatangan menggunakan koefisien yang sama (ri, ci) untuk membuktikan pernyataan yang hampir sama: dia mengetahui x sedemikian rupa sehingga setidaknya satu \(H_p(P_i) = I \cdot x^{-1}\). Jika pemetaan \(x \to I\) adalah injeksi: 1. Tidak ada seorang pun yang dapat memulihkan kunci publik dari gambar kunci dan mengidentifikasi penandatangannya; 2. Penanda tangan tidak boleh membuat dua tanda tangan dengan huruf I berbeda dan x yang sama. Analisis keamanan lengkap disediakan di Lampiran A. 4.5 Transaksi CryptoNote standar Dengan menggabungkan kedua metode (kunci publik yang tidak dapat ditautkan dan tanda tangan cincin yang tidak dapat dilacak), Bob berhasil mencapainya tingkat privasi baru dibandingkan dengan skema Bitcoin asli. Itu mengharuskan dia untuk menyimpan saja satu kunci pribadi (a, b) dan publikasikan (A, B) untuk mulai menerima dan mengirim transaksi anonim. Saat memvalidasi setiap transaksi, Bob juga hanya melakukan dua perkalian kurva elips dan satu penambahan per output untuk memeriksa apakah suatu transaksi miliknya. Untuk setiap miliknya output Bob memulihkan keypair satu kali (pi, Pi) dan stbijih itu di dompetnya. Masukan apa saja bisa terbukti secara tidak langsung mempunyai pemilik yang sama hanya jika mereka muncul dalam satu transaksi. Di Faktanya, hubungan ini jauh lebih sulit untuk dibangun karena tanda tangan satu kali saja. Dengan tanda tangan cincin, Bob dapat secara efektif menyembunyikan setiap masukan dari masukan orang lain; semua mungkin pembelanja akan sama besarnya, bahkan pemilik sebelumnya (Alice) tidak memiliki informasi lebih dari itu pengamat mana pun. Saat menandatangani transaksinya, Bob menentukan n output luar negeri dengan jumlah yang sama dengan miliknya keluaran, mencampur semuanya tanpa partisipasi pengguna lain. Bob sendiri (dan juga orang lain) tidak mengetahui apakah pembayaran ini telah dibelanjakan: suatu keluaran dapat digunakan dalam ribuan tanda tangan sebagai faktor ambiguitas dan tidak pernah menjadi sasaran persembunyian. Ganda pemeriksaan pembelanjaan terjadi pada fase LNK saat memeriksa kumpulan gambar kunci yang digunakan. Bob dapat memilih sendiri derajat ambiguitasnya: n = 1 berarti probabilitas yang dimilikinya menghabiskan output adalah probabilitas 50%, n = 99 menghasilkan 1%. Ukuran tanda tangan yang dihasilkan bertambah linier sebagai O(n+1), sehingga peningkatan anonimitas memerlukan biaya transaksi tambahan bagi Bob. Dia juga bisa setel n = 0 dan buat tanda tangan cincinnya hanya terdiri dari satu elemen, namun ini akan langsung terjadi mengungkapkan dia sebagai seorang pemboros. 10 19 Saat ini, saya sangat bingung. Alex menerima pesan M dengan tanda tangan (I,c_1, ..., c_n, r_1, ..., r_n) dan daftar publik kunci S. dan dia menjalankan VER. Ini akan menghitung L_i' dan R_i' Ini memverifikasi bahwa c_s = c - sum_i neq s c_i pada halaman sebelumnya. Awalnya saya SANGAT (ha) bingung. Siapa pun dapat menghitung L_i' dan R_i'. Memang, masing-masing r_i dan c_i telah diterbitkan dalam tanda tangan sigma sama dengan nilai I. Himpunan S = P_i dari semua kunci publik juga telah dipublikasikan. Jadi siapapun yang pernah melihat sigma dan himpunan kunci S = P_i akan mendapatkan nilai yang sama untuk L_i' dan R_i' dan karenanya periksa tanda tangannya. Tapi kemudian saya ingat bagian ini hanya menjelaskan algoritma tanda tangan, bukan "cek jika ditandatangani, periksa apakah DIKIRIM KEPADA SAYA, dan jika demikian, belanjakan uangnya." Ini HANYA bagian tanda tangan dari permainan. Saya tertarik untuk membaca Lampiran A ketika saya akhirnya sampai di sana. Saya ingin melihat perbandingan operasi demi operasi skala penuh antara Cryptonote dengan Bitcoin. Juga, listrik/keberlanjutan. Bagian algoritma apa yang merupakan "input" di sini? Saya yakin masukan transaksi adalah Jumlah dan kumpulan UTXO yang jumlahnya lebih besar daripada jumlah Jumlah. Ini tidak jelas. “Target persembunyian?” Saya telah memikirkan hal ini selama beberapa menit sekarang dan saya masih belum memikirkannya gagasan paling kabur tentang apa artinya itu. Serangan pembelanjaan ganda hanya dapat dilakukan dengan memanipulasi kunci yang dianggap digunakan oleh sebuah node kumpulan gambar \(I\). "Tingkat ambiguitas" = n tetapi jumlah total kunci publik yang termasuk dalam transaksi adalah n+1. Artinya, tingkat ambiguitas adalah "berapa banyak orang LAIN yang Anda inginkan orang banyak?" Jawabannya mungkin, secara default, "sebanyak mungkin".

VER: Pemverifikasi memeriksa tanda tangan dengan menerapkan transformasi terbalik: ( aku saya = riG + ciPi R′ saya = riHp(Pi) + ciI Akhirnya, pemverifikasi memeriksa apakah nP saya=0 ci ?= Hs(m, L′ 0, . . . , aku' n, R′ 0, . . . , R′ n) mod l Jika persamaan ini benar, pemverifikasi menjalankan algoritma LNK. Jika tidak, pemverifikasi akan menolak tanda tangan. LNK: Pemverifikasi memeriksa apakah saya telah digunakan pada tanda tangan sebelumnya (nilai-nilai ini disimpan di set I). Penggunaan ganda menyiratkan bahwa dua tanda tangan dihasilkan di bawah kunci rahasia yang sama. Arti protokol: dengan menerapkan transformasi L, penandatangan membuktikan bahwa dia mengetahuinya sedemikian rupa sehingga setidaknya satu Pi = xG. Untuk membuat bukti ini tidak dapat diulangi, kami memperkenalkan gambar kuncinya karena saya = xHp(P). Penandatangan menggunakan koefisien yang sama (ri, ci) untuk membuktikan pernyataan yang hampir sama: dia mengetahui x sedemikian rupa sehingga setidaknya satu \(H_p(P_i) = I \cdot x^{-1}\). Jika pemetaan \(x \to I\) adalah injeksi: 1. Tidak ada seorang pun yang dapat memulihkan kunci publik dari gambar kunci dan mengidentifikasi penandatangannya; 2. Penanda tangan tidak boleh membuat dua tanda tangan dengan huruf I berbeda dan x yang sama. Analisis keamanan lengkap disediakan di Lampiran A. 4.5 Transaksi CryptoNote standar Dengan menggabungkan kedua metode (kunci publik yang tidak dapat ditautkan dan tanda tangan cincin yang tidak dapat dilacak), Bob berhasil mencapainya tingkat privasi baru dibandingkan dengan skema Bitcoin asli. Itu mengharuskan dia untuk menyimpan saja satu kunci pribadi (a, b) dan publikasikan (A, B) untuk mulai menerima dan mengirim transaksi anonim. Saat memvalidasi setiap transaksi, Bob juga hanya melakukan dua perkalian kurva elips dan satu penambahan per output untuk memeriksa apakah suatu transaksi miliknya. Untuk setiap miliknya keluaran Bob memulihkan pasangan kunci satu kali (pi, Pi) dan menyimpannya di dompetnya. Masukan apa saja bisa terbukti secara tidak langsung mempunyai pemilik yang sama hanya jika mereka muncul dalam satu transaksi. Di Faktanya, hubungan ini jauh lebih sulit untuk dibangun karena tanda tangan satu kali saja. Dengan tanda tangan cincin, Bob dapat secara efektif menyembunyikan setiap masukan dari masukan orang lain; semua mungkin pembelanja akan sama besarnya, bahkan pemilik sebelumnya (Alice) tidak memiliki informasi lebih dari itu pengamat mana pun. Saat menandatangani transaksinya, Bob menentukan n output luar negeri dengan jumlah yang sama dengan miliknya keluaran, mencampur semuanya tanpa partisipasi pengguna lain. Bob sendiri (dan juga orang lain) tidak mengetahui apakah pembayaran ini telah dibelanjakan: suatu keluaran dapat digunakan dalam ribuan tanda tangan sebagai faktor ambiguitas dan tidak pernah menjadi sasaran persembunyian. Ganda pemeriksaan pembelanjaan terjadi pada fase LNK saat memeriksa kumpulan gambar kunci yang digunakan. Bob dapat memilih sendiri derajat ambiguitasnya: n = 1 berarti probabilitas yang dimilikinya menghabiskan output adalah probabilitas 50%, n = 99 menghasilkan 1%. Ukuran tanda tangan yang dihasilkan bertambah linier sebagai O(n+1), sehingga peningkatan anonimitas memerlukan biaya transaksi tambahan bagi Bob. Dia juga bisa setel n = 0 dan buat tanda tangan cincinnya hanya terdiri dari satu elemen, namun ini akan langsung terjadi mengungkapkan dia sebagai seorang pemboros. 10 VER: Pemverifikasi memeriksa tanda tangan dengan menerapkan transformasi terbalik: ( aku saya = riG + ciPi R′ saya = riHp(Pi) + ciI Akhirnya, pemverifikasi memeriksa apakah nP saya=0 ci ?= Hs(m, L′ 0, . . . , aku' n, R′ 0, . . . , R′ n) mod l Jika persamaan ini benar, pemverifikasi menjalankan algoritma LNK. Jika tidak, pemverifikasi akan menolak tanda tangan. LNK: Pemverifikasi memeriksa apakah saya telah digunakan pada tanda tangan sebelumnya (nilai-nilai ini disimpan di set I). Penggunaan ganda menyiratkan bahwa dua tanda tangan dihasilkan di bawah kunci rahasia yang sama. Arti protokol: dengan menerapkan transformasi L, penandatangan membuktikan bahwa dia mengetahuinya sedemikian rupa sehingga setidaknya satu Pi = xG. Untuk membuat bukti ini tidak dapat diulangi, kami memperkenalkan gambar kuncinya karena saya = xHp(P). Penandatangan menggunakan koefisien yang sama (ri, ci) untuk membuktikan pernyataan yang hampir sama: dia mengetahui x sedemikian rupa sehingga setidaknya satu \(H_p(P_i) = I \cdot x^{-1}\). Jika pemetaan \(x \to I\) adalah injeksi: 1. Tidak ada seorang pun yang dapat memulihkan kunci publik dari gambar kunci dan mengidentifikasi penandatangannya; 2. Penanda tangan tidak boleh membuat dua tanda tangan dengan huruf I berbeda dan x yang sama. Analisis keamanan lengkap disediakan di Lampiran A. 4.5 Transaksi CryptoNote standar Dengan menggabungkan kedua metode (kunci publik yang tidak dapat ditautkan dan tanda tangan cincin yang tidak dapat dilacak), Bob berhasil mencapainya tingkat privasi baru dibandingkan dengan skema Bitcoin asli. Itu mengharuskan dia untuk menyimpan saja satu kunci pribadi (a, b) dan publikasikan (A, B) untuk mulai menerima dan mengirim transaksi anonim. Saat memvalidasi setiap transaksi, Bob juga hanya melakukan dua perkalian kurva elips dan satu penambahan per output untuk memeriksa apakah suatu transaksi miliknya. Untuk setiap miliknya output Bob memulihkan keypair satu kali (pi, Pi) dan stbijih itu di dompetnya. Masukan apa saja bisa terbukti secara tidak langsung mempunyai pemilik yang sama hanya jika mereka muncul dalam satu transaksi. Di Faktanya, hubungan ini jauh lebih sulit untuk dibangun karena tanda tangan satu kali saja. Dengan tanda tangan cincin, Bob dapat secara efektif menyembunyikan setiap masukan dari masukan orang lain; semua mungkin pembelanja akan sama besarnya, bahkan pemilik sebelumnya (Alice) tidak memiliki informasi lebih dari itu pengamat mana pun. Saat menandatangani transaksinya, Bob menentukan n output luar negeri dengan jumlah yang sama dengan miliknya keluaran, mencampur semuanya tanpa partisipasi pengguna lain. Bob sendiri (dan juga orang lain) tidak mengetahui apakah pembayaran ini telah dibelanjakan: suatu keluaran dapat digunakan dalam ribuan tanda tangan sebagai faktor ambiguitas dan tidak pernah menjadi sasaran persembunyian. Ganda pemeriksaan pembelanjaan terjadi pada fase LNK saat memeriksa kumpulan gambar kunci yang digunakan. Bob dapat memilih sendiri derajat ambiguitasnya: n = 1 berarti probabilitas yang dimilikinya menghabiskan output adalah probabilitas 50%, n = 99 menghasilkan 1%. Ukuran tanda tangan yang dihasilkan bertambah linier sebagai O(n+1), sehingga peningkatan anonimitas memerlukan biaya transaksi tambahan bagi Bob. Dia juga bisa setel n = 0 dan buat tanda tangan cincinnya hanya terdiri dari satu elemen, namun ini akan langsung terjadi mengungkapkan dia sebagai seorang pemboros. 10 20 Ini menarik; sebelumnya, kami menyediakan cara bagi penerima, Bob, untuk melakukan semua MASUK transaksi tidak dapat dibatalkan tautannya baik dengan memilih setengah dari kunci pribadinya secara deterministik atau dengan menerbitkan setengah kunci pribadinya sebagai publik. Ini adalah kebijakan yang tidak ada jalan mundurnya. Di sini, kita lihat cara pengirim, Alex, untuk memilih satu transaksi keluar yang dapat ditautkan, namun kenyataannya begini mengungkapkan Alex sebagai pengirim ke seluruh jaringan. Ini BUKAN kebijakan yang tidak bisa mundur. Ini adalah transaksi demi transaksi. Apakah ada kebijakan ketiga? Bisakah penerima, Bob, membuat ID pembayaran unik untuk Alex itu tidak pernah berubah, mungkin menggunakan pertukaran Diffie-Hellman? Jika ada yang memasukkan pembayaran itu ID yang dibundel di suatu tempat dalam transaksinya ke alamat Bob, pasti berasal dari Alex. Dengan cara ini, Alex tidak perlu mengungkapkan dirinya ke seluruh jaringan dengan memilih untuk menghubungkan jaringan tertentu transaksi, namun dia masih dapat mengidentifikasi dirinya kepada orang yang dia kirimi uang. Bukankah ini yang dilakukan Poloniex?

Transaksi Terima kasih masukannya Keluaran0 . . . Keluaran saya . . . Keluaran Gambar kunci Tanda tangan Tanda Tangan Cincin Kunci tujuan Keluaran1 Kunci tujuan Keluaran Transaksi luar negeri Keluaran pengirim Kunci tujuan Pasangan kunci satu kali Satu kali kunci pribadi Saya = xHp(P) hal, x Gambar 7. Pembuatan tanda tangan dering dalam transaksi standar. 5 Bukti Kerja Egalitarian Pada bagian ini kami mengusulkan dan menerapkan algoritma proof-of-work yang baru. Tujuan utama kami adalah untuk menutup kesenjangan antara penambang CPU (mayoritas) dan GPU/FPGA/ASIC (minoritas). Itu benar tepat bahwa beberapa pengguna dapat memiliki keunggulan tertentu dibandingkan yang lain, tetapi investasi mereka harus tumbuh setidaknya secara linear dengan kekuatan. Secara umum, memproduksi perangkat dengan tujuan khusus harus menjadi sesedikit mungkin menguntungkan. 5.1 Pekerjaan terkait Protokol Bitcoin proof-of-work asli menggunakan fungsi penetapan harga intensif CPU SHA-256. Ini terutama terdiri dari operator logika dasar dan hanya mengandalkan kecepatan komputasi prosesor, oleh karena itu sangat cocok untuk implementasi multicore/konveyor. Namun, komputer modern tidak dibatasi oleh jumlah operasi per detik saja, tetapi juga berdasarkan ukuran memori. Meskipun beberapa prosesor bisa jauh lebih cepat dibandingkan prosesor lainnya [8], ukuran memori cenderung bervariasi antar mesin. Fungsi harga terikat memori pertama kali diperkenalkan oleh Abadi et al dan didefinisikan sebagai “fungsi yang waktu komputasinya didominasi oleh waktu yang dihabiskan untuk mengakses memori” [15]. Ide utamanya adalah untuk membangun sebuah algoritma yang mengalokasikan blok data yang besar (“scratchpad”) dalam memori yang dapat diakses secara relatif lambat (misalnya, RAM) dan “mengakses sebuah urutan lokasi yang tidak dapat diprediksi” di dalamnya. Satu blok harus cukup besar untuk dapat diawetkan data lebih menguntungkan daripada menghitung ulang untuk setiap akses. Algoritmenya juga harus mencegah paralelisme internal, maka N thread simultan memerlukan memori N kali lebih banyak sekaligus. Dwork et al [22] menyelidiki dan memformalkan pendekatan ini sehingga mereka menyarankan pendekatan lain varian fungsi penetapan harga: “Mbound”. Satu lagi karya milik F. Coelho [20] yang 11 Transaksi Terima kasih masukannya Keluaran0 . . . Keluaran saya . . . Keluaran Gambar kunci Tanda tangan Tanda Tangan Cincin Kunci tujuan Keluaran1 Kunci tujuan Keluaran Transaksi luar negeri Keluaran pengirim Kunci tujuan Pasangan kunci satu kali Satu kali kunci pribadi Saya = xHp(P) hal, x Gambar 7. Pembuatan tanda tangan dering dalam transaksi standar. 5 Bukti Kerja Egalitarian Di bagian ini kami mengusulkan dan mendasarkan algoritma proof-of-work baru. Tujuan utama kami adalah untuk menutup kesenjangan antara penambang CPU (mayoritas) dan GPU/FPGA/ASIC (minoritas). Itu benar tepat bahwa beberapa pengguna dapat memiliki keunggulan tertentu dibandingkan yang lain, tetapi investasi mereka harus tumbuh setidaknya secara linear dengan kekuatan. Secara umum, memproduksi perangkat dengan tujuan khusus harus menjadi sesedikit mungkin menguntungkan. 5.1 Pekerjaan terkait Protokol Bitcoin proof-of-work asli menggunakan fungsi penetapan harga intensif CPU SHA-256. Ini terutama terdiri dari operator logika dasar dan hanya mengandalkan kecepatan komputasi prosesor, oleh karena itu sangat cocok untuk implementasi multicore/konveyor. Namun, komputer modern tidak dibatasi oleh jumlah operasi per detik saja, tetapi juga berdasarkan ukuran memori. Meskipun beberapa prosesor bisa jauh lebih cepat dibandingkan prosesor lainnya [8], ukuran memori cenderung bervariasi antar mesin. Fungsi harga terikat memori pertama kali diperkenalkan oleh Abadi et al dan didefinisikan sebagai “fungsi yang waktu komputasinya didominasi oleh waktu yang dihabiskan untuk mengakses memori” [15]. Ide utamanya adalah untuk membangun sebuah algoritma yang mengalokasikan blok data yang besar (“scratchpad”) dalam memori yang dapat diakses secara relatif lambat (misalnya, RAM) dan “mengakses sebuah urutan lokasi yang tidak dapat diprediksi” di dalamnya. Satu blok harus cukup besar untuk dapat diawetkan data lebih menguntungkan daripada menghitung ulang untuk setiap akses. Algoritmenya juga harus mencegah paralelisme internal, maka N thread simultan memerlukan memori N kali lebih banyak sekaligus. Dwork et al [22] menyelidiki dan memformalkan pendekatan ini sehingga mereka menyarankan pendekatan lain varian fungsi penetapan harga: “Mbound”. Satu lagi karya milik F. Coelho [20] yang 11 21 Tampaknya ini adalah UTXO kami: jumlah dan kunci tujuan. Jika Alex yang membuat transaksi standar ini dan mengirimkannya ke Bob, maka Alex juga memiliki kunci privatnya untuk masing-masing ini. Saya sangat menyukai diagram ini, karena menjawab beberapa pertanyaan sebelumnya. Masukan Txn terdiri dari satu set keluaran Txn dan kekamu gambar. Kemudian ditandatangani dengan tanda tangan cincin, termasuk semuanya kunci pribadi yang dimiliki Alex untuk semua transaksi luar negeri yang terbungkus dalam kesepakatan itu. Itu Output Txn terdiri dari jumlah dan kunci tujuan. Penerima transaksi dapat, sesuka hati, buat kunci pribadi satu kali seperti yang dijelaskan sebelumnya di makalah untuk dibelanjakan uangnya. Akan menyenangkan untuk mengetahui seberapa cocoknya ini dengan kode sebenarnya... Tidak, Nic van Saberhagen menjelaskan secara longgar beberapa properti dari algoritma bukti kerja, tanpa benar-benar menjelaskan algoritma itu. Algoritma CryptoNight sendiri MEMBUTUHKAN analisis mendalam. Ketika saya membaca ini, saya tergagap. Haruskah investasi tumbuh setidaknya secara linear dengan kekuatan, atau seharusnya investasi tumbuh paling banyak secara linear dengan kekuatan? Dan kemudian saya menyadari; Saya, sebagai penambang, atau investor, biasanya memikirkan "seberapa besar kekuatan yang bisa saya peroleh untuk investasi?" bukan "berapa banyak investasi yang diperlukan untuk jumlah listrik yang tetap?" Tentu saja, nyatakan investasi dengan I dan daya dengan P. Jika I(P) adalah investasi sebagai fungsi daya dan P(I) adalah kekuatan sebagai fungsi investasi, keduanya akan berbanding terbalik satu sama lain (di mana pun invers bisa ada). Dan jika I(P) lebih cepat dari linier maka P(I) lebih lambat dari linier. Oleh karena itu, akan ada penurunan tingkat pengembalian bagi investor. Dengan kata lain, apa yang ingin penulis katakan di sini adalah: "Tentu saja, jika Anda berinvestasi lebih banyak, Anda akan mendapatkan lebih banyak kekuatan. Tapi kita harus mencoba membuat tingkat pengembaliannya lebih rendah." Investasi CPU pada akhirnya akan terbatas secara sub-linear; pertanyaannya adalah apakah penulisnya telah merancang algoritma POW yang akan memaksa ASIC untuk juga melakukan hal ini. Haruskah “mata uang masa depan” hipotetis selalu ditambang dengan sumber daya yang paling lambat/terbatas? Makalah yang ditulis oleh Abadi dkk (yang ditulis oleh beberapa insinyur Google dan Microsoft) adalah, pada dasarnya, menggunakan fakta bahwa selama beberapa tahun terakhir ukuran memori menjadi jauh lebih kecil variansi antar mesin dibandingkan kecepatan prosesor, dan dengan rasio investasi-daya yang lebih dari linier. Dalam beberapa tahun, hal ini mungkin harus dikaji ulang! Semuanya adalah perlombaan senjata... Membangun fungsi hash sulit; membangun fungsi hash yang memenuhi batasan ini tampaknya lebih sulit. Tulisan ini sepertinya tidak memiliki penjelasan yang sebenarnya hashing algoritma CryptoNight. Saya pikir ini adalah implementasi SHA-3 yang berbasis memori di postingan forum tapi saya tidak tahu... dan itulah intinya. Itu harus dijelaskan.

mengusulkan solusi paling efektif: “Hokkaido”. Sepengetahuan kami, karya terakhir yang didasarkan pada gagasan pencarian pseudo-acak dalam array besar adalah algoritma yang dikenal sebagai "scrypt" oleh C. Percival [32]. Berbeda dengan fungsi sebelumnya yang menjadi fokusnya derivasi kunci, dan bukan sistem proof-of-work. Meskipun demikian, scrypt dapat memenuhi tujuan kita: ini berfungsi dengan baik sebagai fungsi penetapan harga dalam masalah konversi parsial hash seperti SHA-256 di Bitcoin. Saat ini scrypt telah diterapkan di Litecoin [14] dan beberapa fork Bitcoin lainnya. Namun, implementasinya tidak terlalu terikat pada memori: rasio “waktu akses memori / keseluruhan time” tidak cukup besar karena setiap instance hanya menggunakan 128 KB. Ini mengizinkan penambang GPU menjadi kira-kira 10 kali lebih efektif dan terus meninggalkan kemungkinan penciptaan secara relatif perangkat penambangan yang murah namun sangat efisien. Selain itu, konstruksi scrypt itu sendiri memungkinkan pertukaran linier antara ukuran memori dan Kecepatan CPU karena fakta bahwa setiap blok di scratchpad hanya diturunkan dari blok sebelumnya. Misalnya, Anda dapat menyimpan setiap blok kedua dan menghitung ulang blok lainnya dengan cara yang malas, yaitu saja ketika hal itu menjadi perlu. Indeks pseudo-acak diasumsikan terdistribusi secara seragam, maka nilai yang diharapkan dari perhitungan ulang blok tambahan adalah 1 \(2 \cdot N\), dimana N adalah nomornya dari iterasi. Waktu komputasi keseluruhan bertambah kurang dari setengahnya karena ada juga operasi yang tidak bergantung pada waktu (waktu konstan) seperti menyiapkan alas gores dan hashmelanjutkan setiap iterasi. Menghemat 2/3 memori membutuhkan biaya 1 3 \(\cdot\) T+1 3 \(\cdot\) \(2 \cdot N\) = N perhitungan ulang tambahan; 9/10 menghasilkan 1 10 \(\cdot\) T+. . . + 1 \(10 \cdot 9 \cdot N\) = 4,5N. Mudah untuk menunjukkan bahwa menyimpan hanya 1 s dari semua blok meningkatkan waktu kurang dari faktor s−1 2. Hal ini pada gilirannya menyiratkan bahwa mesin dengan CPU 200 kali lebih cepat dibandingkan chip modern yang hanya mampu menyimpan 320 byte scratchpad. 5.2 Algoritma yang diusulkan Kami mengusulkan algoritma terikat memori baru untuk fungsi penetapan harga proof-of-work. Itu bergantung pada akses acak ke memori lambat dan menekankan ketergantungan latensi. Berbeda dengan scrypt every blok baru (panjang 64 byte) bergantung pada semua blok sebelumnya. Hasilnya bersifat hipotetis "penghemat memori" akan meningkatkan kecepatan penghitungannya secara eksponensial. Algoritme kami memerlukan sekitar 2 Mb per instance karena alasan berikut: 1. Cocok dengan cache L3 (per inti) prosesor modern, yang seharusnya menjadi mainstream dalam beberapa tahun; 2. Memori internal satu megabyte adalah ukuran yang hampir tidak dapat diterima untuk pipeline ASIC modern; 3. GPU dapat menjalankan ratusan instance secara bersamaan, namun dibatasi dalam hal lain: Memori GDDR5 lebih lambat dari cache CPU L3 dan luar biasa karena bandwidthnya kecepatan akses acak. 4. Perluasan scratchpad secara signifikan memerlukan peningkatan iterasi, yang mana dalam hal ini giliran menyiratkan peningkatan waktu secara keseluruhan. Panggilan “berat” di jaringan p2p yang tidak dapat dipercaya dapat menyebabkan kerentanan serius, karena node wajib memeriksa proof-of-work setiap blok baru. Jika sebuah node menghabiskan banyak waktu pada setiap evaluasi hash, maka node tersebut dapat dengan mudah DDoS oleh banjir objek palsu dengan data kerja sewenang-wenang (nilainonce). 12 mengusulkan solusi paling efektif: “Hokkaido”. Sepengetahuan kami, karya terakhir yang didasarkan pada gagasan pencarian pseudo-acak dalam array besar adalah algoritma yang dikenal sebagai "scrypt" oleh C. Percival [32]. Berbeda dengan fungsi sebelumnya yang menjadi fokusnya derivasi kunci, dan bukan sistem proof-of-work. Meskipun demikian, scrypt dapat memenuhi tujuan kita: ini berfungsi dengan baik sebagai fungsi penetapan harga dalam masalah konversi parsial hash seperti SHA-256 di Bitcoin. Saat ini scrypt telah diterapkan di Litecoin [14] dan beberapa fork Bitcoin lainnya. Namun, implementasinya tidak terlalu terikat pada memori: rasio “waktu akses memori / keseluruhan time” tidak cukup besar karena setiap instance hanya menggunakan 128 KB. Ini mengizinkan penambang GPU menjadi kira-kira 10 kali lebih efektif dan terus meninggalkan kemungkinan penciptaan secara relatif perangkat penambangan yang murah namun sangat efisien. Selain itu, konstruksi scrypt itu sendiri memungkinkan pertukaran linier antara ukuran memori dan Kecepatan CPU karena fakta bahwa setiap blok di scratchpad hanya diturunkan dari blok sebelumnya. Misalnya, Anda dapat menyimpan setiap blok kedua dan menghitung ulang blok lainnya dengan cara yang malas, yaitu saja ketika hal itu menjadi perlu. Indeks pseudo-acak diasumsikan terdistribusi secara seragam, maka nilai yang diharapkan dari perhitungan ulang blok tambahan adalah 1 \(2 \cdot N\), dimanaN adalah nomornya dari iterasi. Waktu komputasi keseluruhan bertambah kurang dari setengahnya karena ada juga operasi yang tidak bergantung pada waktu (waktu konstan) seperti menyiapkan alas gores dan hashmelanjutkan setiap iterasi. Menghemat 2/3 memori membutuhkan biaya 1 3 \(\cdot\) T+1 3 \(\cdot\) \(2 \cdot N\) = N perhitungan ulang tambahan; 9/10 menghasilkan 1 10 \(\cdot\) T+. . . + 1 \(10 \cdot 9 \cdot N\) = 4,5N. Mudah untuk menunjukkan bahwa menyimpan hanya 1 s dari semua blok meningkatkan waktu kurang dari faktor s−1 2. Hal ini pada gilirannya menyiratkan bahwa mesin dengan CPU 200 kali lebih cepat dibandingkan chip modern yang hanya mampu menyimpan 320 byte scratchpad. 5.2 Algoritma yang diusulkan Kami mengusulkan algoritma terikat memori baru untuk fungsi penetapan harga proof-of-work. Itu bergantung pada akses acak ke memori lambat dan menekankan ketergantungan latensi. Berbeda dengan scrypt every blok baru (panjang 64 byte) bergantung pada semua blok sebelumnya. Hasilnya bersifat hipotetis "penghemat memori" akan meningkatkan kecepatan penghitungannya secara eksponensial. Algoritme kami memerlukan sekitar 2 Mb per instance karena alasan berikut: 1. Cocok dengan cache L3 (per inti) prosesor modern, yang seharusnya menjadi mainstream dalam beberapa tahun; 2. Memori internal satu megabyte adalah ukuran yang hampir tidak dapat diterima untuk pipeline ASIC modern; 3. GPU dapat menjalankan ratusan instance secara bersamaan, namun dibatasi dalam hal lain: Memori GDDR5 lebih lambat dari cache CPU L3 dan luar biasa karena bandwidthnya kecepatan akses acak. 4. Perluasan scratchpad secara signifikan memerlukan peningkatan iterasi, yang mana dalam hal ini giliran menyiratkan peningkatan waktu secara keseluruhan. Panggilan “berat” di jaringan p2p yang tidak dapat dipercaya dapat menyebabkan kerentanan serius, karena node wajib memeriksa proof-of-work setiap blok baru. Jika sebuah node menghabiskan banyak waktu pada setiap evaluasi hash, maka node tersebut dapat dengan mudah DDoS oleh banjir objek palsu dengan data kerja sewenang-wenang (nilainonce). 12 22 Sudahlah, itu koin scrypt? Dimana algoritmanya? Yang saya lihat hanyalah sebuah iklan. Di sinilah Cryptonote, jika algoritma PoW mereka bermanfaat, akan benar-benar bersinar. Bukan itu sungguh SHA-256, sebenarnya bukan scrypt. Ini baru, terikat memori, dan non-rekursif.

6 Keuntungan lebih lanjut 6.1 Emisi halus Batas atas jumlah keseluruhan koin digital CryptoNote adalah: MSupply = 264 −1 satuan atom. Ini adalah batasan alami yang hanya didasarkan pada batasan implementasi, bukan berdasarkan intuisi seperti “N koin seharusnya cukup untuk siapa pun”. Untuk menjamin kelancaran proses emisi kami menggunakan formula blok berikut hadiah: BaseReward = (MSupply −A) ≫18, di mana A adalah jumlah koin yang dihasilkan sebelumnya. 6.2 Parameter yang dapat disesuaikan 6.2.1 Kesulitan CryptoNote berisi algoritma penargetan yang mengubah kesulitan setiap blok. Ini mengurangi waktu reaksi sistem ketika laju hash jaringan meningkat atau menyusut secara intensif, mempertahankan tingkat blok yang konstan. Metode Bitcoin asli menghitung relasi aktual dan menargetkan rentang waktu antara blok 2016 terakhir dan menggunakannya sebagai pengali untuk blok saat ini kesulitan. Jelas ini tidak cocok untuk perhitungan ulang yang cepat (karena inersia yang besar) dan menghasilkan osilasi. Ide umum di balik algoritme kami adalah menjumlahkan semua pekerjaan yang diselesaikan oleh node dan membaginya dengan waktu yang telah mereka habiskan. Ukuran pekerjaan adalah nilai kesulitan yang sesuai di setiap blok. Namun karena stempel waktu yang tidak akurat dan tidak dapat dipercaya, kami tidak dapat menentukan waktu yang tepat interval waktu antar blok. Seorang pengguna dapat menggeser stempel waktunya ke masa depan dan waktu berikutnya intervalnya mungkin sangat kecil atau bahkan negatif. Agaknya akan ada beberapa insiden semacam ini, jadi kita tinggal mengurutkan stempel waktu dan menghilangkan outliernya (yaitu 20%). Kisaran nilai sisanya adalah waktu yang dihabiskan untuk 80% blok terkait. 6.2.2 Batasan ukuran Pengguna membayar untuk menyimpan blockchain dan berhak memilih ukurannya. Setiap penambang berurusan dengan pertukaran antara menyeimbangkan biaya dan keuntungan dari biaya dan menetapkan biayanya sendiri “batas lunak” untuk membuat blok. Aturan inti untuk ukuran blok maksimum juga diperlukan mencegah blockchain dibanjiri transaksi palsu, namun nilai ini seharusnya tidak dikodekan secara keras. Misalkan MN adalah nilai median dari N ukuran blok terakhir. Kemudian “batas keras” untuk ukurannya menerima blok adalah \(2 \cdot M_N\). Ini mencegah blockchain membengkak tetapi masih memungkinkan batasnya perlahan tumbuh seiring waktu jika perlu. Ukuran transaksi tidak perlu dibatasi secara eksplisit. Itu dibatasi oleh ukuran sebuah balok; dan jika seseorang ingin membuat transaksi besar dengan ratusan input/output (atau dengan tingkat ambiguitas yang tinggi dalam tanda tangan cincin), ia dapat melakukannya dengan membayar biaya yang cukup. 6.2.3 Hukuman kelebihan ukuran Seorang penambang masih memiliki kemampuan untuk mengisi satu blok penuh dengan transaksi tanpa biaya miliknya hingga maksimum ukuran \(2 \cdot M_b\). Meskipun hanya mayoritas penambang yang dapat menggeser nilai median, masih ada a 13 6 Keuntungan lebih lanjut 6.1 Emisi halus Batas atas jumlah keseluruhan koin digital CryptoNote adalah: MSupply = 264 −1 satuan atom. Ini adalah batasan alami yang hanya didasarkan pada batasan implementasi, bukan berdasarkan intuisi seperti “N koin seharusnya cukup untuk siapa pun”. Untuk menjamin kelancaran proses emisi kami menggunakan formula blok berikut hadiah: BaseReward = (MSupply −A) ≫18, di mana A adalah jumlah koin yang dihasilkan sebelumnya. 6.2 Parameter yang dapat disesuaikan 6.2.1 Kesulitan CryptoNote berisi algoritma penargetan yang mengubah kesulitan setiap blok. Ini mengurangi waktu reaksi sistem ketika laju hash jaringan meningkat atau menyusut secara intensif, mempertahankan tingkat blok yang konstan. Metode Bitcoin asli menghitung hubungan aktual dan menargetkan rentang waktu antara blok 2016 terakhir dan menggunakannya sebagai pengali untuk blok saat ini kesulitan. Jelas ini tidak cocok untuk perhitungan ulang yang cepat (karena inersia yang besar) dan menghasilkan osilasi. Ide umum di balik algoritme kami adalah menjumlahkan semua pekerjaan yang diselesaikan oleh node dan membaginya dengan waktu yang telah mereka habiskan. Ukuran pekerjaan adalah nilai kesulitan yang sesuai di setiap blok. Namun karena stempel waktu yang tidak akurat dan tidak dapat dipercaya, kami tidak dapat menentukan waktu yang tepat interval waktu antar blok. Seorang pengguna dapat menggeser stempel waktunya ke masa depan dan waktu berikutnya intervalnya mungkin sangat kecil atau bahkan negatif. Agaknya akan ada beberapa insiden semacam ini, jadi kita tinggal mengurutkan stempel waktu dan menghilangkan outliernya (yaitu 20%). Kisaran nilai sisanya adalah waktu yang dihabiskan untuk 80% blok terkait. 6.2.2 Batasan ukuran Pengguna membayar untuk menyimpan blockchain dan berhak memilih ukurannya. Setiap penambang berkaitan dengan pertukaran antara penyeimbangan the biaya dan keuntungan dari biaya dan menetapkan sendiri “batas lunak” untuk membuat blok. Aturan inti untuk ukuran blok maksimum juga diperlukan mencegah blockchain dibanjiri transaksi palsu, namun nilai ini seharusnya tidak dikodekan secara keras. Misalkan MN adalah nilai median dari N ukuran blok terakhir. Kemudian “batas keras” untuk ukurannya menerima blok adalah \(2 \cdot M_N\). Ini mencegah blockchain membengkak tetapi masih memungkinkan batasnya perlahan tumbuh seiring waktu jika perlu. Ukuran transaksi tidak perlu dibatasi secara eksplisit. Itu dibatasi oleh ukuran sebuah balok; dan jika seseorang ingin membuat transaksi besar dengan ratusan input/output (atau dengan tingkat ambiguitas yang tinggi dalam tanda tangan cincin), ia dapat melakukannya dengan membayar biaya yang cukup. 6.2.3 Hukuman kelebihan ukuran Seorang penambang masih memiliki kemampuan untuk mengisi satu blok penuh dengan transaksi tanpa biaya miliknya hingga maksimum ukuran \(2 \cdot M_b\). Meskipun hanya mayoritas penambang yang dapat menggeser nilai median, masih ada a 13 23 Unit atom. Saya suka itu. Apakah ini setara dengan Satoshi? Jika demikian, berarti akan ada 185 miliar cryptonote. Saya tahu ini pada akhirnya harus diubah dalam beberapa halaman, atau mungkin ada kesalahan ketik? Jika hadiah dasarnya adalah "semua koin yang tersisa" maka hanya satu blok yang cukup untuk mendapatkan semua koin. Instamin. Di sisi lain, jika hal ini seharusnya proporsional dengan perbedaan waktu antara sekarang dan tanggal penghentian produksi koin? Itu akan terjadi masuk akal. Juga, di duniaku, dua tanda lebih besar dari seperti ini berarti "lebih besar dari". Apakah penulisnya mungkin maksudnya lain? Jika penyesuaian terhadap kesulitan terjadi di setiap blok maka penyerang dapat memiliki lahan yang sangat besar mesin menambang dan mematikan dalam interval waktu yang dipilih dengan cermat. Hal ini dapat menyebabkan ledakan yang kacau (atau jatuh ke titik nol) pada tingkat kesulitan, jika formula penyesuaian tingkat kesulitan tidak diredam dengan tepat. Tidak diragukan lagi bahwa metode Bitcoin tidak cocok untuk penghitungan ulang cepat, tetapi gagasan tentang inersia dalam sistem ini perlu dibuktikan, bukan dianggap remeh. Selanjutnya osilasi dalam kesulitan jaringan belum tentu menjadi masalah kecuali jika hal itu mengakibatkan fluktuasi yang nyata persediaan koin - dan perubahan kesulitan yang sangat cepat dapat menyebabkan "koreksi berlebihan". Waktu yang dihabiskan, terutama dalam rentang waktu yang singkat seperti beberapa menit, akan sebanding dengan “total jumlah blok yang dibuat di jaringan." Konstanta proporsionalitas akan tumbuh dengan sendirinya seiring waktu, mungkin secara eksponensial jika CN lepas landas. Mungkin merupakan ide yang lebih baik untuk menyesuaikan kesulitan untuk menjaga "total blok yang dibuat pada jaringan sejak blok terakhir ditambahkan ke rantai utama" dalam beberapa nilai konstan, atau dengan variasi terbatas atau semacamnya. Jika algoritma adaptif yaitu komputasi mudah diimplementasikan dapat ditentukan, ini tampaknya menyelesaikan masalah. Namun, jika kita menggunakan metode itu, seseorang yang memiliki lahan pertambangan besar bisa saja menutup lahan pertaniannya selama beberapa jam, dan hidupkan kembali. Untuk beberapa blok pertama, lahan pertanian tersebut akan berhasil bank. Jadi sebenarnya cara ini akan memunculkan satu hal menarik: penambangan menjadi (rata-rata) a kalah tanpa ROI, terutama karena semakin banyak orang yang menggunakan jaringan. Jika penambangannya sulit jaringan yang dilacak dengan sangat dekat hashrate, entah bagaimana saya ragu orang akan menambang sebanyak mereka saat ini lakukan. Atau, di sisi lain, alih-alih menjaga lahan pertambangan mereka tetap beroperasi 24/7, mereka malah mengubahnya menyala selama 6 jam, mati selama 2 jam, hidup selama 6 jam, mati selama 2 jam, atau semacamnya. Beralih saja ke koin lain selama beberapa jam, tunggu hingga tingkat kesulitannya mereda, lalu lanjutkan lagi untuk mendapatkan tambahan tersebut blok profitabilitas saat jaringan beradaptasi. Dan tahukah Anda? Ini sebenarnya mungkin salah satu skenario penambangan terbaik yang pernah saya pikirkan... Ini bisa bersifat melingkar, tetapi jika waktu pembuatan blok rata-rata sekitar satu menit, bisakah kita melakukannya? gunakan jumlah blok sebagai proksi untuk "waktu yang dihabiskan?"

6 Keuntungan lebih lanjut 6.1 Emisi halus Batas atas jumlah keseluruhan koin digital CryptoNote adalah: MSupply = 264 −1 satuan atom. Ini adalah batasan alami yang hanya didasarkan pada batasan implementasi, bukan berdasarkan intuisi seperti “N koin seharusnya cukup untuk siapa pun”. Untuk menjamin kelancaran proses emisi kami menggunakan formula blok berikut hadiah: BaseReward = (MSupply −A) ≫18, di mana A adalah jumlah koin yang dihasilkan sebelumnya. 6.2 Parameter yang dapat disesuaikan 6.2.1 Kesulitan CryptoNote berisi algoritma penargetan yang mengubah kesulitan setiap blok. Ini mengurangi waktu reaksi sistem ketika laju hash jaringan meningkat atau menyusut secara intensif, mempertahankan tingkat blok yang konstan. Metode Bitcoin asli menghitung hubungan aktual dan menargetkan rentang waktu antara blok 2016 terakhir dan menggunakannya sebagai pengali untuk blok saat ini kesulitan. Jelas ini tidak cocok untuk perhitungan ulang yang cepat (karena inersia yang besar) dan menghasilkan osilasi. Ide umum di balik algoritme kami adalah menjumlahkan semua pekerjaan yang diselesaikan oleh node dan membaginya dengan waktu yang telah mereka habiskan. Ukuran pekerjaan adalah nilai kesulitan yang sesuai di setiap blok. Namun karena stempel waktu yang tidak akurat dan tidak dapat dipercaya, kami tidak dapat menentukan waktu yang tepat interval waktu antar blok. Seorang pengguna dapat menggeser stempel waktunya ke masa depan dan waktu berikutnya intervalnya mungkin sangat kecil atau bahkan negatif. Agaknya akan ada beberapa insiden semacam ini, jadi kita tinggal mengurutkan stempel waktu dan menghilangkan outliernya (yaitu 20%). Kisaran nilai sisanya adalah waktu yang dihabiskan untuk 80% blok terkait. 6.2.2 Batasan ukuran Pengguna membayar untuk menyimpan blockchain dan berhak memilih ukurannya. Setiap penambang berurusan dengan pertukaran antara menyeimbangkan biaya dan keuntungan dari biaya dan menetapkan biayanya sendiri “batas lunak” untuk membuat blok. Aturan inti untuk ukuran blok maksimum juga diperlukan mencegah blockchain dibanjiri transaksi palsu, namun nilai ini seharusnya tidak dikodekan secara keras. Misalkan MN adalah nilai median dari N ukuran blok terakhir. Kemudian “batas keras” untuk ukurannya menerima blok adalah \(2 \cdot M_N\). Ini mencegah blockchain membengkak tetapi masih memungkinkan batasnya perlahan tumbuh seiring waktu jika perlu. Ukuran transaksi tidak perlu dibatasi secara eksplisit. Itu dibatasi oleh ukuran sebuah balok; dan jika seseorang ingin membuat transaksi besar dengan ratusan input/output (atau dengan tingkat ambiguitas yang tinggi dalam tanda tangan cincin), ia dapat melakukannya dengan membayar biaya yang cukup. 6.2.3 Hukuman kelebihan ukuran Seorang penambang masih memiliki kemampuan untuk mengisi satu blok penuh dengan transaksi tanpa biaya miliknya hingga maksimum ukuran \(2 \cdot M_b\). Meskipun hanya mayoritas penambang yang dapat menggeser nilai median, masih ada a 13 6 Keuntungan lebih lanjut 6.1 Emisi halus Batas atas jumlah keseluruhan koin digital CryptoNote adalah: MSupply = 264 −1 satuan atom. Ini adalah batasan alami yang hanya didasarkan pada batasan implementasi, bukan berdasarkan intuisi seperti “N koin seharusnya cukup untuk siapa pun”. Untuk menjamin kelancaran proses emisi kami menggunakan formula blok berikut hadiah: BaseReward = (MSupply −A) ≫18, di mana A adalah jumlah koin yang dihasilkan sebelumnya. 6.2 Parameter yang dapat disesuaikan 6.2.1 Kesulitan CryptoNote berisi algoritma penargetan yang mengubah kesulitan setiap blok. Ini mengurangi waktu reaksi sistem ketika laju hash jaringan meningkat atau menyusut secara intensif, mempertahankan tingkat blok yang konstan. Metode Bitcoin asli menghitung hubungan aktual dan menargetkan rentang waktu antara blok 2016 terakhir dan menggunakannya sebagai pengali untuk blok saat ini kesulitan. Jelas ini tidak cocok untuk perhitungan ulang yang cepat (karena inersia yang besar) dan menghasilkan osilasi. Ide umum di balik algoritme kami adalah menjumlahkan semua pekerjaan yang diselesaikan oleh node dan membaginya dengan waktu yang telah mereka habiskan. Ukuran pekerjaan adalah nilai kesulitan yang sesuai di setiap blok. Namun karena stempel waktu yang tidak akurat dan tidak dapat dipercaya, kami tidak dapat menentukan waktu yang tepat interval waktu antar blok. Seorang pengguna dapat menggeser stempel waktunya ke masa depan dan waktu berikutnya intervalnya mungkin sangat kecil atau bahkan negatif. Agaknya akan ada beberapa insiden semacam ini, jadi kita tinggal mengurutkan stempel waktu dan menghilangkan outliernya (yaitu 20%). Kisaran nilai sisanya adalah waktu yang dihabiskan untuk 80% blok terkait. 6.2.2 Batasan ukuran Pengguna membayar untuk menyimpan blockchain dan berhak memilih ukurannya. Setiap penambang berkaitan dengan pertukaran antara penyeimbangan the biaya dan keuntungan dari biaya dan menetapkan sendiri “batas lunak” untuk membuat blok. Aturan inti untuk ukuran blok maksimum juga diperlukan mencegah blockchain dibanjiri transaksi palsu, namun nilai ini seharusnya tidak dikodekan secara keras. Misalkan MN adalah nilai median dari N ukuran blok terakhir. Kemudian “batas keras” untuk ukurannya menerima blok adalah \(2 \cdot M_N\). Ini mencegah blockchain membengkak tetapi masih memungkinkan batasnya perlahan tumbuh seiring waktu jika perlu. Ukuran transaksi tidak perlu dibatasi secara eksplisit. Itu dibatasi oleh ukuran sebuah balok; dan jika seseorang ingin membuat transaksi besar dengan ratusan input/output (atau dengan tingkat ambiguitas yang tinggi dalam tanda tangan cincin), ia dapat melakukannya dengan membayar biaya yang cukup. 6.2.3 Hukuman kelebihan ukuran Seorang penambang masih memiliki kemampuan untuk mengisi satu blok penuh dengan transaksi tanpa biaya miliknya hingga maksimum ukuran \(2 \cdot M_b\). Meskipun hanya mayoritas penambang yang dapat menggeser nilai median, masih ada a 13 24 Oke, jadi kita punya blockchain, dan setiap blok memiliki stempel waktu SELAIN sekedar menjadi dipesan. Ini jelas dimasukkan hanya untuk kesulitan penyesuaian, karena ada stempel waktunya sangat tidak dapat diandalkan, seperti yang disebutkan. Apakah kita diperbolehkan memiliki stempel waktu yang bertentangan dalam rantai? Jika Blok A berada sebelum Blok B dalam rantai tersebut, dan semuanya konsisten dalam hal keuangan, tapi Blok A sepertinya dibuat setelah Blok B? Karena, mungkin, ada yang memilikinya sebagian besar jaringan? Apakah itu oke? Mungkin karena keuangannya tidak salah. Oke, jadi saya benci kesewenang-wenangan ini "hanya 80% blok yang sah untuk blockchain utama" pendekatan. Itu dimaksudkan untuk mencegah pembohong mengubah stempel waktunya? Tapi sekarang, ia menambahkan insentif bagi semua orang untuk berbohong tentang stempel waktunya dan hanya memilih median. Silakan jelaskan. Artinya “untuk blok ini, hanya mencakup transaksi yang menyertakan biaya lebih besar dari p%, lebih disukai dengan biaya lebih besar dari 2p%" atau sesuatu seperti itu? Apa yang mereka maksud dengan palsu? Jika transaksi tersebut konsisten dengan riwayat masa lalu blockchain, dan transaksi tersebut mencakup biaya yang memuaskan para penambang, apakah itu tidak cukup? Nah, tidak, belum tentu. Jika tidak ada ukuran blok maksimum, tidak ada yang bisa menahan pengguna jahat dari sekadar mengunggah sejumlah besar transaksi ke dirinya sendiri sekaligus hanya untuk memperlambat jaringan. Aturan inti untuk ukuran blok maksimum mencegah orang membuang sampah dalam jumlah besar data di blockchain sekaligus hanya untuk memperlambat segalanya. Namun aturan seperti itu tentu saja harus dilakukan bersikap adaptif - selama musim Natal, misalnya, kita dapat memperkirakan lalu lintas akan melonjak, dan ukuran blok menjadi sangat besar, dan segera setelah itu, ukuran blok kemudian turun lagi. Jadi kita memerlukan a) semacam batasan adaptif atau b) batasan yang cukup besar sehingga 99%. puncak Natal yang masuk akal tidak akan merusak batasnya. Tentu saja, yang kedua itu tidak mungkin dilakukan perkiraan - siapa yang tahu apakah suatu mata uang akan berhasil? Lebih baik membuatnya adaptif dan tidak khawatir tentang hal itu. Tapi kemudian kita mempunyai masalah teori kontrol: bagaimana membuat ini adaptif tanpanya kerentanan terhadap serangan atau osilasi liar & gila? Perhatikan bahwa metode adaptif tidak menghentikan pengguna jahat untuk mengumpulkan sejumlah kecil uang data sampah dari waktu ke waktu di blockchain menyebabkan pembengkakan jangka panjang. Ini adalah masalah yang berbeda semuanya dan koin cryptonote memiliki masalah serius.

6 Keuntungan lebih lanjut 6.1 Emisi halus Batas atas jumlah keseluruhan koin digital CryptoNote adalah: MSupply = 264 −1 satuan atom. Ini adalah batasan alami yang hanya didasarkan pada batasan implementasi, bukan berdasarkan intuisi seperti “N koin seharusnya cukup untuk siapa pun”. Untuk menjamin kelancaran proses emisi kami menggunakan formula blok berikut hadiah: BaseReward = (MSupply −A) ≫18, di mana A adalah jumlah koin yang dihasilkan sebelumnya. 6.2 Parameter yang dapat disesuaikan 6.2.1 Kesulitan CryptoNote berisi algoritma penargetan yang mengubah kesulitan setiap blok. Ini mengurangi waktu reaksi sistem ketika laju hash jaringan meningkat atau menyusut secara intensif, mempertahankan tingkat blok yang konstan. Metode Bitcoin asli menghitung hubungan aktual dan menargetkan rentang waktu antara blok 2016 terakhir dan menggunakannya sebagai pengali untuk blok saat ini kesulitan. Jelas ini tidak cocok untuk perhitungan ulang yang cepat (karena inersia yang besar) dan menghasilkan osilasi. Ide umum di balik algoritme kami adalah menjumlahkan semua pekerjaan yang diselesaikan oleh node dan membaginya dengan waktu yang telah mereka habiskan. Ukuran pekerjaan adalah nilai kesulitan yang sesuai di setiap blok. Namun karena stempel waktu yang tidak akurat dan tidak dapat dipercaya, kami tidak dapat menentukan waktu yang tepat interval waktu antar blok. Seorang pengguna dapat menggeser stempel waktunya ke masa depan dan waktu berikutnya intervalnya mungkin sangat kecil atau bahkan negatif. Agaknya akan ada beberapa insiden semacam ini, jadi kita tinggal mengurutkan stempel waktu dan menghilangkan outliernya (yaitu 20%). Kisaran nilai sisanya adalah waktu yang dihabiskan untuk 80% blok terkait. 6.2.2 Batasan ukuran Pengguna membayar untuk menyimpan blockchain dan berhak memilih ukurannya. Setiap penambang berurusan dengan pertukaran antara menyeimbangkan biaya dan keuntungan dari biaya dan menetapkan biayanya sendiri “batas lunak” untuk membuat blok. Aturan inti untuk ukuran blok maksimum juga diperlukan mencegah blockchain dibanjiri transaksi palsu, namun nilai ini seharusnya tidak dikodekan secara keras. Misalkan MN adalah nilai median dari N ukuran blok terakhir. Kemudian “batas keras” untuk ukurannya menerima blok adalah \(2 \cdot M_N\). Ini mencegah blockchain membengkak tetapi masih memungkinkan batasnya perlahan tumbuh seiring waktu jika perlu. Ukuran transaksi tidak perlu dibatasi secara eksplisit. Itu dibatasi oleh ukuran sebuah balok; dan jika seseorang ingin membuat transaksi besar dengan ratusan input/output (atau dengan tingkat ambiguitas yang tinggi dalam tanda tangan cincin), ia dapat melakukannya dengan membayar biaya yang cukup. 6.2.3 Hukuman kelebihan ukuran Seorang penambang masih memiliki kemampuan untuk mengisi satu blok penuh dengan transaksi tanpa biaya miliknya hingga maksimum ukuran \(2 \cdot M_b\). Meskipun hanya mayoritas penambang yang dapat menggeser nilai median, masih ada a 13 6 Keuntungan lebih lanjut 6.1 Emisi halus Batas atas jumlah keseluruhan koin digital CryptoNote adalah: MSupply = 264 −1 satuan atom. Ini adalah batasan alami yang hanya didasarkan pada batasan implementasi, bukan berdasarkan intuisi seperti “N koin seharusnya cukup untuk siapa pun”. Untuk menjamin kelancaran proses emisi kami menggunakan formula blok berikut hadiah: BaseReward = (MSupply −A) ≫18, di mana A adalah jumlah koin yang dihasilkan sebelumnya. 6.2 Parameter yang dapat disesuaikan 6.2.1 Kesulitan CryptoNote berisi algoritma penargetan yang mengubah kesulitan setiap blok. Ini mengurangi waktu reaksi sistem ketika laju hash jaringan meningkat atau menyusut secara intensif, mempertahankan tingkat blok yang konstan. Metode Bitcoin asli menghitung relasi aktual dan menargetkan rentang waktu antara blok 2016 terakhir dan menggunakannya sebagai pengali untuk blok saat ini kesulitan. Jelas ini tidak cocok untuk perhitungan ulang yang cepat (karena inersia yang besar) dan menghasilkan osilasi. Ide umum di balik algoritme kami adalah menjumlahkan semua pekerjaan yang diselesaikan oleh node dan membaginya dengan waktu yang telah mereka habiskan. Ukuran pekerjaan adalah nilai kesulitan yang sesuai di setiap blok. Namun karena stempel waktu yang tidak akurat dan tidak dapat dipercaya, kami tidak dapat menentukan waktu yang tepat interval waktu antar blok. Seorang pengguna dapat menggeser stempel waktunya ke masa depan dan waktu berikutnya intervalnya mungkin sangat kecil atau bahkan negatif. Agaknya akan ada beberapa insiden semacam ini, jadi kita tinggal mengurutkan stempel waktu dan menghilangkan outliernya (yaitu 20%). Kisaran nilai sisanya adalah waktu yang dihabiskan untuk 80% blok terkait. 6.2.2 Batasan ukuran Pengguna membayar untuk menyimpan blockchain dan berhak memilih ukurannya. Setiap penambang berkaitan dengan pertukaran antara penyeimbangan the biaya dan keuntungan dari biaya dan menetapkan sendiri “batas lunak” untuk membuat blok. Aturan inti untuk ukuran blok maksimum juga diperlukan mencegah blockchain dibanjiri transaksi palsu, namun nilai ini seharusnya tidak dikodekan secara keras. Misalkan MN adalah nilai median dari N ukuran blok terakhir. Kemudian “batas keras” untuk ukurannya menerima blok adalah \(2 \cdot M_N\). Ini mencegah blockchain membengkak tetapi masih memungkinkan batasnya perlahan tumbuh seiring waktu jika perlu. Ukuran transaksi tidak perlu dibatasi secara eksplisit. Itu dibatasi oleh ukuran sebuah balok; dan jika seseorang ingin membuat transaksi besar dengan ratusan input/output (atau dengan tingkat ambiguitas yang tinggi dalam tanda tangan cincin), ia dapat melakukannya dengan membayar biaya yang cukup. 6.2.3 Hukuman kelebihan ukuran Seorang penambang masih memiliki kemampuan untuk mengisi satu blok penuh dengan transaksi tanpa biaya miliknya hingga maksimum ukuran \(2 \cdot M_b\). Meskipun hanya mayoritas penambang yang dapat menggeser nilai median, masih ada a 13 25 Dengan mengubah skala waktu sehingga satu satuan waktu menjadi N blok, ukuran rata-rata blok, secara teoritis, masih dapat tumbuh secara eksponensial secara proporsional hingga 2ˆt. Di sisi lain, batasan yang lebih umum di blok berikutnya adalah M_nf(M_n) untuk beberapa fungsi f. Sifat f apa yang akan dimilikinya kita memilih untuk menjamin "pertumbuhan yang wajar" dalam ukuran blok? Kemajuan dari ukuran blok (setelah waktu penskalaan ulang) akan menjadi seperti ini: 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( ... Dan tujuannya di sini adalah untuk memilih f sehingga barisan ini tumbuh tidak lebih cepat dari, katakanlah, secara linear, atau mungkin bahkan sebagai Log(t). Tentu saja, jika f(M_n) = a untuk suatu konstanta a, barisan ini adalah sebenarnya M_n aM_n aˆ2M_n aˆ3M_n ... Dan, tentu saja, satu-satunya cara untuk membatasi pertumbuhan linear maksimal adalah dengan memilih a=1. Tentu saja hal ini tidak mungkin dilakukan. Itu tidak memungkinkan pertumbuhan sama sekali. Sebaliknya, jika f(M_n) adalah fungsi non-konstanta, maka situasinya jauh lebih buruk. rumit dan memungkinkan solusi yang elegan. Saya akan memikirkan hal ini sebentar. Biaya ini harus cukup besar untuk mendiskon penalti kelebihan ukuran dari bagian berikutnya. Kenapa pengguna umum diasumsikan laki-laki ya? Hah?

kemungkinan untuk mengasapi blockchain dan menghasilkan beban tambahan pada node. Untuk mencegah peserta jahat dari pembuatan blok besar kami memperkenalkan fungsi penalti: Hadiah Baru = Hadiah Dasar \(\cdot\) Ukuran Blk jamak −1 2 Aturan ini diterapkan hanya ketika BlkSize lebih besar dari ukuran blok bebas minimal yang seharusnya mendekati maksimal (10kb, \(M_N \cdot 110\%\)). Penambang diizinkan membuat blok dengan “ukuran biasa” dan genap melampauinya dengan keuntungan ketika biaya keseluruhan melebihi denda. Namun biayanya kemungkinan tidak akan meningkat kuadratik berbeda dengan nilai penalti sehingga akan terjadi keseimbangan. 6.3 Skrip transaksi CryptoNote memiliki subsistem skrip yang sangat minimalis. Pengirim menentukan ekspresi Φ = f (x1, x2, . . . , xn), dimana n adalah jumlah kunci publik tujuan {Pi}n saya=1. Hanya lima biner operator yang didukung: min, max, sum, mul dan cmp. Ketika penerima membelanjakan pembayaran ini, dia menghasilkan \(0 \leq k \leq n\) tanda tangan dan meneruskannya ke input transaksi. Proses verifikasi cukup evaluasi Φ dengan xi = 1 untuk memeriksa tanda tangan yang valid untuk kunci publik Pi, dan xi = 0. Verifier menerima bukti iffΦ > 0. Meskipun sederhana, pendekatan ini mencakup setiap kasus yang mungkin terjadi: • Tanda tangan Multi-/Ambang Batas. Untuk multi-tanda tangan “M-out-of-N” gaya Bitcoin (yaitu penerima harus memberikan setidaknya \(0 \leq M \leq N\) tanda tangan yang sah) Φ = x1+x2+. . .+xN \(\geq M\) (untuk kejelasan kami menggunakan notasi aljabar umum). Tanda tangan ambang batas tertimbang (beberapa kunci mungkin lebih penting dari yang lain) dapat dinyatakan sebagai Φ = \(w_1 \cdot x_1\) + \(w_2 \cdot x_2\) + . . . + \(w_N \cdot x_N\) \(\geq wM\). Dan skenario di mana kunci utama berhubungan dengan Φ = maks(\(M \cdot x\), x1 + x2 + . . . + xN) \(\geq M\). Mudah untuk menunjukkan bahwa kasus secanggih apa pun bisa terjadi dinyatakan dengan operator-operator ini, yaitu mereka membentuk basis. • Perlindungan kata sandi. Kepemilikan kata sandi rahasia setara dengan pengetahuan kunci pribadi, yang secara deterministik diturunkan dari kata sandi: k = KDF(s). Oleh karena itu, penerima dapat membuktikan bahwa dia mengetahui kata sandinya dengan memberikan tanda tangan lain di bawah kunci k. Pengirim cukup menambahkan kunci publik yang sesuai ke keluarannya sendiri. Perhatikan bahwa ini metode ini jauh lebih aman daripada “teka-teki transaksi” yang digunakan di Bitcoin [13], di mana kata sandi secara eksplisit diteruskan dalam input. • Kasus-kasus yang merosot. Φ = 1 berarti siapa pun dapat membelanjakan uangnya; Φ = 0 menandai output sebagai tidak dapat dibelanjakan selamanya. Jika skrip keluaran yang digabungkan dengan kunci publik terlalu besar untuk pengirim, dia dapat menggunakan tipe keluaran khusus, yang menunjukkan bahwa penerima akan memasukkan data ini ke dalam masukannya sedangkan pengirim hanya memberikan hash saja. Pendekatan ini mirip dengan “bayar-ke-hash” Bitcoin fitur, tapi alih-alih menambahkan perintah skrip baru, kami menangani kasus ini di struktur data tingkat. 7 Kesimpulan Kami telah menyelidiki kelemahan utama di Bitcoin dan mengusulkan beberapa kemungkinan solusi. Fitur-fitur bermanfaat ini dan pengembangan berkelanjutan kami menjadikan sistem uang elektronik baru CryptoNote saingan serius bagi Bitcoin, mengungguli semua cabangnya. 14 kemungkinan untuk mengasapi blockchain dan menghasilkan beban tambahan pada node. Untuk mencegah peserta jahat dari pembuatan blok besar kami memperkenalkan fungsi penalti: Hadiah Baru = Hadiah Dasar \(\cdot\) Ukuran Blk jamak −1 2 Aturan ini diterapkan hanya ketika BlkSize lebih besar dari ukuran blok bebas minimal yang seharusnya mendekati maksimal (10kb, \(M_N \cdot 110\%\)). Penambang diizinkan membuat blok dengan “ukuran biasa” dan genap melampauinya dengan keuntungan ketika biaya keseluruhan melebihi denda. Namun biayanya kemungkinan tidak akan meningkat kuadratik berbeda dengan nilai penalti sehingga akan terjadi keseimbangan. 6.3 Skrip transaksi CryptoNote memiliki subsistem skrip yang sangat minimalis. Pengirim menentukan ekspresi Φ = f (x1, x2, . . . , xn), dimana n adalah jumlah kunci publik tujuan {Pi}n saya=1. Hanya lima biner operator yang didukung: min, max, sum, mul dan cmp. Ketika penerima membelanjakan pembayaran ini, dia menghasilkan \(0 \leq k \leq n\) tanda tangan dan meneruskannya ke input transaksi. Proses verifikasi cukup evaluasi Φ dengan xi = 1 untuk memeriksa tanda tangan yang valid untuk kunci publik Pi, dan xi = 0. Verifier menerima bukti iffΦ > 0. Meskipun sederhana, pendekatan ini mencakup setiap kasus yang mungkin terjadi: • Tanda tangan Multi-/Ambang Batas. Untuk multi-tanda tangan “M-out-of-N” gaya Bitcoin (yaitu penerima harus memberikan setidaknya \(0 \leq M \leq N\) tanda tangan yang sah) Φ = x1+x2+. . .+xN \(\geq M\) (untuk kejelasan kami menggunakan notasi aljabar umum). Tanda tangan ambang batas tertimbang (beberapa kunci mungkin lebih penting dari yang lain) dapat dinyatakan sebagai Φ = \(w_1 \cdot x_1\) + \(w_2 \cdot x_2\) + . . . + \(w_N \cdot x_N\) \(\geq wM\). Dan skenarioio dimana kunci utama berhubungan dengan Φ = maks(\(M \cdot x\), x1 + x2 + . . . + xN) \(\geq M\). Mudah untuk menunjukkan bahwa kasus secanggih apa pun bisa terjadi dinyatakan dengan operator-operator ini, yaitu mereka membentuk basis. • Perlindungan kata sandi. Kepemilikan kata sandi rahasia setara dengan pengetahuan kunci pribadi, yang secara deterministik diturunkan dari kata sandi: k = KDF(s). Oleh karena itu, penerima dapat membuktikan bahwa dia mengetahui kata sandinya dengan memberikan tanda tangan lain di bawah kunci k. Pengirim cukup menambahkan kunci publik yang sesuai ke keluarannya sendiri. Perhatikan bahwa ini metode ini jauh lebih aman daripada “teka-teki transaksi” yang digunakan di Bitcoin [13], di mana kata sandi secara eksplisit diteruskan dalam input. • Kasus-kasus yang merosot. Φ = 1 berarti siapa pun dapat membelanjakan uangnya; Φ = 0 menandai output sebagai tidak dapat dibelanjakan selamanya. Jika skrip keluaran yang digabungkan dengan kunci publik terlalu besar untuk pengirim, dia dapat menggunakan tipe keluaran khusus, yang menunjukkan bahwa penerima akan memasukkan data ini ke dalam masukannya sedangkan pengirim hanya memberikan hash saja. Pendekatan ini mirip dengan “bayar-untuk-hash” dari Bitcoin fitur, tapi alih-alih menambahkan perintah skrip baru, kami menangani kasus ini di struktur data tingkat. 7 Kesimpulan Kami telah menyelidiki kelemahan utama di Bitcoin dan mengusulkan beberapa kemungkinan solusi. Fitur-fitur bermanfaat ini dan pengembangan berkelanjutan kami menjadikan sistem uang elektronik baru CryptoNote saingan serius bagi Bitcoin, mengungguli semua cabangnya. 14 26 Ini mungkin tidak diperlukan jika kita dapat menemukan cara untuk membatasi ukuran blok dari waktu ke waktu... Ini juga tidak mungkin benar. Mereka hanya menyetel "NewReward" ke parabola yang menghadap ke atas ukuran blok adalah variabel independen. Jadi pahala baru meledak hingga tak terhingga. Jika, di sisi lain di sisi lain, hadiah barunya adalah Maks(0,Hadiah Dasar(1-(BlkSize/Mn - 1)ˆ2)), lalu hadiah baru akan menjadi parabola menghadap ke bawah dengan puncak pada ukuran blok = Mn, dan dengan titik potong pada Ukuran Blok = 0 dan Ukuran Blok = 2Mn. Dan sepertinya itulah yang ingin mereka gambarkan. Namun, hal ini tidak terjadi

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.

Analisa

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

5 Hal ini tidak terlalu menjadi masalah ketika satu miliar orang di dunia hidup dengan pendapatan kurang dari satu dolar per tahun hari dan tidak punya harapan untuk berpartisipasi dalam jaringan penambangan apa pun... kecuali jaringan ekonomi dunia yang digerakkan oleh sistem mata uang p2p dengan satu cpu-satu suara, mungkin akan lebih baik lagi lebih adil daripada sistem yang didorong oleh perbankan cadangan fraksional. Namun protokol Cryptonote masih membutuhkan 51% pengguna yang jujur... lihat, misalnya, Cryptonote forum di mana salah satu pengembangnya, Pliskov, mengatakan bahwa serangan tradisional replace-the-data-on-theblockchain 51% masih bisa berhasil. https://forum.cryptonote.org/viewtopic.php?f=2&t=198 Perhatikan bahwa Anda tidak terlalu membutuhkan 51% pengguna yang jujur. Anda hanya benar-benar membutuhkan "tidak ada satu pun orang yang tidak jujur faksi dengan lebih dari 51% kekuatan jaringan." Sebut saja masalah bitcoin ini sebagai "kekakuan adaptif". Solusi Cryptonote untuk adaptif kekakuan adalah fleksibilitas adaptif dalam nilai parameter protokol. Jika Anda membutuhkan ukuran blok yang lebih besar, tidak masalah, jaringan akan menyesuaikan secara perlahan sepanjang waktu. Artinya, cara Bitcoin menyesuaikan kesulitan dari waktu ke waktu dapat direplikasi di seluruh protokol kami parameter sehingga konsensus jaringan tidak perlu diperoleh untuk memperbarui protokol. Di permukaan, ini sepertinya ide yang bagus, tapi tanpa pemikiran yang matang, itu hanya penyesuaian diri sistem bisa menjadi sangat tidak terduga dan kacau. Kami akan membahasnya lebih lanjut nanti sebagai peluang muncul. Sistem yang "baik" berada di antara sistem adaptif kaku dan adaptif fleksibel, dan bahkan mungkin kekakuan itu sendiri bersifat adaptif. Jika kita benar-benar memiliki "satu CPU-satu suara", maka berkolaborasi dan mengembangkan kumpulan akan mencapai 51% akan lebih sulit. Kami berharap setiap CPU di dunia menambang, dari ponsel ke CPU terpasang di Tesla Anda saat sedang diisi dayanya. http://en.wikipedia.org/wiki/Pareto_principle Saya menyatakan bahwa keseimbangan Pareto tidak dapat dihindari. 20% dari sistem akan melakukannya memiliki 80% CPU, atau 20% sistem akan memiliki 80% ASIC. Saya berhipotesis demikian karena distribusi kekayaan yang mendasari masyarakat sudah menunjukkan distribusi Pareto, dan ketika para penambang baru bergabung, mereka diambil dari distribusi yang mendasarinya. Namun, saya berpendapat bahwa protokol dengan satu-cpu-satu-suara akan melihat ROI pada perangkat keras. Blokir imbalan per node akan lebih berbanding lurus dengan jumlah node dalam jaringan karena distribusi kinerja di seluruh node akan jauh lebih ketat. Bitcoin, di sisi lain di sisi lain, melihat imbalan blok (per node) lebih sebanding dengan kapasitas komputasinya simpul. Artinya, hanya “anak-anak besar” yang masih terlibat dalam penambangan. Di sisi lain, meskipun prinsip Pareto akan tetap berlaku, di dunia satu cpu-satu suara, semua orang berpartisipasi dalam keamanan jaringan dan memperoleh sedikit pendapatan penambangan. Di dunia ASIC, tidak masuk akal untuk memasang setiap XBox dan ponsel milik saya. Di dunia onecpu-one-vote, sangat masuk akal dalam hal imbalan penambangan. Sebagai konsekuensi yang menggembirakan, memperoleh 51% suara lebih sulit ketika ada lebih banyak suara, menghasilkan hasil yang bagus manfaat untuk keamanan jaringan..perangkat keras yang dijelaskan sebelumnya. Misalkan tingkat hash global menurun secara signifikan, bahkan untuk sebentar, dia sekarang dapat menggunakan kekuatan penambangannya untuk membuat rantai bercabang dan melakukan pembelanjaan ganda. Seperti yang akan kita lihat nanti di artikel ini, kemungkinan besar peristiwa yang dijelaskan sebelumnya akan terjadi. 2.3 Emisi tidak teratur Bitcoin memiliki tingkat emisi yang telah ditentukan: setiap blok yang dipecahkan menghasilkan sejumlah koin yang tetap. Kira-kira setiap empat tahun, imbalan ini dikurangi setengahnya. Niat awalnya adalah untuk membuat a emisi halus terbatas dengan peluruhan eksponensial, namun kenyataannya kita memiliki emisi linier sepotong-sepotong fungsi yang breakpointnya dapat menyebabkan masalah pada infrastruktur Bitcoin. Ketika breakpoint terjadi, penambang mulai menerima hanya setengah dari nilai sebelumnya hadiah. Perbedaan absolut antara 12,5 dan 6,25 BTC (diproyeksikan untuk tahun 2020) mungkin tampaknya dapat ditoleransi. Namun, ketika memeriksa penurunan 50 hingga 25 BTC yang terjadi pada bulan November 28 Tahun 2012, dirasa tidak pantas untuk sejumlah besar anggota komunitas pertambangan. Gambar Gambar 1 menunjukkan penurunan drastis pada tingkat hash jaringan pada akhir bulan November, tepatnya ketika separuh terjadi. Peristiwa ini bisa saja menjadi momen yang tepat bagi individu jahat tersebut dijelaskan di bagian fungsi proof-of-work untuk melakukan serangan pembelanjaan ganda [36]. Gambar 1. Bitcoin hashbagan tarif (sumber: http://bitcoin.sipa.be) 2.4 Konstanta yang dikodekan secara keras Bitcoin memiliki banyak batasan yang dikodekan secara permanen, yang beberapa di antaranya merupakan elemen alami dari desain aslinya (mis. frekuensi blok, jumlah maksimum uang beredar, jumlah konfirmasi) sedangkan lainnya tampaknya merupakan kendala buatan. Yang penting bukanlah batasannya, melainkan ketidakmampuan untuk berubah dengan cepat 3 perangkat keras yang dijelaskan sebelumnya. Misalkan tingkat hash global menurun secara signifikan, bahkan untuk sebentar, dia sekarang dapat menggunakan kekuatan penambangannya untuk membuat rantai bercabang dan melakukan pembelanjaan ganda. Seperti yang akan kita lihat nanti di artikel ini, kemungkinan besar peristiwa yang dijelaskan sebelumnya akan terjadi. 2.3 Emisi tidak teratur Bitcoin memiliki tingkat emisi yang telah ditentukan: setiap blok yang dipecahkan menghasilkan sejumlah koin yang tetap. Kira-kira setiap empat tahun, imbalan ini dikurangi setengahnya. Niat awalnya adalah untuk membuat a emisi halus terbatas dengan peluruhan eksponensial, namun kenyataannya kita memiliki emisi linier sepotong-sepotong fungsi yang breakpointnya dapat menyebabkan masalah pada infrastruktur Bitcoin. Ketika breakpoint terjadi, penambang mulai menerima hanya setengah dari nilai sebelumnya hadiah. Perbedaan absolut antara 12,5 dan 6,25 BTC (diproyeksikan untuk tahun 2020) mungkin tampaknya dapat ditoleransi. Namun, ketika memeriksa penurunan 50 hingga 25 BTC yang terjadi pada bulan November 28 Tahun 2012, dirasa tidak pantas untuk sejumlah besar anggota komunitas pertambangan. Gambar Gambar 1 menunjukkan penurunan drastis pada tingkat hashjaringan pada akhir bulan November, tepatnya ketika separuh terjadi. Peristiwa ini bisa saja menjadi momen yang tepat bagi individu jahat tersebut dijelaskan di bagian fungsi proof-of-work untuk melakukan serangan pembelanjaan ganda [36]. Gambar 1. Bitcoin hashbagan tarif (sumber: http://bitcoin.sipa.be) 2.4 Konstanta yang dikodekan secara keras Bitcoin memiliki banyak batasan yang dikodekan secara keras, yang beberapa di antaranya merupakan elemen alami dari desain aslinya (mis. frekuensi blok, jumlah maksimum uang beredar, jumlah konfirmasi) sedangkan lainnya tampaknya merupakan kendala buatan. Yang penting bukanlah batasannya, melainkan ketidakmampuan untuk berubah dengan cepat 3 6 Sebut saja ini, serangan zombie. Mari kita bahas bagaimana emisi berkelanjutan bisa terjadi terkait dengan satu-cpu-satu-suara dalam skenario serangan zombie. Di dunia satu-cpu-satu-suara, setiap ponsel dan mobil, kapan pun tidak digunakan, akan ditambang. Mengumpulkan banyak perangkat keras murah untuk membuat pertambangan akan sangat mudah, karena sederhana tentang segala sesuatu memiliki CPU di dalamnya. Di sisi lain, pada saat itu, jumlah CPU diperlukan untuk melancarkan serangan 51% akan cukup mencengangkan, menurutku. Selain itu, justru karena mengumpulkan perangkat keras yang murah akan mudah, kita dapat mengharapkan a banyak orang mulai menimbun apa pun dengan CPU. Perlombaan senjata di dunia satu cpu-satu suara tentu lebih egaliter dibandingkan di dunia ASIC. Oleh karena itu, diskontinuitas dalam jaringan keamanan karena tingkat emisi seharusnya KURANG menjadi masalah di dunia satu-cpu-satu-suara. Namun, masih ada dua fakta yang tersisa: 1) diskontinuitas laju emisi dapat menyebabkan dampak yang menghambat ekonomi dan keamanan jaringan keduanya, yang buruk, dan 2) meskipun serangan 51%. dilakukan oleh seseorang yang mengumpulkan perangkat keras murah masih bisa terjadi dalam satu-cpu-satu-pilih dunia, sepertinya itu harusnya lebih sulit. Agaknya, perlindungan terhadap hal ini adalah semua pelaku yang tidak jujur akan mencoba hal ini secara bersamaan, dan kita kembali ke gagasan keamanan Bitcoin sebelumnya: "kita tidak memerlukan tindakan tidak jujur faksi untuk mengendalikan lebih dari 51% jaringan." Penulis mengklaim di sini bahwa satu masalah dengan bitcoin adalah diskontinuitas emisi koin Tingkat ini dapat menyebabkan penurunan tiba-tiba dalam partisipasi jaringan, dan karenanya keamanan jaringan. Jadi, tingkat emisi koin yang berkelanjutan, dapat dibedakan, dan mulus lebih disukai. Penulisnya tidak salah. Penurunan partisipasi jaringan secara tiba-tiba dapat terjadi menyebabkan masalah seperti itu, dan jika kita dapat menghilangkan salah satu sumbernya, kita harus melakukannya. Karena itu, itu benar mungkin saja emisi koin yang "relatif konstan" dalam jangka waktu lama diselingi oleh perubahan yang tiba-tiba adalah cara ideal untuk melangkah dari sudut pandang ekonomi. Saya bukan seorang ekonom. Jadi, mungkin kita harus memutuskan apakah kita akan menukar keamanan jaringan dengan sesuatu yang ekonomis-apa yang ada di sini? http://arxiv.org/abs/1402.2009mereka jika perlu yang menyebabkan kelemahan utama. Sayangnya, sulit untuk memprediksi kapan hal tersebut akan terjadi konstanta mungkin perlu diubah dan menggantinya dapat menimbulkan konsekuensi yang buruk. Contoh bagus dari perubahan batas hardcode yang menyebabkan konsekuensi bencana adalah pemblokiran batas ukuran disetel ke 250kb1. Batas ini cukup untuk menampung sekitar 10.000 transaksi standar. Di awal tahun 2013, batas tersebut hampir tercapai dan tercapai kesepakatan untuk meningkatkannya batas. Perubahan tersebut diterapkan pada dompet versi 0.8 dan diakhiri dengan pemisahan rantai 24 blok dan serangan pembelanjaan ganda yang berhasil [9]. Meskipun bugnya bukan pada protokol Bitcoin, tapi melainkan di mesin database, hal itu bisa dengan mudah ditangkap dengan stress test sederhana jika ada tidak ada batasan ukuran blok yang diperkenalkan secara artifisial. Konstanta juga berperan sebagai bentuk titik sentralisasi. Meskipun bersifat peer-to-peer Bitcoin, sebagian besar node menggunakan klien referensi resmi [10] yang dikembangkan oleh sekelompok kecil orang. Kelompok ini membuat keputusan untuk menerapkan perubahan pada protokol dan kebanyakan orang menerima perubahan ini terlepas dari “kebenarannya”. Beberapa keputusan menyebabkan diskusi yang memanas bahkan seruan boikot [11], yang menandakan bahwa komunitas dan pengembang mungkin tidak setuju pada beberapa poin penting. Oleh karena itu tampaknya logis untuk memiliki protokol dengan variabel yang dapat dikonfigurasi pengguna dan dapat disesuaikan sendiri sebagai cara yang mungkin untuk menghindari masalah ini. 2.5 Skrip besar Sistem skrip di Bitcoin adalah fitur yang berat dan kompleks. Ini berpotensi memungkinkan seseorang untuk berkreasi transaksi canggih [12], namun beberapa fiturnya dinonaktifkan karena masalah keamanan dan bahkan ada yang belum pernah dipakai [13]. Naskah (termasuk bagian pengirim dan penerima) untuk transaksi terpopuler di Bitcoin tampilannya seperti ini: OP DUP OP HASH160 OP SAMAKAN VERIFIKASI OP CHECKSIG. Skrip ini panjangnya 164 byte sedangkan tujuan satu-satunya adalah untuk memeriksa apakah penerima memilikinya kunci rahasia diperlukan untuk memverifikasi tanda tangannya.