Address Contract Verified
Address
0xAF05C4a3d4A19669678CFdf70ca663F7a6aD0a86
Balance
0 ETH
Nonce
1
Code Size
6425 bytes
Creator
0xf521Bb74...6773 at tx 0x35ab67e5...7d6adb
Indexed Transactions
0 (1 on-chain, 1.2% indexed)
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 →