diff --git a/_src/keepers-configuration.ts b/_src/keepers-configuration.ts index e58359ae1a4..ffbcd656e45 100644 --- a/_src/keepers-configuration.ts +++ b/_src/keepers-configuration.ts @@ -3,11 +3,23 @@ declare var Web3: any; document.addEventListener('DOMContentLoaded', () => { const contracts: { [key: string]: any } = { - ethereum: new new Web3('https://eth-mainnet.alchemyapi.io/v2/-_DxqjsKfWsDxYbz-KDGe_BH5OLlZT0-').eth.Contract( + ethereum: new new Web3('https://rpc.ankr.com/eth').eth.Contract( abi, '0x7b3EC232b08BD7b4b3305BE0C044D907B2DF960B' ), - polygon: new new Web3('https://polygon-mainnet.g.alchemy.com/v2/vn3HPO5qapvV6DMx4Wp6izedOAIKuDxN').eth.Contract( + polygon: new new Web3('https://rpc.ankr.com/polygon').eth.Contract( + abi, + '0x7b3EC232b08BD7b4b3305BE0C044D907B2DF960B' + ), + bnbchain: new new Web3('https://rpc.ankr.com/bsc').eth.Contract( + abi, + '0x7b3EC232b08BD7b4b3305BE0C044D907B2DF960B' + ), + avalanche: new new Web3('https://rpc.ankr.com/avalanche').eth.Contract( + abi, + '0x409CF388DaB66275dA3e44005D182c12EeAa12A0' + ), + fantom: new new Web3('https://rpc.ankr.com/fantom').eth.Contract( abi, '0x7b3EC232b08BD7b4b3305BE0C044D907B2DF960B' ), diff --git a/docs/chainlink-keepers/overview.md b/docs/chainlink-keepers/overview.md index 0465ff40551..cd923930ff2 100644 --- a/docs/chainlink-keepers/overview.md +++ b/docs/chainlink-keepers/overview.md @@ -19,7 +19,7 @@ There are three main actors in the ecosystem: - **Keepers registry**: The contract that you use to [register](../register-upkeep/) and manage **upkeeps**. - **Keepers**: Nodes in the Keepers Network that service registered and funded upkeeps in the Keepers registry. Keepers use the same Node Operators as Chainlink Data Feeds. -The following diagram describes the architecture of the Keeper network. The Chainlink Keepers Registry governs the actors on the network and compensates Keepers for performing successful upkeeps. Developers can register their Upkeeps, and Node Operators can register as Keepers. +The following diagram describes the architecture of the Keeper network. The Chainlink Keepers Registry governs the actors on the network and compensates keepers for performing successful upkeeps. Developers can register their upkeeps, and Node Operators can register as Keepers. ![keeper-overview](/images/contract-devs/keeper/keeper-overview.png) @@ -29,17 +29,17 @@ Keepers use these contracts. You can find them in the [Chainlink repository](htt + `KeeperCompatible.sol`[(link)](https://github.com/smartcontractkit/chainlink/blob/develop/contracts/src/v0.8/KeeperCompatible.sol): Imports the following contracts: + `KeeperBase.sol`[(link)](https://github.com/smartcontractkit/chainlink/blob/develop/contracts/src/v0.8/KeeperBase.sol): Enables the use of the `cannotExecute` modifier. Import this contract if you need for this modifier. See the [`checkUpkeep` function](/docs/chainlink-keepers/compatible-contracts#checkupkeep-function) for details. - + `KeeperCompatibleInterface.sol`[(link)](https://github.com/smartcontractkit/chainlink/blob/develop/contracts/src/v0.8/interfaces/KeeperCompatibleInterface.sol): The interface to be implemented in order to make your contract Keepers-compatible. Import this contract for type safety. -+ `KeeperRegistry.sol`[(link)](https://github.com/smartcontractkit/chainlink/blob/develop/contracts/src/v0.8/KeeperRegistry.sol): The registry contract that tracks all registered Upkeeps and the Keepers that can perform them. -+ `KeeperRegistrar.sol`[(link)](https://github.com/smartcontractkit/chainlink/blob/develop/contracts/src/v0.8/KeeperRegistrar.sol): The Registrar contract coverns the registration of new Upkeeps on the associated `KeeperRegistry` contract. Users who want to register Upkeeps by directly calling the deployed contract have to call the Transfer-and-Call function on the respective ERC-677 LINK contract configured on the Registrar and ensure they pass the correct encoded function call and inputs. + + `KeeperCompatibleInterface.sol`[(link)](https://github.com/smartcontractkit/chainlink/blob/develop/contracts/src/v0.8/interfaces/KeeperCompatibleInterface.sol): The interface to be implemented in order to make your contract keepers-compatible. Import this contract for type safety. ++ `KeeperRegistry.sol`[(link)](https://github.com/smartcontractkit/chainlink/blob/develop/contracts/src/v0.8/KeeperRegistry.sol): The registry contract that tracks all registered upkeeps and the keepers that can perform them. ++ `KeeperRegistrar.sol`[(link)](https://github.com/smartcontractkit/chainlink/blob/develop/contracts/src/v0.8/KeeperRegistrar.sol): The Registrar contract governs the registration of new upkeeps on the associated `KeeperRegistry` contract. Users who want to register Upkeeps by directly calling the deployed contract have to call the Transfer-and-Call function on the respective ERC-677 LINK contract configured on the Registrar and ensure they pass the correct encoded function call and inputs. ## How it works -Keepers follow a turn-taking algorithm to service upkeeps. A turn is a number of blocks and you can find the block count per turn for your network in the [configuration](../supported-networks/#configurations) section. During a turn a Upkeeps on the registry are randomly split, ordered into buckets, and assigned to a keeper to service them. Even if a Keeper goes down, the network has built-in redundancy and your Upkeep will be performed by the next keeper in line. +Keepers follow a turn-taking algorithm to service upkeeps. A turn is a number of blocks and you can find the block count per turn for your network in the [configuration](../supported-networks/#configurations) section. During a turn, upkeeps on the registry are randomly split, ordered into buckets, and assigned to a keeper to service them. Even if a keeper goes down, the network has built-in redundancy and upkeeps are performed by the next keeper in line. During every block, the keeper reviews all of the upkeeps in its bucket to determine which upkeeps are eligible. This check is done off-chain using a geth simulation. The keeper checks both the `checkUpkeep` and `performUpkeep` conditions independently using simulation. If both are true (eligible), and the upkeep is funded, the keeper proceeds to execute the transaction on-chain. -While only one Keeper monitors an upkeep at any point during a turn, an upkeep can have multiple on-chain transaction executions per turn. This is accomplished with a buddy-system. After a transaction is confirmed, the next keeper in the line monitors the upkeep. After a new transaction is confirmed, the previous keeper steps in again to monitor the upkeep until the end of the turn or until another transaction confirmation is complete. This creates a system that is secure and highly available. If a node becomes faulty and executes a transaction that is not eligible, the next node does not execute a transaction, which breaks the process. +While only one keeper monitors an upkeep at any point during a turn, an upkeep can have multiple on-chain transaction executions per turn. This is accomplished with a buddy-system. After a transaction is confirmed, the next keeper in the line monitors the upkeep. After a new transaction is confirmed, the previous keeper steps in again to monitor the upkeep until the end of the turn or until another transaction confirmation is complete. This creates a system that is secure and highly available. If a node becomes faulty and executes a transaction that is not eligible, the next node does not execute a transaction, which breaks the process. Keepers use the same transaction manager mechanism built and used by Chainlink Data Feeds. This creates a hyper-reliable automation service that can execute and confirm transactions even during intense gas spikes or on chains with significant reorgs. This mechanism has been in use in Chainlink Labs for multiple years, is battle hardened, and the team continuously improves on it. @@ -49,4 +49,4 @@ Internally, Chainlink Keepers also uses its own monitoring and alerting mechanis ## Supported Networks and Cost -For a list of blockchains that is supported by Chainlink Keepers, please review the [supported networks page](../supported-networks). To learn more about the cost of using Chainlink Keepers, please review the [Keepers economics](../keeper-economics) page. +For a list of blockchains that is supported by Chainlink Keepers, please review the [supported networks page](../supported-networks). To learn more about the cost of using Chainlink Keepers, see the [Keepers economics](../keeper-economics) page. diff --git a/docs/chainlink-keepers/supported-networks.html b/docs/chainlink-keepers/supported-networks.html index e3110820d27..f9c30585412 100644 --- a/docs/chainlink-keepers/supported-networks.html +++ b/docs/chainlink-keepers/supported-networks.html @@ -10,30 +10,33 @@ } networks: { - 'Ethereum Mainnet': 'ethereum', - 'Polygon Mainnet': 'polygon', + 'Ethereum': 'ethereum', + 'Polygon': 'polygon', + 'BNB Chain': 'bnbchain', + 'Avalanche': 'avalanche', + 'Fantom': 'fantom', } --- {% markdown %} -Chainlink Keepers are currently available on the following networks: +Chainlink Keepers are available on the following networks: -- Ethereum: +- [Ethereum](#ethereum): - Mainnet - Goerli testnet - Rinkeby testnet - Kovan testnet -- Polygon (Matic): +- [Polygon (Matic)](#polygon): - Mainnet - Mumbai testnet -- BNB Chain: +- [BNB Chain](#bnb-chain): - Mainnet - Testnet -- Avalanche: +- [Avalanche](#avalanche): - Mainnet - Fuji testnet -- Fantom: +- [Fantom](#fantom): - Mainnet - Testnet @@ -53,13 +56,8 @@ - **Gas Ceiling Multiplier** (`gasCeilingMultiplier`): Establishes a ceiling for the maximum price based on the on-chain fast gas feed. ## Configurations -These configurations may change as we grow our users and the network as a whole. -- [Ethereum Mainnet](#ethereum-mainnet) -- [Polygon Mainnet](#polygon-mainnet) -- [BNB Chain](#bnb-chain) -- [Avalanche](#avalanche-mainnet) -- [Fantom Mainnet](#fantom-mainnet) +These configurations can change. {% endmarkdown %} @@ -79,42 +77,8 @@ {% endmarkdown %} {% endfor %} -{% markdown %} -### BNB Chain - -| Item | Value | -| --------------------- | ----------------------------------------------------------------------------------------------------------------------- | -| Payment Premium % | 30 | -| Block Count Per Turn | 10 | -| Check Gas Limit | 6,500,000 | -| Call Gas Limit | 5,000,000 | -| Gas Ceiling Multiplier| 3 | - -{% endmarkdown %} - -{% markdown %} -### Avalanche Mainnet - -| Item | Value | -| --------------------- | ----------------------------------------------------------------------------------------------------------------------- | -| Payment Premium % | 40 | -| Block Count Per Turn | 10 | -| Check Gas Limit | 6,500,000 | -| Call Gas Limit | 5,000,000 | -| Gas Ceiling Multiplier| 2 | - -{% endmarkdown %} {% markdown %} -### Fantom Mainnet - -| Item | Value | -| --------------------- | ----------------------------------------------------------------------------------------------------------------------- | -| Payment Premium % | 50 | -| Block Count Per Turn | 200 | -| Check Gas Limit | 6,500,000 | -| Call Gas Limit | 5,000,000 | -| Gas Ceiling Multiplier| 2 | ## Registry and Registrar Addresses