Town Crier e Chainlink: enriquecendo e ampliando as possibilidades dos oráculos
Tradução de: https://blog.chain.link/town-crier-and-chainlink/
As pessoas costumam me perguntar se os contratos inteligentes terão um impacto real algum dia. Na minha experiência, fazer previsões de tecnologia é um jogo de sorte. Felizmente, neste caso, não há necessidade: os contratos inteligentes já tiveram um grande impacto.
Contratos inteligentes transformaram o financiamento de empreendimentos de tecnologia por meio de bilhões de dólares em vendas de tokens ERC20, que superaram o investimento inicial em startups de internet. Eles até conseguiram fazer as pessoas pagarem mais por gatos digitais do que o exemplar mais caro de pele e sangue (um animal bonito, diferente de um CryptoKitty).
Apesar de todo o dinheiro e pele que eles fizeram voar, esses sucessos de contratos inteligentes são, tecnicamente falando, bastante banais. Os contratos de token são pouco mais do que livros de contas ou blockchains dentro de blockchains. CryptoKitties são apenas tokens (não fungíveis).
Quando comecei a pesquisar sobre contratos inteligentes em sua antiguidade remota (em 2015), parecia claro que, para fazer algo interessante, os contratos inteligentes precisariam de conexões com o mundo real. Essas conexões, chamadas oráculos, foram severamente subdesenvolvidas em sistemas blockchain. É por isso que meu grupo, liderado por Fan Zhang, embarcou na criação do oráculo do Town Crier (TC).
É uma coisa rara e gratificante ver a pesquisa acadêmica adotada pela indústria. Graças à ajuda da Intel, no entanto, o TC foi, em 2017, o primeiro aplicativo de produção voltado para o público a usar a nova tecnologia SGX da Intel (discutida abaixo). Tal é o mundo blockchain em movimento rápido que há uma fome crescente por bons oráculos, e agora Town Crier se tornou parte da Chainlink. A equipe do TC está emocionada ao ver isso acontecer.
Eu gostaria de oferecer algumas ideias sobre como o TC pode agora enriquecer o Chainlink. Especificamente, gostaria de destacar algumas das maneiras pelas quais o TC complementa os recursos que o Chainlink possui como um sistema descentralizado e as maneiras pelas quais ele os estende — permitindo que os oráculos façam coisas que você pode não pensar que eles poderiam.
Deixe-me começar, porém, com uma resposta à pergunta:
O que é o Town Crier?
Em uma palavra, TC é um oráculo apoiado por um ambiente de execução confiável (TEE).
Um oráculo, em sua forma mais básica, é um serviço que recebe uma consulta q de um contrato inteligente SC e retorna uma resposta A. A consulta Q pode estar relacionada a quase tudo, por exemplo, “Qual era o preço em dólares do Ether às 15h? hoje?” (para um contrato inteligente financeiro), “Alice alugou o drone nº 2871?” (para um contrato inteligente de aluguel de drones), “Seraphim Airways Flight #123 pousou no horário?” (para um contrato de seguro de voo), “Trump conseguiu seu muro?” (para um contrato de apostas). Normalmente, o serviço obtém sua resposta A de um ou mais sites confiáveis.
Um TEE é um recurso baseado em hardware que permite que programas como Town Crier sejam executados em um ambiente protegido. Esse ambiente, chamado de enclave, fornece integridade e confidencialidade. Integridade significa que é inviável para um invasor adulterar o código em um enclave. Ele garante aos usuários que o TC está agindo como um oráculo honesto. Confidencialidade significa que também é inviável para um invasor inspecionar o conteúdo de um enclave. A TC aproveita a confidencialidade do TEE para lidar com dados confidenciais com segurança, desde senhas até chaves privadas que controlam criptomoedas e informações de identificação pessoal. (Dou algumas ressalvas nas notas deste blog explicando como a segurança dos TEEs está longe de ser perfeita.)
Em resumo, você pode pensar em um enclave como uma caixa preta, um ambiente rígido e opaco para executar programas com segurança. Você pode pensar no TC como um oráculo que funciona em uma caixa preta.
Integridade do Oráculo
Como um sistema oracle descentralizado, o Chainlink pode fornecer contratos inteligentes com respostas de vários nós ou fontes. Por exemplo, um contrato inteligente pode receber respostas de três nós Chainlink diferentes para a pergunta: “Qual era o preço em dólares do Ether às 15h? hoje?” Se a maioria desses nós for honesta, é fácil garantir que A esteja correto: simplesmente pegue o valor majoritário das respostas que os nós fornecem. Enquanto duas das três respostas estiverem corretas (e consistentes), resultará um valor correto de A. Mesmo que um oráculo se comporte mal e forneça uma resposta incorreta, A ainda estará correto.
O TC, por outro lado, pode garantir respostas corretas com apenas um nó. Mais precisamente, ele fornece uma garantia de ponta a ponta: desde que o nó execute TC em um TEE, um adversário não pode adulterar uma resposta enquanto ela é retransmitida pelo oráculo do site para o contrato inteligente.
Alguns usuários podem ser céticos em relação à segurança dos TEEs — por razões que explico em um apêndice a este blog. Felizmente, a descentralização e os TEEs não são uma escolha ou/ou. É possível usar ambos de forma simples, complementar, de cinto e suspensórios. A execução de TC nos nós em um sistema descentralizado ajuda a garantir que esses nós se comportem honestamente. Para que o oráculo envie respostas corrompidas para contratos inteligentes, a maioria dos operadores de nós precisaria ser corrompida ou maliciosa E os TEEs em seus nós precisariam falhar. Dito de outra forma, um sistema descentralizado que usa TEEs — mesmo os defeituosos — é estritamente mais forte do que um sistema que não usa.
Confidencialidade do Oráculo
A outra característica principal do TC é sua capacidade de impor a confidencialidade. Essa habilidade em particular sugere extensões para os recursos que os oráculos descentralizados podem oferecer com segurança.
Vamos pegar um exemplo do jornal Town Crier destinado a ilustrar como um oráculo rico em recursos pode gerar novos mercados. Alice quer vender um jogo Steam para Bob por 1 ETH. Para fazer isso de forma justa, ou seja, para garantir que ela receba seu dinheiro e Bob seu jogo, os dois podem usar um contrato inteligente. Obviamente, o contrato inteligente pode atuar como intermediário na transferência do 1 ETH de Alice para Bob. Mas sem suporte explícito do Steam (uma API), que o Steam não fornece, como o contrato pode determinar se Alice transferiu o jogo para Bob?
A resposta é que Alice pode dar sua senha ao oráculo TC, que pode fazer login em sua conta e verificar se ela enviou o jogo para Bob.
Graças ao uso de um TEE, o TC pode, em princípio, lidar com senhas com segurança, incluindo a de Alice.[1] Em contraste, não há como confiar uma senha com segurança a um nó comum em um oráculo descentralizado. Mesmo técnicas como provas de conhecimento zero e computação multipartidária segura não ajudam. Qualquer que seja a criptografia usada, no final do dia, algum nó precisa enviar a senha de Alice para o Steam. Somente usando um TEE esse nó pode proteger adequadamente a senha.
O exemplo do Steam é apenas um dos muitos em que o TC pode realizar coisas que oráculos descentralizados sozinhos não podem com garantias de segurança razoáveis. Aqui estão alguns outros:
Consultas confidenciais: a consulta a um serviço oracle geralmente é sensível e deve ser ocultada, não apenas on-chain, mas do próprio serviço oracle.
Um bom exemplo de caso de uso, dado no jornal Town Crier, é um contrato de seguro de voo.
Suponha que Alice tenha adquirido uma apólice de seguro com Contrato de Seguro de Voo. O contrato então precisa saber qual voo ela está pegando e, posteriormente, se seu voo atrasou para determinar se ela deve ser paga.
Alice poderia enviar suas informações de voo diretamente para o contrato, mas então seus planos de viagem seriam on-chain e visíveis para o mundo inteiro. Ela poderia, alternativamente, ocultar suas informações de voo (companhia aérea, número e data) on-chain, criptografando-as sob a chave pública do serviço oracle. Mas essa informação precisa ser descriptografada em algum lugar. Em um sistema oracle descentralizado, ele seria descriptografado pelos nós oracle e, portanto, exposto a seus operadores.
Em contraste, o TC pode ocultar as informações de voo de Alice dentro de seu TEE, ocultando-as tanto on-chain quanto do operador do TC. A ideia é mostrada nesta figura conceitual:
Computação privada: Considere um contrato inteligente de empréstimo que precisa determinar se Alice é digna de crédito de acordo com alguma fórmula especial F que é de propriedade do criador do contrato. (Por exemplo, F pode combinar o saldo de sua conta bancária, a qualidade de sua rede de amigos nas mídias sociais e sua pontuação de crédito nas principais agências.) Existem potencialmente três tipos críticos de confidencialidade a serem aplicados neste exemplo: (1 ) As credenciais (por exemplo, senhas) que Alice usa para fazer login em sites com seus dados; (2) Os próprios dados relacionados ao crédito; e (3) A fórmula F, que o criador do contrato pode querer manter em segredo.
Idealmente, no final do dia, os operadores do nó oracle e o contrato devem ver apenas um bit de informação: se Alice é digna de crédito ou não de acordo com F. TC torna possível uma confidencialidade tão forte para processamento de dados sofisticados para este caso de uso e muitos outros.
O futuro papel do Town Crier na Chainlink
Embora evocativo, o termo “oráculo” impõe restrições infelizes à imaginação. Ele sugere um serviço que simplesmente responde a perguntas. Um oráculo pode e será muito mais: um conector geral, bidirecional e habilitado para computação entre sistemas on-chain e off-chain. Essa visão é essencialmente a visão da Chainlink para expandir a capacidade dos oráculos.
Usando oráculos nesse sentido expansivo, contratos inteligentes poderiam, por exemplo, monitorar e controlar dispositivos de internet das coisas. Eles podem usar o AIS GPS para rastrear remessas de alimentos, monitorar e analisar dados do sensor de temperatura para garantir a integridade da cadeia de frio e desbloquear contêineres quando o pagamento e outras condições forem atendidas. Para serem viáveis nas indústrias existentes, eles precisarão interagir com sistemas legados — uma meta abrangida pelo Grande Desafio IC3 “Migração de Som”. E, em muitos casos, eles precisarão fazer cálculos privados intensivos que são viáveis apenas off-chain.[2] Todas essas coisas se encaixam perfeitamente em uma arquitetura de oráculo estendida.
Se eu tivesse que fazer uma previsão, seria que a TC, com seus recursos apoiados por TEE, desempenhará um papel importante em tornar essa panóplia de possibilidades uma realidade na Chainlink.
Divulgação: Eu co-desenvolvi o TC em meu papel como membro do corpo docente da Cornell Tech, onde também sou co-diretor da Iniciativa para Criptomoedas e Contratos (IC3). Mais recentemente, tornei-me assessor técnico da Chainlink, função distinta das minhas atividades acadêmicas. Todas as opiniões expressas neste post do blog são minhas.
[1] Os TEEs também podem ser usados de forma que a própria Alice faça login em sua conta usando seu próprio TEE, o que produz um atestado à prova de violação do fato de que ela transferiu o jogo.
[2] Para exemplos de como implementar contratos inteligentes completos em TEEs, tornando-os privados e de alto desempenho, consulte Private Data Objects e Ekiden.
Apêndice
Os TEEs não estão quebrados?
Hoje, o Intel Software Guard eXtensions (SGX) é o único TEE amplamente disponível que possui as propriedades de integridade e confidencialidade que descrevi e também oferece suporte a outro recurso importante chamado atestado — prova remota de que um determinado programa está sendo executado em um enclave. O SGX está embutido no Skylake e nas CPUs Intel posteriores.
O SGX deve funcionar em um modelo adversário forte. Ele fornece proteções de hardware para código e dados até mesmo contra o sistema operacional da máquina na qual um programa está sendo executado. Também protege contra adulteração física e, portanto, contra o operador do host e/ou o possuidor físico. Mas o SGX vem com ressalvas importantes.
A Intel alertou, e os pesquisadores mostraram desde o início, que o SGX é vulnerável a ataques de canal lateral. A arquitetura SGX inerentemente vaza algumas informações sobre a execução do aplicativo (como falhas de página, que o próprio sistema operacional pode induzir). Os ataques mais recentes, principalmente o Foreshadow, quebraram gravemente a segurança do SGX — tanto sua integridade quanto sua confidencialidade.
Então o SGX é inútil? Dados os desafios de arquitetura que os ataques ao SGX surgiram, bons TEEs são irrealizáveis?
Não há absolutos em segurança. Não adianta perguntar se um sistema é seguro, apenas se é seguro contra uma determinada classe de adversários ou adversários. Vulnerabilidades críticas são um fato inescapável em toda infraestrutura de computação. Além disso, os ataques e as defesas evoluem. Novas arquiteturas TEE já estão no horizonte.
Portanto, perguntas importantes a serem feitas são: O que o TEE está protegendo? Quem está operando? E em que horizonte de tempo está sendo implantado? Um TEE hospedado por um provedor de serviços confiável e usado para proteger ativos na casa dos milhões, eu provavelmente me sentiria confiante. Um contrato inteligente de vários milhões de dólares cuja segurança depende de nenhum TEE em nenhum lugar do mundo ser quebrado é claramente um mau idéia.
Existem também modelos em que é possível limitar a exposição do TEE confiando, por exemplo, principalmente em sua integridade, em vez de suas propriedades de confidencialidade (mais vulneráveis).
TC e TEEs de forma mais geral podem ser vistos como uma alternativa ou complemento à descentralização. Eu acredito e apostei muito de minha pesquisa recente na hipótese de que os TEEs provarão ser não apenas valiosos, mas vitais para a infraestrutura prática de blockchain.