Entenda os desafios da BitMEX para escalar sua tecnologia

Em abril de 2018 o CTO da plataforma BitMEX, Samuel Reed, decidiu publicar um artigo para informar a comunidade de criptomoedas sobre como a plataforma foi formada, como seu sistema funciona, e como o projeto avança.

Continuando a série, na última quinta-feira (23) o Líder de Gerenciamento de Trading da plataforma, Alex Nimmo, publicou um novo artigo, falando sobre a sobrecarga e problemas inerentes ao dimensionamento horizontal. 

Para facilitar a leitura, a equipe do WeBitcoin traduziu o artigo, que pode ser lido na íntegra abaixo:

Escalonamento de Tecnologia da BitMEX, Parte 2: O caminho para 100x

Na Parte 1 desta série, contamos histórias sobre a origem da BitMEX.

Hoje, oferecemos a Parte 2 desta série – um aprofundamento na sobrecarga e problemas inerentes ao dimensionamento horizontal. Iremos discutir os resultados de nossos esforços até agora no manuseio de volumes sem precedentes e detalharemos as partes do mecanismo BitMEX que devem permanecer em série, as partes que podem ser paralelizadas e os benefícios do primeiro projeto da API da BitMEX.

Na Parte 3, explicaremos otimizações de código que já foram implementadas, sistemas que foram paralelizados e a razão pela qual certos recursos foram removidos. Além disso, falaremos sobre o compromisso da BitMEX com o acesso justo e igualitário e como isso reflete em nossa recusa em oferecer co-locação.

Vamos começar.

Crescimento

A BitMEX é uma plataforma única no espaço de criptomoedas. Para oferecer alavancagem e recursos líderes nesta indústria, o mecanismo de trading da BitMEX é fundamentalmente diferente da maioria dos mecanismos do mercado de criptomoedas e do mercado financeiro tradicional. E ao passo que oferece trading e margens excepcionalmente precisas, não funciona de uma maneira particularmente rápida – ainda.

Ao longo de 2017, a média do volume negociado diariamente na BitMEX cresceu em 129x. Este é um crescimento incrível, que continuou subindo em 2018 e 2019.

WeBitcoin: Entenda os desafios da BitMEX para escalar sua tecnologia
Gráfico dos pedidos processados semanalmente de 2016 a 2018
WeBitcoin: Entenda os desafios da BitMEX para escalar sua tecnologia
Gráfico dos pedidos processados semanalmente de 2018 em diante

Como pode ser visto acima, as ordens semanais também aumentaram significativamente desde 2017. Algo interessante a se notar é que um recorde histórico de tradind com USD de US$8 bilhões foi atingido em julho de 2018, apesar da diminuição das taxas de pedidos! Este recorde não foi quebrado até duas semanas atrás, no dia 11 de maio de 2019, quando US$11  bilhões foram negociados. Estes recordes também representam as maiores quantias já negociadas em um só dia em uma exchange de criptomoedas, e o Swap Perpétuo BTC/USD é o produto de cripto mais negociado já desenvolvido. Desde então ele foi imitado por mais de uma dúzia de vezes por exchanges, tanto iniciantes quanto estabelecidas.

Em maio de 2018, a plataforma começou a focar esforços na otimização do cancelamento de ordens, alterações, e ações de colocação do mecanismo de trading, reorganizando dados estruturais internos, algoritmos e verificações de auditoria para ajustar especificamente para o tipo de velocidade que kdb + pode oferecer.

Este foi um grande esforço para fazer com que o mecanismo existente de trading continuasse o que fazia, só que de muito mais rápido. O resultado gerou um sentimento de orgulho, visto que o esforço alavancou a performance em 10x em um pequeno período de tempo, com 4,6x alcançados em apenas 30 dias, e 10x ao final de agosto. Até metade de julho, os aprimoramentos no desempenho resultaram na eliminação de todas as sobrecargas.

Abaixo, sobrecargas como uma porcentagem de todas as solicitações (colocação de pedidos, alterações, cancelamento) dos meses de maio e julho, respectivamente. As linhas em vermelho representam as sobrecargas.

WeBitcoin: Entenda os desafios da BitMEX para escalar sua tecnologia

O mercado reagiu ao aumento de capacidade, alavancando os volumes da BitMEX à estratosfera. A plataforma registrou a primeira vez na história em que um milhão foi negociado em apenas um dia. A capacidade ociosa permitiu que a plataforma continuasse a lançar produtos novos e inovadores, como o primeiro Swap Perpétuo ETHUSD, que se tornou o produto ETHUSD número um em negociação em seis semanas de listagem. Em novembro de 2018, a BitMEX quase atingiu dois milhões de Bitcoins em 24h, e conseguiu registrar US$11 bilhões em trading em maio de 2019.

Ao passo que o gráfico de julho parece limpo, caso você esteja lendo isso, você sabe que não continuou assim. Por que não está completamente consertado? Por que a plataforma não simplesmente continuou o esforço para atingir 100x e além?

Vamos entrar no contexto.

Enfileiramento

O serviço de solicitações da BitMEX pode ser comparado a esperar em uma fila de bilheteria. Você entra na fila, e quando chega sua vez, você faz sua solicitação.

O quanto demora para comprar um ingresso? Bem, se não há fila, será bem rápido. Toda a interação dura o período que leva para atender ao seu pedido individual. É graças a isso que outros serviços de trading, que apresentam um tráfego de volume significativamente menor, parecem mais pesados mesmo que sua capacidade máxima seja menor: há menos solicitações na fila.

Considere o que acontece quando a fila está muito grande. Você não apenas deve esperar que seu pedido seja processado, mas também deve aguardar todas as pessoas que estão na sua frente. Você poderia ter os funcionários mais eficientes do mundo, mas se uma fila começa a se formar, a experiência média será muito ruim.

Alguns pedidos são muito simples e, portanto, muito rápidos, mas algumas solicitações são mais complexas e levam mais tempo. Se um pedido pode ser evitado (digamos, o usuário não possui fundos suficientes para completá-lo), otimizações podem ser integradas para assegurar que ele nem mesmo entre na fila, semelhante aos balcões de check-in automatizados e serviços de bag drops.

O tráfego em serviços online se comporta de modo similar. Mesmo que processe um pedido individual de forma rápida, quando uma fila de espera se forma por um único recurso, a experiência é degradada.

Isso já foi documentado anteriormente. A Amazon e Alibaba apresentam grandes problemas nos feriados. O Twitter teve o infame failwhale. E muitas plataformas, incluindo a BitMEX, exibem comportamentos adversos de enfileiramento às vezes.

Sobrecarga

“Sistema sobrecarregado”, como você deve saber, é um mecanismo que a BitMEX utiliza para resolver este problema. Você está sacudindo a cabeça? Como poderia a sobrecarga ser a solução, e não o problema? A sobrecarga é um mecanismo de defesa, mais conhecido na indústria como “load shedding”, uma técnica utilizada em sistemas de informação para evitar a sobrecarga evitando algumas solicitações ao invés de comprometer o sistema e torná-lo incapaz de atender a qualquer pedido.

Publicamos um documento mostrando as regras definitivas sobre load shedding e explicando o mecanismo:

 

WeBitcoin: Entenda os desafios da BitMEX para escalar sua tecnologia
Colocando um pedido quando a fila de solicitações pendentes não está cheia / Colocando um pedido quando a fila de solicitações pendentes está cheia (sobrecarregada)

Para entender isso, considere um sistema onde não há load shedding. Com o aumento na demanda, uma fila se forma e começa a crescer.

Quão ruim pode ficar? Quando o mercado se movimenta, grandes enxames de traders solicitam ordens para aumentar ou diminuir sua posição. Pode-se pensar que o próprio atraso se regularia: ao passo que a qualidade do serviço diminui, os traders começariam a posicionar ordens mais lentamente, esperando a confirmação de cada uma antes de colocar a próxima. Entretanto, ocorre o oposto: com o aumento no tempo de resposta, a arbitragem automatizada não consegue entrar rápido o suficiente para manter em vigor o preço alinhado com outras exchanges. Outros traders experientes irão tentar negociar manualmente a diferença de valor, o que pode aumentar ainda mais o tamanho da fila.

Sem ferramentas de segurança, a fila pode causar atrasos de minutos. Os spreads do orderbook aumentam ao passo que os usuários fracassam em posicionar suas ordens. Um bom preço de mercado pode decair até o momento em que uma ordem consiga passar pela fila e ser executada. Em tal ambiente, o trading se torna impossível. isso não é apenas uma hipótese; é um problema comum também encarado por outros mercados de cripto.

A solução da BitMEX para a situação é limitar o número máximo de pedidos que podem entrar na fila pelo mecanismo de trading. Há um serviço em frente ao mecanismo de negociação que identifica os pedidos ao passo que lê (i.e. buscas de dados, como GET / api / v1 / posição) e escreve (e.g. posicionamento de ordem/ alterações/ cancelamento, e mudanças alavancadas). Se algo é escrito, é delegado ao mecanismo principal, e uma fila se forma. Caso essa fila fique muito longa, sua ordem será recusada imediatamente, ao invés de esperar na fila. A profundidade desta fila é ajustada à performance do mecanismo para limitar a latência, com o pior caso sendo de 3 a 5 segundos.

WeBitcoin: Entenda os desafios da BitMEX para escalar sua tecnologia
Erro no envio do pedido. A ordem não pôde ser enviada: o sistema está sobrecarregado. Por favor, tente novamente mais tarde.

De acordo com nossa documentação de Load Shedding, certos tipos de solicitação como cancelamento são permitidos de entrar na fila não importa seu tamanho, mas eles entram na parte de trás da fila, como qualquer outro pedido.

O resultado: os traders sabem imediatamente que o sistema está defasado, ao invés de descobrir depois que a ordem já está na fila, levando vários segundos para ser executada. O mecanismo não está desacelerando: de fato, durante a sobrecarga, o mecanismo atinge um pico, e o orderbook e os pedidos de trade se movem rapidamente.

Realizando o trading durante a sobrecarga

Alguns traders expressaram frustração sobre o trading continuar durante a sobrecarga. De fato, vimos muitas teorias da conspiração no Twitter e em chats de traders sobre isso, alegando que isso deve ocorrer pois certos traders tem acesso desigual ao sistema. Isso não é verdade: todo e cada trader na BitMEX possui igual acesso e entra na parte de trás da mesma fila. O mecanismo processa os pedidos da fila o mais rápido que pode o tempo todo.

Se o número de ordens entrando no sistema é 5x mais do que ele suporta, apenas 20% serão aceitas e 80% serão rejeitadas. Sobre quais pedidos são aceitos e quais são rejeitados, é simplesmente o caso de haver espaço na fila no momento em que o pedido chega. Se o seu pedido acaba chegando à fila logo após uma resposta ser enviada, colocando a fila abaixo da profundidade máxima, ele será aceito. O próximo pedido enviado após o seu pode não ser.

Em momentos de pico, a BitMEX vê aumentos na taxa de entrada de pedidos de 20 a 30 vezes acima da média! Trades executados atingiram picos de US$100 milhões/minuto. Esta taxa, caso mantida, levaria a um volume de US$6 bilhões em negociações por hora, ou mais de US$144 bilhões por dia! Isso é 13x o maior volume já registrado em um único dia na BitMEX, ou em qualquer outra plataforma de criptomoedas.

WeBitcoin: Entenda os desafios da BitMEX para escalar sua tecnologia
Primeiro gráfico: Total de pedidos. Roxo: API / Azul: Frontend Segundo gráfico: Porcentagem de pedidos rejeitados em um espaço de 10 segundos. Este exemplo mostra uma porcentagem anormalmente alta, indicando uma sobrecarga de pior caso. Na prática, apenas 2-3% de todos os pedidos submetidos ao BitMEX por dia são rejeitados por load shedding.
WeBitcoin: Entenda os desafios da BitMEX para escalar sua tecnologia
Movimento acentuado do mercado, causando o grande aumento na taxa de pedidos mostrada acima.

Buscando sempre promover uma boa experiência de trading, a BitMEX precisa ter uma grande reserva de capacidade para lidar com situações intensas. Abaixo, iremos documentar alguns dos desafios que enfrentamos ao atingir esta meta.

Alto escalonamento e a Lei da Amdahl

Como problemas de escalabilidade são resolvidos? Há dois tipos de escalonamento: “vertical” e “horizontal”. O escalonamento vertical consiste em agilizar um sistema individual. Você pode fazer isso pela compra de um processador mais rápido (boa sorte; a Lei de Moore está morta para CPUs), ou encontrando formas de realizar menos trabalho. Por outro lado, o escalonamento horizontal é da variedade de “jogar mais dinheiro”: girar mais servidores e distribuir a carga entre eles.

Servidores da web são um bom exemplo do serviço de escalonamento horizontal. Em sistemas bem arquitetados, você pode adicionar mais servidores da web para lidar com a demanda de clientes. Quando uma resposta não depende de outra, é seguro que os servidores trabalhem em paralelo, como os balconistas de conveniências.

Isso é uma simplificação massiva, mas para muitos, a solução de escalonamento é uma versão mais longa de “jogar dinheiro no problema”. Muitos sistemas escalonam de forma horizontal. A maioria das experiências dos clientes são completamente independentes umas das outras, e podem simplesmente ser servidas por mais servidores da web. O banco de dados de apoio pode ser escalonado horizontalmente, replicando seus dados um para o outro.

Há um limite para o escalonamento horizontal, que frequentemente é expressado pela Lei de Amdahl. Em resumo: a escalabilidade horizontal de um sistema é limitada pela série de operações (ou as operações que devem acontecer em uma sequência específica) requeridas. Para ilustrar: imagine um serviço simples com um único encadeamento que você deseja acelerar executando-o em paralelo e.g. através de múltiplos servidores. Através de análises de performance, você descobre que apenas 25% do trabalho deve ser feito em ordem. O resto pode ser realizado em paralelo. Isso significa que, não importa quantos núcleos ou servidores você atire no problema, ele somente pode ser acelerado em 4x, visto que 1/25% = 4. Este pequeno trabalho em série se torna o gargalo.

WeBitcoin: Entenda os desafios da BitMEX para escalar sua tecnologia

Este requerimento em série é onde a BitMEX se difere da maioria dos serviços da web. O mecanismo de trading da BitMEX possui muito mais requerimento em série, limitando seriamente as oportunidades de paralelização.

Problemas sequenciais: Ordens e Re-margining

O mecanismo de trading da BitMEX processa ordens em uma sequência, no modelo Primeiro-a-Entrar-Primeiro-a-Sair (First-In-First-Out ou FIFO).

Assim como estar em espera com seu provedor de tv à cabo favorito, as chamadas para o mecanismo de negociação são processadas na ordem em que são recebidas.

Este é um princípio fundamental para um mercado e não pode ser modificado. Orderbooks devem ter ordens aplicadas a eles sequencialmente – isto é, o pedido é importante. Quando uma ordem agressiva é colocada, ela tira a liquidez do livro de registros e nenhuma outra ordem pode consumi-lo. Por esta razão, a correspondência em um mercado individual não pode ser efetivamente distribuída; entretanto, a correspondência pode ser delegada a um único processo por mercado.

No momento da escrita, a BitMEX opera aproximadamente 150 servidores de API conversando diretamente com um proxy em frente ao mecanismo. Este proxy delega a leitura de requerimentos para espelhos de dados, dados de websocket para o sistema pub/sub, e escreve requerimentos diretamente ao mecanismo.

Escritores são, como você pode esperar, a parte mais cara do sistema e a mais difícil de escalonar. Para que um sistema de trading funcione de forma efetiva, os seguintes apontamentos devem ser verdade:

-Todos os participantes devem receber o mesmos dados do mercado ao mesmo tempo.

-Qualquer participante pode mandar uma escrita a qualquer momento

-Se esta escrita for válida e mudar de estado público, o estado mundial modificado deve ser enviado a todos os participantes após ser aceito e executado.

Não otimizado, este sistema sofre escalonamento quadrático: 100 usuários enviando 1 ordem cada por minuto gera 10,000 (100*100) pacotes de dados de mercado, um para cada participante. Um aumento de 10x para 1,000 usuários gera 100x os dados do mercado (1000*1000), e assim por diante.

Como mencionado no início do artigo, a BitMEX cresceu 129x em 2017. Durante este período, nossa base de usuários escalonou proporcionalmente. Isso significa que, em 31 de dezembro de 2017, comparado a 1 de janeiro de 2017, estávamos vendendo cerca de 16,641x (129*129) mais mensagens.

Consistência do sistema

Escalonar a BitMEX é uma tarefa difícil. Não somos uma plataforma típica de spot ou derivativos: lidamos com todo o ciclo de vida do cliente, desde sua inscrição, até o depósito e o trading.

Para oferecer uma alavancagem de 100x de forma segura, o sistema da BitMEX deve estar correto e deve ser rápido. A BitMEX utiliza o Fair Price Marketing (Marketing de Preço Justo), um sistema original e frequentemente imitado pelo qual os índices compostos de preços de exchanges à vista subjacentes a um contrato são utilizados ​​para fazer a re-margin dos usuários, ao invés do último preço negociado do contrato. Isso torna os mercados da BitMEX muito mais difíceis de manipular por referências de liquidez externa.

Para que isso funcione da forma correta, o mecanismo da BitMEX precisa ser consistente. Em cada mudança de valor do mercado, o sistema faz a re-margin de todos os usuários com posições abertas. Nesta hora, a totalidade do sistema é auditada por uma rotina de controle. O custo de todas as posições abertas, todas as ordens abertas, e toda margem restante deve ser exatamente igual a todos os depósitos. Nem mesmo um satoshi desaparece, ou o sistema é desligado. Isso aconteceu algumas vezes no nosso início; toda vez devido a um erro de arredondamento de alguns satoshis na receita ou nas taxas afiliadas. Embora tenha havido a tentação de criar uma pequena reserva de fundos em caso de erro, nossa equipe acredita que a solvência do sistema é fundamental: eles se agarram ao padrão mais alto possível. O sistema ainda faz auditoria para uma soma exata de satoshis hoje após cada grande mudança de estado.

Não é possível que um ator mal-intencionado com base de dados acesse a BitMEX para simplesmente editar seu balanço: o sistema reconheceria imediatamente o capital que apareceu do nada, emitiria um erro fatal, e seria desligado.

Antes de auditar, o valor atual de toda a sua conta deve ser recalculado do zero; isto é, o valor de todas as suas posições abertas e ordens abertas a um novo preço. Isso garante que os traders não possam comprar o que não podem pagar. Os traders não atingem saldos negativos na BitMEX.

Acelerar este sistema é um dos objetivos primários de nosso esforço de escalonamento. A correspondência leva um tempo comparativamente curto e escala facilmente; marginin não. A BitMEX sempre se esforçou para “corrigir primeiro, acelerar depois” – e portanto, o tempo que isso levou foi maior graças ao nosso comprometimento de fazer isso certo. Resultados incorretos não são toleráveis, e portanto um sistema distribuído corretamente deve ser capaz de detectar procedimentos lentos ou falhos, rebalancear a carga, e completar processos essenciais com um curto período de tempo. Isso requer uma atenção cuidadosa, metódica, e testes rigorosos.

Nossos engenheiros identificaram diversas áreas-chave onde otimizações podem ser realizadas de forma segura, e estamos trabalhando incessantemente para entregar uma arquitetura nova e robusta para aumentar dramaticamente a capacidade da plataforma.

Design de API-First

A BitMEX é um tanto singular entre seus pares: foi implementado API-first. A arquitetura da BitMEX é compreendida em três partes principais: o mecanismo de trading, o API, e uma interface web. Note que nós não utilizamos o termo “a” interface. O que é isso?

Quando estávamos desenvolvendo a BitMEX, queríamos que o nosso API fosse o melhor. Um ótimo API torna fácil para que os desenvolvedores criem ferramentas robustas. Até mesmo possibilita visualizações alternativas e interfaces que nunca poderemos imaginar. Quando começamos a codificação, é genereoso dizer que APIs de trading de cripto eram menos que abaixo da média. Muitos não possuíam qualquer aparência de regularidade, documentação ou adaptadores pré-escritos, dados críticos geralmente faltavam, e funções vitais poderiam ser realizadas apenas pelo site. Ainda pior, a maioria nem mesmo tinha feeds de webstock, e os poucos que possuíam, geralmente os mantinham privados e acessíveis somente por meio do site na web.

Na BitMEX, nós contrariamos a tendência e definimos um novo padrão para APIs de trading de cripto. Nos engajamos em uma política deliberativa de dogfooding, estipulando que o site deveria utilizar o API como qualquer outro programa deveria. Isso significa que não há “a” interface, há simplesmente uma interface oficial BitMEX. O site da BitMEX, como um projeto, não possui acesso especial além do ouvido dos desenvolvedores de API e alguns mecanismos anti-abuso de login/registro.

Isso também significa que um acesso à BitMEX não é mais rápido ou lento que o outro. Todos os usuários entram no mesmo caminho de dados e mesmas filas, estejam eles acessando via dispositivo móvel, navegador, um conector de API personalizado ou mesmo através da integração do DTC do Gráfico Sierra. Isso garante uma experiência justa para todos.

De início, a BitMEX tinha:

-Um feed de alteração de websocket para todas as tabelas, incluindo pedidos, tradesorderbook, posições, margem, ferramentas, e mais, onde todas as tabelas seguem o mesmo formato,

-Um API completamente documentado, tanto utilizável por humanos quanto por máquinas via Swagger spec (agora referenciado como OpenAPI),

-Diversos exemplos de projetos no GitHub, e

-Um caminho da dados unificado para website e consumidores de API.

Dados em tempo real

O comprometimento da BitMEX com o API-first se destaca em sua implementação de dados em tempo real, que são expostos através de nosso webstock. Como citado acima, todas as tabelas possuem feeds disponíveis em tempo real, a primeira na indústria de cripto e extremamente rara atualmente. Ademais, todas as tabelas seguem o mesmo formato, o que significa que você pode escrever apenas 30 linhas de código para poder processar qualquer fluxo. Ou use um dos nossos off-the-shelf do GitHub.

Estes dados fluem de um fluxo de mudança gerado pelo próprio mecanismo, que é filtrado por assinaturas individuais de usuários. Isso permite um fluxo confortável na construção de interfaces acima da BitMEX: se inscreva para suas tabelas, faça pedidos, e escute o fluxo para alterações. De forma geral, a resposta a um requisito HTTP pode ser ignorado, a menos que haja um erro. Isso evita uma dualidade comum em aplicações onde tanto streams de websockets quanto respostas HTTP devem ser lidas separadamente e coalescidas, resultando em um código estranho e bugs.

Acreditamos que essa filosofia de construir uma interface de aplicativo de primeira linha não apenas contribui para as melhores integrações de usuários, mas também torna o site BitMEX e os próximos aplicativos móveis os melhores possíveis.

Nossos feeds em tempo real são de grande importância para o funcionamento ordenado da plataforma BitMEX. Para este fim, estamos encenando um grande retrabalho interno desse sistema que esperamos que aprimore a latência e a taxa de transferência de forma significativa, sem exchanges externas. Iremos anunciar este lançamento e seus resultados em breve.

Próximos passos

Esperamos que o conteúdo acima tenha dado a todos uma ideia dos desafios enfrentados pela BitMEX ao escalar a plataforma para o próximo crescimento de 100x. Ao passo que estamos orgulhosos do sucesso da plataforma e agradecidos a nossos usuários, precisamos continuar a aprimorar para sermos viáveis nos próximos anos.

A Equipe de Mecanismo de Trading da BitMEX publica atualizações para a plataforma várias vezes por semana. Essas mudanças incrementais são parte de um re-projetamento de longo período da plataforma de trading e de uma tática de melhorias para o mecanismo. Estes esforços, sucessos e falhas, serão discutidos na terceira parte desta série.

Nossa Equipe de Mecanismo foi capaz de entregar grandes atualizações ao nosso sistema de taxas em uma cadência regular. Recentemente, em 23 de maio de 2019, a equipe impulsionou uma grande atualização de infraestrutura que aprimorou a capacidade de processamento de pedidos em 70%.

Aprimoramentos de capacidade significantes como este continuarão a ser entregues ao longo dos próximos vezes enquanto o re-projetamento da plataforma segue em paralelo.

WeBitcoin: Entenda os desafios da BitMEX para escalar sua tecnologia
Nova ordem média, 99% de tempo de processamento. O código atualizado foi lançado aproximadamente às 01:20 UTC.
WeBitcoin: Entenda os desafios da BitMEX para escalar sua tecnologia
Tempo de processamento de ordens de cancelamento de pedidos em 95% (para os 3 tipos diferentes de operação de cancelamento disponíveis por meio do API)

Enquanto o trabalho progride rapidamente no escalonamento do nosso mecanismo de trading, nós também estamos escalonando nossas equipes. A BitMEX emprega tanto especialistas de renome mundial em sistemas de trading eletrônico, escalonamento, segurança, e web, quanto possui papéis iniciantes e intermediários para pessoas que não tem medo de aprender e sujar as mãos. Se este artigo te interessa, você pode ser o tipo de pessoa que queremos em nossa equipe; dê uma olhada nas oportunidades em nossa Página de Carreiras.

Leia o artigo em inglês diretamente no site oficial da BitMEX clicando aqui.

Foto de Beatriz Orlandeli
Foto de Beatriz Orlandeli O autor:

Simpatizante das criptomoedas, após cursar Arquitetura e Urbanismo, reavivou um antigo gosto pela escrita e atualmente trabalha como redatora do WeBitcoin.

biaorlandeli