ERC-20
Overview
Max Total Supply
10,000,000 BIRD+
Holders
19
Total Transfers
-
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 18 Decimals)
Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Name:
BirdPlus
Compiler Version
v0.6.12+commit.27d51765
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2021-03-08 */ // File: https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/utils/Address.sol // SPDX-License-Identifier: MIT pragma solidity >=0.6.2 <0.8.0; /** * @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 * ==== */ function isContract(address account) internal view returns (bool) { // This method relies on extcodesize, which returns 0 for contracts in // construction, since the code is only stored at the end of the // constructor execution. uint256 size; // solhint-disable-next-line no-inline-assembly 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. * * 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"); // solhint-disable-next-line avoid-low-level-calls, avoid-call-value (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"); // solhint-disable-next-line avoid-low-level-calls (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"); // solhint-disable-next-line avoid-low-level-calls (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.3._ */ 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.3._ */ function functionDelegateCall(address target, bytes memory data, string memory errorMessage) internal returns (bytes memory) { require(isContract(target), "Address: delegate call to non-contract"); // solhint-disable-next-line avoid-low-level-calls (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 { // 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 // solhint-disable-next-line no-inline-assembly assembly { let returndata_size := mload(returndata) revert(add(32, returndata), returndata_size) } } else { revert(errorMessage); } } } } // File: https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/math/SafeMath.sol pragma solidity >=0.6.0 <0.8.0; /** * @dev Wrappers over Solidity's arithmetic operations with added overflow * checks. * * Arithmetic operations in Solidity wrap on overflow. This can easily result * in bugs, because programmers usually assume that an overflow raises an * error, which is the standard behavior in high level programming languages. * `SafeMath` restores this intuition by reverting the transaction when an * operation overflows. * * Using this library instead of the unchecked operations eliminates an entire * class of bugs, so it's recommended to use it always. */ library SafeMath { /** * @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) { 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). * * Counterpart to Solidity's `-` operator. * * Requirements: * * - Subtraction cannot overflow. */ 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). * * Counterpart to Solidity's `-` operator. * * Requirements: * * - Subtraction cannot overflow. */ 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. * * Counterpart to Solidity's `*` operator. * * Requirements: * * - Multiplication cannot overflow. */ function mul(uint256 a, uint256 b) internal pure returns (uint256) { // 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 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. * * 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) 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. * * 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) { require(b > 0, errorMessage); uint256 c = a / b; // assert(a == b * c + a % b); // There is no case in which this doesn't hold return c; } /** * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo), * Reverts 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 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. * * 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) { require(b != 0, errorMessage); return a % b; } } // File: https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/token/ERC20/IERC20.sol pragma solidity >=0.6.0 <0.8.0; /** * @dev Interface of the ERC20 standard as defined in the EIP. */ interface IERC20 { /** * @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 `recipient`. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ 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}. 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 `sender` to `recipient` 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 sender, address recipient, uint256 amount) external returns (bool); /** * @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); } // File: https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/token/ERC20/SafeERC20.sol pragma solidity >=0.6.0 <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 SafeMath for uint256; using Address for address; function safeTransfer(IERC20 token, address to, uint256 value) internal { _callOptionalReturn(token, abi.encodeWithSelector(token.transfer.selector, to, value)); } function safeTransferFrom(IERC20 token, address from, address to, uint256 value) internal { _callOptionalReturn(token, abi.encodeWithSelector(token.transferFrom.selector, from, to, value)); } /** * @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' // solhint-disable-next-line max-line-length 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).add(value); _callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, newAllowance)); } function safeDecreaseAllowance(IERC20 token, address spender, uint256 value) internal { uint256 newAllowance = token.allowance(address(this), spender).sub(value, "SafeERC20: 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(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 // solhint-disable-next-line max-line-length require(abi.decode(returndata, (bool)), "SafeERC20: ERC20 operation did not succeed"); } } } // File: https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/token/ERC20/TokenTimelock.sol pragma solidity >=0.6.0 <0.8.0; /** * @dev A token holder contract that will allow a beneficiary to extract the * tokens after a given release time. * * Useful for simple vesting schedules like "advisors get all of their tokens * after 1 year". */ contract TokenTimelock { using SafeERC20 for IERC20; // ERC20 basic token contract being held IERC20 private _token; // beneficiary of tokens after they are released address private _beneficiary; // timestamp when token release is enabled uint256 private _releaseTime; constructor (IERC20 token_, address beneficiary_, uint256 releaseTime_) public { // solhint-disable-next-line not-rely-on-time require(releaseTime_ > block.timestamp, "TokenTimelock: release time is before current time"); _token = token_; _beneficiary = beneficiary_; _releaseTime = releaseTime_; } /** * @return the token being held. */ function token() public view returns (IERC20) { return _token; } /** * @return the beneficiary of the tokens. */ function beneficiary() public view returns (address) { return _beneficiary; } /** * @return the time when the tokens are released. */ function releaseTime() public view returns (uint256) { return _releaseTime; } /** * @notice Transfers tokens held by timelock to beneficiary. */ function release() public virtual { // solhint-disable-next-line not-rely-on-time require(block.timestamp >= _releaseTime, "TokenTimelock: current time is before release time"); uint256 amount = _token.balanceOf(address(this)); require(amount > 0, "TokenTimelock: no tokens to release"); _token.safeTransfer(_beneficiary, amount); } } // File: browser/BirdPlus.sol pragma solidity ^0.6.2; pragma experimental ABIEncoderV2; contract BirdPlus { using SafeMath for uint256; /// @notice EIP-20 token name for this token string public constant name = "Bird+"; /// @notice EIP-20 token symbol for this token string public constant symbol = "BIRD+"; /// @notice EIP-20 token decimals for this token uint8 public constant decimals = 18; /// @notice Total number of tokens in circulation uint256 public constant totalSupply = 10000000e18; // 10 million BirdPlus uint256 public constant marketDistributionPercentage = 50; // Tokens % to suppliers and borrowers: 2.5M each (Total: 5M) uint256 public constant foundersPercentage = 10; // Token % to Founders: 1M (2 years vesting) uint256 public constant investorsPercentage = 10; // Token % to Investors: 1M (2 years vesting) uint256 public constant advisorsPercentage = 10; // Token % to Advisors: 1M (2 years vesting) uint256 public constant employeesPercentage = 10; // Token % to employees: 1M (2 years vesting) uint256 public constant reservedPercentage = 10; // Token % reserved on Protocol TokenTimelock public founderTimelock; // Founder timelock contract TokenTimelock public investorTimelock; // Investor timelock contract TokenTimelock public advisorTimelock; // Advisor timelock contract TokenTimelock public employeeTimelock; // Employee timelock contract address public foundersFund; // Founder escrow address address public investorsFund; // Investor escrow address address public advisorsFund; // Advisor escrow address address public employeesFund; // Employee escrow address address public marketDistributionFund; // BirdCore address: distributed the tokens on the market's user address public protocolAddress; // Protocol account that holds the reserved tokens // Vesting schedules: Releases the tokens to respective group after this releaseTime uint256 public releaseTime; /// @dev Allowance amounts on behalf of others mapping (address => mapping (address => uint256)) internal allowances; /// @dev Official record of token balances for each account mapping (address => uint256) internal balances; /// @notice The standard EIP-20 transfer event event Transfer(address indexed from, address indexed to, uint256 amount); /// @notice The standard EIP-20 approval event event Approval(address indexed owner, address indexed spender, uint256 amount); /** * @notice Construct a new BirdPlus token * @param account The initial Protocol account that hold the reserved tokens * @param marketDistributionFund_ The BirdCore address that hold the market distribution tokens * @param foundersFund_ The founder escrow address that hold the founders tokens * @param investorsFund_ The investor escrow address that hold the investors tokens * @param advisorsFund_ The advisor escrow address that hold the advisors tokens * @param employeesFund_ The employee escrow address that hold the employees tokens * @param releaseTime_ The locktime for founders, investors, advisors and employees tokens */ constructor(address account, address marketDistributionFund_, address foundersFund_, address investorsFund_, address advisorsFund_, address employeesFund_, uint256 releaseTime_) public { protocolAddress = account; marketDistributionFund = marketDistributionFund_; foundersFund = foundersFund_; investorsFund = investorsFund_; advisorsFund = advisorsFund_; employeesFund = employeesFund_; releaseTime = releaseTime_; founderTimelock = new TokenTimelock(IERC20(address(this)), foundersFund, releaseTime); investorTimelock = new TokenTimelock(IERC20(address(this)), investorsFund, releaseTime); advisorTimelock = new TokenTimelock(IERC20(address(this)), advisorsFund, releaseTime); employeeTimelock = new TokenTimelock(IERC20(address(this)), employeesFund, releaseTime); balances[address(founderTimelock)] = totalSupply.mul(foundersPercentage).div(100); // allocating 1M tokens balances[address(investorTimelock)] = totalSupply.mul(investorsPercentage).div(100); // allocating 1M tokens balances[address(advisorTimelock)] = totalSupply.mul(advisorsPercentage).div(100); // allocating 1M tokens balances[address(employeeTimelock)] = totalSupply.mul(employeesPercentage).div(100); // allocating 1M tokens balances[marketDistributionFund] = totalSupply.mul(marketDistributionPercentage).div(100); // allocating 5M tokens (2.5M each for suppliers and borrowers) balances[protocolAddress] = totalSupply.mul(reservedPercentage).div(100); // allocating 1M tokens } /** * @notice Get the number of tokens `spender` is approved to spend on behalf of `account` * @param account The address of the account holding the funds * @param spender The address of the account spending the funds * @return The number of tokens approved */ function allowance(address account, address spender) external view returns (uint) { return allowances[account][spender]; } /** * @notice Approve `spender` to transfer up to `amount` from `src` * @dev This will overwrite the approval amount for `spender` * and is subject to issues noted [here](https://eips.ethereum.org/EIPS/eip-20#approve) * @param spender The address of the account which may transfer tokens * @param amount The number of tokens that are approved (2^256-1 means infinite) * @return Whether or not the approval succeeded */ function approve(address spender, uint256 amount) external returns (bool) { allowances[msg.sender][spender] = amount; emit Approval(msg.sender, spender, amount); return true; } /** * @notice Get the number of tokens held by the `account` * @param account The address of the account to get the balance of * @return The number of tokens held */ function balanceOf(address account) external view returns (uint) { return balances[account]; } /** * @notice Transfer `amount` tokens from `msg.sender` to `dst` * @param dst The address of the destination account * @return Whether or not the transfer succeeded */ function transfer(address dst, uint256 amount) external returns (bool) { _transferTokens(msg.sender, dst, amount); return true; } /** * @notice Transfer `amount` tokens from `src` to `dst` * @param src The address of the source account * @param dst The address of the destination account * @param amount The number of tokens to transfer * @return Whether or not the transfer succeeded */ function transferFrom(address src, address dst, uint256 amount) external returns (bool) { address spender = msg.sender; uint256 spenderAllowance = allowances[src][spender]; if (spender != src && spenderAllowance != uint256(-1)) { uint256 newAllowance = spenderAllowance.sub(amount); allowances[src][spender] = newAllowance; emit Approval(src, spender, newAllowance); } _transferTokens(src, dst, amount); return true; } function _transferTokens(address src, address dst, uint256 amount) internal { require(src != address(0), "BirdPlus::_transferTokens: cannot transfer from the zero address"); require(dst != address(0), "BirdPlus::_transferTokens: cannot transfer to the zero address"); balances[src] = balances[src].sub(amount); balances[dst] = balances[dst].add(amount); emit Transfer(src, dst, amount); } /** * @notice Transfers tokens held by timelock to founder address. */ function releaseFounderFund() external returns (bool) { founderTimelock.release(); return true; } /** * @notice Transfers tokens held by timelock to investor address. */ function releaseInvestorFund() external returns (bool) { investorTimelock.release(); return true; } /** * @notice Transfers tokens held by timelock to advisor address. */ function releaseAdvisorFund() external returns (bool) { advisorTimelock.release(); return true; } /** * @notice Transfers tokens held by timelock to employees address. */ function releaseEmployeeFund() external returns (bool) { employeeTimelock.release(); return true; } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"address","name":"marketDistributionFund_","type":"address"},{"internalType":"address","name":"foundersFund_","type":"address"},{"internalType":"address","name":"investorsFund_","type":"address"},{"internalType":"address","name":"advisorsFund_","type":"address"},{"internalType":"address","name":"employeesFund_","type":"address"},{"internalType":"uint256","name":"releaseTime_","type":"uint256"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"advisorTimelock","outputs":[{"internalType":"contract TokenTimelock","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"advisorsFund","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"advisorsPercentage","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"employeeTimelock","outputs":[{"internalType":"contract TokenTimelock","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"employeesFund","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"employeesPercentage","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"founderTimelock","outputs":[{"internalType":"contract TokenTimelock","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"foundersFund","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"foundersPercentage","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"investorTimelock","outputs":[{"internalType":"contract TokenTimelock","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"investorsFund","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"investorsPercentage","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketDistributionFund","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketDistributionPercentage","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"protocolAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"releaseAdvisorFund","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"releaseEmployeeFund","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"releaseFounderFund","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"releaseInvestorFund","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"releaseTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"reservedPercentage","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"dst","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"src","type":"address"},{"internalType":"address","name":"dst","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"}]
Contract Creation Code
60806040523480156200001157600080fd5b5060405162001a0c38038062001a0c833981016040819052620000349162000512565b600980546001600160a01b03199081166001600160a01b038a81169190911790925560088054821689841617905560048054821688841617908190556005805483168885161790556006805483168785161790556007805490921685841617909155600a839055604051309291909116908390620000b290620004ec565b620000c093929190620005a3565b604051809103906000f080158015620000dd573d6000803e3d6000fd5b50600080546001600160a01b0319166001600160a01b03928316179055600554600a54604051309392909216916200011590620004ec565b6200012393929190620005a3565b604051809103906000f08015801562000140573d6000803e3d6000fd5b50600180546001600160a01b0319166001600160a01b03928316179055600654600a54604051309392909216916200017890620004ec565b6200018693929190620005a3565b604051809103906000f080158015620001a3573d6000803e3d6000fd5b50600280546001600160a01b0319166001600160a01b03928316179055600754600a5460405130939290921691620001db90620004ec565b620001e993929190620005a3565b604051809103906000f08015801562000206573d6000803e3d6000fd5b50600360006101000a8154816001600160a01b0302191690836001600160a01b031602179055506200026d606462000259600a6a084595161401484a0000006200041560201b620006fd1790919060201c565b6200046760201b620007471790919060201c565b600080546001600160a01b03168152600c6020908152604090912091909155620002b89060649062000259906a084595161401484a00000090600a90620006fd62000415821b17901c565b6001546001600160a01b03166000908152600c6020908152604090912091909155620003059060649062000259906a084595161401484a00000090600a90620006fd62000415821b17901c565b6002546001600160a01b03166000908152600c6020908152604090912091909155620003529060649062000259906a084595161401484a00000090600a90620006fd62000415821b17901c565b6003546001600160a01b03166000908152600c60209081526040909120919091556200039f9060649062000259906a084595161401484a00000090603290620006fd62000415821b17901c565b6008546001600160a01b03166000908152600c6020908152604090912091909155620003ec9060649062000259906a084595161401484a00000090600a90620006fd62000415821b17901c565b6009546001600160a01b03166000908152600c6020526040902055506200065e95505050505050565b600082620004265750600062000461565b828202828482816200043457fe5b04146200045e5760405162461bcd60e51b815260040162000455906200061d565b60405180910390fd5b90505b92915050565b60006200045e83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250620004b160201b60201c565b60008183620004d55760405162461bcd60e51b8152600401620004559190620005c7565b506000838581620004e257fe5b0495945050505050565b610774806200129883390190565b80516001600160a01b03811681146200046157600080fd5b600080600080600080600060e0888a0312156200052d578283fd5b620005398989620004fa565b96506200054a8960208a01620004fa565b95506200055b8960408a01620004fa565b94506200056c8960608a01620004fa565b93506200057d8960808a01620004fa565b92506200058e8960a08a01620004fa565b915060c0880151905092959891949750929550565b6001600160a01b039384168152919092166020820152604081019190915260600190565b6000602080835283518082850152825b81811015620005f557858101830151858201604001528201620005d7565b81811115620006075783604083870101525b50601f01601f1916929092016040019392505050565b60208082526021908201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6040820152607760f81b606082015260800190565b610c2a806200066e6000396000f3fe608060405234801561001057600080fd5b50600436106101d95760003560e01c80635960b74f11610104578063af5623e1116100a2578063c440008e11610071578063c440008e14610304578063dd62ed3e1461030c578063de186ccb1461031f578063ec9a9b7c14610327576101d9565b8063af5623e1146102f4578063b771a5fc146102a6578063b7ed066b146102a6578063b91d4001146102fc576101d9565b806380780455116100de57806380780455146102d157806395d89b41146102d9578063a9059cbb146102e1578063ad70f637146102a6576101d9565b80635960b74f146102ae57806370a08231146102b657806375ae8102146102c9576101d9565b8063313ce5671161017c57806346f2cf4e1161014b57806346f2cf4e14610296578063486ca1571461029e57806353c08ea2146102a6578063579048be146102a6576101d9565b8063313ce567146102695780633908ccca1461027e5780633d736fa5146102865780634585c2061461028e576101d9565b8063095ea7b3116101b8578063095ea7b314610219578063150876f41461023957806318160ddd1461024157806323b872dd14610256576101d9565b8062173e83146101de5780630676c1b7146101fc57806306fdde0314610204575b600080fd5b6101e661032f565b6040516101f39190610a20565b60405180910390f35b6101e661033e565b61020c61034d565b6040516101f39190610a3f565b61022c6102273660046109f6565b61036e565b6040516101f39190610a34565b6101e66103d9565b6102496103e8565b6040516101f39190610bc5565b61022c6102643660046109b6565b6103f7565b6102716104c3565b6040516101f39190610bce565b6102496104c8565b6101e66104cd565b61022c6104dc565b6101e6610540565b6101e661054f565b61024961055e565b6101e6610563565b6102496102c4366004610967565b610572565b6101e661058d565b61022c61059c565b61020c6105ed565b61022c6102ef3660046109f6565b61060e565b61022c610624565b610249610669565b6101e661066f565b61024961031a366004610982565b61067e565b61022c6106a9565b6101e66106ee565b6007546001600160a01b031681565b6009546001600160a01b031681565b60405180604001604052806005815260200164426972642b60d81b81525081565b336000818152600b602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906103c7908690610bc5565b60405180910390a35060015b92915050565b6006546001600160a01b031681565b6a084595161401484a00000081565b6001600160a01b0383166000818152600b602090815260408083203380855292528220549192909190821480159061043157506000198114155b156104ac5760006104428286610789565b6001600160a01b038089166000818152600b6020908152604080832094891680845294909152908190208490555192935090917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906104a2908590610bc5565b60405180910390a3505b6104b78686866107cb565b50600195945050505050565b601281565b603281565b6001546001600160a01b031681565b600154604080516386d1a69f60e01b815290516000926001600160a01b0316916386d1a69f916004808301928692919082900301818387803b15801561052157600080fd5b505af1158015610535573d6000803e3d6000fd5b505050506001905090565b6008546001600160a01b031681565b6000546001600160a01b031681565b600a81565b6002546001600160a01b031681565b6001600160a01b03166000908152600c602052604090205490565b6005546001600160a01b031681565b60008060009054906101000a90046001600160a01b03166001600160a01b03166386d1a69f6040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561052157600080fd5b60405180604001604052806005815260200164424952442b60d81b81525081565b600061061b3384846107cb565b50600192915050565b600354604080516386d1a69f60e01b815290516000926001600160a01b0316916386d1a69f916004808301928692919082900301818387803b15801561052157600080fd5b600a5481565b6004546001600160a01b031681565b6001600160a01b039182166000908152600b6020908152604080832093909416825291909152205490565b600254604080516386d1a69f60e01b815290516000926001600160a01b0316916386d1a69f916004808301928692919082900301818387803b15801561052157600080fd5b6003546001600160a01b031681565b60008261070c575060006103d3565b8282028284828161071957fe5b04146107405760405162461bcd60e51b815260040161073790610b26565b60405180910390fd5b9392505050565b600061074083836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506108c8565b600061074083836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506108ff565b6001600160a01b0383166107f15760405162461bcd60e51b815260040161073790610b67565b6001600160a01b0382166108175760405162461bcd60e51b815260040161073790610ac9565b6001600160a01b0383166000908152600c602052604090205461083a9082610789565b6001600160a01b038085166000908152600c60205260408082209390935590841681522054610869908261092b565b6001600160a01b038084166000818152600c602052604090819020939093559151908516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906108bb908590610bc5565b60405180910390a3505050565b600081836108e95760405162461bcd60e51b81526004016107379190610a3f565b5060008385816108f557fe5b0495945050505050565b600081848411156109235760405162461bcd60e51b81526004016107379190610a3f565b505050900390565b6000828201838110156107405760405162461bcd60e51b815260040161073790610a92565b80356001600160a01b03811681146103d357600080fd5b600060208284031215610978578081fd5b6107408383610950565b60008060408385031215610994578081fd5b61099e8484610950565b91506109ad8460208501610950565b90509250929050565b6000806000606084860312156109ca578081fd5b83356109d581610bdc565b925060208401356109e581610bdc565b929592945050506040919091013590565b60008060408385031215610a08578182fd5b610a128484610950565b946020939093013593505050565b6001600160a01b0391909116815260200190565b901515815260200190565b6000602080835283518082850152825b81811015610a6b57858101830151858201604001528201610a4f565b81811115610a7c5783604083870101525b50601f01601f1916929092016040019392505050565b6020808252601b908201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604082015260600190565b6020808252603e908201527f42697264506c75733a3a5f7472616e73666572546f6b656e733a2063616e6e6f60408201527f74207472616e7366657220746f20746865207a65726f20616464726573730000606082015260800190565b60208082526021908201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6040820152607760f81b606082015260800190565b602080825260409082018190527f42697264506c75733a3a5f7472616e73666572546f6b656e733a2063616e6e6f908201527f74207472616e736665722066726f6d20746865207a65726f2061646472657373606082015260800190565b90815260200190565b60ff91909116815260200190565b6001600160a01b0381168114610bf157600080fd5b5056fea2646970667358221220af5d349a62bcb97836c96b4b77da7a1add89455b5583714f8c0bb101c409f88b64736f6c634300060c0033608060405234801561001057600080fd5b5060405161077438038061077483398101604081905261002f9161008f565b4281116100575760405162461bcd60e51b815260040161004e906100d1565b60405180910390fd5b600080546001600160a01b039485166001600160a01b031991821617909155600180549390941692169190911790915560025561013b565b6000806000606084860312156100a3578283fd5b83516100ae81610123565b60208501519093506100bf81610123565b80925050604084015190509250925092565b60208082526032908201527f546f6b656e54696d656c6f636b3a2072656c656173652074696d65206973206260408201527165666f72652063757272656e742074696d6560701b606082015260800190565b6001600160a01b038116811461013857600080fd5b50565b61062a8061014a6000396000f3fe608060405234801561001057600080fd5b506004361061004c5760003560e01c806338af3eed1461005157806386d1a69f1461006f578063b91d400114610079578063fc0c546a1461008e575b600080fd5b610059610096565b60405161006691906103ff565b60405180910390f35b6100776100a5565b005b610081610193565b60405161006691906105bb565b610059610199565b6001546001600160a01b031690565b6002544210156100d05760405162461bcd60e51b81526004016100c79061045f565b60405180910390fd5b600080546040516370a0823160e01b81526001600160a01b03909116906370a08231906101019030906004016103ff565b60206040518083038186803b15801561011957600080fd5b505afa15801561012d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061015191906103cb565b9050600081116101735760405162461bcd60e51b81526004016100c790610578565b600154600054610190916001600160a01b039182169116836101a8565b50565b60025490565b6000546001600160a01b031690565b6101fe8363a9059cbb60e01b84846040516024016101c7929190610413565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152610203565b505050565b6060610258826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166102929092919063ffffffff16565b8051909150156101fe578080602001905181019061027691906103ab565b6101fe5760405162461bcd60e51b81526004016100c79061052e565b60606102a184846000856102ab565b90505b9392505050565b6060824710156102cd5760405162461bcd60e51b81526004016100c7906104b1565b6102d68561036c565b6102f25760405162461bcd60e51b81526004016100c7906104f7565b60006060866001600160a01b0316858760405161030f91906103e3565b60006040518083038185875af1925050503d806000811461034c576040519150601f19603f3d011682016040523d82523d6000602084013e610351565b606091505b5091509150610361828286610372565b979650505050505050565b3b151590565b606083156103815750816102a4565b8251156103915782518084602001fd5b8160405162461bcd60e51b81526004016100c7919061042c565b6000602082840312156103bc578081fd5b815180151581146102a4578182fd5b6000602082840312156103dc578081fd5b5051919050565b600082516103f58184602087016105c4565b9190910192915050565b6001600160a01b0391909116815260200190565b6001600160a01b03929092168252602082015260400190565b600060208252825180602084015261044b8160408501602087016105c4565b601f01601f19169190910160400192915050565b60208082526032908201527f546f6b656e54696d656c6f636b3a2063757272656e742074696d65206973206260408201527165666f72652072656c656173652074696d6560701b606082015260800190565b60208082526026908201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6040820152651c8818d85b1b60d21b606082015260800190565b6020808252601d908201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604082015260600190565b6020808252602a908201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6040820152691bdd081cdd58d8d9595960b21b606082015260800190565b60208082526023908201527f546f6b656e54696d656c6f636b3a206e6f20746f6b656e7320746f2072656c6560408201526261736560e81b606082015260800190565b90815260200190565b60005b838110156105df5781810151838201526020016105c7565b838111156105ee576000848401525b5050505056fea2646970667358221220baa407c4a506b460c64a41bf97ac9cc885d4807ca06ffd02003c8b71a6d7e36464736f6c634300060c003300000000000000000000000060b6a57b71f23a8c602ed71b60272fda321d2666000000000000000000000000980d11ac1c26f737ca467bec2c0ed292d06a258c00000000000000000000000060b6a57b71f23a8c602ed71b60272fda321d266600000000000000000000000060b6a57b71f23a8c602ed71b60272fda321d266600000000000000000000000060b6a57b71f23a8c602ed71b60272fda321d266600000000000000000000000060b6a57b71f23a8c602ed71b60272fda321d26660000000000000000000000000000000000000000000000000000000062268e70
Deployed Bytecode
0x608060405234801561001057600080fd5b50600436106101d95760003560e01c80635960b74f11610104578063af5623e1116100a2578063c440008e11610071578063c440008e14610304578063dd62ed3e1461030c578063de186ccb1461031f578063ec9a9b7c14610327576101d9565b8063af5623e1146102f4578063b771a5fc146102a6578063b7ed066b146102a6578063b91d4001146102fc576101d9565b806380780455116100de57806380780455146102d157806395d89b41146102d9578063a9059cbb146102e1578063ad70f637146102a6576101d9565b80635960b74f146102ae57806370a08231146102b657806375ae8102146102c9576101d9565b8063313ce5671161017c57806346f2cf4e1161014b57806346f2cf4e14610296578063486ca1571461029e57806353c08ea2146102a6578063579048be146102a6576101d9565b8063313ce567146102695780633908ccca1461027e5780633d736fa5146102865780634585c2061461028e576101d9565b8063095ea7b3116101b8578063095ea7b314610219578063150876f41461023957806318160ddd1461024157806323b872dd14610256576101d9565b8062173e83146101de5780630676c1b7146101fc57806306fdde0314610204575b600080fd5b6101e661032f565b6040516101f39190610a20565b60405180910390f35b6101e661033e565b61020c61034d565b6040516101f39190610a3f565b61022c6102273660046109f6565b61036e565b6040516101f39190610a34565b6101e66103d9565b6102496103e8565b6040516101f39190610bc5565b61022c6102643660046109b6565b6103f7565b6102716104c3565b6040516101f39190610bce565b6102496104c8565b6101e66104cd565b61022c6104dc565b6101e6610540565b6101e661054f565b61024961055e565b6101e6610563565b6102496102c4366004610967565b610572565b6101e661058d565b61022c61059c565b61020c6105ed565b61022c6102ef3660046109f6565b61060e565b61022c610624565b610249610669565b6101e661066f565b61024961031a366004610982565b61067e565b61022c6106a9565b6101e66106ee565b6007546001600160a01b031681565b6009546001600160a01b031681565b60405180604001604052806005815260200164426972642b60d81b81525081565b336000818152600b602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906103c7908690610bc5565b60405180910390a35060015b92915050565b6006546001600160a01b031681565b6a084595161401484a00000081565b6001600160a01b0383166000818152600b602090815260408083203380855292528220549192909190821480159061043157506000198114155b156104ac5760006104428286610789565b6001600160a01b038089166000818152600b6020908152604080832094891680845294909152908190208490555192935090917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906104a2908590610bc5565b60405180910390a3505b6104b78686866107cb565b50600195945050505050565b601281565b603281565b6001546001600160a01b031681565b600154604080516386d1a69f60e01b815290516000926001600160a01b0316916386d1a69f916004808301928692919082900301818387803b15801561052157600080fd5b505af1158015610535573d6000803e3d6000fd5b505050506001905090565b6008546001600160a01b031681565b6000546001600160a01b031681565b600a81565b6002546001600160a01b031681565b6001600160a01b03166000908152600c602052604090205490565b6005546001600160a01b031681565b60008060009054906101000a90046001600160a01b03166001600160a01b03166386d1a69f6040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561052157600080fd5b60405180604001604052806005815260200164424952442b60d81b81525081565b600061061b3384846107cb565b50600192915050565b600354604080516386d1a69f60e01b815290516000926001600160a01b0316916386d1a69f916004808301928692919082900301818387803b15801561052157600080fd5b600a5481565b6004546001600160a01b031681565b6001600160a01b039182166000908152600b6020908152604080832093909416825291909152205490565b600254604080516386d1a69f60e01b815290516000926001600160a01b0316916386d1a69f916004808301928692919082900301818387803b15801561052157600080fd5b6003546001600160a01b031681565b60008261070c575060006103d3565b8282028284828161071957fe5b04146107405760405162461bcd60e51b815260040161073790610b26565b60405180910390fd5b9392505050565b600061074083836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506108c8565b600061074083836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506108ff565b6001600160a01b0383166107f15760405162461bcd60e51b815260040161073790610b67565b6001600160a01b0382166108175760405162461bcd60e51b815260040161073790610ac9565b6001600160a01b0383166000908152600c602052604090205461083a9082610789565b6001600160a01b038085166000908152600c60205260408082209390935590841681522054610869908261092b565b6001600160a01b038084166000818152600c602052604090819020939093559151908516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906108bb908590610bc5565b60405180910390a3505050565b600081836108e95760405162461bcd60e51b81526004016107379190610a3f565b5060008385816108f557fe5b0495945050505050565b600081848411156109235760405162461bcd60e51b81526004016107379190610a3f565b505050900390565b6000828201838110156107405760405162461bcd60e51b815260040161073790610a92565b80356001600160a01b03811681146103d357600080fd5b600060208284031215610978578081fd5b6107408383610950565b60008060408385031215610994578081fd5b61099e8484610950565b91506109ad8460208501610950565b90509250929050565b6000806000606084860312156109ca578081fd5b83356109d581610bdc565b925060208401356109e581610bdc565b929592945050506040919091013590565b60008060408385031215610a08578182fd5b610a128484610950565b946020939093013593505050565b6001600160a01b0391909116815260200190565b901515815260200190565b6000602080835283518082850152825b81811015610a6b57858101830151858201604001528201610a4f565b81811115610a7c5783604083870101525b50601f01601f1916929092016040019392505050565b6020808252601b908201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604082015260600190565b6020808252603e908201527f42697264506c75733a3a5f7472616e73666572546f6b656e733a2063616e6e6f60408201527f74207472616e7366657220746f20746865207a65726f20616464726573730000606082015260800190565b60208082526021908201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6040820152607760f81b606082015260800190565b602080825260409082018190527f42697264506c75733a3a5f7472616e73666572546f6b656e733a2063616e6e6f908201527f74207472616e736665722066726f6d20746865207a65726f2061646472657373606082015260800190565b90815260200190565b60ff91909116815260200190565b6001600160a01b0381168114610bf157600080fd5b5056fea2646970667358221220af5d349a62bcb97836c96b4b77da7a1add89455b5583714f8c0bb101c409f88b64736f6c634300060c0033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
00000000000000000000000060b6a57b71f23a8c602ed71b60272fda321d2666000000000000000000000000980d11ac1c26f737ca467bec2c0ed292d06a258c00000000000000000000000060b6a57b71f23a8c602ed71b60272fda321d266600000000000000000000000060b6a57b71f23a8c602ed71b60272fda321d266600000000000000000000000060b6a57b71f23a8c602ed71b60272fda321d266600000000000000000000000060b6a57b71f23a8c602ed71b60272fda321d26660000000000000000000000000000000000000000000000000000000062268e70
-----Decoded View---------------
Arg [0] : account (address): 0x60b6a57b71f23a8c602eD71b60272FdA321D2666
Arg [1] : marketDistributionFund_ (address): 0x980D11Ac1C26F737CA467BeC2c0ed292d06a258C
Arg [2] : foundersFund_ (address): 0x60b6a57b71f23a8c602eD71b60272FdA321D2666
Arg [3] : investorsFund_ (address): 0x60b6a57b71f23a8c602eD71b60272FdA321D2666
Arg [4] : advisorsFund_ (address): 0x60b6a57b71f23a8c602eD71b60272FdA321D2666
Arg [5] : employeesFund_ (address): 0x60b6a57b71f23a8c602eD71b60272FdA321D2666
Arg [6] : releaseTime_ (uint256): 1646694000
-----Encoded View---------------
7 Constructor Arguments found :
Arg [0] : 00000000000000000000000060b6a57b71f23a8c602ed71b60272fda321d2666
Arg [1] : 000000000000000000000000980d11ac1c26f737ca467bec2c0ed292d06a258c
Arg [2] : 00000000000000000000000060b6a57b71f23a8c602ed71b60272fda321d2666
Arg [3] : 00000000000000000000000060b6a57b71f23a8c602ed71b60272fda321d2666
Arg [4] : 00000000000000000000000060b6a57b71f23a8c602ed71b60272fda321d2666
Arg [5] : 00000000000000000000000060b6a57b71f23a8c602ed71b60272fda321d2666
Arg [6] : 0000000000000000000000000000000000000000000000000000000062268e70
Deployed Bytecode Sourcemap
22321:8896:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23929:28;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24115:30;;;:::i;22437:37::-;;;:::i;:::-;;;;;;;:::i;28170:211::-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;23866:27::-;;;:::i;22736:49::-;;;:::i;:::-;;;;;;;:::i;29357:522::-;;;;;;:::i;:::-;;:::i;22637:35::-;;;:::i;:::-;;;;;;;:::i;22817:57::-;;;:::i;23509:37::-;;;:::i;30648:122::-;;;:::i;23999:37::-;;;:::i;23435:36::-;;;:::i;22943:47::-;;;:::i;23584:36::-;;;:::i;28584:108::-;;;;;;:::i;:::-;;:::i;23802:28::-;;;:::i;30427:120::-;;;:::i;22535:39::-;;;:::i;28898:152::-;;;;;;:::i;:::-;;:::i;31092:122::-;;;:::i;24307:26::-;;;:::i;23739:27::-;;;:::i;27559:136::-;;;;;;:::i;:::-;;:::i;30870:120::-;;;:::i;23658:37::-;;;:::i;23929:28::-;;;-1:-1:-1;;;;;23929:28:0;;:::o;24115:30::-;;;-1:-1:-1;;;;;24115:30:0;;:::o;22437:37::-;;;;;;;;;;;;;;-1:-1:-1;;;22437:37:0;;;;:::o;28170:211::-;28267:10;28239:4;28256:22;;;:10;:22;;;;;;;;-1:-1:-1;;;;;28256:31:0;;;;;;;;;;:40;;;28314:37;28239:4;;28256:31;;28314:37;;;;28290:6;;28314:37;:::i;:::-;;;;;;;;-1:-1:-1;28369:4:0;28170:211;;;;;:::o;23866:27::-;;;-1:-1:-1;;;;;23866:27:0;;:::o;22736:49::-;22774:11;22736:49;:::o;29357:522::-;-1:-1:-1;;;;;29522:15:0;;29439:4;29522:15;;;:10;:15;;;;;;;;29474:10;29522:24;;;;;;;;29439:4;;29474:10;;29522:24;29563:14;;;;;:49;;;-1:-1:-1;;29581:16:0;:31;;29563:49;29559:245;;;29629:20;29652:28;:16;29673:6;29652:20;:28::i;:::-;-1:-1:-1;;;;;29695:15:0;;;;;;;:10;:15;;;;;;;;:24;;;;;;;;;;;;;;:39;;;29756:36;29629:51;;-1:-1:-1;29695:24:0;;29756:36;;;;29629:51;;29756:36;:::i;:::-;;;;;;;;29559:245;;29816:33;29832:3;29837;29842:6;29816:15;:33::i;:::-;-1:-1:-1;29867:4:0;;29357:522;-1:-1:-1;;;;;29357:522:0:o;22637:35::-;22670:2;22637:35;:::o;22817:57::-;22872:2;22817:57;:::o;23509:37::-;;;-1:-1:-1;;;;;23509:37:0;;:::o;30648:122::-;30714:16;;:26;;;-1:-1:-1;;;30714:26:0;;;;30697:4;;-1:-1:-1;;;;;30714:16:0;;:24;;:26;;;;;30697:4;;30714:26;;;;;;;30697:4;30714:16;:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30758:4;30751:11;;30648:122;:::o;23999:37::-;;;-1:-1:-1;;;;;23999:37:0;;:::o;23435:36::-;;;-1:-1:-1;;;;;23435:36:0;;:::o;22943:47::-;22988:2;22943:47;:::o;23584:36::-;;;-1:-1:-1;;;;;23584:36:0;;:::o;28584:108::-;-1:-1:-1;;;;;28667:17:0;28643:4;28667:17;;;:8;:17;;;;;;;28584:108::o;23802:28::-;;;-1:-1:-1;;;;;23802:28:0;;:::o;30427:120::-;30475:4;30492:15;;;;;;;;;-1:-1:-1;;;;;30492:15:0;-1:-1:-1;;;;;30492:23:0;;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22535:39;;;;;;;;;;;;;;-1:-1:-1;;;22535:39:0;;;;:::o;28898:152::-;28963:4;28980:40;28996:10;29008:3;29013:6;28980:15;:40::i;:::-;-1:-1:-1;29038:4:0;28898:152;;;;:::o;31092:122::-;31158:16;;:26;;;-1:-1:-1;;;31158:26:0;;;;31141:4;;-1:-1:-1;;;;;31158:16:0;;:24;;:26;;;;;31141:4;;31158:26;;;;;;;31141:4;31158:16;:26;;;;;;;;;;24307;;;;:::o;23739:27::-;;;-1:-1:-1;;;;;23739:27:0;;:::o;27559:136::-;-1:-1:-1;;;;;27659:19:0;;;27635:4;27659:19;;;:10;:19;;;;;;;;:28;;;;;;;;;;;;;27559:136::o;30870:120::-;30935:15;;:25;;;-1:-1:-1;;;30935:25:0;;;;30918:4;;-1:-1:-1;;;;;30935:15:0;;:23;;:25;;;;;30918:4;;30935:25;;;;;;;30918:4;30935:15;:25;;;;;;;;;;23658:37;;;-1:-1:-1;;;;;23658:37:0;;:::o;10453:471::-;10511:7;10756:6;10752:47;;-1:-1:-1;10786:1:0;10779:8;;10752:47;10823:5;;;10827:1;10823;:5;:1;10847:5;;;;;:10;10839:56;;;;-1:-1:-1;;;10839:56:0;;;;;;;:::i;:::-;;;;;;;;;10915:1;10453:471;-1:-1:-1;;;10453:471:0:o;11400:132::-;11458:7;11485:39;11489:1;11492;11485:39;;;;;;;;;;;;;;;;;:3;:39::i;9563:136::-;9621:7;9648:43;9652:1;9655;9648:43;;;;;;;;;;;;;;;;;:3;:43::i;29887:440::-;-1:-1:-1;;;;;29982:17:0;;29974:94;;;;-1:-1:-1;;;29974:94:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;30087:17:0;;30079:92;;;;-1:-1:-1;;;30079:92:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;30200:13:0;;;;;;:8;:13;;;;;;:25;;30218:6;30200:17;:25::i;:::-;-1:-1:-1;;;;;30184:13:0;;;;;;;:8;:13;;;;;;:41;;;;30252:13;;;;;;;:25;;30270:6;30252:17;:25::i;:::-;-1:-1:-1;;;;;30236:13:0;;;;;;;:8;:13;;;;;;;:41;;;;30293:26;;;;;;;;;;30312:6;;30293:26;:::i;:::-;;;;;;;;29887:440;;;:::o;12028:278::-;12114:7;12149:12;12142:5;12134:28;;;;-1:-1:-1;;;12134:28:0;;;;;;;;:::i;:::-;;12173:9;12189:1;12185;:5;;;;;;;12028:278;-1:-1:-1;;;;;12028:278:0:o;10002:192::-;10088:7;10124:12;10116:6;;;;10108:29;;;;-1:-1:-1;;;10108:29:0;;;;;;;;:::i;:::-;-1:-1:-1;;;10160:5:0;;;10002:192::o;9099:181::-;9157:7;9189:5;;;9213:6;;;;9205:46;;;;-1:-1:-1;;;9205:46:0;;;;;;;:::i;5:130:-1:-;72:20;;-1:-1;;;;;8027:54;;9007:35;;8997:2;;9056:1;;9046:12;279:241;;383:2;371:9;362:7;358:23;354:32;351:2;;;-1:-1;;389:12;351:2;451:53;496:7;472:22;451:53;:::i;527:366::-;;;648:2;636:9;627:7;623:23;619:32;616:2;;;-1:-1;;654:12;616:2;716:53;761:7;737:22;716:53;:::i;:::-;706:63;;824:53;869:7;806:2;849:9;845:22;824:53;:::i;:::-;814:63;;610:283;;;;;:::o;900:491::-;;;;1038:2;1026:9;1017:7;1013:23;1009:32;1006:2;;;-1:-1;;1044:12;1006:2;85:6;72:20;97:33;124:5;97:33;:::i;:::-;1096:63;-1:-1;1196:2;1235:22;;72:20;97:33;72:20;97:33;:::i;:::-;1000:391;;1204:63;;-1:-1;;;1304:2;1343:22;;;;209:20;;1000:391::o;1398:366::-;;;1519:2;1507:9;1498:7;1494:23;1490:32;1487:2;;;-1:-1;;1525:12;1487:2;1587:53;1632:7;1608:22;1587:53;:::i;:::-;1577:63;1677:2;1716:22;;;;209:20;;-1:-1;;;1481:283::o;4298:222::-;-1:-1;;;;;8027:54;;;;1842:37;;4425:2;4410:18;;4396:124::o;4527:210::-;7939:13;;7932:21;1956:34;;4648:2;4633:18;;4619:118::o;5015:310::-;;5162:2;;5183:17;5176:47;2322:5;7562:12;7719:6;5162:2;5151:9;5147:18;7707:19;-1:-1;8639:101;8653:6;8650:1;8647:13;8639:101;;;8720:11;;;;;8714:18;8701:11;;;7747:14;8701:11;8694:39;8668:10;;8639:101;;;8755:6;8752:1;8749:13;8746:2;;;-1:-1;7747:14;8811:6;5151:9;8802:16;;8795:27;8746:2;-1:-1;8927:7;8911:14;-1:-1;;8907:28;2480:39;;;;7747:14;2480:39;;5133:192;-1:-1;;;5133:192::o;5332:416::-;5532:2;5546:47;;;2756:2;5517:18;;;7707:19;2792:29;7747:14;;;2772:50;2841:12;;;5503:245::o;5755:416::-;5955:2;5969:47;;;3092:2;5940:18;;;7707:19;3128:34;7747:14;;;3108:55;3197:32;3183:12;;;3176:54;3249:12;;;5926:245::o;6178:416::-;6378:2;6392:47;;;3500:2;6363:18;;;7707:19;3536:34;7747:14;;;3516:55;-1:-1;;;3591:12;;;3584:25;3628:12;;;6349:245::o;6601:416::-;6801:2;6815:47;;;3879:2;6786:18;;;7707:19;;;3915:34;7747:14;;;3895:55;3984:34;3970:12;;;3963:56;4038:12;;;6772:245::o;7024:222::-;4135:37;;;7151:2;7136:18;;7122:124::o;7253:214::-;8243:4;8232:16;;;;4251:35;;7376:2;7361:18;;7347:120::o;8948:117::-;-1:-1;;;;;8027:54;;9007:35;;8997:2;;9056:1;;9046:12;8997:2;8991:74;:::o
Swarm Source
ipfs://baa407c4a506b460c64a41bf97ac9cc885d4807ca06ffd02003c8b71a6d7e364
Loading...
Loading
Loading...
Loading
[ Download: CSV Export ]
[ Download: CSV Export ]
A token is a representation of an on-chain or off-chain asset. The token page shows information such as price, total supply, holders, transfers and social links. Learn more about this page in our Knowledge Base.