Enquanto na semana passada eu criticou os XRPs da Ripplenão podemos igualar todo o sistema à sua moeda. Existem muitos recursos fundamentais do sistema Ripple com os quais outras criptomoedas podem aprender. Muitos deles são pequenos e obscuros para qualquer pessoa que não tenha experiência prática no desenvolvimento de sistemas baseados em criptomoedas. Felizmente, essa é minha especialidade.
Então, aqui estão alguns recursos do sistema Ripple com os quais outras criptomoedas podem aprender, conforme visto por um programador.
AccountTxnID e memorandos
Às vezes você precisa enviar uma transação com alguns dados extras anexados. Quer seja um ID de fatura, número de cliente ou alguma outra informação relacionada ao negócio, você tem alguns dados que precisam ser inseridos no blockchain. Isto irá ajudá-lo a acompanhar qual transação fez o quê, fornecer algumas informações identificáveis sobre a origem da transação e assim por diante.
Até o Bitcoin reconheceu a necessidade desse recurso ao introduzir OP_RETURN em 2014. Antes disso, as pessoas costumavam criar resultados de transações não gastáveis, que o sistema teria que acompanhar para sempre.
Ripple já tinha isso no lançamento em 2012 na forma de ContaTxnID e Memorandos. O primeiro é um campo curto, ideal para incluir IDs de transação e sequências curtas semelhantes. Este último pode armazenar estruturas de dados muito mais complexas – strings longas, vários arrays hexadecimais, esse tipo de coisa.
LastLedgerSequence
Ao construir um sistema de criptomoeda mais complexo, você precisa lidar com a imprecisão das transações antes que elas entrem em um bloco. Essencialmente, quando você envia uma transação, talvez você não saiba o que acontecerá com ela até que ela se torne parte de um bloco ou uma transação conflitante se torne parte de um bloco. Se uma transação se perder na rede, ficar presa em uma fila de processamento ou se houver algo errado com o sistema, ela ficará essencialmente presa em um limbo. Pode ser confirmado no próximo segundo, pode nunca ser confirmado ou talvez demore algumas horas.
Então aqui está o problema: como você lida com essas transações? Você pode tentar reenviá-los se tiver a representação hexadecimal deles, mas isso ainda não garante um resultado. Você mesmo pode tentar gastar o dobro, mas terá duas transações presas no limbo. Você reenvia uma transação diferente para creditar a mesma pessoa? Então você pode acidentalmente enviar o dinheiro duas vezes se não tomar cuidado. Todos esses resultados estão abaixo do ideal.
É aqui que entra LastLedgerSequence. É um campo que você pode incluir em uma transação que permite especificar quando uma transação DEFINITIVAMENTE falhará. Você coloca um número de razão em algum momento no futuro e, se a transação não for incluída antes desse número de razão, você tem certeza de que ela NUNCA será incluída em um razão. As transações são permitidas falhar graciosamente de maneira previsível.
Dados versus Metadados
As criptomoedas de primeira geração são bastante simples. Uma transação faz uma coisa e apenas uma coisa: movimentar dinheiro. Se uma transação for incluída em um bloco, significa que a transferência foi realizada; caso contrário, não foi. Existem apenas dois resultados aqui.
Ao falar de um sistema mais complexo, naturalmente haverá mais resultados possíveis. Talvez uma transação tenha sido incluída em um bloco e tenha feito exatamente o que deveria. Talvez tenha sido incluído em um bloco, mas não tenha conseguido nada. Talvez existam caminhos diferentes que poderiam ter sido seguidos para chegar ao resultado, etc.
É por isso que as transações Ripple têm ambos dados e metadados para eles. O primeiro mostra o que uma transação DEVE fazer, o segundo – o que FEZ. Isso permite que as transações sejam mais complexas, ao mesmo tempo que garante que qualquer chamada de transação retorne todas as informações relativas a uma determinada transação.
Exchange distribuída dedicada e integrada
Um eficiente Sistema criptográfico 2.0 se beneficia muito de ter uma troca distribuída integrada. Embora alguns sistemas como o NXT só permitam a negociação de um determinado IOU por seu token nativo, o Ripple vai um passo além e trata todas as moedas da mesma forma. Você pode negociar qualquer moeda para qualquer outroaté ao ponto de minando o valor dos XRPs por causa disso. Também é uma parte muito importante de alguns outros recursos.
Embora sistemas com contratos inteligentes como o Ethereum possam imitar a funcionalidade da exchange integrada do Ripple, seria difícil competir com a eficiência de uma lógica de exchange dedicada. Como alguém que tem experiência em programar uma troca de criptografia, posso atestar que a classificação e correspondência de pedidos pode ser uma tarefa complexa que seria difícil de executar com eficiência em um contrato inteligente. Ripple tem a troca distribuída mais forte que já vi em qualquer projeto de criptografia.
Negociações como parte de um pagamento
Em um sistema com múltiplas moedas, como passar da moeda A para o envio da moeda B para alguém? Muitas vezes, você terá que levar essa moeda a algum tipo de mercado, negociá-la e depois usar os fundos resultantes para enviar a segunda moeda diretamente. Como alternativa, você usa algum tipo de terceiro para intermediar o negócio, recebe uma parte e aproveita o tempo para chegar lá.
Este não é o caso do Ripple. Uma negociação pode acontecer como parte de um pagamento. Enviar dinheiro de um endereço para outro é igualmente simples, quer você possua a mesma moeda ou não. As moedas não importam, apenas o valor importa.
Um pagamento Ripple que pode ser realizado em 4 moedas diferentes
Esse recurso aproveita todo o potencial de uma exchange distribuída. Todos têm acesso ao mesmo mercado e não precisam possuir mais de uma moeda para fazer transações com qualquer pessoa na rede.
Transações atômicas em várias moedas
Um grande problema com transações que abrangem múltiplas moedas é a possibilidade de a transação falhar parcialmente e os fundos acabarem em alguma moeda transitória. Se você está enviando dólares americanos e espera que eles acabem como libras esterlinas, você não gostaria de acabar com euros. Este seria um resultado negativo, desencorajando as pessoas de enviar transações mais complexas.
Ripple resolve esse problema forçando todas as transações a serem atômicas. A transação foi totalmente processada ou falhou completamente. Não há como acabar em algum lugar no meio. Além disso, praticamente não há limite para a complexidade de uma transação. Você pode enviar um tipo de moeda, que seguiria várias rotas diferentes e tocaria em várias moedas antes de chegar ao seu destino como a moeda pretendida. É bastante notável.
O algoritmo de consenso e tempos de bloqueio previsíveis
A Ripple não depende de um algoritmo de mineração tradicional para criar seus blocos. Em vez disso, Ripple usa um algoritmo de consenso para emitir seus livros contábeis. Embora o sistema seja mais centralizado do que a maioria das criptomoedas por causa disso, ele resolve muitos outros problemas importantes.
Em primeiro lugar, os tempos de bloqueio são bastante consistentes. Você sabe exatamente com que frequência eles são criados e o intervalo entre os blocos é muito curto e estável. Em segundo lugar, o sistema é mais resiliente contra corrida frontaltornando a troca distribuída mais honesta. Por último, o sistema em geral é menos suscetível à manipulação do mercado pelos mineiros – eles não podem paralisar certas transações ou dados oráculos na esperança de manipular o mercado e enganar o sistema.
Conclusões
Embora o sistema Ripple tenha suas falhas, ele também possui muitos recursos interessantes com os quais outras criptomoedas podem aprender.