7*24快訊如何使用C...

如何使用Chainlink Keepers 自動執行智能合約

智能合約不是自動執行的,這意味著它們需要外部擁有的賬戶、預言機或合約來啟動自己的功能。這給許多dApp 帶來了問題,這些dApp 需要定期執行智能合約(例如每24 小時),在滿足預定義條件時(例如,以太坊達到特定價格),或遵循計算(例如,貸款被計算為抵押不足)。

過去,開發人員會通過創建和維護自己的集中式腳本來觸發他們的智能合約,或者手動觸發它們來解決這個問題。然而,這有效地破壞了構建去中心化區塊鏈應用程序的目的,並且如果集中式腳本或手動觸發過程失敗,則可能導致停機。

在本教程中,您將學習如何使用Chainlink Keepers 以可靠和分散的方式自動執行您的智能合約。

為什麼每個智能合約開發人員都應該使用去中心化自動化

Chainlink Keepers 解鎖了一種新形式的去中心化智能合約自動化,使開發人員能夠改變他們構建和維護dApp 的方式。去中心化智能合約自動化有三個主要好處。

首先,必須消除運營中的任何集中故障點。 Chainlink Keepers 由Keeper 節點的去中心化網絡提供支持——這些節點目前通過Chainlink 數據饋送在DeFi 中保護數百億價值的超可靠節點——消除了集中的故障點。

其次,開發人員無需花費時間和資源來創建用於鏈上監控和合約執行的腳本,只需創建與Keeper 兼容的合約並進行註冊,即可插入Chainlink Keepers 優化的基礎設施。這節省了時間,減少了DevOps 的工作量,並允許開發人員專注於編寫更出色的代碼。

最後,通過使用Chainlink Keepers,開發人員可以增強其協議的安全性。開發人員在從中心化服務器發起交易時不再需要冒險暴露自己的私鑰——Chainlink Keeper Network 上的節點將簽署鏈上交易。

開始使用Chainlink Keepers

您可以分兩步使用Chainlink Keepers 自動化您的智能合約:

  1. 創建和部署一個 與Keeper 兼容的合約
  2. 將合同登記在 Chainlink Keepers 應用程序 創建維護

完成這些步驟後,Chainlink Keepers 將按照指定執行維護工作,無需任何進一步的輸入。

如果您是Solidity 新手,我們建議您在繼續之前先閱讀一些初學者教程。 本教程 特別全面和有用。 我們現在將向您展示如何使您的合約Keeper 兼容。如果您喜歡觀看有關該主題的視頻,請觀看我們的 視頻 教程。

如何編寫與Keeper 兼容的合約

與Keeper 兼容的合約具有 checkUpkeep 功能和一個 performUpkeep 與Chainlink Keepers 期望的所需輸入和輸出一起運行。為了幫助防止錯誤,我們將在指定檢查和執行功能應該做什麼之前使用與Keeper 兼容的接口。

導入Keeper 兼容接口

首先導入 KeeperCompatibleInterface 進入你的合同。

// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;

// KeeperCompatible.sol imports the functions from both ./KeeperBase.sol and
// ./interfaces/KeeperCompatibleInterface.sol

import "@chainlink/contracts/src/v0.8/KeeperCompatible.sol";

這個接口有兩個功能:

checkUpkeep 功能

Chainlink Keepers 使用去中心化網絡來監控 checkUpkeep 在每個區塊期間安全且經濟高效地在鏈下運行,然後在滿足預定義條件時啟動鏈上交易以執行智能合約功能。

function checkUpkeep(
  bytes calldata checkData
)
  external
  returns (
    bool upkeepNeeded,
    bytes memory performData
  );

checkUpkeep 函數需要一個 字節 參數命名 checkData 當你設置 註冊您的維護守護者應用. 此值是可選的,可在您的邏輯中用於確定是否 checkUpkeep 返回 true.

checkUpkeep 返回一個 布爾upkeepNeeded. 如果為真,這將調用 performUpkeep. 它也返回 performData 字節 Keeper 應該調用的格式(可選的附加數據) performUpkeep 如果需要維護。有關詳細信息,請參閱 開發者文檔.

performUpkeep 功能

如果你的鏈下模擬 checkUpkeep 確認滿足您的預定義條件(upkeepNeeded == truecheckUpkeep),Keeper 會將交易廣播到執行 performUpkeepperformData 作為輸入.

function performUpkeep(
  bytes calldata performData
) external;

輪換節點選擇過程可以防止節點之間的天然氣價格拍賣戰,並穩定自動化合同的成本。

展示Keepers 工作原理的動畫

這是來自Chainlink Keepers 用戶的示例合約片段 在哪裡 checkUpkeep 檢查Entropyfi 預測遊戲是否到期。

/**
* @dev chainlink keeper checkUpkeep function to constantly check whether we need function call
**/
function checkUpkeep(bytes calldata checkData) external override returns (bool upkeepNeeded, bytes memory performData) {
     PoolStatus currState = status.currState;
     uint256 lastUpdateTimestamp = status.lastUpdateTimestamp;
     uint256 durationOfGame = status.durationOfGame;
     uint256 durationOfBidding = status.durationOfBidding;

     if (currState == PoolStatus.Accepting && block.timestamp > lastUpdateTimestamp.add(durationOfBidding)) {
          upkeepNeeded = true;
     } else if (currState == PoolStatus.Locked && block.timestamp > lastUpdateTimestamp.add(durationOfGame)) {
          upkeepNeeded = true;
     } else {
          upkeepNeeded = false;
     }
     performData = checkData;
}

Chainlink Keepers 將不斷調用 checkUpkeep 函數,如果 upkeepNeeded 被評估為 true,然後節點將執行 performUpkeep 功能。

/**
* @dev once checkUpKeep been triggered, keeper will call performUpKeep
**/
function performUpkeep(bytes calldata performData) external override {
     PoolStatus currState = status.currState;
     uint256 lastUpdateTimestamp = status.lastUpdateTimestamp;
     uint256 durationOfGame = status.durationOfGame;
     uint256 durationOfBidding = status.durationOfBidding;

     if (currState == PoolStatus.Accepting && block.timestamp > lastUpdateTimestamp.add(durationOfBidding)) {
          startGame();
     }
     if (currState == PoolStatus.Locked && block.timestamp > lastUpdateTimestamp.add(durationOfGame)) {
          endGame();
     }
     performData;
}

從一些示例代碼開始

無論您是創建新合約還是已經部署了包含需要自動化功能的合約,都有指南可幫助您開始使用Chainlink Keepers 開發者文檔.

示例合同在這裡. 下面的例子代表一個簡單的反向合約。

// SPDX-License-Identifier: MIT
pragma solidity ^0.7.0;

// KeeperCompatible.sol imports the functions from both ./KeeperBase.sol and
// ./interfaces/KeeperCompatibleInterface.sol
import "@chainlink/contracts/src/v0.7/KeeperCompatible.sol";

contract Counter is KeeperCompatibleInterface {
    /**
    * Public counter variable
    */
    uint public counter;

    /**
    * Use an interval in seconds and a timestamp to slow execution of Upkeep
    */
    uint public immutable interval;
    uint public lastTimeStamp;

    constructor(uint updateInterval) {
      interval = updateInterval;
      lastTimeStamp = block.timestamp;

      counter = 0;
    }

    function checkUpkeep(bytes calldata /* checkData */) external override returns (bool upkeepNeeded, bytes memory /* performData */) {
        upkeepNeeded = (block.timestamp - lastTimeStamp) > interval;
        // We don't use the checkData in this example. The checkData is defined when the Upkeep was registered.
    }
    function performUpkeep(bytes calldata /* performData */) external override {
        //We highly recommend revalidating the upkeep in the performUpkeep function
        if ((block.timestamp - lastTimeStamp) > interval ) {
            lastTimeStamp = block.timestamp;
            counter = counter + 1;
        }
        // We don't use the performData in this example. The performData is generated by the Keeper's call to your checkUpkeep function
    }
}
顯示潛在Keepers 觸發器的圖表
智能合約自動化有很多可能的觸發器。

Chainlink Keepers 可以監控任何鏈上或鏈下條件的狀態,例如時間的流逝(例如,24 小時過去了嗎?)或計算(例如,貸款是否被計算為抵押不足?)。一旦滿足條件,Chainlink Keepers 就會在鏈上提交交易以觸發功能執行。

您還可以從Chainlink Keepers 實用程序合約開始,例如 EthBalanceMonitor 合同 要么 這些例子.

如何將您的合同註冊為網絡上的維護

擁有與Keeper 兼容的合約後,請前往 Chainlink Keepers 應用程序 並單擊“註冊新維護”。

註冊新的維護

有關如何註冊的詳細分步指南,請參閱 Chainlink 開發者文檔.

重要說明(對於非ETH 鏈): 您的維護必須由ERC-677 LINK 資助(不是 ERC-20,這在許多代幣橋中都很常見)。 使用PegSwap 來 使您的LINK 代幣與ERC-677 兼容.

註冊並獲得批准後,您可以添加額外資金並在Chainlink Keepers 應用程序上查看您的維護的所有詳細信息。

說明如何註冊定時維護的屏幕截圖

Keepers 儀表板的圖像

今天開始

現在您知道使用Chainlink Keepers 自動化您的智能合約是多麼容易,您可以開始集成Keepers 並解鎖 大量的用例,例如DEX 限價單、跨鏈NFT 鑄造、重新定基和重新平衡代幣等等。

通過以下方式了解更多信息 參觀 開發者文檔 並參加技術討論 不和諧. 如果您想安排電話以更深入地討論集成,請聯繫 這裡.

要了解更多信息,請訪問 鏈環訂閱 鏈環通訊,並關注Chainlink 推特, YouTube, 和 紅迪網.



Source Link

最受歡迎

繼續閱讀

長期持有者持有的比特幣(BTC)供應量達到最高水平

根據Glassnode 的估計,比特幣的長期持有者(LTH)目前擁有1452 萬枚BTC,創歷史新高,只剩下25% 留給短期持...

抓住Web3 遊戲的先發優勢:成功策略

Web3和區塊鏈技術的出現徹底改變了遊戲行業,為開發者和企業家提供了前所未有的機遇。 Web3 遊戲的去中心化性質為創新遊戲貨幣化模式、玩家所有權和社區參與打...

現在讀

$COOKIE, the Cookie3 Mark...

Tallinn, Estonia, March 26th, 2024...

長期持有者持有的比特幣(BTC)供應量達到最高水平...

根據Glassnode 的估計,比特幣的長期持有者(LTH)目前擁有1452 萬枚BTC,創歷史新高,只剩下25% 留給短期持有者和投機者。 儘管BTC 的價格在過去一個月中保持相對平穩,範圍在約29,000 美元至31,000 美元之間,但人們還是開始瘋狂囤積。 ...

Caldera 宣布與Espresso Syste...

Caldera 開發人員可以利用Espresso Sequence...

抓住Web3 遊戲的先發優勢:成功策略

Web3和區塊鏈技術的出現徹底改變了遊戲行業,為開發者和企業家提供了前所未有的機遇。 Web3 遊戲的去中心化性質為創新遊戲貨幣化模式、玩家所有權和社區參與打開了大門。對於那些尋求利用Web3 遊戲巨大潛力的人來說,確保先發優勢至關重要。 了解Web3 遊戲生態系統在深入研究Web3 遊戲之前,有...

Taapsee Pannu 推出NFT 平台,介紹...

企業家貢獻者表達的意見是他們自己的。 您正在閱讀《企業家印度》,這是企業家媒體的國際特許經營刊物。 女演員Taapsee Pannu 最近推出了“taapseeclub.com”,這是她自己的非同質代...

比特幣(BTC) 地址休眠超過11 年,轉移310...

經過11 年多的閒置之後,一個包含3100 萬美元BTC 的休眠比特幣地址最近突然活躍起來。 2023年7月22日,地址 轉入 將其全部餘額轉移到新地址。 早期BTC 地址復活 比特幣自2009 年以來就已經存在,因此存在多年來不活躍的休眠地址,其中包含大量BTC。這種加密貨幣的一些早期採用者能夠...

加密貨幣死了嗎?當今加密貨幣的現狀

您之前可能聽說過加密貨幣正在消亡(或比特幣已消亡)。在這篇文章中,我們將研究加密貨幣的狀態,並嘗試回答這個問題:加密貨幣現在已經死了嗎? 在我們開始之前,我們想澄清一下,本文指的是最廣泛意義上的“加密貨幣行業”; 在裡面 網絡3 感覺。該定義包括加密資產市場; 但它還包括其他非財務用例。 隨著近來加...

Chancer 可能成為體育和社交博彩領域的下一個...

加密貨幣 隨著企業財報季節的繼續,本週股市表現好壞參半。在Ne...

以太坊(ETH) 創下兩個月來CEX 流入最高紀錄...

過去一周,以太坊(ETH)流入中心化交易所(CEX)的資金量創下了過去兩個月來的最高水平。這些重大的資產變動表明ETH 的價格可能會下跌。 CoinGecko 數據顯示,第二大加密貨幣的價格一直在小幅下跌,過去一周價值下跌了2.5%。截至撰寫本文時,以太幣易手價格為1,892.65 美元,過去24...

新的DeFi 法案有“不可行的義務”

加密貨幣創新委員會表示,新的反洗錢法案沒有為DeFi 中的非法金融...

幣安大幅削減成本,瑞波幣為美國銀行和加密貨幣風險投...

美國證券交易委員會(SEC)對加密貨幣公司的打擊似乎嚴重影響了幣安的業務。據報導,在過去幾週內,該加密貨幣交易所解雇了1,000 多名員工,並削減了一些福利。 幣安表示,“當前的市場環境和監管環境”導致利潤下降,這表明可能正在進行更多削減。一位發言人告訴Cointelegraph,該公司將考慮縮減“...

Automata 雙週更新:第48 期| 通過自動...

迎接新的季度意味著設定我們的意圖並為團隊規劃下一步的行動。幕後醞釀的一切——合作、產品功能和營銷發布——很難抑制我們的興奮。我們一開始就在1RPC(2 個備受期待的第2 層主網)上添加了對Linea 和Base 的支持。科技載體更新頁腳以顯示界面版本平滑的用戶體驗 USDC CCTP 支持 關於仲裁...