ETH Price: $1,594.71 (+0.53%)
Gas: 17 Gwei
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Multi Chain

Multichain Addresses

1 address found via
Transaction Hash
Method
Block
From
To
Value
0x60806040111938542020-11-05 0:02:481056 days 14 hrs ago1604534568IN
 Create: Keep2rHelper
0 ETH0.0110291728

View more zero value Internal Transactions in Advanced View mode

Advanced mode:
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
Keep2rHelper

Compiler Version
v0.6.12+commit.27d51765

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license
/**
 *Submitted for verification at Etherscan.io on 2020-11-05
*/

// SPDX-License-Identifier: MIT


/**
 * KP2R.NETWORK
 * A standard implementation of kp3rv1 protocol
 * Optimized Dapp
 * Scalability
 * Clean & tested code
 */


pragma solidity ^0.6.12;

library SafeMath {
  
    function add(uint a, uint b) internal pure returns (uint) {
        uint c = a + b;
        require(c >= a, "add: +");

        return c;
    }

    function add(uint a, uint b, string memory errorMessage) internal pure returns (uint) {
        uint c = a + b;
        require(c >= a, errorMessage);

        return c;
    }

  function sub(uint a, uint b) internal pure returns (uint) {
        return sub(a, b, "sub: -");
    }
  function sub(uint a, uint b, string memory errorMessage) internal pure returns (uint) {
        require(b <= a, errorMessage);
        uint c = a - b;

        return c;
    }
  function mul(uint a, uint b) internal pure returns (uint) {
     if (a == 0) {
            return 0;
        }

        uint c = a * b;
        require(c / a == b, "mul: *");

        return c;
    }

    function mul(uint a, uint b, string memory errorMessage) internal pure returns (uint) {
      if (a == 0) {
            return 0;
        }

        uint c = a * b;
        require(c / a == b, errorMessage);

        return c;
    }
 function div(uint a, uint b) internal pure returns (uint) {
        return div(a, b, "div: /");
    }

  function div(uint a, uint b, string memory errorMessage) internal pure returns (uint) {
        // Solidity only automatically asserts when dividing by 0
        require(b > 0, errorMessage);
        uint c = a / b;
        // assert(a == b * c + a % b); // There is no case in which this doesn't hold

        return c;
    }
 function mod(uint a, uint b) internal pure returns (uint) {
        return mod(a, b, "mod: %");
    }
 function mod(uint a, uint b, string memory errorMessage) internal pure returns (uint) {
        require(b != 0, errorMessage);
        return a % b;
    }
}

library Math {
   function max(uint256 a, uint256 b) internal pure returns (uint256) {
        return a >= b ? a : b;
    }
  function min(uint256 a, uint256 b) internal pure returns (uint256) {
        return a < b ? a : b;
    }
  function average(uint256 a, uint256 b) internal pure returns (uint256) {
        // (a + b) / 2 can overflow, so we distribute
        return (a / 2) + (b / 2) + ((a % 2 + b % 2) / 2);
    }
}

interface IChainLinkFeed {
    function latestAnswer() external view returns (int256);
}

interface IKeep2r {
    function totalBonded() external view returns (uint);
    function bonds(address keeper, address credit) external view returns (uint);
    function votes(address keeper) external view returns (uint);
}

contract Keep2rHelper {
    using SafeMath for uint;

    IChainLinkFeed public constant FASTGAS = IChainLinkFeed(0x169E633A2D1E6c10dD91238Ba11c4A708dfEF37C);
    IKeep2r public constant KP2R = IKeep2r(0x9BdE098Be22658d057C3F1F185e3Fd4653E2fbD1);

    uint constant public BOOST = 50;
    uint constant public BASE = 10;
    uint constant public TARGETBOND = 200e18;

    uint constant public PRICE = 10;

    function getFastGas() external view returns (uint) {
        return uint(FASTGAS.latestAnswer());
    }

    function bonds(address keeper) public view returns (uint) {
        return KP2R.bonds(keeper, address(KP2R)).add(KP2R.votes(keeper));
    }

    function getQuoteLimitFor(address origin, uint gasUsed) public view returns (uint) {
        uint _min = gasUsed.mul(PRICE).mul(uint(FASTGAS.latestAnswer()));
        uint _boost = _min.mul(BOOST).div(BASE); // increase by 2.5
        uint _bond = Math.min(bonds(origin), TARGETBOND);
        return Math.max(_min, _boost.mul(_bond).div(TARGETBOND));
    }

    function getQuoteLimit(uint gasUsed) external view returns (uint) {
        return getQuoteLimitFor(tx.origin, gasUsed);
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[],"name":"BASE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"BOOST","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"FASTGAS","outputs":[{"internalType":"contract IChainLinkFeed","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"KP2R","outputs":[{"internalType":"contract IKeep2r","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"PRICE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"TARGETBOND","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"keeper","type":"address"}],"name":"bonds","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getFastGas","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"gasUsed","type":"uint256"}],"name":"getQuoteLimit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"origin","type":"address"},{"internalType":"uint256","name":"gasUsed","type":"uint256"}],"name":"getQuoteLimitFor","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"}]

608060405234801561001057600080fd5b5061062a806100206000396000f3fe608060405234801561001057600080fd5b506004361061009e5760003560e01c8063904440bd11610066578063904440bd14610116578063aebf67c11461011e578063dbbc4a5714610142578063ec342ad014610106578063fe10d7741461014a5761009e565b80630421d7f2146100a35780632a84797f146100e1578063525ea631146100e95780638d859f3e146101065780638e686d561461010e575b600080fd5b6100cf600480360360408110156100b957600080fd5b506001600160a01b038135169060200135610170565b60408051918252519081900360200190f35b6100cf610267565b6100cf600480360360208110156100ff57600080fd5b503561026c565b6100cf610278565b6100cf61027d565b6100cf61028a565b61012661030a565b604080516001600160a01b039092168252519081900360200190f35b610126610322565b6100cf6004803603602081101561016057600080fd5b50356001600160a01b031661033a565b60008061020073169e633a2d1e6c10dd91238ba11c4a708dfef37c6001600160a01b03166350d25bcd6040518163ffffffff1660e01b815260040160206040518083038186803b1580156101c357600080fd5b505afa1580156101d7573d6000803e3d6000fd5b505050506040513d60208110156101ed57600080fd5b50516101fa85600a61045f565b9061045f565b9050600061021a600a61021484603261045f565b906104be565b9050600061023961022a8761033a565b680ad78ebc5ac62000006104e9565b905061025b83610256680ad78ebc5ac6200000610214868661045f565b6104ff565b93505050505b92915050565b603281565b60006102613283610170565b600a81565b680ad78ebc5ac620000081565b600073169e633a2d1e6c10dd91238ba11c4a708dfef37c6001600160a01b03166350d25bcd6040518163ffffffff1660e01b815260040160206040518083038186803b1580156102d957600080fd5b505afa1580156102ed573d6000803e3d6000fd5b505050506040513d602081101561030357600080fd5b5051905090565b739bde098be22658d057c3f1f185e3fd4653e2fbd181565b73169e633a2d1e6c10dd91238ba11c4a708dfef37c81565b6000610261739bde098be22658d057c3f1f185e3fd4653e2fbd16001600160a01b031663d8bff5a5846040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b1580156103a057600080fd5b505afa1580156103b4573d6000803e3d6000fd5b505050506040513d60208110156103ca57600080fd5b50516040805163a39744b560e01b81526001600160a01b0386166004820152739bde098be22658d057c3f1f185e3fd4653e2fbd160248201819052915163a39744b591604480820192602092909190829003018186803b15801561042d57600080fd5b505afa158015610441573d6000803e3d6000fd5b505050506040513d602081101561045757600080fd5b50519061050f565b60008261046e57506000610261565b8282028284828161047b57fe5b04146104b7576040805162461bcd60e51b815260206004820152600660248201526536bab61d101560d11b604482015290519081900360640190fd5b9392505050565b60006104b78383604051806040016040528060068152602001656469763a202f60d01b815250610552565b60008183106104f857816104b7565b5090919050565b6000818310156104f857816104b7565b6000828201838110156104b7576040805162461bcd60e51b81526020600482015260066024820152656164643a202b60d01b604482015290519081900360640190fd5b600081836105de5760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b838110156105a357818101518382015260200161058b565b50505050905090810190601f1680156105d05780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385816105ea57fe5b049594505050505056fea2646970667358221220fb010d03a3a77a84fbe233f696c3116a2d5c39bf72a56ae73bc687572d8019b764736f6c634300060c0033

Deployed Bytecode

0x608060405234801561001057600080fd5b506004361061009e5760003560e01c8063904440bd11610066578063904440bd14610116578063aebf67c11461011e578063dbbc4a5714610142578063ec342ad014610106578063fe10d7741461014a5761009e565b80630421d7f2146100a35780632a84797f146100e1578063525ea631146100e95780638d859f3e146101065780638e686d561461010e575b600080fd5b6100cf600480360360408110156100b957600080fd5b506001600160a01b038135169060200135610170565b60408051918252519081900360200190f35b6100cf610267565b6100cf600480360360208110156100ff57600080fd5b503561026c565b6100cf610278565b6100cf61027d565b6100cf61028a565b61012661030a565b604080516001600160a01b039092168252519081900360200190f35b610126610322565b6100cf6004803603602081101561016057600080fd5b50356001600160a01b031661033a565b60008061020073169e633a2d1e6c10dd91238ba11c4a708dfef37c6001600160a01b03166350d25bcd6040518163ffffffff1660e01b815260040160206040518083038186803b1580156101c357600080fd5b505afa1580156101d7573d6000803e3d6000fd5b505050506040513d60208110156101ed57600080fd5b50516101fa85600a61045f565b9061045f565b9050600061021a600a61021484603261045f565b906104be565b9050600061023961022a8761033a565b680ad78ebc5ac62000006104e9565b905061025b83610256680ad78ebc5ac6200000610214868661045f565b6104ff565b93505050505b92915050565b603281565b60006102613283610170565b600a81565b680ad78ebc5ac620000081565b600073169e633a2d1e6c10dd91238ba11c4a708dfef37c6001600160a01b03166350d25bcd6040518163ffffffff1660e01b815260040160206040518083038186803b1580156102d957600080fd5b505afa1580156102ed573d6000803e3d6000fd5b505050506040513d602081101561030357600080fd5b5051905090565b739bde098be22658d057c3f1f185e3fd4653e2fbd181565b73169e633a2d1e6c10dd91238ba11c4a708dfef37c81565b6000610261739bde098be22658d057c3f1f185e3fd4653e2fbd16001600160a01b031663d8bff5a5846040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b1580156103a057600080fd5b505afa1580156103b4573d6000803e3d6000fd5b505050506040513d60208110156103ca57600080fd5b50516040805163a39744b560e01b81526001600160a01b0386166004820152739bde098be22658d057c3f1f185e3fd4653e2fbd160248201819052915163a39744b591604480820192602092909190829003018186803b15801561042d57600080fd5b505afa158015610441573d6000803e3d6000fd5b505050506040513d602081101561045757600080fd5b50519061050f565b60008261046e57506000610261565b8282028284828161047b57fe5b04146104b7576040805162461bcd60e51b815260206004820152600660248201526536bab61d101560d11b604482015290519081900360640190fd5b9392505050565b60006104b78383604051806040016040528060068152602001656469763a202f60d01b815250610552565b60008183106104f857816104b7565b5090919050565b6000818310156104f857816104b7565b6000828201838110156104b7576040805162461bcd60e51b81526020600482015260066024820152656164643a202b60d01b604482015290519081900360640190fd5b600081836105de5760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b838110156105a357818101518382015260200161058b565b50505050905090810190601f1680156105d05780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385816105ea57fe5b049594505050505056fea2646970667358221220fb010d03a3a77a84fbe233f696c3116a2d5c39bf72a56ae73bc687572d8019b764736f6c634300060c0033

Deployed Bytecode Sourcemap

2806:1184:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3490:361;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;3490:361:0;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;3064:31;;;:::i;3859:128::-;;;;;;;;;;;;;;;;-1:-1:-1;3859:128:0;;:::i;3188:31::-;;;:::i;3139:40::-;;;:::i;3228:105::-;;;:::i;2973:82::-;;;:::i;:::-;;;;-1:-1:-1;;;;;2973:82:0;;;;;;;;;;;;;;2867:99;;;:::i;3341:141::-;;;;;;;;;;;;;;;;-1:-1:-1;3341:141:0;-1:-1:-1;;;;;3341:141:0;;:::i;3490:361::-;3567:4;3584:9;3596:52;2923:42;-1:-1:-1;;;;;3624:20:0;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3624:22:0;3596:18;:7;3217:2;3596:11;:18::i;:::-;:22;;:52::i;:::-;3584:64;-1:-1:-1;3659:11:0;3673:25;3130:2;3673:15;3584:64;3093:2;3673:8;:15::i;:::-;:19;;:25::i;:::-;3659:39;;3728:10;3741:35;3750:13;3756:6;3750:5;:13::i;:::-;3173:6;3741:8;:35::i;:::-;3728:48;-1:-1:-1;3794:49:0;3803:4;3809:33;3173:6;3809:17;:6;3728:48;3809:10;:17::i;:33::-;3794:8;:49::i;:::-;3787:56;;;;;3490:361;;;;;:::o;3064:31::-;3093:2;3064:31;:::o;3859:128::-;3919:4;3943:36;3960:9;3971:7;3943:16;:36::i;3188:31::-;3217:2;3188:31;:::o;3139:40::-;3173:6;3139:40;:::o;3228:105::-;3273:4;2923:42;-1:-1:-1;;;;;3302:20:0;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3302:22:0;;-1:-1:-1;3228:105:0;:::o;2973:82::-;3012:42;2973:82;:::o;2867:99::-;2923:42;2867:99;:::o;3341:141::-;3393:4;3417:57;3012:42;-1:-1:-1;;;;;3455:10:0;;3466:6;3455:18;;;;;;;;;;;;;-1:-1:-1;;;;;3455:18:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3455:18:0;3417:33;;;-1:-1:-1;;;3417:33:0;;-1:-1:-1;;;;;3417:33:0;;;;;;3012:42;3417:33;;;;;;;;:10;;:33;;;;;3455:18;;3417:33;;;;;;;;3012:42;3417:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3417:33:0;;:37;:57::i;865:208::-;917:4;935:6;931:47;;-1:-1:-1;965:1:0;958:8;;931:47;999:5;;;1003:1;999;:5;:1;1023:5;;;;;:10;1015:29;;;;;-1:-1:-1;;;1015:29:0;;;;;;;;;;;;-1:-1:-1;;;1015:29:0;;;;;;;;;;;;;;;1064:1;865:208;-1:-1:-1;;;865:208:0:o;1325:103::-;1377:4;1401:19;1405:1;1408;1401:19;;;;;;;;;;;;;-1:-1:-1;;;1401:19:0;;;:3;:19::i;2170:106::-;2228:7;2259:1;2255;:5;:13;;2267:1;2255:13;;;-1:-1:-1;2263:1:0;;2170:106;-1:-1:-1;2170:106:0:o;2059:107::-;2117:7;2149:1;2144;:6;;:14;;2157:1;2144:14;;232:148;284:4;310:5;;;334:6;;;;326:25;;;;;-1:-1:-1;;;326:25:0;;;;;;;;;;;;-1:-1:-1;;;326:25:0;;;;;;;;;;;;;;1434:333;1514:4;1613:12;1606:5;1598:28;;;;-1:-1:-1;;;1598:28:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1637:6;1650:1;1646;:5;;;;;;;1434:333;-1:-1:-1;;;;;1434:333:0:o

Swarm Source

ipfs://fb010d03a3a77a84fbe233f696c3116a2d5c39bf72a56ae73bc687572d8019b7

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

Block Uncle Number Difficulty Gas Used Reward
View All Uncles
Loading...
Loading
Loading...
Loading
Make sure to use the "Vote Down" button for any spammy posts, and the "Vote Up" for interesting conversations.

Validator Index Block Amount
View All Withdrawals

Txn Hash Block Value Eth2 PubKey Valid
View All Deposits
[ Download: CSV Export  ]

A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.