Source Code
Latest 25 from a total of 7,204 transactions
| Transaction Hash |
|
Block
|
From
|
To
|
|||||
|---|---|---|---|---|---|---|---|---|---|
| Dog Sleep | 59727883 | 26 days ago | IN | 0 S | 0.0017028 | ||||
| Dog Sleep | 58544593 | 41 days ago | IN | 0 S | 0.00229055 | ||||
| Dog Sleep | 55669147 | 75 days ago | IN | 0 S | 0.00264555 | ||||
| Dog Sleep | 54962731 | 81 days ago | IN | 0 S | 0.0015205 | ||||
| Get Sheep | 54104015 | 86 days ago | IN | 0 S | 0.0056505 | ||||
| Dog Sleep | 53427126 | 89 days ago | IN | 0 S | 0.00240505 | ||||
| Dog Sleep | 53329544 | 90 days ago | IN | 0 S | 0.0015205 | ||||
| Dog Sleep | 52466026 | 94 days ago | IN | 0 S | 0.0015205 | ||||
| Dog Sleep | 51866581 | 98 days ago | IN | 0 S | 0.00121775 | ||||
| Dog Sleep | 51866572 | 98 days ago | IN | 0 S | 0.0014481 | ||||
| Dog Sleep | 51811817 | 99 days ago | IN | 0 S | 0.00240505 | ||||
| Protect | 51811240 | 99 days ago | IN | 0 S | 0.00530875 | ||||
| Dog Sleep | 51336003 | 103 days ago | IN | 0 S | 0.00255751 | ||||
| Dog Sleep | 51113799 | 105 days ago | IN | 0 S | 0.00432909 | ||||
| Protect | 51113746 | 105 days ago | IN | 0 S | 0.00998433 | ||||
| Dog Sleep | 50760172 | 108 days ago | IN | 0 S | 0.00167255 | ||||
| Dog Sleep | 48715850 | 124 days ago | IN | 0 S | 0.0017377 | ||||
| Dog Sleep | 48644595 | 125 days ago | IN | 0 S | 0.00288606 | ||||
| Protect | 48644568 | 125 days ago | IN | 0 S | 0.00732098 | ||||
| Dog Sleep | 48644455 | 125 days ago | IN | 0 S | 0.00264555 | ||||
| Protect | 48644264 | 125 days ago | IN | 0 S | 0.00421789 | ||||
| Protect | 48643938 | 125 days ago | IN | 0 S | 0.00460134 | ||||
| Protect | 48643797 | 125 days ago | IN | 0 S | 0.00527236 | ||||
| Protect | 48643717 | 125 days ago | IN | 0 S | 0.00421861 | ||||
| Protect | 48642862 | 125 days ago | IN | 0 S | 0.00421789 |
Advanced mode: Intended for advanced users or developers and will display all Internal Transactions including zero value transfers.
Latest 25 internal transactions (View All)
Advanced mode:
| Parent Transaction Hash | Block | From | To | ||||
|---|---|---|---|---|---|---|---|
| 54104017 | 86 days ago | 0 S | |||||
| 54104017 | 86 days ago | 0 S | |||||
| 54104017 | 86 days ago | 0 S | |||||
| 54104017 | 86 days ago | 0 S | |||||
| 54104017 | 86 days ago | 0 S | |||||
| 54104017 | 86 days ago | 0 S | |||||
| 54104017 | 86 days ago | 0 S | |||||
| 54104017 | 86 days ago | 0 S | |||||
| 54104017 | 86 days ago | 0 S | |||||
| 54104015 | 86 days ago | 0 S | |||||
| 54104015 | 86 days ago | 0 S | |||||
| 51811240 | 99 days ago | 0 S | |||||
| 51113746 | 105 days ago | 0 S | |||||
| 48644568 | 125 days ago | 0 S | |||||
| 48644264 | 125 days ago | 0 S | |||||
| 48643938 | 125 days ago | 0 S | |||||
| 48643797 | 125 days ago | 0 S | |||||
| 48643717 | 125 days ago | 0 S | |||||
| 48642862 | 125 days ago | 0 S | |||||
| 48642666 | 125 days ago | 0 S | |||||
| 48642459 | 125 days ago | 0 S | |||||
| 48642347 | 125 days ago | 0 S | |||||
| 48642213 | 125 days ago | 0 S | |||||
| 48641726 | 125 days ago | 0 S | |||||
| 48640087 | 125 days ago | 0 S |
Cross-Chain Transactions
Loading...
Loading
Contract Name:
SHEEPDOG
Compiler Version
v0.8.13+commit.abaa5c0e
Contract Source Code (Solidity)
/**
*Submitted for verification at SonicScan.org on 2025-03-24
*/
// SPDX-License-Identifier: MIT
pragma solidity =0.8.13 ^0.8.0 ^0.8.13;
// lib/openzeppelin-contracts/contracts/security/ReentrancyGuard.sol
// OpenZeppelin Contracts (last updated v4.8.0) (security/ReentrancyGuard.sol)
/**
* @dev Contract module that helps prevent reentrant calls to a function.
*
* Inheriting from `ReentrancyGuard` will make the {nonReentrant} modifier
* available, which can be applied to functions to make sure there are no nested
* (reentrant) calls to them.
*
* Note that because there is a single `nonReentrant` guard, functions marked as
* `nonReentrant` may not call one another. This can be worked around by making
* those functions `private`, and then adding `external` `nonReentrant` entry
* points to them.
*
* TIP: If you would like to learn more about reentrancy and alternative ways
* to protect against it, check out our blog post
* https://blog.openzeppelin.com/reentrancy-after-istanbul/[Reentrancy After Istanbul].
*/
abstract contract ReentrancyGuard {
// Booleans are more expensive than uint256 or any type that takes up a full
// word because each write operation emits an extra SLOAD to first read the
// slot's contents, replace the bits taken up by the boolean, and then write
// back. This is the compiler's defense against contract upgrades and
// pointer aliasing, and it cannot be disabled.
// The values being non-zero value makes deployment a bit more expensive,
// but in exchange the refund on every call to nonReentrant will be lower in
// amount. Since refunds are capped to a percentage of the total
// transaction's gas, it is best to keep them low in cases like this one, to
// increase the likelihood of the full refund coming into effect.
uint256 private constant _NOT_ENTERED = 1;
uint256 private constant _ENTERED = 2;
uint256 private _status;
constructor() {
_status = _NOT_ENTERED;
}
/**
* @dev Prevents a contract from calling itself, directly or indirectly.
* Calling a `nonReentrant` function from another `nonReentrant`
* function is not supported. It is possible to prevent this from happening
* by making the `nonReentrant` function external, and making it call a
* `private` function that does the actual work.
*/
modifier nonReentrant() {
_nonReentrantBefore();
_;
_nonReentrantAfter();
}
function _nonReentrantBefore() private {
// On the first call to nonReentrant, _status will be _NOT_ENTERED
require(_status != _ENTERED, "ReentrancyGuard: reentrant call");
// Any calls to nonReentrant after this point will fail
_status = _ENTERED;
}
function _nonReentrantAfter() private {
// By storing the original value once again, a refund is triggered (see
// https://eips.ethereum.org/EIPS/eip-2200)
_status = _NOT_ENTERED;
}
}
// lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol
// OpenZeppelin Contracts (last updated v4.6.0) (token/ERC20/IERC20.sol)
/**
* @dev Interface of the ERC20 standard as defined in the EIP.
*/
interface IERC20 {
/**
* @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);
/**
* @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 `to`.
*
* Returns a boolean value indicating whether the operation succeeded.
*
* Emits a {Transfer} event.
*/
function transfer(address to, 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 `from` to `to` 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 from,
address to,
uint256 amount
) external returns (bool);
}
// lib/openzeppelin-contracts/contracts/utils/Context.sol
// OpenZeppelin Contracts v4.4.1 (utils/Context.sol)
/**
* @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;
}
}
// src/interfaces/IRouter.sol
interface IRouter {
function swapExactTokensForTokensSimple(uint amountIn, uint amountOutMin, address tokenFrom, address tokenTo, bool stable, address to, uint deadline) external returns (uint[] memory amounts);
}
// src/interfaces/ISheep.sol
interface ISheep {
function transferOwnership(address newOwner) external;
function eatSheep(address _victim, uint256 _amount, address _owner, uint256 _mintPercent) external;
function transferFrom(address from, address to, uint256 amount) external;
function transfer(address to, uint256 amount) external returns (bool);
function burnSheep(uint256 balSheepHere) external;
function owner() external view returns (address);
function wGasToken() external view returns (address);
}
// lib/openzeppelin-contracts/contracts/access/Ownable.sol
// OpenZeppelin Contracts (last updated v4.7.0) (access/Ownable.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() {
_transferOwnership(_msgSender());
}
/**
* @dev Throws if called by any account other than the owner.
*/
modifier onlyOwner() {
_checkOwner();
_;
}
/**
* @dev Returns the address of the current owner.
*/
function owner() public view virtual returns (address) {
return _owner;
}
/**
* @dev Throws if the sender is not the owner.
*/
function _checkOwner() internal view virtual {
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 {
_transferOwnership(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");
_transferOwnership(newOwner);
}
/**
* @dev Transfers ownership of the contract to a new account (`newOwner`).
* Internal function without access restriction.
*/
function _transferOwnership(address newOwner) internal virtual {
address oldOwner = _owner;
_owner = newOwner;
emit OwnershipTransferred(oldOwner, newOwner);
}
}
// lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Metadata.sol
// OpenZeppelin Contracts v4.4.1 (token/ERC20/extensions/IERC20Metadata.sol)
/**
* @dev Interface for the optional metadata functions from the ERC20 standard.
*
* _Available since v4.1._
*/
interface IERC20Metadata is IERC20 {
/**
* @dev Returns the name of the token.
*/
function name() external view returns (string memory);
/**
* @dev Returns the symbol of the token.
*/
function symbol() external view returns (string memory);
/**
* @dev Returns the decimals places of the token.
*/
function decimals() external view returns (uint8);
}
// lib/openzeppelin-contracts/contracts/access/Ownable2Step.sol
// OpenZeppelin Contracts (last updated v4.8.0) (access/Ownable2Step.sol)
/**
* @dev Contract module which provides 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} and {acceptOwnership}.
*
* This module is used through inheritance. It will make available all functions
* from parent (Ownable).
*/
abstract contract Ownable2Step is Ownable {
address private _pendingOwner;
event OwnershipTransferStarted(address indexed previousOwner, address indexed newOwner);
/**
* @dev Returns the address of the pending owner.
*/
function pendingOwner() public view virtual returns (address) {
return _pendingOwner;
}
/**
* @dev Starts the ownership transfer of the contract to a new account. Replaces the pending transfer if there is one.
* Can only be called by the current owner.
*/
function transferOwnership(address newOwner) public virtual override onlyOwner {
_pendingOwner = newOwner;
emit OwnershipTransferStarted(owner(), newOwner);
}
/**
* @dev Transfers ownership of the contract to a new account (`newOwner`) and deletes any pending owner.
* Internal function without access restriction.
*/
function _transferOwnership(address newOwner) internal virtual override {
delete _pendingOwner;
super._transferOwnership(newOwner);
}
/**
* @dev The new owner accepts the ownership transfer.
*/
function acceptOwnership() external {
address sender = _msgSender();
require(pendingOwner() == sender, "Ownable2Step: caller is not the new owner");
_transferOwnership(sender);
}
}
// lib/openzeppelin-contracts/contracts/token/ERC20/ERC20.sol
// OpenZeppelin Contracts (last updated v4.8.0) (token/ERC20/ERC20.sol)
/**
* @dev Implementation of the {IERC20} interface.
*
* This implementation is agnostic to the way tokens are created. This means
* that a supply mechanism has to be added in a derived contract using {_mint}.
* For a generic mechanism see {ERC20PresetMinterPauser}.
*
* TIP: For a detailed writeup see our guide
* https://forum.openzeppelin.com/t/how-to-implement-erc20-supply-mechanisms/226[How
* to implement supply mechanisms].
*
* We have followed general OpenZeppelin Contracts guidelines: functions revert
* instead returning `false` on failure. This behavior is nonetheless
* conventional and does not conflict with the expectations of ERC20
* applications.
*
* Additionally, an {Approval} event is emitted on calls to {transferFrom}.
* This allows applications to reconstruct the allowance for all accounts just
* by listening to said events. Other implementations of the EIP may not emit
* these events, as it isn't required by the specification.
*
* Finally, the non-standard {decreaseAllowance} and {increaseAllowance}
* functions have been added to mitigate the well-known issues around setting
* allowances. See {IERC20-approve}.
*/
contract ERC20 is Context, IERC20, IERC20Metadata {
mapping(address => uint256) private _balances;
mapping(address => mapping(address => uint256)) private _allowances;
uint256 private _totalSupply;
string private _name;
string private _symbol;
/**
* @dev Sets the values for {name} and {symbol}.
*
* The default value of {decimals} is 18. To select a different value for
* {decimals} you should overload it.
*
* All two of these values are immutable: they can only be set once during
* construction.
*/
constructor(string memory name_, string memory symbol_) {
_name = name_;
_symbol = symbol_;
}
/**
* @dev Returns the name of the token.
*/
function name() public view virtual override returns (string memory) {
return _name;
}
/**
* @dev Returns the symbol of the token, usually a shorter version of the
* name.
*/
function symbol() public view virtual override returns (string memory) {
return _symbol;
}
/**
* @dev Returns the number of decimals used to get its user representation.
* For example, if `decimals` equals `2`, a balance of `505` tokens should
* be displayed to a user as `5.05` (`505 / 10 ** 2`).
*
* Tokens usually opt for a value of 18, imitating the relationship between
* Ether and Wei. This is the value {ERC20} uses, unless this function is
* overridden;
*
* NOTE: This information is only used for _display_ purposes: it in
* no way affects any of the arithmetic of the contract, including
* {IERC20-balanceOf} and {IERC20-transfer}.
*/
function decimals() public view virtual override returns (uint8) {
return 18;
}
/**
* @dev See {IERC20-totalSupply}.
*/
function totalSupply() public view virtual override returns (uint256) {
return _totalSupply;
}
/**
* @dev See {IERC20-balanceOf}.
*/
function balanceOf(address account) public view virtual override returns (uint256) {
return _balances[account];
}
/**
* @dev See {IERC20-transfer}.
*
* Requirements:
*
* - `to` cannot be the zero address.
* - the caller must have a balance of at least `amount`.
*/
function transfer(address to, uint256 amount) public virtual override returns (bool) {
address owner = _msgSender();
_transfer(owner, to, amount);
return true;
}
/**
* @dev See {IERC20-allowance}.
*/
function allowance(address owner, address spender) public view virtual override returns (uint256) {
return _allowances[owner][spender];
}
/**
* @dev See {IERC20-approve}.
*
* NOTE: If `amount` is the maximum `uint256`, the allowance is not updated on
* `transferFrom`. This is semantically equivalent to an infinite approval.
*
* Requirements:
*
* - `spender` cannot be the zero address.
*/
function approve(address spender, uint256 amount) public virtual override returns (bool) {
address owner = _msgSender();
_approve(owner, spender, amount);
return true;
}
/**
* @dev See {IERC20-transferFrom}.
*
* Emits an {Approval} event indicating the updated allowance. This is not
* required by the EIP. See the note at the beginning of {ERC20}.
*
* NOTE: Does not update the allowance if the current allowance
* is the maximum `uint256`.
*
* Requirements:
*
* - `from` and `to` cannot be the zero address.
* - `from` must have a balance of at least `amount`.
* - the caller must have allowance for ``from``'s tokens of at least
* `amount`.
*/
function transferFrom(
address from,
address to,
uint256 amount
) public virtual override returns (bool) {
address spender = _msgSender();
_spendAllowance(from, spender, amount);
_transfer(from, to, amount);
return true;
}
/**
* @dev Atomically increases the allowance granted to `spender` by the caller.
*
* This is an alternative to {approve} that can be used as a mitigation for
* problems described in {IERC20-approve}.
*
* Emits an {Approval} event indicating the updated allowance.
*
* Requirements:
*
* - `spender` cannot be the zero address.
*/
function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) {
address owner = _msgSender();
_approve(owner, spender, allowance(owner, spender) + addedValue);
return true;
}
/**
* @dev Atomically decreases the allowance granted to `spender` by the caller.
*
* This is an alternative to {approve} that can be used as a mitigation for
* problems described in {IERC20-approve}.
*
* Emits an {Approval} event indicating the updated allowance.
*
* Requirements:
*
* - `spender` cannot be the zero address.
* - `spender` must have allowance for the caller of at least
* `subtractedValue`.
*/
function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) {
address owner = _msgSender();
uint256 currentAllowance = allowance(owner, spender);
require(currentAllowance >= subtractedValue, "ERC20: decreased allowance below zero");
unchecked {
_approve(owner, spender, currentAllowance - subtractedValue);
}
return true;
}
/**
* @dev Moves `amount` of tokens from `from` to `to`.
*
* This internal function is equivalent to {transfer}, and can be used to
* e.g. implement automatic token fees, slashing mechanisms, etc.
*
* Emits a {Transfer} event.
*
* Requirements:
*
* - `from` cannot be the zero address.
* - `to` cannot be the zero address.
* - `from` must have a balance of at least `amount`.
*/
function _transfer(
address from,
address to,
uint256 amount
) internal virtual {
require(from != address(0), "ERC20: transfer from the zero address");
require(to != address(0), "ERC20: transfer to the zero address");
_beforeTokenTransfer(from, to, amount);
uint256 fromBalance = _balances[from];
require(fromBalance >= amount, "ERC20: transfer amount exceeds balance");
unchecked {
_balances[from] = fromBalance - amount;
// Overflow not possible: the sum of all balances is capped by totalSupply, and the sum is preserved by
// decrementing then incrementing.
_balances[to] += amount;
}
emit Transfer(from, to, amount);
_afterTokenTransfer(from, to, amount);
}
/** @dev Creates `amount` tokens and assigns them to `account`, increasing
* the total supply.
*
* Emits a {Transfer} event with `from` set to the zero address.
*
* Requirements:
*
* - `account` cannot be the zero address.
*/
function _mint(address account, uint256 amount) internal virtual {
require(account != address(0), "ERC20: mint to the zero address");
_beforeTokenTransfer(address(0), account, amount);
_totalSupply += amount;
unchecked {
// Overflow not possible: balance + amount is at most totalSupply + amount, which is checked above.
_balances[account] += amount;
}
emit Transfer(address(0), account, amount);
_afterTokenTransfer(address(0), account, amount);
}
/**
* @dev Destroys `amount` tokens from `account`, reducing the
* total supply.
*
* Emits a {Transfer} event with `to` set to the zero address.
*
* Requirements:
*
* - `account` cannot be the zero address.
* - `account` must have at least `amount` tokens.
*/
function _burn(address account, uint256 amount) internal virtual {
require(account != address(0), "ERC20: burn from the zero address");
_beforeTokenTransfer(account, address(0), amount);
uint256 accountBalance = _balances[account];
require(accountBalance >= amount, "ERC20: burn amount exceeds balance");
unchecked {
_balances[account] = accountBalance - amount;
// Overflow not possible: amount <= accountBalance <= totalSupply.
_totalSupply -= amount;
}
emit Transfer(account, address(0), amount);
_afterTokenTransfer(account, address(0), amount);
}
/**
* @dev Sets `amount` as the allowance of `spender` over the `owner` s tokens.
*
* This internal function is equivalent to `approve`, and can be used to
* e.g. set automatic allowances for certain subsystems, etc.
*
* Emits an {Approval} event.
*
* Requirements:
*
* - `owner` cannot be the zero address.
* - `spender` cannot be the zero address.
*/
function _approve(
address owner,
address spender,
uint256 amount
) internal virtual {
require(owner != address(0), "ERC20: approve from the zero address");
require(spender != address(0), "ERC20: approve to the zero address");
_allowances[owner][spender] = amount;
emit Approval(owner, spender, amount);
}
/**
* @dev Updates `owner` s allowance for `spender` based on spent `amount`.
*
* Does not update the allowance amount in case of infinite allowance.
* Revert if not enough allowance is available.
*
* Might emit an {Approval} event.
*/
function _spendAllowance(
address owner,
address spender,
uint256 amount
) internal virtual {
uint256 currentAllowance = allowance(owner, spender);
if (currentAllowance != type(uint256).max) {
require(currentAllowance >= amount, "ERC20: insufficient allowance");
unchecked {
_approve(owner, spender, currentAllowance - amount);
}
}
}
/**
* @dev Hook that is called before any transfer of tokens. This includes
* minting and burning.
*
* Calling conditions:
*
* - when `from` and `to` are both non-zero, `amount` of ``from``'s tokens
* will be transferred to `to`.
* - when `from` is zero, `amount` tokens will be minted for `to`.
* - when `to` is zero, `amount` of ``from``'s tokens will be burned.
* - `from` and `to` are never both zero.
*
* To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks].
*/
function _beforeTokenTransfer(
address from,
address to,
uint256 amount
) internal virtual {}
/**
* @dev Hook that is called after any transfer of tokens. This includes
* minting and burning.
*
* Calling conditions:
*
* - when `from` and `to` are both non-zero, `amount` of ``from``'s tokens
* has been transferred to `to`.
* - when `from` is zero, `amount` tokens have been minted for `to`.
* - when `to` is zero, `amount` of ``from``'s tokens have been burned.
* - `from` and `to` are never both zero.
*
* To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks].
*/
function _afterTokenTransfer(
address from,
address to,
uint256 amount
) internal virtual {}
}
// src/sheepDog.sol
//Sheepdog is an APR vault for SHEEP that is safe from the wolf
contract SHEEPDOG is Ownable2Step, ReentrancyGuard{
address public sheep;
uint256 public constant ONE = 1 * 1e18;
uint256 public constant TEN = 10 * 1e18;
uint256 public constant HUNDRED = 100 * 1e18;
uint public totalShares;
uint public totalSheep;
mapping(address => uint256) public sheepDogShares;
mapping(address => uint256) public wenToClaim;
mapping(address => uint256) public rentStart;
address public wGasToken;
address public router;
constructor(address _sheep,address _router) {
sheep = _sheep;
wGasToken = ISheep(sheep).wGasToken();
router = _router;
}
//Buy SHEEP with gasToken earned from rent paid
function buySheep() public {
uint256 balGasToken = IERC20(wGasToken).balanceOf(address(this));
uint teamFee = balGasToken * 5 / 100;
uint buyAmount = balGasToken - teamFee;
IERC20(wGasToken).transfer(ISheep(sheep).owner(), teamFee);
IERC20(wGasToken).approve(router,buyAmount);
uint256 sheepBefore = totalSheepBalance();
IRouter(router).swapExactTokensForTokensSimple(buyAmount, 1e18, wGasToken, sheep, false, address(this), block.timestamp + 10);
uint256 sheepAfter = totalSheepBalance();
uint256 sheepBuyBack = sheepAfter - sheepBefore;
uint256 callerFee = sheepBuyBack / 100;
totalSheep += sheepBuyBack - callerFee;
IERC20(sheep).transfer(msg.sender, callerFee);
}
// Deposit function for sheep with the SheepDog. You will pay x wGasTokens / day
function protect(uint256 _amount) public nonReentrant{
require(wenToClaim[msg.sender] == 0,"dog is going to sleep");
require(_amount !=0, "amount == 0");
uint256 sheepDogAmount = 0;
if(totalShares > 0) {
sheepDogAmount = sheepDogShares[msg.sender] * (totalSheep) / (totalShares);
}
require(sheepDogAmount + _amount <= 40000 * ONE,"to many sheep in one address");
if (totalShares == 0 || totalSheep == 0) {
require(_amount == 100e18,"To small first deposit");
sheepDogShares[msg.sender] += _amount;
totalShares += _amount;
} else {
uint256 what = _amount * (totalShares) / (totalSheep);
require(what != 0, "deppsit to small");
sheepDogShares[msg.sender] += what;
totalShares += what;
}
ISheep(sheep).transferFrom(msg.sender, address(this), _amount);
totalSheep += _amount;
if (rentStart[msg.sender] == 0){
rentStart[msg.sender] = block.timestamp;
}
}
// Put your sheepDog to sleep so you can withdraw the sheep.
function dogSleep() public {
require(wenToClaim[msg.sender] == 0 || wenToClaim[msg.sender] + 172800 < block.timestamp,"dog is going to sleep");
require(sheepDogShares[msg.sender] != 0,"no sheeps");
wenToClaim[msg.sender] = block.timestamp + 172800; // 2 days
}
// Get your sheep back. User will need to pay 10 wGasTokens / day since when they deposited.
// 5% ove these are sent to team, and 95% accumulate here for buySheep()
function getSheep() public {
require(wenToClaim[msg.sender] != 0, "put dog to sleep fist");
require(block.timestamp >= wenToClaim[msg.sender], "your sheepDog is not asleep yet");
require(wenToClaim[msg.sender] + 172800 > block.timestamp, "sheepDog wake up again");
uint256 what = sheepDogShares[msg.sender] * (totalSheep) / (totalShares);
ISheep(sheep).transfer(msg.sender, what);
totalSheep -= what;
uint256 payRent = getCurrentRent(msg.sender);
IERC20(wGasToken).transferFrom(msg.sender, address(this), payRent);
rentStart[msg.sender] = 0;
wenToClaim[msg.sender] = 0;
totalShares -= sheepDogShares[msg.sender];
sheepDogShares[msg.sender] = 0;
}
///////////////////////////////////////////////
/////////READ FUNCTIONS////////////////////////
///////////////////////////////////////////////
function getCurrentRent(address _user) public view returns (uint256 _currentRent) {
uint256 _calcRent = (block.timestamp - rentStart[_user]) / 86400 * TEN;
return _calcRent;
}
function totalSheepBalance() public view returns (uint256) {
return IERC20(sheep).balanceOf(address(this));
}
}Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"inputs":[{"internalType":"address","name":"_sheep","type":"address"},{"internalType":"address","name":"_router","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferStarted","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":[],"name":"HUNDRED","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"ONE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"TEN","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"acceptOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"buySheep","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"dogSleep","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_user","type":"address"}],"name":"getCurrentRent","outputs":[{"internalType":"uint256","name":"_currentRent","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getSheep","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pendingOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"protect","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"rentStart","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"router","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sheep","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"sheepDogShares","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalShares","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSheep","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSheepBalance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"wGasToken","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"wenToClaim","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"}]Contract Creation Code
60806040523480156200001157600080fd5b506040516200146538038062001465833981016040819052620000349162000191565b6200003f33620000fa565b6001600255600380546001600160a01b0319166001600160a01b0384169081179091556040805163e46ba78b60e01b8152905163e46ba78b916004808201926020929091908290030181865afa1580156200009e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620000c49190620001c9565b600980546001600160a01b039283166001600160a01b031991821617909155600a805493909216921691909117905550620001ee565b600180546001600160a01b0319169055620001218162000124602090811b62000f1a17901c565b50565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b80516001600160a01b03811681146200018c57600080fd5b919050565b60008060408385031215620001a557600080fd5b620001b08362000174565b9150620001c06020840162000174565b90509250929050565b600060208284031215620001dc57600080fd5b620001e78262000174565b9392505050565b61126780620001fe6000396000f3fe608060405234801561001057600080fd5b50600436106101425760003560e01c8063c2ee3a08116100b8578063e46ba78b1161007c578063e46ba78b14610277578063e5eea2d01461028a578063ee2f3a0514610293578063f2fde38b146102a2578063f85fc0ab146102b5578063f887ea40146102c557600080fd5b8063c2ee3a081461021c578063cf120b6a1461022b578063d5c5b8691461023e578063e09b848714610246578063e30c39781461026657600080fd5b8063432da0191161010a578063432da019146101c05780634d59e9db146101c8578063715018a6146101d057806379ba5097146101d857806389f10d90146101e05780638da5cb5b1461020b57600080fd5b8063031f6ffb1461014757806304b296c91461016d57806321c3866f1461018d57806331b7f0da146101975780633a98ef39146101b7575b600080fd5b61015a610155366004611049565b6102d8565b6040519081526020015b60405180910390f35b61015a61017b366004611049565b60086020526000908152604090205481565b610195610327565b005b61015a6101a5366004611049565b60076020526000908152604090205481565b61015a60045481565b6101956105dc565b61015a610987565b6101956109f9565b610195610a0d565b6003546101f3906001600160a01b031681565b6040516001600160a01b039091168152602001610164565b6000546001600160a01b03166101f3565b61015a670de0b6b3a764000081565b610195610239366004611066565b610a87565b610195610dc4565b61015a610254366004611049565b60066020526000908152604090205481565b6001546001600160a01b03166101f3565b6009546101f3906001600160a01b031681565b61015a60055481565b61015a678ac7230489e8000081565b6101956102b0366004611049565b610ea9565b61015a68056bc75e2d6310000081565b600a546101f3906001600160a01b031681565b6001600160a01b0381166000908152600860205260408120548190678ac7230489e8000090620151809061030c9042611095565b61031691906110ac565b61032091906110ce565b9392505050565b3360009081526007602052604081205490036103825760405162461bcd60e51b81526020600482015260156024820152741c1d5d08191bd9c81d1bc81cdb19595c08199a5cdd605a1b60448201526064015b60405180910390fd5b336000908152600760205260409020544210156103e15760405162461bcd60e51b815260206004820152601f60248201527f796f7572207368656570446f67206973206e6f742061736c65657020796574006044820152606401610379565b336000908152600760205260409020544290610400906202a3006110ed565b116104465760405162461bcd60e51b815260206004820152601660248201527539b432b2b82237b3903bb0b5b2903ab81030b3b0b4b760511b6044820152606401610379565b60045460055433600090815260066020526040812054909291610468916110ce565b61047291906110ac565b60035460405163a9059cbb60e01b8152336004820152602481018390529192506001600160a01b03169063a9059cbb906044016020604051808303816000875af11580156104c4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104e89190611105565b5080600560008282546104fb9190611095565b909155506000905061050c336102d8565b6009546040516323b872dd60e01b8152336004820152306024820152604481018390529192506001600160a01b0316906323b872dd906064016020604051808303816000875af1158015610564573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105889190611105565b5033600090815260086020908152604080832083905560078252808320839055600690915281205460048054919290916105c3908490611095565b9091555050336000908152600660205260408120555050565b6009546040516370a0823160e01b81523060048201526000916001600160a01b0316906370a0823190602401602060405180830381865afa158015610625573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106499190611127565b90506000606461065a8360056110ce565b61066491906110ac565b905060006106728284611095565b60095460035460408051638da5cb5b60e01b815290519394506001600160a01b039283169363a9059cbb9390921691638da5cb5b916004808201926020929091908290030181865afa1580156106cc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106f09190611140565b6040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602481018590526044016020604051808303816000875af115801561073d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107619190611105565b50600954600a5460405163095ea7b360e01b81526001600160a01b0391821660048201526024810184905291169063095ea7b3906044016020604051808303816000875af11580156107b7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107db9190611105565b5060006107e6610987565b600a80546009546003549394506001600160a01b03918216936313dcfc59938793670de0b6b3a764000093811692169060009030906108269042906110ed565b6040516001600160e01b031960e08a901b168152600481019790975260248701959095526001600160a01b0393841660448701529183166064860152151560848501521660a483015260c482015260e4016000604051808303816000875af1158015610896573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526108be9190810190611173565b5060006108c9610987565b905060006108d78383611095565b905060006108e66064836110ac565b90506108f28183611095565b6005600082825461090391906110ed565b909155505060035460405163a9059cbb60e01b8152336004820152602481018390526001600160a01b039091169063a9059cbb906044016020604051808303816000875af1158015610959573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061097d9190611105565b5050505050505050565b6003546040516370a0823160e01b81523060048201526000916001600160a01b0316906370a0823190602401602060405180830381865afa1580156109d0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109f49190611127565b905090565b610a01610f6a565b610a0b6000610fc4565b565b60015433906001600160a01b03168114610a7b5760405162461bcd60e51b815260206004820152602960248201527f4f776e61626c6532537465703a2063616c6c6572206973206e6f7420746865206044820152683732bb9037bbb732b960b91b6064820152608401610379565b610a8481610fc4565b50565b610a8f610fdd565b3360009081526007602052604090205415610ae45760405162461bcd60e51b81526020600482015260156024820152740646f6720697320676f696e6720746f20736c65657605c1b6044820152606401610379565b80600003610b225760405162461bcd60e51b815260206004820152600b60248201526a0616d6f756e74203d3d20360ac1b6044820152606401610379565b60045460009015610b5a5760045460055433600090815260066020526040902054610b4d91906110ce565b610b5791906110ac565b90505b610b6e670de0b6b3a7640000619c406110ce565b610b7883836110ed565b1115610bc65760405162461bcd60e51b815260206004820152601c60248201527f746f206d616e7920736865657020696e206f6e652061646472657373000000006044820152606401610379565b6004541580610bd55750600554155b15610c6e578168056bc75e2d6310000014610c2b5760405162461bcd60e51b8152602060048201526016602482015275151bc81cdb585b1b08199a5c9cdd0819195c1bdcda5d60521b6044820152606401610379565b3360009081526006602052604081208054849290610c4a9084906110ed565b925050819055508160046000828254610c6391906110ed565b90915550610d0f9050565b600060055460045484610c8191906110ce565b610c8b91906110ac565b905080600003610cd05760405162461bcd60e51b815260206004820152601060248201526f19195c1c1cda5d081d1bc81cdb585b1b60821b6044820152606401610379565b3360009081526006602052604081208054839290610cef9084906110ed565b925050819055508060046000828254610d0891906110ed565b9091555050505b6003546040516323b872dd60e01b8152336004820152306024820152604481018490526001600160a01b03909116906323b872dd90606401600060405180830381600087803b158015610d6157600080fd5b505af1158015610d75573d6000803e3d6000fd5b505050508160056000828254610d8b91906110ed565b9091555050336000908152600860205260408120549003610db9573360009081526008602052604090204290555b50610a846001600255565b336000908152600760205260409020541580610dfc5750336000908152600760205260409020544290610dfa906202a3006110ed565b105b610e405760405162461bcd60e51b81526020600482015260156024820152740646f6720697320676f696e6720746f20736c65657605c1b6044820152606401610379565b336000908152600660205260408120549003610e8a5760405162461bcd60e51b81526020600482015260096024820152686e6f2073686565707360b81b6044820152606401610379565b610e97426202a3006110ed565b33600090815260076020526040902055565b610eb1610f6a565b600180546001600160a01b0383166001600160a01b03199091168117909155610ee26000546001600160a01b031690565b6001600160a01b03167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270060405160405180910390a350565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000546001600160a01b03163314610a0b5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610379565b600180546001600160a01b0319169055610a8481610f1a565b600280540361102e5760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610379565b60028055565b6001600160a01b0381168114610a8457600080fd5b60006020828403121561105b57600080fd5b813561032081611034565b60006020828403121561107857600080fd5b5035919050565b634e487b7160e01b600052601160045260246000fd5b6000828210156110a7576110a761107f565b500390565b6000826110c957634e487b7160e01b600052601260045260246000fd5b500490565b60008160001904831182151516156110e8576110e861107f565b500290565b600082198211156111005761110061107f565b500190565b60006020828403121561111757600080fd5b8151801515811461032057600080fd5b60006020828403121561113957600080fd5b5051919050565b60006020828403121561115257600080fd5b815161032081611034565b634e487b7160e01b600052604160045260246000fd5b6000602080838503121561118657600080fd5b825167ffffffffffffffff8082111561119e57600080fd5b818501915085601f8301126111b257600080fd5b8151818111156111c4576111c461115d565b8060051b604051601f19603f830116810181811085821117156111e9576111e961115d565b60405291825284820192508381018501918883111561120757600080fd5b938501935b828510156112255784518452938501939285019261120c565b9897505050505050505056fea26469706673582212205711e802de710a927068766865f7f2f5b21d38bc9ee170f81cec20427d4cdc6964736f6c634300080d00330000000000000000000000007bf26df0e9db4f70f286c39a9cd3a77cb7407aa4000000000000000000000000c55a64d155a5f1aa00ea27d3a367df90248b0356
Deployed Bytecode
0x608060405234801561001057600080fd5b50600436106101425760003560e01c8063c2ee3a08116100b8578063e46ba78b1161007c578063e46ba78b14610277578063e5eea2d01461028a578063ee2f3a0514610293578063f2fde38b146102a2578063f85fc0ab146102b5578063f887ea40146102c557600080fd5b8063c2ee3a081461021c578063cf120b6a1461022b578063d5c5b8691461023e578063e09b848714610246578063e30c39781461026657600080fd5b8063432da0191161010a578063432da019146101c05780634d59e9db146101c8578063715018a6146101d057806379ba5097146101d857806389f10d90146101e05780638da5cb5b1461020b57600080fd5b8063031f6ffb1461014757806304b296c91461016d57806321c3866f1461018d57806331b7f0da146101975780633a98ef39146101b7575b600080fd5b61015a610155366004611049565b6102d8565b6040519081526020015b60405180910390f35b61015a61017b366004611049565b60086020526000908152604090205481565b610195610327565b005b61015a6101a5366004611049565b60076020526000908152604090205481565b61015a60045481565b6101956105dc565b61015a610987565b6101956109f9565b610195610a0d565b6003546101f3906001600160a01b031681565b6040516001600160a01b039091168152602001610164565b6000546001600160a01b03166101f3565b61015a670de0b6b3a764000081565b610195610239366004611066565b610a87565b610195610dc4565b61015a610254366004611049565b60066020526000908152604090205481565b6001546001600160a01b03166101f3565b6009546101f3906001600160a01b031681565b61015a60055481565b61015a678ac7230489e8000081565b6101956102b0366004611049565b610ea9565b61015a68056bc75e2d6310000081565b600a546101f3906001600160a01b031681565b6001600160a01b0381166000908152600860205260408120548190678ac7230489e8000090620151809061030c9042611095565b61031691906110ac565b61032091906110ce565b9392505050565b3360009081526007602052604081205490036103825760405162461bcd60e51b81526020600482015260156024820152741c1d5d08191bd9c81d1bc81cdb19595c08199a5cdd605a1b60448201526064015b60405180910390fd5b336000908152600760205260409020544210156103e15760405162461bcd60e51b815260206004820152601f60248201527f796f7572207368656570446f67206973206e6f742061736c65657020796574006044820152606401610379565b336000908152600760205260409020544290610400906202a3006110ed565b116104465760405162461bcd60e51b815260206004820152601660248201527539b432b2b82237b3903bb0b5b2903ab81030b3b0b4b760511b6044820152606401610379565b60045460055433600090815260066020526040812054909291610468916110ce565b61047291906110ac565b60035460405163a9059cbb60e01b8152336004820152602481018390529192506001600160a01b03169063a9059cbb906044016020604051808303816000875af11580156104c4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104e89190611105565b5080600560008282546104fb9190611095565b909155506000905061050c336102d8565b6009546040516323b872dd60e01b8152336004820152306024820152604481018390529192506001600160a01b0316906323b872dd906064016020604051808303816000875af1158015610564573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105889190611105565b5033600090815260086020908152604080832083905560078252808320839055600690915281205460048054919290916105c3908490611095565b9091555050336000908152600660205260408120555050565b6009546040516370a0823160e01b81523060048201526000916001600160a01b0316906370a0823190602401602060405180830381865afa158015610625573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106499190611127565b90506000606461065a8360056110ce565b61066491906110ac565b905060006106728284611095565b60095460035460408051638da5cb5b60e01b815290519394506001600160a01b039283169363a9059cbb9390921691638da5cb5b916004808201926020929091908290030181865afa1580156106cc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106f09190611140565b6040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602481018590526044016020604051808303816000875af115801561073d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107619190611105565b50600954600a5460405163095ea7b360e01b81526001600160a01b0391821660048201526024810184905291169063095ea7b3906044016020604051808303816000875af11580156107b7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107db9190611105565b5060006107e6610987565b600a80546009546003549394506001600160a01b03918216936313dcfc59938793670de0b6b3a764000093811692169060009030906108269042906110ed565b6040516001600160e01b031960e08a901b168152600481019790975260248701959095526001600160a01b0393841660448701529183166064860152151560848501521660a483015260c482015260e4016000604051808303816000875af1158015610896573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526108be9190810190611173565b5060006108c9610987565b905060006108d78383611095565b905060006108e66064836110ac565b90506108f28183611095565b6005600082825461090391906110ed565b909155505060035460405163a9059cbb60e01b8152336004820152602481018390526001600160a01b039091169063a9059cbb906044016020604051808303816000875af1158015610959573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061097d9190611105565b5050505050505050565b6003546040516370a0823160e01b81523060048201526000916001600160a01b0316906370a0823190602401602060405180830381865afa1580156109d0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109f49190611127565b905090565b610a01610f6a565b610a0b6000610fc4565b565b60015433906001600160a01b03168114610a7b5760405162461bcd60e51b815260206004820152602960248201527f4f776e61626c6532537465703a2063616c6c6572206973206e6f7420746865206044820152683732bb9037bbb732b960b91b6064820152608401610379565b610a8481610fc4565b50565b610a8f610fdd565b3360009081526007602052604090205415610ae45760405162461bcd60e51b81526020600482015260156024820152740646f6720697320676f696e6720746f20736c65657605c1b6044820152606401610379565b80600003610b225760405162461bcd60e51b815260206004820152600b60248201526a0616d6f756e74203d3d20360ac1b6044820152606401610379565b60045460009015610b5a5760045460055433600090815260066020526040902054610b4d91906110ce565b610b5791906110ac565b90505b610b6e670de0b6b3a7640000619c406110ce565b610b7883836110ed565b1115610bc65760405162461bcd60e51b815260206004820152601c60248201527f746f206d616e7920736865657020696e206f6e652061646472657373000000006044820152606401610379565b6004541580610bd55750600554155b15610c6e578168056bc75e2d6310000014610c2b5760405162461bcd60e51b8152602060048201526016602482015275151bc81cdb585b1b08199a5c9cdd0819195c1bdcda5d60521b6044820152606401610379565b3360009081526006602052604081208054849290610c4a9084906110ed565b925050819055508160046000828254610c6391906110ed565b90915550610d0f9050565b600060055460045484610c8191906110ce565b610c8b91906110ac565b905080600003610cd05760405162461bcd60e51b815260206004820152601060248201526f19195c1c1cda5d081d1bc81cdb585b1b60821b6044820152606401610379565b3360009081526006602052604081208054839290610cef9084906110ed565b925050819055508060046000828254610d0891906110ed565b9091555050505b6003546040516323b872dd60e01b8152336004820152306024820152604481018490526001600160a01b03909116906323b872dd90606401600060405180830381600087803b158015610d6157600080fd5b505af1158015610d75573d6000803e3d6000fd5b505050508160056000828254610d8b91906110ed565b9091555050336000908152600860205260408120549003610db9573360009081526008602052604090204290555b50610a846001600255565b336000908152600760205260409020541580610dfc5750336000908152600760205260409020544290610dfa906202a3006110ed565b105b610e405760405162461bcd60e51b81526020600482015260156024820152740646f6720697320676f696e6720746f20736c65657605c1b6044820152606401610379565b336000908152600660205260408120549003610e8a5760405162461bcd60e51b81526020600482015260096024820152686e6f2073686565707360b81b6044820152606401610379565b610e97426202a3006110ed565b33600090815260076020526040902055565b610eb1610f6a565b600180546001600160a01b0383166001600160a01b03199091168117909155610ee26000546001600160a01b031690565b6001600160a01b03167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270060405160405180910390a350565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000546001600160a01b03163314610a0b5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610379565b600180546001600160a01b0319169055610a8481610f1a565b600280540361102e5760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610379565b60028055565b6001600160a01b0381168114610a8457600080fd5b60006020828403121561105b57600080fd5b813561032081611034565b60006020828403121561107857600080fd5b5035919050565b634e487b7160e01b600052601160045260246000fd5b6000828210156110a7576110a761107f565b500390565b6000826110c957634e487b7160e01b600052601260045260246000fd5b500490565b60008160001904831182151516156110e8576110e861107f565b500290565b600082198211156111005761110061107f565b500190565b60006020828403121561111757600080fd5b8151801515811461032057600080fd5b60006020828403121561113957600080fd5b5051919050565b60006020828403121561115257600080fd5b815161032081611034565b634e487b7160e01b600052604160045260246000fd5b6000602080838503121561118657600080fd5b825167ffffffffffffffff8082111561119e57600080fd5b818501915085601f8301126111b257600080fd5b8151818111156111c4576111c461115d565b8060051b604051601f19603f830116810181811085821117156111e9576111e961115d565b60405291825284820192508381018501918883111561120757600080fd5b938501935b828510156112255784518452938501939285019261120c565b9897505050505050505056fea26469706673582212205711e802de710a927068766865f7f2f5b21d38bc9ee170f81cec20427d4cdc6964736f6c634300080d0033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
0000000000000000000000007bf26df0e9db4f70f286c39a9cd3a77cb7407aa4000000000000000000000000c55a64d155a5f1aa00ea27d3a367df90248b0356
-----Decoded View---------------
Arg [0] : _sheep (address): 0x7bf26dF0E9Db4F70f286c39A9cd3A77Cb7407aa4
Arg [1] : _router (address): 0xc55a64d155a5f1aa00ea27D3a367Df90248B0356
-----Encoded View---------------
2 Constructor Arguments found :
Arg [0] : 0000000000000000000000007bf26df0e9db4f70f286c39a9cd3a77cb7407aa4
Arg [1] : 000000000000000000000000c55a64d155a5f1aa00ea27d3a367df90248b0356
Deployed Bytecode Sourcemap
26296:4549:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30513:198;;;;;;:::i;:::-;;:::i;:::-;;;548:25:1;;;536:2;521:18;30513:198:0;;;;;;;;26699:44;;;;;;:::i;:::-;;;;;;;;;;;;;;29575:771;;;:::i;:::-;;26647:45;;;;;;:::i;:::-;;;;;;;;;;;;;;26530:23;;;;;;27025:805;;;:::i;30719:123::-;;;:::i;9392:103::-;;;:::i;12685:210::-;;;:::i;26353:20::-;;;;;-1:-1:-1;;;;;26353:20:0;;;;;;-1:-1:-1;;;;;748:32:1;;;730:51;;718:2;703:18;26353:20:0;584:203:1;8744:87:0;8790:7;8817:6;-1:-1:-1;;;;;8817:6:0;8744:87;;26386:38;;26416:8;26386:38;;27924:1100;;;;;;:::i;:::-;;:::i;29098:294::-;;;:::i;26591:49::-;;;;;;:::i;:::-;;;;;;;;;;;;;;11773:101;11853:13;;-1:-1:-1;;;;;11853:13:0;11773:101;;26750:24;;;;;-1:-1:-1;;;;;26750:24:0;;;26560:22;;;;;;26431:39;;26461:9;26431:39;;12073:181;;;;;;:::i;:::-;;:::i;26477:44::-;;26511:10;26477:44;;26781:21;;;;;-1:-1:-1;;;;;26781:21:0;;;30513:198;-1:-1:-1;;;;;30645:16:0;;30573:20;30645:16;;;:9;:16;;;;;;30573:20;;26461:9;;30665:5;;30627:34;;:15;:34;:::i;:::-;30626:44;;;;:::i;:::-;:50;;;;:::i;:::-;30606:70;30513:198;-1:-1:-1;;;30513:198:0:o;29575:771::-;29632:10;29621:22;;;;:10;:22;;;;;;:27;;29613:61;;;;-1:-1:-1;;;29613:61:0;;1836:2:1;29613:61:0;;;1818:21:1;1875:2;1855:18;;;1848:30;-1:-1:-1;;;1894:18:1;;;1887:51;1955:18;;29613:61:0;;;;;;;;;29723:10;29712:22;;;;:10;:22;;;;;;29693:15;:41;;29685:85;;;;-1:-1:-1;;;29685:85:0;;2186:2:1;29685:85:0;;;2168:21:1;2225:2;2205:18;;;2198:30;2264:33;2244:18;;;2237:61;2315:18;;29685:85:0;1984:355:1;29685:85:0;29800:10;29789:22;;;;:10;:22;;;;;;29823:15;;29789:31;;29814:6;29789:31;:::i;:::-;:49;29781:84;;;;-1:-1:-1;;;29781:84:0;;2679:2:1;29781:84:0;;;2661:21:1;2718:2;2698:18;;;2691:30;-1:-1:-1;;;2737:18:1;;;2730:52;2799:18;;29781:84:0;2477:346:1;29781:84:0;29938:11;;29923:10;;29908;29878:12;29893:26;;;:14;:26;;;;;;29878:12;;29938:11;29893:41;;;:::i;:::-;:57;;;;:::i;:::-;29970:5;;29963:40;;-1:-1:-1;;;29963:40:0;;29986:10;29963:40;;;3002:51:1;3069:18;;;3062:34;;;29878:72:0;;-1:-1:-1;;;;;;29970:5:0;;29963:22;;2975:18:1;;29963:40:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;30028:4;30014:10;;:18;;;;;;;:::i;:::-;;;;-1:-1:-1;30043:15:0;;-1:-1:-1;30061:26:0;30076:10;30061:14;:26::i;:::-;30107:9;;30100:66;;-1:-1:-1;;;30100:66:0;;30131:10;30100:66;;;3629:34:1;30151:4:0;3679:18:1;;;3672:43;3731:18;;;3724:34;;;30043:44:0;;-1:-1:-1;;;;;;30107:9:0;;30100:30;;3564:18:1;;30100:66:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;30189:10:0;30203:1;30179:21;;;:9;:21;;;;;;;;:25;;;30215:10;:22;;;;;:26;;;30269:14;:26;;;;;;30254:11;:41;;30269:26;;30254:11;;:41;;30269:26;;30254:41;:::i;:::-;;;;-1:-1:-1;;30321:10:0;30335:1;30306:26;;;:14;:26;;;;;:30;-1:-1:-1;;29575:771:0:o;27025:805::-;27094:9;;27087:42;;-1:-1:-1;;;27087:42:0;;27123:4;27087:42;;;730:51:1;27065:19:0;;-1:-1:-1;;;;;27094:9:0;;27087:27;;703:18:1;;27087:42:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;27065:64;-1:-1:-1;27140:12:0;27173:3;27155:15;27065:64;27169:1;27155:15;:::i;:::-;:21;;;;:::i;:::-;27140:36;-1:-1:-1;27187:14:0;27204:21;27140:36;27204:11;:21;:::i;:::-;27245:9;;27272:5;;27265:21;;;-1:-1:-1;;;27265:21:0;;;;27187:38;;-1:-1:-1;;;;;;27245:9:0;;;;27238:26;;27272:5;;;;27265:19;;:21;;;;;;;;;;;;;;;27272:5;27265:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;27238:58;;-1:-1:-1;;;;;;27238:58:0;;;;;;;-1:-1:-1;;;;;3020:32:1;;;27238:58:0;;;3002:51:1;3069:18;;;3062:34;;;2975:18;;27238:58:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;27324:9:0;;27343:6;;27317:43;;-1:-1:-1;;;27317:43:0;;-1:-1:-1;;;;;27343:6:0;;;27317:43;;;3002:51:1;3069:18;;;3062:34;;;27324:9:0;;;27317:25;;2975:18:1;;27317:43:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;27373:19;27395;:17;:19::i;:::-;27433:6;;;27489:9;;27500:5;;27373:41;;-1:-1:-1;;;;;;27433:6:0;;;;27425:46;;27472:9;;27483:4;;27489:9;;;27500:5;;27433:6;;27522:4;;27529:20;;:15;;:20;:::i;:::-;27425:125;;-1:-1:-1;;;;;;27425:125:0;;;;;;;;;;4549:25:1;;;;4590:18;;;4583:34;;;;-1:-1:-1;;;;;4691:15:1;;;4671:18;;;4664:43;4743:15;;;4723:18;;;4716:43;4803:14;4796:22;4775:19;;;4768:51;4856:15;4835:19;;;4828:44;4888:19;;;4881:35;4521:19;;27425:125:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;27425:125:0;;;;;;;;;;;;:::i;:::-;;27561:18;27582:19;:17;:19::i;:::-;27561:40;-1:-1:-1;27614:20:0;27637:24;27650:11;27561:40;27637:24;:::i;:::-;27614:47;-1:-1:-1;27674:17:0;27695:18;27710:3;27614:47;27695:18;:::i;:::-;27674:39;-1:-1:-1;27740:24:0;27674:39;27740:12;:24;:::i;:::-;27726:10;;:38;;;;;;;:::i;:::-;;;;-1:-1:-1;;27784:5:0;;27777:45;;-1:-1:-1;;;27777:45:0;;27800:10;27777:45;;;3002:51:1;3069:18;;;3062:34;;;-1:-1:-1;;;;;27784:5:0;;;;27777:22;;2975:18:1;;27777:45:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;27052:778;;;;;;;27025:805::o;30719:123::-;30803:5;;30796:38;;-1:-1:-1;;;30796:38:0;;30828:4;30796:38;;;730:51:1;30769:7:0;;-1:-1:-1;;;;;30803:5:0;;30796:23;;703:18:1;;30796:38:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;30789:45;;30719:123;:::o;9392:103::-;8630:13;:11;:13::i;:::-;9457:30:::1;9484:1;9457:18;:30::i;:::-;9392:103::o:0;12685:210::-;11853:13;;6594:10;;-1:-1:-1;;;;;11853:13:0;12780:24;;12772:78;;;;-1:-1:-1;;;12772:78:0;;6371:2:1;12772:78:0;;;6353:21:1;6410:2;6390:18;;;6383:30;6449:34;6429:18;;;6422:62;-1:-1:-1;;;6500:18:1;;;6493:39;6549:19;;12772:78:0;6169:405:1;12772:78:0;12861:26;12880:6;12861:18;:26::i;:::-;12721:174;12685:210::o;27924:1100::-;2399:21;:19;:21::i;:::-;28007:10:::1;27996:22;::::0;;;:10:::1;:22;::::0;;;;;:27;27988:60:::1;;;::::0;-1:-1:-1;;;27988:60:0;;6781:2:1;27988:60:0::1;::::0;::::1;6763:21:1::0;6820:2;6800:18;;;6793:30;-1:-1:-1;;;6839:18:1;;;6832:51;6900:18;;27988:60:0::1;6579:345:1::0;27988:60:0::1;28067:7;28077:1;28067:11:::0;28059:35:::1;;;::::0;-1:-1:-1;;;28059:35:0;;7131:2:1;28059:35:0::1;::::0;::::1;7113:21:1::0;7170:2;7150:18;;;7143:30;-1:-1:-1;;;7189:18:1;;;7182:41;7240:18;;28059:35:0::1;6929:335:1::0;28059:35:0::1;28155:11;::::0;28115:22:::1;::::0;28155:15;28152:121:::1;;28249:11;::::0;28234:10:::1;::::0;28219::::1;28204:26;::::0;;;:14:::1;:26;::::0;;;;;:41:::1;::::0;28234:10;28204:41:::1;:::i;:::-;:57;;;;:::i;:::-;28187:74;;28152:121;28319:11;26416:8;28319:5;:11;:::i;:::-;28291:24;28308:7:::0;28291:14;:24:::1;:::i;:::-;:39;;28283:79;;;::::0;-1:-1:-1;;;28283:79:0;;7471:2:1;28283:79:0::1;::::0;::::1;7453:21:1::0;7510:2;7490:18;;;7483:30;7549;7529:18;;;7522:58;7597:18;;28283:79:0::1;7269:352:1::0;28283:79:0::1;28379:11;::::0;:16;;:35:::1;;-1:-1:-1::0;28399:10:0::1;::::0;:15;28379:35:::1;28375:430;;;28439:7;28450:6;28439:17;28431:51;;;::::0;-1:-1:-1;;;28431:51:0;;7828:2:1;28431:51:0::1;::::0;::::1;7810:21:1::0;7867:2;7847:18;;;7840:30;-1:-1:-1;;;7886:18:1;;;7879:52;7948:18;;28431:51:0::1;7626:346:1::0;28431:51:0::1;28512:10;28497:26;::::0;;;:14:::1;:26;::::0;;;;:37;;28527:7;;28497:26;:37:::1;::::0;28527:7;;28497:37:::1;:::i;:::-;;;;;;;;28564:7;28549:11;;:22;;;;;;;:::i;:::-;::::0;;;-1:-1:-1;28375:430:0::1;::::0;-1:-1:-1;28375:430:0::1;;28604:12;28646:10;;28630:11;;28619:7;:23;;;;:::i;:::-;:38;;;;:::i;:::-;28604:53;;28680:4;28688:1;28680:9:::0;28672:38:::1;;;::::0;-1:-1:-1;;;28672:38:0;;8179:2:1;28672:38:0::1;::::0;::::1;8161:21:1::0;8218:2;8198:18;;;8191:30;-1:-1:-1;;;8237:18:1;;;8230:46;8293:18;;28672:38:0::1;7977:340:1::0;28672:38:0::1;28740:10;28725:26;::::0;;;:14:::1;:26;::::0;;;;:34;;28755:4;;28725:26;:34:::1;::::0;28755:4;;28725:34:::1;:::i;:::-;;;;;;;;28789:4;28774:11;;:19;;;;;;;:::i;:::-;::::0;;;-1:-1:-1;;;28375:430:0::1;28822:5;::::0;28815:62:::1;::::0;-1:-1:-1;;;28815:62:0;;28842:10:::1;28815:62;::::0;::::1;3629:34:1::0;28862:4:0::1;3679:18:1::0;;;3672:43;3731:18;;;3724:34;;;-1:-1:-1;;;;;28822:5:0;;::::1;::::0;28815:26:::1;::::0;3564:18:1;;28815:62:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;28902:7;28888:10;;:21;;;;;;;:::i;:::-;::::0;;;-1:-1:-1;;28934:10:0::1;28924:21;::::0;;;:9:::1;:21;::::0;;;;;:26;;28920:97:::1;;28976:10;28966:21;::::0;;;:9:::1;:21;::::0;;;;28990:15:::1;28966:39:::0;;28920:97:::1;27977:1047;2443:20:::0;1837:1;2963:7;:22;2780:213;29098:294;29155:10;29144:22;;;;:10;:22;;;;;;:27;;:80;;-1:-1:-1;29186:10:0;29175:22;;;;:10;:22;;;;;;29209:15;;29175:31;;29200:6;29175:31;:::i;:::-;:49;29144:80;29136:113;;;;-1:-1:-1;;;29136:113:0;;6781:2:1;29136:113:0;;;6763:21:1;6820:2;6800:18;;;6793:30;-1:-1:-1;;;6839:18:1;;;6832:51;6900:18;;29136:113:0;6579:345:1;29136:113:0;29283:10;29268:26;;;;:14;:26;;;;;;:31;;29260:52;;;;-1:-1:-1;;;29260:52:0;;8524:2:1;29260:52:0;;;8506:21:1;8563:1;8543:18;;;8536:29;-1:-1:-1;;;8581:18:1;;;8574:39;8630:18;;29260:52:0;8322:332:1;29260:52:0;29350:24;:15;29368:6;29350:24;:::i;:::-;29336:10;29325:22;;;;:10;:22;;;;;:49;29098:294::o;12073:181::-;8630:13;:11;:13::i;:::-;12163::::1;:24:::0;;-1:-1:-1;;;;;12163:24:0;::::1;-1:-1:-1::0;;;;;;12163:24:0;;::::1;::::0;::::1;::::0;;;12228:7:::1;8790::::0;8817:6;-1:-1:-1;;;;;8817:6:0;;8744:87;12228:7:::1;-1:-1:-1::0;;;;;12203:43:0::1;;;;;;;;;;;12073:181:::0;:::o;10011:191::-;10085:16;10104:6;;-1:-1:-1;;;;;10121:17:0;;;-1:-1:-1;;;;;;10121:17:0;;;;;;10154:40;;10104:6;;;;;;;10154:40;;10085:16;10154:40;10074:128;10011:191;:::o;8909:132::-;8790:7;8817:6;-1:-1:-1;;;;;8817:6:0;6594:10;8973:23;8965:68;;;;-1:-1:-1;;;8965:68:0;;8861:2:1;8965:68:0;;;8843:21:1;;;8880:18;;;8873:30;8939:34;8919:18;;;8912:62;8991:18;;8965:68:0;8659:356:1;12444:156:0;12534:13;12527:20;;-1:-1:-1;;;;;;12527:20:0;;;12558:34;12583:8;12558:24;:34::i;2479:293::-;1881:1;2613:7;;:19;2605:63;;;;-1:-1:-1;;;2605:63:0;;9222:2:1;2605:63:0;;;9204:21:1;9261:2;9241:18;;;9234:30;9300:33;9280:18;;;9273:61;9351:18;;2605:63:0;9020:355:1;2605:63:0;1881:1;2746:18;;2479:293::o;14:131:1:-;-1:-1:-1;;;;;89:31:1;;79:42;;69:70;;135:1;132;125:12;150:247;209:6;262:2;250:9;241:7;237:23;233:32;230:52;;;278:1;275;268:12;230:52;317:9;304:23;336:31;361:5;336:31;:::i;792:180::-;851:6;904:2;892:9;883:7;879:23;875:32;872:52;;;920:1;917;910:12;872:52;-1:-1:-1;943:23:1;;792:180;-1:-1:-1;792:180:1:o;977:127::-;1038:10;1033:3;1029:20;1026:1;1019:31;1069:4;1066:1;1059:15;1093:4;1090:1;1083:15;1109:125;1149:4;1177:1;1174;1171:8;1168:34;;;1182:18;;:::i;:::-;-1:-1:-1;1219:9:1;;1109:125::o;1239:217::-;1279:1;1305;1295:132;;1349:10;1344:3;1340:20;1337:1;1330:31;1384:4;1381:1;1374:15;1412:4;1409:1;1402:15;1295:132;-1:-1:-1;1441:9:1;;1239:217::o;1461:168::-;1501:7;1567:1;1563;1559:6;1555:14;1552:1;1549:21;1544:1;1537:9;1530:17;1526:45;1523:71;;;1574:18;;:::i;:::-;-1:-1:-1;1614:9:1;;1461:168::o;2344:128::-;2384:3;2415:1;2411:6;2408:1;2405:13;2402:39;;;2421:18;;:::i;:::-;-1:-1:-1;2457:9:1;;2344:128::o;3107:277::-;3174:6;3227:2;3215:9;3206:7;3202:23;3198:32;3195:52;;;3243:1;3240;3233:12;3195:52;3275:9;3269:16;3328:5;3321:13;3314:21;3307:5;3304:32;3294:60;;3350:1;3347;3340:12;3769:184;3839:6;3892:2;3880:9;3871:7;3867:23;3863:32;3860:52;;;3908:1;3905;3898:12;3860:52;-1:-1:-1;3931:16:1;;3769:184;-1:-1:-1;3769:184:1:o;3958:251::-;4028:6;4081:2;4069:9;4060:7;4056:23;4052:32;4049:52;;;4097:1;4094;4087:12;4049:52;4129:9;4123:16;4148:31;4173:5;4148:31;:::i;4927:127::-;4988:10;4983:3;4979:20;4976:1;4969:31;5019:4;5016:1;5009:15;5043:4;5040:1;5033:15;5059:1105;5154:6;5185:2;5228;5216:9;5207:7;5203:23;5199:32;5196:52;;;5244:1;5241;5234:12;5196:52;5277:9;5271:16;5306:18;5347:2;5339:6;5336:14;5333:34;;;5363:1;5360;5353:12;5333:34;5401:6;5390:9;5386:22;5376:32;;5446:7;5439:4;5435:2;5431:13;5427:27;5417:55;;5468:1;5465;5458:12;5417:55;5497:2;5491:9;5519:2;5515;5512:10;5509:36;;;5525:18;;:::i;:::-;5571:2;5568:1;5564:10;5603:2;5597:9;5666:2;5662:7;5657:2;5653;5649:11;5645:25;5637:6;5633:38;5721:6;5709:10;5706:22;5701:2;5689:10;5686:18;5683:46;5680:72;;;5732:18;;:::i;:::-;5768:2;5761:22;5818:18;;;5852:15;;;;-1:-1:-1;5894:11:1;;;5890:20;;;5922:19;;;5919:39;;;5954:1;5951;5944:12;5919:39;5978:11;;;;5998:135;6014:6;6009:3;6006:15;5998:135;;;6080:10;;6068:23;;6031:12;;;;6111;;;;5998:135;;;6152:6;5059:1105;-1:-1:-1;;;;;;;;5059:1105:1:o
Swarm Source
ipfs://5711e802de710a927068766865f7f2f5b21d38bc9ee170f81cec20427d4cdc69
Loading...
Loading
Loading...
Loading
Loading...
Loading
Net Worth in USD
$0.00
Net Worth in S
Multichain Portfolio | 35 Chains
| Chain | Token | Portfolio % | Price | Amount | Value |
|---|
Loading...
Loading
Loading...
Loading
Loading...
Loading
[ Download: CSV Export ]
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.