Um protocolo de bloqueio de terceira geração
A pesquisa Blockchain de última geração e a tecnologia da web foram simplificadas para criar um protocolo de pagamento aberto projetado para reduzir múltiplas barreiras de entrada.
Sem instalação
Native to the Web Platform.
Escrito em Javascript ES6, comunicação via
WebSockets + WebRTC.
Escrito em Javascript ES6, comunicação via
WebSockets + WebRTC.
Sincronização em segundos
Clientes ligeiros primeiro.
Para estabelecer um consenso distribuído, os dados do Blockchain necessários são menores que o download de uma música.
Para estabelecer um consenso distribuído, os dados do Blockchain necessários são menores que o download de uma música.
Transações instantâneas
As operações fora da cadeia de transações vão além do pagamento de um café.
Eles liberam micro-transações e trocas atômicas para compatibilidade entre cadeias.
Eles liberam micro-transações e trocas atômicas para compatibilidade entre cadeias.
Nimiq: um protocolo de pagamento sem fricção nativo da internet
Introdução
Em 6 de junho, publicamos o Nimiq Beta Testnet para obter feedback inicial da comunidade e reunir dados do mundo real. Algumas pessoas perderam a conversa nerdy. Então aqui está:
Nimiq é um protocolo de pagamento peer-to-peer sem fricção para a World Wide Web. É um protocolo Blockchain de terceira geração que combina elementos da Bitcoin e Ethereum, simplificados para a plataforma web. E sem dúvida, é de código aberto e totalmente descentralizado.
Os navegadores são cidadãos de primeira classe na rede distribuída Nimiq. Eles são capazes de estabelecer consenso com a rede e permitir pagamentos autênticos peer-to-peer de dentro, tudo sem um terceiro confiável. Em comparação com as criptografia convencionais, esta abordagem do navegador primeiro reduz barreiras de entrada por ordens de grandezas para desenvolvedores, clientes e comerciantes.
Visão geral
O principal desafio de um Blockchain baseado na web é traduzir os principais componentes do Blockchain para a plataforma web:
- Rede para estabelecer conexões P2P.
- Armazenamento para chaves persistentes e dados Blockchain.
- Crypto para hashing, assinatura e verificação.
Além disso, o protocolo deve ser simplificado para as restrições da web:
- Compressão de dados Blockchain para sincronizar em segundos em vez de horas.
- Transações instantâneas e escaláveis, de modo que os pagamentos de balcão são práticos.
- Simplicidade significa que fazemos apenas uma coisa e a fazemos melhor do que qualquer outra pessoa: pagamentos.
- Parâmetros Blockchain simplificados para a nossa abordagem de navegador.
- Compatibilidade entre cadeias com outras cadeias Block, como a Ethereum para recursos avançados de contratos inteligentes.
Traduzindo os Primários Blockchain para a Plataforma Web
Rede
Existem dois tipos de nós na rede Nimiq: nós do Backbone e nós do navegador. Ambos os tipos usam a mesma base de código isomórfico de JavaScript.
Os Backbone Nodes são baseados no NodeJS e são executados em servidores. Eles se comunicam entre si via WebSockets, e eles atuam como ponto de entrada e servidor de sinalização para Nó do navegador para estabelecer conexões WebRTC de navegador para navegador.
Os Núcleos do Navegador são construídos sobre os mecanismos do navegador e, portanto, eles são completamente livres de instalação. Para se conectar à rede, eles estabelecem uma conexão do WebSocket com pelo menos um nó do Backbone. Uma vez que estabeleceram sua primeira conexão, eles começam a estabelecer conexões de navegador para navegador usando o nó Backbone como servidor de sinalização. Os Números do Navegador também podem atuar como servidor de sinalização para conexões adicionais navegador-para-navegador.
A longo prazo, os Números do Navegador serão principalmente clientes leves, e eles não participarão necessariamente como mineiros. O objetivo principal é estabelecer um consenso rápido para comprovar os saldos de suas contas e enviar transações para a rede. Serious Miners pode preferir executar principalmente Backbone Nodes por razões de desempenho e conveniência, mesmo que desejemos manter o benefício de executar um nó de backbone baixo para equilibrar incentivos na direção da nossa abordagem do navegador. Além disso, mesmo os navegadores que executam clientes leves contribuirão com recursos para a rede: eles compartilham os dados (compactados) Blockchain com outros navegadores para reduzir a carga da rede nos nós do backbone.
Existem algumas desvantagens desta abordagem:
- Dependendo da configuração NAT do usuário, as conexões peer-to-peer diretas talvez não possam ser estabelecidas. Eles precisariam de um servidor TURN para se conectar a outros navegadores. Nesse caso, faz mais sentido conectar-se apenas aos Backbone Nodes via WebSockets, porque a carga da rede em servidores TURN seria desnecessária alta.
- As poderosas APIs do navegador são restritas a origens seguras . Assim, para que os navegadores se conectem, os Backbone Nodes precisam fornecer uma conexão criptografada via SSL. Isso requer um domínio e um certificado SSL. Para um acesso fácil e barato aos domínios, forneceremos DNS dinâmico e Letsencrypt empacotados em um instalador.
- Dependendo da configuração do firewall do usuário, as conexões para portas não padrão podem não ser estabelecidas. Nesse caso, pelo menos alguns nós precisam ser executados na porta padrão 443. Para evitar executar o nó como root, é uma boa idéia usar NGINX como proxy reverso.
Armazenamento
Os Números de Navegador usam a API IndexedDB para armazenar dados e chaves do Blockchain no disco rígido do usuário. Uma vez que o navegador não pode armazenar gigabytes de dados, comprimimos o Blockchain com o esquema Mini-Blockchain (consulte Compressão ). No testnet beta, a chave privada é armazenada sem criptografia e é excluída se o usuário limpar o histórico do navegador.
No mainnet teremos padrões de segurança muito maiores:
Com a API de Persistência de armazenamento do Chrome, os dados sobreviverão mesmo se você limpar os dados do seu navegador. A chave privada sempre será armazenada criptografada. Além disso, forneceremos aos usuários um aplicativo simples para fazer backup de sua chave em uma carteira de papel impressa. Também estamos planejando o suporte de carteiras de frio via Web USB ou Web Bluetooth .
Crypto
Como o desempenho é relevante para a segurança, precisamos de primitivas criptográficas performantes. Uma implementação de JavaScript não seria suficiente.
Betanet Crypto
O cripto no beta testnet preliminar baseia-se nas APIs do WebCrypto para alcançar uma performance quase nativa. A API WebCrypto não é muito rica e leva a muitas decisões de design sub-ótimas. Portanto, não vamos usá-lo para mainnet.
Algoritmo de prova de trabalho : usamos o SHA-256, porque é a única função de hash suportada pelo WebCrypto e é suficiente para o nosso primeiro testnet público.
Algoritmo de assinatura digital: usamos a curva NIST P-256, porque é a única curva suportada pelo WebCrypto.
Mainnet Crypto (preliminar)
As primitivas criptográficas no mainnet serão baseadas na WebAssemblypara desempenho quase nativo e flexibilidade total em nossa escolha de algoritmos criptográficos.
Algoritmo de Prova de Trabalho: Usaremos um PoW mais sofisticado no mainnet porque o SHA-256 levará à mineração centralizada. O mainwift PoW deve ser difícil de memória e pouca energia para mineração verdadeiramente descentralizada com hardware regular. Ainda não há uma decisão final sobre nenhum algoritmo específico. Estamos investigando vários candidatos, como Argon2 (muito lento embora) ou ETHash, e estamos muito abertos a sugestões da comunidade.
Algoritmo de Prova de Estacao: preferimos poder mudar para um Algoritmo de Prova de Estaca a longo prazo para chegar a um sistema Blockchain mais eficiente em termos de energia. Estamos seguindo a pesquisa de outros projetos como o Ethereum , e estamos investigando vários candidatos como Ouroboros . Tão bem, estamos abertos a sugestões da comunidade.
Algoritmo de assinatura digital: usamos o Ed25519 porque usa "parâmetros de nada nas minhas luvas" escolhidos para o desempenho e está se tornando um padrão da indústria.
Mais APIs fundamentais do navegador
ES6 Classes para um design orientado a objetos simples e claro.
Promessas e as amadas assíncronas / aguardam para escapar do recorde do inferno.
ArrayBuffer e visualizações para serializar os dados do Blockchain para o nível de bytes para operações de criptografia, rede e armazenamento.
Racionalizando o protocolo para as restrições da plataforma da Web
Compressão
É absurdo que os usuários da web baixem gigabytes de dados do Blockchain para estabelecer o consenso. Especialmente no caso de uma conexão de rede fraca, o que tornaria isso quase impossível. Portanto, precisamos compactar os dados de modo que os clientes ligeiros possam sincronizar em segundos.
É aí que o Mini-Blockchain Scheme entra em jogo: Ele apresenta uma Árvore de Contas (uma árvore Merkle Patricia ) que tem múltiplas vantagens em comparação com o design do Bitcoin:
- Simplifica as transações. O usuário final não precisa lidar com o conceito de saídas não utilizadas. Apenas uma conta e um saldo estão contidos.
- O usuário pode baixar apenas os cabeçalhos do Blockchain mais provas criptográficas simples para saldos de contas, que se dividem para baixar apenas alguns centos de kilobytes em vez de gigabytes sem perder confiança ou segurança.
- Os blocos antigos podem ser descartados porque o estado completo é armazenado na Árvore de Contas.
- Os clientes Nano podem usar pontos de verificação assinados para manter o tamanho constante da cadeia de cabeçalhos. Além disso, o bloqueio completo até cada ponto de controle será fornecido para download para facilitar a verificação pública desses pontos de controle. Iremos implementar o Mini Blockchain Scheme de acordo com o plano de desenvolvimento.
- É fácil ouvir as mudanças de equilíbrio.
Transações instantâneas
Com base em " The Bitcoin Lightning Network: Pagamentos instantâneos escaláveis fora da cadeia ", o Nimiq implementa os Contratos Timelock Hashedpara permitir canais de pagamento e dentro dessas transações instantâneas escaláveis e instantâneas. Isso resolve os problemas de escalabilidade além dos micro pagamentos. Além disso, eles permitem trocas atômicas para interoperabilidade entre cadeias. Existem também abordagens para habilitar o roteamento de cebolas no topo da Lightning Network para fornecer anonimato de maneira semelhante ao Tor Browser.
Simplicidade: sem linguagem de script.
Simplicidade é a melhor heurística para a construção de um sistema seguro. Portanto, o único recurso do Nimiq é o pagamento rápido e seguro do UserA para o UserB. Nimiq intencionalmente não tem uma linguagem de script, porque Ethereum já resolve o problema do contrato inteligente melhor do que nós poderíamos fazer. Nós não tentamos competir neste campo. Queremos ser compatíveis com Ethereum, de modo que os usuários do Nimiq possam facilmente usar os recursos do contrato inteligente da Ethereum se quiserem.
Há uma exceção à abordagem "sem contratos inteligentes": para a rede Lightning haverá um contrato timelock hash codificado no protocolo.
Parâmetros Blockchain (preliminares)
- Tempo de bloqueio: 1 minuto (inspirado nos resultados de "Bloquear Cadastro de Segurança e Desempenho de Prova de Trabalho" )
- Bloquear recompensa: começa com 5 Nimiq (NIM); Metades cada ~ 2'100'000 blocos. Esta abordagem aproxima a abordagem da Bitcoin , levando em conta que o tempo de bloqueio de Nimiq é 10 vezes mais rápido. (No betanet a recompensa é apenas constante)
- Tamanho máximo do bloco: 1 MB
- Ajuste de dificuldade: a cada 10 blocos
- Suprimento total: 21 Mio Coins divisível por 10⁸ (assim como Bitcoin)
Compatibilidade entre cadeias
Hash Timelock Contracts não apenas permite transações fora da cadeia e escalabilidade. Vamos usá-los para transações de cadeia cruzada para se tornar compatível com o excelente trabalho de projetos como Ethereum e Bitcoin. Isso permite que os usuários do Nimiq usem os recursos avançados do contrato inteligente do Ethereum e permite que usuários de outras criptografia troquem facilmente no Nimiq sem um intermediário.
Conclusão
Nimiq introduziu a tecnologia Blockchain nativa da World Wide Web. Em comparação com cryptocurrencies convencionais, esta abordagem reduz barreiras de entrada por ordens de magnitudes e promoverá a adoção em massa de criptografia.
Fique ligado
Este documento está em progresso e será atualizado regularmente.
Para ficar atento:
- Siga nosso repositório Github
- Junte-se ao nosso Slack Channel
- Junte-se ao nosso canal Telegram
- Siga-nos no Twitter
- Siga-nos no Youtube
Comentários
Postar um comentário