Contract 0x91Dd204Be9bb6A4fDAB11a4d4E39A03a89Bc14e4 1

Contract Overview

Balance:
0 AVAX
Txn Hash Method
Block
From
To
Value [Txn Fee]
0xcf96bf8f536dcf360aeef1676315e8692447e797583fe511b729a2396a80ac09Transfer Ownersh...43870462022-01-03 14:26:26266 days 18 hrs ago0x3f09e942b0089b8af73ccb9603da8064b6c4b637 IN 0x91dd204be9bb6a4fdab11a4d4e39a03a89bc14e40 AVAX0.00071572525
0xdbb162a4d1e66e2c0aa5892a0ef80f250d2f5c1e83ddb1f04ae8293e6c831654Set Caller43870172022-01-03 14:25:23266 days 18 hrs ago0x3f09e942b0089b8af73ccb9603da8064b6c4b637 IN 0x91dd204be9bb6a4fdab11a4d4e39a03a89bc14e40 AVAX0.0011587525
0x92b57b63fba6c18f147d280dd9942f0e0becd2303866618720061c685d127bff0x6080604043869572022-01-03 14:23:12266 days 18 hrs ago0x3f09e942b0089b8af73ccb9603da8064b6c4b637 IN  Contract Creation0 AVAX0.00943997525
[ Download CSV Export 
Parent Txn Hash Block From To Value
Loading

Similar Match Source Code
Note: This contract matches the deployed ByteCode of the Source Code for Contract 0x3d3F8FBc739679Bc499E769d2500c74b9e95C82b

Contract Name:
Forwarder

Compiler Version
v0.8.6+commit.11564f7e

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity Standard Json-Input format)

File 1 of 4 : Forwarder.sol
pragma solidity 0.8.6;


import "Ownable.sol";
import "IForwarder.sol";


contract Forwarder is IForwarder, Ownable {

    mapping(address => bool) private _canCall;


    constructor() Ownable() {}


    function forward(
        address target,
        bytes calldata callData
    ) external override payable returns (bool success, bytes memory returnData) {
        require(_canCall[msg.sender], "Forw: caller not the Registry");
        (success, returnData) = target.call{value: msg.value}(callData);
    }

    function canCall(address caller) external view returns (bool) {
        return _canCall[caller];
    }

    function setCaller(address caller, bool b) external onlyOwner {
        _canCall[caller] = b;
    }
}

File 2 of 4 : Ownable.sol
// SPDX-License-Identifier: MIT

pragma solidity ^0.8.0;

import "Context.sol";

/**
 * @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.
 */
abstract 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() {
        _setOwner(_msgSender());
    }

    /**
     * @dev Returns the address of the current owner.
     */
    function owner() public view virtual 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 {
        _setOwner(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");
        _setOwner(newOwner);
    }

    function _setOwner(address newOwner) private {
        address oldOwner = _owner;
        _owner = newOwner;
        emit OwnershipTransferred(oldOwner, newOwner);
    }
}

File 3 of 4 : Context.sol
// SPDX-License-Identifier: MIT

pragma solidity ^0.8.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 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) {
        return msg.sender;
    }

    function _msgData() internal view virtual returns (bytes calldata) {
        return msg.data;
    }
}

File 4 of 4 : IForwarder.sol
pragma solidity 0.8.6;


interface IForwarder {

    function forward(
        address target,
        bytes calldata callData
    ) external payable returns (bool success, bytes memory returnData);

}

Settings
{
  "evmVersion": "istanbul",
  "optimizer": {
    "enabled": true,
    "runs": 200
  },
  "outputSelection": {
    "*": {
      "*": [
        "evm.bytecode",
        "evm.deployedBytecode",
        "devdoc",
        "userdoc",
        "metadata",
        "abi"
      ]
    }
  }
}

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"inputs":[{"internalType":"address","name":"caller","type":"address"}],"name":"canCall","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"target","type":"address"},{"internalType":"bytes","name":"callData","type":"bytes"}],"name":"forward","outputs":[{"internalType":"bool","name":"success","type":"bool"},{"internalType":"bytes","name":"returnData","type":"bytes"}],"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":"address","name":"caller","type":"address"},{"internalType":"bool","name":"b","type":"bool"}],"name":"setCaller","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"}]

608060405234801561001057600080fd5b5061001a3361001f565b61006f565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b61056a8061007e6000396000f3fe6080604052600436106100555760003560e01c80636fadcf721461005a578063715018a6146100845780638da5cb5b1461009b5780639cae6eae146100c3578063cb6e7a89146100e3578063f2fde38b1461012c575b600080fd5b61006d61006836600461040d565b61014c565b60405161007b9291906104a0565b60405180910390f35b34801561009057600080fd5b5061009961021d565b005b3480156100a757600080fd5b506000546040516001600160a01b03909116815260200161007b565b3480156100cf57600080fd5b506100996100de3660046103d1565b610253565b3480156100ef57600080fd5b5061011c6100fe3660046103af565b6001600160a01b031660009081526001602052604090205460ff1690565b604051901515815260200161007b565b34801561013857600080fd5b506100996101473660046103af565b6102a8565b3360009081526001602052604081205460609060ff166101b35760405162461bcd60e51b815260206004820152601d60248201527f466f72773a2063616c6c6572206e6f742074686520526567697374727900000060448201526064015b60405180910390fd5b846001600160a01b03163485856040516101ce929190610490565b60006040518083038185875af1925050503d806000811461020b576040519150601f19603f3d011682016040523d82523d6000602084013e610210565b606091505b5090969095509350505050565b6000546001600160a01b031633146102475760405162461bcd60e51b81526004016101aa906104ff565b6102516000610343565b565b6000546001600160a01b0316331461027d5760405162461bcd60e51b81526004016101aa906104ff565b6001600160a01b03919091166000908152600160205260409020805460ff1916911515919091179055565b6000546001600160a01b031633146102d25760405162461bcd60e51b81526004016101aa906104ff565b6001600160a01b0381166103375760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016101aa565b61034081610343565b50565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b80356001600160a01b03811681146103aa57600080fd5b919050565b6000602082840312156103c157600080fd5b6103ca82610393565b9392505050565b600080604083850312156103e457600080fd5b6103ed83610393565b91506020830135801515811461040257600080fd5b809150509250929050565b60008060006040848603121561042257600080fd5b61042b84610393565b9250602084013567ffffffffffffffff8082111561044857600080fd5b818601915086601f83011261045c57600080fd5b81358181111561046b57600080fd5b87602082850101111561047d57600080fd5b6020830194508093505050509250925092565b8183823760009101908152919050565b821515815260006020604081840152835180604085015260005b818110156104d6578581018301518582016060015282016104ba565b818111156104e8576000606083870101525b50601f01601f191692909201606001949350505050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260408201526060019056fea2646970667358221220daea51217d9e4033d0f399bdc1a5ffd85fc40a4073d5755b0e84262db9f5237464736f6c63430008060033

Block Transaction Gas Used Reward
Age Block Fee Address BC Fee Address Voting Power Jailed Incoming
Block Uncle Number Difficulty Gas Used Reward
Loading