Máquina Oracle: Análise da Tecnologia utilizando Chainlink como exemplo
Máquina Oracle é uma infraestrutura fundamental no campo da blockchain, cuja principal função é fornecer dados externos para contratos inteligentes. Como uma ponte que conecta contratos inteligentes ao mundo real, a Máquina Oracle desempenha um papel indispensável no ecossistema blockchain.
Por exemplo, se implementarmos um contrato inteligente no Ethereum que precisa obter o volume de transações de petróleo em uma data específica, como o contrato em si não pode acessar diretamente dados fora da cadeia, é necessário recorrer à Máquina Oracle. O processo específico é: o contrato inteligente registra as informações necessárias no log de eventos, um processo fora da cadeia escuta e responde a esse pedido, e depois, através de uma transação na cadeia, os dados necessários são transmitidos ao contrato inteligente.
Entre os muitos projetos de Máquina Oracle, o Chainlink destaca-se pelas suas características de descentralização e quota de mercado. O Chainlink construiu um mecanismo de incentivo econômico através do token LINK, formando um ecossistema de ciclo virtuoso. A sua funcionalidade central baseia-se no modelo de pedido/resposta do token LINK.
A Chainlink adotou o padrão ERC677, que é uma extensão do ERC20, adicionando o método transferAndCall. Esse método combina o pagamento e o pedido de serviço em um só, atendendo melhor às necessidades de negócios da Máquina Oracle. Quando um usuário chama transferAndCall para realizar uma transferência, além da transferência regular do ERC20, também será acionado o método onTokenTransfer do contrato receptor.
No contrato oracle do Chainlink, o método onTokenTransfer realiza primeiramente uma série de verificações de segurança, incluindo a validação do token transferido, o comprimento dos dados e o selector da função, entre outros. Após a verificação, o contrato gera um requestId único, define um tempo de expiração e dispara o evento OracleRequest. Este evento contém os detalhes do pedido, como o formato dos dados, o endereço de callback, entre outros.
Após o nó fora da cadeia ouvir o evento OracleRequest, ele irá analisar as informações do pedido, obter os dados necessários através da API e, em seguida, chamar o método fulfillOracleRequest do contrato oracle para submeter os dados na cadeia. Este método irá realizar uma série de validações e, em seguida, chamar a função de callback do contrato do solicitante, completando todo o processo de serviço da Máquina Oracle.
Para os desenvolvedores, a Chainlink também oferece um serviço de oráculo de preços mais conveniente. Cada par de negociação tem um Price Feed correspondente (ou seja, AggregatorProxy), e os desenvolvedores podem chamar diretamente esses contratos para obter os dados de preços mais recentes, sem a necessidade de especificar a URL da fonte de dados. Na maioria dos casos de uso, basta chamar o método latestRoundData() para obter o preço mais recente.
É importante notar que os pares de negociação cotados em USD têm geralmente uma precisão de preço padronizada em 8 casas decimais, o que simplifica o processo de tratamento dos preços de diferentes tokens.
This page may contain third-party content, which is provided for information purposes only (not representations/warranties) and should not be considered as an endorsement of its views by Gate, nor as financial or professional advice. See Disclaimer for details.
Análise da tecnologia de Máquina Oracle Chainlink: a ponte que conecta contratos inteligentes ao mundo real
Máquina Oracle: Análise da Tecnologia utilizando Chainlink como exemplo
Máquina Oracle é uma infraestrutura fundamental no campo da blockchain, cuja principal função é fornecer dados externos para contratos inteligentes. Como uma ponte que conecta contratos inteligentes ao mundo real, a Máquina Oracle desempenha um papel indispensável no ecossistema blockchain.
Por exemplo, se implementarmos um contrato inteligente no Ethereum que precisa obter o volume de transações de petróleo em uma data específica, como o contrato em si não pode acessar diretamente dados fora da cadeia, é necessário recorrer à Máquina Oracle. O processo específico é: o contrato inteligente registra as informações necessárias no log de eventos, um processo fora da cadeia escuta e responde a esse pedido, e depois, através de uma transação na cadeia, os dados necessários são transmitidos ao contrato inteligente.
Entre os muitos projetos de Máquina Oracle, o Chainlink destaca-se pelas suas características de descentralização e quota de mercado. O Chainlink construiu um mecanismo de incentivo econômico através do token LINK, formando um ecossistema de ciclo virtuoso. A sua funcionalidade central baseia-se no modelo de pedido/resposta do token LINK.
A Chainlink adotou o padrão ERC677, que é uma extensão do ERC20, adicionando o método transferAndCall. Esse método combina o pagamento e o pedido de serviço em um só, atendendo melhor às necessidades de negócios da Máquina Oracle. Quando um usuário chama transferAndCall para realizar uma transferência, além da transferência regular do ERC20, também será acionado o método onTokenTransfer do contrato receptor.
No contrato oracle do Chainlink, o método onTokenTransfer realiza primeiramente uma série de verificações de segurança, incluindo a validação do token transferido, o comprimento dos dados e o selector da função, entre outros. Após a verificação, o contrato gera um requestId único, define um tempo de expiração e dispara o evento OracleRequest. Este evento contém os detalhes do pedido, como o formato dos dados, o endereço de callback, entre outros.
Após o nó fora da cadeia ouvir o evento OracleRequest, ele irá analisar as informações do pedido, obter os dados necessários através da API e, em seguida, chamar o método fulfillOracleRequest do contrato oracle para submeter os dados na cadeia. Este método irá realizar uma série de validações e, em seguida, chamar a função de callback do contrato do solicitante, completando todo o processo de serviço da Máquina Oracle.
Para os desenvolvedores, a Chainlink também oferece um serviço de oráculo de preços mais conveniente. Cada par de negociação tem um Price Feed correspondente (ou seja, AggregatorProxy), e os desenvolvedores podem chamar diretamente esses contratos para obter os dados de preços mais recentes, sem a necessidade de especificar a URL da fonte de dados. Na maioria dos casos de uso, basta chamar o método latestRoundData() para obter o preço mais recente.
É importante notar que os pares de negociação cotados em USD têm geralmente uma precisão de preço padronizada em 8 casas decimais, o que simplifica o processo de tratamento dos preços de diferentes tokens.