ERC-20
Source Code
Overview
Max Total Supply
8,112,182,846.059968294981081677 BANA
Holders
1,418
Transfers
-
0 (0%)
Market
Onchain Market Cap
-
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:
Banana
Compiler Version
v0.8.2+commit.661d1103
Optimization Enabled:
Yes with 200 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity Standard Json-Input format)
// SPDX-License-Identifier: GPL-2.0-or-later
pragma solidity ^0.8.0;
import "./interfaces/IBanana.sol";
import "../utils/Ownable.sol";
import "../libraries/TransferHelper.sol";
import "../libraries/FullMath.sol";
contract Banana is IBanana, Ownable {
using FullMath for uint256;
string public constant override name = "Banana";
string public constant override symbol = "BANA";
uint8 public constant override decimals = 18;
address public immutable override apeXToken;
uint256 public override redeemTime;
uint256 public override totalSupply;
mapping(address => uint256) public override balanceOf;
mapping(address => mapping(address => uint256)) public override allowance;
mapping(address => bool) public minters;
constructor(address apeXToken_, uint256 redeemTime_) {
owner = msg.sender;
apeXToken = apeXToken_;
redeemTime = redeemTime_;
minters[msg.sender] = true;
}
function updateRedeemTime(uint256 redeemTime_) external onlyOwner {
require(redeemTime_ > block.timestamp, "need over current time");
emit RedeemTimeChanged(redeemTime, redeemTime_);
redeemTime = redeemTime_;
}
function addMinter(address minter) external onlyOwner {
minters[minter] = true;
}
function removeMinter(address minter) external onlyOwner {
minters[minter] = false;
}
function mint(address to, uint256 apeXAmount) external override returns (uint256) {
require(minters[msg.sender], "forbidden");
require(apeXAmount > 0, "zero amount");
uint256 apeXBalance = IERC20(apeXToken).balanceOf(address(this));
uint256 mintAmount;
if (totalSupply == 0) {
mintAmount = apeXAmount * 1000;
} else {
mintAmount = apeXAmount.mulDiv(totalSupply, apeXBalance);
}
TransferHelper.safeTransferFrom(apeXToken, msg.sender, address(this), apeXAmount);
_mint(to, mintAmount);
return mintAmount;
}
function burn(uint256 amount) external override returns (bool) {
_burn(msg.sender, amount);
return true;
}
function burnFrom(address from, uint256 amount) external override returns (bool) {
_spendAllowance(from, msg.sender, amount);
_burn(from, amount);
return true;
}
function redeem(uint256 amount) external override returns (uint256) {
require(block.timestamp >= redeemTime, "unredeemable");
require(balanceOf[msg.sender] >= amount, "not enough balance");
uint256 totalApeX = IERC20(apeXToken).balanceOf(address(this));
uint256 apeXAmount = amount.mulDiv(totalApeX, totalSupply);
_burn(msg.sender, amount);
TransferHelper.safeTransfer(apeXToken, msg.sender, apeXAmount);
emit Redeem(msg.sender, amount, apeXAmount);
return apeXAmount;
}
function transfer(address to, uint256 value) external override returns (bool) {
_transfer(msg.sender, to, value);
return true;
}
function transferFrom(
address from,
address to,
uint256 value
) external override returns (bool) {
_spendAllowance(from, msg.sender, value);
_transfer(from, to, value);
return true;
}
function approve(address spender, uint256 value) external override returns (bool) {
_approve(msg.sender, spender, value);
return true;
}
function _spendAllowance(
address from,
address spender,
uint256 value
) internal virtual {
uint256 currentAllowance = allowance[from][spender];
if (currentAllowance != type(uint256).max) {
require(currentAllowance >= value, "insufficient allowance");
unchecked {
_approve(owner, spender, currentAllowance - value);
}
}
}
function _mint(address to, uint256 value) internal {
require(to != address(0), "zero address");
totalSupply = totalSupply + value;
balanceOf[to] = balanceOf[to] + value;
emit Transfer(address(0), to, value);
}
function _burn(address from, uint256 value) internal {
require(balanceOf[from] >= value, "balance of from < value");
balanceOf[from] = balanceOf[from] - value;
totalSupply = totalSupply - value;
emit Transfer(from, address(0), value);
}
function _approve(
address _owner,
address spender,
uint256 value
) private {
allowance[_owner][spender] = value;
emit Approval(_owner, spender, value);
}
function _transfer(
address from,
address to,
uint256 value
) private {
require(to != address(0), "can not tranfer to zero address");
uint256 fromBalance = balanceOf[from];
require(fromBalance >= value, "transfer amount exceeds balance");
balanceOf[from] = fromBalance - value;
balanceOf[to] = balanceOf[to] + value;
emit Transfer(from, to, value);
}
}// SPDX-License-Identifier: GPL-2.0-or-later
pragma solidity ^0.8.0;
import "../../interfaces/IERC20.sol";
interface IBanana is IERC20 {
event RedeemTimeChanged(uint256 oldRedeemTime, uint256 newRedeemTime);
event Redeem(address indexed user, uint256 burntAmount, uint256 apeXAmount);
function apeXToken() external view returns (address);
function redeemTime() external view returns (uint256);
function mint(address to, uint256 apeXAmount) external returns (uint256);
function burn(uint256 amount) external returns (bool);
function burnFrom(address from, uint256 amount) external returns (bool);
function redeem(uint256 amount) external returns (uint256);
}// SPDX-License-Identifier: GPL-2.0-or-later
pragma solidity ^0.8.0;
abstract contract Ownable {
address public owner;
address public pendingOwner;
event NewOwner(address indexed oldOwner, address indexed newOwner);
event NewPendingOwner(address indexed oldPendingOwner, address indexed newPendingOwner);
modifier onlyOwner() {
require(msg.sender == owner, "Ownable: REQUIRE_OWNER");
_;
}
function setPendingOwner(address newPendingOwner) external onlyOwner {
require(pendingOwner != newPendingOwner, "Ownable: ALREADY_SET");
emit NewPendingOwner(pendingOwner, newPendingOwner);
pendingOwner = newPendingOwner;
}
function acceptOwner() external {
require(msg.sender == pendingOwner, "Ownable: REQUIRE_PENDING_OWNER");
address oldOwner = owner;
address oldPendingOwner = pendingOwner;
owner = pendingOwner;
pendingOwner = address(0);
emit NewOwner(oldOwner, owner);
emit NewPendingOwner(oldPendingOwner, pendingOwner);
}
}// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;
// helper methods for interacting with ERC20 tokens and sending ETH that do not consistently return true/false
library TransferHelper {
function safeApprove(
address token,
address to,
uint256 value
) internal {
// bytes4(keccak256(bytes('approve(address,uint256)')));
(bool success, bytes memory data) = token.call(abi.encodeWithSelector(0x095ea7b3, to, value));
require(
success && (data.length == 0 || abi.decode(data, (bool))),
"TransferHelper::safeApprove: approve failed"
);
}
function safeTransfer(
address token,
address to,
uint256 value
) internal {
// bytes4(keccak256(bytes('transfer(address,uint256)')));
(bool success, bytes memory data) = token.call(abi.encodeWithSelector(0xa9059cbb, to, value));
require(
success && (data.length == 0 || abi.decode(data, (bool))),
"TransferHelper::safeTransfer: transfer failed"
);
}
function safeTransferFrom(
address token,
address from,
address to,
uint256 value
) internal {
// bytes4(keccak256(bytes('transferFrom(address,address,uint256)')));
(bool success, bytes memory data) = token.call(abi.encodeWithSelector(0x23b872dd, from, to, value));
require(
success && (data.length == 0 || abi.decode(data, (bool))),
"TransferHelper::transferFrom: transferFrom failed"
);
}
function safeTransferETH(address to, uint256 value) internal {
(bool success, ) = to.call{value: value}(new bytes(0));
require(success, "TransferHelper::safeTransferETH: ETH transfer failed");
}
}// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;
/// @title Contains 512-bit math functions
/// @notice Facilitates multiplication and division that can have overflow of an intermediate value without any loss of precision
/// @dev Handles "phantom overflow" i.e., allows multiplication and division where an intermediate value overflows 256 bits
library FullMath {
/// @notice Calculates floor(a×b÷denominator) with full precision. Throws if result overflows a uint256 or denominator == 0
/// @param a The multiplicand
/// @param b The multiplier
/// @param denominator The divisor
/// @return result The 256-bit result
/// @dev Credit to Remco Bloemen under MIT license https://xn--2-umb.com/21/muldiv
function mulDiv(
uint256 a,
uint256 b,
uint256 denominator
) internal pure returns (uint256 result) {
// 512-bit multiply [prod1 prod0] = a * b
// Compute the product mod 2**256 and mod 2**256 - 1
// then use the Chinese Remainder Theorem to reconstruct
// the 512 bit result. The result is stored in two 256
// variables such that product = prod1 * 2**256 + prod0
uint256 prod0; // Least significant 256 bits of the product
uint256 prod1; // Most significant 256 bits of the product
// todo unchecked
unchecked {
assembly {
let mm := mulmod(a, b, not(0))
prod0 := mul(a, b)
prod1 := sub(sub(mm, prod0), lt(mm, prod0))
}
// Handle non-overflow cases, 256 by 256 division
if (prod1 == 0) {
require(denominator > 0);
assembly {
result := div(prod0, denominator)
}
return result;
}
// Make sure the result is less than 2**256.
// Also prevents denominator == 0
require(denominator > prod1);
///////////////////////////////////////////////
// 512 by 256 division.
///////////////////////////////////////////////
// Make division exact by subtracting the remainder from [prod1 prod0]
// Compute remainder using mulmod
uint256 remainder;
assembly {
remainder := mulmod(a, b, denominator)
}
// Subtract 256 bit number from 512 bit number
assembly {
prod1 := sub(prod1, gt(remainder, prod0))
prod0 := sub(prod0, remainder)
}
// Factor powers of two out of denominator
// Compute largest power of two divisor of denominator.
// Always >= 1.
uint256 twos = (~denominator + 1) & denominator;
// Divide denominator by power of two
assembly {
denominator := div(denominator, twos)
}
// Divide [prod1 prod0] by the factors of two
assembly {
prod0 := div(prod0, twos)
}
// Shift in bits from prod1 into prod0. For this we need
// to flip `twos` such that it is 2**256 / twos.
// If twos is zero, then it becomes one
assembly {
twos := add(div(sub(0, twos), twos), 1)
}
prod0 |= prod1 * twos;
// Invert denominator mod 2**256
// Now that denominator is an odd number, it has an inverse
// modulo 2**256 such that denominator * inv = 1 mod 2**256.
// Compute the inverse by starting with a seed that is correct
// correct for four bits. That is, denominator * inv = 1 mod 2**4
uint256 inv = (3 * denominator) ^ 2;
// Now use Newton-Raphson iteration to improve the precision.
// Thanks to Hensel's lifting lemma, this also works in modular
// arithmetic, doubling the correct bits in each step.
inv *= 2 - denominator * inv; // inverse mod 2**8
inv *= 2 - denominator * inv; // inverse mod 2**16
inv *= 2 - denominator * inv; // inverse mod 2**32
inv *= 2 - denominator * inv; // inverse mod 2**64
inv *= 2 - denominator * inv; // inverse mod 2**128
inv *= 2 - denominator * inv; // inverse mod 2**256
// Because the division is now exact we can divide by multiplying
// with the modular inverse of denominator. This will give us the
// correct result modulo 2**256. Since the precoditions guarantee
// that the outcome is less than 2**256, this is the final result.
// We don't need to compute the high bits of the result and prod1
// is no longer required.
result = prod0 * inv;
return result;
}
}
/// @notice Calculates ceil(a×b÷denominator) with full precision. Throws if result overflows a uint256 or denominator == 0
/// @param a The multiplicand
/// @param b The multiplier
/// @param denominator The divisor
/// @return result The 256-bit result
function mulDivRoundingUp(
uint256 a,
uint256 b,
uint256 denominator
) internal pure returns (uint256 result) {
result = mulDiv(a, b, denominator);
if (mulmod(a, b, denominator) > 0) {
require(result < type(uint256).max);
result++;
}
}
}// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;
interface IERC20 {
event Approval(address indexed owner, address indexed spender, uint256 value);
event Transfer(address indexed from, address indexed to, uint256 value);
function allowance(address owner, address spender) external view returns (uint256);
function approve(address spender, uint256 value) external returns (bool);
function transfer(address to, uint256 value) external returns (bool);
function transferFrom(
address from,
address to,
uint256 value
) external returns (bool);
function totalSupply() external view returns (uint256);
function balanceOf(address owner) external view returns (uint256);
function name() external view returns (string memory);
function symbol() external view returns (string memory);
function decimals() external pure returns (uint8);
}{
"optimizer": {
"enabled": true,
"runs": 200
},
"outputSelection": {
"*": {
"*": [
"evm.bytecode",
"evm.deployedBytecode",
"devdoc",
"userdoc",
"metadata",
"abi"
]
}
},
"metadata": {
"useLiteralContent": true
},
"libraries": {}
}Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"inputs":[{"internalType":"address","name":"apeXToken_","type":"address"},{"internalType":"uint256","name":"redeemTime_","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":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"oldOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"NewOwner","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"oldPendingOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newPendingOwner","type":"address"}],"name":"NewPendingOwner","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":false,"internalType":"uint256","name":"burntAmount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"apeXAmount","type":"uint256"}],"name":"Redeem","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"oldRedeemTime","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"newRedeemTime","type":"uint256"}],"name":"RedeemTimeChanged","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":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"acceptOwner","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"minter","type":"address"}],"name":"addMinter","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"apeXToken","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"burn","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"burnFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"apeXAmount","type":"uint256"}],"name":"mint","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"minters","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pendingOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"redeem","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"redeemTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"minter","type":"address"}],"name":"removeMinter","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newPendingOwner","type":"address"}],"name":"setPendingOwner","outputs":[],"stateMutability":"nonpayable","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":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"redeemTime_","type":"uint256"}],"name":"updateRedeemTime","outputs":[],"stateMutability":"nonpayable","type":"function"}]Contract Creation Code
60a060405234801561001057600080fd5b5060405161151b38038061151b83398101604081905261002f91610079565b60008054336001600160a01b03199091168117825560609390931b6001600160601b031916608052600291909155908152600660205260409020805460ff191660011790556100b1565b6000806040838503121561008b578182fd5b82516001600160a01b03811681146100a1578283fd5b6020939093015192949293505050565b60805160601c6114306100eb600039600081816102d1015281816104d6015281816105910152818161088e015261093c01526114306000f3fe608060405234801561001057600080fd5b506004361061014d5760003560e01c80638da5cb5b116100c3578063c42069ec1161007c578063c42069ec14610319578063db006a751461032c578063dd62ed3e1461033f578063e30c39781461036a578063ebbc49651461037d578063f46eccc4146103855761014d565b80638da5cb5b1461026b57806395d89b4114610296578063983b2d56146102b95780639d67a4a3146102cc578063a83cd948146102f3578063a9059cbb146103065761014d565b80633092afd5116101155780633092afd5146101e3578063313ce567146101f857806340c10f191461021257806342966c681461022557806370a082311461023857806379cc6790146102585761014d565b806306fdde0314610152578063095ea7b31461018d57806318160ddd146101b057806323b872dd146101c75780632584c889146101da575b600080fd5b6101776040518060400160405280600681526020016542616e616e6160d01b81525081565b6040516101849190611307565b60405180910390f35b6101a061019b366004611272565b6103a8565b6040519015158152602001610184565b6101b960035481565b604051908152602001610184565b6101a06101d5366004611237565b6103be565b6101b960025481565b6101f66101f13660046111eb565b6103e1565b005b610200601281565b60405160ff9091168152602001610184565b6101b9610220366004611272565b610435565b6101a06102333660046112bb565b6105ca565b6101b96102463660046111eb565b60046020526000908152604090205481565b6101a0610266366004611272565b6105df565b60005461027e906001600160a01b031681565b6040516001600160a01b039091168152602001610184565b6101776040518060400160405280600481526020016342414e4160e01b81525081565b6101f66102c73660046111eb565b6105f6565b61027e7f000000000000000000000000000000000000000000000000000000000000000081565b6101f66103013660046112bb565b610644565b6101a0610314366004611272565b6106f7565b6101f66103273660046111eb565b610704565b6101b961033a3660046112bb565b6107df565b6101b961034d366004611205565b600560209081526000928352604080842090915290825290205481565b60015461027e906001600160a01b031681565b6101f66109a4565b6101a06103933660046111eb565b60066020526000908152604090205460ff1681565b60006103b5338484610a98565b50600192915050565b60006103cb843384610af9565b6103d6848484610b90565b5060015b9392505050565b6000546001600160a01b031633146104145760405162461bcd60e51b815260040161040b9061133a565b60405180910390fd5b6001600160a01b03166000908152600660205260409020805460ff19169055565b3360009081526006602052604081205460ff166104805760405162461bcd60e51b81526020600482015260096024820152683337b93134b23232b760b91b604482015260640161040b565b600082116104be5760405162461bcd60e51b815260206004820152600b60248201526a1e995c9bc8185b5bdd5b9d60aa1b604482015260640161040b565b6040516370a0823160e01b81523060048201526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906370a082319060240160206040518083038186803b15801561052057600080fd5b505afa158015610534573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061055891906112d3565b905060006003546000141561057a57610573846103e8611382565b905061058c565b60035461058990859084610ceb565b90505b6105b87f0000000000000000000000000000000000000000000000000000000000000000333087610d9a565b6105c28582610ed8565b949350505050565b60006105d63383610faf565b5060015b919050565b60006105ec833384610af9565b6103b58383610faf565b6000546001600160a01b031633146106205760405162461bcd60e51b815260040161040b9061133a565b6001600160a01b03166000908152600660205260409020805460ff19166001179055565b6000546001600160a01b0316331461066e5760405162461bcd60e51b815260040161040b9061133a565b4281116106b65760405162461bcd60e51b81526020600482015260166024820152756e656564206f7665722063757272656e742074696d6560501b604482015260640161040b565b60025460408051918252602082018390527f254bd895d833f8d606c5389abbdcd8e784b1558dd277cbaf03f1b5e18b82934b910160405180910390a1600255565b60006103b5338484610b90565b6000546001600160a01b0316331461072e5760405162461bcd60e51b815260040161040b9061133a565b6001546001600160a01b03828116911614156107835760405162461bcd60e51b815260206004820152601460248201527313dddb98589b194e881053149150511657d4d15560621b604482015260640161040b565b6001546040516001600160a01b038084169216907fb3d55174552271a4f1aaf36b72f50381e892171636b3fb5447fe00e995e7a37b90600090a3600180546001600160a01b0319166001600160a01b0392909216919091179055565b60006002544210156108225760405162461bcd60e51b815260206004820152600c60248201526b756e72656465656d61626c6560a01b604482015260640161040b565b336000908152600460205260409020548211156108765760405162461bcd60e51b81526020600482015260126024820152716e6f7420656e6f7567682062616c616e636560701b604482015260640161040b565b6040516370a0823160e01b81523060048201526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906370a082319060240160206040518083038186803b1580156108d857600080fd5b505afa1580156108ec573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061091091906112d3565b9050600061092b8260035486610ceb9092919063ffffffff16565b90506109373385610faf565b6109627f000000000000000000000000000000000000000000000000000000000000000033836110a3565b604080518581526020810183905233917fe5b754fb1abb7f01b499791d0b820ae3b6af3424ac1c59768edb53f4ec31a929910160405180910390a29392505050565b6001546001600160a01b031633146109fe5760405162461bcd60e51b815260206004820152601e60248201527f4f776e61626c653a20524551554952455f50454e44494e475f4f574e45520000604482015260640161040b565b60008054600180546001600160a01b038082166001600160a01b03198086168217808855931690935560405193811694929391169184917f70aea8d848e8a90fb7661b227dc522eb6395c3dac71b63cb59edd5c9899b23649190a36001546040516001600160a01b03918216918316907fb3d55174552271a4f1aaf36b72f50381e892171636b3fb5447fe00e995e7a37b90600090a35050565b6001600160a01b0383811660008181526005602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038084166000908152600560209081526040808320938616835292905220546000198114610b8a5781811015610b715760405162461bcd60e51b8152602060048201526016602482015275696e73756666696369656e7420616c6c6f77616e636560501b604482015260640161040b565b600054610b8a906001600160a01b031684848403610a98565b50505050565b6001600160a01b038216610be65760405162461bcd60e51b815260206004820152601f60248201527f63616e206e6f74207472616e66657220746f207a65726f206164647265737300604482015260640161040b565b6001600160a01b03831660009081526004602052604090205481811015610c4f5760405162461bcd60e51b815260206004820152601f60248201527f7472616e7366657220616d6f756e7420657863656564732062616c616e636500604482015260640161040b565b610c5982826113a1565b6001600160a01b038086166000908152600460205260408082209390935590851681522054610c8990839061136a565b6001600160a01b0380851660008181526004602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90610cdd9086815260200190565b60405180910390a350505050565b600080806000198587098587029250828110838203039150508060001415610d255760008411610d1a57600080fd5b5082900490506103da565b808411610d3157600080fd5b60008486880960026001871981018816978890046003810283188082028403028082028403028082028403028082028403028082028403029081029092039091026000889003889004909101858311909403939093029303949094049190911702949350505050565b604080516001600160a01b0385811660248301528481166044830152606480830185905283518084039091018152608490920183526020820180516001600160e01b03166323b872dd60e01b1790529151600092839290881691610dfe91906112eb565b6000604051808303816000865af19150503d8060008114610e3b576040519150601f19603f3d011682016040523d82523d6000602084013e610e40565b606091505b5091509150818015610e6a575080511580610e6a575080806020019051810190610e6a919061129b565b610ed05760405162461bcd60e51b815260206004820152603160248201527f5472616e7366657248656c7065723a3a7472616e7366657246726f6d3a207472604482015270185b9cd9995c919c9bdb4819985a5b1959607a1b606482015260840161040b565b505050505050565b6001600160a01b038216610f1d5760405162461bcd60e51b815260206004820152600c60248201526b7a65726f206164647265737360a01b604482015260640161040b565b80600354610f2b919061136a565b6003556001600160a01b038216600090815260046020526040902054610f5290829061136a565b6001600160a01b0383166000818152600460205260408082209390935591519091907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90610fa39085815260200190565b60405180910390a35050565b6001600160a01b0382166000908152600460205260409020548111156110175760405162461bcd60e51b815260206004820152601760248201527f62616c616e6365206f662066726f6d203c2076616c7565000000000000000000604482015260640161040b565b6001600160a01b03821660009081526004602052604090205461103b9082906113a1565b6001600160a01b0383166000908152600460205260409020556003546110629082906113a1565b6003556040518181526000906001600160a01b038416907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90602001610fa3565b604080516001600160a01b038481166024830152604480830185905283518084039091018152606490920183526020820180516001600160e01b031663a9059cbb60e01b17905291516000928392908716916110ff91906112eb565b6000604051808303816000865af19150503d806000811461113c576040519150601f19603f3d011682016040523d82523d6000602084013e611141565b606091505b509150915081801561116b57508051158061116b57508080602001905181019061116b919061129b565b6111cd5760405162461bcd60e51b815260206004820152602d60248201527f5472616e7366657248656c7065723a3a736166655472616e736665723a20747260448201526c185b9cd9995c8819985a5b1959609a1b606482015260840161040b565b5050505050565b80356001600160a01b03811681146105da57600080fd5b6000602082840312156111fc578081fd5b6103da826111d4565b60008060408385031215611217578081fd5b611220836111d4565b915061122e602084016111d4565b90509250929050565b60008060006060848603121561124b578081fd5b611254846111d4565b9250611262602085016111d4565b9150604084013590509250925092565b60008060408385031215611284578182fd5b61128d836111d4565b946020939093013593505050565b6000602082840312156112ac578081fd5b815180151581146103da578182fd5b6000602082840312156112cc578081fd5b5035919050565b6000602082840312156112e4578081fd5b5051919050565b600082516112fd8184602087016113b8565b9190910192915050565b60006020825282518060208401526113268160408501602087016113b8565b601f01601f19169190910160400192915050565b60208082526016908201527527bbb730b136329d102922a8aaa4a922afa7aba722a960511b604082015260600190565b6000821982111561137d5761137d6113e4565b500190565b600081600019048311821515161561139c5761139c6113e4565b500290565b6000828210156113b3576113b36113e4565b500390565b60005b838110156113d35781810151838201526020016113bb565b83811115610b8a5750506000910152565b634e487b7160e01b600052601160045260246000fdfea2646970667358221220a971167f1ea5c47b26e96f197c7494a1bcc21de8e8fb10c8048b1180a3f1cee964736f6c6343000802003300000000000000000000000052a8845df664d76c69d2eea607cd793565af42b800000000000000000000000000000000000000000000000000000000655f0680
Deployed Bytecode
0x608060405234801561001057600080fd5b506004361061014d5760003560e01c80638da5cb5b116100c3578063c42069ec1161007c578063c42069ec14610319578063db006a751461032c578063dd62ed3e1461033f578063e30c39781461036a578063ebbc49651461037d578063f46eccc4146103855761014d565b80638da5cb5b1461026b57806395d89b4114610296578063983b2d56146102b95780639d67a4a3146102cc578063a83cd948146102f3578063a9059cbb146103065761014d565b80633092afd5116101155780633092afd5146101e3578063313ce567146101f857806340c10f191461021257806342966c681461022557806370a082311461023857806379cc6790146102585761014d565b806306fdde0314610152578063095ea7b31461018d57806318160ddd146101b057806323b872dd146101c75780632584c889146101da575b600080fd5b6101776040518060400160405280600681526020016542616e616e6160d01b81525081565b6040516101849190611307565b60405180910390f35b6101a061019b366004611272565b6103a8565b6040519015158152602001610184565b6101b960035481565b604051908152602001610184565b6101a06101d5366004611237565b6103be565b6101b960025481565b6101f66101f13660046111eb565b6103e1565b005b610200601281565b60405160ff9091168152602001610184565b6101b9610220366004611272565b610435565b6101a06102333660046112bb565b6105ca565b6101b96102463660046111eb565b60046020526000908152604090205481565b6101a0610266366004611272565b6105df565b60005461027e906001600160a01b031681565b6040516001600160a01b039091168152602001610184565b6101776040518060400160405280600481526020016342414e4160e01b81525081565b6101f66102c73660046111eb565b6105f6565b61027e7f00000000000000000000000052a8845df664d76c69d2eea607cd793565af42b881565b6101f66103013660046112bb565b610644565b6101a0610314366004611272565b6106f7565b6101f66103273660046111eb565b610704565b6101b961033a3660046112bb565b6107df565b6101b961034d366004611205565b600560209081526000928352604080842090915290825290205481565b60015461027e906001600160a01b031681565b6101f66109a4565b6101a06103933660046111eb565b60066020526000908152604090205460ff1681565b60006103b5338484610a98565b50600192915050565b60006103cb843384610af9565b6103d6848484610b90565b5060015b9392505050565b6000546001600160a01b031633146104145760405162461bcd60e51b815260040161040b9061133a565b60405180910390fd5b6001600160a01b03166000908152600660205260409020805460ff19169055565b3360009081526006602052604081205460ff166104805760405162461bcd60e51b81526020600482015260096024820152683337b93134b23232b760b91b604482015260640161040b565b600082116104be5760405162461bcd60e51b815260206004820152600b60248201526a1e995c9bc8185b5bdd5b9d60aa1b604482015260640161040b565b6040516370a0823160e01b81523060048201526000907f00000000000000000000000052a8845df664d76c69d2eea607cd793565af42b86001600160a01b0316906370a082319060240160206040518083038186803b15801561052057600080fd5b505afa158015610534573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061055891906112d3565b905060006003546000141561057a57610573846103e8611382565b905061058c565b60035461058990859084610ceb565b90505b6105b87f00000000000000000000000052a8845df664d76c69d2eea607cd793565af42b8333087610d9a565b6105c28582610ed8565b949350505050565b60006105d63383610faf565b5060015b919050565b60006105ec833384610af9565b6103b58383610faf565b6000546001600160a01b031633146106205760405162461bcd60e51b815260040161040b9061133a565b6001600160a01b03166000908152600660205260409020805460ff19166001179055565b6000546001600160a01b0316331461066e5760405162461bcd60e51b815260040161040b9061133a565b4281116106b65760405162461bcd60e51b81526020600482015260166024820152756e656564206f7665722063757272656e742074696d6560501b604482015260640161040b565b60025460408051918252602082018390527f254bd895d833f8d606c5389abbdcd8e784b1558dd277cbaf03f1b5e18b82934b910160405180910390a1600255565b60006103b5338484610b90565b6000546001600160a01b0316331461072e5760405162461bcd60e51b815260040161040b9061133a565b6001546001600160a01b03828116911614156107835760405162461bcd60e51b815260206004820152601460248201527313dddb98589b194e881053149150511657d4d15560621b604482015260640161040b565b6001546040516001600160a01b038084169216907fb3d55174552271a4f1aaf36b72f50381e892171636b3fb5447fe00e995e7a37b90600090a3600180546001600160a01b0319166001600160a01b0392909216919091179055565b60006002544210156108225760405162461bcd60e51b815260206004820152600c60248201526b756e72656465656d61626c6560a01b604482015260640161040b565b336000908152600460205260409020548211156108765760405162461bcd60e51b81526020600482015260126024820152716e6f7420656e6f7567682062616c616e636560701b604482015260640161040b565b6040516370a0823160e01b81523060048201526000907f00000000000000000000000052a8845df664d76c69d2eea607cd793565af42b86001600160a01b0316906370a082319060240160206040518083038186803b1580156108d857600080fd5b505afa1580156108ec573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061091091906112d3565b9050600061092b8260035486610ceb9092919063ffffffff16565b90506109373385610faf565b6109627f00000000000000000000000052a8845df664d76c69d2eea607cd793565af42b833836110a3565b604080518581526020810183905233917fe5b754fb1abb7f01b499791d0b820ae3b6af3424ac1c59768edb53f4ec31a929910160405180910390a29392505050565b6001546001600160a01b031633146109fe5760405162461bcd60e51b815260206004820152601e60248201527f4f776e61626c653a20524551554952455f50454e44494e475f4f574e45520000604482015260640161040b565b60008054600180546001600160a01b038082166001600160a01b03198086168217808855931690935560405193811694929391169184917f70aea8d848e8a90fb7661b227dc522eb6395c3dac71b63cb59edd5c9899b23649190a36001546040516001600160a01b03918216918316907fb3d55174552271a4f1aaf36b72f50381e892171636b3fb5447fe00e995e7a37b90600090a35050565b6001600160a01b0383811660008181526005602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038084166000908152600560209081526040808320938616835292905220546000198114610b8a5781811015610b715760405162461bcd60e51b8152602060048201526016602482015275696e73756666696369656e7420616c6c6f77616e636560501b604482015260640161040b565b600054610b8a906001600160a01b031684848403610a98565b50505050565b6001600160a01b038216610be65760405162461bcd60e51b815260206004820152601f60248201527f63616e206e6f74207472616e66657220746f207a65726f206164647265737300604482015260640161040b565b6001600160a01b03831660009081526004602052604090205481811015610c4f5760405162461bcd60e51b815260206004820152601f60248201527f7472616e7366657220616d6f756e7420657863656564732062616c616e636500604482015260640161040b565b610c5982826113a1565b6001600160a01b038086166000908152600460205260408082209390935590851681522054610c8990839061136a565b6001600160a01b0380851660008181526004602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90610cdd9086815260200190565b60405180910390a350505050565b600080806000198587098587029250828110838203039150508060001415610d255760008411610d1a57600080fd5b5082900490506103da565b808411610d3157600080fd5b60008486880960026001871981018816978890046003810283188082028403028082028403028082028403028082028403028082028403029081029092039091026000889003889004909101858311909403939093029303949094049190911702949350505050565b604080516001600160a01b0385811660248301528481166044830152606480830185905283518084039091018152608490920183526020820180516001600160e01b03166323b872dd60e01b1790529151600092839290881691610dfe91906112eb565b6000604051808303816000865af19150503d8060008114610e3b576040519150601f19603f3d011682016040523d82523d6000602084013e610e40565b606091505b5091509150818015610e6a575080511580610e6a575080806020019051810190610e6a919061129b565b610ed05760405162461bcd60e51b815260206004820152603160248201527f5472616e7366657248656c7065723a3a7472616e7366657246726f6d3a207472604482015270185b9cd9995c919c9bdb4819985a5b1959607a1b606482015260840161040b565b505050505050565b6001600160a01b038216610f1d5760405162461bcd60e51b815260206004820152600c60248201526b7a65726f206164647265737360a01b604482015260640161040b565b80600354610f2b919061136a565b6003556001600160a01b038216600090815260046020526040902054610f5290829061136a565b6001600160a01b0383166000818152600460205260408082209390935591519091907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90610fa39085815260200190565b60405180910390a35050565b6001600160a01b0382166000908152600460205260409020548111156110175760405162461bcd60e51b815260206004820152601760248201527f62616c616e6365206f662066726f6d203c2076616c7565000000000000000000604482015260640161040b565b6001600160a01b03821660009081526004602052604090205461103b9082906113a1565b6001600160a01b0383166000908152600460205260409020556003546110629082906113a1565b6003556040518181526000906001600160a01b038416907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90602001610fa3565b604080516001600160a01b038481166024830152604480830185905283518084039091018152606490920183526020820180516001600160e01b031663a9059cbb60e01b17905291516000928392908716916110ff91906112eb565b6000604051808303816000865af19150503d806000811461113c576040519150601f19603f3d011682016040523d82523d6000602084013e611141565b606091505b509150915081801561116b57508051158061116b57508080602001905181019061116b919061129b565b6111cd5760405162461bcd60e51b815260206004820152602d60248201527f5472616e7366657248656c7065723a3a736166655472616e736665723a20747260448201526c185b9cd9995c8819985a5b1959609a1b606482015260840161040b565b5050505050565b80356001600160a01b03811681146105da57600080fd5b6000602082840312156111fc578081fd5b6103da826111d4565b60008060408385031215611217578081fd5b611220836111d4565b915061122e602084016111d4565b90509250929050565b60008060006060848603121561124b578081fd5b611254846111d4565b9250611262602085016111d4565b9150604084013590509250925092565b60008060408385031215611284578182fd5b61128d836111d4565b946020939093013593505050565b6000602082840312156112ac578081fd5b815180151581146103da578182fd5b6000602082840312156112cc578081fd5b5035919050565b6000602082840312156112e4578081fd5b5051919050565b600082516112fd8184602087016113b8565b9190910192915050565b60006020825282518060208401526113268160408501602087016113b8565b601f01601f19169190910160400192915050565b60208082526016908201527527bbb730b136329d102922a8aaa4a922afa7aba722a960511b604082015260600190565b6000821982111561137d5761137d6113e4565b500190565b600081600019048311821515161561139c5761139c6113e4565b500290565b6000828210156113b3576113b36113e4565b500390565b60005b838110156113d35781810151838201526020016113bb565b83811115610b8a5750506000910152565b634e487b7160e01b600052601160045260246000fdfea2646970667358221220a971167f1ea5c47b26e96f197c7494a1bcc21de8e8fb10c8048b1180a3f1cee964736f6c63430008020033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
00000000000000000000000052a8845df664d76c69d2eea607cd793565af42b800000000000000000000000000000000000000000000000000000000655f0680
-----Decoded View---------------
Arg [0] : apeXToken_ (address): 0x52A8845DF664D76C69d2EEa607CD793565aF42B8
Arg [1] : redeemTime_ (uint256): 1700726400
-----Encoded View---------------
2 Constructor Arguments found :
Arg [0] : 00000000000000000000000052a8845df664d76c69d2eea607cd793565af42b8
Arg [1] : 00000000000000000000000000000000000000000000000000000000655f0680
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.
Add Token to MetaMask (Web3)