Contract 0x4F3AF332A30973106Fe146Af0B4220bBBeA748eC 9
Contract Overview
Balance:
0 ETH
ETH Value:
$0.00
My Name Tag:
Not Available
[ Download CSV Export ]
Latest 25 internal transaction
[ Download CSV Export ]
This contract may be a proxy contract. Click on More Options and select Is this a proxy? to confirm and enable the "Read as Proxy" & "Write as Proxy" tabs.
Contract Name:
KeeperRegistrar
Compiler Version
v0.8.6+commit.11564f7e
Optimization Enabled:
Yes with 200 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity Standard Json-Input format)
// SPDX-License-Identifier: MIT pragma solidity 0.8.6; import "./interfaces/LinkTokenInterface.sol"; import "./interfaces/KeeperRegistryInterface1_2.sol"; import "./interfaces/TypeAndVersionInterface.sol"; import "./ConfirmedOwner.sol"; import "./interfaces/ERC677ReceiverInterface.sol"; /** * @notice Contract to accept requests for upkeep registrations * @dev There are 2 registration workflows in this contract * Flow 1. auto approve OFF / manual registration - UI calls `register` function on this contract, this contract owner at a later time then manually * calls `approve` to register upkeep and emit events to inform UI and others interested. * Flow 2. auto approve ON / real time registration - UI calls `register` function as before, which calls the `registerUpkeep` function directly on * keeper registry and then emits approved event to finish the flow automatically without manual intervention. * The idea is to have same interface(functions,events) for UI or anyone using this contract irrespective of auto approve being enabled or not. * they can just listen to `RegistrationRequested` & `RegistrationApproved` events and know the status on registrations. */ contract KeeperRegistrar is TypeAndVersionInterface, ConfirmedOwner, ERC677ReceiverInterface { /** * DISABLED: No auto approvals, all new upkeeps should be approved manually. * ENABLED_SENDER_ALLOWLIST: Auto approvals for allowed senders subject to max allowed. Manual for rest. * ENABLED_ALL: Auto approvals for all new upkeeps subject to max allowed. */ enum AutoApproveType { DISABLED, ENABLED_SENDER_ALLOWLIST, ENABLED_ALL } bytes4 private constant REGISTER_REQUEST_SELECTOR = this.register.selector; mapping(bytes32 => PendingRequest) private s_pendingRequests; LinkTokenInterface public immutable LINK; /** * @notice versions: * - KeeperRegistrar 1.1.0: Add functionality for sender allowlist in auto approve * : Remove rate limit and add max allowed for auto approve * - KeeperRegistrar 1.0.0: initial release */ string public constant override typeAndVersion = "KeeperRegistrar 1.1.0"; struct Config { AutoApproveType autoApproveConfigType; uint32 autoApproveMaxAllowed; uint32 approvedCount; KeeperRegistryBaseInterface keeperRegistry; uint96 minLINKJuels; } struct PendingRequest { address admin; uint96 balance; } Config private s_config; // Only applicable if s_config.configType is ENABLED_SENDER_ALLOWLIST mapping(address => bool) private s_autoApproveAllowedSenders; event RegistrationRequested( bytes32 indexed hash, string name, bytes encryptedEmail, address indexed upkeepContract, uint32 gasLimit, address adminAddress, bytes checkData, uint96 amount, uint8 indexed source ); event RegistrationApproved(bytes32 indexed hash, string displayName, uint256 indexed upkeepId); event RegistrationRejected(bytes32 indexed hash); event AutoApproveAllowedSenderSet(address indexed senderAddress, bool allowed); event ConfigChanged( AutoApproveType autoApproveConfigType, uint32 autoApproveMaxAllowed, address keeperRegistry, uint96 minLINKJuels ); error InvalidAdminAddress(); error RequestNotFound(); error HashMismatch(); error OnlyAdminOrOwner(); error InsufficientPayment(); error RegistrationRequestFailed(); error OnlyLink(); error AmountMismatch(); error SenderMismatch(); error FunctionNotPermitted(); error LinkTransferFailed(address to); error InvalidDataLength(); /* * @param LINKAddress Address of Link token * @param autoApproveConfigType setting for auto-approve registrations * @param autoApproveMaxAllowed max number of registrations that can be auto approved * @param keeperRegistry keeper registry address * @param minLINKJuels minimum LINK that new registrations should fund their upkeep with */ constructor( address LINKAddress, AutoApproveType autoApproveConfigType, uint16 autoApproveMaxAllowed, address keeperRegistry, uint96 minLINKJuels ) ConfirmedOwner(msg.sender) { LINK = LinkTokenInterface(LINKAddress); setRegistrationConfig(autoApproveConfigType, autoApproveMaxAllowed, keeperRegistry, minLINKJuels); } //EXTERNAL /** * @notice register can only be called through transferAndCall on LINK contract * @param name string of the upkeep to be registered * @param encryptedEmail email address of upkeep contact * @param upkeepContract address to perform upkeep on * @param gasLimit amount of gas to provide the target contract when performing upkeep * @param adminAddress address to cancel upkeep and withdraw remaining funds * @param checkData data passed to the contract when checking for upkeep * @param amount quantity of LINK upkeep is funded with (specified in Juels) * @param source application sending this request * @param sender address of the sender making the request */ function register( string memory name, bytes calldata encryptedEmail, address upkeepContract, uint32 gasLimit, address adminAddress, bytes calldata checkData, uint96 amount, uint8 source, address sender ) external onlyLINK { if (adminAddress == address(0)) { revert InvalidAdminAddress(); } bytes32 hash = keccak256(abi.encode(upkeepContract, gasLimit, adminAddress, checkData)); emit RegistrationRequested( hash, name, encryptedEmail, upkeepContract, gasLimit, adminAddress, checkData, amount, source ); Config memory config = s_config; if (_shouldAutoApprove(config, sender)) { s_config.approvedCount = config.approvedCount + 1; _approve(name, upkeepContract, gasLimit, adminAddress, checkData, amount, hash); } else { uint96 newBalance = s_pendingRequests[hash].balance + amount; s_pendingRequests[hash] = PendingRequest({admin: adminAddress, balance: newBalance}); } } /** * @dev register upkeep on KeeperRegistry contract and emit RegistrationApproved event */ function approve( string memory name, address upkeepContract, uint32 gasLimit, address adminAddress, bytes calldata checkData, bytes32 hash ) external onlyOwner { PendingRequest memory request = s_pendingRequests[hash]; if (request.admin == address(0)) { revert RequestNotFound(); } bytes32 expectedHash = keccak256(abi.encode(upkeepContract, gasLimit, adminAddress, checkData)); if (hash != expectedHash) { revert HashMismatch(); } delete s_pendingRequests[hash]; _approve(name, upkeepContract, gasLimit, adminAddress, checkData, request.balance, hash); } /** * @notice cancel will remove a registration request and return the refunds to the msg.sender * @param hash the request hash */ function cancel(bytes32 hash) external { PendingRequest memory request = s_pendingRequests[hash]; if (!(msg.sender == request.admin || msg.sender == owner())) { revert OnlyAdminOrOwner(); } if (request.admin == address(0)) { revert RequestNotFound(); } delete s_pendingRequests[hash]; bool success = LINK.transfer(msg.sender, request.balance); if (!success) { revert LinkTransferFailed(msg.sender); } emit RegistrationRejected(hash); } /** * @notice owner calls this function to set if registration requests should be sent directly to the Keeper Registry * @param autoApproveConfigType setting for auto-approve registrations * note: autoApproveAllowedSenders list persists across config changes irrespective of type * @param autoApproveMaxAllowed max number of registrations that can be auto approved * @param keeperRegistry new keeper registry address * @param minLINKJuels minimum LINK that new registrations should fund their upkeep with */ function setRegistrationConfig( AutoApproveType autoApproveConfigType, uint16 autoApproveMaxAllowed, address keeperRegistry, uint96 minLINKJuels ) public onlyOwner { uint32 approvedCount = s_config.approvedCount; s_config = Config({ autoApproveConfigType: autoApproveConfigType, autoApproveMaxAllowed: autoApproveMaxAllowed, approvedCount: approvedCount, minLINKJuels: minLINKJuels, keeperRegistry: KeeperRegistryBaseInterface(keeperRegistry) }); emit ConfigChanged(autoApproveConfigType, autoApproveMaxAllowed, keeperRegistry, minLINKJuels); } /** * @notice owner calls this function to set allowlist status for senderAddress * @param senderAddress senderAddress to set the allowlist status for * @param allowed true if senderAddress needs to be added to allowlist, false if needs to be removed */ function setAutoApproveAllowedSender(address senderAddress, bool allowed) external onlyOwner { s_autoApproveAllowedSenders[senderAddress] = allowed; emit AutoApproveAllowedSenderSet(senderAddress, allowed); } /** * @notice read the allowlist status of senderAddress * @param senderAddress address to read the allowlist status for */ function getAutoApproveAllowedSender(address senderAddress) external view returns (bool) { return s_autoApproveAllowedSenders[senderAddress]; } /** * @notice read the current registration configuration */ function getRegistrationConfig() external view returns ( AutoApproveType autoApproveConfigType, uint32 autoApproveMaxAllowed, uint32 approvedCount, address keeperRegistry, uint256 minLINKJuels ) { Config memory config = s_config; return ( config.autoApproveConfigType, config.autoApproveMaxAllowed, config.approvedCount, address(config.keeperRegistry), config.minLINKJuels ); } /** * @notice gets the admin address and the current balance of a registration request */ function getPendingRequest(bytes32 hash) external view returns (address, uint96) { PendingRequest memory request = s_pendingRequests[hash]; return (request.admin, request.balance); } /** * @notice Called when LINK is sent to the contract via `transferAndCall` * @param sender Address of the sender transfering LINK * @param amount Amount of LINK sent (specified in Juels) * @param data Payload of the transaction */ function onTokenTransfer( address sender, uint256 amount, bytes calldata data ) external override onlyLINK permittedFunctionsForLINK(data) isActualAmount(amount, data) isActualSender(sender, data) { if (data.length < 292) revert InvalidDataLength(); if (amount < s_config.minLINKJuels) { revert InsufficientPayment(); } (bool success, ) = address(this).delegatecall(data); // calls register if (!success) { revert RegistrationRequestFailed(); } } //PRIVATE /** * @dev register upkeep on KeeperRegistry contract and emit RegistrationApproved event */ function _approve( string memory name, address upkeepContract, uint32 gasLimit, address adminAddress, bytes calldata checkData, uint96 amount, bytes32 hash ) private { KeeperRegistryBaseInterface keeperRegistry = s_config.keeperRegistry; // register upkeep uint256 upkeepId = keeperRegistry.registerUpkeep(upkeepContract, gasLimit, adminAddress, checkData); // fund upkeep bool success = LINK.transferAndCall(address(keeperRegistry), amount, abi.encode(upkeepId)); if (!success) { revert LinkTransferFailed(address(keeperRegistry)); } emit RegistrationApproved(hash, name, upkeepId); } /** * @dev verify sender allowlist if needed and check max limit */ function _shouldAutoApprove(Config memory config, address sender) private returns (bool) { if (config.autoApproveConfigType == AutoApproveType.DISABLED) { return false; } if ( config.autoApproveConfigType == AutoApproveType.ENABLED_SENDER_ALLOWLIST && (!s_autoApproveAllowedSenders[sender]) ) { return false; } if (config.approvedCount < config.autoApproveMaxAllowed) { return true; } return false; } //MODIFIERS /** * @dev Reverts if not sent from the LINK token */ modifier onlyLINK() { if (msg.sender != address(LINK)) { revert OnlyLink(); } _; } /** * @dev Reverts if the given data does not begin with the `register` function selector * @param _data The data payload of the request */ modifier permittedFunctionsForLINK(bytes memory _data) { bytes4 funcSelector; assembly { // solhint-disable-next-line avoid-low-level-calls funcSelector := mload(add(_data, 32)) // First 32 bytes contain length of data } if (funcSelector != REGISTER_REQUEST_SELECTOR) { revert FunctionNotPermitted(); } _; } /** * @dev Reverts if the actual amount passed does not match the expected amount * @param expected amount that should match the actual amount * @param data bytes */ modifier isActualAmount(uint256 expected, bytes memory data) { uint256 actual; assembly { actual := mload(add(data, 228)) } if (expected != actual) { revert AmountMismatch(); } _; } /** * @dev Reverts if the actual sender address does not match the expected sender address * @param expected address that should match the actual sender address * @param data bytes */ modifier isActualSender(address expected, bytes memory data) { address actual; assembly { actual := mload(add(data, 292)) } if (expected != actual) { revert SenderMismatch(); } _; } }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.0; interface LinkTokenInterface { function allowance(address owner, address spender) external view returns (uint256 remaining); function approve(address spender, uint256 value) external returns (bool success); function balanceOf(address owner) external view returns (uint256 balance); function decimals() external view returns (uint8 decimalPlaces); function decreaseApproval(address spender, uint256 addedValue) external returns (bool success); function increaseApproval(address spender, uint256 subtractedValue) external; function name() external view returns (string memory tokenName); function symbol() external view returns (string memory tokenSymbol); function totalSupply() external view returns (uint256 totalTokensIssued); function transfer(address to, uint256 value) external returns (bool success); function transferAndCall( address to, uint256 value, bytes calldata data ) external returns (bool success); function transferFrom( address from, address to, uint256 value ) external returns (bool success); }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.0; /** * @notice config of the registry * @dev only used in params and return values * @member paymentPremiumPPB payment premium rate oracles receive on top of * being reimbursed for gas, measured in parts per billion * @member flatFeeMicroLink flat fee paid to oracles for performing upkeeps, * priced in MicroLink; can be used in conjunction with or independently of * paymentPremiumPPB * @member blockCountPerTurn number of blocks each oracle has during their turn to * perform upkeep before it will be the next keeper's turn to submit * @member checkGasLimit gas limit when checking for upkeep * @member stalenessSeconds number of seconds that is allowed for feed data to * be stale before switching to the fallback pricing * @member gasCeilingMultiplier multiplier to apply to the fast gas feed price * when calculating the payment ceiling for keepers * @member minUpkeepSpend minimum LINK that an upkeep must spend before cancelling * @member maxPerformGas max executeGas allowed for an upkeep on this registry * @member fallbackGasPrice gas price used if the gas price feed is stale * @member fallbackLinkPrice LINK price used if the LINK price feed is stale * @member transcoder address of the transcoder contract * @member registrar address of the registrar contract */ struct Config { uint32 paymentPremiumPPB; uint32 flatFeeMicroLink; // min 0.000001 LINK, max 4294 LINK uint24 blockCountPerTurn; uint32 checkGasLimit; uint24 stalenessSeconds; uint16 gasCeilingMultiplier; uint96 minUpkeepSpend; uint32 maxPerformGas; uint256 fallbackGasPrice; uint256 fallbackLinkPrice; address transcoder; address registrar; } /** * @notice state of the registry * @dev only used in params and return values * @member nonce used for ID generation * @member ownerLinkBalance withdrawable balance of LINK by contract owner * @member expectedLinkBalance the expected balance of LINK of the registry * @member numUpkeeps total number of upkeeps on the registry */ struct State { uint32 nonce; uint96 ownerLinkBalance; uint256 expectedLinkBalance; uint256 numUpkeeps; } interface KeeperRegistryBaseInterface { function registerUpkeep( address target, uint32 gasLimit, address admin, bytes calldata checkData ) external returns (uint256 id); function performUpkeep(uint256 id, bytes calldata performData) external returns (bool success); function cancelUpkeep(uint256 id) external; function addFunds(uint256 id, uint96 amount) external; function setUpkeepGasLimit(uint256 id, uint32 gasLimit) external; function getUpkeep(uint256 id) external view returns ( address target, uint32 executeGas, bytes memory checkData, uint96 balance, address lastKeeper, address admin, uint64 maxValidBlocknumber, uint96 amountSpent ); function getActiveUpkeepIDs(uint256 startIndex, uint256 maxCount) external view returns (uint256[] memory); function getKeeperInfo(address query) external view returns ( address payee, bool active, uint96 balance ); function getState() external view returns ( State memory, Config memory, address[] memory ); } /** * @dev The view methods are not actually marked as view in the implementation * but we want them to be easily queried off-chain. Solidity will not compile * if we actually inherit from this interface, so we document it here. */ interface KeeperRegistryInterface is KeeperRegistryBaseInterface { function checkUpkeep(uint256 upkeepId, address from) external view returns ( bytes memory performData, uint256 maxLinkPayment, uint256 gasLimit, int256 gasWei, int256 linkEth ); } interface KeeperRegistryExecutableInterface is KeeperRegistryBaseInterface { function checkUpkeep(uint256 upkeepId, address from) external returns ( bytes memory performData, uint256 maxLinkPayment, uint256 gasLimit, uint256 adjustedGasWei, uint256 linkEth ); }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.0; abstract contract TypeAndVersionInterface { function typeAndVersion() external pure virtual returns (string memory); }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.0; import "./ConfirmedOwnerWithProposal.sol"; /** * @title The ConfirmedOwner contract * @notice A contract with helpers for basic contract ownership. */ contract ConfirmedOwner is ConfirmedOwnerWithProposal { constructor(address newOwner) ConfirmedOwnerWithProposal(newOwner, address(0)) {} }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.6; interface ERC677ReceiverInterface { function onTokenTransfer( address sender, uint256 amount, bytes calldata data ) external; }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.0; import "./interfaces/OwnableInterface.sol"; /** * @title The ConfirmedOwner contract * @notice A contract with helpers for basic contract ownership. */ contract ConfirmedOwnerWithProposal is OwnableInterface { address private s_owner; address private s_pendingOwner; event OwnershipTransferRequested(address indexed from, address indexed to); event OwnershipTransferred(address indexed from, address indexed to); constructor(address newOwner, address pendingOwner) { require(newOwner != address(0), "Cannot set owner to zero"); s_owner = newOwner; if (pendingOwner != address(0)) { _transferOwnership(pendingOwner); } } /** * @notice Allows an owner to begin transferring ownership to a new address, * pending. */ function transferOwnership(address to) public override onlyOwner { _transferOwnership(to); } /** * @notice Allows an ownership transfer to be completed by the recipient. */ function acceptOwnership() external override { require(msg.sender == s_pendingOwner, "Must be proposed owner"); address oldOwner = s_owner; s_owner = msg.sender; s_pendingOwner = address(0); emit OwnershipTransferred(oldOwner, msg.sender); } /** * @notice Get the current owner */ function owner() public view override returns (address) { return s_owner; } /** * @notice validate, transfer ownership, and emit relevant events */ function _transferOwnership(address to) private { require(to != msg.sender, "Cannot transfer to self"); s_pendingOwner = to; emit OwnershipTransferRequested(s_owner, to); } /** * @notice validate access */ function _validateOwnership() internal view { require(msg.sender == s_owner, "Only callable by owner"); } /** * @notice Reverts if called by anyone other than the contract owner. */ modifier onlyOwner() { _validateOwnership(); _; } }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.0; interface OwnableInterface { function owner() external returns (address); function transferOwnership(address recipient) external; function acceptOwnership() external; }
{ "optimizer": { "enabled": true, "runs": 200 }, "metadata": { "bytecodeHash": "none", "useLiteralContent": true }, "outputSelection": { "*": { "*": [ "evm.bytecode", "evm.deployedBytecode", "devdoc", "userdoc", "metadata", "abi" ] } }, "libraries": {} }
[{"inputs":[{"internalType":"address","name":"LINKAddress","type":"address"},{"internalType":"enum KeeperRegistrar.AutoApproveType","name":"autoApproveConfigType","type":"uint8"},{"internalType":"uint16","name":"autoApproveMaxAllowed","type":"uint16"},{"internalType":"address","name":"keeperRegistry","type":"address"},{"internalType":"uint96","name":"minLINKJuels","type":"uint96"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"AmountMismatch","type":"error"},{"inputs":[],"name":"FunctionNotPermitted","type":"error"},{"inputs":[],"name":"HashMismatch","type":"error"},{"inputs":[],"name":"InsufficientPayment","type":"error"},{"inputs":[],"name":"InvalidAdminAddress","type":"error"},{"inputs":[],"name":"InvalidDataLength","type":"error"},{"inputs":[{"internalType":"address","name":"to","type":"address"}],"name":"LinkTransferFailed","type":"error"},{"inputs":[],"name":"OnlyAdminOrOwner","type":"error"},{"inputs":[],"name":"OnlyLink","type":"error"},{"inputs":[],"name":"RegistrationRequestFailed","type":"error"},{"inputs":[],"name":"RequestNotFound","type":"error"},{"inputs":[],"name":"SenderMismatch","type":"error"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"senderAddress","type":"address"},{"indexed":false,"internalType":"bool","name":"allowed","type":"bool"}],"name":"AutoApproveAllowedSenderSet","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"enum KeeperRegistrar.AutoApproveType","name":"autoApproveConfigType","type":"uint8"},{"indexed":false,"internalType":"uint32","name":"autoApproveMaxAllowed","type":"uint32"},{"indexed":false,"internalType":"address","name":"keeperRegistry","type":"address"},{"indexed":false,"internalType":"uint96","name":"minLINKJuels","type":"uint96"}],"name":"ConfigChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"}],"name":"OwnershipTransferRequested","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"hash","type":"bytes32"},{"indexed":false,"internalType":"string","name":"displayName","type":"string"},{"indexed":true,"internalType":"uint256","name":"upkeepId","type":"uint256"}],"name":"RegistrationApproved","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"hash","type":"bytes32"}],"name":"RegistrationRejected","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"hash","type":"bytes32"},{"indexed":false,"internalType":"string","name":"name","type":"string"},{"indexed":false,"internalType":"bytes","name":"encryptedEmail","type":"bytes"},{"indexed":true,"internalType":"address","name":"upkeepContract","type":"address"},{"indexed":false,"internalType":"uint32","name":"gasLimit","type":"uint32"},{"indexed":false,"internalType":"address","name":"adminAddress","type":"address"},{"indexed":false,"internalType":"bytes","name":"checkData","type":"bytes"},{"indexed":false,"internalType":"uint96","name":"amount","type":"uint96"},{"indexed":true,"internalType":"uint8","name":"source","type":"uint8"}],"name":"RegistrationRequested","type":"event"},{"inputs":[],"name":"LINK","outputs":[{"internalType":"contract LinkTokenInterface","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"acceptOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"address","name":"upkeepContract","type":"address"},{"internalType":"uint32","name":"gasLimit","type":"uint32"},{"internalType":"address","name":"adminAddress","type":"address"},{"internalType":"bytes","name":"checkData","type":"bytes"},{"internalType":"bytes32","name":"hash","type":"bytes32"}],"name":"approve","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"hash","type":"bytes32"}],"name":"cancel","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"senderAddress","type":"address"}],"name":"getAutoApproveAllowedSender","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"hash","type":"bytes32"}],"name":"getPendingRequest","outputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint96","name":"","type":"uint96"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getRegistrationConfig","outputs":[{"internalType":"enum KeeperRegistrar.AutoApproveType","name":"autoApproveConfigType","type":"uint8"},{"internalType":"uint32","name":"autoApproveMaxAllowed","type":"uint32"},{"internalType":"uint32","name":"approvedCount","type":"uint32"},{"internalType":"address","name":"keeperRegistry","type":"address"},{"internalType":"uint256","name":"minLINKJuels","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"onTokenTransfer","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"bytes","name":"encryptedEmail","type":"bytes"},{"internalType":"address","name":"upkeepContract","type":"address"},{"internalType":"uint32","name":"gasLimit","type":"uint32"},{"internalType":"address","name":"adminAddress","type":"address"},{"internalType":"bytes","name":"checkData","type":"bytes"},{"internalType":"uint96","name":"amount","type":"uint96"},{"internalType":"uint8","name":"source","type":"uint8"},{"internalType":"address","name":"sender","type":"address"}],"name":"register","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"senderAddress","type":"address"},{"internalType":"bool","name":"allowed","type":"bool"}],"name":"setAutoApproveAllowedSender","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"enum KeeperRegistrar.AutoApproveType","name":"autoApproveConfigType","type":"uint8"},{"internalType":"uint16","name":"autoApproveMaxAllowed","type":"uint16"},{"internalType":"address","name":"keeperRegistry","type":"address"},{"internalType":"uint96","name":"minLINKJuels","type":"uint96"}],"name":"setRegistrationConfig","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"typeAndVersion","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"}]
Contract Creation Code
60a06040523480156200001157600080fd5b5060405162001cda38038062001cda833981016040819052620000349162000394565b33806000816200008b5760405162461bcd60e51b815260206004820152601860248201527f43616e6e6f7420736574206f776e657220746f207a65726f000000000000000060448201526064015b60405180910390fd5b600080546001600160a01b0319166001600160a01b0384811691909117909155811615620000be57620000be81620000ec565b5050506001600160601b0319606086901b16608052620000e18484848462000198565b50505050506200048d565b6001600160a01b038116331415620001475760405162461bcd60e51b815260206004820152601760248201527f43616e6e6f74207472616e7366657220746f2073656c66000000000000000000604482015260640162000082565b600180546001600160a01b0319166001600160a01b0383811691821790925560008054604051929316917fed8889f560326eb138920d842192f0eb3dd22b4f139c87a2c57538e05bae12789190a350565b620001a262000319565b6003546040805160a081019091526501000000000090910463ffffffff169080866002811115620001d757620001d762000477565b815261ffff8616602082015263ffffffff831660408201526001600160a01b03851660608201526001600160601b038416608090910152805160038054909190829060ff1916600183600281111562000234576200023462000477565b0217905550602082015181546040808501516060860151610100600160481b031990931661010063ffffffff9586160263ffffffff60281b19161765010000000000949091169390930292909217600160481b600160e81b03191669010000000000000000006001600160a01b0390921691909102178255608090920151600190910180546001600160601b0319166001600160601b03909216919091179055517f6293a703ec7145dfa23c5cde2e627d6a02e153fc2e9c03b14d1e22cbb4a7e9cd906200030a90879087908790879062000422565b60405180910390a15050505050565b6000546001600160a01b03163314620003755760405162461bcd60e51b815260206004820152601660248201527f4f6e6c792063616c6c61626c65206279206f776e657200000000000000000000604482015260640162000082565b565b80516001600160a01b03811681146200038f57600080fd5b919050565b600080600080600060a08688031215620003ad57600080fd5b620003b88662000377565b9450602086015160038110620003cd57600080fd5b604087015190945061ffff81168114620003e657600080fd5b9250620003f66060870162000377565b60808701519092506001600160601b03811681146200041457600080fd5b809150509295509295909350565b60808101600386106200044557634e487b7160e01b600052602160045260246000fd5b94815261ffff9390931660208401526001600160a01b039190911660408301526001600160601b031660609091015290565b634e487b7160e01b600052602160045260246000fd5b60805160601c611812620004c860003960008181610153015281816103e00152818161081e01528181610cc30152610e9501526118126000f3fe608060405234801561001057600080fd5b50600436106100ea5760003560e01c8063850af0cb1161008c578063a4c0ed3611610066578063a4c0ed3614610299578063a793ab8b146102ac578063c4d252f5146102bf578063f2fde38b146102d257600080fd5b8063850af0cb146101f757806388b12d55146102105780638da5cb5b1461028857600080fd5b80633659d666116100c85780633659d6661461018d578063367b9b4f146101a057806379ba5097146101b35780637e776f7f146101bb57600080fd5b8063181f5a77146100ef578063183310b3146101395780631b6b6d231461014e575b600080fd5b6101236040518060400160405280601581526020017404b656570657252656769737472617220312e312e3605c1b81525081565b60405161013091906116e7565b60405180910390f35b61014c610147366004611385565b6102e5565b005b6101757f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610130565b61014c61019b36600461142a565b6103d5565b61014c6101ae36600461125b565b610636565b61014c61069d565b6101e76101c9366004611239565b6001600160a01b031660009081526005602052604090205460ff1690565b6040519015158152602001610130565b6101ff61074c565b6040516101309594939291906116a4565b61026161021e366004611309565b6000908152600260209081526040918290208251808401909352546001600160a01b038116808452600160a01b9091046001600160601b03169290910182905291565b604080516001600160a01b0390931683526001600160601b03909116602083015201610130565b6000546001600160a01b0316610175565b61014c6102a7366004611292565b610813565b61014c6102ba366004611322565b610a59565b61014c6102cd366004611309565b610be3565b61014c6102e0366004611239565b610d91565b6102ed610da5565b6000818152600260209081526040918290208251808401909352546001600160a01b038116808452600160a01b9091046001600160601b03169183019190915261034a57604051632589d98f60e11b815260040160405180910390fd5b600087878787876040516020016103659594939291906115e5565b60405160208183030381529060405280519060200120905080831461039d57604051633f4d605360e01b815260040160405180910390fd5b60008381526002602090815260408220919091558201516103ca908a908a908a908a908a908a908a610dfa565b505050505050505050565b336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161461041d5760405162c6885f60e11b815260040160405180910390fd5b6001600160a01b0386166104445760405163016ed19f60e21b815260040160405180910390fd5b6000888888888860405160200161045f9594939291906115e5565b6040516020818303038152906040528051906020012090508260ff16896001600160a01b0316827fc3f5df4aefec026f610a3fcb08f19476492d69d2cb78b1c2eba259a8820e6a788f8f8f8e8e8e8e8e6040516104c39897969594939291906116fa565b60405180910390a46040805160a08101909152600380546000929190829060ff1660028111156104f5576104f56117cb565b6002811115610506576105066117cb565b8152815463ffffffff610100820481166020840152600160281b82041660408301526001600160a01b03600160481b9091041660608201526001909101546001600160601b0316608090910152905061055f8184610fc7565b156105b057604081015161057490600161176f565b6003805463ffffffff92909216600160281b0268ffffffff0000000000199092169190911790556105ab8d8b8b8b8b8b8b89610dfa565b610627565b6000828152600260205260408120546105da908790600160a01b90046001600160601b0316611797565b6040805180820182526001600160a01b03808d1682526001600160601b039384166020808401918252600089815260029091529390932091519251909316600160a01b0291909216179055505b50505050505050505050505050565b61063e610da5565b6001600160a01b038216600081815260056020908152604091829020805460ff191685151590811790915591519182527f20c6237dac83526a849285a9f79d08a483291bdd3a056a0ef9ae94ecee1ad356910160405180910390a25050565b6001546001600160a01b031633146106f55760405162461bcd60e51b815260206004820152601660248201527526bab9ba10313290383937b837b9b2b21037bbb732b960511b60448201526064015b60405180910390fd5b60008054336001600160a01b0319808316821784556001805490911690556040516001600160a01b0390921692909183917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a350565b6040805160a081019091526003805460009283928392839283928392829060ff16600281111561077e5761077e6117cb565b600281111561078f5761078f6117cb565b81528154610100810463ffffffff908116602080850191909152600160281b8304909116604080850191909152600160481b9092046001600160a01b03166060808501919091526001909401546001600160601b0390811660809485015285519186015192860151948601519590930151909b919a50929850929650169350915050565b336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161461085b5760405162c6885f60e11b815260040160405180910390fd5b81818080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050505060208101516001600160e01b03198116631b2ceb3360e11b146108c75760405163e3d6792160e01b815260040160405180910390fd5b8484848080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050505060e4810151828114610923576040516355e97b0d60e01b815260040160405180910390fd5b8887878080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505050506101248101516001600160a01b038381169082161461098c57604051637c62b1c760e11b815260040160405180910390fd5b6101248910156109af57604051630dfe930960e41b815260040160405180910390fd5b6004546001600160601b03168b10156109db5760405163cd1c886760e01b815260040160405180910390fd5b6000306001600160a01b03168b8b6040516109f79291906115d5565b600060405180830381855af49150503d8060008114610a32576040519150601f19603f3d011682016040523d82523d6000602084013e610a37565b606091505b505090508061062757604051630649bf8160e41b815260040160405180910390fd5b610a61610da5565b6003546040805160a08101909152600160281b90910463ffffffff169080866002811115610a9157610a916117cb565b815261ffff8616602082015263ffffffff831660408201526001600160a01b03851660608201526001600160601b038416608090910152805160038054909190829060ff19166001836002811115610aeb57610aeb6117cb565b021790555060208201518154604080850151606086015168ffffffffffffffff001990931661010063ffffffff9586160268ffffffff0000000000191617600160281b9490911693909302929092177fffffff0000000000000000000000000000000000000000ffffffffffffffffff16600160481b6001600160a01b0390921691909102178255608090920151600190910180546bffffffffffffffffffffffff19166001600160601b03909216919091179055517f6293a703ec7145dfa23c5cde2e627d6a02e153fc2e9c03b14d1e22cbb4a7e9cd90610bd4908790879087908790611665565b60405180910390a15050505050565b6000818152600260209081526040918290208251808401909352546001600160a01b038116808452600160a01b9091046001600160601b031691830191909152331480610c3a57506000546001600160a01b031633145b610c57576040516361685c2b60e01b815260040160405180910390fd5b80516001600160a01b0316610c7f57604051632589d98f60e11b815260040160405180910390fd5b600082815260026020908152604080832083905590830151905163a9059cbb60e01b81523360048201526001600160601b0390911660248201526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063a9059cbb90604401602060405180830381600087803b158015610d0757600080fd5b505af1158015610d1b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d3f91906112ec565b905080610d615760405163185c9b9d60e31b81523360048201526024016106ec565b60405183907f3663fb28ebc87645eb972c9dad8521bf665c623f287e79f1c56f1eb374b82a2290600090a2505050565b610d99610da5565b610da281611061565b50565b6000546001600160a01b03163314610df85760405162461bcd60e51b815260206004820152601660248201527527b7363c9031b0b63630b1363290313c9037bbb732b960511b60448201526064016106ec565b565b60035460405163da5c674160e01b8152600160481b9091046001600160a01b031690600090829063da5c674190610e3d908c908c908c908c908c906004016115e5565b602060405180830381600087803b158015610e5757600080fd5b505af1158015610e6b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e8f9190611524565b905060007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316634000aea0848785604051602001610ed791815260200190565b6040516020818303038152906040526040518463ffffffff1660e01b8152600401610f0493929190611629565b602060405180830381600087803b158015610f1e57600080fd5b505af1158015610f32573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f5691906112ec565b905080610f815760405163185c9b9d60e31b81526001600160a01b03841660048201526024016106ec565b81847fb9a292fb7e3edd920cd2d2829a3615a640c43fd7de0a0820aa0668feb4c37d4b8d604051610fb291906116e7565b60405180910390a35050505050505050505050565b60008083516002811115610fdd57610fdd6117cb565b1415610feb5750600061105b565b600183516002811115611000576110006117cb565b14801561102657506001600160a01b03821660009081526005602052604090205460ff16155b156110335750600061105b565b826020015163ffffffff16836040015163ffffffff1610156110575750600161105b565b5060005b92915050565b6001600160a01b0381163314156110ba5760405162461bcd60e51b815260206004820152601760248201527f43616e6e6f74207472616e7366657220746f2073656c6600000000000000000060448201526064016106ec565b600180546001600160a01b0319166001600160a01b0383811691821790925560008054604051929316917fed8889f560326eb138920d842192f0eb3dd22b4f139c87a2c57538e05bae12789190a350565b80356001600160a01b038116811461112257600080fd5b919050565b60008083601f84011261113957600080fd5b50813567ffffffffffffffff81111561115157600080fd5b60208301915083602082850101111561116957600080fd5b9250929050565b600082601f83011261118157600080fd5b813567ffffffffffffffff8082111561119c5761119c6117e1565b604051601f8301601f19908116603f011681019082821181831017156111c4576111c46117e1565b816040528381528660208588010111156111dd57600080fd5b836020870160208301376000602085830101528094505050505092915050565b803563ffffffff8116811461112257600080fd5b803560ff8116811461112257600080fd5b80356001600160601b038116811461112257600080fd5b60006020828403121561124b57600080fd5b6112548261110b565b9392505050565b6000806040838503121561126e57600080fd5b6112778361110b565b91506020830135611287816117f7565b809150509250929050565b600080600080606085870312156112a857600080fd5b6112b18561110b565b935060208501359250604085013567ffffffffffffffff8111156112d457600080fd5b6112e087828801611127565b95989497509550505050565b6000602082840312156112fe57600080fd5b8151611254816117f7565b60006020828403121561131b57600080fd5b5035919050565b6000806000806080858703121561133857600080fd5b84356003811061134757600080fd5b9350602085013561ffff8116811461135e57600080fd5b925061136c6040860161110b565b915061137a60608601611222565b905092959194509250565b600080600080600080600060c0888a0312156113a057600080fd5b873567ffffffffffffffff808211156113b857600080fd5b6113c48b838c01611170565b98506113d260208b0161110b565b97506113e060408b016111fd565b96506113ee60608b0161110b565b955060808a013591508082111561140457600080fd5b506114118a828b01611127565b989b979a5095989497959660a090950135949350505050565b60008060008060008060008060008060006101208c8e03121561144c57600080fd5b67ffffffffffffffff808d35111561146357600080fd5b6114708e8e358f01611170565b9b508060208e0135111561148357600080fd5b6114938e60208f01358f01611127565b909b5099506114a460408e0161110b565b98506114b260608e016111fd565b97506114c060808e0161110b565b96508060a08e013511156114d357600080fd5b506114e48d60a08e01358e01611127565b90955093506114f560c08d01611222565b925061150360e08d01611211565b91506115126101008d0161110b565b90509295989b509295989b9093969950565b60006020828403121561153657600080fd5b5051919050565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b6000815180845260005b8181101561158c57602081850181015186830182015201611570565b8181111561159e576000602083870101525b50601f01601f19169290920160200192915050565b600381106115d157634e487b7160e01b600052602160045260246000fd5b9052565b8183823760009101908152919050565b6001600160a01b03868116825263ffffffff861660208301528416604082015260806060820181905260009061161e908301848661153d565b979650505050505050565b6001600160a01b03841681526001600160601b038316602082015260606040820181905260009061165c90830184611566565b95945050505050565b6080810161167382876115b3565b61ffff9490941660208201526001600160a01b039290921660408301526001600160601b0316606090910152919050565b60a081016116b282886115b3565b63ffffffff95861660208301529390941660408501526001600160a01b03919091166060840152608090920191909152919050565b6020815260006112546020830184611566565b60c08152600061170d60c083018b611566565b8281036020840152611720818a8c61153d565b63ffffffff891660408501526001600160a01b03881660608501528381036080850152905061175081868861153d565b9150506001600160601b03831660a08301529998505050505050505050565b600063ffffffff80831681851680830382111561178e5761178e6117b5565b01949350505050565b60006001600160601b0380831681851680830382111561178e5761178e5b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052602160045260246000fd5b634e487b7160e01b600052604160045260246000fd5b8015158114610da257600080fdfea164736f6c6343000806000a000000000000000000000000f97f4df75117a78c1a5a0dbb814af92458539fb40000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000006400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004563918244f40000
Deployed Bytecode
0x608060405234801561001057600080fd5b50600436106100ea5760003560e01c8063850af0cb1161008c578063a4c0ed3611610066578063a4c0ed3614610299578063a793ab8b146102ac578063c4d252f5146102bf578063f2fde38b146102d257600080fd5b8063850af0cb146101f757806388b12d55146102105780638da5cb5b1461028857600080fd5b80633659d666116100c85780633659d6661461018d578063367b9b4f146101a057806379ba5097146101b35780637e776f7f146101bb57600080fd5b8063181f5a77146100ef578063183310b3146101395780631b6b6d231461014e575b600080fd5b6101236040518060400160405280601581526020017404b656570657252656769737472617220312e312e3605c1b81525081565b60405161013091906116e7565b60405180910390f35b61014c610147366004611385565b6102e5565b005b6101757f000000000000000000000000f97f4df75117a78c1a5a0dbb814af92458539fb481565b6040516001600160a01b039091168152602001610130565b61014c61019b36600461142a565b6103d5565b61014c6101ae36600461125b565b610636565b61014c61069d565b6101e76101c9366004611239565b6001600160a01b031660009081526005602052604090205460ff1690565b6040519015158152602001610130565b6101ff61074c565b6040516101309594939291906116a4565b61026161021e366004611309565b6000908152600260209081526040918290208251808401909352546001600160a01b038116808452600160a01b9091046001600160601b03169290910182905291565b604080516001600160a01b0390931683526001600160601b03909116602083015201610130565b6000546001600160a01b0316610175565b61014c6102a7366004611292565b610813565b61014c6102ba366004611322565b610a59565b61014c6102cd366004611309565b610be3565b61014c6102e0366004611239565b610d91565b6102ed610da5565b6000818152600260209081526040918290208251808401909352546001600160a01b038116808452600160a01b9091046001600160601b03169183019190915261034a57604051632589d98f60e11b815260040160405180910390fd5b600087878787876040516020016103659594939291906115e5565b60405160208183030381529060405280519060200120905080831461039d57604051633f4d605360e01b815260040160405180910390fd5b60008381526002602090815260408220919091558201516103ca908a908a908a908a908a908a908a610dfa565b505050505050505050565b336001600160a01b037f000000000000000000000000f97f4df75117a78c1a5a0dbb814af92458539fb4161461041d5760405162c6885f60e11b815260040160405180910390fd5b6001600160a01b0386166104445760405163016ed19f60e21b815260040160405180910390fd5b6000888888888860405160200161045f9594939291906115e5565b6040516020818303038152906040528051906020012090508260ff16896001600160a01b0316827fc3f5df4aefec026f610a3fcb08f19476492d69d2cb78b1c2eba259a8820e6a788f8f8f8e8e8e8e8e6040516104c39897969594939291906116fa565b60405180910390a46040805160a08101909152600380546000929190829060ff1660028111156104f5576104f56117cb565b6002811115610506576105066117cb565b8152815463ffffffff610100820481166020840152600160281b82041660408301526001600160a01b03600160481b9091041660608201526001909101546001600160601b0316608090910152905061055f8184610fc7565b156105b057604081015161057490600161176f565b6003805463ffffffff92909216600160281b0268ffffffff0000000000199092169190911790556105ab8d8b8b8b8b8b8b89610dfa565b610627565b6000828152600260205260408120546105da908790600160a01b90046001600160601b0316611797565b6040805180820182526001600160a01b03808d1682526001600160601b039384166020808401918252600089815260029091529390932091519251909316600160a01b0291909216179055505b50505050505050505050505050565b61063e610da5565b6001600160a01b038216600081815260056020908152604091829020805460ff191685151590811790915591519182527f20c6237dac83526a849285a9f79d08a483291bdd3a056a0ef9ae94ecee1ad356910160405180910390a25050565b6001546001600160a01b031633146106f55760405162461bcd60e51b815260206004820152601660248201527526bab9ba10313290383937b837b9b2b21037bbb732b960511b60448201526064015b60405180910390fd5b60008054336001600160a01b0319808316821784556001805490911690556040516001600160a01b0390921692909183917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a350565b6040805160a081019091526003805460009283928392839283928392829060ff16600281111561077e5761077e6117cb565b600281111561078f5761078f6117cb565b81528154610100810463ffffffff908116602080850191909152600160281b8304909116604080850191909152600160481b9092046001600160a01b03166060808501919091526001909401546001600160601b0390811660809485015285519186015192860151948601519590930151909b919a50929850929650169350915050565b336001600160a01b037f000000000000000000000000f97f4df75117a78c1a5a0dbb814af92458539fb4161461085b5760405162c6885f60e11b815260040160405180910390fd5b81818080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050505060208101516001600160e01b03198116631b2ceb3360e11b146108c75760405163e3d6792160e01b815260040160405180910390fd5b8484848080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050505060e4810151828114610923576040516355e97b0d60e01b815260040160405180910390fd5b8887878080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505050506101248101516001600160a01b038381169082161461098c57604051637c62b1c760e11b815260040160405180910390fd5b6101248910156109af57604051630dfe930960e41b815260040160405180910390fd5b6004546001600160601b03168b10156109db5760405163cd1c886760e01b815260040160405180910390fd5b6000306001600160a01b03168b8b6040516109f79291906115d5565b600060405180830381855af49150503d8060008114610a32576040519150601f19603f3d011682016040523d82523d6000602084013e610a37565b606091505b505090508061062757604051630649bf8160e41b815260040160405180910390fd5b610a61610da5565b6003546040805160a08101909152600160281b90910463ffffffff169080866002811115610a9157610a916117cb565b815261ffff8616602082015263ffffffff831660408201526001600160a01b03851660608201526001600160601b038416608090910152805160038054909190829060ff19166001836002811115610aeb57610aeb6117cb565b021790555060208201518154604080850151606086015168ffffffffffffffff001990931661010063ffffffff9586160268ffffffff0000000000191617600160281b9490911693909302929092177fffffff0000000000000000000000000000000000000000ffffffffffffffffff16600160481b6001600160a01b0390921691909102178255608090920151600190910180546bffffffffffffffffffffffff19166001600160601b03909216919091179055517f6293a703ec7145dfa23c5cde2e627d6a02e153fc2e9c03b14d1e22cbb4a7e9cd90610bd4908790879087908790611665565b60405180910390a15050505050565b6000818152600260209081526040918290208251808401909352546001600160a01b038116808452600160a01b9091046001600160601b031691830191909152331480610c3a57506000546001600160a01b031633145b610c57576040516361685c2b60e01b815260040160405180910390fd5b80516001600160a01b0316610c7f57604051632589d98f60e11b815260040160405180910390fd5b600082815260026020908152604080832083905590830151905163a9059cbb60e01b81523360048201526001600160601b0390911660248201526001600160a01b037f000000000000000000000000f97f4df75117a78c1a5a0dbb814af92458539fb4169063a9059cbb90604401602060405180830381600087803b158015610d0757600080fd5b505af1158015610d1b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d3f91906112ec565b905080610d615760405163185c9b9d60e31b81523360048201526024016106ec565b60405183907f3663fb28ebc87645eb972c9dad8521bf665c623f287e79f1c56f1eb374b82a2290600090a2505050565b610d99610da5565b610da281611061565b50565b6000546001600160a01b03163314610df85760405162461bcd60e51b815260206004820152601660248201527527b7363c9031b0b63630b1363290313c9037bbb732b960511b60448201526064016106ec565b565b60035460405163da5c674160e01b8152600160481b9091046001600160a01b031690600090829063da5c674190610e3d908c908c908c908c908c906004016115e5565b602060405180830381600087803b158015610e5757600080fd5b505af1158015610e6b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e8f9190611524565b905060007f000000000000000000000000f97f4df75117a78c1a5a0dbb814af92458539fb46001600160a01b0316634000aea0848785604051602001610ed791815260200190565b6040516020818303038152906040526040518463ffffffff1660e01b8152600401610f0493929190611629565b602060405180830381600087803b158015610f1e57600080fd5b505af1158015610f32573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f5691906112ec565b905080610f815760405163185c9b9d60e31b81526001600160a01b03841660048201526024016106ec565b81847fb9a292fb7e3edd920cd2d2829a3615a640c43fd7de0a0820aa0668feb4c37d4b8d604051610fb291906116e7565b60405180910390a35050505050505050505050565b60008083516002811115610fdd57610fdd6117cb565b1415610feb5750600061105b565b600183516002811115611000576110006117cb565b14801561102657506001600160a01b03821660009081526005602052604090205460ff16155b156110335750600061105b565b826020015163ffffffff16836040015163ffffffff1610156110575750600161105b565b5060005b92915050565b6001600160a01b0381163314156110ba5760405162461bcd60e51b815260206004820152601760248201527f43616e6e6f74207472616e7366657220746f2073656c6600000000000000000060448201526064016106ec565b600180546001600160a01b0319166001600160a01b0383811691821790925560008054604051929316917fed8889f560326eb138920d842192f0eb3dd22b4f139c87a2c57538e05bae12789190a350565b80356001600160a01b038116811461112257600080fd5b919050565b60008083601f84011261113957600080fd5b50813567ffffffffffffffff81111561115157600080fd5b60208301915083602082850101111561116957600080fd5b9250929050565b600082601f83011261118157600080fd5b813567ffffffffffffffff8082111561119c5761119c6117e1565b604051601f8301601f19908116603f011681019082821181831017156111c4576111c46117e1565b816040528381528660208588010111156111dd57600080fd5b836020870160208301376000602085830101528094505050505092915050565b803563ffffffff8116811461112257600080fd5b803560ff8116811461112257600080fd5b80356001600160601b038116811461112257600080fd5b60006020828403121561124b57600080fd5b6112548261110b565b9392505050565b6000806040838503121561126e57600080fd5b6112778361110b565b91506020830135611287816117f7565b809150509250929050565b600080600080606085870312156112a857600080fd5b6112b18561110b565b935060208501359250604085013567ffffffffffffffff8111156112d457600080fd5b6112e087828801611127565b95989497509550505050565b6000602082840312156112fe57600080fd5b8151611254816117f7565b60006020828403121561131b57600080fd5b5035919050565b6000806000806080858703121561133857600080fd5b84356003811061134757600080fd5b9350602085013561ffff8116811461135e57600080fd5b925061136c6040860161110b565b915061137a60608601611222565b905092959194509250565b600080600080600080600060c0888a0312156113a057600080fd5b873567ffffffffffffffff808211156113b857600080fd5b6113c48b838c01611170565b98506113d260208b0161110b565b97506113e060408b016111fd565b96506113ee60608b0161110b565b955060808a013591508082111561140457600080fd5b506114118a828b01611127565b989b979a5095989497959660a090950135949350505050565b60008060008060008060008060008060006101208c8e03121561144c57600080fd5b67ffffffffffffffff808d35111561146357600080fd5b6114708e8e358f01611170565b9b508060208e0135111561148357600080fd5b6114938e60208f01358f01611127565b909b5099506114a460408e0161110b565b98506114b260608e016111fd565b97506114c060808e0161110b565b96508060a08e013511156114d357600080fd5b506114e48d60a08e01358e01611127565b90955093506114f560c08d01611222565b925061150360e08d01611211565b91506115126101008d0161110b565b90509295989b509295989b9093969950565b60006020828403121561153657600080fd5b5051919050565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b6000815180845260005b8181101561158c57602081850181015186830182015201611570565b8181111561159e576000602083870101525b50601f01601f19169290920160200192915050565b600381106115d157634e487b7160e01b600052602160045260246000fd5b9052565b8183823760009101908152919050565b6001600160a01b03868116825263ffffffff861660208301528416604082015260806060820181905260009061161e908301848661153d565b979650505050505050565b6001600160a01b03841681526001600160601b038316602082015260606040820181905260009061165c90830184611566565b95945050505050565b6080810161167382876115b3565b61ffff9490941660208201526001600160a01b039290921660408301526001600160601b0316606090910152919050565b60a081016116b282886115b3565b63ffffffff95861660208301529390941660408501526001600160a01b03919091166060840152608090920191909152919050565b6020815260006112546020830184611566565b60c08152600061170d60c083018b611566565b8281036020840152611720818a8c61153d565b63ffffffff891660408501526001600160a01b03881660608501528381036080850152905061175081868861153d565b9150506001600160601b03831660a08301529998505050505050505050565b600063ffffffff80831681851680830382111561178e5761178e6117b5565b01949350505050565b60006001600160601b0380831681851680830382111561178e5761178e5b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052602160045260246000fd5b634e487b7160e01b600052604160045260246000fd5b8015158114610da257600080fdfea164736f6c6343000806000a
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
000000000000000000000000f97f4df75117a78c1a5a0dbb814af92458539fb40000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000006400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004563918244f40000
-----Decoded View---------------
Arg [0] : LINKAddress (address): 0xf97f4df75117a78c1A5a0DBb814Af92458539FB4
Arg [1] : autoApproveConfigType (uint8): 2
Arg [2] : autoApproveMaxAllowed (uint16): 100
Arg [3] : keeperRegistry (address): 0x0000000000000000000000000000000000000000
Arg [4] : minLINKJuels (uint96): 5000000000000000000
-----Encoded View---------------
5 Constructor Arguments found :
Arg [0] : 000000000000000000000000f97f4df75117a78c1a5a0dbb814af92458539fb4
Arg [1] : 0000000000000000000000000000000000000000000000000000000000000002
Arg [2] : 0000000000000000000000000000000000000000000000000000000000000064
Arg [3] : 0000000000000000000000000000000000000000000000000000000000000000
Arg [4] : 0000000000000000000000000000000000000000000000004563918244f40000
Age | Block | Fee Address | BC Fee Address | Voting Power | Jailed | Incoming |
---|
Make sure to use the "Vote Down" button for any spammy posts, and the "Vote Up" for interesting conversations.