第1课

以太坊預言機(Ethereum Oracles)介紹

歡迎來到這門課程。當你開始這次探索以太坊預言機領域的旅程時,你將會學習到區塊鏈網絡如何與外界進行交流。預言機就像是一座橋梁,它連接了智能合約的確定性和現實世界的不斷變化。本課程的目標是解讀預言機背後的覆雜性,讓它們變得更易於理解和接近。

預言機(Oracles)的意義何在?

以太坊的去中心化網絡和其智能合約與現實世界是完全隔絶的。這種隔絶確保了一緻性、安全性和完整性。然而,這也帶來了一個局限性:這些智能合約不能自行訪問或驗證外部數據。那麽,如果一個合約的執行依賴於當前的黃金價格、特定城市的天氣狀況,或者選舉結果呢?

預言機填補了這個鴻溝。作爲信使,它們收集、驗證併將現實世界的信息傳遞給智能合約,從而擴大了去中心化應用的可能性範圍。

試想以下的情況:

Solidity
// A mock smart contract requiring external data
contract GoldPriceBet {
    Oracle oracleInstance;  // An oracle instance providing real-time gold prices
    address bettor;
    uint256 wagerAmount;

    function placeGoldPriceBet(uint predictedPrice) external payable {
        bettor = msg.sender;
        wagerAmount = msg.value;

        // Here, we would typically invoke the oracle to fetch the current gold price
    }
}

代碼註釋:

  • Oracle oracleInstance; 這是一個占位符,用於我們的 GoldPriceBet 合約與之交互以穫取當前黃金價格的預言機(Oracle)合約。
  • placeGoldPriceBet 函數允許用戶下註預測黃金價格。理想情況下,在下註後,預言機將被調用以穫取實時的黃金價格併確定結果。

多樣化的預言機生態

大緻上來説,預言機分爲兩大類:

中心化預言機

由單一實體或組織運營,中心化預言機效率高,能快速穫取數據。然而,它們的緻命弱點是信任。智能合約的執行依賴於這個中心化實體的誠信。被操縱或錯誤的數據可能導緻意外的結果。

去中心化預言機

爲了減輕中心化繫統的缺點,去中心化預言機應運而生。在這裡,多個預言機組成的網絡提供數據。智能合約可能採用聚合方法,如平均值或中位數,以得出一個值。通過分散數據來源,這些預言機減小了與人爲操縱或單點故障相關的風險。

Solidity
// An illustrative smart contract leveraging a decentralized oracle framework
contract CommodityPriceFeed {
    DecentralizedOracle[] oracleArray;  // An array of decentralized oracles

    function deriveAveragePrice() external view returns (uint256) {
        uint256 cumulativeValue = 0;
        for (uint i = 0; i < oracleArray.length; i++) {
            cumulativeValue += oracleArray[i].fetchPrice();
        }
        return cumulativeValue / oracleArray.length;
    }
}

代碼註釋:

  • DecentralizedOracle[] oracleArray;這是一個數組,用於存儲多個去中心化預言機的實例。
  • deriveAveragePrice 函數計算從oracleArray中所有預言機穫取的平均價格。它遍歷每一個預言機,穫取價格,然後除以預言機的數量以得到平均值。

現實世界中的預言機應用

預言機的潛在應用非常廣泛和多元:

  • 金融衍生品:像期權這樣的金融工具需要訪問現實世界資産價格來執行合約。
  • 智能保險:想象一下,一個旅行保險智能合約能夠自動地在航班延誤時補償用戶,這些數據來自於一個航空預言機。
  • 供應鏈驗證:通過將外部數據輸入到區塊鏈中,可以實現産品從製造到客戶交付的實時跟蹤。
  • 去中心化游戲:基於區塊鏈的在線游戲可以利用預言機根據現實世界事件(如體育比賽結果)來影響游戲結果。
    閲讀更多關於預言機的文章: What Is an Oracle in Blockchain?

金融衍生品與交易平颱

金融平颱需要實時的資産價格、利率或其他經濟指標信息。去中心化衍生品平颱使用預言機來確保合約,如期貨和期權,基於準確、防篡改的市場數據進行結算。

Solidity
solidityCopy code
// An example smart contract for a decentralized option
contract DecentralizedOption {
    Oracle priceOracle;
    uint256 strikePrice = 1000;  // Example value

    function exerciseOption() external {
        uint256 currentPrice = priceOracle.fetchCurrentPrice();
        if (currentPrice > strikePrice) {
            // Logic to exercise the option
        }
    }
}

代碼註釋:

  • DecentralizedOption 合約與預言機交互以穫取當前價格。
  • 當用戶行使期權時,合約會根據預定義的執行價格檢查當前價格以確定結果。

智能保險

預言機促進了去中心化保險平颱的髮展,提供諸如農作物保險所需的天氣模式、旅行保險所需的航班狀態,或地震保險所需的地震活動等數據。

Solidity
contract FlightDelayInsurance {
    Oracle flightStatusOracle;

    function claimInsurance(string flightNumber) external {
        string status = flightStatusOracle.getFlightStatus(flightNumber);
        if (strcmp(status, "Delayed") == 0) {
            // Logic to compensate the insured
        }
    }
}

代碼註釋:

  • FlightDelayInsurance 合約使用預言機穫取航班狀態。
  • 根據航班的狀態,如果航班延誤,它會對被保險人進行賠償。

供應鏈驗證

對於去中心化的供應鏈解決方案,預言機可以在每個階段提供可驗證的數據,從原材料採購到産品交付,以確保産品的真實性和道德採購。

Solidity
contract SupplyChainTracker {
    Oracle locationOracle;
    address productOwner;

    function verifyProductLocation(address productID) external view returns (string memory) {
        return locationOracle.fetchProductLocation(productID);
    }
}

代碼註釋:

  • 此合約使用預言機在供應鏈的任何階段穫取産品的位置。
  • 它可以用於跟蹤産品併驗證其來源和路線。

去中心化游戲

集成現實世界事件(如體育賽事結果或股市走勢)的游戲可以通過使用預言機穫取必要的數據以去中心化的方式構建。

Solidity
contract SportsBet {
    Oracle sportsResultOracle;

    function placeBet(string teamName) external payable {
        // Logic for placing a bet
    }

    function resolveBet() external {
        string winningTeam = sportsResultOracle.getMatchResult();
        // Logic to reward winners based on the outcome
    }
}

代碼註釋:

  • SportsBet 允許用戶對體育賽事結果進行下註。
  • 然後它與預言機交互以穫取比賽結果,併相應地解決下註。
    現在我們已經初步探索了以太坊預言機的世界。在後續的課程中,我們將深入探討預言機與智能合約集成的覆雜性。如果內容讓你感覺很興奮,請繼續保持你的學習熱情。因爲去中心化數據的世界正在曏我們招手!
免责声明
* 投资有风险,入市须谨慎。本课程不作为投资理财建议。
* 本课程由入驻Gate Learn的作者创作,观点仅代表作者本人,绝不代表Gate Learn赞同其观点或证实其描述。
目录
第1课

以太坊預言機(Ethereum Oracles)介紹

歡迎來到這門課程。當你開始這次探索以太坊預言機領域的旅程時,你將會學習到區塊鏈網絡如何與外界進行交流。預言機就像是一座橋梁,它連接了智能合約的確定性和現實世界的不斷變化。本課程的目標是解讀預言機背後的覆雜性,讓它們變得更易於理解和接近。

預言機(Oracles)的意義何在?

以太坊的去中心化網絡和其智能合約與現實世界是完全隔絶的。這種隔絶確保了一緻性、安全性和完整性。然而,這也帶來了一個局限性:這些智能合約不能自行訪問或驗證外部數據。那麽,如果一個合約的執行依賴於當前的黃金價格、特定城市的天氣狀況,或者選舉結果呢?

預言機填補了這個鴻溝。作爲信使,它們收集、驗證併將現實世界的信息傳遞給智能合約,從而擴大了去中心化應用的可能性範圍。

試想以下的情況:

Solidity
// A mock smart contract requiring external data
contract GoldPriceBet {
    Oracle oracleInstance;  // An oracle instance providing real-time gold prices
    address bettor;
    uint256 wagerAmount;

    function placeGoldPriceBet(uint predictedPrice) external payable {
        bettor = msg.sender;
        wagerAmount = msg.value;

        // Here, we would typically invoke the oracle to fetch the current gold price
    }
}

代碼註釋:

  • Oracle oracleInstance; 這是一個占位符,用於我們的 GoldPriceBet 合約與之交互以穫取當前黃金價格的預言機(Oracle)合約。
  • placeGoldPriceBet 函數允許用戶下註預測黃金價格。理想情況下,在下註後,預言機將被調用以穫取實時的黃金價格併確定結果。

多樣化的預言機生態

大緻上來説,預言機分爲兩大類:

中心化預言機

由單一實體或組織運營,中心化預言機效率高,能快速穫取數據。然而,它們的緻命弱點是信任。智能合約的執行依賴於這個中心化實體的誠信。被操縱或錯誤的數據可能導緻意外的結果。

去中心化預言機

爲了減輕中心化繫統的缺點,去中心化預言機應運而生。在這裡,多個預言機組成的網絡提供數據。智能合約可能採用聚合方法,如平均值或中位數,以得出一個值。通過分散數據來源,這些預言機減小了與人爲操縱或單點故障相關的風險。

Solidity
// An illustrative smart contract leveraging a decentralized oracle framework
contract CommodityPriceFeed {
    DecentralizedOracle[] oracleArray;  // An array of decentralized oracles

    function deriveAveragePrice() external view returns (uint256) {
        uint256 cumulativeValue = 0;
        for (uint i = 0; i < oracleArray.length; i++) {
            cumulativeValue += oracleArray[i].fetchPrice();
        }
        return cumulativeValue / oracleArray.length;
    }
}

代碼註釋:

  • DecentralizedOracle[] oracleArray;這是一個數組,用於存儲多個去中心化預言機的實例。
  • deriveAveragePrice 函數計算從oracleArray中所有預言機穫取的平均價格。它遍歷每一個預言機,穫取價格,然後除以預言機的數量以得到平均值。

現實世界中的預言機應用

預言機的潛在應用非常廣泛和多元:

  • 金融衍生品:像期權這樣的金融工具需要訪問現實世界資産價格來執行合約。
  • 智能保險:想象一下,一個旅行保險智能合約能夠自動地在航班延誤時補償用戶,這些數據來自於一個航空預言機。
  • 供應鏈驗證:通過將外部數據輸入到區塊鏈中,可以實現産品從製造到客戶交付的實時跟蹤。
  • 去中心化游戲:基於區塊鏈的在線游戲可以利用預言機根據現實世界事件(如體育比賽結果)來影響游戲結果。
    閲讀更多關於預言機的文章: What Is an Oracle in Blockchain?

金融衍生品與交易平颱

金融平颱需要實時的資産價格、利率或其他經濟指標信息。去中心化衍生品平颱使用預言機來確保合約,如期貨和期權,基於準確、防篡改的市場數據進行結算。

Solidity
solidityCopy code
// An example smart contract for a decentralized option
contract DecentralizedOption {
    Oracle priceOracle;
    uint256 strikePrice = 1000;  // Example value

    function exerciseOption() external {
        uint256 currentPrice = priceOracle.fetchCurrentPrice();
        if (currentPrice > strikePrice) {
            // Logic to exercise the option
        }
    }
}

代碼註釋:

  • DecentralizedOption 合約與預言機交互以穫取當前價格。
  • 當用戶行使期權時,合約會根據預定義的執行價格檢查當前價格以確定結果。

智能保險

預言機促進了去中心化保險平颱的髮展,提供諸如農作物保險所需的天氣模式、旅行保險所需的航班狀態,或地震保險所需的地震活動等數據。

Solidity
contract FlightDelayInsurance {
    Oracle flightStatusOracle;

    function claimInsurance(string flightNumber) external {
        string status = flightStatusOracle.getFlightStatus(flightNumber);
        if (strcmp(status, "Delayed") == 0) {
            // Logic to compensate the insured
        }
    }
}

代碼註釋:

  • FlightDelayInsurance 合約使用預言機穫取航班狀態。
  • 根據航班的狀態,如果航班延誤,它會對被保險人進行賠償。

供應鏈驗證

對於去中心化的供應鏈解決方案,預言機可以在每個階段提供可驗證的數據,從原材料採購到産品交付,以確保産品的真實性和道德採購。

Solidity
contract SupplyChainTracker {
    Oracle locationOracle;
    address productOwner;

    function verifyProductLocation(address productID) external view returns (string memory) {
        return locationOracle.fetchProductLocation(productID);
    }
}

代碼註釋:

  • 此合約使用預言機在供應鏈的任何階段穫取産品的位置。
  • 它可以用於跟蹤産品併驗證其來源和路線。

去中心化游戲

集成現實世界事件(如體育賽事結果或股市走勢)的游戲可以通過使用預言機穫取必要的數據以去中心化的方式構建。

Solidity
contract SportsBet {
    Oracle sportsResultOracle;

    function placeBet(string teamName) external payable {
        // Logic for placing a bet
    }

    function resolveBet() external {
        string winningTeam = sportsResultOracle.getMatchResult();
        // Logic to reward winners based on the outcome
    }
}

代碼註釋:

  • SportsBet 允許用戶對體育賽事結果進行下註。
  • 然後它與預言機交互以穫取比賽結果,併相應地解決下註。
    現在我們已經初步探索了以太坊預言機的世界。在後續的課程中,我們將深入探討預言機與智能合約集成的覆雜性。如果內容讓你感覺很興奮,請繼續保持你的學習熱情。因爲去中心化數據的世界正在曏我們招手!
免责声明
* 投资有风险,入市须谨慎。本课程不作为投资理财建议。
* 本课程由入驻Gate Learn的作者创作,观点仅代表作者本人,绝不代表Gate Learn赞同其观点或证实其描述。