Forkchoice Ethereum Mainnet

Address Contract Verified

Address 0xAF05C4a3d4A19669678CFdf70ca663F7a6aD0a86
Balance 0 ETH
Nonce 1
Code Size 6425 bytes
Indexed Transactions 0 (1 on-chain, 1.2% indexed)
External Etherscan · Sourcify

Contract Bytecode

6425 bytes
0x6080604052600436106100955760003560e01c8063a7f8b03811610059578063a7f8b03814610232578063b59f6080146102ad578063da9c35b1146102b7578063dffb6ef81461030e578063fefbbe67146103695761009c565b806313af4035146100a15780633fc8cef3146100f25780635802e2a4146101495780637298d36e146101845780638da5cb5b146101db5761009c565b3661009c57005b600080fd5b3480156100ad57600080fd5b506100f0600480360360208110156100c457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610380565b005b3480156100fe57600080fd5b50610107610485565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561015557600080fd5b506101826004803603602081101561016c57600080fd5b810190808035906020019092919050505061049d565b005b34801561019057600080fd5b50610199610a6e565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156101e757600080fd5b506101f0610a86565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561023e57600080fd5b506102ab6004803603606081101561025557600080fd5b8101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610aab565b005b6102b5610cd0565b005b3480156102c357600080fd5b506102cc61114e565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561031a57600080fd5b506103676004803603604081101561033157600080fd5b8101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611166565b005b34801561037557600080fd5b5061037e6112e9565b005b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610442576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260068152602001807f214f776e6572000000000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b73c02aaa39b223fe8d0a0e5c4f27ead9083c756cc281565b600073a1d65e8fb6e87b60feccbc582f7f97804b72552173ffffffffffffffffffffffffffffffffffffffff166370a08231336040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561053057600080fd5b505afa158015610544573d6000803e3d6000fd5b505050506040513d602081101561055a57600080fd5b81019080805190602001909291905050509050600073a1d65e8fb6e87b60feccbc582f7f97804b72552173ffffffffffffffffffffffffffffffffffffffff1663dd62ed3e33306040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019250505060206040518083038186803b15801561063457600080fd5b505afa158015610648573d6000803e3d6000fd5b505050506040513d602081101561065e57600080fd5b810190808051906020019092919050505090508282101580156106815750828110155b15610a69576106c733308573a1d65e8fb6e87b60feccbc582f7f97804b72552173ffffffffffffffffffffffffffffffffffffffff166113f6909392919063ffffffff16565b6060600267ffffffffffffffff811180156106e157600080fd5b506040519080825280602002602001820160405280156107105781602001602082028036833780820191505090505b50905073a1d65e8fb6e87b60feccbc582f7f97804b7255218160008151811061073557fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505073c02aaa39b223fe8d0a0e5c4f27ead9083c756cc28160018151811061079157fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff166318cbafe58560018430610815610708426114e390919063ffffffff16565b6040518663ffffffff1660e01b815260040180868152602001858152602001806020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001838152602001828103825285818151815260200191508051906020019060200280838360005b838110156108ab578082015181840152602081019050610890565b505050509050019650505050505050600060405180830381600087803b1580156108d457600080fd5b505af11580156108e8573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f82011682018060405250602081101561091257600080fd5b810190808051604051939291908464010000000082111561093257600080fd5b8382019150602082018581111561094857600080fd5b825186602082028301116401000000008211171561096557600080fd5b8083526020830192505050908051906020019060200280838360005b8381101561099c578082015181840152602081019050610981565b505050509050016040525050505073a1d65e8fb6e87b60feccbc582f7f97804b72552173ffffffffffffffffffffffffffffffffffffffff1663a59ac6dd47334760016040518563ffffffff1660e01b8152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200183815260200182815260200193505050506000604051808303818588803b158015610a4e57600080fd5b505af1158015610a62573d6000803e3d6000fd5b5050505050505b505050565b737a250d5630b4cf539739df2c5dacb4c659f2488d81565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610b6d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260068152602001807f214f776e6572000000000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b60008273ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015610bec57600080fd5b505afa158015610c00573d6000803e3d6000fd5b505050506040513d6020811015610c1657600080fd5b8101908080519060200190929190505050905080841115610c9f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260068152602001807f2146756e6473000000000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b610cca82858573ffffffffffffffffffffffffffffffffffffffff1661156b9092919063ffffffff16565b50505050565b73a1d65e8fb6e87b60feccbc582f7f97804b72552173ffffffffffffffffffffffffffffffffffffffff1663a59ac6dd34303460016040518563ffffffff1660e01b8152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200183815260200182815260200193505050506000604051808303818588803b158015610d7457600080fd5b505af1158015610d88573d6000803e3d6000fd5b5050505050600073a1d65e8fb6e87b60feccbc582f7f97804b72552173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015610e2057600080fd5b505afa158015610e34573d6000803e3d6000fd5b505050506040513d6020811015610e4a57600080fd5b81019080805190602001909291905050509050600081111561114b576060600267ffffffffffffffff81118015610e8057600080fd5b50604051908082528060200260200182016040528015610eaf5781602001602082028036833780820191505090505b50905073a1d65e8fb6e87b60feccbc582f7f97804b72552181600081518110610ed457fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505073c02aaa39b223fe8d0a0e5c4f27ead9083c756cc281600181518110610f3057fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff166318cbafe58360018433610fb4610708426114e390919063ffffffff16565b6040518663ffffffff1660e01b815260040180868152602001858152602001806020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001838152602001828103825285818151815260200191508051906020019060200280838360005b8381101561104a57808201518184015260208101905061102f565b505050509050019650505050505050600060405180830381600087803b15801561107357600080fd5b505af1158015611087573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f8201168201806040525060208110156110b157600080fd5b81019080805160405193929190846401000000008211156110d157600080fd5b838201915060208201858111156110e757600080fd5b825186602082028301116401000000008211171561110457600080fd5b8083526020830192505050908051906020019060200280838360005b8381101561113b578082015181840152602081019050611120565b5050505090500160405250505050505b50565b73a1d65e8fb6e87b60feccbc582f7f97804b72552181565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611228576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260068152602001807f214f776e6572000000000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b4782111561129e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260068152602001807f2146756e6473000000000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff166108fc839081150290604051600060405180830381858888f193505050501580156112e4573d6000803e3d6000fd5b505050565b73a1d65e8fb6e87b60feccbc582f7f97804b72552173ffffffffffffffffffffffffffffffffffffffff1663095ea7b3737a250d5630b4cf539739df2c5dacb4c659f2488d7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b1580156113b857600080fd5b505af11580156113cc573d6000803e3d6000fd5b505050506040513d60208110156113e257600080fd5b810190808051906020019092919050505050565b6114dd846323b872dd60e01b858585604051602401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050611623565b50505050565b600080828401905083811015611561576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b61161e8363a9059cbb60e01b8484604051602401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050611623565b505050565b6116428273ffffffffffffffffffffffffffffffffffffffff1661186e565b6116b4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f5361666545524332303a2063616c6c20746f206e6f6e2d636f6e74726163740081525060200191505060405180910390fd5b600060608373ffffffffffffffffffffffffffffffffffffffff16836040518082805190602001908083835b6020831061170357805182526020820191506020810190506020830392506116e0565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114611765576040519150601f19603f3d011682016040523d82523d6000602084013e61176a565b606091505b5091509150816117e2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c656481525060200191505060405180910390fd5b6000815111156118685780806020019051602081101561180157600080fd5b8101908080519060200190929190505050611867576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a8152602001806118ba602a913960400191505060405180910390fd5b5b50505050565b60008060007fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a47060001b9050833f91506000801b82141580156118b05750808214155b9250505091905056fe5361666545524332303a204552433230206f7065726174696f6e20646964206e6f742073756363656564a26469706673582212201a6a9c476e3bb6e2078ae13afa2ab898df827c4acf8a5229a8336aa81a2e4c9c64736f6c63430006060033

Verified Source Code Full Match

Compiler: v0.6.6+commit.6c089d02 EVM: istanbul Optimization: No
farm.sol 198 lines
pragma solidity ^0.6.6;


interface IERC20 {
    function totalSupply() external view returns (uint256);
    function balanceOf(address account) external view returns (uint256);
    function transfer(address recipient, uint256 amount) external returns (bool);
    function allowance(address owner, address spender) external view returns (uint256);
    function decimals() external view returns (uint);
    function approve(address spender, uint256 amount) external returns (bool);
    function transferFrom(address sender, address recipient, uint256 amount) external returns (bool);
    event Transfer(address indexed from, address indexed to, uint256 value);
    event Approval(address indexed owner, address indexed spender, uint256 value);
}

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

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

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

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

        return c;
    }
    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return div(a, b, "SafeMath: division by zero");
    }
    function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        // Solidity only automatically asserts when dividing by 0
        require(b > 0, errorMessage);
        uint256 c = a / b;

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

library Address {
    function isContract(address account) internal view returns (bool) {
        bytes32 codehash;
        bytes32 accountHash = 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470;
        // solhint-disable-next-line no-inline-assembly
        assembly { codehash := extcodehash(account) }
        return (codehash != 0x0 && codehash != accountHash);
    }
    function toPayable(address account) internal pure returns (address payable) {
        return address(uint160(account));
    }
    function sendValue(address payable recipient, uint256 amount) internal {
        require(address(this).balance >= amount, "Address: insufficient balance");

        // solhint-disable-next-line avoid-call-value
        (bool success, ) = recipient.call.value(amount)("");
        require(success, "Address: unable to send value, recipient may have reverted");
    }
}

library SafeERC20 {
    using SafeMath for uint256;
    using Address for address;

    function safeTransfer(IERC20 token, address to, uint256 value) internal {
        callOptionalReturn(token, abi.encodeWithSelector(token.transfer.selector, to, value));
    }

    function safeTransferFrom(IERC20 token, address from, address to, uint256 value) internal {
        callOptionalReturn(token, abi.encodeWithSelector(token.transferFrom.selector, from, to, value));
    }

    function safeApprove(IERC20 token, address spender, uint256 value) internal {
        require((value == 0) || (token.allowance(address(this), spender) == 0),
            "SafeERC20: approve from non-zero to non-zero allowance"
        );
        callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, value));
    }
    function callOptionalReturn(IERC20 token, bytes memory data) private {
        require(address(token).isContract(), "SafeERC20: call to non-contract");

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

        if (returndata.length > 0) { // Return data is optional
            // solhint-disable-next-line max-line-length
            require(abi.decode(returndata, (bool)), "SafeERC20: ERC20 operation did not succeed");
        }
    }
}

interface Uni {
    function swapExactTokensForTokens(uint, uint, address[] calldata, address, uint) external;

	function swapExactTokensForETH(uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline)
	external
	returns (uint[] memory amounts);

	function swapExactETHForTokens(uint amountOutMin, address[] calldata path, address to, uint deadline)
	external
	payable
	returns (uint[] memory amounts);
}

interface DXDDAO {
	function buy(address receiver, uint256 etherValue, uint256 _minTokensBought) external payable;
}

contract DXDFarming {
	using SafeERC20 for IERC20;
    using Address for address;
    using SafeMath for uint256;

	address constant public DXD = address(0xa1d65E8fB6e87b60FECCBc582F7f97804B725521);
    address constant public univ2 = address(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
    address constant public weth = address(0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2);

	address public owner;

	receive() external payable {}

	constructor () public {
		owner = msg.sender;
	}
	
	function setOwner(address _newOwner) external {
	    require(msg.sender == owner, "!Owner");
	    owner = _newOwner;
	}

	function sendBackLostEth(uint _amount, address payable _recipient) external {
		require(msg.sender == owner, "!Owner");
		require(_amount <= address(this).balance, "!Funds");
		_recipient.transfer(_amount);
	}

	function sendBackLostToken(uint _amount, address _tokenAddress, address _recipient) external {
		require(msg.sender == owner, "!Owner");
		uint balance = IERC20(_tokenAddress).balanceOf(address(this));
		require (_amount <= balance, "!Funds");
		IERC20(_tokenAddress).safeTransfer(_recipient, _amount);
	}

	function approveDXD() public {
		IERC20(DXD).approve(univ2, 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff);
    }

	// profit if uni price > bond price
	// accumulation play
	// req initial amount of dxd && approve() contract to use DXD token
	function SellUniBuyBond(uint256 _amount) public {
		uint dxdAmount = IERC20(DXD).balanceOf(msg.sender);
		uint dxdAllowance = IERC20(DXD).allowance(msg.sender, address(this));
		if (dxdAmount >= _amount && dxdAllowance >= _amount) {
			IERC20(DXD).safeTransferFrom(msg.sender, address(this), _amount);
			address[] memory path = new address[](2);
				path[0] = DXD;
				path[1] = weth;
			Uni(univ2).swapExactTokensForETH(_amount, 1, path, address(this), now.add(1800));
			DXDDAO(DXD).buy{value: address(this).balance}(msg.sender, address(this).balance, 1);
		}
	}

	// profit if uni price > bond price
	// quick flip play
	// require ether
	function BuyBondSellUni() external payable {
		DXDDAO(DXD).buy{value: msg.value}(address(this), msg.value, 1);
		uint dxdAmount = IERC20(DXD).balanceOf(address(this));
		if (dxdAmount > 0) {
			address[] memory path = new address[](2);
				path[0] = DXD;
				path[1] = weth;
			Uni(univ2).swapExactTokensForETH(dxdAmount, 1, path, msg.sender, now.add(1800));
		}
	}
}

Read Contract

DXD 0xda9c35b1 → address
owner 0x8da5cb5b → address
univ2 0x7298d36e → address
weth 0x3fc8cef3 → address

Write Contract 6 functions

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

BuyBondSellUni 0xb59f6080
No parameters
SellUniBuyBond 0x5802e2a4
uint256 _amount
approveDXD 0xfefbbe67
No parameters
sendBackLostEth 0xdffb6ef8
uint256 _amount
address _recipient
sendBackLostToken 0xa7f8b038
uint256 _amount
address _tokenAddress
address _recipient
setOwner 0x13af4035
address _newOwner

Recent Transactions

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