Imersão em desenvolvimento no Ethereum. Parte 0: nenhuma blockchain necessária

Certamente muitos de vocês se perguntaram por que ainda precisavam da blockchain e do Ethereum em particular. Alguém pode ter ido mais longe e encontrado muitas características bonitas: descentralização, transparência, confiança sem intermediários, resistência a roubos. É ótimo, certo? Sim mas ...


A blockchain em sua forma atual é ideal apenas para uma gama restrita de tarefas, exceto a tarefa "adicionar nanotecnologia para o efeito uau" (e para esta tarefa você pode ajustar qualquer coisa). Obviamente, você precisa começar em algum lugar, diferentes experiências estão testando o terreno, mostrando onde a demanda pode ser esperada, onde há um beco sem saída inesperado, onde as falhas não são tão críticas quanto o previsto. Mas é necessário conhecer as fronteiras para decidir conscientemente se, nesse caso específico, é possível tentar ultrapassá-las.

A propósito, o Ethereum não é a única e nem a melhor opção em todos os aspectos. Talvez o blockchain se ajuste à sua tarefa, mas a alguns outros. Mas então dizemos "blockchain", queremos dizer "Ethereum"

Vamos tentar descrever os recursos do blockchain e contratos inteligentes que tornam a solução à primeira vista de tarefas promissoras ineficazes ou mesmo impossíveis. Eu também gostaria de dizer que os pontos são generalizados, portanto, teoricamente, pode haver soluções bastante normais para casos de uso específicos. Portanto, trate esta lista como pontos fracos do Ethereum que precisam ser resolvidos antes de iniciar o projeto.

E também, perdoe se muito disso lhe parece óbvio. Como a prática demonstrou, muitas vezes é sobre essas coisas que você precisa conversar com o cliente em primeiro lugar.

1. Limiar alto de entrada


Se o seu público for usuários comuns, e não entusiastas de blockchain, uma parte muito pequena se incomodará em começar a usar seu aplicativo. Imagine: você precisa não apenas instalar o Metamask ou Mist com um nó, mas também comprar éter, e esse também é um processo não trivial no início. Ou seja, se seu objetivo é maximizar o alcance do público, o Ethereum ainda não é adequado. Por exemplo, fazer uma loja exclusivamente com contratos inteligentes é provavelmente uma má ideia.
O que fazer

  • Ofereça benefícios superando inconvenientes
  • Segmente um público-alvo "no tópico"
  • Seria possível ocultar a lógica da blockchain do usuário colocando-a no back-end, se não fosse o próximo item

2. Centralização descentralizada


Ainda assim, a vantagem do blockchain é que os participantes não podem confiar um no outro o máximo possível, mas isso só é possível se o usuário for o proprietário de sua chave privada. Só então ele pode assinar transações e executar várias ações em seu endereço. O que acontece no caso da lógica blockchain no back-end? As chaves são gerenciadas centralmente e não há proteção contra transações inconsistentes com o usuário - o que significa que você só precisa confiar na integridade e segurança do servidor. Por exemplo, a maioria das trocas de criptomoedas opera com criptomoeda, mas elas não usam nenhuma vantagem associada a isso.
O que fazer

  • Entenda se é necessária transparência e imunidade ou a capacidade de manipular criptas. Caso contrário, é mais barato e mais conveniente usar um banco de dados regular.
  • Pensar e trabalhar com a mecânica do trabalho, a fim de manter garantias tecnológicas

3. Todos os dados são públicos


Independentemente de como o contrato inteligente é escrito, se desejado, você pode obter o valor de qualquer campo de dados nele. E histórico de transações. Portanto, se você escrever algo que identifique um usuário, como email ou nome, tudo o que torna esse usuário público. É bem possível ter algum tipo de criptografia no topo. Nesse caso, as chaves para isso deverão ser armazenadas no lado receptor, ou seja, o usuário novamente deverá confiar seus dados a terceiros. Portanto, para dados mais ou menos confidenciais, o armazenamento privado comum pode ser mais justificado. Se você concluir acordos sobre o blockchain, poderá perder mais do que ganhar.
O que fazer

Entenda se dados privados são necessários para a lógica de contrato inteligente. Nesse caso, considere manipular hashes em vez dos próprios dados.

4. Blockchain não é um supercomputador


Alguém pode ter a impressão de que os mineradores estão colocando um poder enorme na realização de cálculos úteis, mas isso certamente está longe de ser o caso. Só para esclarecer: o desempenho da Ethereum é mais semelhante ao desempenho do sistema incorporado - recursos limitados, memória limitada, tamanho limitado de "firmware" (byte de código de contrato inteligente). Portanto, cálculos não críticos devem ser tomados ao máximo da corrente. Por esse motivo, em contratos inteligentes é improvável que seja mais difícil analisar dados ou, por exemplo, executar criptografia
O que fazer

  • Não use blockchain como calculadora
  • Se você precisar de cálculos controlados na blockchain, poderá considerar o recurso de computação em oraclize

5. Blockchain não é um armazenamento universal


Muitas vezes, você pode ouvir uma solicitação para salvar algo no blockchain: informações ou documentos. Aqui os problemas são óbvios: em primeiro lugar, salvar dados é caro e, em segundo lugar, o blockchain não é adequado para pesquisa, por exemplo - ou você tem um mapeamento (chave - valor) que, a propósito, também agrega valor a cada registro, ou você deve procurar por pesquisa. Além disso, não há gerenciamento de permissão. Portanto, você não deve apenas mudar o banco de dados para o blockchain, é importante entender por que isso era necessário em princípio. Separadamente para os arquivos, vale a pena lembrar sobre a publicidade dos dados: se você diz manter um link para o IPFS, todo mundo vê e pode baixar o que está nele. Então, se você deseja armazenar fotos na blockchain, pense no porquê.
O que fazer

  • Como regra, tudo o que é necessário é apenas salvar um hash e verificar o que existe na cadeia.
  • Salve apenas os dados necessários para a lógica do contrato inteligente

6. Vinculando o blockchain ao mundo real


O blockchain por si só transfere moedas / tokens sem problemas, mas como transferir o que é comprado por eles? Mesmo se for um arquivo, como fornecer confirmação de sua transferência sem terceiros? A resposta curta: não é muito simples, porque assumimos que os dois lados querem enganar um ao outro e precisarão de muitas verificações, criptografia-descriptografia e, se surgir uma disputa, não será possível fazer cálculos fora da cadeia ou um árbitro. Como você entende, para um produto ou serviço físico, tudo é complicado pelo fato de alguém precisar inserir informações de que, grosso modo, as mercadorias foram recebidas. Este alguém não pode ser uma pessoa interessada, então este é o terceiro, no qual novamente devemos confiar. Então nossa solução blockchain tem um ponto fraco na forma desse árbitro e, como confiamos nele, por que não confiar todo o resto, diga hospedar uma base regular e fazer pagamentos. Antes de fazer qualquer coisa, você deve responder claramente a essa pergunta. Esse é, por exemplo, o significado do token que você oferece para trocar por um desconto em uma loja offline, parece-nos pessoalmente duvidoso
O que fazer

Responda claramente a si mesmo por que a lógica centralizada não é adequada. Se não houver resposta, recuse o blockchain.

7. Nenhum seguro contra erros do usuário


Se você enviou dinheiro por engano ao banco ou invadiu uma conta, ou seja, há uma opção para escrever em suporte, há tempo para cancelar ou reverter a transação. Nos contratos inteligentes, você não pode fazer manualmente o que o código não fornece. Mais uma vez, somos confrontados com a necessidade de introduzir um árbitro a quem são concedidos privilégios comparáveis ​​à centralização de toda a decisão.
O que fazer

Se necessário, a introdução de atrasos artificiais na transferência de fundos em um contrato inteligente

8. Prazo de execução longo


Se você possui um sistema dinâmico com constantemente reescrevendo estados e lógicas com base neles, provavelmente não ficará satisfeito com o tempo de espera, porque pelo menos no Ethereum, um tempo normal de confirmação de transação pode ser considerado meio minuto e, se você não for à falência, geralmente mais. Mesmo que a conta não dure alguns segundos, vale a pena considerar a possibilidade de atrasar a transação por tempo indeterminado e estabelecer intervalos suficientes. Portanto, enquanto jogos como o pôquer não são possíveis em sua forma pura nos contratos inteligentes da Ethereum ou não são triviais e exigem ênfase na lógica fora da cadeia
O que fazer

  • Se você planeja migrar para o blockchain com muita frequência, não deve olhar para o Ethereum, mas talvez não para o blockchain.
  • Se possível, colete várias transações em uma, executando parte da lógica fora da cadeia
  • Como último recurso, você pode aumentar o preço do gás conforme necessário
  • Se a transação não demorar muito, você pode especificar um preço aumentado e enviá-lo novamente (a transação deve permanecer inalterada, incluindo nonce). Um mais caro substituirá o mais barato

9. O desvio de censura ainda não é perfeito


Se você quiser confrontar o governo ou algo assim com a ajuda do blockchain, saiba que o serviço da web ainda é uma coisa centralizada, mesmo se for baseado no blockchain. Ou seja, um nome de domínio ou IP ainda pode ser facilmente bloqueado e os usuários precisarão descobrir o endereço do espelho. Vantagens - você não precisa fazer backups de bancos de dados e saber o endereço na rede Ethereum, sempre pode acessar com meios menos amigáveis ​​(Mist, MyEtherWallet, etherscan etc.). Mas não se pode dizer que o problema de censura foi completamente resolvido.
O que fazer

Resistência ao bloqueio é um bônus, mas você não deve basear sua decisão em usar ou não a blockchain.

Se não o Ethereum, então quem?


Muitos que. Outras soluções blockchain e não blockchain podem sacrificar a descentralização, abertura ou acessibilidade para um número ilimitado de participantes, em troca de receber uma velocidade de transação maior, sem problemas de privacidade, etc. São EOS, soluções em Hyberledger, Exonum, Hashgraph, Corda e muito mais. Mas há um fator tão importante quanto o nome de ouvido. Esta é uma grande base de usuários e um grande banco de dados de aplicativos, ferramentas de informação e desenvolvimento, testes. E isso pode ser escrito nos profissionais do Ethereum. E vamos ver o que Casper e Sharding trazem.

Está tudo tão ruim?


A questão mais importante que passa por todos esses pontos é a conscientização da escolha da blockchain. É importante que a tecnologia resolva o problema, adicionar um blockchain a uma tarefa já resolvida provavelmente não tornará a solução mais eficaz.
Por exemplo, se você não sabe quem deseja abrir um cassino, tem um problema em ganhar reputação, mostrando honestidade e atraindo algum tipo de base de usuários. Ao oferecer uma solução no Ethereum, você pode, pelo menos teoricamente, garantir aos usuários um trabalho transparente (embora poucos realmente auditem seu contrato inteligente antes do jogo). E você atrai pessoas com excesso de criptomoedas na conta e um número insuficiente de possibilidades para seu uso. Podemos dizer que o objetivo está sendo alcançado.
E se você deseja adicionar blockchain ao messenger, provavelmente não apenas não solucionará os problemas (e quais podem ser? - a censura e a privacidade vêm à mente), mas também adicionará novos.
Encontrar aplicativos mais corretos provavelmente é uma questão de futuro, quando a base de usuários cresce e a compra de criptomoedas será mais fácil do que agora. Mas, em geral, você pode olhar para esses aplicativos:

  1. Processos burocráticos e longos: transferências para o exterior, papelada
  2. Processos de confiança baseados em plataforma: fundos, cassinos
  3. Dados usados ​​em diferentes áreas ou empresas independentes: operadores turísticos, histórico de crédito, listas negras
  4. Monitoramento de processos não confiáveis: votação, captação de recursos

O fato de a tarefa pertencer a um dos pontos não significa que o blockchain se encaixará perfeitamente. Veja sempre o que outras tecnologias mais otimizadas oferecem. Ou seja, a linha de pensamento deve ser "como resolver esse problema" e não "onde bloquear o blockchain".

Imersão em desenvolvimento no Ethereum:
Parte 1: Introdução
Parte 2: Web3.js e gás
Parte 3: aplicativo do usuário
Parte 4: implantar e depurar trufa, ganache, infura
Parte 5: Oraclize

Source: https://habr.com/ru/post/pt421805/


All Articles