O que Consiste o Problema de Oracle em Blockchain?
Este artigo é uma tradução de https://blog.chain.link/what-is-the-blockchain-oracle-problem/ escrito por ChainLink e traduzido por Gaofeng Yin.
O problema de oracle em blockchain é a barreira mais importante a ser ultrapassado para os smart contracts em redes como Ethereum terem adoção em massa através de uma ampla variedade de mercados e casos de uso.
Smart contracts a correr em blockchains oferecem imensa potencial para redefinir a maneira de como entidades independentes se envolvem em acordos contratuais e trocas de valor. A economia a operar separadamente de smart contract é uma economia digital não blockchain muito mais vasto, feito de todos os diapositivos ligados à internet que computam onlines. O subproduto de infraestrutura digital é um reservatório de dados e APIs em constante expansão, que fornecem informações sobre como o mundo funciona; Por exemplo, resultados de pesquisa na Internet sobre tópicos de discussão populares na sociedade ou sensores IoT a mostrar padrões de tráfego comuns.
Smart contracts baseados em blockchain, dados tradicionais, e economias de API tem imensa potencial para se juntarem e criar smart contracts híbridos, o que forma assim, a arquitetura de automatização orientado a dado, mas a questão é como esses dois sistemas se ligam? Isto abrange o ponto crucial de “problema de oracle” e vai ser o foco deste artigo.
O artigo está dividido em cinco secções chaves:
- O problema de oracle
- O trabalho de um oracle
- Porquê blockchains como Ehtereum não oferecem uma solução oracle nativa
- O risco de segurança de oracle centralizada
- Chainlink, o modelo para uma rede descentralizada de oracle seguro e confiável
O Problema de Oracle
O problema de oracle gira a volta de uma limitação muito simples — blockchains não conseguem extrair ou enviar dados para qualquer sistema externo como funcionalidade integrada. Sendo assim, blockchains são redes isoladas, similar a um computador sem ligação a Internet. O isolamento de blockchain é precisamente a propriedade que faz com que seja extremamente seguro e fiável, como a rede só precisa de formar consenso sobre um conjunto muito básico de questões binárias(verdadeiro/falso) ao usar dados armazenados dentro do seu registo. Essas questões incluem: o portador da chave pública assinou a transação com a sua chave privada correspondente, o endereço público tem fundos suficientes para cobrir a sua transação, e o tipo de transação é válido dentro do smart contract específico? O foco específico do consenso de blockchain é por que os smart contracts são chamados de determinísticos — eles são executados exatamente como são escritos com um grau de certeza muito maior do que os sistemas tradicionais.
Contudo, para que os smart contracts alcançam mais de 90% dos seus casos de uso potenciais, eles devem se ligar ao mundo exterior. Por exemplo, smart contracts financeiros precisam de informações de mercado para determinar liquidações, smart contracts de seguro precisam de IoT e dados da Web para tomar decisões sobre pagamento de apólice, contratos de financiamento comercial precisam de documentos comerciais e assinaturas digitais para saber quando desencadear pagamentos, e muitos smart contracts necessitam estabelecer liquidação em moeda fiduciária em rede de pagamento tradicional. Nenhuma dessas informações é intrinsecamente gerada dentro do blockchain, nem esses serviços são diretamente acessíveis.
Estabelecer a ligação entre o blockchain(on-chain) e o mundo exterior(off-chain) requer um elemento adicional e separada de infraestrutura conhecida como oracle.
O Que é Oracle de Blockchain?
O oracle de blockchain é um middleware seguro que facilita a comunicação entre blockchains e qualquer sistema off-chain, o que inclui operador de dados, APIs da Web, back-ends corporativos, provedores de cloud, dispositivos IoT, assinaturas digitais, sistemas de pagamento, outras blockchains, e muito mais. Os oracles assumem várias funções chave:
- Verificação - monitoriza a rede blockchain para verificar qualquer futuro utilização ou solicitaçãos de smart contract para dados off-chain.
- Extração - busca dados de um ou múltiplos sistemas externos, como APIs off-chain alojados em servidores da Web de terceiros.
- Formatação - formata dados recolhidos por APIs externas num formato legível de blockchain(entrada) e/ou torna os dados de blockchain compatíveis com uma API externa(saída).
- Validação - gera uma prova criptográfica certificando o desempenho de um serviço oracle ao usar qualquer combinação de assinatura de dados, assinatura de transação blockchain, assinaturas TLS, atestados TEE(Trusted ExecutionEnvironment) ou zero-knowledge proofs.
- Computação - realiza algum tipo de computação off-chain segura para o smart contract, tais como calcular mediana de vários submissão de oracle ou gerar um número aleatório verificável para aplicações de jogo.
- Transmissão - assina e transmite uma transação na blockchain para enviar dados e qualquer prova on-chain correspondente para consumo pelo smart contract.
- Emissão(opcional) - envia dados para um sistema externo após a execução de um smart contract, tais como retransmitir instruções de pagamento para uma rede de pagamento tradicional ou desencadear ações de sistema ciber-físico.
A execução das funções acima requer que o sistema oracle opere dentro(on-chain) e fora(off-chain) do blockchain simultaneamente. O componente on-chain é para estabelecer uma ligação de blockchain(para atender solicitações), transmitir dados, enviar provas, extrair dados de blockchain e potencialmente proceder computação no blockchain. O componente off-chain é para processar solicitações, recolher e formatar dados externos, enviar dados de blockchain para sistemas externos e efetuar computação off-chain para maior escalabilidade, privacidade, segurança e vários outros aprimoramentos de smart contract.
Porque o Blockchain Não Consegue Resolver o Problema de Oracle
Blockchains são altamente seguros e confiáveis devido a certas princípios de design específicos. Conforme descrito em cima, blockchain só precisa de formar consenso em questões binárias muito básicas usando dados já armazenados no seu próprio registo. O registo do blockchain é considerado verdadeiro porque tira partido da descentralização para validar de forma redundante todos os dados usando todos os nodes(computadores) da rede. Ele também usa a descentralização para manter a integridade do seu algoritmo de consenso(PoW, PoS, etc.), ao garantir que as regras de protocolo só mudem quando uma parte substancial da rede aprova(por exemplo, 51%). Essas propriedades fornecem fortes garantias de determinismo computacional e de armazenamento de dados, especialmente em redes altamente descentralizadas e Sybil-resistant.
No entanto, as blockchains não são adequadas para responder à pergunta que se aprofundam no domínio da subjetividade ou exigem dados externos que não são facilmente acessíveis a todos os nodes da rede. Por exemplo, a simples questão de ‘Qual é o preço de mercado do Bitcoin?’ ou ‘Qual é o clima em Nova Iorque?’ podem obter uma ampla variedade de respostas diferentes que podem variar dependendo do fonte do dado que usam e quando solicitem os dados da fonte. A pergunta então se torna: qual é a resposta correta e como ela pode ser considerada como verdadeira?
A introdução de subjetividade na camada base do blockchain abre a caixa de Pandora para uma série de preocupações de segurança, confiabilidade e governação, colocando em risco a própria proposição de valor que os blockchains pretendem fornecer.
Uma grande preocupação é como garantir que os dados externos inseridos no blockchain sejam de alta qualidade? Mesmo uma solicitação básica de dados para preço do Bitcoin é bastante difícil, porque simplesmente olhar para um site ou exchange pode não ser tão preciso ou confiável quanto a uma subscrição de API paga para um agregador de dados profissional que tem décadas de experiência em filtragem de dados e criação de cobertura de mercado e é incentivada financeiramente para manter serviços de alta qualidade. É extremamente difícil administrar e impor a qualidade dos dados off-chain enviados por nodes de blockchain, pois qualquer pessoa pode correr um node de forma pseudoanónimo e enviar respostas, mesmo que não esteja disposto a comprar uma subscrição de uma API off-chain de alta qualidade. Se a qualidade dos dados fosse coerciva, o blockchain teria um limite superior inferior na descentralização, pois os custos de execução de nós aumentariam para cada novo trabalho de oracle na rede, o que afeta a segurança de todas as outras aplicações a executar no blockchain específico.
Outra grande preocupação é a escalabilidade. Sempre que uma nova fonte de dados precisa ser adicionada à rede ou um método de agregação de dados existente de ser ajustado, requer uma coordenação massiva de governação social para fazer com que todos os nodes da rede concordem e atualizem os seus softwares. A adição de incumbência de governação leva a um maior atrito, desenvolvimento mais lento dos principais funcionalidades de blockchain (como PoS e sharding) e grandes limites na inovação do oracle. Por fim, quanto mais complexidade houver na camada base do blockchain, mais superfície de ataque e risco para todas as aplicações a correr nele. Mesmo as aplicações que não usam oracle ou não estão envolvidos com solicitações de dados serão expostos ao fogo e potencialmente serão interrompidos se toda a cadeia parar devido a um problema de oracle.
É por essas razões e muitos outros que os oracles não são integrados à camada base de nenhum grande blockchain, mas em vez disso operam como redes separadas. Isso garante que os blockchains tenham uma superfície de ataque menor e preserva o seu determinismo ao manter um foco singular no consenso, enquanto os oracles têm flexibilidade necessária para gerar determinismo a partir de um mundo off-chain complexo e subjetivo sem criar dependências e limitações que coloquem em risco todas outras aplicações.
Oracles Centralizadas Introduzem Um Risco Grande
Todo o objetivo de smart contract é alcançar o determinismo por meio da aplicação tecnológica dos termos do contrato, em oposição à execução probabilística efetuada pela aplicação humana. Para atingir essa finalidade, o blockchain não pode ter um único ponto de falha — uma função que se deve estender ao oracle para que o determinismo dos smart contracts sejam mantidos de ponta a ponta. Porque ter um contrato multimilionário a atuar como um smart contract em um blockchain totalmente descentralizada se um único oracle centralizado pode controlar as entradas que determinam o resultado do contrato?
Quer seja a própria equipa de desenvolvimento a correr o oracle ou um serviço centralizado de terceiros, ambos os cenários dão poder excessivo a uma única entidade para influenciar o contrato por meio do controlo do oracle. Embora o operador de oracle centralizado possa assegurar a operar com as melhores intenções, ele ainda está sujeito a todos os problemas centralizados comuns de hoje, como downtime, ataques DDOS, hacks e incompetências acidentais, todos os quais que colocam os fundos dos utilizadores em risco.
Mesmo as entidades centralizadas mais estimadas podem ser pressionados quando o valor do contrato escala, abrindo-as a subornos, intimidações e pressões regulatórias, que necessita apenas que uma pessoa envolvida na operação seja desonesta. Este modelo não é escalável e não se encaixa na ideia de que a infraestrutura descentralizada ser um fator-chave de automação segura e confiável.
Para superar essas lacunas, os oracles precisam criar as mesmas garantias de segurança e confiabilidade de um blockchain, embora de maneira diferente, devido às suas muitas diferenças.
Chainlink: o Modelo de Oracle Seguro e Confiável
A fim de trazer determinismo para a camada de oracle, Chainlink desenvolveu uma rede de redes de oracles descentralizados(DONs), com cada DON a abranger uma combinação de várias técnicas de segurança necessárias para atender a um caso de uso específico.
- Código Aberto - ser uma tecnologia de código aberto permite que a comunidade blockchain mais ampla verifique independentemente a segurança e a confiabilidade do código-fonte e das funções do Chainlink, além de contribuir para a sua melhoria.
- Adaptadores Externos - permite que os nodes armazenem com segurança chave de API e administram logins de contas possibilita que smart contracs extraem dados de qualquer sistema externo e API, incluindo aqueles protegidos por password/credencial.
- Descentralização - empregar a descentralização no nível do node e da fonte de dados garante que nenhum node ou fonte de dados seja um único ponto de falha, o que proporciona aos utilizadores fortes garantias de que os dados estarão disponíveis, entregues no prazo e resistentes à manipulação.
- Assinatura de Dados - fazer com que os nós assinem criptograficamente os dados que enviem aos smart contracts permite que os utilizadores identifiquem quais nodes enviaram dados e examinem o seu histórico passado para determinar a qualidade do desempenho.
- Contratos de Serviço - uso de acordos vinculativos on-chain entre o smart contract solicitante e o operador de oracle que descrevem os termos do serviço oracle e as penalidades/recompensas pelo desempenho proporciona aos utilizadores garantias viáveis sobre a qualidade das suas solicitações de dados off-chain.
- Sistemas de Reputação - alimentar dados on-chain assinados em sistemas de reputação permite que os utilizadores tomem decisões informadas sobre quais nodes são bons e quais não são baseados numa variedade de métricas, como trabalhos executados com sucesso, lista de clientes atendidos, tempo médio de respostas, etc.
- Serviços de Certificação - permite que os nodes aumentem a sua segurança e confiabilidade obtendo qualquer número de certificações pode fornecer aos utilizadores garantias adicionas como KYC, localização geográfica do node, revisões de segurança da sua infraestrutura e muito mais.
- Criptografia e Hardware Avançados - oferece flexibilidade para criptografia mais avançada (como zero-knowledge proof) e hardware (como ambientes de execução confiáveis) permite que os oracles executam funções adicionais, como provar a origem dos dados (por exemplo, dados específicos vieram de um servidor específico), manter o dado confidencial, executar computação off-chain e efetivamente mais.
Esses são apenas algumas das muitas funcionalidades disponibilizadas pelo Chainlink que faculta aos utilizadores todo um conjunto de garantias para assegurar um mecanismo oracle altamente seguro e confiável. Ao construir esses elementos chave no Chainlink, os smat contracts em qualquer blockchain agora podem acessar dados off-chain sem sacrificar o seu valor central de determinismo, concedendo uma base sólida para construir o futuro da automação orientada por dados.
Segue-nos em Twitter para ser notificado sobre os próximos lançamentos de artigos, junta-se ao nosso Telegram ou Reddit para notícias gerais sobre Chainlink ou participe na discussão técnica no nosso Discord.