Problemas técnicos ou o que pensar se você decidir conduzir sua própria OIC

O interesse ativo na OIC da Polybius que alimentamos ativamente foi um sucesso retumbante - desta vez quase no sentido literal da palavra. Atordoado com a atenção de 14.000 pessoas que vieram comprar nossos tokens nos primeiros minutos após o lançamento das vendas, o site da Polybius entrou em colapso. E isso foi apenas o começo. Conforme prometido, contamos o que aconteceu em 31 de maio e o que poderíamos fazer melhor para evitar o que aconteceu.

imagem

Obviamente, no início da OIC, estávamos prontos para ataques DDoS e alta carga nos servidores, no entanto, admitimos que simplesmente subestimamos as capacidades de hackers perversos e o grau de interesse no projeto, bem como a probabilidade de situações de emergência.

A plataforma técnica (escritório do investidor, toda a infraestrutura) para o Polybius ICO foi fornecida pela Ambisafe. Começando com o desenvolvimento de produtos blockchain, a empresa, com o tempo, expandiu seus interesses no sentido de fornecer às empresas um conjunto de serviços e ferramentas necessárias para a realização de ICOs. Escolhendo um empreiteiro experiente, confiamos completamente em seus conhecimentos e habilidades, não mais uma vez controlando as coisas que poderíamos (e deveríamos) controlar. E esse foi o nosso primeiro erro.

Ferro muito fraco


A boa capacidade do servidor é um detalhe crítico se você não deseja que o site falhe no início das vendas. Prevendo a possível carga no servidor nas primeiras horas da OIC, o contratado nos forneceu requisitos para sua capacidade, mas, mesmo assim, sugerimos que esses indicadores podem não ser suficientes e dobrou o desempenho. Para compartilhar a carga entre os servidores, também localizamos o escritório do usuário e o próprio site da Polybius em locais diferentes, mas não separamos o banco de dados e os arquivos do gabinete principal. E esse foi o erro número dois.

O banco de dados sofria cada vez que muitas solicitações chegavam ao escritório do investidor (e vice-versa) e o servidor travava, tornando-se periodicamente indisponível. Quando o problema ficou aparente, aumentamos a capacidade do servidor em quase 10 vezes em comparação com as características originais. No entanto, demorou um tempo para reconfigurar o gabinete e recarregar todos os arquivos para os novos servidores.

A empolgação no início do Polybius ICO foi tão forte que, assim que o contador no site polybius.io chegou a zero, multidões de usuários correram para comprar tokens, e alguns de nossos usuários chegaram a dar um começo falso. O hype por parte de usuários reais não é um grande problema. O problema foi a crescente atenção dada ao Polybius ICO pelos bots - um ataque DDoS começou. Em cerca de 6 horas, cerca de 30 milhões de solicitações vieram de ddosers para a conta pessoal do investidor, que simplesmente se afogou nelas. A situação foi agravada pelo fato de as primeiras horas serem duplamente difíceis de combater o tráfego malicioso - nem sempre era claro que se tratava de uma pessoa real e pressionava “Atualizar” na esperança de ver sua conta pessoal, ou é um bot que faz o mesmo.

Como havia muitas pessoas que queriam participar no início, elas continuaram no site por meio do DDoS e continuaram a comprar tokens quando o site ficou mais fácil. Como resultado, o sistema acumulou um grande número de transações que não foram concluídas no prazo e ficaram presas dentro dele. E aqui estamos avançando sem problemas para outro problema que, por razões óbvias, preocupava mais os participantes do crowdfunding.

Congestionamento de rede


Como o sistema em que as transações ocorreram era grande e com vários módulos, cada operação teve que seguir uma rota clara. Devido a um ataque de DDoS em determinados locais do sistema, os módulos começaram a ficar mais lentos, e ao mesmo tempo filtrando o tráfego malicioso, tivemos que resolver manualmente as transações presas no sistema. Porém, mesmo depois de realizar as operações paralisadas, não conseguimos garantir o recebimento oportuno dos tokens adquiridos devido à obstrução que ocorreu na rede Ethereum. Foi uma situação de emergência que criou pânico e uma enxurrada de comentários do tipo “O dinheiro foi retirado de mim, mas os tokens não foram cobrados. Já faz meia hora / hora / 5 horas ... ”Agora que os tokens foram acumulados há muito tempo para todos os investidores afetados, precisamos apenas pedir desculpas mais uma vez pela situação que surgiu e explicar o que a causou.

Na época do lançamento da Polybius ICO, outro grande ICO (BAT - BasicAttentionToken ) foi realizado na blockchain da rede Ethereum, e a concorrência entre os investidores levou ao congestionamento da rede. Para entender os leitores que não sabem muito sobre o Ethereum, a rede funciona de tal maneira que, para enviar uma transação a ele, você precisa pagar uma comissão. E quanto maior a comissão, mais rápida a transação entra na rede. No contexto da segunda OIC, cujos participantes começaram a estabelecer enormes comissões, as transações da Polybius com a comissão ideal em termos da relação custo e quantidade de tempo para confirmação deixaram de ser confirmadas e ficaram alinhadas na rede Ethereum, desta vez presas em algum lugar na fronteira entre o nosso sistema e blockchain.

Para realizar não apenas um, mas um pacote de transações no Ethereum, como foi o caso no nosso caso, elas devem ser colocadas em fila, atribuindo um número de série (condicionalmente) a cada transação. Os números de sequência devem estar em incremento absoluto - ou seja, cada transação subsequente deve ter um número um maior que o anterior. Isso significa que não podemos enviar a transação número 10 para a rede até que os nove primeiros sejam processados. Para não carregar ainda mais a rede e não aumentar o número de transações bloqueadas, fomos forçados a aumentar a comissão para todos os novos pedidos - novas transações começaram a ser confirmadas no modo normal e em um prazo mais aceitável. As primeiras transações (estamos falando de um grande número de pedidos - mais de mil) tiveram que ser deixadas "como estão", de modo que vários dias se passaram antes que os primeiros investidores pudessem receber seus tokens.

Esse é um comportamento anormal do sistema e da situação que nossos contratados tiveram que resolver pela primeira vez; portanto, é difícil julgar se as táticas ótimas foram escolhidas ou poderíamos fazer ainda mais.

O que aprendemos


O entendimento mais importante, se não único, é que, quando o problema já apareceu, tudo o que você pode fazer é começar a resolvê-lo o mais rápido possível. A primeira coisa que fizemos foi aumentar as características do servidor, usar hardware mais poderoso, espalhar o banco de dados para diferentes servidores, configurar um firewall e filtrar ataques DDoS. E todos esses processos levaram cerca de um dia. Foi gasto tempo extra na organização do processo de realização de transações através do Ethereum.

Agora que já temos experiência na OIC, podemos dizer com segurança que é impossível ser prudente demais nesse assunto. É melhor estar seguro novamente. Se você decidir realizar de repente sua própria OIC, pense imediatamente no seguinte:

  • a carga nas primeiras horas pode estar fora de escala e exceder até as expectativas mais loucas;
  • se o seu projeto for bem conhecido, a atenção dos ddosers será garantida, portanto, cuide da proteção contra possíveis ataques;
  • se outras 10 ICOs estiverem acontecendo simultaneamente com a sua, é melhor dedicar um tempo para pensar sobre quais táticas escolher com antecedência - se deve esperar alguns dias quando as transações vão para um lado ou para outro ou investir recursos adicionais e forçar a execução de pedidos pela rede;
  • vale a pena prestar mais atenção em informar oportunamente os investidores sobre os problemas que surgiram - isso definitivamente ajudará a reduzir o número de solicitações idênticas de suporte técnico e a liberar seus recursos para resolver outros problemas prementes.

E, o mais importante, você nunca será capaz de prever todos os problemas possíveis; portanto, esteja preparado para qualquer surpresa. Você pode gastar muito tempo contando os erros cometidos pela supervisão, mas eles aprendem com os erros e estamos felizes por não terem se tornado um sério obstáculo à conclusão bem-sucedida de nossa campanha.

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


All Articles