Forkchoice Ethereum Mainnet

Address Contract Partially Verified

Address 0x617bED8699F71fE830a50469bd474bc8481F5235
Balance 0 ETH
Nonce 1
Code Size 3051 bytes
Indexed Transactions 0 (1 on-chain, 1.5% indexed)
External Etherscan · Sourcify

Contract Bytecode

3051 bytes
Copy Bytecode
0x608060405234801561001057600080fd5b50600436106100bb576000357c01000000000000000000000000000000000000000000000000000000009004806393c0b0961161008357806393c0b09614610193578063bf7e214f1461019b578063d4ee1d90146101a3578063dc674bbb146101ab578063f2fde38b146101d9576100bb565b8063078d3b79146100c05780632e4c697f1461010a57806379ba50971461013f5780637a9e5e4b146101495780638da5cb5b1461016f575b600080fd5b6100f6600480360360608110156100d657600080fd5b50600160a060020a038135811691602081013590911690604001356101ff565b604080519115158252519081900360200190f35b61012d6004803603604081101561012057600080fd5b50803590602001356104cc565b60408051918252519081900360200190f35b610147610531565b005b6101476004803603602081101561015f57600080fd5b5035600160a060020a03166105f0565b6101776106a8565b60408051600160a060020a039092168252519081900360200190f35b6101476106b7565b610177610762565b610177610771565b610147600480360360408110156101c157600080fd5b50600160a060020a0381358116916020013516610780565b610147600480360360208110156101ef57600080fd5b5035600160a060020a031661089e565b600082600160a060020a0381161515610262576040805160e560020a62461bcd02815260206004820152601e60248201527f56616c6964416464726573733a206164647265737320696e76616c69642e0000604482015290519081900360640190fd5b61028d336000357bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191661097c565b15156102e3576040805160e560020a62461bcd02815260206004820152601460248201527f64732d617574682d756e617574686f72697a6564000000000000000000000000604482015290519081900360640190fd5b600085600160a060020a03166370a08231866040518263ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004018082600160a060020a0316600160a060020a0316815260200191505060206040518083038186803b15801561035757600080fd5b505afa15801561036b573d6000803e3d6000fd5b505050506040513d602081101561038157600080fd5b5051604080517fa9059cbb000000000000000000000000000000000000000000000000000000008152600160a060020a0388811660048301526024820188905291519293509088169163a9059cbb916044808201926020929091908290030181600087803b1580156103f257600080fd5b505af1158015610406573d6000803e3d6000fd5b505050506040513d602081101561041c57600080fd5b5050604080517f70a08231000000000000000000000000000000000000000000000000000000008152600160a060020a038781166004830152915186926104b992908a16916370a0823191602480820192602092909190829003018186803b15801561048757600080fd5b505afa15801561049b573d6000803e3d6000fd5b505050506040513d60208110156104b157600080fd5b505183610a93565b146104c057fe5b50600195945050505050565b60008115156104dd5750600161052b565b81600114156104ed57508161052b565b821580156104fa57508115155b156105075750600061052b565b8260015b838110156105275761051d8286610aee565b915060010161050b565b5090505b92915050565b600254600160a060020a0316331461057d5760405160e560020a62461bcd028152600401808060200182810382526028815260200180610b766028913960400191505060405180910390fd5b600254600154604051600160a060020a0392831692909116907f343765429aea5a34b3ff6a3785a98a5abb2597aca87bfbb58632c173d585373a90600090a3600280546001805473ffffffffffffffffffffffffffffffffffffffff19908116600160a060020a03841617909155169055565b6105f933610b61565b151561064f576040805160e560020a62461bcd02815260206004820152601160248201527f64732d617574682d6e6f6e2d6f776e6572000000000000000000000000000000604482015290519081900360640190fd5b6000805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a03838116919091178083556040519116917f1abebea81bfa2637f28358c371278fb15ede7ea8dd28d2e03b112ff6d936ada491a250565b600154600160a060020a031681565b6106c033610b61565b1515610716576040805160e560020a62461bcd02815260206004820152601160248201527f64732d617574682d6e6f6e2d6f776e6572000000000000000000000000000000604482015290519081900360640190fd5b6001805473ffffffffffffffffffffffffffffffffffffffff1916905560405160009033907f343765429aea5a34b3ff6a3785a98a5abb2597aca87bfbb58632c173d585373a908390a3565b600054600160a060020a031681565b600254600160a060020a031681565b6107ab336000357bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191661097c565b1515610801576040805160e560020a62461bcd02815260206004820152601460248201527f64732d617574682d756e617574686f72697a6564000000000000000000000000604482015290519081900360640190fd5b604080517f095ea7b3000000000000000000000000000000000000000000000000000000008152600160a060020a038381166004830152600019602483015291519184169163095ea7b3916044808201926020929091908290030181600087803b15801561086e57600080fd5b505af1158015610882573d6000803e3d6000fd5b505050506040513d602081101561089857600080fd5b50505050565b6108a733610b61565b15156108fd576040805160e560020a62461bcd02815260206004820152601160248201527f64732d617574682d6e6f6e2d6f776e6572000000000000000000000000000000604482015290519081900360640190fd5b600154600160a060020a038281169116141561094d5760405160e560020a62461bcd028152600401808060200182810382526022815260200180610b9e6022913960400191505060405180910390fd5b6002805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b6000600160a060020a0383163014156109975750600161052b565b600154600160a060020a03848116911614156109b55750600161052b565b600054600160a060020a031615156109cf5750600061052b565b600054604080517fb7009613000000000000000000000000000000000000000000000000000000008152600160a060020a0386811660048301523060248301527bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19861660448301529151919092169163b7009613916064808301926020929190829003018186803b158015610a6057600080fd5b505afa158015610a74573d6000803e3d6000fd5b505050506040513d6020811015610a8a57600080fd5b5051905061052b565b8082038281111561052b576040805160e560020a62461bcd02815260206004820152601560248201527f64732d6d6174682d7375622d756e646572666c6f770000000000000000000000604482015290519081900360640190fd5b6000811580610b0b575050808202828282811515610b0857fe5b04145b151561052b576040805160e560020a62461bcd02815260206004820152601460248201527f64732d6d6174682d6d756c2d6f766572666c6f77000000000000000000000000604482015290519081900360640190fd5b600154600160a060020a039081169116149056fe4163636570744f776e6572736869703a206f6e6c79206e6577206f776e657220646f20746869732e5472616e736665724f776e6572736869703a207468652073616d65206f776e65722ea165627a7a72305820880e155dfaaa8296e64672312c50cfca7594d27a22603b1fd7695944f0b5cec00029

Verified Source Code Partial Match

Compiler: v0.5.2+commit.1df8f40c EVM: byzantium Optimization: Yes (200 runs)
DFCollateral.sol 163 lines
pragma solidity ^0.5.2;

contract IERC20Token {
    function balanceOf(address _owner) public view returns (uint);
    function allowance(address _owner, address _spender) public view returns (uint);
    function transfer(address _to, uint _value) public returns (bool success);
    function transferFrom(address _from, address _to, uint _value) public returns (bool success);
    function approve(address _spender, uint _value) public returns (bool success);
    function totalSupply() public view returns (uint);
}

contract Utils {
    modifier validAddress(address _address) {
        require(_address != address(0), "ValidAddress: address invalid.");
        _;
    }
}

contract DSAuthority {
    function canCall(
        address src, address dst, bytes4 sig
    ) public view returns (bool);
}

contract DSAuthEvents {
    event LogSetAuthority (address indexed authority);
    event LogSetOwner     (address indexed owner);
    event OwnerUpdate     (address indexed owner, address indexed newOwner);
}

contract DSAuth is DSAuthEvents {
    DSAuthority  public  authority;
    address      public  owner;
    address      public  newOwner;

    constructor() public {
        owner = msg.sender;
        emit LogSetOwner(msg.sender);
    }

    // Warning: you should absolutely sure you want to give up authority!!!
    function disableOwnership() public onlyOwner {
        owner = address(0);
        emit OwnerUpdate(msg.sender, owner);
    }

    function transferOwnership(address newOwner_) public onlyOwner {
        require(newOwner_ != owner, "TransferOwnership: the same owner.");
        newOwner = newOwner_;
    }

    function acceptOwnership() public {
        require(msg.sender == newOwner, "AcceptOwnership: only new owner do this.");
        emit OwnerUpdate(owner, newOwner);
        owner = newOwner;
        newOwner = address(0x0);
    }

    ///[snow] guard is Authority who inherit DSAuth.
    function setAuthority(DSAuthority authority_)
        public
        onlyOwner
    {
        authority = authority_;
        emit LogSetAuthority(address(authority));
    }

    modifier onlyOwner {
        require(isOwner(msg.sender), "ds-auth-non-owner");
        _;
    }

    function isOwner(address src) internal view returns (bool) {
        return bool(src == owner);
    }

    modifier auth {
        require(isAuthorized(msg.sender, msg.sig), "ds-auth-unauthorized");
        _;
    }

    function isAuthorized(address src, bytes4 sig) internal view returns (bool) {
        if (src == address(this)) {
            return true;
        } else if (src == owner) {
            return true;
        } else if (authority == DSAuthority(0)) {
            return false;
        } else {
            return authority.canCall(src, address(this), sig);
        }
    }
}

contract DSMath {
    function add(uint x, uint y) internal pure returns (uint z) {
        require((z = x + y) >= x, "ds-math-add-overflow");
    }
    function sub(uint x, uint y) internal pure returns (uint z) {
        require((z = x - y) <= x, "ds-math-sub-underflow");
    }
    function mul(uint x, uint y) internal pure returns (uint z) {
        require(y == 0 || (z = x * y) / y == x, "ds-math-mul-overflow");
    }

    function div(uint x, uint y) internal pure returns (uint z) {
        require(y > 0, "ds-math-div-overflow");
        z = x / y;
    }

    function min(uint x, uint y) internal pure returns (uint z) {
        return x <= y ? x : y;
    }
    function max(uint x, uint y) internal pure returns (uint z) {
        return x >= y ? x : y;
    }

    uint constant WAD = 10 ** 18;

    function wdiv(uint x, uint y) internal pure returns (uint z) {
        z = add(mul(x, WAD), y / 2) / y;
    }

    /**
     * @dev x to the power of y power(base, exponent)
     */
    function pow(uint256 base, uint256 exponent) public pure returns (uint256) {
        if (exponent == 0) {
            return 1;
        }
        else if (exponent == 1) {
            return base;
        }
        else if (base == 0 && exponent != 0) {
            return 0;
        }
        else {
            uint256 z = base;
            for (uint256 i = 1; i < exponent; i++)
                z = mul(z, base);
            return z;
        }
    }
}

contract DFCollateral is DSMath, DSAuth, Utils {

    function transferOut(address _tokenID, address _to, uint _amount)
        public
        validAddress(_to)
        auth
        returns (bool)
    {
        uint _balance = IERC20Token(_tokenID).balanceOf(_to);
        IERC20Token(_tokenID).transfer(_to, _amount);
        assert(sub(IERC20Token(_tokenID).balanceOf(_to), _balance) == _amount);
        return true;
    }

    function approveToEngine(address _tokenIdx, address _engineAddress) public auth {
        IERC20Token(_tokenIdx).approve(_engineAddress, uint(-1));
    }
}

Read Contract

authority 0xbf7e214f → address
newOwner 0xd4ee1d90 → address
owner 0x8da5cb5b → address
pow 0x2e4c697f → uint256

Write Contract 6 functions

These functions modify contract state and require a wallet transaction to execute.

acceptOwnership 0x79ba5097
No parameters
approveToEngine 0xdc674bbb
address _tokenIdx
address _engineAddress
disableOwnership 0x93c0b096
No parameters
setAuthority 0x7a9e5e4b
address authority_
transferOut 0x078d3b79
address _tokenID
address _to
uint256 _amount
returns: bool
transferOwnership 0xf2fde38b
address newOwner_

Recent Transactions

This address has 1 on-chain transactions, but only 1.5% of the chain is indexed. Transactions will appear as indexing progresses. View on Etherscan →