
Transformar desafios em oportunidades é o que fazemos todos os dias.
A Proatividade traz a Inovação
No início de novembro de 2021, a Crossjoin estabeleceu uma parceria com um restaurante nas proximidades para fornecer alimentos de alta qualidade com um desconto de 50% para os colaboradores (também conhecidos como Crossers). A grande adesão a este benefício criou um bottleneck, uma vez que um único Crosser tinha de recolher todos os dias os recibos do restaurante de outros Crossers e inserir a informação numa folha de cálculo para determinar quanto a Crossjoin tinha de pagar ao restaurante naquele dia. Quando soube deste problema, a primeira coisa que me veio à mente foram as blockchains.
No dia 3 de dezembro de 2021, o meu interesse por sistemas distribuídos levou-me a enviar um e-mail ao CEO com uma proposta para resolver o problema, criando um sistema de pagamento com uma blockchain. Perguntei a outros Crossers sobre esta ideia, e foi então que conheci um colega que tinha uma ideia semelhante. Na altura, tinha mais tempo livre do que ele porque estava à espera de um projeto para começar, por isso, no início, tive de intervir e impulsionar esta inovação.
Utilizar a ferramenta certa para o trabalho
Todo o engenheiro sabe que escolher a tecnologia certa é crucial e pode impactar a eficiência, escalabilidade e sucesso de um projeto. Investimos muito tempo nesta parte. As blockchains são relativamente novas, no entanto, a variedade de opções é esmagadora.
Temos blockchains que são geridas privadamente por uma organização (permissionadas), como Hyperledger Fabric e Sawtooth. Por outro lado, temos blockchains que são públicas e nas quais qualquer pessoa pode construir aplicações DeFi e escrutinar todas as transações que são realizadas, como Bitcoin, Ethereum, e Algorand.
Na procura da melhor ferramenta para o trabalho, decidimos não optar por blockchains permissionadas, porque cada participante teria que operar um node para fazer parte do protocolo e ter garantias de que não há um participante bizantino a alterar as transações em seu favor. Escolhemos o Algorand, uma blockchain não permissionada, porque oferece tudo o que precisamos, como: i) tokens fungíveis e não fungíveis são tratados como cidadãos de primeira classe; ii) rápida finalização de blocos, cerca de 3,3 segundos; iii) baixas taxas de transação; iv) escrito em Golang, o código da blockchain é muito simples de analisar.
Para o front-end, tivemos outra decisão difícil entre escrever as aplicações na linguagem nativa de cada plataforma, mantendo diferentes códigos-fonte, ou escolher Flutter com Dart, tendo um único código-fonte que seria compilado para várias plataformas (Android e iOS). Optámos pela segunda opção porque éramos apenas dois desenvolvedores e não nos podíamos dar ao luxo de gastar tempo extra a desenvolver a mesma coisa duas vezes.
Desafios
A Web3 era um terreno novo para nós. Na minha tese, já tinha alterado código em blockchains para integrar assinaturas threshold, mas nunca tive a oportunidade de escrever um smart contract para resolver um problema real. O primeiro desafio surgiu quando começámos a desenvolver o smart contract puramente em TEAL (linguagem de máquina stack). A nossa primeira solução era simples de escrever, mas difícil de manter, por isso adotámos o PyTeal como nossa abstração sobre TEAL. Isso levou ao nosso segundo desafio. O ritmo rápido de evolução do Algorand e de outras tecnologias Web3 é impressionante. Coisas que inicialmente tínhamos projetado e não conseguíamos implementar tornaram-se possíveis após algumas semanas. Tivemos que rever a nossa solução 2 ou 3 vezes para usar a melhor abordagem para o problema. No momento em que escrevo isto, já existem novas abstrações sobre TEAL e frameworks de testes unitários que poderíamos adotar.
Um dos nossos últimos desafios foi garantir que não haveria problemas de segurança no smart contract. Resolvemos este problema através da análise de diferentes caminhos de execução e simulação de transações bizantinas.
O que fazer a partir daqui?
A primeira versão do conceito da Crossapp tinha um objetivo simples: permitir que os Crossers pagassem o seu almoço utilizando o benefício de copagamento da empresa.
Na minha opinião, foi um sucesso; no entanto, há espaço para melhorias e para a adição de novas funcionalidades na app. Por exemplo, poderíamos adicionar pontos de fidelidade ou pontos de fitness para trazer uma componente de gamificação às tarefas do dia-a-dia.
Em resumo, esta app oferece inúmeras oportunidades que ainda podemos explorar, e encorajo todos os Crossers a impulsionarem a inovação, ajudando-nos a tornar a Crossapp ainda melhor ou promovendo novas iniciativas, tal como eu fiz.

Jorge Pereira
Consultor
Comentários Recentes