A rede descentralizada do Ethereum e seus contratos inteligentes estão completamente isolados do mundo real. Esse isolamento garante consistência, segurança e integridade. No entanto, isso também representa uma limitação: esses contratos inteligentes não podem acessar ou validar dados externos por conta própria. Então, e se a execução de um contrato depender do preço atual do ouro, das condições climáticas em uma determinada cidade ou dos resultados eleitorais?
Os oráculos preenchem essa lacuna. Como mensageiros, eles coletam, validam e entregam informações do mundo real para contratos inteligentes, expandindo assim o leque de possibilidades para aplicativos descentralizados.
Imagine a seguinte situação:
Solidity//Um contrato inteligente simulado segue o contrato de dados externos GoldPriceBet { Oracle OracleInstance;//Uma instância de Oracle instância de ouro em tempo real address bettor; uint256 wagerAmount; Função placeGoldPriceBet (uint PredictedPrice) externo pagável { bettor = msg.sender; wagerAmount = msg.value; // Aqui, normalmente invocaríamos o oráculo para obter o preço atual do ouro }}
Comentários de código:
OracleInstance;
Este é um espaço reservado para o nossoGoldPriceBet
contrato para interagir com o contrato do oráculo para obter o preço atual do ouro.A função placeGoldPriceBet permite aos utilizadores fazer apostas para prever o preço
de ouro. Idealmente, após fazer uma aposta, os oráculos seriam chamados para obter o preço do ouro em tempo real e determinar os resultados.De uma forma geral, os oráculos dividem-se em duas categorias principais:
Operados por uma única entidade ou organização, os oráculos centralizados são eficientes e podem obter dados rapidamente. No entanto, o seu calcanhar de Aquiles é a confiança. A execução de contratos inteligentes depende da integridade desta entidade centralizada. Dados manipulados ou erróneos podem levar a resultados inesperados.
Para mitigar as deficiências dos sistemas centralizados, surgiram oráculos descentralizados. Aqui, uma rede de vários oráculos fornece dados. Um contrato inteligente pode usar um método de agregação, como uma média ou mediana, para chegar a um valor. Ao descentralizar as fontes de dados, esses oráculos reduzem o risco associado à manipulação humana ou a pontos únicos de falha.
Solidity//Um contrato inteligente ilustrativo aproveitando um framework Oracle flexível contrato CommodityPriceFeed { Decentralized Oracle [] OracleArray; // Uma matriz de oráculos descentralizados função deriveAveragePrice () visualização externa retorna (uint256) { uint256 valorCumulativo = 0; para (uint i = 0; i < oracleArray.length; i++) { valorCumulativo += oracleArray[i].fetchPrice(); } return valorCumulativo/ oracleArray.length; }}
Comentários de código:
DecentralizedOracle [] OracleArray; este é um array que armazena múltiplas instâncias de oráculos descentralizados
.O
calcularPreçoMédio
A função calcula o preço médio obtido de todos os oráculos em OracleArray. Ele passa por cada um dos oráculos, obtém o preço e depois divide pelo número de oráculos para obter a média.As aplicações potenciais dos oráculos são muito amplas e diversas:
As plataformas financeiras exigem informações em tempo real sobre preços de ativos, taxas de juro ou outros indicadores económicos. As plataformas descentralizadas de derivativos usam oráculos para garantir que os contratos, como futuros e opções, sejam liquidados com base em dados de mercado precisos e invioláveis.
//Um exemplo de contrato inteligente para uma opção convenientecontrato DecentralizedOption { Oracle PriceOracle; uint256 strikePrice = 1000;//Valor de exemplo função exerciseOption () externo { uint256 currentPrice = priceOracle.fetchCurrentPrice (); if (currentPrice strikePrice>) { // Lógica para exercer a opção } }}
Comentários de código:
Opção Descentralizada
contrato interage com os oráculos para obter o preço atual.Os oráculos têm promovido o desenvolvimento de plataformas de seguros descentralizadas, fornecendo dados como padrões climáticos necessários para seguros agrícolas, condições de voo necessárias para seguros de viagem, ou atividade sísmica necessária para seguros contra terremotos.
Soliditycontract FlightDelayInsurance { Oracle FlightStatusOracle; function claimInsurance (string flightNumber) external { string status = flightstatusOracle.getFlightStatus (flightNumber); if (strcmp (status, " Delayed") == 0) { // Lógica para compensar o segurado } }}
Comentários de código:
Seguro de Atraso de Voo
contratos usam oráculos para obter o status do voo.Para soluções descentralizadas de cadeia de abastecimento, os oráculos podem fornecer dados verificáveis em todas as etapas, desde a aquisição de matérias-primas até a entrega do produto, para garantir a autenticidade do produto e a aquisição ética.
contrato de cadeia de fornecimento de rastreamento { Oráculo LocalizaçãoOráculo; endereço ProprietárioDoProduto; função verificarLocalDoProduto (endereço IDdoProduto) externo visualização retorna (string memória) { return locationOracle.fetchProductLocation(productID); }}
Comentários de código:
Jogos que integram eventos do mundo real, como os resultados de eventos desportivos ou movimentos do mercado de ações, podem ser construídos de forma descentralizada através da utilização de oráculos para obter os dados necessários.
Contrato SolidityContract SportsBet { Oracle SportsResultOracle; Função placeBet (string teamName) externo pagável { // Lógica para fazer uma aposta } função resolveBet () externo { string winningTeam = sportsResultOracle.getMatchResult(); // Lógica para recompensar os vencedores com base no resultado }}
Comentários de código:
SportsBet
permite aos utilizadores apostar nos resultados de eventos desportivos.A rede descentralizada do Ethereum e seus contratos inteligentes estão completamente isolados do mundo real. Esse isolamento garante consistência, segurança e integridade. No entanto, isso também representa uma limitação: esses contratos inteligentes não podem acessar ou validar dados externos por conta própria. Então, e se a execução de um contrato depender do preço atual do ouro, das condições climáticas em uma determinada cidade ou dos resultados eleitorais?
Os oráculos preenchem essa lacuna. Como mensageiros, eles coletam, validam e entregam informações do mundo real para contratos inteligentes, expandindo assim o leque de possibilidades para aplicativos descentralizados.
Imagine a seguinte situação:
Solidity//Um contrato inteligente simulado segue o contrato de dados externos GoldPriceBet { Oracle OracleInstance;//Uma instância de Oracle instância de ouro em tempo real address bettor; uint256 wagerAmount; Função placeGoldPriceBet (uint PredictedPrice) externo pagável { bettor = msg.sender; wagerAmount = msg.value; // Aqui, normalmente invocaríamos o oráculo para obter o preço atual do ouro }}
Comentários de código:
OracleInstance;
Este é um espaço reservado para o nossoGoldPriceBet
contrato para interagir com o contrato do oráculo para obter o preço atual do ouro.A função placeGoldPriceBet permite aos utilizadores fazer apostas para prever o preço
de ouro. Idealmente, após fazer uma aposta, os oráculos seriam chamados para obter o preço do ouro em tempo real e determinar os resultados.De uma forma geral, os oráculos dividem-se em duas categorias principais:
Operados por uma única entidade ou organização, os oráculos centralizados são eficientes e podem obter dados rapidamente. No entanto, o seu calcanhar de Aquiles é a confiança. A execução de contratos inteligentes depende da integridade desta entidade centralizada. Dados manipulados ou erróneos podem levar a resultados inesperados.
Para mitigar as deficiências dos sistemas centralizados, surgiram oráculos descentralizados. Aqui, uma rede de vários oráculos fornece dados. Um contrato inteligente pode usar um método de agregação, como uma média ou mediana, para chegar a um valor. Ao descentralizar as fontes de dados, esses oráculos reduzem o risco associado à manipulação humana ou a pontos únicos de falha.
Solidity//Um contrato inteligente ilustrativo aproveitando um framework Oracle flexível contrato CommodityPriceFeed { Decentralized Oracle [] OracleArray; // Uma matriz de oráculos descentralizados função deriveAveragePrice () visualização externa retorna (uint256) { uint256 valorCumulativo = 0; para (uint i = 0; i < oracleArray.length; i++) { valorCumulativo += oracleArray[i].fetchPrice(); } return valorCumulativo/ oracleArray.length; }}
Comentários de código:
DecentralizedOracle [] OracleArray; este é um array que armazena múltiplas instâncias de oráculos descentralizados
.O
calcularPreçoMédio
A função calcula o preço médio obtido de todos os oráculos em OracleArray. Ele passa por cada um dos oráculos, obtém o preço e depois divide pelo número de oráculos para obter a média.As aplicações potenciais dos oráculos são muito amplas e diversas:
As plataformas financeiras exigem informações em tempo real sobre preços de ativos, taxas de juro ou outros indicadores económicos. As plataformas descentralizadas de derivativos usam oráculos para garantir que os contratos, como futuros e opções, sejam liquidados com base em dados de mercado precisos e invioláveis.
//Um exemplo de contrato inteligente para uma opção convenientecontrato DecentralizedOption { Oracle PriceOracle; uint256 strikePrice = 1000;//Valor de exemplo função exerciseOption () externo { uint256 currentPrice = priceOracle.fetchCurrentPrice (); if (currentPrice strikePrice>) { // Lógica para exercer a opção } }}
Comentários de código:
Opção Descentralizada
contrato interage com os oráculos para obter o preço atual.Os oráculos têm promovido o desenvolvimento de plataformas de seguros descentralizadas, fornecendo dados como padrões climáticos necessários para seguros agrícolas, condições de voo necessárias para seguros de viagem, ou atividade sísmica necessária para seguros contra terremotos.
Soliditycontract FlightDelayInsurance { Oracle FlightStatusOracle; function claimInsurance (string flightNumber) external { string status = flightstatusOracle.getFlightStatus (flightNumber); if (strcmp (status, " Delayed") == 0) { // Lógica para compensar o segurado } }}
Comentários de código:
Seguro de Atraso de Voo
contratos usam oráculos para obter o status do voo.Para soluções descentralizadas de cadeia de abastecimento, os oráculos podem fornecer dados verificáveis em todas as etapas, desde a aquisição de matérias-primas até a entrega do produto, para garantir a autenticidade do produto e a aquisição ética.
contrato de cadeia de fornecimento de rastreamento { Oráculo LocalizaçãoOráculo; endereço ProprietárioDoProduto; função verificarLocalDoProduto (endereço IDdoProduto) externo visualização retorna (string memória) { return locationOracle.fetchProductLocation(productID); }}
Comentários de código:
Jogos que integram eventos do mundo real, como os resultados de eventos desportivos ou movimentos do mercado de ações, podem ser construídos de forma descentralizada através da utilização de oráculos para obter os dados necessários.
Contrato SolidityContract SportsBet { Oracle SportsResultOracle; Função placeBet (string teamName) externo pagável { // Lógica para fazer uma aposta } função resolveBet () externo { string winningTeam = sportsResultOracle.getMatchResult(); // Lógica para recompensar os vencedores com base no resultado }}
Comentários de código:
SportsBet
permite aos utilizadores apostar nos resultados de eventos desportivos.