Máquina Oracle: contratos inteligentes e a ponte para o mundo real
No ecossistema blockchain, a Máquina Oracle desempenha um papel crucial. Ela atua como um sistema middleware, capaz de fornecer informações externas para contratos inteligentes na cadeia, ligando assim o mundo blockchain ao mundo real. A função central da Máquina Oracle é fornecer os dados externos necessários para os contratos inteligentes.
Por exemplo, suponha que criamos um contrato inteligente na rede Ethereum que precisa obter dados sobre o volume de transações de petróleo em um determinado dia. Como o contrato inteligente em si não pode acessar diretamente esses dados do mundo real fora da cadeia, é necessário recorrer à Máquina Oracle para isso. Nesse caso, o contrato inteligente registrará o volume de transações de petróleo da data desejada no log de eventos. Em seguida, um processo fora da cadeia será iniciado para monitorar e assinar esse log de eventos. Quando o pedido de transação for detectado, esse processo fará uma transação na cadeia, chamando os métodos relevantes do contrato, para enviar as informações do volume de transações de petróleo da data especificada para o contrato inteligente.
Chainlink: solução de Máquina Oracle mainstream
No atual mercado de blockchain, a Chainlink é o projeto de Máquina Oracle com a maior quota de mercado. Como um sistema de Máquina Oracle descentralizado, a Chainlink visa fornecer dados gerados no mundo real para a blockchain da forma mais segura possível. Com base nos princípios básicos da Máquina Oracle, a Chainlink construiu um ecossistema impulsionado por incentivos econômicos em torno do token LINK.
A ativação da Máquina Oracle Chainlink requer a transferência do token LINK. LINK é um contrato ERC677 na rede Ethereum, e as funções de Máquina Oracle baseadas no token LINK ERC677 pertencem ao modo de solicitação/resposta.
mecanismo transferAndCall do token ERC677
A Chainlink, ao projetar a estrutura da Máquina Oracle, considerou primeiro como os usuários pagariam as taxas de serviço à Máquina Oracle. Como o padrão de token ERC20 não atende à demanda de "serviço prestado após o pagamento", a Chainlink propôs o padrão ERC677, adequado para cenários de serviços da Máquina Oracle.
O ERC677 adiciona o método transferAndCall à base do padrão ERC20. Este método combina o pagamento e o pedido de serviço, atendendo às necessidades do cenário de negócios da Máquina Oracle. Quando um usuário realiza uma transferência transferAndCall, além da transferência ERC20, também será verificado se o endereço de recebimento é um endereço de contrato; se for, o método onTokenTransfer desse endereço será chamado.
Vale a pena notar que, antes de solicitar serviços da Máquina Oracle, os usuários precisam primeiro determinar se a Máquina Oracle é confiável, pois a Máquina Oracle precisa cobrar uma taxa antes de fornecer os serviços.
processo de solicitação de Máquina Oracle na cadeia
Quando os consumidores da Máquina Oracle utilizam o método transferAndCall para pagar taxas e solicitar serviços, o método onTokenTransfer no contrato da Máquina Oracle realiza uma série de verificações de segurança. Isso inclui verificar se a transferência é um token LINK, checar se o comprimento dos dados excede o limite, validar se os dados contêm o seletor de função correto, entre outros.
Após a verificação, o contrato de Máquina Oracle gerará um requestId único e armazenará as informações relacionadas ao pedido no mapeamento commitments. Por fim, o contrato emitirá um evento OracleRequest, que conterá os dados detalhados do pedido.
mecanismo de resposta de nós off-chain
Depois que o nó off-chain escuta o evento OracleRequest, ele analisará as informações específicas do pedido e obterá os dados necessários através de chamadas API. Em seguida, o nó chamará o método fulfillOracleRequest no contrato Oracle, enviando os dados para a blockchain por meio do envio de uma transação.
Este método realizará uma série de validações, incluindo verificar se o chamador é um nó autorizado, validar a validade do ID da solicitação, entre outras. Após a validação, o contrato registrará a quantidade de tokens que podem ser retirados e removerá o ID da solicitação do mapeamento de compromissos.
Por fim, o contrato chamará a função de callback do contrato solicitante, retornando os dados para o contrato consumidor. Para a Máquina Oracle de preços, isso geralmente envolve a atualização dos dados de preço atuais.
Uso Simplificado da Máquina Oracle de Preços
Para os desenvolvedores, se apenas precisarem usar os dados de preços de pares de moedas existentes, sem necessidade de especificar a URL da API, podem usar diretamente o Price Feed fornecido pelo Chainlink. Cada par de negociação tem um Price Feed independente ( também conhecido como Aggregator ), que é, na verdade, um contrato AggregatorProxy.
Estes contratos normalmente oferecem os seguintes principais métodos de consulta:
decimals(): retorna o número de casas decimais dos dados de preço
description(): Retornar o nome do par de negociação
version(): Identificação do tipo de Aggregator apontado pelo Proxy
getRoundData(_roundId): Obter dados históricos de preços com base no ID da rodada
latestRoundData(): obter os dados de preço mais recentes
Na maioria dos cenários de aplicação, o contrato pode apenas precisar ler o preço mais recente, ou seja, chamar o método latestRoundData(). O parâmetro answer retornado por este método é o preço mais recente.
É importante notar que a maioria das aplicações lê o preço do token em USD. Neste caso, a precisão dos dados de preço é geralmente padronizada para 8 casas decimais, o que simplifica o problema de tratamento de precisão entre diferentes tokens.
Esta página pode conter conteúdos de terceiros, que são fornecidos apenas para fins informativos (sem representações/garantias) e não devem ser considerados como uma aprovação dos seus pontos de vista pela Gate, nem como aconselhamento financeiro ou profissional. Consulte a Declaração de exoneração de responsabilidade para obter mais informações.
13 gostos
Recompensa
13
8
Partilhar
Comentar
0/400
Anon32942
· 22h atrás
Máquina Oracle este eu entendo! Acumulei um pouco de link
Ver originalResponder0
CrossChainBreather
· 23h atrás
Máquina Oracle salvou minha pequena Carteira
Ver originalResponder0
rugdoc.eth
· 07-12 12:36
Máquina Oracle também não entendeu bem.
Ver originalResponder0
HackerWhoCares
· 07-12 12:32
link é o futuro, ok
Ver originalResponder0
MetaverseHermit
· 07-12 12:23
linkbull哇bull哇
Ver originalResponder0
SchrodingerWallet
· 07-12 12:17
Máquina Oracle真香...Token稳了
Ver originalResponder0
GasWaster
· 07-12 12:14
Mãe, a Máquina Oracle de hoje à noite está realmente deliciosa.
Análise profunda do Chainlink: como a Máquina Oracle conecta Blockchain ao mundo real
Máquina Oracle: contratos inteligentes e a ponte para o mundo real
No ecossistema blockchain, a Máquina Oracle desempenha um papel crucial. Ela atua como um sistema middleware, capaz de fornecer informações externas para contratos inteligentes na cadeia, ligando assim o mundo blockchain ao mundo real. A função central da Máquina Oracle é fornecer os dados externos necessários para os contratos inteligentes.
Por exemplo, suponha que criamos um contrato inteligente na rede Ethereum que precisa obter dados sobre o volume de transações de petróleo em um determinado dia. Como o contrato inteligente em si não pode acessar diretamente esses dados do mundo real fora da cadeia, é necessário recorrer à Máquina Oracle para isso. Nesse caso, o contrato inteligente registrará o volume de transações de petróleo da data desejada no log de eventos. Em seguida, um processo fora da cadeia será iniciado para monitorar e assinar esse log de eventos. Quando o pedido de transação for detectado, esse processo fará uma transação na cadeia, chamando os métodos relevantes do contrato, para enviar as informações do volume de transações de petróleo da data especificada para o contrato inteligente.
Chainlink: solução de Máquina Oracle mainstream
No atual mercado de blockchain, a Chainlink é o projeto de Máquina Oracle com a maior quota de mercado. Como um sistema de Máquina Oracle descentralizado, a Chainlink visa fornecer dados gerados no mundo real para a blockchain da forma mais segura possível. Com base nos princípios básicos da Máquina Oracle, a Chainlink construiu um ecossistema impulsionado por incentivos econômicos em torno do token LINK.
A ativação da Máquina Oracle Chainlink requer a transferência do token LINK. LINK é um contrato ERC677 na rede Ethereum, e as funções de Máquina Oracle baseadas no token LINK ERC677 pertencem ao modo de solicitação/resposta.
mecanismo transferAndCall do token ERC677
A Chainlink, ao projetar a estrutura da Máquina Oracle, considerou primeiro como os usuários pagariam as taxas de serviço à Máquina Oracle. Como o padrão de token ERC20 não atende à demanda de "serviço prestado após o pagamento", a Chainlink propôs o padrão ERC677, adequado para cenários de serviços da Máquina Oracle.
O ERC677 adiciona o método transferAndCall à base do padrão ERC20. Este método combina o pagamento e o pedido de serviço, atendendo às necessidades do cenário de negócios da Máquina Oracle. Quando um usuário realiza uma transferência transferAndCall, além da transferência ERC20, também será verificado se o endereço de recebimento é um endereço de contrato; se for, o método onTokenTransfer desse endereço será chamado.
Vale a pena notar que, antes de solicitar serviços da Máquina Oracle, os usuários precisam primeiro determinar se a Máquina Oracle é confiável, pois a Máquina Oracle precisa cobrar uma taxa antes de fornecer os serviços.
processo de solicitação de Máquina Oracle na cadeia
Quando os consumidores da Máquina Oracle utilizam o método transferAndCall para pagar taxas e solicitar serviços, o método onTokenTransfer no contrato da Máquina Oracle realiza uma série de verificações de segurança. Isso inclui verificar se a transferência é um token LINK, checar se o comprimento dos dados excede o limite, validar se os dados contêm o seletor de função correto, entre outros.
Após a verificação, o contrato de Máquina Oracle gerará um requestId único e armazenará as informações relacionadas ao pedido no mapeamento commitments. Por fim, o contrato emitirá um evento OracleRequest, que conterá os dados detalhados do pedido.
mecanismo de resposta de nós off-chain
Depois que o nó off-chain escuta o evento OracleRequest, ele analisará as informações específicas do pedido e obterá os dados necessários através de chamadas API. Em seguida, o nó chamará o método fulfillOracleRequest no contrato Oracle, enviando os dados para a blockchain por meio do envio de uma transação.
Este método realizará uma série de validações, incluindo verificar se o chamador é um nó autorizado, validar a validade do ID da solicitação, entre outras. Após a validação, o contrato registrará a quantidade de tokens que podem ser retirados e removerá o ID da solicitação do mapeamento de compromissos.
Por fim, o contrato chamará a função de callback do contrato solicitante, retornando os dados para o contrato consumidor. Para a Máquina Oracle de preços, isso geralmente envolve a atualização dos dados de preço atuais.
Uso Simplificado da Máquina Oracle de Preços
Para os desenvolvedores, se apenas precisarem usar os dados de preços de pares de moedas existentes, sem necessidade de especificar a URL da API, podem usar diretamente o Price Feed fornecido pelo Chainlink. Cada par de negociação tem um Price Feed independente ( também conhecido como Aggregator ), que é, na verdade, um contrato AggregatorProxy.
Estes contratos normalmente oferecem os seguintes principais métodos de consulta:
Na maioria dos cenários de aplicação, o contrato pode apenas precisar ler o preço mais recente, ou seja, chamar o método latestRoundData(). O parâmetro answer retornado por este método é o preço mais recente.
É importante notar que a maioria das aplicações lê o preço do token em USD. Neste caso, a precisão dos dados de preço é geralmente padronizada para 8 casas decimais, o que simplifica o problema de tratamento de precisão entre diferentes tokens.