Quebrando Bitcoin

Esta nota não é um apelo à ação; aqui descreverei os aspectos fracos e potencialmente perigosos do Bitcoin e da tecnologia blockchain.

Centro vulnerável

O princípio de operação do Bitcoin e do blockchain é armazenar e alterar um banco de dados comum, cuja cópia completa é armazenada por cada participante da rede. O sistema parece descentralizado porque… não existe uma única organização/servidor no qual o banco de dados esteja armazenado. Além disso, a descentralização é apresentada como a principal vantagem do blockchain, pois garante que nada acontecerá com seus bitcoins sem o seu conhecimento.


O princípio da praga de bloqueio de Elkin

Para que o blockchain funcione, é necessário garantir que cada usuário baixe a cópia mais recente do banco de dados blockchain e trabalhe com ele de acordo com certas regras. Essas regras incluem a implementação do princípio da mineração de Bitcoin, recebendo um percentual de cada transação mediante confirmação (taxa de transação) da transferência de fundos de uma carteira para outra. O usuário não pode sacar 1.000.000 de bitcoins para si e comprar algo com eles, porque… Para outros usuários, a quantidade de dinheiro em sua conta permanecerá inalterada. Também está excluída a opção de retirar fundos da carteira de outra pessoa apenas dentro do seu próprio banco de dados porque esta mudança não será refletida em outros usuários de Bitcoin e será ignorada.
A vulnerabilidade da implementação atual é que a carteira Bitcoin está localizada no servidor github que bloqueia completamente os slogans publicitários sobre descentralização. Não há download de carteira de um único centro – site do desenvolvedor, é impossível trabalhar com bitcoin, ou seja, a qualquer momento os desenvolvedores têm controle total sobre a rede. Assim, a tecnologia blockchain em si é descentralizada, mas o cliente para trabalhar com a rede é baixado de um centro único.
Cenário de ataque – Digamos que um código foi adicionado à carteira para sacar todos os fundos e sacar para contas de terceiros, após o qual qualquer usuário da versão mais recente da carteira perderá todos os bitcoins automaticamente (sem possibilidade de recuperação). Duvido que muitos proprietários de carteiras verifiquem e construam a partir do código-fonte, portanto as consequências de tal ataque afetarão a maioria dos usuários.

A maioria decide

Blockchain é uma rede p2p descentralizada; todas as transações são confirmadas pelos próprios usuários automaticamente. Cenário de ataque – é necessário obter 51% da rede para ignorar as confirmações dos 49% restantes, após o que o invasor ganha controle total do Bitcoin/blockchain. Isto pode ser conseguido conectando o poder de computação que se sobrepõe ao resto. Este cenário de ataque é conhecido como ataque de 51%.

Adivinhe se puder

Quando você inicia a carteira pela primeira vez, o computador gera um par – chave privada e pública para garantir seu correto funcionamento. A exclusividade dessas chaves é extremamente alta, mas existe a opção de gerar chaves usando a palavra-código – a chamada “carteira cerebral“. Uma pessoa armazena chaves em sua cabeça; ela não precisa fazer backup do arquivo wallet.dat, porque A qualquer momento, as chaves podem ser regeneradas usando esta palavra de código. Cenário de Ataque – o invasor seleciona ou aprende a palavra-código, gera um par de chaves pública-privada e obtém o controle da carteira.

Basta copiar

O par de chaves pública-privada está contido no arquivo wallet.dat. Qualquer software que tenha acesso a este arquivo – tem acesso a uma carteira Bitcoin. A proteção contra tal ataque é a adição de uma palavra-código que o usuário deverá lembrar e inserir para todas as transações com a carteira. Depois de adicionar a palavra-código, o invasor precisará ter wallet.dat e a palavra-código para obter controle total.
Também vale a pena acrescentar que quando você insere uma palavra de código, ela vai para a memória do computador, portanto, qualquer vulnerabilidade de hardware e/ou software que permita a leitura da memória de *outra pessoa* permitirá que o software antivírus leia essa palavra de código.

Erro de sistema

Hackear os algoritmos de criptografia do Bitcoin levará instantaneamente à sua morte. Digamos que seja cometido um erro na implementação dos algoritmos, o invasor que o encontrar ganha controle total ou parcial sobre o blockchain. Além disso, os algoritmos de criptografia usados ​​no Bitcoin não estão protegidos contra hackers por futuros computadores quânticos, seu aparecimento e implementação de algoritmos quânticos – o que significa que eles não estão protegidos contra ataques de hackers. porá fim à implementaçãoatualdo Bitcoin. No entanto, isso pode ser resolvido mudando para algoritmos de criptografia pós-quântica.

Por que criar um motor de jogo em 2017?

Muitas pessoas me perguntam: por que criar um motor de jogo em 2017? Afinal, já existem tantas soluções prontas e gratuitas no mercado.

Preparei um artigo separado com uma visão geral do mercado atual de desenvolvimento de jogos, descrevendo os motivos que me levaram a criar o Flame Steel Engine:

Reasons to Make New Game Engine in 2017

Aço Flamejante: Olhos Rápidos do Courier

Seu nome era Revil e seu apelido era Quick Eyes. Os amigos do companheiro o chamavam de Shustryak. Um garoto ágil e criado nas ruas, ele sempre sabe o que é interessante e de quem pode conseguir. Por isso conquistou o respeito do meio criminoso de Alterra – 14.
Ele estava agora dentro do armazém da Native Farm United. Havia contêineres enormes ao redor, cheiro de produtos farmacêuticos.
– Por que você se levantou? Pegue e vá.
O balconista falava rosnando, parecia nervoso, mexia de um pé para o outro, era claro que ele estava com muito medo. Minha camisa está molhada de suor.
– Sou do serviço de segurança.
O rosto do balconista ficou pálido e ele cambaleou ainda mais.
– E agora?
– No chão – mãos atrás da cabeça!
O balconista franziu a testa, respirou fundo e puxou a mão para baixo. Nimble Eyes sentiu que algo estava errado – parece que ele estava pegando uma arma. Revil o surpreendeu com um golpe em seu rosto insolente, seu corpo caiu na frente dele com um estrondo.
– Eu pedi o bem…
Após revistar o balconista, Revil encontrou no lugar da arma um inalador comum usado por asmáticos. Ele também encontrou um cartão de acesso aos setores laboratoriais da empresa. Foi um achado de muita sorte.
A gangue Toxic Brothers o enviou para buscar um carregamento de substâncias ilegais – e ele foi enviado para pegar um carregamento de substâncias ilegais. endofomila. Mas Revil não se importava com os Irmãos e sua toxicidade, ele estava aqui por outro motivo – ele estava aqui por outro motivo. pretendia sortear seu bilhete da sorte.
As portas do elevador se abriram, Shustryak escolheu o andar indicado no mapa – quadragésimo segundo. O elevador se moveu lentamente. Revil estava pensando no que faria no setor laboratorial. Ele conhecia sistemas de segurança sofisticados, sistemas inteligentes de verificação de identidade, análise de ondas cerebrais e coisas do gênero.

Revil by Inc
Revil por Inc

Ele não estava sozinho aqui; um funcionário da empresa Lorian concordou em ajudá-lo a causar uma falha no sistema, e como resultado Revil teria dez minutos para executar seus planos.
No trigésimo terceiro andar, o elevador parou e um baque alto foi ouvido acima da cabeça de Revil – o som de um baque forte foi ouvido. algo caiu com estrondo no teto do elevador.
O ágil pegou a pistola, mas naquele momento tentáculos metálicos romperam o teto do elevador. Eles o enredaram, um som estridente foi ouvido e o teto do elevador foi virado para fora. O rosto de uma garota olhou para ele através do buraco, – olhos frios e vazios, no chão do rosto há uma placa de metal com indicadores vermelhos piscantes, deliberadamente não escondida sob a pele.
– Antes de morrer, me diga por que você veio aqui?
O ágil não conseguia se mover, os tentáculos de aço o apertavam cada vez mais e logo ele não conseguiria respirar.
– Eu vim pelo que me pertence por direito!
Um sorriso satisfeito apareceu no rosto da garota. Os indicadores piscaram alternadamente em verde e vermelho…

Me perdendo

“Você não pode se tornar um mestre de tudo” – Frases como essa sempre me fazem rir. Todos caem nessa armadilha da especialização. usuários, programadores, chefes, clientes. “Eu quero isso como a Microsoft/Apple/Google”, “Por que não fazemos apenas um iPhone russo?”, “Por que não não é como no Word /uber/photoshop?” – Qualquer pessoa envolvida de alguma forma com TI já ouviu essas frases. Essas frases, repetidas pelos lábios de diferentes pessoas, soam ainda mais engraçadas.

Vou perguntar a você leitor – por que você precisa de outra palavra? Por que você precisa de outro Uber? Por que você precisa de outro photoshop? Por que você precisa “ser como um iPhone”?
Por que você se prende às interfaces e à abordagem de apenas uma empresa? Por que você se considera fã apenas dos produtos Apple/Google/Microsoft? Por que você não consegue abrir sua mente para abordagens alternativas para resolver problemas? Por que você não quer ser mais produtivo?

Muitos usuários da Microsoft não gostaram de como a empresa decidiu que todos precisavam atualizar para o Windows 10. As pessoas criticam as interfaces inconvenientes do iPhone, travamentos do sistema durante as atualizações, mudanças de design que não precisam, mas que ainda continuam a usar porque estão muito acostumados e têm um “iPhone” tem status na sociedade moderna.

Às vezes parece que se fosse pedido à Microsoft/Apple/Google que desistissem dos seus próprios filhos em troca de continuarem a trabalhar com os seus produtos, devido ao elevado apego a estes produtos, as pessoas facilmente desistiriam dos seus filhos.< /p>

Não seja eles, não se apegue a um produto, procure opções alternativas. Uma vez me ofereceram para desenvolver um sistema para corretores de imóveis, com interface em Microsoft Excel, e também houve ofertas para desenvolver um sistema de “quadro branco interativo” em Microsoft PowerPoint. Quando perguntei por que a Microsoft especificamente, eles me disseram que estavam “tão acostumados” quando perguntei se essas empresas licenciavam software da Microsoft, eles me responderam evasivamente, dizendo que se necessário, eles o fariam; então eles comprarão.

Leitor, recomendo que você estude as facetas do mundo da TI, pelo menos brevemente. Se você usou apenas o Microsoft Windows durante toda a sua vida, experimente o Apple OS X ou Linux. Se você usa apenas um iPhone, tente usar a versão mais recente do Android por pelo menos uma semana. No momento em que você passa para o lado de apenas uma empresa, fechando-se para os produtos das outras, nesse momento você se perde. Ele mesmo, como pessoa que pode decidir por si mesmo o que quer, como pessoa que pode escolher a ferramenta mais conveniente e produtiva para resolver um problema específico.

Programadores de apenas uma plataforma – outra dor de cabeça para mim pessoalmente e, acredito, para o setor de TI como um todo. Desenvolvedores que fazem aplicações que exportam apenas para *.doc ou apenas para *.pdf, desenvolvedores que estão vinculados a apenas um banco de dados comercial desatualizado (por exemplo, IBM Informix, ou Deus me livre Firebird), a apenas um tipo de hardware (todos esses programas que não funcionam para x86 no Android), é claro que entendo que vocês estão “acostumados”, mas pessoal, é hora de mudar.

No meu trabalho, costumo usar ferramentas impopulares, mas muito convenientes. Um dos exemplos – Foi necessário reduzir a resolução e compactar cerca de 100 fotos para download rápido em 3G e saída para iPad. Naquele dia ouvi uma das frases mais típicas  – “Teremos que converter todas as fotos manualmente no *Photoshop* para o formato desejado”. Ela me pareceu engraçada porque… Imaginei uma pessoa que iria refazer manualmente, como um servo de Deus, todas essas 100 fotos no Photoshop, ou tentar automatizá-las através de um mecanismo embutido. A questão aqui é justamente que a pessoa é tão apegada ao Photoshop que nem sequer suspeitou da existência de um conjunto de ferramentas gratuitas e abertas como o ImageMagick. O ImageMagick permite que você faça muitas coisas com imagens vetoriais e raster, inclusive sendo ideal para resolver um problema com 100 imagens em 5 minutos.

Seja dono de tudo, estude, experimente, não se torne escravo de uma corporação específica.

Como fizemos Mad Racer

Olá caro leitor. Nesta nota descreverei minha experiência de criação do primeiro jogo para Android telefones celulares. Muita gente gosta dessa história, acho que precisa ser publicada. Esta não é uma história de sucesso, mas acho que dará a muitos desenvolvedores iniciantes uma compreensão de por onde começar e o que precisa ser feito para criar um jogo simples. Com certeza descreverei meus erros e o que poderia ter sido feito melhor.

Hewl-Tanky

Perdoe-me Jamie Hewlett e Alan Martin, estou postando ótimas artes Tank Girlsem a permissão deles

Às vezes você cai em um estado em que deseja criar algo para que todos fiquem boquiabertos, abram a boca e digam “Bem, você é legal“. Essa história aconteceu comigo em 2011, quando assisti um trecho do filme “Tank Girl” tive a ideia de criar um jogo arcade em estilo cômico.
Por que para Android e não para iOS? A razão é simples – Eu não tinha Macintosh nem iPhone, mas tinha um grande desejo de oferecer suporte ao Linux em telefones celulares. Naquela época eu gostava da ideologia da FSF, e Richard Matthew Stallman era meu deus.


Canção dos hackers do Linux. Antes de cantar – acredite na paz mundial

Na época do desenvolvimento, a versão mais recente do Android era a 2.0, também foi necessário deixar o suporte para versões mais antigas, já que havia muitos usuários 1.6. Muitos fabricantes de telefones nem mesmo lançaram atualizações para a versão 2.0.

Defini imediatamente um prazo para a implementação deste projeto – um mês. Nesse período, tive que aprimorar meus conhecimentos em Java, estudar o Android SDK, Eclipse, conhecer o monstro diante do OpenGL ES e colocá-lo à prova. Do lado gráfico, tivemos que criar cerca de seis modelos 3D otimizados para celulares. Também foi necessário liberar o projeto para ouro no Android Market, que era como se chamava o Google Play na época)

jpct_logo
jPCT-AE бесплатный 3д движок для Андроида

Como havia pouco tempo, foi necessário escolher um motor 3D pronto. É possível criar seu próprio motor do zero, mas não é muito produtivo, pois o teste e a compatibilidade com todos os dispositivos levarão a maior parte do tempo. Antes da chegada do Unreal Engine, Unity, ThreeJS (HTML5), o motor líder era o JPCT-AE. O mecanismo foi fornecido como uma biblioteca Java pronta e suportava versões mais antigas do Android. Além disso, seu criador, EgonOlsen, fornece prontamente suporte e correções de bugs a pedido dos desenvolvedores.

antonHooligan

O pessoal decide tudo – hooligan Anton concordou em escrever a música para o jogo. Sempre admirei sua criatividade, seu trabalho serviu como a locomotiva que conduzia todo o gameplay, obrigando o usuário a jogar até o último helicóptero abatido.

Tantas coisas, por onde começar? Você precisa começar instalando o Android SDK. Agora ele vem com um IDE integrado – Estúdio Android. Mas naquela época, o IDE e o SDK eram fornecidos separadamente. De acordo com a documentação do site do Google, instalei o Android SDK e o Eclipse. Os pacotes necessários ao Eclipse também foram instalados para garantir a montagem e lançamento do emulador Android. Uma hora depois montei um projeto de teste jpct-AE:

Uau! Mas no emulador de telefone tudo era muito lento. Portanto, foi tomada a decisão de comprar um telefone na plataforma Android. Para o efeito, foi adquirido um LG Optimus One P500. Desde então, não usei excelentes telefones Nokia com botão de pressão na plataforma Symbian. Ocorreram problemas ao conectar o telefone ao Linux, se alguém ainda os encontrar, verifique as configurações do udev.


Jobs cita Pablo Picasso

Olhando para Alien Runner, percebi que o alienígena pode ser substituído por uma motocicleta e dois punks por uma bazuca, a clareira ao redor pode ser transformada em uma metrópole e a neblina pode será substituído por uma noite de baladas do Iron Maiden.

Como fazer modelos 3D? Sim, é muito simples, você abre uma aula sobre criação de modelos low-poly no Youtube e faz. Todo o processo consistiu em delinear projeções em um editor 3D. Encontrei desenhos de um helicóptero Apache e fiz um modelo do helicóptero. As texturas foram retiradas de fontes abertas do Exército dos EUA.

McDONNELL_DOUGLAS_AH-64_APACHE

Por que você precisa de um helicóptero em um jogo com dois punks e uma bazuca? Quando joguei o protótipo, percebi que o jogador poderia simplesmente ficar parado e marcar pontos. A solução ideal era um helicóptero que chegasse voando e atirasse torpedos submarinos no jogador, não permitindo que ele parasse.

Nos aplicativos móveis e jogos da época, o problema de falta de memória era agudo, tanto no próprio telefone quanto na RAM. O desempenho também foi excelente. Um processador ARM com frequência de 300-500 MHz. Como resultado de testes em telefones de amigos, descobriu-se que o HTC tinha metade da memória de vídeo do LG, 8 MB e 4 MB, razão pela qual o jogo ultrapassou os limites de memória e não iniciou. Todos os recursos foram compactados a ponto de obter uma taxa de quadros de 30 quadros por segundo e a capacidade de rodar em quase tudo.


Não repita!

Alien Runner era controlado tocando na tela. Esse tipo de controle me pareceu inconveniente, então implementei o controle por meio de um acelerômetro. Ou seja, você liga o telefone – a motocicleta gira. Gostei tanto que até adicionei uma visão em primeira pessoa, para os mais corajosos.

Precisei do apoio do desenvolvedor do motor jpct-AE quando vi que o apagão na frente estava desaparecendo no jogo. Isso aconteceu após minimizar e maximizar o aplicativo. Criei um tópico no fórum jpct-AE e em dois dias o problema foi resolvido. Integrei a versão corrigida do motor ao jogo.

Havia também a questão de como implementar um suprimento infinito de máquinas. Para um jogo para celular, era necessário encontrar uma maneira de adicionar carros ao cenário do jogo RAPIDAMENTE. A opção de carregar de memória lenta ou cartão SD foi imediatamente rejeitada. Um padrão de design chamado pool de objetos veio em socorro. Quando um carro saía de vista ou era destruído, ele era desligado e no momento em que era necessário trazer um carro novo para o início da cena – ele era desligado. então ele foi ligado e colocado lá.

android-market

Bem, o dia do lançamento chegou. O jogo foi testado, apresentado aos amigos e agora estava prestes a ganhar ouro no Android Market. O registro no Android Market custa US$ 20, pago. Adicionadas descrição e capturas de tela. E naquele momento percebi que precisava gravar um vídeo.

Como gravar um vídeo para um projeto móvel? É realmente possível filmar um celular e depois publicá-lo? A solução foi interessante, usei um emulador de Android, joguei o jogo com uma taxa de quadros de dois quadros por segundo, gravando tudo o que acontecia na tela usando um programa chamado algo como gtkDesktopRecorder. Usando o VirtualDub, a velocidade do vídeo foi aumentada para 30 quadros por segundo. Então, no melhor programa de edição de vídeo – Windows Movie Maker adicionei todos os sons e músicas do jogo.

Agora chega o momento dos erros. Nada foi investido na promoção do projeto, nem esforço nem dinheiro. Acreditei então que o projeto iria se recuperar. O jogo ganhou ouro, criei um tópico no fórum jpct-AE sobre Mad Racer. Consegui 12 instalações por um dólar em duas semanas. E encontrei o jogo disponível gratuitamente em vários sites warez no dia seguinte.

Cantando a música da FSF “Compartilhe o software” Resolvi fazer uma versão gratuita com publicidade. O jogo foi transferido para a categoria AdWare, e abaixo apareceu um banner publicitário da rede AdMob. A integração com o sistema de publicidade ocorreu sem problemas. Em um mês, o jogo foi instalado em dez mil dispositivos. Recebi US$ 50 da rede de publicidade.

Em geral não se esqueça da publicidade, acredito que esta deve ser uma das principais despesas do seu projeto.

Pelo lado positivo, gostaria de destacar que consegui um cargo como desenvolvedor iOS em uma das melhores empresas de nossa cidade. E, claro, uma experiência inestimável.

madracerLogoСсылка на Google Play

Se você gostou do artigo, repasse-o no VKontakte, Facebook)