Source Code
Overview
ETH Balance
0 ETH
Eth Value
$0.00Latest 25 from a total of 147 transactions
| Transaction Hash |
Method
|
Block
|
From
|
|
To
|
||||
|---|---|---|---|---|---|---|---|---|---|
| Deposit | 17143390 | 1031 days ago | IN | 0 ETH | 0.00148913 | ||||
| Withdraw | 17135200 | 1032 days ago | IN | 0 ETH | 0.00142181 | ||||
| Withdraw | 17135200 | 1032 days ago | IN | 0 ETH | 0.00183773 | ||||
| Deposit | 16997840 | 1051 days ago | IN | 0 ETH | 0.00165029 | ||||
| Deposit | 16990937 | 1052 days ago | IN | 0 ETH | 0.00140958 | ||||
| Deposit | 16983108 | 1053 days ago | IN | 0 ETH | 0.00204384 | ||||
| Deposit | 16888766 | 1067 days ago | IN | 0 ETH | 0.00050034 | ||||
| Deposit | 16881966 | 1068 days ago | IN | 0 ETH | 0.00054545 | ||||
| Deposit | 16861907 | 1070 days ago | IN | 0 ETH | 0.00070072 | ||||
| Deposit | 16842010 | 1073 days ago | IN | 0 ETH | 0.00077412 | ||||
| Deposit | 16842010 | 1073 days ago | IN | 0 ETH | 0.00099862 | ||||
| Deposit | 16842005 | 1073 days ago | IN | 0 ETH | 0.0010239 | ||||
| Deposit | 16827699 | 1075 days ago | IN | 0 ETH | 0.0014836 | ||||
| Deposit | 16814574 | 1077 days ago | IN | 0 ETH | 0.00091232 | ||||
| Deposit | 16812166 | 1077 days ago | IN | 0 ETH | 0.00085832 | ||||
| Deposit | 16811678 | 1077 days ago | IN | 0 ETH | 0.00073367 | ||||
| Deposit | 16764904 | 1084 days ago | IN | 0 ETH | 0.00112369 | ||||
| Deposit | 16738430 | 1088 days ago | IN | 0 ETH | 0.0011723 | ||||
| Deposit | 16722673 | 1090 days ago | IN | 0 ETH | 0.00115006 | ||||
| Deposit | 16722673 | 1090 days ago | IN | 0 ETH | 0.0013769 | ||||
| Deposit | 16719138 | 1090 days ago | IN | 0 ETH | 0.00068751 | ||||
| Deposit | 16718494 | 1091 days ago | IN | 0 ETH | 0.00063406 | ||||
| Deposit | 16718493 | 1091 days ago | IN | 0 ETH | 0.00084119 | ||||
| Deposit | 16706804 | 1092 days ago | IN | 0 ETH | 0.00100623 | ||||
| Deposit | 16700023 | 1093 days ago | IN | 0 ETH | 0.00097499 |
View more zero value Internal Transactions in Advanced View mode
Advanced mode:
Loading...
Loading
Loading...
Loading
Cross-Chain Transactions
Loading...
Loading
Contract Name:
ACRDTMasterChef
Compiler Version
v0.8.15+commit.e14f2714
Contract Source Code (Solidity)
/**
*Submitted for verification at Etherscan.io on 2022-07-18
*/
// File: @openzeppelin/contracts/utils/Context.sol
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts v4.4.1 (utils/Context.sol)
pragma solidity ^0.8.0;
/**
* @dev Provides information about the current execution context, including the
* sender of the transaction and its data. While these are generally available
* via msg.sender and msg.data, they should not be accessed in such a direct
* manner, since when dealing with meta-transactions the account sending and
* paying for execution may not be the actual sender (as far as an application
* is concerned).
*
* This contract is only required for intermediate, library-like contracts.
*/
abstract contract Context {
function _msgSender() internal view virtual returns (address) {
return msg.sender;
}
function _msgData() internal view virtual returns (bytes calldata) {
return msg.data;
}
}
// File: @openzeppelin/contracts/access/Ownable.sol
// OpenZeppelin Contracts v4.4.1 (access/Ownable.sol)
pragma solidity ^0.8.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.
*
* By default, the owner account will be the one that deploys the contract. This
* can later be changed with {transferOwnership}.
*
* This module is used through inheritance. It will make available the modifier
* `onlyOwner`, which can be applied to your functions to restrict their use to
* the owner.
*/
abstract contract Ownable is Context {
address private _owner;
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
/**
* @dev Initializes the contract setting the deployer as the initial owner.
*/
constructor() {
_transferOwnership(_msgSender());
}
/**
* @dev 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.
*
* NOTE: Renouncing ownership will leave the contract without an owner,
* thereby removing any functionality that is only available to the owner.
*/
function renounceOwnership() public virtual onlyOwner {
_transferOwnership(address(0));
}
/**
* @dev Transfers ownership of the contract to a new account (`newOwner`).
* Can only be called by the current owner.
*/
function transferOwnership(address newOwner) public virtual onlyOwner {
require(newOwner != address(0), "Ownable: new owner is the zero address");
_transferOwnership(newOwner);
}
/**
* @dev Transfers ownership of the contract to a new account (`newOwner`).
* Internal function without access restriction.
*/
function _transferOwnership(address newOwner) internal virtual {
address oldOwner = _owner;
_owner = newOwner;
emit OwnershipTransferred(oldOwner, newOwner);
}
}
// File: @openzeppelin/contracts/token/ERC20/IERC20.sol
// OpenZeppelin Contracts (last updated v4.6.0) (token/ERC20/IERC20.sol)
pragma solidity ^0.8.0;
/**
* @dev Interface of the ERC20 standard as defined in the EIP.
*/
interface IERC20 {
/**
* @dev Emitted when `value` tokens are moved from one account (`from`) to
* another (`to`).
*
* Note that `value` may be zero.
*/
event Transfer(address indexed from, address indexed to, uint256 value);
/**
* @dev Emitted when the allowance of a `spender` for an `owner` is set by
* a call to {approve}. `value` is the new allowance.
*/
event Approval(address indexed owner, address indexed spender, uint256 value);
/**
* @dev Returns the amount of tokens in existence.
*/
function totalSupply() external view returns (uint256);
/**
* @dev Returns the amount of tokens owned by `account`.
*/
function balanceOf(address account) external view returns (uint256);
/**
* @dev Moves `amount` tokens from the caller's account to `to`.
*
* Returns a boolean value indicating whether the operation succeeded.
*
* Emits a {Transfer} event.
*/
function transfer(address to, uint256 amount) external returns (bool);
/**
* @dev Returns the remaining number of tokens that `spender` will be
* allowed to spend on behalf of `owner` through {transferFrom}. This is
* zero by default.
*
* This value changes when {approve} or {transferFrom} are called.
*/
function allowance(address owner, address spender) external view returns (uint256);
/**
* @dev Sets `amount` as the allowance of `spender` over the caller's tokens.
*
* Returns a boolean value indicating whether the operation succeeded.
*
* IMPORTANT: Beware that changing an allowance with this method brings the risk
* that someone may use both the old and the new allowance by unfortunate
* transaction ordering. One possible solution to mitigate this race
* condition is to first reduce the spender's allowance to 0 and set the
* desired value afterwards:
* https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729
*
* Emits an {Approval} event.
*/
function approve(address spender, uint256 amount) external returns (bool);
/**
* @dev Moves `amount` tokens from `from` to `to` using the
* allowance mechanism. `amount` is then deducted from the caller's
* allowance.
*
* Returns a boolean value indicating whether the operation succeeded.
*
* Emits a {Transfer} event.
*/
function transferFrom(
address from,
address to,
uint256 amount
) external returns (bool);
}
// File: @openzeppelin/contracts/utils/Address.sol
// OpenZeppelin Contracts (last updated v4.5.0) (utils/Address.sol)
pragma solidity ^0.8.1;
/**
* @dev Collection of functions related to the address type
*/
library Address {
/**
* @dev Returns true if `account` is a contract.
*
* [IMPORTANT]
* ====
* It is unsafe to assume that an address for which this function returns
* false is an externally-owned account (EOA) and not a contract.
*
* Among others, `isContract` will return false for the following
* types of addresses:
*
* - an externally-owned account
* - a contract in construction
* - an address where a contract will be created
* - an address where a contract lived, but was destroyed
* ====
*
* [IMPORTANT]
* ====
* You shouldn't rely on `isContract` to protect against flash loan attacks!
*
* Preventing calls from contracts is highly discouraged. It breaks composability, breaks support for smart wallets
* like Gnosis Safe, and does not provide security since it can be circumvented by calling from a contract
* constructor.
* ====
*/
function isContract(address account) internal view returns (bool) {
// This method relies on extcodesize/address.code.length, which returns 0
// for contracts in construction, since the code is only stored at the end
// of the constructor execution.
return account.code.length > 0;
}
/**
* @dev Replacement for Solidity's `transfer`: sends `amount` wei to
* `recipient`, forwarding all available gas and reverting on errors.
*
* https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost
* of certain opcodes, possibly making contracts go over the 2300 gas limit
* imposed by `transfer`, making them unable to receive funds via
* `transfer`. {sendValue} removes this limitation.
*
* https://diligence.consensys.net/posts/2019/09/stop-using-soliditys-transfer-now/[Learn more].
*
* IMPORTANT: because control is transferred to `recipient`, care must be
* taken to not create reentrancy vulnerabilities. Consider using
* {ReentrancyGuard} or the
* https://solidity.readthedocs.io/en/v0.5.11/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].
*/
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`. A
* plain `call` is an unsafe replacement for a function call: use this
* function instead.
*
* If `target` reverts with a revert reason, it is bubbled up by this
* function (like regular Solidity function calls).
*
* Returns the raw returned data. To convert to the expected return value,
* use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].
*
* Requirements:
*
* - `target` must be a contract.
* - calling `target` with `data` must not revert.
*
* _Available since v3.1._
*/
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.
*
* _Available since v3.1._
*/
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`.
*
* Requirements:
*
* - the calling contract must have an ETH balance of at least `value`.
* - the called Solidity function must be `payable`.
*
* _Available since v3.1._
*/
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.
*
* _Available since v3.1._
*/
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.
*
* _Available since v3.3._
*/
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.
*
* _Available since v3.3._
*/
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.
*
* _Available since v3.4._
*/
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.
*
* _Available since v3.4._
*/
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);
}
/**
* @dev Tool to verifies that a low level call was successful, and revert if it wasn't, either by bubbling the
* revert reason using the provided one.
*
* _Available since v4.3._
*/
function verifyCallResult(
bool success,
bytes memory returndata,
string memory errorMessage
) internal pure returns (bytes memory) {
if (success) {
return returndata;
} else {
// Look for revert reason and bubble it up if present
if (returndata.length > 0) {
// The easiest way to bubble the revert reason is using memory via assembly
assembly {
let returndata_size := mload(returndata)
revert(add(32, returndata), returndata_size)
}
} else {
revert(errorMessage);
}
}
}
}
// File: @openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol
// OpenZeppelin Contracts v4.4.1 (token/ERC20/utils/SafeERC20.sol)
pragma solidity ^0.8.0;
/**
* @title SafeERC20
* @dev Wrappers around ERC20 operations that throw on failure (when the token
* contract returns false). Tokens that return no value (and instead revert or
* throw on failure) are also supported, non-reverting calls are assumed to be
* successful.
* To use this library you can add a `using SafeERC20 for IERC20;` statement to your contract,
* which allows you to call the safe operations as `token.safeTransfer(...)`, etc.
*/
library SafeERC20 {
using Address for address;
function safeTransfer(
IERC20 token,
address to,
uint256 value
) internal {
_callOptionalReturn(token, abi.encodeWithSelector(token.transfer.selector, to, value));
}
function safeTransferFrom(
IERC20 token,
address from,
address to,
uint256 value
) internal {
_callOptionalReturn(token, abi.encodeWithSelector(token.transferFrom.selector, from, to, value));
}
/**
* @dev Deprecated. This function has issues similar to the ones found in
* {IERC20-approve}, and its usage is discouraged.
*
* Whenever possible, use {safeIncreaseAllowance} and
* {safeDecreaseAllowance} instead.
*/
function safeApprove(
IERC20 token,
address spender,
uint256 value
) internal {
// safeApprove should only be called when setting an initial allowance,
// or when resetting it to zero. To increase and decrease it, use
// 'safeIncreaseAllowance' and 'safeDecreaseAllowance'
require(
(value == 0) || (token.allowance(address(this), spender) == 0),
"SafeERC20: approve from non-zero to non-zero allowance"
);
_callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, value));
}
function safeIncreaseAllowance(
IERC20 token,
address spender,
uint256 value
) internal {
uint256 newAllowance = token.allowance(address(this), spender) + value;
_callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, newAllowance));
}
function safeDecreaseAllowance(
IERC20 token,
address spender,
uint256 value
) internal {
unchecked {
uint256 oldAllowance = token.allowance(address(this), spender);
require(oldAllowance >= value, "SafeERC20: decreased allowance below zero");
uint256 newAllowance = oldAllowance - value;
_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(IERC20 token, bytes memory data) private {
// We need to perform a low level call here, to bypass Solidity's return data size checking mechanism, since
// we're implementing it ourselves. We use {Address.functionCall} to perform this call, which verifies that
// the target address contains contract code and also asserts for success in the low-level call.
bytes memory returndata = address(token).functionCall(data, "SafeERC20: low-level call failed");
if (returndata.length > 0) {
// Return data is optional
require(abi.decode(returndata, (bool)), "SafeERC20: ERC20 operation did not succeed");
}
}
}
// File: @openzeppelin/contracts/utils/math/SafeMath.sol
// OpenZeppelin Contracts (last updated v4.6.0) (utils/math/SafeMath.sol)
pragma solidity ^0.8.0;
// CAUTION
// This version of SafeMath should only be used with Solidity 0.8 or later,
// because it relies on the compiler's built in overflow checks.
/**
* @dev Wrappers over Solidity's arithmetic operations.
*
* NOTE: `SafeMath` is generally not needed starting with Solidity 0.8, since the compiler
* now has built in overflow checking.
*/
library SafeMath {
/**
* @dev Returns the addition of two unsigned integers, with an overflow flag.
*
* _Available since v3.4._
*/
function tryAdd(uint256 a, uint256 b) internal pure returns (bool, uint256) {
unchecked {
uint256 c = a + b;
if (c < a) return (false, 0);
return (true, c);
}
}
/**
* @dev Returns the subtraction of two unsigned integers, with an overflow flag.
*
* _Available since v3.4._
*/
function trySub(uint256 a, uint256 b) internal pure returns (bool, uint256) {
unchecked {
if (b > a) return (false, 0);
return (true, a - b);
}
}
/**
* @dev Returns the multiplication of two unsigned integers, with an overflow flag.
*
* _Available since v3.4._
*/
function tryMul(uint256 a, uint256 b) internal pure returns (bool, uint256) {
unchecked {
// Gas optimization: this is cheaper than requiring 'a' not being zero, but the
// benefit is lost if 'b' is also tested.
// See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522
if (a == 0) return (true, 0);
uint256 c = a * b;
if (c / a != b) return (false, 0);
return (true, c);
}
}
/**
* @dev Returns the division of two unsigned integers, with a division by zero flag.
*
* _Available since v3.4._
*/
function tryDiv(uint256 a, uint256 b) internal pure returns (bool, uint256) {
unchecked {
if (b == 0) return (false, 0);
return (true, a / b);
}
}
/**
* @dev Returns the remainder of dividing two unsigned integers, with a division by zero flag.
*
* _Available since v3.4._
*/
function tryMod(uint256 a, uint256 b) internal pure returns (bool, uint256) {
unchecked {
if (b == 0) return (false, 0);
return (true, a % b);
}
}
/**
* @dev Returns the addition of two unsigned integers, reverting on
* overflow.
*
* Counterpart to Solidity's `+` operator.
*
* Requirements:
*
* - Addition cannot overflow.
*/
function add(uint256 a, uint256 b) internal pure returns (uint256) {
return a + b;
}
/**
* @dev Returns the subtraction of two unsigned integers, reverting on
* overflow (when the result is negative).
*
* Counterpart to Solidity's `-` operator.
*
* Requirements:
*
* - Subtraction cannot overflow.
*/
function sub(uint256 a, uint256 b) internal pure returns (uint256) {
return a - b;
}
/**
* @dev Returns the multiplication of two unsigned integers, reverting on
* overflow.
*
* Counterpart to Solidity's `*` operator.
*
* Requirements:
*
* - Multiplication cannot overflow.
*/
function mul(uint256 a, uint256 b) internal pure returns (uint256) {
return a * b;
}
/**
* @dev Returns the integer division of two unsigned integers, reverting on
* division by zero. The result is rounded towards zero.
*
* Counterpart to Solidity's `/` operator.
*
* Requirements:
*
* - The divisor cannot be zero.
*/
function div(uint256 a, uint256 b) internal pure returns (uint256) {
return a / b;
}
/**
* @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),
* reverting when dividing by zero.
*
* Counterpart to Solidity's `%` operator. This function uses a `revert`
* opcode (which leaves remaining gas untouched) while Solidity uses an
* invalid opcode to revert (consuming all remaining gas).
*
* Requirements:
*
* - The divisor cannot be zero.
*/
function mod(uint256 a, uint256 b) internal pure returns (uint256) {
return a % b;
}
/**
* @dev Returns the subtraction of two unsigned integers, reverting with custom message on
* overflow (when the result is negative).
*
* CAUTION: This function is deprecated because it requires allocating memory for the error
* message unnecessarily. For custom revert reasons use {trySub}.
*
* Counterpart to Solidity's `-` operator.
*
* Requirements:
*
* - Subtraction cannot overflow.
*/
function sub(
uint256 a,
uint256 b,
string memory errorMessage
) internal pure returns (uint256) {
unchecked {
require(b <= a, errorMessage);
return a - b;
}
}
/**
* @dev Returns the integer division of two unsigned integers, reverting with custom message on
* division by zero. The result is rounded towards zero.
*
* Counterpart to Solidity's `/` operator. Note: this function uses a
* `revert` opcode (which leaves remaining gas untouched) while Solidity
* uses an invalid opcode to revert (consuming all remaining gas).
*
* Requirements:
*
* - The divisor cannot be zero.
*/
function div(
uint256 a,
uint256 b,
string memory errorMessage
) internal pure returns (uint256) {
unchecked {
require(b > 0, errorMessage);
return a / b;
}
}
/**
* @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),
* reverting with custom message when dividing by zero.
*
* CAUTION: This function is deprecated because it requires allocating memory for the error
* message unnecessarily. For custom revert reasons use {tryMod}.
*
* Counterpart to Solidity's `%` operator. This function uses a `revert`
* opcode (which leaves remaining gas untouched) while Solidity uses an
* invalid opcode to revert (consuming all remaining gas).
*
* Requirements:
*
* - The divisor cannot be zero.
*/
function mod(
uint256 a,
uint256 b,
string memory errorMessage
) internal pure returns (uint256) {
unchecked {
require(b > 0, errorMessage);
return a % b;
}
}
}
// File: contracts/MasterChef.sol
pragma solidity ^0.8.15;
contract ACRDTStakingReserve is Ownable {
using SafeERC20 for IERC20;
using SafeMath for uint256;
mapping(address => bool) public operators;
IERC20 public acrdtToken;
constructor(IERC20 _acrdtToken){
acrdtToken = _acrdtToken;
}
function addOrRemoveOperators(address addr,bool isAdd) public onlyOwner {
operators[addr] = isAdd;
}
function getACRDTBalance() public view returns(uint256){
uint256 balance = acrdtToken.balanceOf(address(this));
return balance;
}
function withdrawACRDT(address to,uint256 amount) public {
require(operators[msg.sender] == true,"not allowed");
uint256 balance = getACRDTBalance();
if(balance < amount){
acrdtToken.transfer(to, balance);
}else{
acrdtToken.transfer(to, amount);
}
}
}
contract ACRDTMasterChef is Ownable {
using SafeMath for uint256;
using SafeERC20 for IERC20;
uint256 public totalRewardPaid;
// Info of each user.
struct UserInfo {
uint256 amount;
uint256 rewardDebt;
}
// Info of each pool.
struct PoolInfo {
IERC20 lpToken; // Address of LP token contract.
uint256 allocPoint; // How many allocation points assigned to this pool. ACRDTs to distribute per block.
uint256 lastRewardBlock; // Last block number that ACRDTs distribution occurs.
uint256 accACRDTPerShare; // Accumulated ACRDTs per share, times 1e12. See below.
uint16 depositFeeBP; // Deposit fee in basis points
}
// The ACRDT TOKEN!
IERC20 public acrdt;
// ACRDT tokens created per block.
uint256 public acrdtPerBlock;
// Bonus muliplier for early acrdt makers.
uint256 public constant BONUS_MULTIPLIER = 1;
// Deposit Fee address
address public feeAddress;
uint256 private MAX_FEE = 500; //5%
// 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 ACRDT mining starts.
uint256 public startBlock = 0;
ACRDTStakingReserve public acrdtStakingReserve;
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(
IERC20 _acrdt,
address _feeAddress,
uint256 _acrdtPerBlock,
ACRDTStakingReserve _ACRDTStakingReserve
) {
acrdt = _acrdt;
feeAddress = _feeAddress;
acrdtPerBlock = _acrdtPerBlock;
acrdtStakingReserve = _ACRDTStakingReserve;
startBlock = block.number;
}
function poolLength() external view returns (uint256) {
return poolInfo.length;
}
function add(
uint256 _allocPoint,
IERC20 _lpToken,
uint16 _depositFeeBP,
bool _withUpdate
) public onlyOwner {
require(_depositFeeBP <= MAX_FEE, 'invalid fee');
if (_withUpdate) {
massUpdatePools();
}
uint256 lastRewardBlock = block.number > startBlock ? block.number : startBlock;
totalAllocPoint = totalAllocPoint.add(_allocPoint);
poolInfo.push(
PoolInfo({
lpToken: _lpToken,
allocPoint: _allocPoint,
lastRewardBlock: lastRewardBlock,
accACRDTPerShare: 0,
depositFeeBP: _depositFeeBP
})
);
}
// Update the given pool's ACRDT allocation point and deposit fee. Can only be called by the owner.
function set(
uint256 _pid,
uint256 _allocPoint,
uint16 _depositFeeBP,
bool _withUpdate
) public onlyOwner {
require(_depositFeeBP <= MAX_FEE, 'invalid fee');
if (_withUpdate) {
massUpdatePools();
}
totalAllocPoint = totalAllocPoint.sub(poolInfo[_pid].allocPoint).add(_allocPoint);
poolInfo[_pid].allocPoint = _allocPoint;
poolInfo[_pid].depositFeeBP = _depositFeeBP;
}
// Return reward multiplier over the given _from to _to block.
function getMultiplier(uint256 _from, uint256 _to) public pure returns (uint256) {
return _to.sub(_from).mul(BONUS_MULTIPLIER);
}
// View function to see pending ACRDTs on frontend.
function pendingACRDT(uint256 _pid, address _user) external view returns (uint256) {
PoolInfo storage pool = poolInfo[_pid];
UserInfo storage user = userInfo[_pid][_user];
uint256 accACRDTPerShare = pool.accACRDTPerShare;
uint256 lpSupply = pool.lpToken.balanceOf(address(this));
if (block.number > pool.lastRewardBlock && lpSupply != 0) {
uint256 multiplier = getMultiplier(pool.lastRewardBlock, block.number);
uint256 acrdtReward = multiplier.mul(acrdtPerBlock).mul(pool.allocPoint).div(totalAllocPoint);
accACRDTPerShare = accACRDTPerShare.add(acrdtReward.mul(1e12).div(lpSupply));
}
return user.amount.mul(accACRDTPerShare).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.allocPoint == 0) {
pool.lastRewardBlock = block.number;
return;
}
uint256 multiplier = getMultiplier(pool.lastRewardBlock, block.number);
uint256 acrdtReward = multiplier.mul(acrdtPerBlock).mul(pool.allocPoint).div(totalAllocPoint);
refillACRDT(address(this), acrdtReward);
pool.accACRDTPerShare = pool.accACRDTPerShare.add(acrdtReward.mul(1e12).div(lpSupply));
pool.lastRewardBlock = block.number;
}
// Deposit LP tokens to MasterChef for ACRDT allocation.
function deposit(uint256 _pid, uint256 _amount) public {
PoolInfo storage pool = poolInfo[_pid];
UserInfo storage user = userInfo[_pid][msg.sender];
updatePool(_pid);
if (user.amount > 0) {
uint256 pending = user.amount.mul(pool.accACRDTPerShare).div(1e12).sub(user.rewardDebt);
if (pending > 0) {
safeACRDTTransfer(msg.sender, pending);
}
}
if (_amount > 0) {
uint256 preBal = pool.lpToken.balanceOf(address(this)); // safe deflationary tokens
pool.lpToken.safeTransferFrom(address(msg.sender), address(this), _amount);
uint256 afterBal = pool.lpToken.balanceOf(address(this)); // safe deflationary tokens
_amount = afterBal.sub(preBal);
if (pool.depositFeeBP > 0) {
uint256 depositFee = _amount.mul(pool.depositFeeBP).div(10000);
pool.lpToken.safeTransfer(feeAddress, depositFee);
user.amount = user.amount.add(_amount).sub(depositFee);
} else {
user.amount = user.amount.add(_amount);
}
}
user.rewardDebt = user.amount.mul(pool.accACRDTPerShare).div(1e12);
emit Deposit(msg.sender, _pid, _amount);
}
// Withdraw LP tokens from MasterChef.
function withdraw(uint256 _pid, uint256 _amount) public {
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.accACRDTPerShare).div(1e12).sub(user.rewardDebt);
if (pending > 0) {
safeACRDTTransfer(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.accACRDTPerShare).div(1e12);
emit Withdraw(msg.sender, _pid, _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];
uint256 amount = user.amount;
user.amount = 0;
user.rewardDebt = 0;
pool.lpToken.safeTransfer(address(msg.sender), amount);
emit EmergencyWithdraw(msg.sender, _pid, amount);
}
// Safe acrdt transfer function, just in case if rounding error causes pool to not have enough ACRDTs.
function safeACRDTTransfer(address _to, uint256 _amount) internal {
uint256 acrdtBal = acrdt.balanceOf(address(this));
if (_amount > acrdtBal) {
acrdt.transfer(_to, acrdtBal);
} else {
acrdt.transfer(_to, _amount);
}
}
function refillACRDT(address _to, uint256 _amount) internal {
acrdtStakingReserve.withdrawACRDT(_to, _amount);
totalRewardPaid = totalRewardPaid.add(_amount);
}
function setFeeAddress(address _feeAddress) public {
require(msg.sender == feeAddress, 'setFeeAddress: FORBIDDEN');
feeAddress = _feeAddress;
}
//Pancake has to add hidden dummy pools inorder to alter the emission, here we make it simple and transparent to all.
function updateEmissionRate(uint256 _acrdtPerBlock) public onlyOwner {
massUpdatePools();
acrdtPerBlock = _acrdtPerBlock;
}
}Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"inputs":[{"internalType":"contract IERC20","name":"_acrdt","type":"address"},{"internalType":"address","name":"_feeAddress","type":"address"},{"internalType":"uint256","name":"_acrdtPerBlock","type":"uint256"},{"internalType":"contract ACRDTStakingReserve","name":"_ACRDTStakingReserve","type":"address"}],"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":[],"name":"acrdt","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"acrdtPerBlock","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"acrdtStakingReserve","outputs":[{"internalType":"contract ACRDTStakingReserve","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_allocPoint","type":"uint256"},{"internalType":"contract IERC20","name":"_lpToken","type":"address"},{"internalType":"uint16","name":"_depositFeeBP","type":"uint16"},{"internalType":"bool","name":"_withUpdate","type":"bool"}],"name":"add","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_pid","type":"uint256"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"deposit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_pid","type":"uint256"}],"name":"emergencyWithdraw","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"feeAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_from","type":"uint256"},{"internalType":"uint256","name":"_to","type":"uint256"}],"name":"getMultiplier","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"massUpdatePools","outputs":[],"stateMutability":"nonpayable","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":"pendingACRDT","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"poolInfo","outputs":[{"internalType":"contract IERC20","name":"lpToken","type":"address"},{"internalType":"uint256","name":"allocPoint","type":"uint256"},{"internalType":"uint256","name":"lastRewardBlock","type":"uint256"},{"internalType":"uint256","name":"accACRDTPerShare","type":"uint256"},{"internalType":"uint16","name":"depositFeeBP","type":"uint16"}],"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":"uint16","name":"_depositFeeBP","type":"uint16"},{"internalType":"bool","name":"_withUpdate","type":"bool"}],"name":"set","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_feeAddress","type":"address"}],"name":"setFeeAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"startBlock","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalAllocPoint","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalRewardPaid","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":"_acrdtPerBlock","type":"uint256"}],"name":"updateEmissionRate","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
60806040526101f4600555600060085560006009553480156200002157600080fd5b506040516200194a3803806200194a833981016040819052620000449162000105565b6200004f336200009c565b600280546001600160a01b039586166001600160a01b0319918216179091556004805494861694821694909417909355600391909155600a80549190931691161790554360095562000161565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b03811681146200010257600080fd5b50565b600080600080608085870312156200011c57600080fd5b84516200012981620000ec565b60208601519094506200013c81620000ec565b6040860151606087015191945092506200015681620000ec565b939692955090935050565b6117d980620001716000396000f3fe608060405234801561001057600080fd5b50600436106101735760003560e01c80635a632c28116100de5780638da5cb5b11610097578063c858671f11610071578063c858671f14610348578063d96384221461035b578063e2bbb1581461036e578063f2fde38b1461038157600080fd5b80638da5cb5b146102dd5780638dbb1e3a146102ee57806393f1a40b1461030157600080fd5b80635a632c2814610296578063630b5ba11461029f578063715018a6146102a757806384e82a33146102af5780638705fcd4146102c25780638aa28550146102d557600080fd5b80633aafd2a3116101305780633aafd2a3146102385780634127535814610241578063441a3e701461025457806348cd4cb11461026757806351eb05a6146102705780635312ea8e1461028357600080fd5b806307044b5a14610178578063081e3eda1461019e5780630ba84cd2146101a65780631526fe27146101bb57806317caf6f114610204578063332e629a1461020d575b600080fd5b61018b6101863660046114dd565b610394565b6040519081526020015b60405180910390f35b60065461018b565b6101b96101b436600461150d565b610502565b005b6101ce6101c936600461150d565b610542565b604080516001600160a01b039096168652602086019490945292840191909152606083015261ffff16608082015260a001610195565b61018b60085481565b600254610220906001600160a01b031681565b6040516001600160a01b039091168152602001610195565b61018b60035481565b600454610220906001600160a01b031681565b6101b9610262366004611526565b610591565b61018b60095481565b6101b961027e36600461150d565b6106e5565b6101b961029136600461150d565b61081f565b61018b60015481565b6101b96108c2565b6101b96108ed565b6101b96102bd36600461156d565b610923565b6101b96102d03660046115be565b610af8565b61018b600181565b6000546001600160a01b0316610220565b61018b6102fc366004611526565b610b74565b61033361030f3660046114dd565b60076020908152600092835260408084209091529082529020805460019091015482565b60408051928352602083019190915201610195565b600a54610220906001600160a01b031681565b6101b96103693660046115db565b610b8c565b6101b961037c366004611526565b610cbf565b6101b961038f3660046115be565b610f21565b600080600684815481106103aa576103aa611608565b600091825260208083208784526007825260408085206001600160a01b03898116875293528085206005949094029091016003810154815492516370a0823160e01b815230600482015291965093949291909116906370a0823190602401602060405180830381865afa158015610425573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610449919061161e565b905083600201544311801561045d57508015155b156104c9576000610472856002015443610b74565b905060006104a560085461049f886001015461049960035487610fbc90919063ffffffff16565b90610fbc565b90610fc8565b90506104c46104bd8461049f8464e8d4a51000610fbc565b8590610fd4565b935050505b6104f783600101546104f164e8d4a5100061049f868860000154610fbc90919063ffffffff16565b90610fe0565b979650505050505050565b6000546001600160a01b031633146105355760405162461bcd60e51b815260040161052c90611637565b60405180910390fd5b61053d6108c2565b600355565b6006818154811061055257600080fd5b6000918252602090912060059091020180546001820154600283015460038401546004909401546001600160a01b0390931694509092909161ffff1685565b6000600683815481106105a6576105a6611608565b6000918252602080832086845260078252604080852033865290925292208054600590920290920192508311156106145760405162461bcd60e51b81526020600482015260126024820152711dda5d1a191c985dce881b9bdd0819dbdbd960721b604482015260640161052c565b61061d846106e5565b600061064b82600101546104f164e8d4a5100061049f87600301548760000154610fbc90919063ffffffff16565b9050801561065d5761065d3382610fec565b831561068757815461066f9085610fe0565b82558254610687906001600160a01b0316338661111f565b600383015482546106a29164e8d4a510009161049f91610fbc565b6001830155604051848152859033907ff279e6a1f5e320cca91135676d9cb6e44ca8a08c0b88342bcdb1144f6511b5689060200160405180910390a35050505050565b6000600682815481106106fa576106fa611608565b9060005260206000209060050201905080600201544311610719575050565b80546040516370a0823160e01b81523060048201526000916001600160a01b0316906370a0823190602401602060405180830381865afa158015610761573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610785919061161e565b905080158061079657506001820154155b156107a657504360029091015550565b60006107b6836002015443610b74565b905060006107dd60085461049f866001015461049960035487610fbc90919063ffffffff16565b90506107e93082611182565b61080a6107ff8461049f8464e8d4a51000610fbc565b600386015490610fd4565b60038501555050436002909201919091555050565b60006006828154811061083457610834611608565b600091825260208083208584526007825260408085203380875293528420805485825560018201959095556005909302018054909450919291610884916001600160a01b0391909116908361111f565b604051818152849033907fbb757047c2b5f3974fe26b7c10f732e7bce710b0952a71082702781e62ae0595906020015b60405180910390a350505050565b60065460005b818110156108e9576108d9816106e5565b6108e281611682565b90506108c8565b5050565b6000546001600160a01b031633146109175760405162461bcd60e51b815260040161052c90611637565b61092160006111fd565b565b6000546001600160a01b0316331461094d5760405162461bcd60e51b815260040161052c90611637565b6005548261ffff1611156109915760405162461bcd60e51b815260206004820152600b60248201526a696e76616c69642066656560a81b604482015260640161052c565b801561099f5761099f6108c2565b600060095443116109b2576009546109b4565b435b6008549091506109c49086610fd4565b6008556040805160a0810182526001600160a01b0395861681526020810196875290810191825260006060820181815261ffff9586166080840190815260068054600181018255935292517ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d3f600590930292830180546001600160a01b031916919098161790965595517ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d4087015590517ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d4186015592517ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d428501555090517ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d43909201805461ffff191692909116919091179055565b6004546001600160a01b03163314610b525760405162461bcd60e51b815260206004820152601860248201527f736574466565416464726573733a20464f5242494444454e0000000000000000604482015260640161052c565b600480546001600160a01b0319166001600160a01b0392909216919091179055565b6000610b8560016104998486610fe0565b9392505050565b6000546001600160a01b03163314610bb65760405162461bcd60e51b815260040161052c90611637565b6005548261ffff161115610bfa5760405162461bcd60e51b815260206004820152600b60248201526a696e76616c69642066656560a81b604482015260640161052c565b8015610c0857610c086108c2565b610c4b83610c4560068781548110610c2257610c22611608565b906000526020600020906005020160010154600854610fe090919063ffffffff16565b90610fd4565b6008819055508260068581548110610c6557610c65611608565b9060005260206000209060050201600101819055508160068581548110610c8e57610c8e611608565b906000526020600020906005020160040160006101000a81548161ffff021916908361ffff16021790555050505050565b600060068381548110610cd457610cd4611608565b60009182526020808320868452600782526040808520338652909252922060059091029091019150610d05846106e5565b805415610d4e576000610d3a82600101546104f164e8d4a5100061049f87600301548760000154610fbc90919063ffffffff16565b90508015610d4c57610d4c3382610fec565b505b8215610ecd5781546040516370a0823160e01b81523060048201526000916001600160a01b0316906370a0823190602401602060405180830381865afa158015610d9c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610dc0919061161e565b8354909150610dda906001600160a01b031633308761124d565b82546040516370a0823160e01b81523060048201526000916001600160a01b0316906370a0823190602401602060405180830381865afa158015610e22573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e46919061161e565b9050610e528183610fe0565b600485015490955061ffff1615610ebb576004840154600090610e82906127109061049f90899061ffff16610fbc565b6004548654919250610ea1916001600160a01b0390811691168361111f565b8354610eb39082906104f19089610fd4565b845550610eca565b8254610ec79086610fd4565b83555b50505b60038201548154610ee89164e8d4a510009161049f91610fbc565b6001820155604051838152849033907f90890809c654f11d6e72a28fa60149770a0d11ec6c92319d6ceb2bb0a4ea1a15906020016108b4565b6000546001600160a01b03163314610f4b5760405162461bcd60e51b815260040161052c90611637565b6001600160a01b038116610fb05760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161052c565b610fb9816111fd565b50565b6000610b85828461169b565b6000610b8582846116ba565b6000610b8582846116dc565b6000610b8582846116f4565b6002546040516370a0823160e01b81523060048201526000916001600160a01b0316906370a0823190602401602060405180830381865afa158015611035573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611059919061161e565b9050808211156110e15760025460405163a9059cbb60e01b81526001600160a01b038581166004830152602482018490529091169063a9059cbb906044015b6020604051808303816000875af11580156110b7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110db919061170b565b50505050565b60025460405163a9059cbb60e01b81526001600160a01b038581166004830152602482018590529091169063a9059cbb90604401611098565b505050565b6040516001600160a01b03831660248201526044810182905261111a90849063a9059cbb60e01b906064015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152611285565b600a54604051631fb5b25760e31b81526001600160a01b038481166004830152602482018490529091169063fdad92b890604401600060405180830381600087803b1580156111d057600080fd5b505af11580156111e4573d6000803e3d6000fd5b50506001546111f69250905082610fd4565b6001555050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6040516001600160a01b03808516602483015283166044820152606481018290526110db9085906323b872dd60e01b9060840161114b565b60006112da826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166113579092919063ffffffff16565b80519091501561111a57808060200190518101906112f8919061170b565b61111a5760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b606482015260840161052c565b6060611366848460008561136e565b949350505050565b6060824710156113cf5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b606482015260840161052c565b6001600160a01b0385163b6114265760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161052c565b600080866001600160a01b031685876040516114429190611754565b60006040518083038185875af1925050503d806000811461147f576040519150601f19603f3d011682016040523d82523d6000602084013e611484565b606091505b50915091506104f78282866060831561149e575081610b85565b8251156114ae5782518084602001fd5b8160405162461bcd60e51b815260040161052c9190611770565b6001600160a01b0381168114610fb957600080fd5b600080604083850312156114f057600080fd5b823591506020830135611502816114c8565b809150509250929050565b60006020828403121561151f57600080fd5b5035919050565b6000806040838503121561153957600080fd5b50508035926020909101359150565b803561ffff8116811461155a57600080fd5b919050565b8015158114610fb957600080fd5b6000806000806080858703121561158357600080fd5b843593506020850135611595816114c8565b92506115a360408601611548565b915060608501356115b38161155f565b939692955090935050565b6000602082840312156115d057600080fd5b8135610b85816114c8565b600080600080608085870312156115f157600080fd5b84359350602085013592506115a360408601611548565b634e487b7160e01b600052603260045260246000fd5b60006020828403121561163057600080fd5b5051919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052601160045260246000fd5b6000600182016116945761169461166c565b5060010190565b60008160001904831182151516156116b5576116b561166c565b500290565b6000826116d757634e487b7160e01b600052601260045260246000fd5b500490565b600082198211156116ef576116ef61166c565b500190565b6000828210156117065761170661166c565b500390565b60006020828403121561171d57600080fd5b8151610b858161155f565b60005b8381101561174357818101518382015260200161172b565b838111156110db5750506000910152565b60008251611766818460208701611728565b9190910192915050565b602081526000825180602084015261178f816040850160208701611728565b601f01601f1916919091016040019291505056fea2646970667358221220a2dc5978bd219cf6b29b76f913e4c7ac7f090807ca2c02c184764ed8c57f5d2264736f6c634300080f00330000000000000000000000006e269fbf25287ec5655e505bd3f842cff55d0eb100000000000000000000000071027a50adeabeb23a621647be2a2ca0e0f7d72f0000000000000000000000000000000000000000000000007e262ad6d04d00000000000000000000000000008feeff92b8d38a0a35b9c951387533c226ba5aa3
Deployed Bytecode
0x608060405234801561001057600080fd5b50600436106101735760003560e01c80635a632c28116100de5780638da5cb5b11610097578063c858671f11610071578063c858671f14610348578063d96384221461035b578063e2bbb1581461036e578063f2fde38b1461038157600080fd5b80638da5cb5b146102dd5780638dbb1e3a146102ee57806393f1a40b1461030157600080fd5b80635a632c2814610296578063630b5ba11461029f578063715018a6146102a757806384e82a33146102af5780638705fcd4146102c25780638aa28550146102d557600080fd5b80633aafd2a3116101305780633aafd2a3146102385780634127535814610241578063441a3e701461025457806348cd4cb11461026757806351eb05a6146102705780635312ea8e1461028357600080fd5b806307044b5a14610178578063081e3eda1461019e5780630ba84cd2146101a65780631526fe27146101bb57806317caf6f114610204578063332e629a1461020d575b600080fd5b61018b6101863660046114dd565b610394565b6040519081526020015b60405180910390f35b60065461018b565b6101b96101b436600461150d565b610502565b005b6101ce6101c936600461150d565b610542565b604080516001600160a01b039096168652602086019490945292840191909152606083015261ffff16608082015260a001610195565b61018b60085481565b600254610220906001600160a01b031681565b6040516001600160a01b039091168152602001610195565b61018b60035481565b600454610220906001600160a01b031681565b6101b9610262366004611526565b610591565b61018b60095481565b6101b961027e36600461150d565b6106e5565b6101b961029136600461150d565b61081f565b61018b60015481565b6101b96108c2565b6101b96108ed565b6101b96102bd36600461156d565b610923565b6101b96102d03660046115be565b610af8565b61018b600181565b6000546001600160a01b0316610220565b61018b6102fc366004611526565b610b74565b61033361030f3660046114dd565b60076020908152600092835260408084209091529082529020805460019091015482565b60408051928352602083019190915201610195565b600a54610220906001600160a01b031681565b6101b96103693660046115db565b610b8c565b6101b961037c366004611526565b610cbf565b6101b961038f3660046115be565b610f21565b600080600684815481106103aa576103aa611608565b600091825260208083208784526007825260408085206001600160a01b03898116875293528085206005949094029091016003810154815492516370a0823160e01b815230600482015291965093949291909116906370a0823190602401602060405180830381865afa158015610425573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610449919061161e565b905083600201544311801561045d57508015155b156104c9576000610472856002015443610b74565b905060006104a560085461049f886001015461049960035487610fbc90919063ffffffff16565b90610fbc565b90610fc8565b90506104c46104bd8461049f8464e8d4a51000610fbc565b8590610fd4565b935050505b6104f783600101546104f164e8d4a5100061049f868860000154610fbc90919063ffffffff16565b90610fe0565b979650505050505050565b6000546001600160a01b031633146105355760405162461bcd60e51b815260040161052c90611637565b60405180910390fd5b61053d6108c2565b600355565b6006818154811061055257600080fd5b6000918252602090912060059091020180546001820154600283015460038401546004909401546001600160a01b0390931694509092909161ffff1685565b6000600683815481106105a6576105a6611608565b6000918252602080832086845260078252604080852033865290925292208054600590920290920192508311156106145760405162461bcd60e51b81526020600482015260126024820152711dda5d1a191c985dce881b9bdd0819dbdbd960721b604482015260640161052c565b61061d846106e5565b600061064b82600101546104f164e8d4a5100061049f87600301548760000154610fbc90919063ffffffff16565b9050801561065d5761065d3382610fec565b831561068757815461066f9085610fe0565b82558254610687906001600160a01b0316338661111f565b600383015482546106a29164e8d4a510009161049f91610fbc565b6001830155604051848152859033907ff279e6a1f5e320cca91135676d9cb6e44ca8a08c0b88342bcdb1144f6511b5689060200160405180910390a35050505050565b6000600682815481106106fa576106fa611608565b9060005260206000209060050201905080600201544311610719575050565b80546040516370a0823160e01b81523060048201526000916001600160a01b0316906370a0823190602401602060405180830381865afa158015610761573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610785919061161e565b905080158061079657506001820154155b156107a657504360029091015550565b60006107b6836002015443610b74565b905060006107dd60085461049f866001015461049960035487610fbc90919063ffffffff16565b90506107e93082611182565b61080a6107ff8461049f8464e8d4a51000610fbc565b600386015490610fd4565b60038501555050436002909201919091555050565b60006006828154811061083457610834611608565b600091825260208083208584526007825260408085203380875293528420805485825560018201959095556005909302018054909450919291610884916001600160a01b0391909116908361111f565b604051818152849033907fbb757047c2b5f3974fe26b7c10f732e7bce710b0952a71082702781e62ae0595906020015b60405180910390a350505050565b60065460005b818110156108e9576108d9816106e5565b6108e281611682565b90506108c8565b5050565b6000546001600160a01b031633146109175760405162461bcd60e51b815260040161052c90611637565b61092160006111fd565b565b6000546001600160a01b0316331461094d5760405162461bcd60e51b815260040161052c90611637565b6005548261ffff1611156109915760405162461bcd60e51b815260206004820152600b60248201526a696e76616c69642066656560a81b604482015260640161052c565b801561099f5761099f6108c2565b600060095443116109b2576009546109b4565b435b6008549091506109c49086610fd4565b6008556040805160a0810182526001600160a01b0395861681526020810196875290810191825260006060820181815261ffff9586166080840190815260068054600181018255935292517ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d3f600590930292830180546001600160a01b031916919098161790965595517ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d4087015590517ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d4186015592517ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d428501555090517ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d43909201805461ffff191692909116919091179055565b6004546001600160a01b03163314610b525760405162461bcd60e51b815260206004820152601860248201527f736574466565416464726573733a20464f5242494444454e0000000000000000604482015260640161052c565b600480546001600160a01b0319166001600160a01b0392909216919091179055565b6000610b8560016104998486610fe0565b9392505050565b6000546001600160a01b03163314610bb65760405162461bcd60e51b815260040161052c90611637565b6005548261ffff161115610bfa5760405162461bcd60e51b815260206004820152600b60248201526a696e76616c69642066656560a81b604482015260640161052c565b8015610c0857610c086108c2565b610c4b83610c4560068781548110610c2257610c22611608565b906000526020600020906005020160010154600854610fe090919063ffffffff16565b90610fd4565b6008819055508260068581548110610c6557610c65611608565b9060005260206000209060050201600101819055508160068581548110610c8e57610c8e611608565b906000526020600020906005020160040160006101000a81548161ffff021916908361ffff16021790555050505050565b600060068381548110610cd457610cd4611608565b60009182526020808320868452600782526040808520338652909252922060059091029091019150610d05846106e5565b805415610d4e576000610d3a82600101546104f164e8d4a5100061049f87600301548760000154610fbc90919063ffffffff16565b90508015610d4c57610d4c3382610fec565b505b8215610ecd5781546040516370a0823160e01b81523060048201526000916001600160a01b0316906370a0823190602401602060405180830381865afa158015610d9c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610dc0919061161e565b8354909150610dda906001600160a01b031633308761124d565b82546040516370a0823160e01b81523060048201526000916001600160a01b0316906370a0823190602401602060405180830381865afa158015610e22573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e46919061161e565b9050610e528183610fe0565b600485015490955061ffff1615610ebb576004840154600090610e82906127109061049f90899061ffff16610fbc565b6004548654919250610ea1916001600160a01b0390811691168361111f565b8354610eb39082906104f19089610fd4565b845550610eca565b8254610ec79086610fd4565b83555b50505b60038201548154610ee89164e8d4a510009161049f91610fbc565b6001820155604051838152849033907f90890809c654f11d6e72a28fa60149770a0d11ec6c92319d6ceb2bb0a4ea1a15906020016108b4565b6000546001600160a01b03163314610f4b5760405162461bcd60e51b815260040161052c90611637565b6001600160a01b038116610fb05760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161052c565b610fb9816111fd565b50565b6000610b85828461169b565b6000610b8582846116ba565b6000610b8582846116dc565b6000610b8582846116f4565b6002546040516370a0823160e01b81523060048201526000916001600160a01b0316906370a0823190602401602060405180830381865afa158015611035573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611059919061161e565b9050808211156110e15760025460405163a9059cbb60e01b81526001600160a01b038581166004830152602482018490529091169063a9059cbb906044015b6020604051808303816000875af11580156110b7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110db919061170b565b50505050565b60025460405163a9059cbb60e01b81526001600160a01b038581166004830152602482018590529091169063a9059cbb90604401611098565b505050565b6040516001600160a01b03831660248201526044810182905261111a90849063a9059cbb60e01b906064015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152611285565b600a54604051631fb5b25760e31b81526001600160a01b038481166004830152602482018490529091169063fdad92b890604401600060405180830381600087803b1580156111d057600080fd5b505af11580156111e4573d6000803e3d6000fd5b50506001546111f69250905082610fd4565b6001555050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6040516001600160a01b03808516602483015283166044820152606481018290526110db9085906323b872dd60e01b9060840161114b565b60006112da826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166113579092919063ffffffff16565b80519091501561111a57808060200190518101906112f8919061170b565b61111a5760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b606482015260840161052c565b6060611366848460008561136e565b949350505050565b6060824710156113cf5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b606482015260840161052c565b6001600160a01b0385163b6114265760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161052c565b600080866001600160a01b031685876040516114429190611754565b60006040518083038185875af1925050503d806000811461147f576040519150601f19603f3d011682016040523d82523d6000602084013e611484565b606091505b50915091506104f78282866060831561149e575081610b85565b8251156114ae5782518084602001fd5b8160405162461bcd60e51b815260040161052c9190611770565b6001600160a01b0381168114610fb957600080fd5b600080604083850312156114f057600080fd5b823591506020830135611502816114c8565b809150509250929050565b60006020828403121561151f57600080fd5b5035919050565b6000806040838503121561153957600080fd5b50508035926020909101359150565b803561ffff8116811461155a57600080fd5b919050565b8015158114610fb957600080fd5b6000806000806080858703121561158357600080fd5b843593506020850135611595816114c8565b92506115a360408601611548565b915060608501356115b38161155f565b939692955090935050565b6000602082840312156115d057600080fd5b8135610b85816114c8565b600080600080608085870312156115f157600080fd5b84359350602085013592506115a360408601611548565b634e487b7160e01b600052603260045260246000fd5b60006020828403121561163057600080fd5b5051919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052601160045260246000fd5b6000600182016116945761169461166c565b5060010190565b60008160001904831182151516156116b5576116b561166c565b500290565b6000826116d757634e487b7160e01b600052601260045260246000fd5b500490565b600082198211156116ef576116ef61166c565b500190565b6000828210156117065761170661166c565b500390565b60006020828403121561171d57600080fd5b8151610b858161155f565b60005b8381101561174357818101518382015260200161172b565b838111156110db5750506000910152565b60008251611766818460208701611728565b9190910192915050565b602081526000825180602084015261178f816040850160208701611728565b601f01601f1916919091016040019291505056fea2646970667358221220a2dc5978bd219cf6b29b76f913e4c7ac7f090807ca2c02c184764ed8c57f5d2264736f6c634300080f0033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
0000000000000000000000006e269fbf25287ec5655e505bd3f842cff55d0eb100000000000000000000000071027a50adeabeb23a621647be2a2ca0e0f7d72f0000000000000000000000000000000000000000000000007e262ad6d04d00000000000000000000000000008feeff92b8d38a0a35b9c951387533c226ba5aa3
-----Decoded View---------------
Arg [0] : _acrdt (address): 0x6E269fbf25287eC5655E505Bd3f842cFF55D0eB1
Arg [1] : _feeAddress (address): 0x71027A50AdEABEb23A621647bE2A2ca0e0f7d72f
Arg [2] : _acrdtPerBlock (uint256): 9090000000000000000
Arg [3] : _ACRDTStakingReserve (address): 0x8FeEff92B8D38a0a35B9C951387533C226bA5Aa3
-----Encoded View---------------
4 Constructor Arguments found :
Arg [0] : 0000000000000000000000006e269fbf25287ec5655e505bd3f842cff55d0eb1
Arg [1] : 00000000000000000000000071027a50adeabeb23a621647be2a2ca0e0f7d72f
Arg [2] : 0000000000000000000000000000000000000000000000007e262ad6d04d0000
Arg [3] : 0000000000000000000000008feeff92b8d38a0a35b9c951387533c226ba5aa3
Deployed Bytecode Sourcemap
26855:9484:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30730:768;;;;;;:::i;:::-;;:::i;:::-;;;616:25:1;;;604:2;589:18;30730:768:0;;;;;;;;28994:95;29066:8;:15;28994:95;;36190:146;;;;;;:::i;:::-;;:::i;:::-;;27954:26;;;;;;:::i;:::-;;:::i;:::-;;;;-1:-1:-1;;;;;1126:32:1;;;1108:51;;1190:2;1175:18;;1168:34;;;;1218:18;;;1211:34;;;;1276:2;1261:18;;1254:34;1337:6;1325:19;1319:3;1304:19;;1297:48;1095:3;1080:19;27954:26:0;837:514:1;28195:34:0;;;;;;27624:19;;;;;-1:-1:-1;;;;;27624:19:0;;;;;;-1:-1:-1;;;;;1534:32:1;;;1516:51;;1504:2;1489:18;27624:19:0;1356:217:1;27690:28:0;;;;;;27852:25;;;;;-1:-1:-1;;;;;27852:25:0;;;34065:745;;;;;;:::i;:::-;;:::i;28287:29::-;;;;;;31837:776;;;;;;:::i;:::-;;:::i;34887:385::-;;;;;;:::i;:::-;;:::i;26966:30::-;;;;;;31581:180;;;:::i;2633:103::-;;;:::i;29123:728::-;;;;;;:::i;:::-;;:::i;35893:166::-;;;;;;:::i;:::-;;:::i;27773:44::-;;27816:1;27773:44;;1982:87;2028:7;2055:6;-1:-1:-1;;;;;2055:6:0;1982:87;;30522:143;;;;;;:::i;:::-;;:::i;28036:64::-;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3294:25:1;;;3350:2;3335:18;;3328:34;;;;3267:18;28036:64:0;3120:248:1;28325:46:0;;;;;-1:-1:-1;;;;;28325:46:0;;;29964:482;;;;;;:::i;:::-;;:::i;32693:1320::-;;;;;;:::i;:::-;;:::i;2891:201::-;;;;;;:::i;:::-;;:::i;30730:768::-;30804:7;30824:21;30848:8;30857:4;30848:14;;;;;;;;:::i;:::-;;;;;;;;;30897;;;:8;:14;;;;;;-1:-1:-1;;;;;30897:21:0;;;;;;;;;;30848:14;;;;;;;;30956:21;;;;31007:12;;:37;;-1:-1:-1;;;31007:37:0;;31038:4;31007:37;;;1516:51:1;30848:14:0;;-1:-1:-1;30897:21:0;;30848:14;31007:12;;;;;:22;;1489:18:1;;31007:37:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;30988:56;;31074:4;:20;;;31059:12;:35;:52;;;;-1:-1:-1;31098:13:0;;;31059:52;31055:354;;;31128:18;31149:49;31163:4;:20;;;31185:12;31149:13;:49::i;:::-;31128:70;;31213:19;31235:71;31290:15;;31235:50;31269:4;:15;;;31235:29;31250:13;;31235:10;:14;;:29;;;;:::i;:::-;:33;;:50::i;:::-;:54;;:71::i;:::-;31213:93;-1:-1:-1;31340:57:0;31361:35;31387:8;31361:21;31213:93;31377:4;31361:15;:21::i;:35::-;31340:16;;:20;:57::i;:::-;31321:76;;31113:296;;31055:354;31426:64;31474:4;:15;;;31426:43;31464:4;31426:33;31442:16;31426:4;:11;;;:15;;:33;;;;:::i;:43::-;:47;;:64::i;:::-;31419:71;30730:768;-1:-1:-1;;;;;;;30730:768:0:o;36190:146::-;2028:7;2055:6;-1:-1:-1;;;;;2055:6:0;790:10;2202:23;2194:68;;;;-1:-1:-1;;;2194:68:0;;;;;;;:::i;:::-;;;;;;;;;36270:17:::1;:15;:17::i;:::-;36298:13;:30:::0;36190:146::o;27954:26::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;27954:26:0;;;;-1:-1:-1;27954:26:0;;;;;;;:::o;34065:745::-;34132:21;34156:8;34165:4;34156:14;;;;;;;;:::i;:::-;;;;;;;;;34205;;;:8;:14;;;;;;34220:10;34205:26;;;;;;;34250:11;;34156:14;;;;;;;;-1:-1:-1;34250:22:0;-1:-1:-1;34250:22:0;34242:53;;;;-1:-1:-1;;;34242:53:0;;4948:2:1;34242:53:0;;;4930:21:1;4987:2;4967:18;;;4960:30;-1:-1:-1;;;5006:18:1;;;4999:48;5064:18;;34242:53:0;4746:342:1;34242:53:0;34306:16;34317:4;34306:10;:16::i;:::-;34333:15;34351:69;34404:4;:15;;;34351:48;34394:4;34351:38;34367:4;:21;;;34351:4;:11;;;:15;;:38;;;;:::i;:69::-;34333:87;-1:-1:-1;34435:11:0;;34431:82;;34463:38;34481:10;34493:7;34463:17;:38::i;:::-;34527:11;;34523:152;;34569:11;;:24;;34585:7;34569:15;:24::i;:::-;34555:38;;34608:12;;:55;;-1:-1:-1;;;;;34608:12:0;34642:10;34655:7;34608:25;:55::i;:::-;34719:21;;;;34703:11;;:48;;34746:4;;34703:38;;:15;:38::i;:48::-;34685:15;;;:66;34767:35;;616:25:1;;;34788:4:0;;34776:10;;34767:35;;604:2:1;589:18;34767:35:0;;;;;;;34121:689;;;34065:745;;:::o;31837:776::-;31889:21;31913:8;31922:4;31913:14;;;;;;;;:::i;:::-;;;;;;;;;;;31889:38;;31958:4;:20;;;31942:12;:36;31938:75;;31995:7;31837:776;:::o;31938:75::-;32042:12;;:37;;-1:-1:-1;;;32042:37:0;;32073:4;32042:37;;;1516:51:1;32023:16:0;;-1:-1:-1;;;;;32042:12:0;;:22;;1489:18:1;;32042:37:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;32023:56;-1:-1:-1;32094:13:0;;;:37;;-1:-1:-1;32111:15:0;;;;:20;32094:37;32090:126;;;-1:-1:-1;32171:12:0;32148:20;;;;:35;-1:-1:-1;31837:776:0:o;32090:126::-;32226:18;32247:49;32261:4;:20;;;32283:12;32247:13;:49::i;:::-;32226:70;;32307:19;32329:71;32384:15;;32329:50;32363:4;:15;;;32329:29;32344:13;;32329:10;:14;;:29;;;;:::i;:71::-;32307:93;;32421:39;32441:4;32448:11;32421;:39::i;:::-;32497:62;32523:35;32549:8;32523:21;:11;32539:4;32523:15;:21::i;:35::-;32497:21;;;;;:25;:62::i;:::-;32473:21;;;:86;-1:-1:-1;;32593:12:0;32570:20;;;;:35;;;;-1:-1:-1;;31837:776:0:o;34887:385::-;34946:21;34970:8;34979:4;34970:14;;;;;;;;:::i;:::-;;;;;;;;;35019;;;:8;:14;;;;;;35034:10;35019:26;;;;;;;35073:11;;35095:15;;;-1:-1:-1;35121:15:0;;:19;;;;34970:14;;;;;35151:12;;34970:14;;-1:-1:-1;35019:26:0;;35073:11;35151:54;;-1:-1:-1;;;;;35151:12:0;;;;;35073:11;35151:25;:54::i;:::-;35221:43;;616:25:1;;;35251:4:0;;35239:10;;35221:43;;604:2:1;589:18;35221:43:0;;;;;;;;34935:337;;;34887:385;:::o;31581:180::-;31643:8;:15;31626:14;31669:85;31697:6;31691:3;:12;31669:85;;;31727:15;31738:3;31727:10;:15::i;:::-;31705:5;;;:::i;:::-;;;31669:85;;;;31615:146;31581:180::o;2633:103::-;2028:7;2055:6;-1:-1:-1;;;;;2055:6:0;790:10;2202:23;2194:68;;;;-1:-1:-1;;;2194:68:0;;;;;;;:::i;:::-;2698:30:::1;2725:1;2698:18;:30::i;:::-;2633:103::o:0;29123:728::-;2028:7;2055:6;-1:-1:-1;;;;;2055:6:0;790:10;2202:23;2194:68;;;;-1:-1:-1;;;2194:68:0;;;;;;;:::i;:::-;29310:7:::1;;29293:13;:24;;;;29285:48;;;::::0;-1:-1:-1;;;29285:48:0;;5567:2:1;29285:48:0::1;::::0;::::1;5549:21:1::0;5606:2;5586:18;;;5579:30;-1:-1:-1;;;5625:18:1;;;5618:41;5676:18;;29285:48:0::1;5365:335:1::0;29285:48:0::1;29348:11;29344:61;;;29376:17;:15;:17::i;:::-;29415:23;29456:10;;29441:12;:25;:53;;29484:10;;29441:53;;;29469:12;29441:53;29523:15;::::0;29415:79;;-1:-1:-1;29523:32:0::1;::::0;29543:11;29523:19:::1;:32::i;:::-;29505:15;:50:::0;29594:238:::1;::::0;;::::1;::::0;::::1;::::0;;-1:-1:-1;;;;;29594:238:0;;::::1;::::0;;::::1;::::0;::::1;::::0;;;;;;;;;-1:-1:-1;29594:238:0;;;;;;::::1;::::0;;::::1;::::0;;;;;;29566:8:::1;:277:::0;;::::1;::::0;::::1;::::0;;;;;;;::::1;::::0;;::::1;::::0;;::::1;::::0;;-1:-1:-1;;;;;;29566:277:0::1;::::0;;;::::1;;::::0;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;29566:277:0;;;;;;;;-1:-1:-1;;29566:277:0::1;::::0;;;::::1;::::0;;;::::1;::::0;;29123:728::o;35893:166::-;35977:10;;-1:-1:-1;;;;;35977:10:0;35963;:24;35955:61;;;;-1:-1:-1;;;35955:61:0;;5907:2:1;35955:61:0;;;5889:21:1;5946:2;5926:18;;;5919:30;5985:26;5965:18;;;5958:54;6029:18;;35955:61:0;5705:348:1;35955:61:0;36027:10;:24;;-1:-1:-1;;;;;;36027:24:0;-1:-1:-1;;;;;36027:24:0;;;;;;;;;;35893:166::o;30522:143::-;30594:7;30621:36;27816:1;30621:14;:3;30629:5;30621:7;:14::i;:36::-;30614:43;30522:143;-1:-1:-1;;;30522:143:0:o;29964:482::-;2028:7;2055:6;-1:-1:-1;;;;;2055:6:0;790:10;2202:23;2194:68;;;;-1:-1:-1;;;2194:68:0;;;;;;;:::i;:::-;30148:7:::1;;30131:13;:24;;;;30123:48;;;::::0;-1:-1:-1;;;30123:48:0;;5567:2:1;30123:48:0::1;::::0;::::1;5549:21:1::0;5606:2;5586:18;;;5579:30;-1:-1:-1;;;5625:18:1;;;5618:41;5676:18;;30123:48:0::1;5365:335:1::0;30123:48:0::1;30186:11;30182:61;;;30214:17;:15;:17::i;:::-;30271:63;30322:11;30271:46;30291:8;30300:4;30291:14;;;;;;;;:::i;:::-;;;;;;;;;;;:25;;;30271:15;;:19;;:46;;;;:::i;:::-;:50:::0;::::1;:63::i;:::-;30253:15;:81;;;;30373:11;30345:8;30354:4;30345:14;;;;;;;;:::i;:::-;;;;;;;;;;;:25;;:39;;;;30425:13;30395:8;30404:4;30395:14;;;;;;;;:::i;:::-;;;;;;;;;;;:27;;;:43;;;;;;;;;;;;;;;;;;29964:482:::0;;;;:::o;32693:1320::-;32761:21;32785:8;32794:4;32785:14;;;;;;;;:::i;:::-;;;;;;;;;32834;;;:8;:14;;;;;;32849:10;32834:26;;;;;;;32785:14;;;;;;;;-1:-1:-1;32871:16:0;32843:4;32871:10;:16::i;:::-;32902:11;;:15;32898:239;;32934:15;32952:69;33005:4;:15;;;32952:48;32995:4;32952:38;32968:4;:21;;;32952:4;:11;;;:15;;:38;;;;:::i;:69::-;32934:87;-1:-1:-1;33040:11:0;;33036:90;;33072:38;33090:10;33102:7;33072:17;:38::i;:::-;32919:218;32898:239;33151:11;;33147:732;;33196:12;;:37;;-1:-1:-1;;;33196:37:0;;33227:4;33196:37;;;1516:51:1;33179:14:0;;-1:-1:-1;;;;;33196:12:0;;:22;;1489:18:1;;33196:37:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;33276:12;;33179:54;;-1:-1:-1;33276:74:0;;-1:-1:-1;;;;;33276:12:0;33314:10;33335:4;33342:7;33276:29;:74::i;:::-;33385:12;;:37;;-1:-1:-1;;;33385:37:0;;33416:4;33385:37;;;1516:51:1;33365:16:0;;-1:-1:-1;;;;;33385:12:0;;:22;;1489:18:1;;33385:37:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;33365:57;-1:-1:-1;33475:20:0;33365:57;33488:6;33475:12;:20::i;:::-;33528:17;;;;33465:30;;-1:-1:-1;33528:17:0;;:21;33524:344;;33603:17;;;;33570:18;;33591:41;;33626:5;;33591:30;;:7;;33603:17;;33591:11;:30::i;:41::-;33677:10;;33651:12;;33570:62;;-1:-1:-1;33651:49:0;;-1:-1:-1;;;;;33651:12:0;;;;33677:10;33570:62;33651:25;:49::i;:::-;33733:11;;:40;;33762:10;;33733:24;;33749:7;33733:15;:24::i;:40::-;33719:54;;-1:-1:-1;33524:344:0;;;33828:11;;:24;;33844:7;33828:15;:24::i;:::-;33814:38;;33524:344;33164:715;;33147:732;33923:21;;;;33907:11;;:48;;33950:4;;33907:38;;:15;:38::i;:48::-;33889:15;;;:66;33971:34;;616:25:1;;;33991:4:0;;33979:10;;33971:34;;604:2:1;589:18;33971:34:0;470:177:1;2891:201:0;2028:7;2055:6;-1:-1:-1;;;;;2055:6:0;790:10;2202:23;2194:68;;;;-1:-1:-1;;;2194:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;2980:22:0;::::1;2972:73;;;::::0;-1:-1:-1;;;2972:73:0;;6260:2:1;2972:73:0::1;::::0;::::1;6242:21:1::0;6299:2;6279:18;;;6272:30;6338:34;6318:18;;;6311:62;-1:-1:-1;;;6389:18:1;;;6382:36;6435:19;;2972:73:0::1;6058:402:1::0;2972:73:0::1;3056:28;3075:8;3056:18;:28::i;:::-;2891:201:::0;:::o;22429:98::-;22487:7;22514:5;22518:1;22514;:5;:::i;22828:98::-;22886:7;22913:5;22917:1;22913;:5;:::i;21691:98::-;21749:7;21776:5;21780:1;21776;:5;:::i;22072:98::-;22130:7;22157:5;22161:1;22157;:5;:::i;35388:287::-;35484:5;;:30;;-1:-1:-1;;;35484:30:0;;35508:4;35484:30;;;1516:51:1;35465:16:0;;-1:-1:-1;;;;;35484:5:0;;:15;;1489:18:1;;35484:30:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;35465:49;;35539:8;35529:7;:18;35525:141;;;35564:5;;:29;;-1:-1:-1;;;35564:29:0;;-1:-1:-1;;;;;7315:32:1;;;35564:29:0;;;7297:51:1;7364:18;;;7357:34;;;35564:5:0;;;;:14;;7270:18:1;;35564:29:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;35454:221;35388:287;;:::o;35525:141::-;35626:5;;:28;;-1:-1:-1;;;35626:28:0;;-1:-1:-1;;;;;7315:32:1;;;35626:28:0;;;7297:51:1;7364:18;;;7357:34;;;35626:5:0;;;;:14;;7270:18:1;;35626:28:0;7123:274:1;35525:141:0;35454:221;35388:287;;:::o;15521:211::-;15665:58;;-1:-1:-1;;;;;7315:32:1;;15665:58:0;;;7297:51:1;7364:18;;;7357:34;;;15638:86:0;;15658:5;;-1:-1:-1;;;15688:23:0;7270:18:1;;15665:58:0;;;;-1:-1:-1;;15665:58:0;;;;;;;;;;;;;;-1:-1:-1;;;;;15665:58:0;-1:-1:-1;;;;;;15665:58:0;;;;;;;;;;15638:19;:86::i;35687:191::-;35762:19;;:47;;-1:-1:-1;;;35762:47:0;;-1:-1:-1;;;;;7315:32:1;;;35762:47:0;;;7297:51:1;7364:18;;;7357:34;;;35762:19:0;;;;:33;;7270:18:1;;35762:47:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;35842:15:0;;:28;;-1:-1:-1;35842:15:0;-1:-1:-1;35862:7:0;35842:19;:28::i;:::-;35824:15;:46;-1:-1:-1;;35687:191:0:o;3252:::-;3326:16;3345:6;;-1:-1:-1;;;;;3362:17:0;;;-1:-1:-1;;;;;;3362:17:0;;;;;;3395:40;;3345:6;;;;;;;3395:40;;3326:16;3395:40;3315:128;3252:191;:::o;15740:248::-;15911:68;;-1:-1:-1;;;;;7910:15:1;;;15911:68:0;;;7892:34:1;7962:15;;7942:18;;;7935:43;7994:18;;;7987:34;;;15884:96:0;;15904:5;;-1:-1:-1;;;15934:27:0;7827:18:1;;15911:68:0;7652:375:1;18094:716:0;18518:23;18544:69;18572:4;18544:69;;;;;;;;;;;;;;;;;18552:5;-1:-1:-1;;;;;18544:27:0;;;:69;;;;;:::i;:::-;18628:17;;18518:95;;-1:-1:-1;18628:21:0;18624:179;;18725:10;18714:30;;;;;;;;;;;;:::i;:::-;18706:85;;;;-1:-1:-1;;;18706:85:0;;8234:2:1;18706:85:0;;;8216:21:1;8273:2;8253:18;;;8246:30;8312:34;8292:18;;;8285:62;-1:-1:-1;;;8363:18:1;;;8356:40;8413:19;;18706:85:0;8032:406:1;10303:229:0;10440:12;10472:52;10494:6;10502:4;10508:1;10511:12;10472:21;:52::i;:::-;10465:59;10303:229;-1:-1:-1;;;;10303:229:0:o;11423:510::-;11593:12;11651:5;11626:21;:30;;11618:81;;;;-1:-1:-1;;;11618:81:0;;8645:2:1;11618:81:0;;;8627:21:1;8684:2;8664:18;;;8657:30;8723:34;8703:18;;;8696:62;-1:-1:-1;;;8774:18:1;;;8767:36;8820:19;;11618:81:0;8443:402:1;11618:81:0;-1:-1:-1;;;;;7853:19:0;;;11710:60;;;;-1:-1:-1;;;11710:60:0;;9052:2:1;11710:60:0;;;9034:21:1;9091:2;9071:18;;;9064:30;9130:31;9110:18;;;9103:59;9179:18;;11710:60:0;8850:353:1;11710:60:0;11784:12;11798:23;11825:6;-1:-1:-1;;;;;11825:11:0;11844:5;11851:4;11825:31;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11783:73;;;;11874:51;11891:7;11900:10;11912:12;14259;14288:7;14284:530;;;-1:-1:-1;14319:10:0;14312:17;;14284:530;14433:17;;:21;14429:374;;14631:10;14625:17;14692:15;14679:10;14675:2;14671:19;14664:44;14429:374;14774:12;14767:20;;-1:-1:-1;;;14767:20:0;;;;;;;;:::i;14:131:1:-;-1:-1:-1;;;;;89:31:1;;79:42;;69:70;;135:1;132;125:12;150:315;218:6;226;279:2;267:9;258:7;254:23;250:32;247:52;;;295:1;292;285:12;247:52;331:9;318:23;308:33;;391:2;380:9;376:18;363:32;404:31;429:5;404:31;:::i;:::-;454:5;444:15;;;150:315;;;;;:::o;652:180::-;711:6;764:2;752:9;743:7;739:23;735:32;732:52;;;780:1;777;770:12;732:52;-1:-1:-1;803:23:1;;652:180;-1:-1:-1;652:180:1:o;1786:248::-;1854:6;1862;1915:2;1903:9;1894:7;1890:23;1886:32;1883:52;;;1931:1;1928;1921:12;1883:52;-1:-1:-1;;1954:23:1;;;2024:2;2009:18;;;1996:32;;-1:-1:-1;1786:248:1:o;2039:159::-;2106:20;;2166:6;2155:18;;2145:29;;2135:57;;2188:1;2185;2178:12;2135:57;2039:159;;;:::o;2203:118::-;2289:5;2282:13;2275:21;2268:5;2265:32;2255:60;;2311:1;2308;2301:12;2326:537;2422:6;2430;2438;2446;2499:3;2487:9;2478:7;2474:23;2470:33;2467:53;;;2516:1;2513;2506:12;2467:53;2552:9;2539:23;2529:33;;2612:2;2601:9;2597:18;2584:32;2625:31;2650:5;2625:31;:::i;:::-;2675:5;-1:-1:-1;2699:37:1;2732:2;2717:18;;2699:37;:::i;:::-;2689:47;;2788:2;2777:9;2773:18;2760:32;2801:30;2823:7;2801:30;:::i;:::-;2326:537;;;;-1:-1:-1;2326:537:1;;-1:-1:-1;;2326:537:1:o;2868:247::-;2927:6;2980:2;2968:9;2959:7;2955:23;2951:32;2948:52;;;2996:1;2993;2986:12;2948:52;3035:9;3022:23;3054:31;3079:5;3054:31;:::i;3609:450::-;3691:6;3699;3707;3715;3768:3;3756:9;3747:7;3743:23;3739:33;3736:53;;;3785:1;3782;3775:12;3736:53;3821:9;3808:23;3798:33;;3878:2;3867:9;3863:18;3850:32;3840:42;;3901:37;3934:2;3923:9;3919:18;3901:37;:::i;4064:127::-;4125:10;4120:3;4116:20;4113:1;4106:31;4156:4;4153:1;4146:15;4180:4;4177:1;4170:15;4196:184;4266:6;4319:2;4307:9;4298:7;4294:23;4290:32;4287:52;;;4335:1;4332;4325:12;4287:52;-1:-1:-1;4358:16:1;;4196:184;-1:-1:-1;4196:184:1:o;4385:356::-;4587:2;4569:21;;;4606:18;;;4599:30;4665:34;4660:2;4645:18;;4638:62;4732:2;4717:18;;4385:356::o;5093:127::-;5154:10;5149:3;5145:20;5142:1;5135:31;5185:4;5182:1;5175:15;5209:4;5206:1;5199:15;5225:135;5264:3;5285:17;;;5282:43;;5305:18;;:::i;:::-;-1:-1:-1;5352:1:1;5341:13;;5225:135::o;6465:168::-;6505:7;6571:1;6567;6563:6;6559:14;6556:1;6553:21;6548:1;6541:9;6534:17;6530:45;6527:71;;;6578:18;;:::i;:::-;-1:-1:-1;6618:9:1;;6465:168::o;6638:217::-;6678:1;6704;6694:132;;6748:10;6743:3;6739:20;6736:1;6729:31;6783:4;6780:1;6773:15;6811:4;6808:1;6801:15;6694:132;-1:-1:-1;6840:9:1;;6638:217::o;6860:128::-;6900:3;6931:1;6927:6;6924:1;6921:13;6918:39;;;6937:18;;:::i;:::-;-1:-1:-1;6973:9:1;;6860:128::o;6993:125::-;7033:4;7061:1;7058;7055:8;7052:34;;;7066:18;;:::i;:::-;-1:-1:-1;7103:9:1;;6993:125::o;7402:245::-;7469:6;7522:2;7510:9;7501:7;7497:23;7493:32;7490:52;;;7538:1;7535;7528:12;7490:52;7570:9;7564:16;7589:28;7611:5;7589:28;:::i;9208:258::-;9280:1;9290:113;9304:6;9301:1;9298:13;9290:113;;;9380:11;;;9374:18;9361:11;;;9354:39;9326:2;9319:10;9290:113;;;9421:6;9418:1;9415:13;9412:48;;;-1:-1:-1;;9456:1:1;9438:16;;9431:27;9208:258::o;9471:274::-;9600:3;9638:6;9632:13;9654:53;9700:6;9695:3;9688:4;9680:6;9676:17;9654:53;:::i;:::-;9723:16;;;;;9471:274;-1:-1:-1;;9471:274:1:o;9750:383::-;9899:2;9888:9;9881:21;9862:4;9931:6;9925:13;9974:6;9969:2;9958:9;9954:18;9947:34;9990:66;10049:6;10044:2;10033:9;10029:18;10024:2;10016:6;10012:15;9990:66;:::i;:::-;10117:2;10096:15;-1:-1:-1;;10092:29:1;10077:45;;;;10124:2;10073:54;;9750:383;-1:-1:-1;;9750:383:1:o
Swarm Source
ipfs://a2dc5978bd219cf6b29b76f913e4c7ac7f090807ca2c02c184764ed8c57f5d22
Loading...
Loading
Loading...
Loading
Net Worth in USD
$0.00
Net Worth in ETH
0
Multichain Portfolio | 34 Chains
| Chain | Token | Portfolio % | Price | Amount | Value |
|---|
Loading...
Loading
Loading...
Loading
Loading...
Loading
[ Download: CSV Export ]
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.