Vamos lá, recentemente vinha pensando em responder o que é proof of stake, muito pela questão de não ter muito material falando a respeito. Com uma breve busca no google deu pra perceber quanto o pessoal vem propagando informações incorretas sobre a tecnologia, então o artigo meio que se tornou obrigatório ao menos para alertar desses dois pontos mais comuns que encontrei.
Durante a pesquisa foi bem comum encontrar artigos falando de proof of stake levando em consideração projetos antigos, que utilizavam uma ideia básica e sem refinamento, eram projetos que estavam testando a possibilidade.
Como todo projeto que está iniciando algo, em muitos casos é mais conveniente para um desenvolvedor escrever o código e observar o comportamento sem a exigência de um rigor científico no primeiro momento.
Problemas não resolvidos dessas implementações se tornaram algo que perduraram por muito tempo e este foi o caso com proof of stake. Neste ponto é que a maioria dos artigos pararam no tempo, continuam perpetuando a mesma ladainha como se fosse a verdade absoluta e alguns fazem uma menção a ethereum, que em nenhum momento é referência em Proof of Stake.
Para piorar a situação, ainda vemos a disseminação de informações incorretas nos canais de mídia do nosso ecossistema, recentemente tivemos um artigo no CoinTelegraph que simplesmente colocava qualquer coisa relacionada a proof of stake no mesmo envelope.
O artigo fazia referência a moedas que são delegate proof of stake, como EOS ou Dash, ambos com características que divergem significativamente de um sistema proof of stake.
Mas o que é proof of stake?
Proof of stake é uma resposta para algumas ineficiências dos protocolos proof of work, um dos principais fatores é o consumo energético, descentralização e principalmente na escalabilidade de transações e contratos inteligentes. Na prática em vez de você ter que comprar máquinas para iniciar o investimento, se utiliza o mesmo investimento diretamente na moeda do protocolo, te permitindo participar no consenso da rede através da delegação, sorteio e processamento dos blocos.
Em proof of work, as mineradoras são utilizadas para criar um ambiente de loteria, onde quem tem mais tickets (máquinas de mineração), tem mais chances de serem sorteados (uma maior probabilidade de descobrir o bloco).
No caso da Cardano é exatamente a mesma coisa, quem tem uma maior quantidade de tickets (a moeda ADA) tem uma probabilidade maior de processar blocos, mas uma das grandes diferenças entre esses 2 conceitos básicos são as regras que os pools de proof of stake tem que seguir, que são bem mais complexas que uma pool de bitcoin ou ethereum.
Na Cardano o detentor da ADA pode escolher rodar um pool ou delegar para um pool, quando ele delega para um pool ele está autorizando aquele pool a utilizar a quantidade de moedas da carteira do usuário como os tickets da loteria. Nenhuma moeda deixa a carteira do usuário no momento da delegação, é apenas como se ele assinasse uma permissão de leitura na carteira dele em benefício do pool escolhido.
Mas não basta apenas ser sorteado, o operador do stakepool tem que ser capaz de manter o servidor em uma condição propícia para conseguir processar o bloco no momento exato. A cada 5 dias o operador recebe uma lista dos blocos que ele vai processar, então o node do pool da coleta as transações e envia aquele bloco que estava agendado, a data e hora de envio do bloco é confidencial e somente o operador do pool sabe.
Queremos um futuro construído em base sólida
E aqui é que eu começo a ficar nervoso com essa distribuição de informação na comunidade crypto, coisas que são os fundamentos básicos do nosso ecossistema não são destacados!
Eu não consigo nem conceber um projeto que começa errado, eu jamais vou considerar um sistema que tem 21 operadores algo descentralizado como a EOS ou um sistema em que coloque em risco o saldo dos usuários como ocorrido na Dash.
Meu problema é quem em grande parte funcionalidades estão sendo prometidas no achometro! Provar que é possível? Pra que? O hack do DAO e Parity deveriam ser um alerta vermelho na testa de qualquer early adopter desse mercado. Qualidade de código é algo que precisa estar em estado de arte.
No fim do dia temos que ter em mente o que estamos aqui para votar com o nosso dinheiro, apoiar e colocar pra frente a criação das ferramentas que irão melhorar nossa liberdade, não para perder tudo e um tropeço na próxima esquina.
Pessoal, isto é um lembrete para nosso ecossistema de que estamos construindo vem do mundo das exatas, uma implementação errada de uma tecnologia de criptografia pode causar sérios danos. Nós lidamos com o dinheiro de pessoas que trabalharam uma vida inteira, aqui o que você mais deveria desejar nesse momento, seria o mesmo nível de exigência no caso que você estivesse fazendo uma cirurgia no cérebro, o médico tem que ser experiente, com equipamentos de qualidade feitos por engenheiros e que tenham sido testados de forma extenuante.
Os projetos de Proof of Stake
Por meu envolvimento com a Cardano vejo outros projetos surgindo mas poucos se destacam em pesquisa acadêmica.
Destes apenas Algorand e Cardano tem o que é necessário para serem consideradas referências em POS, ambos por terem uma abordagem de desenvolvimento mais rigorosa. Também temos a Definity e outros protocolos de proof of stake como Snow White que ao menos passaram pela revisão de pares.
Existem outros sistema de proof of stake em desenvolvimento como Tezos e Ethereum, no caso da Tezos eu não tenho informação sobre o processo de implementação e Ethereum tem se mostrado uma boa bagunça.
Aqui a lógica é simples, se temos uma blockchain estabelecida no mercado como o Bitcoin, que se provou segura através do tempo e inclusive tendo seu protocolo validado pelo meio acadêmico, devemos no mínimo elaborar mais possibilidades em cima desse modelo. A tentativa de validar e buscar algum embasamento para o que você está tentando alcançar, e foi isso que a Cardano fez.
Para que não sabe, a Cardano hoje usa a mesma forma de construção de Blockchain que o bitcoin (Nakamoto Style), onde a chain mais longa é a vencedora.
E inclusive a implementação de proof of stake do protocolo conhecido como Ouroboros, vem garantindo melhores resultados que a própria blockchain do bitcoin.
Recentemente tivemos a notícia que um pool chegou a produzir 6 blocos em sequência, número esse garantido como seguro para uma transação ser irreversível, isso levanta preocupações com sistemas que hoje em dia utilizam a confirmação de 3 blocos. Será que estamos vendo uma tendência? Não sei, mas tal cenário é impossível de ocorrer no sistema da chain mais longa da Cardano.
Uma blockchain envolve muita coisa, para cada funcionalidade que ela pretende oferecer deveria se propor mais pesquisa para entender os diversos impactos que poderiam ocorrer no futuro.
Falta de pesquisa que hoje em dia vira muro das lamentações na ethereum. Para se ter idéia a parte de smart contracts da cardano levou anos de pesquisa, tudo para oferecer um alto índice de segurança e compatibilidade na escalabilidade.
Proof of Work x Proof of Stake
Mas antes de cair nesses problemas antigos que ficam se perpetuando pela rede, eu ainda preciso chamar a atenção para um dos motivos, que na minha opinião, é algo só o proof of stake consegue fazer.
Ele eleva o ecossistema de blockchain para um outro nível de participação global.
E pra ilustrar quero trazer um tweet recente, a ideia é simples, proof of stake é muito mais participativo porque permite uma pessoa começar com pouco e manter o seu capital valorizando no longo prazo.
Ao contrário do bitcoin, que seria preciso investir em maquinário especializado. No final de alguns anos seu investimento inicial foi depreciado e virou peso de porta.
“Traduzindo, agora 45 gerações antigas de máquinas de mineração de bitcoin passam a valer $0, o seu investimento inicial para participar do consenso da rede desapareceu. Não é a melhor solução, mas pelo menos ainda está funcionando.”
Pra mim algo que não me agrada no bitcoin é que a sua participação no consenso é restrita e beneficia apenas alguns grupos específicos de pessoas.
Um exemplo interessante de POW que gosto de dar e acho super útil é o cara que tem produção de energia em algum local isolado e quer revender, pode ser uma pequena hidroelétrica em um sítio, basta ligar algumas máquinas e remunerar nos horários ociosos.
Mas isso não é uma realidade para uma grande parte das pessoas, um dos motivos no qual eu particularmente não gosto no POW do bitcoin é que desde o início ele foi planejado que apenas por um breve período haveria a possibilidade dos usuários participarem no consenso da rede através da mineração. Satoshi sabia que isso eventualmente seria uma barreira no futuro, muito pelo fato dessa dominância e da competitividade, pessoas com mais recursos e em lugares privilegiados dominariam o jogo.
Eu acredito que se eu estou investido em um ativo que tem uma distribuição constante eu não posso ter uma barreira tão abrupta de participação como a do bitcoin, pelo contrário o objetivo deveria ser o mais inclusivo possível. A sensação que eu tenho é que se você é detentor do um token que tem emissão e você não consegue participar do consenso, me parece você está deixando de ganhar.
Nesse momento eu acho que é importante reconhecer que tecnologias tem suas gerações bem definidas e esperar grandes evoluções delas é algo que não desejado por algumas comunidades(bitcoin), podendo causar mais forks por não conseguirem chegar em um consenso.
Proof of stake da Cardano resolve o problema de participação do consenso da rede de forma inclusiva, permite que todos que investiram no ecossistema sejam recompensados e tenham sua devida representação de voto de acordo com seu número de tokens.
Números esses que variam de acordo com o risco retorno relativo ao tempo de exposição ao projeto.
Ao meu ver este é o fator mais importante do proof of stake, essa capacidade de incluir qualquer pessoa de qualquer canto da terra. Independente se ela esteja no meio de uma guerra civil onde toda a infra estrutura de energia elétrica possa estar comprometida ou se você está em marte trabalhando para tornar nossa civilização interplanetária.
A única coisa que importa é saber que você vai conseguir exercer seu voto na rede a partir de qualquer lugar.
Acredito que esse conceito de participação via stake é algo como presenciar e participar do nascimento de uma verdadeira revolução econômica, apoiar essa economia circular, onde investimos nosso capital durante um longo período, construímos as ferramentas financeiras que atendem nossas necessidades e atendermos essa demanda de software distribuído no mercado.
Uma instituição global que promove o avanço humano por livre participação. Este é o verdadeiro proof of stake.
Os mitos sobre proof of stake
Este artigo também não tem a intenção de ser um manual técnico, mas iremos usar alguns termos específicos da Cardano que servirão apenas para ilustrar um cenário específico dos problemas que sistemas de POS estão expostos.
Após ter claro algum dos pontos do proof of stake, vamos a alguns mitos que circulam pela rede.
A primeira coisa que todos falam é do nothing at stake, onde no caso os operadores dos stakepools poderiam, a custo zero, ficar criando blocos em qualquer parte da chain apenas para coletar a taxa as transações. Isso é algo tão antigo que me deixa perplexo que ainda segue sendo propagado como um risco, qualquer POS que se preze olha pra esse tipo de problema durante o design do protocolo. O mais importante a se fazer em qualquer situação onde você se depare com um novo protocolo de proof of stake, é fazer a sua pesquisa nele.
Segundo seriam os sybil attacks, onde um agente tenta assumir o controle de vários nós da rede, nessa operação ele teria que tentar se passar por pessoas diferentes na rede na tentativa de mascarar a operação, o objetivo dominar 51% dos nós e do stake. Para este cenário vou responder como a Cardano lida com essa situação, pois desconheço o restante dos protocolos, e a resposta aqui não é tão simples.
Na Cardano temos alguns parâmetros que são configuráveis pela comunidade, são Pledge, K e a0, estes 3 parâmetros fazem parte da teoria de jogos no protocolo.
Cada operador de stakepool que quiser oferecer o serviço tem que travar permanentemente uma quantidade de tokens no pool, qualquer tentativa de movimentação desse valor em um prazo de 5 dias pode descartar todos os rendimentos gerados pelo pool, mas o sistema não para aí.
O parâmetro K define a quantidade de pools que a rede irá comportar, acima desse valor a abertura de mais pools é desencorajada.
Em conjunto com K, o parâmetro a0 define também a quantidade de ADA que cada pool terá que travar para atingir uma rentabilidade específica, essa quantidade é chamada Pledge.
Quanto maior for o a0, mais Pledge será necessária para atingir uma rentabilidade maior, maior é o comprometimento do operador com aquele stakepool.
Como temos um limite de pools, também temos um tamanho máximo de que uma pool pode receber de stake, se o stake estiver acima do limite o pool começa a perder performance, levando em muitos casos a whales da cardano operarem pools privados onde não distribuem stake.
O efeito é o seguinte, para ganhar mais eu preciso ter mais ADA travada no pool, a quantidade de pools é um fator limitado, usuários que chegam para delegar suas ADAs e encontram pools de alta performance lotados começam a procurar pools menores para tentar otimizar o seu retorno. Ameaçar a rede com um ataque de 51% coloca o atacante em uma situação extremamente complexa de ser coordenada, é impossível.
A essa altura qualquer um tentando atacar o sistema com sybil teria que competir e fechar acordo com várias whales do ecossistema, tentando convencer elas a colocar o stake em seu pool para obter o controle. Sem contar que teria uma massa de operadores menores competindo para entregar melhores resultados para os integrantes da comunidade que encontraram os melhores pools lotados. Toda essa parte de teoria de jogos está nessa pesquisa acadêmica que explica toda a parte de recompensa do protocolo. https://arxiv.org/pdf/1807.11218.pdf
Hoje ao total já se somam mais de 73 artigos científicos desenvolvidos pela IOHK que contribuem para todo o ecossistema de blockchain na fronteira da tecnologia, vale lembrar que projetos como Algorand usam patente e se estamos trabalhando para construir melhores fundamentos temos que praticar o open source de uma forma que seja possível contribuir pra todo o ecossistema. No fim do dia estamos votando com nosso dinheiro para construir sistemas melhores.
Então é isso pessoal, falar de proof of stake não é uma coisa isolada, precisamos entrar em alguns tópicos que acabam abrangendo outras coisas, o que eu quero reforçar aqui é que não importa o que esteja sendo perseguido, se vai ser o próximo protocolo quântico ou etc. O importante é sempre prestar atenção na direção que essas tecnologias estão tomando e como podemos fazer para manter os pilares que irão nos manter em pé no futuro.