Skip to content

Instantly share code, notes, and snippets.

@suissa
Created December 6, 2017 23:21
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save suissa/5474656fe9b7b92f58c8fca8f7281d98 to your computer and use it in GitHub Desktop.
Save suissa/5474656fe9b7b92f58c8fca8f7281d98 to your computer and use it in GitHub Desktop.
---
Cryptocoins — Atomic Swap
Built by traders, for traders.
Só para avisar que essa é a primeira parte desse artigo onde eu apenas farei analogias para o melhor entendimento da mesma, na parte 2 eu abordarei APENAS a parte técnica envolvida nessa tecnologia.
Primeira Exchange, que EU conheço, que irá trabalhar com essa tecnologia é:
Altcoin.io - Decentralized Cyptocurrency Exchange
Altcoin.io Exchange referral program. Earn commission for each person who signs up through your link!www.altcoin.io
O que que vcs acham dessa exchange? 
Acredito que vai dar boa hein!
---
Lançamento
Eles irão lançar no começo de 2018 e acredito que haverá uma adoção massiva graças à essa funcionalidade altamente esperada: Atomic Swaps!
Sabendo que essa tecnologia terá o impacto de mudar COMPLETAMENTE a forma como compramos, vendemos e usamos altcoins, fui obrigado a escrever esse artigo que na verdade é apenas a parte 1, para que eu possa fazer uma introdução do tema.
---
AVISO
Como esse tema é deveras técnico eu criarei algumas analogias utilizando a Arquitetura de Sistemas Web para que o conteúdo seja de fácil assimilação.
Caso você não seja programador eu aconselho a você abstrair as analogias que eu farei OU estudar os termos que abordarei.
Tendo em vista que TODO esse mercado depende única e exclusivamente dos programadores já estava mais do que na hora de alguém escrever sobre esse assunto utilizando uma linguagem um pouco mais técnica com exemplos claros e lógicos utilizando conceitos de Arquitetura de Sistemas.
---
Tecnologia
Essa tecnologia do Atomic Swap é muitíssimo esperada no mercado pois é com ela que você conseguirá “converter” uma moeda para a outra diretamente sem um intermediário, por exemplo:
Você quer pagar o cinema e ele aceita apenas Litecoin e você possui apenas Bitcoin, com isso você poderá converter automagicamente o valor necessário de Bitcoin para Litecoin para daí sim gastar.
O mais engraçado é que antes de saber que existia essa tecnologia eu sempre me pegava pensando O PORQUÊ ainda não podíamos converter tokens de uma blockchain para outra.
Se você é um desenvolvedor pode pensar no blockchain do Bitcoin como sendo a API de base e todos os outros Blockchains separados podendo ser como Adapters, convertendo seus dados do seu Blochchain original para qualquer outro Blockchain existente, para isso bastaria um módulo que mapeasse os dados de uma estrutura parta a outra, já fazendo a conversão de valores.
Atomic Swap — Why It’s a Game Changer for Exchanges
Centralized Exchanges could soon be facing elimination due in large part to atomic swaps or superconducting…hackernoon.com
Bitcoin-Ethereum Atomic Swap Code Now Open Source - CoinDesk
A team of cryptocurrency startup developers is open-sourcing technology that enables trustless trading between the…www.coindesk.com
Decred Anuncia Atomic Swaps entre Blockchains com a Litecoin - Portal do Bitcoin
É apenas uma questão de tempo até vermos os primeiros atomic swaps entre blockchains acontecer. Pelo andar das coisas…portaldobitcoin.com
Se liga nessa afirmação:
Centralized Exchanges could soon be facing elimination due in large part to atomic swaps or superconducting transactions.
O que é Atomic Swaps?
Provavelmente seja um dos maiores game changers desse mercado.
Primeiramente vamos entender o que significa isso:
So, besides the really cool name, what exactly is an atomic swap? Keeping it simple, this is the ability for two users to exchange cryptocurrency from different blockchains in a completely trustless manner. Each user will agree to terms before the transaction. Then both use private keys to sign a copy of the transaction itself. The exchange is performed instantly, with no transaction fees and removes the need for a centralized party or exchange service to complete the transfer on behalf of the buyer/seller. This allows a user holding Bitcoin to exchange with another user for NEO, as an example.
fonte: Atomic Swap — Why It’s a Game Changer for Exchanges 
Pelo que eu li apenas as moedas que implementarem a Lightning Network poderão usufruir desse mecanismo de troca direta, entre blockchains diferentes.
Eu como programador sempre imaginava quando isso ocorreria, pois para nós nã1o é nenhum bicho de 7 cabeças fazer troca de dados entre linguagens diferentes.
Uma analogia que posso fazer do Atomic Swap é com uma palestra que falo sobre Arquitetura Híbrida para Banco de Dados.
Imagine você ter os dados de um usuário tanto no MongoDB, como no Redis, como no Neo4J como no ElasticSearch, minha palestra trata basicamente de como utilizar cada um para o seu melhor.
Ou seja, imagine que você tenha só Bitcoin mas por um acaso queira comprar algo que só é vendido/votado por quem tem Decred, você poderá trocar seus BTCs por DCR um pouco antes de precisar utilizar eles. 
Isso com certeza agilizará e muito a adoção das criptomoedas, pois eu vejo que cada uma terá seu papel específico assim como temos papéis específicos com a utilização de Bancos de Dados NoSQL.
Na verdade essa tecnolgia vem para responder uma pergunta que sempre me fiz:
Por que não posso ter uma carteira que troque uma moeda pela outra diretamente mediante alguma forma de proporcionalidade entre os tokens de cada blockchain
Alias falando nisso, será que a IOTA entrá nessa? Não li nada sobre isso, mas se eu fosse parte do Core Dev da IOTA eu COM CERTEZA iria implementar essa tecnologia junto ao Tangle, que por sinal, se eles querem que a IOTA seja amoeda do futuro O MÍNIMO que deverão fazer é alguma forma de Atomic Swap para que isso aconteça, pois dessa forma as máquinas poderão transacionar via IOTA e seus donos poderiam converter para qualquer outra moeda assim desejada.
---
Atomic Design
Quem é dessa área de desenvolvimento Web já deve me conhecer há anos pois eu sempre criei e fomentei grupos de tecnologia assim como fiz o mesmo com eventos locais e grupos de discussão. Para quem já me conhece é fácil atrelar o nome Atomic Design à Suissa pois eu fui a primeira pessoa a palestrar sobre o assunto Atomic Design, que foi criado para o Frontend, o qual eu já aumentei o conceito original dele acrescentando:
behavior/comportamento;
bóson/placeholder;
quark/elemento interno do átomo
Entretanto quando eu levei esse conceito para o Backend e aí sim fiz o que queria, adicionei também o conceito de Hádrons, mas isso não vem ao caso pois eu me empolgo demais falando sobre Física Quântica e Programação.
---
Minha análise
Essa análise é focada em quem é Desenvolvedor Web de Pleno para cima!
Para entender essa analogia você precisa no mínimo conhecer o conceitoe a arquitetura de microservices!
Sabendo disso agora imagine comigo:
Cada cryptocoin é um microserviço específico, vou tentar dar um exemplo tendendo ao mais real, imagine que tenhamos um ERP de um Shopping, estando nele nós temos que pagar o estacionamento e qualquer coisa que consumirmos internamente.
Vamos pensar que nosso ERP possui apenas os módulos de:
contas a pagar
contas a receber
folha de pagamento
pedidos/estoque
Caso você queira escalar horizontalmente, de forma global, um sistema desses você pode separar cada módulo desses como sendo um microservice independente e não estando TODOS contidos no mesmo servidor e sendo controlados por APENAS 1 sistema.
Por que não controlados por 1 sistema tio Suissa?
É simples! Você cria uma arquitetura de microservices APENAS se quiser re-utilizar o mesmo microservice em mais de 1 sistema, como se você quisesse utilizar aceitar uma moeda específica para o seu sistema, mas sabendo que ela pode ser utilizada por outros sistemas com contextos diferentes do seu, contudo sua funcionalidade lógica permanecerá a mesma. Ou seja, você NECESSITA agregar diversos microservices para criar uma solução completa, como por exemplo o ERP ou um sistema de Shoppings, utilizando cada microservice/cryptocoin para sua funcionalidade definida.
Como por exemplo:
Utilizar um serviço em Node.js para a API
Utilizar um serviço em Erlang para realtime
Utilizar um serviço em Python para Machine Learning
Utilizar um serviço em R para cálculos estatísticos
Esse serviços são genéricos podendo serem utilizados para as mais diversas finalidades, entretanto cada tecnologia sendo empregada onde é melhor.
Assim que eu acredito que será o futuro das cryptocoins logo após a implementação dessa tecnologia pelas altcoins que assim a desejem, mas já posso ADIANTAR que a cryptocoin que não adotar essa tecnologia você já pode eliminar do seu portifolio, MENOS A IOTA!!!
Caso os desenvolvedores a IOTA e da Lightning Network quiserem criar uma integração entre elas EU FICO DISPONÍVEL para fazer isso acontecer! Não que EU sozinho vá fazer isso, mas uma coisa que SEI QUE POSSO FAZER É:
Criar um movimento na nossa comunidade e ensinar o passo-a-passo de como as funcionalidades das mais diferentes cryptocoins trabalham, porém se eu fosse tocar para frente um projeto desses ele teria que trabalhar com:
JavaScript/Node.js ou;
Go ou;
Erlang.
Eu posso confessar que NUNCA programei NADA em Erlang, mas tenho cereteza absoluta que se essa linguagem fosse utilizada para essa finalidade ela bateria QUALQUER outra e também garantiria 99.9999999% de uptime de qualquer servidor existente.
Por exemplo se os “Censorships” da rede da IOTA utilizassem Erlang a rede sóficaria OFFLINE se eles realmente quisessem, pois essa linguaguem é feita para não dar erro, por sinal foi criada e utilizada até hoje pela Ericson e por que eu acho ela a linguagem mais fodida do mundo???
Colocando de lado a estrutura de execução de programas dela que é algo FENOMENAL ela também é uma linguagem IMUTÁVEL, de todas as linguagens que conheço tanto imperativas como funcionais o Erlang é a ÚNICA que simplesmente é completamente imutável!!!
Se você acha que o blockchain é imutável saiba que basta 50% da rede + nó para que seja possível reescrever TODA a cadeia, já quando programamos com Erlang NADA PODE SER ALTERADO!!! E é exatamente isso que faz com que o Erlang seja a linguagem com maior UPTIME do Universo!
Bah desculpe a divagação em cima de linguagens de programação.
Mas, como eu expus anteriormente, esse artigo é mais focado para quem é da minha área da programação.
Analogia
Voltando à nossa analogia do Shopping, imagine que depois de entrarmos podemos, por exemplo, comprar roupas, aparelhos eletrônicos, ir ao cinema, como também comer na praça de alimentação.
Nisso imagine que o sistema de pagamento do estacionamento seria O MESMO para qualquer estacionamento que utilize o , mesmo na rua.
Eu já tive essa ideia de estacionamento sendo pago com BTC, mas quando a tive AINDA não conhecia a IOTA.
Agora imagine a forma de pagamento de cada:
estacionamento: pagamento automático com IOTA;
roupas: pagamento com LTC que varia BEM menos que o BTC;
cinema: alguma altcoin específica para isso ainda não criada;
comida: exemplo é a coin do Burger King, acredito que a meioria das grandes redes de Fast-food terão sua própria moeda.
Caso você seja programador já entendeu o que eu quis abordar aqui, basta pensarmos em um sistema híbrido e reativo, onde cada loja ou serviço seja um microsrvice independente e autônomo. 
Por exemplo podemos ter microservices de pagamento para:
cinema
estacionamento
praça de alimentação
lojas de comércio
lojas de serviço
Agora imagine que a moeda já criada, por exemplo do Burger King, pode ter MAIOR ACEITAÇÃO que a própria moeda nacional, por onde o Burger King possui franquias. 
Aliás, ainda acredito que haverá UMA moeda genérica para franquias, se ainda não criaram, irão. #ficadica .
Sabendo disso, imagine você ter que ir em um Shopping e precisar de uma moeda diferente para cada coisa, beira ao irreal correto?
Então imagine que louco se CADA Shopping tivesse uma carteira virtual onde qualquer moeda, que implemente a Lightning Network, possa ser convertida na MOEDA OFICIAL do Shopping, a qual TODOS os comerciantes aceitariam, com isso deixaria TODOS os valores locais mais simples de serem entendidos e mais fáceis de serem comparados. Sendo que TODA essa conversão de uma moeda para a outra fosse AUTOMÁTICA sem que o usuário necessitasse ter algum pré-conhecimento nessa área.
Basicamente faria o Real ser convertido para uma moeda proprietária do Shopping em questão, porém após você sair desse Shopping e ainda possuísse algumas moedas locais poderia facilmente converter em outras altcoins, culminando em uma interoperabilidade tanto de moedas como de locais
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment