Source Code
Overview
MON Balance
MON Value
$0.00Latest 8 from a total of 8 transactions
| Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
|---|---|---|---|---|---|---|---|---|---|
| Leave Staking | 42922832 | 42 days ago | IN | 0 MON | 0.04823161 | ||||
| Enter Staking | 42701337 | 43 days ago | IN | 0 MON | 0.05128281 | ||||
| Enter Staking | 42701247 | 43 days ago | IN | 0 MON | 0.05477363 | ||||
| Enter Staking | 42256173 | 45 days ago | IN | 0 MON | 0.05128281 | ||||
| Enter Staking | 42256134 | 45 days ago | IN | 0 MON | 0.04653968 | ||||
| Enter Staking | 41747892 | 47 days ago | IN | 0 MON | 0.0603536 | ||||
| Enter Staking | 41747796 | 47 days ago | IN | 0 MON | 0.05622046 | ||||
| Enter Staking | 41747648 | 47 days ago | IN | 0 MON | 0.03997176 |
View more zero value Internal Transactions in Advanced View mode
Advanced mode:
Loading...
Loading
Contract Name:
MasterChef
Compiler Version
v0.6.12+commit.27d51765
Contract Source Code (Solidity)
/**
*Submitted for verification at monadscan.com on 2025-12-11
*/
// Sources flattened with hardhat v2.27.2 https://hardhat.org
// SPDX-License-Identifier: MIT
// File contracts/libs/BEP20/Context.sol
// Original license: SPDX_License_Identifier: MIT
pragma solidity ^0.6.0;
/*
* @dev Provides information about the current execution context, including the
* sender of the transaction and its data.
*/
abstract contract Context {
function _msgSender() internal view virtual returns (address payable) {
return msg.sender;
}
function _msgData() internal view virtual returns (bytes memory) {
this; // silence state mutability warning without generating bytecode
return msg.data;
}
}
// File contracts/libs/access/Ownable.sol
// Original license: SPDX_License_Identifier: MIT
pragma solidity ^0.6.0;
/**
* @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.
*/
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 () internal {
address msgSender = _msgSender();
_owner = msgSender;
emit OwnershipTransferred(address(0), msgSender);
}
/**
* @dev Returns the address of the current owner.
*/
function owner() public view virtual returns (address) {
return _owner;
}
/**
* @dev Throws if called by any account other than the owner.
*/
modifier onlyOwner() {
require(owner() == _msgSender(), "Ownable: caller is not the owner");
_;
}
/**
* @dev Leaves the contract without owner. It will not be possible to call
* `onlyOwner` functions anymore. Can only be called by the current owner.
*/
function renounceOwnership() public virtual onlyOwner {
emit OwnershipTransferred(_owner, address(0));
_owner = 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");
emit OwnershipTransferred(_owner, newOwner);
_owner = newOwner;
}
}
// File contracts/libs/BEP20/IBEP20.sol
// Original license: SPDX_License_Identifier: MIT
pragma solidity ^0.6.0;
interface IBEP20 {
/**
* @dev Returns the amount of tokens in existence.
*/
function totalSupply() external view returns (uint256);
/**
* @dev Returns the token decimals.
*/
function decimals() external view returns (uint8);
/**
* @dev Returns the token symbol.
*/
function symbol() external view returns (string memory);
/**
* @dev Returns the token name.
*/
function name() external view returns (string memory);
/**
* @dev Returns the bep token owner.
*/
function getOwner() external view returns (address);
/**
* @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 `recipient`.
*/
function transfer(address recipient, 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}.
*/
function allowance(address _owner, address spender) external view returns (uint256);
/**
* @dev Sets `amount` as the allowance of `spender` over the caller's tokens.
*/
function approve(address spender, uint256 amount) external returns (bool);
/**
* @dev Moves `amount` tokens from `sender` to `recipient` using the
* allowance mechanism. `amount` is then deducted from the caller's allowance.
*/
function transferFrom(address sender, address recipient, uint256 amount) external returns (bool);
/**
* @dev Emitted when `value` tokens are moved from one account (`from`) to another (`to`).
*/
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}.
*/
event Approval(address indexed owner, address indexed spender, uint256 value);
}
// File contracts/libs/math/SafeMath.sol
// Original license: SPDX_License_Identifier: MIT
pragma solidity ^0.6.0;
/**
* @dev Wrappers over Solidity's arithmetic operations with added overflow
* checks.
*/
library SafeMath {
/**
* @dev Returns the addition of two unsigned integers, reverting on
* overflow.
*/
function add(uint256 a, uint256 b) internal pure returns (uint256) {
uint256 c = a + b;
require(c >= a, "SafeMath: addition overflow");
return c;
}
/**
* @dev Returns the subtraction of two unsigned integers, reverting on
* overflow (when the result is negative).
*/
function sub(uint256 a, uint256 b) internal pure returns (uint256) {
return sub(a, b, "SafeMath: subtraction overflow");
}
/**
* @dev Returns the subtraction of two unsigned integers, reverting with custom message on
* overflow (when the result is negative).
*/
function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
require(b <= a, errorMessage);
uint256 c = a - b;
return c;
}
/**
* @dev Returns the multiplication of two unsigned integers, reverting on
* overflow.
*/
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;
}
/**
* @dev Returns the integer division of two unsigned integers. Reverts on
* division by zero. The result is rounded towards zero.
*/
function div(uint256 a, uint256 b) internal pure returns (uint256) {
return div(a, b, "SafeMath: division by zero");
}
/**
* @dev Returns the integer division of two unsigned integers. Reverts with custom message on
* division by zero. The result is rounded towards zero.
*/
function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
require(b > 0, errorMessage);
uint256 c = a / b;
return c;
}
/**
* @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),
* Reverts when dividing by zero.
*/
function mod(uint256 a, uint256 b) internal pure returns (uint256) {
return mod(a, b, "SafeMath: modulo by zero");
}
/**
* @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),
* Reverts with custom message when dividing by zero.
*/
function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
require(b != 0, errorMessage);
return a % b;
}
}
// File contracts/libs/BEP20/BEP20.sol
// Original license: SPDX_License_Identifier: MIT
pragma solidity ^0.6.0;
/**
* @dev Implementation of the {IBEP20} interface.
*/
contract BEP20 is Context, IBEP20, Ownable {
using SafeMath for uint256;
mapping(address => uint256) private _balances;
mapping(address => mapping(address => uint256)) private _allowances;
uint256 private _totalSupply;
string private _name;
string private _symbol;
uint8 private _decimals;
/**
* @dev Sets the values for {name} and {symbol}, initializes {decimals} with
* a default value of 18.
*/
constructor(string memory name, string memory symbol) public {
_name = name;
_symbol = symbol;
_decimals = 18;
}
/**
* @dev Returns the bep token owner.
*/
function getOwner() external override view returns (address) {
return owner();
}
/**
* @dev Returns the name of the token.
*/
function name() public override view returns (string memory) {
return _name;
}
/**
* @dev Returns the symbol of the token, usually a shorter version of the name.
*/
function symbol() public override view returns (string memory) {
return _symbol;
}
/**
* @dev Returns the number of decimals used to get its user representation.
*/
function decimals() public override view returns (uint8) {
return _decimals;
}
/**
* @dev See {BEP20-totalSupply}.
*/
function totalSupply() public override view returns (uint256) {
return _totalSupply;
}
/**
* @dev See {BEP20-balanceOf}.
*/
function balanceOf(address account) public override view returns (uint256) {
return _balances[account];
}
/**
* @dev See {BEP20-transfer}.
*/
function transfer(address recipient, uint256 amount) public override returns (bool) {
_transfer(_msgSender(), recipient, amount);
return true;
}
/**
* @dev See {BEP20-allowance}.
*/
function allowance(address owner, address spender) public override view returns (uint256) {
return _allowances[owner][spender];
}
/**
* @dev See {BEP20-approve}.
*/
function approve(address spender, uint256 amount) public override returns (bool) {
_approve(_msgSender(), spender, amount);
return true;
}
/**
* @dev See {BEP20-transferFrom}.
*/
function transferFrom(address sender, address recipient, uint256 amount) public override returns (bool) {
_transfer(sender, recipient, amount);
_approve(sender, _msgSender(), _allowances[sender][_msgSender()].sub(amount, "BEP20: transfer amount exceeds allowance"));
return true;
}
/**
* @dev Atomically increases the allowance granted to `spender` by the caller.
*/
function increaseAllowance(address spender, uint256 addedValue) public returns (bool) {
_approve(_msgSender(), spender, _allowances[_msgSender()][spender].add(addedValue));
return true;
}
/**
* @dev Atomically decreases the allowance granted to `spender` by the caller.
*/
function decreaseAllowance(address spender, uint256 subtractedValue) public returns (bool) {
_approve(_msgSender(), spender, _allowances[_msgSender()][spender].sub(subtractedValue, "BEP20: decreased allowance below zero"));
return true;
}
/**
* @dev Creates `amount` tokens and assigns them to `account`, increasing
* the total supply.
*/
function _mint(address account, uint256 amount) internal {
require(account != address(0), "BEP20: mint to the zero address");
_totalSupply = _totalSupply.add(amount);
_balances[account] = _balances[account].add(amount);
emit Transfer(address(0), account, amount);
}
/**
* @dev Destroys `amount` tokens from `account`, reducing the
* total supply.
*/
function _burn(address account, uint256 amount) internal {
require(account != address(0), "BEP20: burn from the zero address");
_balances[account] = _balances[account].sub(amount, "BEP20: burn amount exceeds balance");
_totalSupply = _totalSupply.sub(amount);
emit Transfer(account, address(0), amount);
}
/**
* @dev Sets `amount` as the allowance of `spender` over the `owner`s tokens.
*/
function _approve(address owner, address spender, uint256 amount) internal {
require(owner != address(0), "BEP20: approve from the zero address");
require(spender != address(0), "BEP20: approve to the zero address");
_allowances[owner][spender] = amount;
emit Approval(owner, spender, amount);
}
/**
* @dev Destroys `amount` tokens from `account`.`amount` is then deducted
* from the caller's allowance.
*/
function _burnFrom(address account, uint256 amount) internal {
_burn(account, amount);
_approve(account, _msgSender(), _allowances[account][_msgSender()].sub(amount, "BEP20: burn amount exceeds allowance"));
}
/**
* @dev Moves tokens `amount` from `sender` to `recipient`.
*/
function _transfer(address sender, address recipient, uint256 amount) internal {
require(sender != address(0), "BEP20: transfer from the zero address");
require(recipient != address(0), "BEP20: transfer to the zero address");
_balances[sender] = _balances[sender].sub(amount, "BEP20: transfer amount exceeds balance");
_balances[recipient] = _balances[recipient].add(amount);
emit Transfer(sender, recipient, amount);
}
}
// File contracts/CakeToken.sol
pragma solidity 0.6.12;
// Meme Finance Token with Governance and Pre-Mine.
contract CakeToken is BEP20('Meme Finance', 'MMF') {
/// @notice Constructor with 1 Billion token pre-mine to deployer
constructor() public {
// Pre-mine 1,000,000,000 (1 Billion) MMF tokens to the deployer
_mint(msg.sender, 1000000000 * 1e18);
// Set up initial delegation for governance
_moveDelegates(address(0), _delegates[msg.sender], 1000000000 * 1e18);
}
/// @notice Creates `_amount` token to `_to`. Must only be called by the owner (MasterChef).
function mint(address _to, uint256 _amount) public onlyOwner {
_mint(_to, _amount);
_moveDelegates(address(0), _delegates[_to], _amount);
}
// Copied and modified from YAM code:
// https://github.com/yam-finance/yam-protocol/blob/master/contracts/token/YAMGovernanceStorage.sol
// https://github.com/yam-finance/yam-protocol/blob/master/contracts/token/YAMGovernance.sol
// Which is copied and modified from COMPOUND:
// https://github.com/compound-finance/compound-protocol/blob/master/contracts/Governance/Comp.sol
/// @notice A record of each accounts delegate
mapping (address => address) internal _delegates;
/// @notice A checkpoint for marking number of votes from a given block
struct Checkpoint {
uint32 fromBlock;
uint256 votes;
}
/// @notice A record of votes checkpoints for each account, by index
mapping (address => mapping (uint32 => Checkpoint)) public checkpoints;
/// @notice The number of checkpoints for each account
mapping (address => uint32) public numCheckpoints;
/// @notice The EIP-712 typehash for the contract's domain
bytes32 public constant DOMAIN_TYPEHASH = keccak256("EIP712Domain(string name,uint256 chainId,address verifyingContract)");
/// @notice The EIP-712 typehash for the delegation struct used by the contract
bytes32 public constant DELEGATION_TYPEHASH = keccak256("Delegation(address delegatee,uint256 nonce,uint256 expiry)");
/// @notice A record of states for signing / validating signatures
mapping (address => uint) public nonces;
/// @notice An event thats emitted when an account changes its delegate
event DelegateChanged(address indexed delegator, address indexed fromDelegate, address indexed toDelegate);
/// @notice An event thats emitted when a delegate account's vote balance changes
event DelegateVotesChanged(address indexed delegate, uint previousBalance, uint newBalance);
/**
* @notice Delegate votes from `msg.sender` to `delegatee`
* @param delegator The address to get delegatee for
*/
function delegates(address delegator)
external
view
returns (address)
{
return _delegates[delegator];
}
/**
* @notice Delegate votes from `msg.sender` to `delegatee`
* @param delegatee The address to delegate votes to
*/
function delegate(address delegatee) external {
return _delegate(msg.sender, delegatee);
}
/**
* @notice Delegates votes from signatory to `delegatee`
* @param delegatee The address to delegate votes to
* @param nonce The contract state required to match the signature
* @param expiry The time at which to expire the signature
* @param v The recovery byte of the signature
* @param r Half of the ECDSA signature pair
* @param s Half of the ECDSA signature pair
*/
function delegateBySig(
address delegatee,
uint nonce,
uint expiry,
uint8 v,
bytes32 r,
bytes32 s
)
external
{
bytes32 domainSeparator = keccak256(
abi.encode(
DOMAIN_TYPEHASH,
keccak256(bytes(name())),
getChainId(),
address(this)
)
);
bytes32 structHash = keccak256(
abi.encode(
DELEGATION_TYPEHASH,
delegatee,
nonce,
expiry
)
);
bytes32 digest = keccak256(
abi.encodePacked(
"\x19\x01",
domainSeparator,
structHash
)
);
address signatory = ecrecover(digest, v, r, s);
require(signatory != address(0), "CAKE::delegateBySig: invalid signature");
require(nonce == nonces[signatory]++, "CAKE::delegateBySig: invalid nonce");
require(now <= expiry, "CAKE::delegateBySig: signature expired");
return _delegate(signatory, delegatee);
}
/**
* @notice Gets the current votes balance for `account`
* @param account The address to get votes balance
* @return The number of current votes for `account`
*/
function getCurrentVotes(address account)
external
view
returns (uint256)
{
uint32 nCheckpoints = numCheckpoints[account];
return nCheckpoints > 0 ? checkpoints[account][nCheckpoints - 1].votes : 0;
}
/**
* @notice Determine the prior number of votes for an account as of a block number
* @dev Block number must be a finalized block or else this function will revert to prevent misinformation.
* @param account The address of the account to check
* @param blockNumber The block number to get the vote balance at
* @return The number of votes the account had as of the given block
*/
function getPriorVotes(address account, uint blockNumber)
external
view
returns (uint256)
{
require(blockNumber < block.number, "CAKE::getPriorVotes: not yet determined");
uint32 nCheckpoints = numCheckpoints[account];
if (nCheckpoints == 0) {
return 0;
}
// First check most recent balance
if (checkpoints[account][nCheckpoints - 1].fromBlock <= blockNumber) {
return checkpoints[account][nCheckpoints - 1].votes;
}
// Next check implicit zero balance
if (checkpoints[account][0].fromBlock > blockNumber) {
return 0;
}
uint32 lower = 0;
uint32 upper = nCheckpoints - 1;
while (upper > lower) {
uint32 center = upper - (upper - lower) / 2; // ceil, avoiding overflow
Checkpoint memory cp = checkpoints[account][center];
if (cp.fromBlock == blockNumber) {
return cp.votes;
} else if (cp.fromBlock < blockNumber) {
lower = center;
} else {
upper = center - 1;
}
}
return checkpoints[account][lower].votes;
}
function _delegate(address delegator, address delegatee)
internal
{
address currentDelegate = _delegates[delegator];
uint256 delegatorBalance = balanceOf(delegator); // balance of underlying CAKEs (not scaled);
_delegates[delegator] = delegatee;
emit DelegateChanged(delegator, currentDelegate, delegatee);
_moveDelegates(currentDelegate, delegatee, delegatorBalance);
}
function _moveDelegates(address srcRep, address dstRep, uint256 amount) internal {
if (srcRep != dstRep && amount > 0) {
if (srcRep != address(0)) {
// decrease old representative
uint32 srcRepNum = numCheckpoints[srcRep];
uint256 srcRepOld = srcRepNum > 0 ? checkpoints[srcRep][srcRepNum - 1].votes : 0;
uint256 srcRepNew = srcRepOld.sub(amount);
_writeCheckpoint(srcRep, srcRepNum, srcRepOld, srcRepNew);
}
if (dstRep != address(0)) {
// increase new representative
uint32 dstRepNum = numCheckpoints[dstRep];
uint256 dstRepOld = dstRepNum > 0 ? checkpoints[dstRep][dstRepNum - 1].votes : 0;
uint256 dstRepNew = dstRepOld.add(amount);
_writeCheckpoint(dstRep, dstRepNum, dstRepOld, dstRepNew);
}
}
}
function _writeCheckpoint(
address delegatee,
uint32 nCheckpoints,
uint256 oldVotes,
uint256 newVotes
)
internal
{
uint32 blockNumber = safe32(block.number, "CAKE::_writeCheckpoint: block number exceeds 32 bits");
if (nCheckpoints > 0 && checkpoints[delegatee][nCheckpoints - 1].fromBlock == blockNumber) {
checkpoints[delegatee][nCheckpoints - 1].votes = newVotes;
} else {
checkpoints[delegatee][nCheckpoints] = Checkpoint(blockNumber, newVotes);
numCheckpoints[delegatee] = nCheckpoints + 1;
}
emit DelegateVotesChanged(delegatee, oldVotes, newVotes);
}
function safe32(uint n, string memory errorMessage) internal pure returns (uint32) {
require(n < 2**32, errorMessage);
return uint32(n);
}
function getChainId() internal pure returns (uint) {
uint256 chainId;
assembly { chainId := chainid() }
return chainId;
}
}
// File contracts/libs/utils/Address.sol
// Original license: SPDX_License_Identifier: MIT
pragma solidity ^0.6.2;
/**
* @dev Collection of functions related to the address type
*/
library Address {
/**
* @dev Returns true if `account` is a contract.
*/
function isContract(address account) internal view returns (bool) {
uint256 size;
assembly { size := extcodesize(account) }
return size > 0;
}
/**
* @dev Replacement for Solidity's `transfer`: sends `amount` wei to
* `recipient`, forwarding all available gas and reverting on errors.
*/
function sendValue(address payable recipient, uint256 amount) internal {
require(address(this).balance >= amount, "Address: insufficient balance");
(bool success, ) = recipient.call{ value: amount }("");
require(success, "Address: unable to send value, recipient may have reverted");
}
/**
* @dev Performs a Solidity function call using a low level `call`.
*/
function functionCall(address target, bytes memory data) internal returns (bytes memory) {
return functionCall(target, data, "Address: low-level call failed");
}
/**
* @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with
* `errorMessage` as a fallback revert reason when `target` reverts.
*/
function functionCall(address target, bytes memory data, string memory errorMessage) internal returns (bytes memory) {
return functionCallWithValue(target, data, 0, errorMessage);
}
/**
* @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],
* but also transferring `value` wei to `target`.
*/
function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) {
return functionCallWithValue(target, data, value, "Address: low-level call with value failed");
}
/**
* @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but
* with `errorMessage` as a fallback revert reason when `target` reverts.
*/
function functionCallWithValue(address target, bytes memory data, uint256 value, string memory errorMessage) internal returns (bytes memory) {
require(address(this).balance >= value, "Address: insufficient balance for call");
require(isContract(target), "Address: call to non-contract");
(bool success, bytes memory returndata) = target.call{ value: value }(data);
return _verifyCallResult(success, returndata, errorMessage);
}
/**
* @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],
* but performing a static call.
*/
function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {
return functionStaticCall(target, data, "Address: low-level static call failed");
}
/**
* @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],
* but performing a static call.
*/
function functionStaticCall(address target, bytes memory data, string memory errorMessage) internal view returns (bytes memory) {
require(isContract(target), "Address: static call to non-contract");
(bool success, bytes memory returndata) = target.staticcall(data);
return _verifyCallResult(success, returndata, errorMessage);
}
/**
* @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],
* but performing a delegate call.
*/
function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {
return functionDelegateCall(target, data, "Address: low-level delegate call failed");
}
/**
* @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],
* but performing a delegate call.
*/
function functionDelegateCall(address target, bytes memory data, string memory errorMessage) internal returns (bytes memory) {
require(isContract(target), "Address: delegate call to non-contract");
(bool success, bytes memory returndata) = target.delegatecall(data);
return _verifyCallResult(success, returndata, errorMessage);
}
function _verifyCallResult(bool success, bytes memory returndata, string memory errorMessage) private pure returns(bytes memory) {
if (success) {
return returndata;
} else {
if (returndata.length > 0) {
assembly {
let returndata_size := mload(returndata)
revert(add(32, returndata), returndata_size)
}
} else {
revert(errorMessage);
}
}
}
}
// File contracts/libs/BEP20/SafeBEP20.sol
// Original license: SPDX_License_Identifier: MIT
pragma solidity ^0.6.0;
/**
* @title SafeBEP20
* @dev Wrappers around BEP20 operations that throw on failure.
*/
library SafeBEP20 {
using SafeMath for uint256;
using Address for address;
function safeTransfer(IBEP20 token, address to, uint256 value) internal {
_callOptionalReturn(token, abi.encodeWithSelector(token.transfer.selector, to, value));
}
function safeTransferFrom(IBEP20 token, address from, address to, uint256 value) internal {
_callOptionalReturn(token, abi.encodeWithSelector(token.transferFrom.selector, from, to, value));
}
/**
* @dev Deprecated. This function has issues similar to the ones found in
* {IBEP20-approve}, and its usage is discouraged.
*/
function safeApprove(IBEP20 token, address spender, uint256 value) internal {
require((value == 0) || (token.allowance(address(this), spender) == 0),
"SafeBEP20: approve from non-zero to non-zero allowance"
);
_callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, value));
}
function safeIncreaseAllowance(IBEP20 token, address spender, uint256 value) internal {
uint256 newAllowance = token.allowance(address(this), spender).add(value);
_callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, newAllowance));
}
function safeDecreaseAllowance(IBEP20 token, address spender, uint256 value) internal {
uint256 newAllowance = token.allowance(address(this), spender).sub(value, "SafeBEP20: decreased allowance below zero");
_callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, newAllowance));
}
/**
* @dev Imitates a Solidity high-level call (i.e. a regular function call to a contract), relaxing the requirement
* on the return value: the return value is optional (but if data is returned, it must not be false).
* @param token The token targeted by the call.
* @param data The call data (encoded using abi.encode or one of its variants).
*/
function _callOptionalReturn(IBEP20 token, bytes memory data) private {
bytes memory returndata = address(token).functionCall(data, "SafeBEP20: low-level call failed");
if (returndata.length > 0) { // Return data is optional
// solhint-disable-next-line max-line-length
require(abi.decode(returndata, (bool)), "SafeBEP20: BEP20 operation did not succeed");
}
}
}
// File contracts/SyrupBar.sol
pragma solidity 0.6.12;
// SyrupBar with Governance.
contract SyrupBar is BEP20('SyrupBar Token', 'SYRUP') {
/// @notice Creates `_amount` token to `_to`. Must only be called by the owner (MasterChef).
function mint(address _to, uint256 _amount) public onlyOwner {
_mint(_to, _amount);
_moveDelegates(address(0), _delegates[_to], _amount);
}
function burn(address _from ,uint256 _amount) public onlyOwner {
_burn(_from, _amount);
_moveDelegates(_delegates[_from], address(0), _amount);
}
// The CAKE TOKEN!
CakeToken public cake;
constructor(
CakeToken _cake
) public {
cake = _cake;
}
// Safe cake transfer function, just in case if rounding error causes pool to not have enough CAKEs.
function safeCakeTransfer(address _to, uint256 _amount) public onlyOwner {
uint256 cakeBal = cake.balanceOf(address(this));
if (_amount > cakeBal) {
cake.transfer(_to, cakeBal);
} else {
cake.transfer(_to, _amount);
}
}
// Copied and modified from YAM code:
// https://github.com/yam-finance/yam-protocol/blob/master/contracts/token/YAMGovernanceStorage.sol
// https://github.com/yam-finance/yam-protocol/blob/master/contracts/token/YAMGovernance.sol
// Which is copied and modified from COMPOUND:
// https://github.com/compound-finance/compound-protocol/blob/master/contracts/Governance/Comp.sol
/// @notice A record of each accounts delegate
mapping (address => address) internal _delegates;
/// @notice A checkpoint for marking number of votes from a given block
struct Checkpoint {
uint32 fromBlock;
uint256 votes;
}
/// @notice A record of votes checkpoints for each account, by index
mapping (address => mapping (uint32 => Checkpoint)) public checkpoints;
/// @notice The number of checkpoints for each account
mapping (address => uint32) public numCheckpoints;
/// @notice The EIP-712 typehash for the contract's domain
bytes32 public constant DOMAIN_TYPEHASH = keccak256("EIP712Domain(string name,uint256 chainId,address verifyingContract)");
/// @notice The EIP-712 typehash for the delegation struct used by the contract
bytes32 public constant DELEGATION_TYPEHASH = keccak256("Delegation(address delegatee,uint256 nonce,uint256 expiry)");
/// @notice A record of states for signing / validating signatures
mapping (address => uint) public nonces;
/// @notice An event thats emitted when an account changes its delegate
event DelegateChanged(address indexed delegator, address indexed fromDelegate, address indexed toDelegate);
/// @notice An event thats emitted when a delegate account's vote balance changes
event DelegateVotesChanged(address indexed delegate, uint previousBalance, uint newBalance);
/**
* @notice Delegate votes from `msg.sender` to `delegatee`
* @param delegator The address to get delegatee for
*/
function delegates(address delegator)
external
view
returns (address)
{
return _delegates[delegator];
}
/**
* @notice Delegate votes from `msg.sender` to `delegatee`
* @param delegatee The address to delegate votes to
*/
function delegate(address delegatee) external {
return _delegate(msg.sender, delegatee);
}
/**
* @notice Delegates votes from signatory to `delegatee`
* @param delegatee The address to delegate votes to
* @param nonce The contract state required to match the signature
* @param expiry The time at which to expire the signature
* @param v The recovery byte of the signature
* @param r Half of the ECDSA signature pair
* @param s Half of the ECDSA signature pair
*/
function delegateBySig(
address delegatee,
uint nonce,
uint expiry,
uint8 v,
bytes32 r,
bytes32 s
)
external
{
bytes32 domainSeparator = keccak256(
abi.encode(
DOMAIN_TYPEHASH,
keccak256(bytes(name())),
getChainId(),
address(this)
)
);
bytes32 structHash = keccak256(
abi.encode(
DELEGATION_TYPEHASH,
delegatee,
nonce,
expiry
)
);
bytes32 digest = keccak256(
abi.encodePacked(
"\x19\x01",
domainSeparator,
structHash
)
);
address signatory = ecrecover(digest, v, r, s);
require(signatory != address(0), "CAKE::delegateBySig: invalid signature");
require(nonce == nonces[signatory]++, "CAKE::delegateBySig: invalid nonce");
require(now <= expiry, "CAKE::delegateBySig: signature expired");
return _delegate(signatory, delegatee);
}
/**
* @notice Gets the current votes balance for `account`
* @param account The address to get votes balance
* @return The number of current votes for `account`
*/
function getCurrentVotes(address account)
external
view
returns (uint256)
{
uint32 nCheckpoints = numCheckpoints[account];
return nCheckpoints > 0 ? checkpoints[account][nCheckpoints - 1].votes : 0;
}
/**
* @notice Determine the prior number of votes for an account as of a block number
* @dev Block number must be a finalized block or else this function will revert to prevent misinformation.
* @param account The address of the account to check
* @param blockNumber The block number to get the vote balance at
* @return The number of votes the account had as of the given block
*/
function getPriorVotes(address account, uint blockNumber)
external
view
returns (uint256)
{
require(blockNumber < block.number, "CAKE::getPriorVotes: not yet determined");
uint32 nCheckpoints = numCheckpoints[account];
if (nCheckpoints == 0) {
return 0;
}
// First check most recent balance
if (checkpoints[account][nCheckpoints - 1].fromBlock <= blockNumber) {
return checkpoints[account][nCheckpoints - 1].votes;
}
// Next check implicit zero balance
if (checkpoints[account][0].fromBlock > blockNumber) {
return 0;
}
uint32 lower = 0;
uint32 upper = nCheckpoints - 1;
while (upper > lower) {
uint32 center = upper - (upper - lower) / 2; // ceil, avoiding overflow
Checkpoint memory cp = checkpoints[account][center];
if (cp.fromBlock == blockNumber) {
return cp.votes;
} else if (cp.fromBlock < blockNumber) {
lower = center;
} else {
upper = center - 1;
}
}
return checkpoints[account][lower].votes;
}
function _delegate(address delegator, address delegatee)
internal
{
address currentDelegate = _delegates[delegator];
uint256 delegatorBalance = balanceOf(delegator); // balance of underlying CAKEs (not scaled);
_delegates[delegator] = delegatee;
emit DelegateChanged(delegator, currentDelegate, delegatee);
_moveDelegates(currentDelegate, delegatee, delegatorBalance);
}
function _moveDelegates(address srcRep, address dstRep, uint256 amount) internal {
if (srcRep != dstRep && amount > 0) {
if (srcRep != address(0)) {
// decrease old representative
uint32 srcRepNum = numCheckpoints[srcRep];
uint256 srcRepOld = srcRepNum > 0 ? checkpoints[srcRep][srcRepNum - 1].votes : 0;
uint256 srcRepNew = srcRepOld.sub(amount);
_writeCheckpoint(srcRep, srcRepNum, srcRepOld, srcRepNew);
}
if (dstRep != address(0)) {
// increase new representative
uint32 dstRepNum = numCheckpoints[dstRep];
uint256 dstRepOld = dstRepNum > 0 ? checkpoints[dstRep][dstRepNum - 1].votes : 0;
uint256 dstRepNew = dstRepOld.add(amount);
_writeCheckpoint(dstRep, dstRepNum, dstRepOld, dstRepNew);
}
}
}
function _writeCheckpoint(
address delegatee,
uint32 nCheckpoints,
uint256 oldVotes,
uint256 newVotes
)
internal
{
uint32 blockNumber = safe32(block.number, "CAKE::_writeCheckpoint: block number exceeds 32 bits");
if (nCheckpoints > 0 && checkpoints[delegatee][nCheckpoints - 1].fromBlock == blockNumber) {
checkpoints[delegatee][nCheckpoints - 1].votes = newVotes;
} else {
checkpoints[delegatee][nCheckpoints] = Checkpoint(blockNumber, newVotes);
numCheckpoints[delegatee] = nCheckpoints + 1;
}
emit DelegateVotesChanged(delegatee, oldVotes, newVotes);
}
function safe32(uint n, string memory errorMessage) internal pure returns (uint32) {
require(n < 2**32, errorMessage);
return uint32(n);
}
function getChainId() internal pure returns (uint) {
uint256 chainId;
assembly { chainId := chainid() }
return chainId;
}
}
// File contracts/MasterChef.sol
pragma solidity 0.6.12;
// import "@nomiclabs/buidler/console.sol";
interface IMigratorChef {
// Perform LP token migration from legacy PancakeSwap to CakeSwap.
// Take the current LP token address and return the new LP token address.
// Migrator should have full access to the caller's LP token.
// Return the new LP token address.
//
// XXX Migrator must have allowance access to PancakeSwap LP tokens.
// CakeSwap must mint EXACTLY the same amount of CakeSwap LP tokens or
// else something bad will happen. Traditional PancakeSwap does not
// do that so be careful!
function migrate(IBEP20 token) external returns (IBEP20);
}
// MasterChef is the master of Cake. He can make Cake and he is a fair guy.
//
// Note that it's ownable and the owner wields tremendous power. The ownership
// will be transferred to a governance smart contract once CAKE is sufficiently
// distributed and the community can show to govern itself.
//
// Have fun reading it. Hopefully it's bug-free. God bless.
contract MasterChef is Ownable {
using SafeMath for uint256;
using SafeBEP20 for IBEP20;
// Info of each user.
struct UserInfo {
uint256 amount; // How many LP tokens the user has provided.
uint256 rewardDebt; // Reward debt. See explanation below.
//
// We do some fancy math here. Basically, any point in time, the amount of CAKEs
// entitled to a user but is pending to be distributed is:
//
// pending reward = (user.amount * pool.accCakePerShare) - user.rewardDebt
//
// Whenever a user deposits or withdraws LP tokens to a pool. Here's what happens:
// 1. The pool's `accCakePerShare` (and `lastRewardBlock`) gets updated.
// 2. User receives the pending reward sent to his/her address.
// 3. User's `amount` gets updated.
// 4. User's `rewardDebt` gets updated.
}
// Info of each pool.
struct PoolInfo {
IBEP20 lpToken; // Address of LP token contract.
uint256 allocPoint; // How many allocation points assigned to this pool. CAKEs to distribute per block.
uint256 lastRewardBlock; // Last block number that CAKEs distribution occurs.
uint256 accCakePerShare; // Accumulated CAKEs per share, times 1e12. See below.
}
// The CAKE TOKEN!
CakeToken public cake;
// The SYRUP TOKEN!
SyrupBar public syrup;
// Dev address.
address public devaddr;
// CAKE tokens created per block.
uint256 public cakePerBlock;
// Bonus muliplier for early cake makers.
uint256 public BONUS_MULTIPLIER = 1;
// The migrator contract. It has a lot of power. Can only be set through governance (owner).
IMigratorChef public migrator;
// Info of each pool.
PoolInfo[] public poolInfo;
// Info of each user that stakes LP tokens.
mapping (uint256 => mapping (address => UserInfo)) public userInfo;
// Total allocation points. Must be the sum of all allocation points in all pools.
uint256 public totalAllocPoint = 0;
// The block number when CAKE mining starts.
uint256 public startBlock;
event Deposit(address indexed user, uint256 indexed pid, uint256 amount);
event Withdraw(address indexed user, uint256 indexed pid, uint256 amount);
event EmergencyWithdraw(address indexed user, uint256 indexed pid, uint256 amount);
constructor(
CakeToken _cake,
SyrupBar _syrup,
address _devaddr,
uint256 _cakePerBlock,
uint256 _startBlock
) public {
cake = _cake;
syrup = _syrup;
devaddr = _devaddr;
cakePerBlock = _cakePerBlock;
startBlock = _startBlock;
// staking pool
poolInfo.push(PoolInfo({
lpToken: _cake,
allocPoint: 1000,
lastRewardBlock: startBlock,
accCakePerShare: 0
}));
totalAllocPoint = 1000;
}
function updateMultiplier(uint256 multiplierNumber) public onlyOwner {
BONUS_MULTIPLIER = multiplierNumber;
}
function poolLength() external view returns (uint256) {
return poolInfo.length;
}
// Add a new lp to the pool. Can only be called by the owner.
// XXX DO NOT add the same LP token more than once. Rewards will be messed up if you do.
function add(uint256 _allocPoint, IBEP20 _lpToken, bool _withUpdate) public onlyOwner {
if (_withUpdate) {
massUpdatePools();
}
uint256 lastRewardBlock = block.number > startBlock ? block.number : startBlock;
totalAllocPoint = totalAllocPoint.add(_allocPoint);
poolInfo.push(PoolInfo({
lpToken: _lpToken,
allocPoint: _allocPoint,
lastRewardBlock: lastRewardBlock,
accCakePerShare: 0
}));
updateStakingPool();
}
// Update the given pool's CAKE allocation point. Can only be called by the owner.
function set(uint256 _pid, uint256 _allocPoint, bool _withUpdate) public onlyOwner {
if (_withUpdate) {
massUpdatePools();
}
uint256 prevAllocPoint = poolInfo[_pid].allocPoint;
poolInfo[_pid].allocPoint = _allocPoint;
if (prevAllocPoint != _allocPoint) {
totalAllocPoint = totalAllocPoint.sub(prevAllocPoint).add(_allocPoint);
updateStakingPool();
}
}
function updateStakingPool() internal {
uint256 length = poolInfo.length;
uint256 points = 0;
for (uint256 pid = 1; pid < length; ++pid) {
points = points.add(poolInfo[pid].allocPoint);
}
if (points != 0) {
points = points.div(3);
totalAllocPoint = totalAllocPoint.sub(poolInfo[0].allocPoint).add(points);
poolInfo[0].allocPoint = points;
}
}
// Set the migrator contract. Can only be called by the owner.
function setMigrator(IMigratorChef _migrator) public onlyOwner {
migrator = _migrator;
}
// Migrate lp token to another lp contract. Can be called by anyone. We trust that migrator contract is good.
function migrate(uint256 _pid) public {
require(address(migrator) != address(0), "migrate: no migrator");
PoolInfo storage pool = poolInfo[_pid];
IBEP20 lpToken = pool.lpToken;
uint256 bal = lpToken.balanceOf(address(this));
lpToken.safeApprove(address(migrator), bal);
IBEP20 newLpToken = migrator.migrate(lpToken);
require(bal == newLpToken.balanceOf(address(this)), "migrate: bad");
pool.lpToken = newLpToken;
}
// Return reward multiplier over the given _from to _to block.
function getMultiplier(uint256 _from, uint256 _to) public view returns (uint256) {
return _to.sub(_from).mul(BONUS_MULTIPLIER);
}
// View function to see pending CAKEs on frontend.
function pendingCake(uint256 _pid, address _user) external view returns (uint256) {
PoolInfo storage pool = poolInfo[_pid];
UserInfo storage user = userInfo[_pid][_user];
uint256 accCakePerShare = pool.accCakePerShare;
uint256 lpSupply = pool.lpToken.balanceOf(address(this));
if (block.number > pool.lastRewardBlock && lpSupply != 0) {
uint256 multiplier = getMultiplier(pool.lastRewardBlock, block.number);
uint256 cakeReward = multiplier.mul(cakePerBlock).mul(pool.allocPoint).div(totalAllocPoint);
accCakePerShare = accCakePerShare.add(cakeReward.mul(1e12).div(lpSupply));
}
return user.amount.mul(accCakePerShare).div(1e12).sub(user.rewardDebt);
}
// Update reward variables for all pools. Be careful of gas spending!
function massUpdatePools() public {
uint256 length = poolInfo.length;
for (uint256 pid = 0; pid < length; ++pid) {
updatePool(pid);
}
}
// Update reward variables of the given pool to be up-to-date.
function updatePool(uint256 _pid) public {
PoolInfo storage pool = poolInfo[_pid];
if (block.number <= pool.lastRewardBlock) {
return;
}
uint256 lpSupply = pool.lpToken.balanceOf(address(this));
if (lpSupply == 0) {
pool.lastRewardBlock = block.number;
return;
}
uint256 multiplier = getMultiplier(pool.lastRewardBlock, block.number);
uint256 cakeReward = multiplier.mul(cakePerBlock).mul(pool.allocPoint).div(totalAllocPoint);
cake.mint(devaddr, cakeReward.div(10));
cake.mint(address(syrup), cakeReward);
pool.accCakePerShare = pool.accCakePerShare.add(cakeReward.mul(1e12).div(lpSupply));
pool.lastRewardBlock = block.number;
}
// Deposit LP tokens to MasterChef for CAKE allocation.
function deposit(uint256 _pid, uint256 _amount) public {
require (_pid != 0, 'deposit CAKE by staking');
PoolInfo storage pool = poolInfo[_pid];
UserInfo storage user = userInfo[_pid][msg.sender];
updatePool(_pid);
if (user.amount > 0) {
uint256 pending = user.amount.mul(pool.accCakePerShare).div(1e12).sub(user.rewardDebt);
if(pending > 0) {
safeCakeTransfer(msg.sender, pending);
}
}
if (_amount > 0) {
pool.lpToken.safeTransferFrom(address(msg.sender), address(this), _amount);
user.amount = user.amount.add(_amount);
}
user.rewardDebt = user.amount.mul(pool.accCakePerShare).div(1e12);
emit Deposit(msg.sender, _pid, _amount);
}
// Withdraw LP tokens from MasterChef.
function withdraw(uint256 _pid, uint256 _amount) public {
require (_pid != 0, 'withdraw CAKE by unstaking');
PoolInfo storage pool = poolInfo[_pid];
UserInfo storage user = userInfo[_pid][msg.sender];
require(user.amount >= _amount, "withdraw: not good");
updatePool(_pid);
uint256 pending = user.amount.mul(pool.accCakePerShare).div(1e12).sub(user.rewardDebt);
if(pending > 0) {
safeCakeTransfer(msg.sender, pending);
}
if(_amount > 0) {
user.amount = user.amount.sub(_amount);
pool.lpToken.safeTransfer(address(msg.sender), _amount);
}
user.rewardDebt = user.amount.mul(pool.accCakePerShare).div(1e12);
emit Withdraw(msg.sender, _pid, _amount);
}
// Stake CAKE tokens to MasterChef
function enterStaking(uint256 _amount) public {
PoolInfo storage pool = poolInfo[0];
UserInfo storage user = userInfo[0][msg.sender];
updatePool(0);
if (user.amount > 0) {
uint256 pending = user.amount.mul(pool.accCakePerShare).div(1e12).sub(user.rewardDebt);
if(pending > 0) {
safeCakeTransfer(msg.sender, pending);
}
}
if(_amount > 0) {
pool.lpToken.safeTransferFrom(address(msg.sender), address(this), _amount);
user.amount = user.amount.add(_amount);
}
user.rewardDebt = user.amount.mul(pool.accCakePerShare).div(1e12);
syrup.mint(msg.sender, _amount);
emit Deposit(msg.sender, 0, _amount);
}
// Withdraw CAKE tokens from STAKING.
function leaveStaking(uint256 _amount) public {
PoolInfo storage pool = poolInfo[0];
UserInfo storage user = userInfo[0][msg.sender];
require(user.amount >= _amount, "withdraw: not good");
updatePool(0);
uint256 pending = user.amount.mul(pool.accCakePerShare).div(1e12).sub(user.rewardDebt);
if(pending > 0) {
safeCakeTransfer(msg.sender, pending);
}
if(_amount > 0) {
user.amount = user.amount.sub(_amount);
pool.lpToken.safeTransfer(address(msg.sender), _amount);
}
user.rewardDebt = user.amount.mul(pool.accCakePerShare).div(1e12);
syrup.burn(msg.sender, _amount);
emit Withdraw(msg.sender, 0, _amount);
}
// Withdraw without caring about rewards. EMERGENCY ONLY.
function emergencyWithdraw(uint256 _pid) public {
PoolInfo storage pool = poolInfo[_pid];
UserInfo storage user = userInfo[_pid][msg.sender];
pool.lpToken.safeTransfer(address(msg.sender), user.amount);
emit EmergencyWithdraw(msg.sender, _pid, user.amount);
user.amount = 0;
user.rewardDebt = 0;
}
// Safe cake transfer function, just in case if rounding error causes pool to not have enough CAKEs.
function safeCakeTransfer(address _to, uint256 _amount) internal {
syrup.safeCakeTransfer(_to, _amount);
}
// Update dev address by the previous dev.
function dev(address _devaddr) public {
require(msg.sender == devaddr, "dev: wut?");
devaddr = _devaddr;
}
}Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"inputs":[{"internalType":"contract CakeToken","name":"_cake","type":"address"},{"internalType":"contract SyrupBar","name":"_syrup","type":"address"},{"internalType":"address","name":"_devaddr","type":"address"},{"internalType":"uint256","name":"_cakePerBlock","type":"uint256"},{"internalType":"uint256","name":"_startBlock","type":"uint256"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":true,"internalType":"uint256","name":"pid","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Deposit","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":true,"internalType":"uint256","name":"pid","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"EmergencyWithdraw","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"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":true,"internalType":"uint256","name":"pid","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Withdraw","type":"event"},{"inputs":[],"name":"BONUS_MULTIPLIER","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_allocPoint","type":"uint256"},{"internalType":"contract IBEP20","name":"_lpToken","type":"address"},{"internalType":"bool","name":"_withUpdate","type":"bool"}],"name":"add","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"cake","outputs":[{"internalType":"contract CakeToken","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"cakePerBlock","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_pid","type":"uint256"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"deposit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_devaddr","type":"address"}],"name":"dev","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"devaddr","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_pid","type":"uint256"}],"name":"emergencyWithdraw","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"enterStaking","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_from","type":"uint256"},{"internalType":"uint256","name":"_to","type":"uint256"}],"name":"getMultiplier","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"leaveStaking","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"massUpdatePools","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_pid","type":"uint256"}],"name":"migrate","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"migrator","outputs":[{"internalType":"contract IMigratorChef","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_pid","type":"uint256"},{"internalType":"address","name":"_user","type":"address"}],"name":"pendingCake","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"poolInfo","outputs":[{"internalType":"contract IBEP20","name":"lpToken","type":"address"},{"internalType":"uint256","name":"allocPoint","type":"uint256"},{"internalType":"uint256","name":"lastRewardBlock","type":"uint256"},{"internalType":"uint256","name":"accCakePerShare","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"poolLength","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_pid","type":"uint256"},{"internalType":"uint256","name":"_allocPoint","type":"uint256"},{"internalType":"bool","name":"_withUpdate","type":"bool"}],"name":"set","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract IMigratorChef","name":"_migrator","type":"address"}],"name":"setMigrator","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"startBlock","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"syrup","outputs":[{"internalType":"contract SyrupBar","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalAllocPoint","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":[{"internalType":"uint256","name":"multiplierNumber","type":"uint256"}],"name":"updateMultiplier","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_pid","type":"uint256"}],"name":"updatePool","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"address","name":"","type":"address"}],"name":"userInfo","outputs":[{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"rewardDebt","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_pid","type":"uint256"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"}]Contract Creation Code
60806040526001600555600060095534801561001a57600080fd5b50604051612372380380612372833981810160405260a081101561003d57600080fd5b5080516020820151604083015160608401516080909401519293919290919060006100666101e0565b600080546001600160a01b0319166001600160a01b0383169081178255604051929350917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350600180546001600160a01b03199081166001600160a01b03978816908117835560028054831697891697909717909655600380548216958816959095179094556004928355600a829055604080516080810182529586526103e86020870181815291870193845260006060880181815260078054958601815590915296517fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c688939095029283018054909616949097169390931790935590517fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c689830155517fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c68a82015590517fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c68b909101556009556101e4565b3390565b61217f806101f36000396000f3fe608060405234801561001057600080fd5b50600436106101cf5760003560e01c80635ffe6146116101045780638d88a90e116100a2578063d49e77cd11610071578063d49e77cd146104b1578063dce17484146104b9578063e2bbb158146104c1578063f2fde38b146104e4576101cf565b80638d88a90e1461041b5780638da5cb5b146104415780638dbb1e3a1461044957806393f1a40b1461046c576101cf565b8063715018a6116100de578063715018a6146103df5780637cd07e47146103e757806386a952c41461040b5780638aa2855014610413576101cf565b80635ffe61461461038f578063630b5ba1146103ac57806364482f79146103b4576101cf565b806323cf311811610171578063454b06081161014b578063454b06081461033057806348cd4cb11461034d57806351eb05a6146103555780635312ea8e14610372576101cf565b806323cf3118146102ca57806341441d3b146102f0578063441a3e701461030d576101cf565b80631175a1dd116101ad5780631175a1dd146102155780631526fe271461024157806317caf6f11461028e5780631eaaa04514610296576101cf565b80630755e0b6146101d4578063081e3eda146101ee5780631058d281146101f6575b600080fd5b6101dc61050a565b60408051918252519081900360200190f35b6101dc610510565b6102136004803603602081101561020c57600080fd5b5035610516565b005b6101dc6004803603604081101561022b57600080fd5b50803590602001356001600160a01b03166106fa565b61025e6004803603602081101561025757600080fd5b5035610864565b604080516001600160a01b0390951685526020850193909352838301919091526060830152519081900360800190f35b6101dc6108a5565b610213600480360360608110156102ac57600080fd5b508035906001600160a01b03602082013516906040013515156108ab565b610213600480360360208110156102e057600080fd5b50356001600160a01b0316610a3b565b6102136004803603602081101561030657600080fd5b5035610abf565b6102136004803603604081101561032357600080fd5b5080359060200135610c53565b6102136004803603602081101561034657600080fd5b5035610df8565b6101dc611054565b6102136004803603602081101561036b57600080fd5b503561105a565b6102136004803603602081101561038857600080fd5b5035611280565b610213600480360360208110156103a557600080fd5b503561131b565b610213611382565b610213600480360360608110156103ca57600080fd5b508035906020810135906040013515156113a5565b61021361148c565b6103ef611538565b604080516001600160a01b039092168252519081900360200190f35b6103ef611547565b6101dc611556565b6102136004803603602081101561043157600080fd5b50356001600160a01b031661155c565b6103ef6115c9565b6101dc6004803603604081101561045f57600080fd5b50803590602001356115d8565b6104986004803603604081101561048257600080fd5b50803590602001356001600160a01b03166115f3565b6040805192835260208301919091528051918290030190f35b6103ef611617565b6103ef611626565b610213600480360360408110156104d757600080fd5b5080359060200135611635565b610213600480360360208110156104fa57600080fd5b50356001600160a01b0316611799565b60045481565b60075490565b6000600760008154811061052657fe5b600091825260208083203384527f5eff886ea0ce6ca488a3d6e336d6c0f75f46d19b42c06ce5ee98e42c96d256c790915260409092208054600490920290920192508311156105b1576040805162461bcd60e51b81526020600482015260126024820152711dda5d1a191c985dce881b9bdd0819dbdbd960721b604482015290519081900360640190fd5b6105bb600061105a565b60006105f582600101546105ef64e8d4a510006105e98760030154876000015461189b90919063ffffffff16565b906118f4565b90611936565b90508015610607576106073382611978565b83156106315781546106199085611936565b82558254610631906001600160a01b031633866119e9565b6003830154825461064c9164e8d4a51000916105e99161189b565b600183015560025460408051632770a7eb60e21b81523360048201526024810187905290516001600160a01b0390921691639dc29fac9160448082019260009290919082900301818387803b1580156106a457600080fd5b505af11580156106b8573d6000803e3d6000fd5b5050604080518781529051600093503392507ff279e6a1f5e320cca91135676d9cb6e44ca8a08c0b88342bcdb1144f6511b5689181900360200190a350505050565b6000806007848154811061070a57fe5b600091825260208083208784526008825260408085206001600160a01b03898116875290845281862060049586029093016003810154815484516370a0823160e01b81523098810198909852935191985093969395939492909116926370a08231926024808301939192829003018186803b15801561078857600080fd5b505afa15801561079c573d6000803e3d6000fd5b505050506040513d60208110156107b257600080fd5b50516002850154909150431180156107c957508015155b1561082f5760006107de8560020154436115d8565b9050600061080b6009546105e988600101546108056004548761189b90919063ffffffff16565b9061189b565b905061082a610823846105e98464e8d4a5100061189b565b8590611a40565b935050505b61085783600101546105ef64e8d4a510006105e986886000015461189b90919063ffffffff16565b9450505050505b92915050565b6007818154811061087157fe5b600091825260209091206004909102018054600182015460028301546003909301546001600160a01b039092169350919084565b60095481565b6108b3611a9a565b6001600160a01b03166108c46115c9565b6001600160a01b03161461090d576040805162461bcd60e51b8152602060048201819052602482015260008051602061212a833981519152604482015290519081900360640190fd5b801561091b5761091b611382565b6000600a54431161092e57600a54610930565b435b6009549091506109409085611a40565b600955604080516080810182526001600160a01b0385811682526020820187815292820184815260006060840181815260078054600181018255925293517fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c688600490920291820180546001600160a01b031916919094161790925592517fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c68982015591517fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c68a830155517fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c68b90910155610a35611a9e565b50505050565b610a43611a9a565b6001600160a01b0316610a546115c9565b6001600160a01b031614610a9d576040805162461bcd60e51b8152602060048201819052602482015260008051602061212a833981519152604482015290519081900360640190fd5b600680546001600160a01b0319166001600160a01b0392909216919091179055565b60006007600081548110610acf57fe5b600091825260208083203384527f5eff886ea0ce6ca488a3d6e336d6c0f75f46d19b42c06ce5ee98e42c96d256c790915260408320600490920201925090610b169061105a565b805415610b5f576000610b4b82600101546105ef64e8d4a510006105e98760030154876000015461189b90919063ffffffff16565b90508015610b5d57610b5d3382611978565b505b8215610b8b578154610b7c906001600160a01b0316333086611b63565b8054610b889084611a40565b81555b60038201548154610ba69164e8d4a51000916105e99161189b565b6001820155600254604080516340c10f1960e01b81523360048201526024810186905290516001600160a01b03909216916340c10f199160448082019260009290919082900301818387803b158015610bfe57600080fd5b505af1158015610c12573d6000803e3d6000fd5b5050604080518681529051600093503392507f90890809c654f11d6e72a28fa60149770a0d11ec6c92319d6ceb2bb0a4ea1a159181900360200190a3505050565b81610ca5576040805162461bcd60e51b815260206004820152601a60248201527f77697468647261772043414b4520627920756e7374616b696e67000000000000604482015290519081900360640190fd5b600060078381548110610cb457fe5b600091825260208083208684526008825260408085203386529092529220805460049092029092019250831115610d27576040805162461bcd60e51b81526020600482015260126024820152711dda5d1a191c985dce881b9bdd0819dbdbd960721b604482015290519081900360640190fd5b610d308461105a565b6000610d5e82600101546105ef64e8d4a510006105e98760030154876000015461189b90919063ffffffff16565b90508015610d7057610d703382611978565b8315610d9a578154610d829085611936565b82558254610d9a906001600160a01b031633866119e9565b60038301548254610db59164e8d4a51000916105e99161189b565b6001830155604080518581529051869133917ff279e6a1f5e320cca91135676d9cb6e44ca8a08c0b88342bcdb1144f6511b5689181900360200190a35050505050565b6006546001600160a01b0316610e4c576040805162461bcd60e51b815260206004820152601460248201527336b4b3b930ba329d1037379036b4b3b930ba37b960611b604482015290519081900360640190fd5b600060078281548110610e5b57fe5b600091825260208083206004928302018054604080516370a0823160e01b81523095810195909552519195506001600160a01b0316939284926370a0823192602480840193829003018186803b158015610eb457600080fd5b505afa158015610ec8573d6000803e3d6000fd5b505050506040513d6020811015610ede57600080fd5b5051600654909150610efd906001600160a01b03848116911683611bbd565b6006546040805163ce5494bb60e01b81526001600160a01b0385811660048301529151600093929092169163ce5494bb9160248082019260209290919082900301818787803b158015610f4f57600080fd5b505af1158015610f63573d6000803e3d6000fd5b505050506040513d6020811015610f7957600080fd5b5051604080516370a0823160e01b815230600482015290519192506001600160a01b038316916370a0823191602480820192602092909190829003018186803b158015610fc557600080fd5b505afa158015610fd9573d6000803e3d6000fd5b505050506040513d6020811015610fef57600080fd5b50518214611033576040805162461bcd60e51b815260206004820152600c60248201526b1b5a59dc985d194e8818985960a21b604482015290519081900360640190fd5b83546001600160a01b0319166001600160a01b039190911617909255505050565b600a5481565b60006007828154811061106957fe5b906000526020600020906004020190508060020154431161108a575061127d565b8054604080516370a0823160e01b815230600482015290516000926001600160a01b0316916370a08231916024808301926020929190829003018186803b1580156110d457600080fd5b505afa1580156110e8573d6000803e3d6000fd5b505050506040513d60208110156110fe57600080fd5b505190508061111457504360029091015561127d565b60006111248360020154436115d8565b9050600061114b6009546105e986600101546108056004548761189b90919063ffffffff16565b6001546003549192506001600160a01b03908116916340c10f19911661117284600a6118f4565b6040518363ffffffff1660e01b815260040180836001600160a01b0316815260200182815260200192505050600060405180830381600087803b1580156111b857600080fd5b505af11580156111cc573d6000803e3d6000fd5b5050600154600254604080516340c10f1960e01b81526001600160a01b0392831660048201526024810187905290519190921693506340c10f199250604480830192600092919082900301818387803b15801561122857600080fd5b505af115801561123c573d6000803e3d6000fd5b5050505061126a61125f846105e964e8d4a510008561189b90919063ffffffff16565b600386015490611a40565b6003850155505043600290920191909155505b50565b60006007828154811061128f57fe5b600091825260208083208584526008825260408085203380875293529093208054600490930290930180549094506112d4926001600160a01b039190911691906119e9565b80546040805191825251849133917fbb757047c2b5f3974fe26b7c10f732e7bce710b0952a71082702781e62ae05959181900360200190a360008082556001909101555050565b611323611a9a565b6001600160a01b03166113346115c9565b6001600160a01b03161461137d576040805162461bcd60e51b8152602060048201819052602482015260008051602061212a833981519152604482015290519081900360640190fd5b600555565b60075460005b818110156113a1576113998161105a565b600101611388565b5050565b6113ad611a9a565b6001600160a01b03166113be6115c9565b6001600160a01b031614611407576040805162461bcd60e51b8152602060048201819052602482015260008051602061212a833981519152604482015290519081900360640190fd5b801561141557611415611382565b60006007848154811061142457fe5b9060005260206000209060040201600101549050826007858154811061144657fe5b906000526020600020906004020160010181905550828114610a35576114818361147b8360095461193690919063ffffffff16565b90611a40565b600955610a35611a9e565b611494611a9a565b6001600160a01b03166114a56115c9565b6001600160a01b0316146114ee576040805162461bcd60e51b8152602060048201819052602482015260008051602061212a833981519152604482015290519081900360640190fd5b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6006546001600160a01b031681565b6002546001600160a01b031681565b60055481565b6003546001600160a01b031633146115a7576040805162461bcd60e51b81526020600482015260096024820152686465763a207775743f60b81b604482015290519081900360640190fd5b600380546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b031690565b6005546000906115ec906108058486611936565b9392505050565b60086020908152600092835260408084209091529082529020805460019091015482565b6003546001600160a01b031681565b6001546001600160a01b031681565b81611687576040805162461bcd60e51b815260206004820152601760248201527f6465706f7369742043414b45206279207374616b696e67000000000000000000604482015290519081900360640190fd5b60006007838154811061169657fe5b600091825260208083208684526008825260408085203386529092529220600490910290910191506116c78461105a565b8054156117105760006116fc82600101546105ef64e8d4a510006105e98760030154876000015461189b90919063ffffffff16565b9050801561170e5761170e3382611978565b505b821561173c57815461172d906001600160a01b0316333086611b63565b80546117399084611a40565b81555b600382015481546117579164e8d4a51000916105e99161189b565b6001820155604080518481529051859133917f90890809c654f11d6e72a28fa60149770a0d11ec6c92319d6ceb2bb0a4ea1a159181900360200190a350505050565b6117a1611a9a565b6001600160a01b03166117b26115c9565b6001600160a01b0316146117fb576040805162461bcd60e51b8152602060048201819052602482015260008051602061212a833981519152604482015290519081900360640190fd5b6001600160a01b0381166118405760405162461bcd60e51b81526004018080602001828103825260268152602001806120876026913960400191505060405180910390fd5b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6000826118aa5750600061085e565b828202828482816118b757fe5b04146115ec5760405162461bcd60e51b81526004018080602001828103825260218152602001806120d36021913960400191505060405180910390fd5b60006115ec83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611cd0565b60006115ec83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611d72565b600254604080516328b9b77360e21b81526001600160a01b038581166004830152602482018590529151919092169163a2e6ddcc91604480830192600092919082900301818387803b1580156119cd57600080fd5b505af11580156119e1573d6000803e3d6000fd5b505050505050565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b179052611a3b908490611dcc565b505050565b6000828201838110156115ec576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b3390565b600754600060015b82811015611ae957611adf60078281548110611abe57fe5b90600052602060002090600402016001015483611a4090919063ffffffff16565b9150600101611aa6565b5080156113a157611afb8160036118f4565b9050611b358161147b6007600081548110611b1257fe5b90600052602060002090600402016001015460095461193690919063ffffffff16565b600981905550806007600081548110611b4a57fe5b9060005260206000209060040201600101819055505050565b604080516001600160a01b0380861660248301528416604482015260648082018490528251808303909101815260849091019091526020810180516001600160e01b03166323b872dd60e01b179052610a35908590611dcc565b801580611c43575060408051636eb1769f60e11b81523060048201526001600160a01b03848116602483015291519185169163dd62ed3e91604480820192602092909190829003018186803b158015611c1557600080fd5b505afa158015611c29573d6000803e3d6000fd5b505050506040513d6020811015611c3f57600080fd5b5051155b611c7e5760405162461bcd60e51b81526004018080602001828103825260368152602001806120f46036913960400191505060405180910390fd5b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663095ea7b360e01b179052611a3b908490611dcc565b60008183611d5c5760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015611d21578181015183820152602001611d09565b50505050905090810190601f168015611d4e5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b506000838581611d6857fe5b0495945050505050565b60008184841115611dc45760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315611d21578181015183820152602001611d09565b505050900390565b6060611e21826040518060400160405280602081526020017f5361666542455032303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b0316611e7d9092919063ffffffff16565b805190915015611a3b57808060200190516020811015611e4057600080fd5b5051611a3b5760405162461bcd60e51b815260040180806020018281038252602a81526020018061205d602a913960400191505060405180910390fd5b6060611e8c8484600085611e94565b949350505050565b606082471015611ed55760405162461bcd60e51b81526004018080602001828103825260268152602001806120ad6026913960400191505060405180910390fd5b611ede85611ff0565b611f2f576040805162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015290519081900360640190fd5b60006060866001600160a01b031685876040518082805190602001908083835b60208310611f6e5780518252601f199092019160209182019101611f4f565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d8060008114611fd0576040519150601f19603f3d011682016040523d82523d6000602084013e611fd5565b606091505b5091509150611fe5828286611ff6565b979650505050505050565b3b151590565b606083156120055750816115ec565b8251156120155782518084602001fd5b60405162461bcd60e51b8152602060048201818152845160248401528451859391928392604401919085019080838360008315611d21578181015183820152602001611d0956fe5361666542455032303a204245503230206f7065726174696f6e20646964206e6f7420737563636565644f776e61626c653a206e6577206f776e657220697320746865207a65726f2061646472657373416464726573733a20696e73756666696369656e742062616c616e636520666f722063616c6c536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f775361666542455032303a20617070726f76652066726f6d206e6f6e2d7a65726f20746f206e6f6e2d7a65726f20616c6c6f77616e63654f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572a2646970667358221220a01885922eac4aa7e0282d5eaf58b8f8faf6318096892a25b24c0b8320b9859a64736f6c634300060c003300000000000000000000000028dd3002ca0040eac4037759c9b372ca66051af60000000000000000000000000ffce1fdd4ae2a296d8229784797f8fe4a7c9ac0000000000000000000000000c04afa16f7eae1a51dc8d5159f113a03db1df1020000000000000000000000000000000000000000000000022b1c8c1227a000000000000000000000000000000000000000000000000000000000000002780778
Deployed Bytecode
0x608060405234801561001057600080fd5b50600436106101cf5760003560e01c80635ffe6146116101045780638d88a90e116100a2578063d49e77cd11610071578063d49e77cd146104b1578063dce17484146104b9578063e2bbb158146104c1578063f2fde38b146104e4576101cf565b80638d88a90e1461041b5780638da5cb5b146104415780638dbb1e3a1461044957806393f1a40b1461046c576101cf565b8063715018a6116100de578063715018a6146103df5780637cd07e47146103e757806386a952c41461040b5780638aa2855014610413576101cf565b80635ffe61461461038f578063630b5ba1146103ac57806364482f79146103b4576101cf565b806323cf311811610171578063454b06081161014b578063454b06081461033057806348cd4cb11461034d57806351eb05a6146103555780635312ea8e14610372576101cf565b806323cf3118146102ca57806341441d3b146102f0578063441a3e701461030d576101cf565b80631175a1dd116101ad5780631175a1dd146102155780631526fe271461024157806317caf6f11461028e5780631eaaa04514610296576101cf565b80630755e0b6146101d4578063081e3eda146101ee5780631058d281146101f6575b600080fd5b6101dc61050a565b60408051918252519081900360200190f35b6101dc610510565b6102136004803603602081101561020c57600080fd5b5035610516565b005b6101dc6004803603604081101561022b57600080fd5b50803590602001356001600160a01b03166106fa565b61025e6004803603602081101561025757600080fd5b5035610864565b604080516001600160a01b0390951685526020850193909352838301919091526060830152519081900360800190f35b6101dc6108a5565b610213600480360360608110156102ac57600080fd5b508035906001600160a01b03602082013516906040013515156108ab565b610213600480360360208110156102e057600080fd5b50356001600160a01b0316610a3b565b6102136004803603602081101561030657600080fd5b5035610abf565b6102136004803603604081101561032357600080fd5b5080359060200135610c53565b6102136004803603602081101561034657600080fd5b5035610df8565b6101dc611054565b6102136004803603602081101561036b57600080fd5b503561105a565b6102136004803603602081101561038857600080fd5b5035611280565b610213600480360360208110156103a557600080fd5b503561131b565b610213611382565b610213600480360360608110156103ca57600080fd5b508035906020810135906040013515156113a5565b61021361148c565b6103ef611538565b604080516001600160a01b039092168252519081900360200190f35b6103ef611547565b6101dc611556565b6102136004803603602081101561043157600080fd5b50356001600160a01b031661155c565b6103ef6115c9565b6101dc6004803603604081101561045f57600080fd5b50803590602001356115d8565b6104986004803603604081101561048257600080fd5b50803590602001356001600160a01b03166115f3565b6040805192835260208301919091528051918290030190f35b6103ef611617565b6103ef611626565b610213600480360360408110156104d757600080fd5b5080359060200135611635565b610213600480360360208110156104fa57600080fd5b50356001600160a01b0316611799565b60045481565b60075490565b6000600760008154811061052657fe5b600091825260208083203384527f5eff886ea0ce6ca488a3d6e336d6c0f75f46d19b42c06ce5ee98e42c96d256c790915260409092208054600490920290920192508311156105b1576040805162461bcd60e51b81526020600482015260126024820152711dda5d1a191c985dce881b9bdd0819dbdbd960721b604482015290519081900360640190fd5b6105bb600061105a565b60006105f582600101546105ef64e8d4a510006105e98760030154876000015461189b90919063ffffffff16565b906118f4565b90611936565b90508015610607576106073382611978565b83156106315781546106199085611936565b82558254610631906001600160a01b031633866119e9565b6003830154825461064c9164e8d4a51000916105e99161189b565b600183015560025460408051632770a7eb60e21b81523360048201526024810187905290516001600160a01b0390921691639dc29fac9160448082019260009290919082900301818387803b1580156106a457600080fd5b505af11580156106b8573d6000803e3d6000fd5b5050604080518781529051600093503392507ff279e6a1f5e320cca91135676d9cb6e44ca8a08c0b88342bcdb1144f6511b5689181900360200190a350505050565b6000806007848154811061070a57fe5b600091825260208083208784526008825260408085206001600160a01b03898116875290845281862060049586029093016003810154815484516370a0823160e01b81523098810198909852935191985093969395939492909116926370a08231926024808301939192829003018186803b15801561078857600080fd5b505afa15801561079c573d6000803e3d6000fd5b505050506040513d60208110156107b257600080fd5b50516002850154909150431180156107c957508015155b1561082f5760006107de8560020154436115d8565b9050600061080b6009546105e988600101546108056004548761189b90919063ffffffff16565b9061189b565b905061082a610823846105e98464e8d4a5100061189b565b8590611a40565b935050505b61085783600101546105ef64e8d4a510006105e986886000015461189b90919063ffffffff16565b9450505050505b92915050565b6007818154811061087157fe5b600091825260209091206004909102018054600182015460028301546003909301546001600160a01b039092169350919084565b60095481565b6108b3611a9a565b6001600160a01b03166108c46115c9565b6001600160a01b03161461090d576040805162461bcd60e51b8152602060048201819052602482015260008051602061212a833981519152604482015290519081900360640190fd5b801561091b5761091b611382565b6000600a54431161092e57600a54610930565b435b6009549091506109409085611a40565b600955604080516080810182526001600160a01b0385811682526020820187815292820184815260006060840181815260078054600181018255925293517fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c688600490920291820180546001600160a01b031916919094161790925592517fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c68982015591517fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c68a830155517fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c68b90910155610a35611a9e565b50505050565b610a43611a9a565b6001600160a01b0316610a546115c9565b6001600160a01b031614610a9d576040805162461bcd60e51b8152602060048201819052602482015260008051602061212a833981519152604482015290519081900360640190fd5b600680546001600160a01b0319166001600160a01b0392909216919091179055565b60006007600081548110610acf57fe5b600091825260208083203384527f5eff886ea0ce6ca488a3d6e336d6c0f75f46d19b42c06ce5ee98e42c96d256c790915260408320600490920201925090610b169061105a565b805415610b5f576000610b4b82600101546105ef64e8d4a510006105e98760030154876000015461189b90919063ffffffff16565b90508015610b5d57610b5d3382611978565b505b8215610b8b578154610b7c906001600160a01b0316333086611b63565b8054610b889084611a40565b81555b60038201548154610ba69164e8d4a51000916105e99161189b565b6001820155600254604080516340c10f1960e01b81523360048201526024810186905290516001600160a01b03909216916340c10f199160448082019260009290919082900301818387803b158015610bfe57600080fd5b505af1158015610c12573d6000803e3d6000fd5b5050604080518681529051600093503392507f90890809c654f11d6e72a28fa60149770a0d11ec6c92319d6ceb2bb0a4ea1a159181900360200190a3505050565b81610ca5576040805162461bcd60e51b815260206004820152601a60248201527f77697468647261772043414b4520627920756e7374616b696e67000000000000604482015290519081900360640190fd5b600060078381548110610cb457fe5b600091825260208083208684526008825260408085203386529092529220805460049092029092019250831115610d27576040805162461bcd60e51b81526020600482015260126024820152711dda5d1a191c985dce881b9bdd0819dbdbd960721b604482015290519081900360640190fd5b610d308461105a565b6000610d5e82600101546105ef64e8d4a510006105e98760030154876000015461189b90919063ffffffff16565b90508015610d7057610d703382611978565b8315610d9a578154610d829085611936565b82558254610d9a906001600160a01b031633866119e9565b60038301548254610db59164e8d4a51000916105e99161189b565b6001830155604080518581529051869133917ff279e6a1f5e320cca91135676d9cb6e44ca8a08c0b88342bcdb1144f6511b5689181900360200190a35050505050565b6006546001600160a01b0316610e4c576040805162461bcd60e51b815260206004820152601460248201527336b4b3b930ba329d1037379036b4b3b930ba37b960611b604482015290519081900360640190fd5b600060078281548110610e5b57fe5b600091825260208083206004928302018054604080516370a0823160e01b81523095810195909552519195506001600160a01b0316939284926370a0823192602480840193829003018186803b158015610eb457600080fd5b505afa158015610ec8573d6000803e3d6000fd5b505050506040513d6020811015610ede57600080fd5b5051600654909150610efd906001600160a01b03848116911683611bbd565b6006546040805163ce5494bb60e01b81526001600160a01b0385811660048301529151600093929092169163ce5494bb9160248082019260209290919082900301818787803b158015610f4f57600080fd5b505af1158015610f63573d6000803e3d6000fd5b505050506040513d6020811015610f7957600080fd5b5051604080516370a0823160e01b815230600482015290519192506001600160a01b038316916370a0823191602480820192602092909190829003018186803b158015610fc557600080fd5b505afa158015610fd9573d6000803e3d6000fd5b505050506040513d6020811015610fef57600080fd5b50518214611033576040805162461bcd60e51b815260206004820152600c60248201526b1b5a59dc985d194e8818985960a21b604482015290519081900360640190fd5b83546001600160a01b0319166001600160a01b039190911617909255505050565b600a5481565b60006007828154811061106957fe5b906000526020600020906004020190508060020154431161108a575061127d565b8054604080516370a0823160e01b815230600482015290516000926001600160a01b0316916370a08231916024808301926020929190829003018186803b1580156110d457600080fd5b505afa1580156110e8573d6000803e3d6000fd5b505050506040513d60208110156110fe57600080fd5b505190508061111457504360029091015561127d565b60006111248360020154436115d8565b9050600061114b6009546105e986600101546108056004548761189b90919063ffffffff16565b6001546003549192506001600160a01b03908116916340c10f19911661117284600a6118f4565b6040518363ffffffff1660e01b815260040180836001600160a01b0316815260200182815260200192505050600060405180830381600087803b1580156111b857600080fd5b505af11580156111cc573d6000803e3d6000fd5b5050600154600254604080516340c10f1960e01b81526001600160a01b0392831660048201526024810187905290519190921693506340c10f199250604480830192600092919082900301818387803b15801561122857600080fd5b505af115801561123c573d6000803e3d6000fd5b5050505061126a61125f846105e964e8d4a510008561189b90919063ffffffff16565b600386015490611a40565b6003850155505043600290920191909155505b50565b60006007828154811061128f57fe5b600091825260208083208584526008825260408085203380875293529093208054600490930290930180549094506112d4926001600160a01b039190911691906119e9565b80546040805191825251849133917fbb757047c2b5f3974fe26b7c10f732e7bce710b0952a71082702781e62ae05959181900360200190a360008082556001909101555050565b611323611a9a565b6001600160a01b03166113346115c9565b6001600160a01b03161461137d576040805162461bcd60e51b8152602060048201819052602482015260008051602061212a833981519152604482015290519081900360640190fd5b600555565b60075460005b818110156113a1576113998161105a565b600101611388565b5050565b6113ad611a9a565b6001600160a01b03166113be6115c9565b6001600160a01b031614611407576040805162461bcd60e51b8152602060048201819052602482015260008051602061212a833981519152604482015290519081900360640190fd5b801561141557611415611382565b60006007848154811061142457fe5b9060005260206000209060040201600101549050826007858154811061144657fe5b906000526020600020906004020160010181905550828114610a35576114818361147b8360095461193690919063ffffffff16565b90611a40565b600955610a35611a9e565b611494611a9a565b6001600160a01b03166114a56115c9565b6001600160a01b0316146114ee576040805162461bcd60e51b8152602060048201819052602482015260008051602061212a833981519152604482015290519081900360640190fd5b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6006546001600160a01b031681565b6002546001600160a01b031681565b60055481565b6003546001600160a01b031633146115a7576040805162461bcd60e51b81526020600482015260096024820152686465763a207775743f60b81b604482015290519081900360640190fd5b600380546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b031690565b6005546000906115ec906108058486611936565b9392505050565b60086020908152600092835260408084209091529082529020805460019091015482565b6003546001600160a01b031681565b6001546001600160a01b031681565b81611687576040805162461bcd60e51b815260206004820152601760248201527f6465706f7369742043414b45206279207374616b696e67000000000000000000604482015290519081900360640190fd5b60006007838154811061169657fe5b600091825260208083208684526008825260408085203386529092529220600490910290910191506116c78461105a565b8054156117105760006116fc82600101546105ef64e8d4a510006105e98760030154876000015461189b90919063ffffffff16565b9050801561170e5761170e3382611978565b505b821561173c57815461172d906001600160a01b0316333086611b63565b80546117399084611a40565b81555b600382015481546117579164e8d4a51000916105e99161189b565b6001820155604080518481529051859133917f90890809c654f11d6e72a28fa60149770a0d11ec6c92319d6ceb2bb0a4ea1a159181900360200190a350505050565b6117a1611a9a565b6001600160a01b03166117b26115c9565b6001600160a01b0316146117fb576040805162461bcd60e51b8152602060048201819052602482015260008051602061212a833981519152604482015290519081900360640190fd5b6001600160a01b0381166118405760405162461bcd60e51b81526004018080602001828103825260268152602001806120876026913960400191505060405180910390fd5b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6000826118aa5750600061085e565b828202828482816118b757fe5b04146115ec5760405162461bcd60e51b81526004018080602001828103825260218152602001806120d36021913960400191505060405180910390fd5b60006115ec83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611cd0565b60006115ec83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611d72565b600254604080516328b9b77360e21b81526001600160a01b038581166004830152602482018590529151919092169163a2e6ddcc91604480830192600092919082900301818387803b1580156119cd57600080fd5b505af11580156119e1573d6000803e3d6000fd5b505050505050565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b179052611a3b908490611dcc565b505050565b6000828201838110156115ec576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b3390565b600754600060015b82811015611ae957611adf60078281548110611abe57fe5b90600052602060002090600402016001015483611a4090919063ffffffff16565b9150600101611aa6565b5080156113a157611afb8160036118f4565b9050611b358161147b6007600081548110611b1257fe5b90600052602060002090600402016001015460095461193690919063ffffffff16565b600981905550806007600081548110611b4a57fe5b9060005260206000209060040201600101819055505050565b604080516001600160a01b0380861660248301528416604482015260648082018490528251808303909101815260849091019091526020810180516001600160e01b03166323b872dd60e01b179052610a35908590611dcc565b801580611c43575060408051636eb1769f60e11b81523060048201526001600160a01b03848116602483015291519185169163dd62ed3e91604480820192602092909190829003018186803b158015611c1557600080fd5b505afa158015611c29573d6000803e3d6000fd5b505050506040513d6020811015611c3f57600080fd5b5051155b611c7e5760405162461bcd60e51b81526004018080602001828103825260368152602001806120f46036913960400191505060405180910390fd5b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663095ea7b360e01b179052611a3b908490611dcc565b60008183611d5c5760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015611d21578181015183820152602001611d09565b50505050905090810190601f168015611d4e5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b506000838581611d6857fe5b0495945050505050565b60008184841115611dc45760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315611d21578181015183820152602001611d09565b505050900390565b6060611e21826040518060400160405280602081526020017f5361666542455032303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b0316611e7d9092919063ffffffff16565b805190915015611a3b57808060200190516020811015611e4057600080fd5b5051611a3b5760405162461bcd60e51b815260040180806020018281038252602a81526020018061205d602a913960400191505060405180910390fd5b6060611e8c8484600085611e94565b949350505050565b606082471015611ed55760405162461bcd60e51b81526004018080602001828103825260268152602001806120ad6026913960400191505060405180910390fd5b611ede85611ff0565b611f2f576040805162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015290519081900360640190fd5b60006060866001600160a01b031685876040518082805190602001908083835b60208310611f6e5780518252601f199092019160209182019101611f4f565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d8060008114611fd0576040519150601f19603f3d011682016040523d82523d6000602084013e611fd5565b606091505b5091509150611fe5828286611ff6565b979650505050505050565b3b151590565b606083156120055750816115ec565b8251156120155782518084602001fd5b60405162461bcd60e51b8152602060048201818152845160248401528451859391928392604401919085019080838360008315611d21578181015183820152602001611d0956fe5361666542455032303a204245503230206f7065726174696f6e20646964206e6f7420737563636565644f776e61626c653a206e6577206f776e657220697320746865207a65726f2061646472657373416464726573733a20696e73756666696369656e742062616c616e636520666f722063616c6c536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f775361666542455032303a20617070726f76652066726f6d206e6f6e2d7a65726f20746f206e6f6e2d7a65726f20616c6c6f77616e63654f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572a2646970667358221220a01885922eac4aa7e0282d5eaf58b8f8faf6318096892a25b24c0b8320b9859a64736f6c634300060c0033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
00000000000000000000000028dd3002ca0040eac4037759c9b372ca66051af60000000000000000000000000ffce1fdd4ae2a296d8229784797f8fe4a7c9ac0000000000000000000000000c04afa16f7eae1a51dc8d5159f113a03db1df1020000000000000000000000000000000000000000000000022b1c8c1227a000000000000000000000000000000000000000000000000000000000000002780778
-----Decoded View---------------
Arg [0] : _cake (address): 0x28dD3002Ca0040eAc4037759c9b372Ca66051af6
Arg [1] : _syrup (address): 0x0FfCe1fDD4ae2A296D8229784797f8fE4A7C9ac0
Arg [2] : _devaddr (address): 0xc04AfA16f7eAE1a51dc8d5159f113a03dB1DF102
Arg [3] : _cakePerBlock (uint256): 40000000000000000000
Arg [4] : _startBlock (uint256): 41420664
-----Encoded View---------------
5 Constructor Arguments found :
Arg [0] : 00000000000000000000000028dd3002ca0040eac4037759c9b372ca66051af6
Arg [1] : 0000000000000000000000000ffce1fdd4ae2a296d8229784797f8fe4a7c9ac0
Arg [2] : 000000000000000000000000c04afa16f7eae1a51dc8d5159f113a03db1df102
Arg [3] : 0000000000000000000000000000000000000000000000022b1c8c1227a00000
Arg [4] : 0000000000000000000000000000000000000000000000000000000002780778
Deployed Bytecode Sourcemap
41354:12162:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;42907:27;;;:::i;:::-;;;;;;;;;;;;;;;;44522:95;;;:::i;51905:762::-;;;;;;;;;;;;;;;;-1:-1:-1;51905:762:0;;:::i;:::-;;47410:759;;;;;;;;;;;;;;;;-1:-1:-1;47410:759:0;;;;;;-1:-1:-1;;;;;47410:759:0;;:::i;43193:26::-;;;;;;;;;;;;;;;;-1:-1:-1;43193:26:0;;:::i;:::-;;;;-1:-1:-1;;;;;43193:26:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;43436:34;;;:::i;44786:543::-;;;;;;;;;;;;;;;;-1:-1:-1;44786:543:0;;;-1:-1:-1;;;;;44786:543:0;;;;;;;;;;;;:::i;46411:102::-;;;;;;;;;;;;;;;;-1:-1:-1;46411:102:0;-1:-1:-1;;;;;46411:102:0;;:::i;51079:775::-;;;;;;;;;;;;;;;;-1:-1:-1;51079:775:0;;:::i;50227:804::-;;;;;;;;;;;;;;;;-1:-1:-1;50227:804:0;;;;;;;:::i;46636:491::-;;;;;;;;;;;;;;;;-1:-1:-1;46636:491:0;;:::i;43527:25::-;;;:::i;48510:782::-;;;;;;;;;;;;;;;;-1:-1:-1;48510:782:0;;:::i;52738:356::-;;;;;;;;;;;;;;;;-1:-1:-1;52738:356:0;;:::i;44391:123::-;;;;;;;;;;;;;;;;-1:-1:-1;44391:123:0;;:::i;48252:180::-;;;:::i;45425:449::-;;;;;;;;;;;;;;;;-1:-1:-1;45425:449:0;;;;;;;;;;;;;;:::i;1996:148::-;;;:::i;43128:29::-;;;:::i;:::-;;;;-1:-1:-1;;;;;43128:29:0;;;;;;;;;;;;;;42790:21;;;:::i;42988:35::-;;;:::i;53384:129::-;;;;;;;;;;;;;;;;-1:-1:-1;53384:129:0;-1:-1:-1;;;;;53384:129:0;;:::i;1510:87::-;;;:::i;47203:143::-;;;;;;;;;;;;;;;;-1:-1:-1;47203:143:0;;;;;;;:::i;43275:66::-;;;;;;;;;;;;;;;;-1:-1:-1;43275:66:0;;;;;;-1:-1:-1;;;;;43275:66:0;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;42839:22;;;:::i;42737:21::-;;;:::i;49361:814::-;;;;;;;;;;;;;;;;-1:-1:-1;49361:814:0;;;;;;;:::i;2299:244::-;;;;;;;;;;;;;;;;-1:-1:-1;2299:244:0;-1:-1:-1;;;;;2299:244:0;;:::i;42907:27::-;;;;:::o;44522:95::-;44594:8;:15;44522:95;:::o;51905:762::-;51962:21;51986:8;51995:1;51986:11;;;;;;;;;;;;;;;;52044:10;52032:23;;:11;:23;;;:11;:23;;;52074:11;;51986;;;;;;;;-1:-1:-1;52074:22:0;-1:-1:-1;52074:22:0;52066:53;;;;;-1:-1:-1;;;52066:53:0;;;;;;;;;;;;-1:-1:-1;;;52066:53:0;;;;;;;;;;;;;;;52130:13;52141:1;52130:10;:13::i;:::-;52154:15;52172:68;52224:4;:15;;;52172:47;52214:4;52172:37;52188:4;:20;;;52172:4;:11;;;:15;;:37;;;;:::i;:::-;:41;;:47::i;:::-;:51;;:68::i;:::-;52154:86;-1:-1:-1;52254:11:0;;52251:80;;52282:37;52299:10;52311:7;52282:16;:37::i;:::-;52344:11;;52341:151;;52386:11;;:24;;52402:7;52386:15;:24::i;:::-;52372:38;;52425:12;;:55;;-1:-1:-1;;;;;52425:12:0;52459:10;52472:7;52425:25;:55::i;:::-;52536:20;;;;52520:11;;:47;;52562:4;;52520:37;;:15;:37::i;:47::-;52502:15;;;:65;52580:5;;:31;;;-1:-1:-1;;;52580:31:0;;52591:10;52580:31;;;;;;;;;;;;-1:-1:-1;;;;;52580:5:0;;;;:10;;:31;;;;;:5;;:31;;;;;;;;:5;;:31;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;52627:32:0;;;;;;;;52648:1;;-1:-1:-1;52636:10:0;;-1:-1:-1;52627:32:0;;;;;;;;;51905:762;;;;:::o;47410:759::-;47483:7;47503:21;47527:8;47536:4;47527:14;;;;;;;;;;;;;;;;47576;;;:8;:14;;;;;;-1:-1:-1;;;;;47576:21:0;;;;;;;;;;;47527:14;;;;;;;47634:20;;;;47684:12;;:37;;-1:-1:-1;;;47684:37:0;;47715:4;47684:37;;;;;;;;;47527:14;;-1:-1:-1;47576:21:0;;47634:20;;47527:14;;47684:12;;;;;:22;;:37;;;;;47527:14;;47684:37;;;;;:12;:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;47684:37:0;47751:20;;;;47684:37;;-1:-1:-1;47736:12:0;:35;:52;;;;-1:-1:-1;47775:13:0;;;47736:52;47732:349;;;47805:18;47826:49;47840:4;:20;;;47862:12;47826:13;:49::i;:::-;47805:70;;47890:18;47911:70;47965:15;;47911:49;47944:4;:15;;;47911:28;47926:12;;47911:10;:14;;:28;;;;:::i;:::-;:32;;:49::i;:70::-;47890:91;-1:-1:-1;48014:55:0;48034:34;48059:8;48034:20;47890:91;48049:4;48034:14;:20::i;:34::-;48014:15;;:19;:55::i;:::-;47996:73;;47732:349;;;48098:63;48145:4;:15;;;48098:42;48135:4;48098:32;48114:15;48098:4;:11;;;:15;;:32;;;;:::i;:63::-;48091:70;;;;;;47410:759;;;;;:::o;43193:26::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;43193:26:0;;;;-1:-1:-1;43193:26:0;;;:::o;43436:34::-;;;;:::o;44786:543::-;1741:12;:10;:12::i;:::-;-1:-1:-1;;;;;1730:23:0;:7;:5;:7::i;:::-;-1:-1:-1;;;;;1730:23:0;;1722:68;;;;;-1:-1:-1;;;1722:68:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;1722:68:0;;;;;;;;;;;;;;;44887:11:::1;44883:61;;;44915:17;:15;:17::i;:::-;44954:23;44995:10;;44980:12;:25;:53;;45023:10;;44980:53;;;45008:12;44980:53;45062:15;::::0;44954:79;;-1:-1:-1;45062:32:0::1;::::0;45082:11;45062:19:::1;:32::i;:::-;45044:15;:50:::0;45119:171:::1;::::0;;::::1;::::0;::::1;::::0;;-1:-1:-1;;;;;45119:171:0;;::::1;::::0;;::::1;::::0;::::1;::::0;;;;;;;;;-1:-1:-1;45119:171:0;;;;;;45105:8:::1;:186:::0;;::::1;::::0;::::1;::::0;;;;;;;::::1;::::0;;::::1;::::0;;::::1;::::0;;-1:-1:-1;;;;;;45105:186:0::1;::::0;;;::::1;;::::0;;;;;;;;;;;;;;;;;;;;;45302:19:::1;:17;:19::i;:::-;1801:1;44786:543:::0;;;:::o;46411:102::-;1741:12;:10;:12::i;:::-;-1:-1:-1;;;;;1730:23:0;:7;:5;:7::i;:::-;-1:-1:-1;;;;;1730:23:0;;1722:68;;;;;-1:-1:-1;;;1722:68:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;1722:68:0;;;;;;;;;;;;;;;46485:8:::1;:20:::0;;-1:-1:-1;;;;;;46485:20:0::1;-1:-1:-1::0;;;;;46485:20:0;;;::::1;::::0;;;::::1;::::0;;46411:102::o;51079:775::-;51136:21;51160:8;51169:1;51160:11;;;;;;;;;;;;;;;;51218:10;51206:23;;:11;:23;;;:11;:23;;51160:11;;;;;;-1:-1:-1;51206:23:0;51240:13;;:10;:13::i;:::-;51268:11;;:15;51264:236;;51300:15;51318:68;51370:4;:15;;;51318:47;51360:4;51318:37;51334:4;:20;;;51318:4;:11;;;:15;;:37;;;;:::i;:68::-;51300:86;-1:-1:-1;51404:11:0;;51401:88;;51436:37;51453:10;51465:7;51436:16;:37::i;:::-;51264:236;;51513:11;;51510:170;;51541:12;;:74;;-1:-1:-1;;;;;51541:12:0;51579:10;51600:4;51607:7;51541:29;:74::i;:::-;51644:11;;:24;;51660:7;51644:15;:24::i;:::-;51630:38;;51510:170;51724:20;;;;51708:11;;:47;;51750:4;;51708:37;;:15;:37::i;:47::-;51690:15;;;:65;51768:5;;:31;;;-1:-1:-1;;;51768:31:0;;51779:10;51768:31;;;;;;;;;;;;-1:-1:-1;;;;;51768:5:0;;;;:10;;:31;;;;;:5;;:31;;;;;;;;:5;;:31;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;51815:31:0;;;;;;;;51835:1;;-1:-1:-1;51823:10:0;;-1:-1:-1;51815:31:0;;;;;;;;;51079:775;;;:::o;50227:804::-;50305:9;50296:49;;;;;-1:-1:-1;;;50296:49:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;50356:21;50380:8;50389:4;50380:14;;;;;;;;;;;;;;;;50429;;;:8;:14;;;;;;50444:10;50429:26;;;;;;;50474:11;;50380:14;;;;;;;;-1:-1:-1;50474:22:0;-1:-1:-1;50474:22:0;50466:53;;;;;-1:-1:-1;;;50466:53:0;;;;;;;;;;;;-1:-1:-1;;;50466:53:0;;;;;;;;;;;;;;;50532:16;50543:4;50532:10;:16::i;:::-;50559:15;50577:68;50629:4;:15;;;50577:47;50619:4;50577:37;50593:4;:20;;;50577:4;:11;;;:15;;:37;;;;:::i;:68::-;50559:86;-1:-1:-1;50659:11:0;;50656:80;;50687:37;50704:10;50716:7;50687:16;:37::i;:::-;50749:11;;50746:151;;50791:11;;:24;;50807:7;50791:15;:24::i;:::-;50777:38;;50830:12;;:55;;-1:-1:-1;;;;;50830:12:0;50864:10;50877:7;50830:25;:55::i;:::-;50941:20;;;;50925:11;;:47;;50967:4;;50925:37;;:15;:37::i;:47::-;50907:15;;;:65;50988:35;;;;;;;;51009:4;;50997:10;;50988:35;;;;;;;;;50227:804;;;;;:::o;46636:491::-;46701:8;;-1:-1:-1;;;;;46701:8:0;46685:64;;;;;-1:-1:-1;;;46685:64:0;;;;;;;;;;;;-1:-1:-1;;;46685:64:0;;;;;;;;;;;;;;;46760:21;46784:8;46793:4;46784:14;;;;;;;;;;;;;;;;;;;;;46826:12;;46863:32;;;-1:-1:-1;;;46863:32:0;;46889:4;46863:32;;;;;;;;46784:14;;-1:-1:-1;;;;;;46826:12:0;;46784:14;46826:12;;46863:17;;:32;;;;;;;;;;46826:12;46863:32;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;46863:32:0;46934:8;;46863:32;;-1:-1:-1;46906:43:0;;-1:-1:-1;;;;;46906:19:0;;;;46934:8;46863:32;46906:19;:43::i;:::-;46980:8;;:25;;;-1:-1:-1;;;46980:25:0;;-1:-1:-1;;;;;46980:25:0;;;;;;;;;46960:17;;46980:8;;;;;:16;;:25;;;;;;;;;;;;;;;46960:17;46980:8;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;46980:25:0;47031:35;;;-1:-1:-1;;;47031:35:0;;47060:4;47031:35;;;;;;46980:25;;-1:-1:-1;;;;;;47031:20:0;;;;;:35;;;;;46980:25;;47031:35;;;;;;;;:20;:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;47031:35:0;47024:42;;47016:67;;;;;-1:-1:-1;;;47016:67:0;;;;;;;;;;;;-1:-1:-1;;;47016:67:0;;;;;;;;;;;;;;;47094:25;;-1:-1:-1;;;;;;47094:25:0;-1:-1:-1;;;;;47094:25:0;;;;;;;;-1:-1:-1;;;46636:491:0:o;43527:25::-;;;;:::o;48510:782::-;48562:21;48586:8;48595:4;48586:14;;;;;;;;;;;;;;;;;;48562:38;;48631:4;:20;;;48615:12;:36;48611:75;;48668:7;;;48611:75;48715:12;;:37;;;-1:-1:-1;;;48715:37:0;;48746:4;48715:37;;;;;;48696:16;;-1:-1:-1;;;;;48715:12:0;;:22;;:37;;;;;;;;;;;;;;:12;:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;48715:37:0;;-1:-1:-1;48767:13:0;48763:102;;-1:-1:-1;48820:12:0;48797:20;;;;:35;48847:7;;48763:102;48875:18;48896:49;48910:4;:20;;;48932:12;48896:13;:49::i;:::-;48875:70;;48956:18;48977:70;49031:15;;48977:49;49010:4;:15;;;48977:28;48992:12;;48977:10;:14;;:28;;;;:::i;:70::-;49058:4;;49068:7;;48956:91;;-1:-1:-1;;;;;;49058:4:0;;;;:9;;49068:7;49077:18;48956:91;49092:2;49077:14;:18::i;:::-;49058:38;;;;;;;;;;;;;-1:-1:-1;;;;;49058:38:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;49107:4:0;;49125:5;;49107:37;;;-1:-1:-1;;;49107:37:0;;-1:-1:-1;;;;;49125:5:0;;;49107:37;;;;;;;;;;;;:4;;;;;-1:-1:-1;49107:9:0;;-1:-1:-1;49107:37:0;;;;;:4;;:37;;;;;;;:4;;:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;49178:60;49203:34;49228:8;49203:20;49218:4;49203:10;:14;;:20;;;;:::i;:34::-;49178:20;;;;;:24;:60::i;:::-;49155:20;;;:83;-1:-1:-1;;49272:12:0;49249:20;;;;:35;;;;-1:-1:-1;48510:782:0;;:::o;52738:356::-;52797:21;52821:8;52830:4;52821:14;;;;;;;;;;;;;;;;52870;;;:8;:14;;;;;;52885:10;52870:26;;;;;;;;52954:11;;52821:14;;;;;;;52907:12;;52821:14;;-1:-1:-1;52907:59:0;;-1:-1:-1;;;;;52907:12:0;;;;;52885:10;52907:25;:59::i;:::-;53018:11;;52982:48;;;;;;;53012:4;;53000:10;;52982:48;;;;;;;;;53055:1;53041:15;;;53067;;;;:19;-1:-1:-1;;52738:356:0:o;44391:123::-;1741:12;:10;:12::i;:::-;-1:-1:-1;;;;;1730:23:0;:7;:5;:7::i;:::-;-1:-1:-1;;;;;1730:23:0;;1722:68;;;;;-1:-1:-1;;;1722:68:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;1722:68:0;;;;;;;;;;;;;;;44471:16:::1;:35:::0;44391:123::o;48252:180::-;48314:8;:15;48297:14;48340:85;48368:6;48362:3;:12;48340:85;;;48398:15;48409:3;48398:10;:15::i;:::-;48376:5;;48340:85;;;;48252:180;:::o;45425:449::-;1741:12;:10;:12::i;:::-;-1:-1:-1;;;;;1730:23:0;:7;:5;:7::i;:::-;-1:-1:-1;;;;;1730:23:0;;1722:68;;;;;-1:-1:-1;;;1722:68:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;1722:68:0;;;;;;;;;;;;;;;45523:11:::1;45519:61;;;45551:17;:15;:17::i;:::-;45590:22;45615:8;45624:4;45615:14;;;;;;;;;;;;;;;;;;:25;;;45590:50;;45679:11;45651:8;45660:4;45651:14;;;;;;;;;;;;;;;;;;:25;;:39;;;;45723:11;45705:14;:29;45701:166;;45769:52;45809:11;45769:35;45789:14;45769:15;;:19;;:35;;;;:::i;:::-;:39:::0;::::1;:52::i;:::-;45751:15;:70:::0;45836:19:::1;:17;:19::i;1996:148::-:0;1741:12;:10;:12::i;:::-;-1:-1:-1;;;;;1730:23:0;:7;:5;:7::i;:::-;-1:-1:-1;;;;;1730:23:0;;1722:68;;;;;-1:-1:-1;;;1722:68:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;1722:68:0;;;;;;;;;;;;;;;2103:1:::1;2087:6:::0;;2066:40:::1;::::0;-1:-1:-1;;;;;2087:6:0;;::::1;::::0;2066:40:::1;::::0;2103:1;;2066:40:::1;2134:1;2117:19:::0;;-1:-1:-1;;;;;;2117:19:0::1;::::0;;1996:148::o;43128:29::-;;;-1:-1:-1;;;;;43128:29:0;;:::o;42790:21::-;;;-1:-1:-1;;;;;42790:21:0;;:::o;42988:35::-;;;;:::o;53384:129::-;53455:7;;-1:-1:-1;;;;;53455:7:0;53441:10;:21;53433:43;;;;;-1:-1:-1;;;53433:43:0;;;;;;;;;;;;-1:-1:-1;;;53433:43:0;;;;;;;;;;;;;;;53487:7;:18;;-1:-1:-1;;;;;;53487:18:0;-1:-1:-1;;;;;53487:18:0;;;;;;;;;;53384:129::o;1510:87::-;1556:7;1583:6;-1:-1:-1;;;;;1583:6:0;1510:87;:::o;47203:143::-;47321:16;;47275:7;;47302:36;;:14;:3;47310:5;47302:7;:14::i;:36::-;47295:43;47203:143;-1:-1:-1;;;47203:143:0:o;43275:66::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;42839:22::-;;;-1:-1:-1;;;;;42839:22:0;;:::o;42737:21::-;;;-1:-1:-1;;;;;42737:21:0;;:::o;49361:814::-;49438:9;49429:46;;;;;-1:-1:-1;;;49429:46:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;49488:21;49512:8;49521:4;49512:14;;;;;;;;;;;;;;;;49561;;;:8;:14;;;;;;49576:10;49561:26;;;;;;;49512:14;;;;;;;;-1:-1:-1;49598:16:0;49570:4;49598:10;:16::i;:::-;49629:11;;:15;49625:236;;49661:15;49679:68;49731:4;:15;;;49679:47;49721:4;49679:37;49695:4;:20;;;49679:4;:11;;;:15;;:37;;;;:::i;:68::-;49661:86;-1:-1:-1;49765:11:0;;49762:88;;49797:37;49814:10;49826:7;49797:16;:37::i;:::-;49625:236;;49875:11;;49871:171;;49903:12;;:74;;-1:-1:-1;;;;;49903:12:0;49941:10;49962:4;49969:7;49903:29;:74::i;:::-;50006:11;;:24;;50022:7;50006:15;:24::i;:::-;49992:38;;49871:171;50086:20;;;;50070:11;;:47;;50112:4;;50070:37;;:15;:37::i;:47::-;50052:15;;;:65;50133:34;;;;;;;;50153:4;;50141:10;;50133:34;;;;;;;;;49361:814;;;;:::o;2299:244::-;1741:12;:10;:12::i;:::-;-1:-1:-1;;;;;1730:23:0;:7;:5;:7::i;:::-;-1:-1:-1;;;;;1730:23:0;;1722:68;;;;;-1:-1:-1;;;1722:68:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;1722:68:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;2388:22:0;::::1;2380:73;;;;-1:-1:-1::0;;;2380:73:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2490:6;::::0;;2469:38:::1;::::0;-1:-1:-1;;;;;2469:38:0;;::::1;::::0;2490:6;::::1;::::0;2469:38:::1;::::0;::::1;2518:6;:17:::0;;-1:-1:-1;;;;;;2518:17:0::1;-1:-1:-1::0;;;;;2518:17:0;;;::::1;::::0;;;::::1;::::0;;2299:244::o;6065:246::-;6123:7;6147:6;6143:47;;-1:-1:-1;6177:1:0;6170:8;;6143:47;6212:5;;;6216:1;6212;:5;:1;6236:5;;;;;:10;6228:56;;;;-1:-1:-1;;;6228:56:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6478:132;6536:7;6563:39;6567:1;6570;6563:39;;;;;;;;;;;;;;;;;:3;:39::i;5446:136::-;5504:7;5531:43;5535:1;5538;5531:43;;;;;;;;;;;;;;;;;:3;:43::i;53208:120::-;53284:5;;:36;;;-1:-1:-1;;;53284:36:0;;-1:-1:-1;;;;;53284:36:0;;;;;;;;;;;;;;;:5;;;;;:22;;:36;;;;;:5;;:36;;;;;;;:5;;:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;53208:120;;:::o;28177:177::-;28287:58;;;-1:-1:-1;;;;;28287:58:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;28287:58:0;-1:-1:-1;;;28287:58:0;;;28260:86;;28280:5;;28260:19;:86::i;:::-;28177:177;;;:::o;5117:179::-;5175:7;5207:5;;;5231:6;;;;5223:46;;;;;-1:-1:-1;;;5223:46:0;;;;;;;;;;;;;;;;;;;;;;;;;;;389:106;477:10;389:106;:::o;45882:453::-;45948:8;:15;45931:14;46022:1;46003:115;46031:6;46025:3;:12;46003:115;;;46070:36;46081:8;46090:3;46081:13;;;;;;;;;;;;;;;;;;:24;;;46070:6;:10;;:36;;;;:::i;:::-;46061:45;-1:-1:-1;46039:5:0;;46003:115;;;-1:-1:-1;46132:11:0;;46128:200;;46169:13;:6;46180:1;46169:10;:13::i;:::-;46160:22;;46215:55;46263:6;46215:43;46235:8;46244:1;46235:11;;;;;;;;;;;;;;;;;;:22;;;46215:15;;:19;;:43;;;;:::i;:55::-;46197:15;:73;;;;46310:6;46285:8;46294:1;46285:11;;;;;;;;;;;;;;;;;;:22;;:31;;;;45882:453;;:::o;28362:205::-;28490:68;;;-1:-1:-1;;;;;28490:68:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;28490:68:0;-1:-1:-1;;;28490:68:0;;;28463:96;;28483:5;;28463:19;:96::i;28728:348::-;28824:10;;;28823:62;;-1:-1:-1;28840:39:0;;;-1:-1:-1;;;28840:39:0;;28864:4;28840:39;;;;-1:-1:-1;;;;;28840:39:0;;;;;;;;;:15;;;;;;:39;;;;;;;;;;;;;;;:15;:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;28840:39:0;:44;28823:62;28815:152;;;;-1:-1:-1;;;28815:152:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;29005:62;;;-1:-1:-1;;;;;29005:62:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;29005:62:0;-1:-1:-1;;;29005:62:0;;;28978:90;;28998:5;;28978:19;:90::i;6797:189::-;6883:7;6918:12;6911:5;6903:28;;;;-1:-1:-1;;;6903:28:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6942:9;6958:1;6954;:5;;;;;;;6797:189;-1:-1:-1;;;;;6797:189:0:o;5752:190::-;5838:7;5874:12;5866:6;;;;5858:29;;;;-1:-1:-1;;;5858:29:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;5910:5:0;;;5752:190::o;30100:418::-;30181:23;30207:69;30235:4;30207:69;;;;;;;;;;;;;;;;;30215:5;-1:-1:-1;;;;;30207:27:0;;;:69;;;;;:::i;:::-;30291:17;;30181:95;;-1:-1:-1;30291:21:0;30287:224;;30433:10;30422:30;;;;;;;;;;;;;;;-1:-1:-1;30422:30:0;30414:85;;;;-1:-1:-1;;;30414:85:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24344:195;24447:12;24479:52;24501:6;24509:4;24515:1;24518:12;24479:21;:52::i;:::-;24472:59;24344:195;-1:-1:-1;;;;24344:195:0:o;25143:470::-;25270:12;25328:5;25303:21;:30;;25295:81;;;;-1:-1:-1;;;25295:81:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25395:18;25406:6;25395:10;:18::i;:::-;25387:60;;;;;-1:-1:-1;;;25387:60:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;25461:12;25475:23;25502:6;-1:-1:-1;;;;;25502:11:0;25522:5;25530:4;25502:33;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;25502:33:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25460:75;;;;25553:52;25571:7;25580:10;25592:12;25553:17;:52::i;:::-;25546:59;25143:470;-1:-1:-1;;;;;;;25143:470:0:o;23216:174::-;23335:20;23374:8;;;23216:174::o;27343:515::-;27458:12;27487:7;27483:368;;;-1:-1:-1;27518:10:0;27511:17;;27483:368;27565:17;;:21;27561:279;;27668:10;27662:17;27729:15;27716:10;27712:2;27708:19;27701:44;27616:148;27804:20;;-1:-1:-1;;;27804:20:0;;;;;;;;;;;;;;;;;27811:12;;27804:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
Swarm Source
ipfs://a01885922eac4aa7e0282d5eaf58b8f8faf6318096892a25b24c0b8320b9859a
Loading...
Loading
Loading...
Loading
Loading...
Loading
Net Worth in USD
$0.00
Net Worth in MON
Multichain Portfolio | 35 Chains
| Chain | Token | Portfolio % | Price | Amount | Value |
|---|
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.