Contract 0x157b6c44f47ecd30c0a2c428a6f35dbc606aa81b 5

 

Contract Overview

Balance:
0.897661449991130659 MATIC

MATIC Value:
$0.69 (@ $0.77/MATIC)

Token:
 
Txn Hash Method
Block
From
To
Value [Txn Fee]
0x213af959cba38f5e76c4fb84d388a810d10d07246b53918dfde7772c8f4c26c5Make Calls No Th...335055372022-09-24 11:31:237 hrs 8 mins ago0xa3bf91a131fccfecc43999c9ff4612a25a572859 IN  0x157b6c44f47ecd30c0a2c428a6f35dbc606aa81b0 MATIC0.084868350007 150.000000013
0x5a58113d9adedcbe2320d88aea1c5eb2a784099cf41d505f4d6636de15b38bb1Make Calls No Th...334391482022-09-22 20:53:431 day 21 hrs ago0xa3bf91a131fccfecc43999c9ff4612a25a572859 IN  0x157b6c44f47ecd30c0a2c428a6f35dbc606aa81b0 MATIC0.008858250001 150.000000018
0x5d00a63bf66a396c1c5999b7404dd508b2d7027874fb517f41a8a6b6a0737093Make Calls No Th...334241062022-09-22 12:09:412 days 6 hrs ago0xa3bf91a131fccfecc43999c9ff4612a25a572859 IN  0x157b6c44f47ecd30c0a2c428a6f35dbc606aa81b0 MATIC0.029977950003 150.000000016
0x666b1851274a7421f0ee404b3c0eeafcd603d0fb3abb7f71ea9a7c10c3a5e0e9Make Calls No Th...333962152022-09-21 20:06:022 days 22 hrs ago0xa3bf91a131fccfecc43999c9ff4612a25a572859 IN  0x157b6c44f47ecd30c0a2c428a6f35dbc606aa81b0 MATIC0.0088604821 150.037796983
0xd866e68b0ba7e7c3908c45b5454eb86df631e5b96c157fd08445333dcc970dedMake Calls No Th...333934542022-09-21 18:28:573 days 11 mins ago0xa3bf91a131fccfecc43999c9ff4612a25a572859 IN  0x157b6c44f47ecd30c0a2c428a6f35dbc606aa81b0 MATIC0.098643258685 219.176069815
0x45bd8ab6d54c7f13b6f0bc615ea94c7f6cdbdd0ed61ced13eacc52e371722985Make Calls No Th...333930712022-09-21 18:15:473 days 24 mins ago0xa3bf91a131fccfecc43999c9ff4612a25a572859 IN  0x157b6c44f47ecd30c0a2c428a6f35dbc606aa81b0 MATIC0.014648198244 248.043319696
0x38430aa4a03880c5756e08f19164185ff4b68677df66196f17e0fb0e16cd7e92Make Calls No Th...333921172022-09-21 17:42:563 days 57 mins ago0xa3bf91a131fccfecc43999c9ff4612a25a572859 IN  0x157b6c44f47ecd30c0a2c428a6f35dbc606aa81b0 MATIC0.029977954299 150.000021513
0x985432a684c8a3cf22b6cdb24e6bfd552bcc9f97e859be2531a50a6087c68352Make Calls No Th...333872302022-09-21 14:50:413 days 3 hrs ago0xa3bf91a131fccfecc43999c9ff4612a25a572859 IN  0x157b6c44f47ecd30c0a2c428a6f35dbc606aa81b0 MATIC0.010401617551 176.134409478
0x7189398eb585c5dd398eb14041b2ed786d918863217c6811f4926cc038bb2df4Make Calls No Th...333250322022-09-20 1:43:204 days 16 hrs ago0xa3bf91a131fccfecc43999c9ff4612a25a572859 IN  0x157b6c44f47ecd30c0a2c428a6f35dbc606aa81b0 MATIC0.029505600003 150.000000016
0x3fe74dec55b40c1698a4b610a12822a1a7908212e6261482d1f8c5f4089b4752Make Calls No Th...333176482022-09-19 21:29:214 days 21 hrs ago0xa3bf91a131fccfecc43999c9ff4612a25a572859 IN  0x157b6c44f47ecd30c0a2c428a6f35dbc606aa81b0 MATIC0.044103372186 166.355000023
0xc153a1642699b817dabf6f6f4b4c3504fcd43a9d2cf1321ca5ce777c597f2630Make Calls No Th...333088012022-09-19 16:23:505 days 2 hrs ago0xa3bf91a131fccfecc43999c9ff4612a25a572859 IN  0x157b6c44f47ecd30c0a2c428a6f35dbc606aa81b0 MATIC0.062821650011 150.000000028
0xbf5807b0c37276e784473b9568faceebcd0a28fa0283f2bcd75002fbb70dc74dMake Calls No Th...333015122022-09-19 12:12:435 days 6 hrs ago0xa3bf91a131fccfecc43999c9ff4612a25a572859 IN  0x157b6c44f47ecd30c0a2c428a6f35dbc606aa81b0 MATIC0.008858249996 149.999999934
0x1074cbcec3c4a80748191bbd346688b75cfdfcc9b53705446f0cabeedb8d7cb4Make Calls No Th...332947712022-09-19 8:18:285 days 10 hrs ago0xa3bf91a131fccfecc43999c9ff4612a25a572859 IN  0x157b6c44f47ecd30c0a2c428a6f35dbc606aa81b0 MATIC0.032193600003 150.000000018
0xd58930afd919903a65f2fb85074b81580ad26c320e2bfa7f186a9fffc43c3027Make Calls No Th...332843992022-09-19 2:21:525 days 16 hrs ago0xa3bf91a131fccfecc43999c9ff4612a25a572859 IN  0x157b6c44f47ecd30c0a2c428a6f35dbc606aa81b0 MATIC0.026664472037 451.519296199
0x02019ad8fd3a4971433f82b0a02549609bce2f0268bd05c09a056c38e326d0a0Make Calls No Th...332787332022-09-18 23:06:295 days 19 hrs ago0xa3bf91a131fccfecc43999c9ff4612a25a572859 IN  0x157b6c44f47ecd30c0a2c428a6f35dbc606aa81b0 MATIC0.025125540306 425.460000115
0xff43e2200424988cfb7c5e0bc65db7a2dc4b69928d71594772500f85b0330c14Make Calls No Th...332766252022-09-18 21:51:515 days 20 hrs ago0xa3bf91a131fccfecc43999c9ff4612a25a572859 IN  0x157b6c44f47ecd30c0a2c428a6f35dbc606aa81b0 MATIC0.032193600512 150.000002388
0xbeac1eda1051b08391c990a6089e8c4df9bf5cdc1acf249b4ec52900eb32c0eaMake Calls No Th...332696052022-09-18 17:48:206 days 51 mins ago0xa3bf91a131fccfecc43999c9ff4612a25a572859 IN  0x157b6c44f47ecd30c0a2c428a6f35dbc606aa81b0 MATIC0.072172050007 150.000000015
0x917a152eb88e3476d67241ea38bc5f20869eaaeae3108817a0eb5cd6952a5d2bMake Calls No Th...332690372022-09-18 17:28:486 days 1 hr ago0xa3bf91a131fccfecc43999c9ff4612a25a572859 IN  0x157b6c44f47ecd30c0a2c428a6f35dbc606aa81b0 MATIC0.043268171628 152.775000014
0x6375ae8e0a31f6c3bb496f1503f07fafd7812a4111f3a2876cd8edb98e6d08dcMake Calls No Th...332688002022-09-18 17:20:426 days 1 hr ago0xa3bf91a131fccfecc43999c9ff4612a25a572859 IN  0x157b6c44f47ecd30c0a2c428a6f35dbc606aa81b0 MATIC0.044834149331 150.309439589
0x5bbd9e5fe07c4d18f02eed4d5d9cdb6e4c2431d9b55ed08d470b8bef744c6391Make Calls No Th...332687182022-09-18 17:17:506 days 1 hr ago0xa3bf91a131fccfecc43999c9ff4612a25a572859 IN  0x157b6c44f47ecd30c0a2c428a6f35dbc606aa81b0 MATIC0.046203000004 150.000000014
0xdf62c5bb96ff69ab059e11b89ee6369084e17f1759630c522bbdc006507bb2fbMake Calls No Th...332685302022-09-18 17:11:226 days 1 hr ago0xa3bf91a131fccfecc43999c9ff4612a25a572859 IN  0x157b6c44f47ecd30c0a2c428a6f35dbc606aa81b0 MATIC0.052183678312 155.248500021
0x66e5df03b228b866d539ecd9f4dcb77da2e5f1bbf070f98ff44ed47dd76cc405Make Calls No Th...332611942022-09-18 12:59:086 days 5 hrs ago0xa3bf91a131fccfecc43999c9ff4612a25a572859 IN  0x157b6c44f47ecd30c0a2c428a6f35dbc606aa81b0 MATIC0.019891200001 150.000000012
0x6adbd4bfe346b13b6b5901852136626abe9a7f7a7c87c03a9dde854b5ca855ffMake Calls No Th...331880532022-09-16 18:20:558 days 19 mins ago0xa3bf91a131fccfecc43999c9ff4612a25a572859 IN  0x157b6c44f47ecd30c0a2c428a6f35dbc606aa81b0 MATIC0.027794530787 161.847349007
0x292a6e1e8285ffd9908fda4706470fb06de7794b208706b6bba7bcbf1db91402Make Calls No Th...331610442022-09-16 2:41:118 days 15 hrs ago0xa3bf91a131fccfecc43999c9ff4612a25a572859 IN  0x157b6c44f47ecd30c0a2c428a6f35dbc606aa81b0 MATIC0.008878919239 150.349999826
0xa23117aa7c8ff965e61e19683695a165c3ec085a39a9a01dd725505de5ed2fc5Make Calls No Th...331572782022-09-16 0:31:418 days 18 hrs ago0xa3bf91a131fccfecc43999c9ff4612a25a572859 IN  0x157b6c44f47ecd30c0a2c428a6f35dbc606aa81b0 MATIC0.08508693192 323.718933505
[ Download CSV Export 
Latest 25 internal transaction
Parent Txn Hash Block From To Value
0x213af959cba38f5e76c4fb84d388a810d10d07246b53918dfde7772c8f4c26c5335055372022-09-24 11:31:237 hrs 8 mins ago 0x157b6c44f47ecd30c0a2c428a6f35dbc606aa81b0xa3bf91a131fccfecc43999c9ff4612a25a5728590.102338550008869341 MATIC
0x213af959cba38f5e76c4fb84d388a810d10d07246b53918dfde7772c8f4c26c5335055372022-09-24 11:31:237 hrs 8 mins ago 0x157b6c44f47ecd30c0a2c428a6f35dbc606aa81b 0x1111111254fb6c44bac0bed2854e76f90643097d65.171080648268624324 MATIC
0x458a6f7b429a405ccd655dfabd8c23186b8b42cd007c536bc41cadccdb9e79b1334794072022-09-23 20:21:0122 hrs 19 mins ago 0x13927a60c7bf4d3d00e3c1593e0ec713e35d2106 0x157b6c44f47ecd30c0a2c428a6f35dbc606aa81b65.568580896517784393 MATIC
0x5a58113d9adedcbe2320d88aea1c5eb2a784099cf41d505f4d6636de15b38bb1334391482022-09-22 20:53:431 day 21 hrs ago 0x157b6c44f47ecd30c0a2c428a6f35dbc606aa81b0xa3bf91a131fccfecc43999c9ff4612a25a5728590.00839925000100791 MATIC
0x5d00a63bf66a396c1c5999b7404dd508b2d7027874fb517f41a8a6b6a0737093334241062022-09-22 12:09:412 days 6 hrs ago 0x157b6c44f47ecd30c0a2c428a6f35dbc606aa81b0xa3bf91a131fccfecc43999c9ff4612a25a5728590.03569775000380776 MATIC
0x666b1851274a7421f0ee404b3c0eeafcd603d0fb3abb7f71ea9a7c10c3a5e0e9333962152022-09-21 20:06:022 days 22 hrs ago 0x157b6c44f47ecd30c0a2c428a6f35dbc606aa81b0xa3bf91a131fccfecc43999c9ff4612a25a5728590.008401366442063085 MATIC
0xd866e68b0ba7e7c3908c45b5454eb86df631e5b96c157fd08445333dcc970ded333934542022-09-21 18:28:573 days 11 mins ago 0x157b6c44f47ecd30c0a2c428a6f35dbc606aa81b0xa3bf91a131fccfecc43999c9ff4612a25a5728590.120571166941999465 MATIC
0x45bd8ab6d54c7f13b6f0bc615ea94c7f6cdbdd0ed61ced13eacc52e371722985333930712022-09-21 18:15:473 days 24 mins ago 0x157b6c44f47ecd30c0a2c428a6f35dbc606aa81b0xa3bf91a131fccfecc43999c9ff4612a25a5728590.01388918568637752 MATIC
0x38430aa4a03880c5756e08f19164185ff4b68677df66196f17e0fb0e16cd7e92333921172022-09-21 17:42:563 days 57 mins ago 0x157b6c44f47ecd30c0a2c428a6f35dbc606aa81b0xa3bf91a131fccfecc43999c9ff4612a25a5728590.035697755119771305 MATIC
0x985432a684c8a3cf22b6cdb24e6bfd552bcc9f97e859be2531a50a6087c68352333872302022-09-21 14:50:413 days 3 hrs ago 0x157b6c44f47ecd30c0a2c428a6f35dbc606aa81b0xa3bf91a131fccfecc43999c9ff4612a25a5728590.00986264625872061 MATIC
0x7189398eb585c5dd398eb14041b2ed786d918863217c6811f4926cc038bb2df4333250322022-09-20 1:43:204 days 16 hrs ago 0x157b6c44f47ecd30c0a2c428a6f35dbc606aa81b0xa3bf91a131fccfecc43999c9ff4612a25a5728590.035232600003758144 MATIC
0x3fe74dec55b40c1698a4b610a12822a1a7908212e6261482d1f8c5f4089b4752333176482022-09-19 21:29:214 days 21 hrs ago 0x157b6c44f47ecd30c0a2c428a6f35dbc606aa81b0xa3bf91a131fccfecc43999c9ff4612a25a5728590.052996377777327202 MATIC
0xc153a1642699b817dabf6f6f4b4c3504fcd43a9d2cf1321ca5ce777c597f2630333088012022-09-19 16:23:505 days 2 hrs ago 0x157b6c44f47ecd30c0a2c428a6f35dbc606aa81b0xa3bf91a131fccfecc43999c9ff4612a25a5728590.076752150014327068 MATIC
0xc153a1642699b817dabf6f6f4b4c3504fcd43a9d2cf1321ca5ce777c597f2630333088012022-09-19 16:23:505 days 2 hrs ago 0x157b6c44f47ecd30c0a2c428a6f35dbc606aa81b 0x1111111254fb6c44bac0bed2854e76f90643097d69.92685908179789959 MATIC
0x4a3aaec664d6023c83984d7803841afc954fe629c28188beca24bf2641c804a7333087892022-09-19 16:23:225 days 2 hrs ago 0x13927a60c7bf4d3d00e3c1593e0ec713e35d2106 0x157b6c44f47ecd30c0a2c428a6f35dbc606aa81b16.329694273919184017 MATIC
0xbf5807b0c37276e784473b9568faceebcd0a28fa0283f2bcd75002fbb70dc74d333015122022-09-19 12:12:435 days 6 hrs ago 0x157b6c44f47ecd30c0a2c428a6f35dbc606aa81b0xa3bf91a131fccfecc43999c9ff4612a25a5728590.00839924999630433 MATIC
0x1074cbcec3c4a80748191bbd346688b75cfdfcc9b53705446f0cabeedb8d7cb4332947712022-09-19 8:18:285 days 10 hrs ago 0x157b6c44f47ecd30c0a2c428a6f35dbc606aa81b0xa3bf91a131fccfecc43999c9ff4612a25a5728590.03866925000464031 MATIC
0x40d42bb2a5acdab4ae5144aadbe0f43e9164f97f982160c47ab8ca07fbcbd86b332889262022-09-19 4:57:315 days 13 hrs ago 0x13927a60c7bf4d3d00e3c1593e0ec713e35d2106 0x157b6c44f47ecd30c0a2c428a6f35dbc606aa81b14.129119247258731532 MATIC
0xd58930afd919903a65f2fb85074b81580ad26c320e2bfa7f186a9fffc43c3027332843992022-09-19 2:21:525 days 16 hrs ago 0x157b6c44f47ecd30c0a2c428a6f35dbc606aa81b0xa3bf91a131fccfecc43999c9ff4612a25a5728590.025282822990663005 MATIC
0x02019ad8fd3a4971433f82b0a02549609bce2f0268bd05c09a056c38e326d0a0332787332022-09-18 23:06:295 days 19 hrs ago 0x157b6c44f47ecd30c0a2c428a6f35dbc606aa81b0xa3bf91a131fccfecc43999c9ff4612a25a5728590.023823632706439425 MATIC
0xff43e2200424988cfb7c5e0bc65db7a2dc4b69928d71594772500f85b0330c14332766252022-09-18 21:51:515 days 20 hrs ago 0x157b6c44f47ecd30c0a2c428a6f35dbc606aa81b0xa3bf91a131fccfecc43999c9ff4612a25a5728590.03866925061561446 MATIC
0xbeac1eda1051b08391c990a6089e8c4df9bf5cdc1acf249b4ec52900eb32c0ea332696052022-09-18 17:48:206 days 51 mins ago 0x157b6c44f47ecd30c0a2c428a6f35dbc606aa81b0xa3bf91a131fccfecc43999c9ff4612a25a5728590.088026750008802675 MATIC
0x917a152eb88e3476d67241ea38bc5f20869eaaeae3108817a0eb5cd6952a5d2b332690372022-09-18 17:28:486 days 1 hr ago 0x157b6c44f47ecd30c0a2c428a6f35dbc606aa81b0xa3bf91a131fccfecc43999c9ff4612a25a5728590.052344687154796764 MATIC
0x6375ae8e0a31f6c3bb496f1503f07fafd7812a4111f3a2876cd8edb98e6d08dc332688002022-09-18 17:20:426 days 1 hr ago 0x157b6c44f47ecd30c0a2c428a6f35dbc606aa81b0xa3bf91a131fccfecc43999c9ff4612a25a5728590.053738480532419691 MATIC
0x5bbd9e5fe07c4d18f02eed4d5d9cdb6e4c2431d9b55ed08d470b8bef744c6391332687182022-09-18 17:17:506 days 1 hr ago 0x157b6c44f47ecd30c0a2c428a6f35dbc606aa81b0xa3bf91a131fccfecc43999c9ff4612a25a5728590.05508900000514164 MATIC
[ Download CSV Export 
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
GovernanceLeftoverExchanger

Compiler Version
v0.6.12+commit.27d51765

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, None license
/**
 *Submitted for verification at polygonscan.com on 2021-06-30
*/

// File: @openzeppelin/contracts/GSN/Context.sol

// SPDX-License-Identifier: MIT

pragma solidity ^0.6.0;

/*
 * @dev Provides information about the current execution context, including the
 * sender of the transaction and its data. While these are generally available
 * via msg.sender and msg.data, they should not be accessed in such a direct
 * manner, since when dealing with GSN meta-transactions the account sending and
 * paying for execution may not be the actual sender (as far as an application
 * is concerned).
 *
 * This contract is only required for intermediate, library-like contracts.
 */
abstract contract Context {
    function _msgSender() internal view virtual returns (address payable) {
        return msg.sender;
    }

    function _msgData() internal view virtual returns (bytes memory) {
        this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691
        return msg.data;
    }
}

// File: @openzeppelin/contracts/access/Ownable.sol


pragma solidity ^0.6.0;

/**
 * @dev Contract module which provides a basic access control mechanism, where
 * there is an account (an owner) that can be granted exclusive access to
 * specific functions.
 *
 * By default, the owner account will be the one that deploys the contract. This
 * can later be changed with {transferOwnership}.
 *
 * This module is used through inheritance. It will make available the modifier
 * `onlyOwner`, which can be applied to your functions to restrict their use to
 * the owner.
 */
contract Ownable is Context {
    address private _owner;

    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);

    /**
     * @dev Initializes the contract setting the deployer as the initial owner.
     */
    constructor () internal {
        address msgSender = _msgSender();
        _owner = msgSender;
        emit OwnershipTransferred(address(0), msgSender);
    }

    /**
     * @dev Returns the address of the current owner.
     */
    function owner() public view returns (address) {
        return _owner;
    }

    /**
     * @dev Throws if called by any account other than the owner.
     */
    modifier onlyOwner() {
        require(_owner == _msgSender(), "Ownable: caller is not the owner");
        _;
    }

    /**
     * @dev Leaves the contract without owner. It will not be possible to call
     * `onlyOwner` functions anymore. Can only be called by the current owner.
     *
     * NOTE: Renouncing ownership will leave the contract without an owner,
     * thereby removing any functionality that is only available to the owner.
     */
    function renounceOwnership() public virtual onlyOwner {
        emit OwnershipTransferred(_owner, address(0));
        _owner = address(0);
    }

    /**
     * @dev Transfers ownership of the contract to a new account (`newOwner`).
     * Can only be called by the current owner.
     */
    function transferOwnership(address newOwner) public virtual onlyOwner {
        require(newOwner != address(0), "Ownable: new owner is the zero address");
        emit OwnershipTransferred(_owner, newOwner);
        _owner = newOwner;
    }
}

// File: @openzeppelin/contracts/math/SafeMath.sol


pragma solidity ^0.6.0;

/**
 * @dev Wrappers over Solidity's arithmetic operations with added overflow
 * checks.
 *
 * Arithmetic operations in Solidity wrap on overflow. This can easily result
 * in bugs, because programmers usually assume that an overflow raises an
 * error, which is the standard behavior in high level programming languages.
 * `SafeMath` restores this intuition by reverting the transaction when an
 * operation overflows.
 *
 * Using this library instead of the unchecked operations eliminates an entire
 * class of bugs, so it's recommended to use it always.
 */
library SafeMath {
    /**
     * @dev Returns the addition of two unsigned integers, reverting on
     * overflow.
     *
     * Counterpart to Solidity's `+` operator.
     *
     * Requirements:
     *
     * - Addition cannot overflow.
     */
    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 c = a + b;
        require(c >= a, "SafeMath: addition overflow");

        return c;
    }

    /**
     * @dev Returns the subtraction of two unsigned integers, reverting on
     * overflow (when the result is negative).
     *
     * Counterpart to Solidity's `-` operator.
     *
     * Requirements:
     *
     * - Subtraction cannot overflow.
     */
    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return sub(a, b, "SafeMath: subtraction overflow");
    }

    /**
     * @dev Returns the subtraction of two unsigned integers, reverting with custom message on
     * overflow (when the result is negative).
     *
     * Counterpart to Solidity's `-` operator.
     *
     * Requirements:
     *
     * - Subtraction cannot overflow.
     */
    function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b <= a, errorMessage);
        uint256 c = a - b;

        return c;
    }

    /**
     * @dev Returns the multiplication of two unsigned integers, reverting on
     * overflow.
     *
     * Counterpart to Solidity's `*` operator.
     *
     * Requirements:
     *
     * - Multiplication cannot overflow.
     */
    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        // Gas optimization: this is cheaper than requiring 'a' not being zero, but the
        // benefit is lost if 'b' is also tested.
        // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522
        if (a == 0) {
            return 0;
        }

        uint256 c = a * b;
        require(c / a == b, "SafeMath: multiplication overflow");

        return c;
    }

    /**
     * @dev Returns the integer division of two unsigned integers. Reverts on
     * division by zero. The result is rounded towards zero.
     *
     * Counterpart to Solidity's `/` operator. Note: this function uses a
     * `revert` opcode (which leaves remaining gas untouched) while Solidity
     * uses an invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     *
     * - The divisor cannot be zero.
     */
    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return div(a, b, "SafeMath: division by zero");
    }

    /**
     * @dev Returns the integer division of two unsigned integers. Reverts with custom message on
     * division by zero. The result is rounded towards zero.
     *
     * Counterpart to Solidity's `/` operator. Note: this function uses a
     * `revert` opcode (which leaves remaining gas untouched) while Solidity
     * uses an invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     *
     * - The divisor cannot be zero.
     */
    function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b > 0, errorMessage);
        uint256 c = a / b;
        // assert(a == b * c + a % b); // There is no case in which this doesn't hold

        return c;
    }

    /**
     * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),
     * Reverts when dividing by zero.
     *
     * Counterpart to Solidity's `%` operator. This function uses a `revert`
     * opcode (which leaves remaining gas untouched) while Solidity uses an
     * invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     *
     * - The divisor cannot be zero.
     */
    function mod(uint256 a, uint256 b) internal pure returns (uint256) {
        return mod(a, b, "SafeMath: modulo by zero");
    }

    /**
     * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),
     * Reverts with custom message when dividing by zero.
     *
     * Counterpart to Solidity's `%` operator. This function uses a `revert`
     * opcode (which leaves remaining gas untouched) while Solidity uses an
     * invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     *
     * - The divisor cannot be zero.
     */
    function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b != 0, errorMessage);
        return a % b;
    }
}

// File: @openzeppelin/contracts/token/ERC20/IERC20.sol


pragma solidity ^0.6.0;

/**
 * @dev Interface of the ERC20 standard as defined in the EIP.
 */
interface IERC20 {
    /**
     * @dev Returns the amount of tokens in existence.
     */
    function totalSupply() external view returns (uint256);

    /**
     * @dev Returns the amount of tokens owned by `account`.
     */
    function balanceOf(address account) external view returns (uint256);

    /**
     * @dev Moves `amount` tokens from the caller's account to `recipient`.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * Emits a {Transfer} event.
     */
    function transfer(address recipient, uint256 amount) external returns (bool);

    /**
     * @dev Returns the remaining number of tokens that `spender` will be
     * allowed to spend on behalf of `owner` through {transferFrom}. This is
     * zero by default.
     *
     * This value changes when {approve} or {transferFrom} are called.
     */
    function allowance(address owner, address spender) external view returns (uint256);

    /**
     * @dev Sets `amount` as the allowance of `spender` over the caller's tokens.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * IMPORTANT: Beware that changing an allowance with this method brings the risk
     * that someone may use both the old and the new allowance by unfortunate
     * transaction ordering. One possible solution to mitigate this race
     * condition is to first reduce the spender's allowance to 0 and set the
     * desired value afterwards:
     * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729
     *
     * Emits an {Approval} event.
     */
    function approve(address spender, uint256 amount) external returns (bool);

    /**
     * @dev Moves `amount` tokens from `sender` to `recipient` using the
     * allowance mechanism. `amount` is then deducted from the caller's
     * allowance.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * Emits a {Transfer} event.
     */
    function transferFrom(address sender, address recipient, uint256 amount) external returns (bool);

    /**
     * @dev Emitted when `value` tokens are moved from one account (`from`) to
     * another (`to`).
     *
     * Note that `value` may be zero.
     */
    event Transfer(address indexed from, address indexed to, uint256 value);

    /**
     * @dev Emitted when the allowance of a `spender` for an `owner` is set by
     * a call to {approve}. `value` is the new allowance.
     */
    event Approval(address indexed owner, address indexed spender, uint256 value);
}

// File: contracts/helpers/UniERC20.sol


pragma solidity ^0.6.12;




library UniERC20 {
    using SafeMath for uint256;

    IERC20 private constant _ETH_ADDRESS = IERC20(0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE);
    IERC20 private constant _ZERO_ADDRESS = IERC20(0);

    function isETH(IERC20 token) internal pure returns (bool) {
        return (token == _ZERO_ADDRESS || token == _ETH_ADDRESS);
    }

    function uniBalanceOf(IERC20 token, address account) internal view returns (uint256) {
        if (isETH(token)) {
            return account.balance;
        } else {
            return token.balanceOf(account);
        }
    }

    function uniTransfer(IERC20 token, address payable to, uint256 amount) internal {
        if (amount > 0) {
            if (isETH(token)) {
                to.transfer(amount);
            } else {
                _callOptionalReturn(token, abi.encodeWithSelector(token.transfer.selector, to, amount));
            }
        }
    }

    function uniApprove(IERC20 token, address to, uint256 amount) internal {
        require(!isETH(token), "Approve called on ETH");

        // solhint-disable-next-line avoid-low-level-calls
        (bool success, bytes memory returndata) = address(token).call(abi.encodeWithSelector(token.approve.selector, to, amount));

        if (!success || (returndata.length > 0 && !abi.decode(returndata, (bool)))) {
            _callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, to, 0));
            _callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, to, amount));
        }
    }

    function _callOptionalReturn(IERC20 token, bytes memory data) private {
        // solhint-disable-next-line avoid-low-level-calls
        (bool success, bytes memory returndata) = address(token).call(data);
        require(success, "low-level call failed");

        if (returndata.length > 0) { // Return data is optional
            require(abi.decode(returndata, (bool)), "ERC20 operation did not succeed");
        }
    }
}

// File: contracts/GovernanceLeftoverExchanger.sol


pragma solidity ^0.6.12;
pragma experimental ABIEncoderV2;




contract GovernanceLeftoverExchanger is Ownable {
    using UniERC20 for IERC20;

    event Action (bool success, address to, bytes result);

    struct Call {
        address to;
        uint256 value;
        bytes data;
    }

    receive() external payable {}

    // payable for paths with 0x
    function makeCallsNoThrow(Call[] calldata calls) external payable onlyOwner {
        uint256 startGas = gasleft();
        for (uint i = 0; i < calls.length; i++) {
            (bool ok, bytes memory result) = calls[i].to.call{value : calls[i].value}(calls[i].data);
            emit Action(ok, calls[i].to, result);
        }
        uint256 gasRefund = (startGas - gasleft() + 21000 + (msg.data.length * 5) + 2000) * tx.gasprice;
        if (address(this).balance >= gasRefund) {
            tx.origin.transfer(gasRefund);
        }
    }

    // payable for paths with 0x
    function makeCalls(Call[] calldata calls) external payable onlyOwner {
        for (uint i = 0; i < calls.length; i++) {
            (bool ok,) = calls[i].to.call{value : calls[i].value}(calls[i].data);
            require(ok, "swap failed");
        }
    }

    function rescueFunds(IERC20 token, uint256 amount) external onlyOwner {
        token.uniTransfer(msg.sender, amount);
    }
}

Contract Security Audit

Contract ABI

[{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"success","type":"bool"},{"indexed":false,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"bytes","name":"result","type":"bytes"}],"name":"Action","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"inputs":[{"components":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"internalType":"struct GovernanceLeftoverExchanger.Call[]","name":"calls","type":"tuple[]"}],"name":"makeCalls","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"components":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"internalType":"struct GovernanceLeftoverExchanger.Call[]","name":"calls","type":"tuple[]"}],"name":"makeCallsNoThrow","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract IERC20","name":"token","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"rescueFunds","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

608060405234801561001057600080fd5b50600061001b61006a565b600080546001600160a01b0319166001600160a01b0383169081178255604051929350917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a35061006e565b3390565b610acc8061007d6000396000f3fe6080604052600436106100595760003560e01c8063473aaada14610065578063715018a61461007a578063785620281461008f57806378e3214f146100a25780638da5cb5b146100c2578063f2fde38b146100ed57610060565b3661006057005b600080fd5b61007861007336600461078d565b61010d565b005b34801561008657600080fd5b506100786102fa565b61007861009d36600461078d565b610379565b3480156100ae57600080fd5b506100786100bd36600461081c565b6104bd565b3480156100ce57600080fd5b506100d761050a565b6040516100e49190610873565b60405180910390f35b3480156100f957600080fd5b5061007861010836600461076a565b610519565b6101156105cf565b6000546001600160a01b0390811691161461014b5760405162461bcd60e51b815260040161014290610931565b60405180910390fd5b60005a905060005b828110156102a7576000606085858481811061016b57fe5b905060200281019061017d9190610a3d565b61018b90602081019061076a565b6001600160a01b03168686858181106101a057fe5b90506020028101906101b29190610a3d565b602001358787868181106101c257fe5b90506020028101906101d49190610a3d565b6101e29060408101906109f1565b6040516101f0929190610847565b60006040518083038185875af1925050503d806000811461022d576040519150601f19603f3d011682016040523d82523d6000602084013e610232565b606091505b50915091507f15ea97c5f34d18535b75336d587619fcbbcc608d697fbf77bd007514f9bccec38287878681811061026557fe5b90506020028101906102779190610a3d565b61028590602081019061076a565b83604051610295939291906108a0565b60405180910390a15050600101610153565b5060003a600536025a840361520801016107d0010290508047106102f457604051329082156108fc029083906000818181858888f193505050501580156102f2573d6000803e3d6000fd5b505b50505050565b6103026105cf565b6000546001600160a01b0390811691161461032f5760405162461bcd60e51b815260040161014290610931565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6103816105cf565b6000546001600160a01b039081169116146103ae5760405162461bcd60e51b815260040161014290610931565b60005b818110156104b85760008383838181106103c757fe5b90506020028101906103d99190610a3d565b6103e790602081019061076a565b6001600160a01b03168484848181106103fc57fe5b905060200281019061040e9190610a3d565b6020013585858581811061041e57fe5b90506020028101906104309190610a3d565b61043e9060408101906109f1565b60405161044c929190610847565b60006040518083038185875af1925050503d8060008114610489576040519150601f19603f3d011682016040523d82523d6000602084013e61048e565b606091505b50509050806104af5760405162461bcd60e51b8152600401610142906109cc565b506001016103b1565b505050565b6104c56105cf565b6000546001600160a01b039081169116146104f25760405162461bcd60e51b815260040161014290610931565b6105066001600160a01b03831633836105d3565b5050565b6000546001600160a01b031690565b6105216105cf565b6000546001600160a01b0390811691161461054e5760405162461bcd60e51b815260040161014290610931565b6001600160a01b0381166105745760405162461bcd60e51b8152600401610142906108eb565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b3390565b80156104b8576105e283610679565b15610623576040516001600160a01b0383169082156108fc029083906000818181858888f1935050505015801561061d573d6000803e3d6000fd5b506104b8565b6104b88363a9059cbb60e01b8484604051602401610642929190610887565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b0319909316929092179091526106b3565b60006001600160a01b03821615806106ad57506001600160a01b03821673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee145b92915050565b60006060836001600160a01b0316836040516106cf9190610857565b6000604051808303816000865af19150503d806000811461070c576040519150601f19603f3d011682016040523d82523d6000602084013e610711565b606091505b5091509150816107335760405162461bcd60e51b81526004016101429061099d565b8051156102f4578080602001905181019061074e91906107fc565b6102f45760405162461bcd60e51b815260040161014290610966565b60006020828403121561077b578081fd5b813561078681610a7e565b9392505050565b6000806020838503121561079f578081fd5b823567ffffffffffffffff808211156107b6578283fd5b818501915085601f8301126107c9578283fd5b8135818111156107d7578384fd5b86602080830285010111156107ea578384fd5b60209290920196919550909350505050565b60006020828403121561080d578081fd5b81518015158114610786578182fd5b6000806040838503121561082e578182fd5b823561083981610a7e565b946020939093013593505050565b6000828483379101908152919050565b60008251610869818460208701610a52565b9190910192915050565b6001600160a01b0391909116815260200190565b6001600160a01b03929092168252602082015260400190565b6000841515825260018060a01b03841660208301526060604083015282518060608401526108d5816080850160208701610a52565b601f01601f191691909101608001949350505050565b60208082526026908201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160408201526564647265737360d01b606082015260800190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b6020808252601f908201527f4552433230206f7065726174696f6e20646964206e6f74207375636365656400604082015260600190565b6020808252601590820152741b1bddcb5b195d995b0818d85b1b0819985a5b1959605a1b604082015260600190565b6020808252600b908201526a1cddd85c0819985a5b195960aa1b604082015260600190565b6000808335601e19843603018112610a07578283fd5b83018035915067ffffffffffffffff821115610a21578283fd5b602001915036819003821315610a3657600080fd5b9250929050565b60008235605e19833603018112610869578182fd5b60005b83811015610a6d578181015183820152602001610a55565b838111156102f45750506000910152565b6001600160a01b0381168114610a9357600080fd5b5056fea2646970667358221220b77f4bb056295d203e0639c71525816066b37138478136deca0b1c70ca73169064736f6c634300060c0033

Block Transaction Gas Used Reward
Age Block Fee Address BC Fee Address Voting Power Jailed Incoming
Block Uncle Number Difficulty Gas Used Reward
Loading
Loading
Make sure to use the "Vote Down" button for any spammy posts, and the "Vote Up" for interesting conversations.