Source Code
Latest 20 from a total of 20 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Withdraw Bxnk To... | 20976321 | 366 days ago | IN | 0 ETH | 0.00059388 | ||||
Buy Tokens | 20956560 | 369 days ago | IN | 0.004062 ETH | 0.00116608 | ||||
Buy Tokens | 20956086 | 369 days ago | IN | 0.004055 ETH | 0.00095581 | ||||
Buy Tokens | 20956011 | 369 days ago | IN | 0.004058 ETH | 0.0008668 | ||||
Buy Tokens | 20955959 | 369 days ago | IN | 0.004058 ETH | 0.00090318 | ||||
Buy Tokens | 20955953 | 369 days ago | IN | 0.012174 ETH | 0.0008326 | ||||
Buy Token With U... | 20953965 | 370 days ago | IN | 0 ETH | 0.00080789 | ||||
Buy Token With U... | 20953685 | 370 days ago | IN | 0 ETH | 0.00067446 | ||||
Buy Tokens | 20952391 | 370 days ago | IN | 0.020192 ETH | 0.00082828 | ||||
Buy Token With U... | 20950456 | 370 days ago | IN | 0 ETH | 0.00220284 | ||||
Buy Token With U... | 20943712 | 371 days ago | IN | 0 ETH | 0.00187087 | ||||
Buy Token With U... | 20942925 | 371 days ago | IN | 0 ETH | 0.00396855 | ||||
Buy Tokens | 20936892 | 372 days ago | IN | 0.004226 ETH | 0.00212568 | ||||
Buy Token With U... | 20936640 | 372 days ago | IN | 0 ETH | 0.00184804 | ||||
Buy Tokens | 20935829 | 372 days ago | IN | 0.004216 ETH | 0.00213324 | ||||
Buy Token With U... | 20926251 | 373 days ago | IN | 0 ETH | 0.000834 | ||||
Buy Tokens | 20925771 | 374 days ago | IN | 0.001228 ETH | 0.00078316 | ||||
Update Rate | 20921357 | 374 days ago | IN | 0 ETH | 0.00098459 | ||||
Buy Token With U... | 20876972 | 380 days ago | IN | 0 ETH | 0.00066651 | ||||
Buy Tokens | 20869239 | 381 days ago | IN | 0.00378 ETH | 0.00187294 |
Latest 10 internal transactions
Advanced mode:
Parent Transaction Hash | Method | Block |
From
|
To
|
|||
---|---|---|---|---|---|---|---|
Transfer | 20956560 | 369 days ago | 0.004062 ETH | ||||
Transfer | 20956086 | 369 days ago | 0.004055 ETH | ||||
Transfer | 20956011 | 369 days ago | 0.004058 ETH | ||||
Transfer | 20955959 | 369 days ago | 0.004058 ETH | ||||
Transfer | 20955953 | 369 days ago | 0.012174 ETH | ||||
Transfer | 20952391 | 370 days ago | 0.020192 ETH | ||||
Transfer | 20936892 | 372 days ago | 0.004226 ETH | ||||
Transfer | 20935829 | 372 days ago | 0.004216 ETH | ||||
Transfer | 20925771 | 374 days ago | 0.001228 ETH | ||||
Transfer | 20869239 | 381 days ago | 0.00378 ETH |
Cross-Chain Transactions
Loading...
Loading
Contract Source Code Verified (Exact Match)
Contract Name:
BxnkPreSale
Compiler Version
v0.8.24+commit.e11b9ed9
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2024-09-27 */ // File: @openzeppelin/contracts/token/ERC20/IERC20.sol // OpenZeppelin Contracts (last updated v5.0.0) (token/ERC20/IERC20.sol) pragma solidity ^0.8.20; /** * @dev Interface of the ERC20 standard as defined in the EIP. */ interface IERC20 { /** * @dev Emitted when `value` tokens are moved from one account (`from`) to * another (`to`). * * Note that `value` may be zero. */ event Transfer(address indexed from, address indexed to, uint256 value); /** * @dev Emitted when the allowance of a `spender` for an `owner` is set by * a call to {approve}. `value` is the new allowance. */ event Approval(address indexed owner, address indexed spender, uint256 value); /** * @dev Returns the value of tokens in existence. */ function totalSupply() external view returns (uint256); /** * @dev Returns the value of tokens owned by `account`. */ function balanceOf(address account) external view returns (uint256); /** * @dev Moves a `value` amount of tokens from the caller's account to `to`. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transfer(address to, uint256 value) 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 a `value` amount of tokens 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 value) external returns (bool); /** * @dev Moves a `value` amount of tokens from `from` to `to` using the * allowance mechanism. `value` is then deducted from the caller's * allowance. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transferFrom(address from, address to, uint256 value) external returns (bool); } // File: @openzeppelin/contracts/token/ERC20/extensions/IERC20Permit.sol // OpenZeppelin Contracts (last updated v5.0.0) (token/ERC20/extensions/IERC20Permit.sol) pragma solidity ^0.8.20; /** * @dev Interface of the ERC20 Permit extension allowing approvals to be made via signatures, as defined in * https://eips.ethereum.org/EIPS/eip-2612[EIP-2612]. * * Adds the {permit} method, which can be used to change an account's ERC20 allowance (see {IERC20-allowance}) by * presenting a message signed by the account. By not relying on {IERC20-approve}, the token holder account doesn't * need to send a transaction, and thus is not required to hold Ether at all. * * ==== Security Considerations * * There are two important considerations concerning the use of `permit`. The first is that a valid permit signature * expresses an allowance, and it should not be assumed to convey additional meaning. In particular, it should not be * considered as an intention to spend the allowance in any specific way. The second is that because permits have * built-in replay protection and can be submitted by anyone, they can be frontrun. A protocol that uses permits should * take this into consideration and allow a `permit` call to fail. Combining these two aspects, a pattern that may be * generally recommended is: * * ```solidity * function doThingWithPermit(..., uint256 value, uint256 deadline, uint8 v, bytes32 r, bytes32 s) public { * try token.permit(msg.sender, address(this), value, deadline, v, r, s) {} catch {} * doThing(..., value); * } * * function doThing(..., uint256 value) public { * token.safeTransferFrom(msg.sender, address(this), value); * ... * } * ``` * * Observe that: 1) `msg.sender` is used as the owner, leaving no ambiguity as to the signer intent, and 2) the use of * `try/catch` allows the permit to fail and makes the code tolerant to frontrunning. (See also * {SafeERC20-safeTransferFrom}). * * Additionally, note that smart contract wallets (such as Argent or Safe) are not able to produce permit signatures, so * contracts should have entry points that don't rely on permit. */ interface IERC20Permit { /** * @dev Sets `value` as the allowance of `spender` over ``owner``'s tokens, * given ``owner``'s signed approval. * * IMPORTANT: The same issues {IERC20-approve} has related to transaction * ordering also apply here. * * Emits an {Approval} event. * * Requirements: * * - `spender` cannot be the zero address. * - `deadline` must be a timestamp in the future. * - `v`, `r` and `s` must be a valid `secp256k1` signature from `owner` * over the EIP712-formatted function arguments. * - the signature must use ``owner``'s current nonce (see {nonces}). * * For more information on the signature format, see the * https://eips.ethereum.org/EIPS/eip-2612#specification[relevant EIP * section]. * * CAUTION: See Security Considerations above. */ function permit( address owner, address spender, uint256 value, uint256 deadline, uint8 v, bytes32 r, bytes32 s ) external; /** * @dev Returns the current nonce for `owner`. This value must be * included whenever a signature is generated for {permit}. * * Every successful call to {permit} increases ``owner``'s nonce by one. This * prevents a signature from being used multiple times. */ function nonces(address owner) external view returns (uint256); /** * @dev Returns the domain separator used in the encoding of the signature for {permit}, as defined by {EIP712}. */ // solhint-disable-next-line func-name-mixedcase function DOMAIN_SEPARATOR() external view returns (bytes32); } // File: @openzeppelin/contracts/utils/Address.sol // OpenZeppelin Contracts (last updated v5.0.0) (utils/Address.sol) pragma solidity ^0.8.20; /** * @dev Collection of functions related to the address type */ library Address { /** * @dev The ETH balance of the account is not enough to perform the operation. */ error AddressInsufficientBalance(address account); /** * @dev There's no code at `target` (it is not a contract). */ error AddressEmptyCode(address target); /** * @dev A call to an address target failed. The target may have reverted. */ error FailedInnerCall(); /** * @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://consensys.net/diligence/blog/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.8.20/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern]. */ function sendValue(address payable recipient, uint256 amount) internal { if (address(this).balance < amount) { revert AddressInsufficientBalance(address(this)); } (bool success, ) = recipient.call{value: amount}(""); if (!success) { revert FailedInnerCall(); } } /** * @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 or custom error, it is bubbled * up by this function (like regular Solidity function calls). However, if * the call reverted with no returned reason, this function reverts with a * {FailedInnerCall} error. * * 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. */ function functionCall(address target, bytes memory data) internal returns (bytes memory) { return functionCallWithValue(target, data, 0); } /** * @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`. */ function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) { if (address(this).balance < value) { revert AddressInsufficientBalance(address(this)); } (bool success, bytes memory returndata) = target.call{value: value}(data); return verifyCallResultFromTarget(target, success, returndata); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], * but performing a static call. */ function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) { (bool success, bytes memory returndata) = target.staticcall(data); return verifyCallResultFromTarget(target, success, returndata); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], * but performing a delegate call. */ function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) { (bool success, bytes memory returndata) = target.delegatecall(data); return verifyCallResultFromTarget(target, success, returndata); } /** * @dev Tool to verify that a low level call to smart-contract was successful, and reverts if the target * was not a contract or bubbling up the revert reason (falling back to {FailedInnerCall}) in case of an * unsuccessful call. */ function verifyCallResultFromTarget( address target, bool success, bytes memory returndata ) internal view returns (bytes memory) { if (!success) { _revert(returndata); } else { // only check if target is a contract if the call was successful and the return data is empty // otherwise we already know that it was a contract if (returndata.length == 0 && target.code.length == 0) { revert AddressEmptyCode(target); } return returndata; } } /** * @dev Tool to verify that a low level call was successful, and reverts if it wasn't, either by bubbling the * revert reason or with a default {FailedInnerCall} error. */ function verifyCallResult(bool success, bytes memory returndata) internal pure returns (bytes memory) { if (!success) { _revert(returndata); } else { return returndata; } } /** * @dev Reverts with returndata if present. Otherwise reverts with {FailedInnerCall}. */ function _revert(bytes memory returndata) private pure { // 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 /// @solidity memory-safe-assembly assembly { let returndata_size := mload(returndata) revert(add(32, returndata), returndata_size) } } else { revert FailedInnerCall(); } } } // File: @openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol // OpenZeppelin Contracts (last updated v5.0.0) (token/ERC20/utils/SafeERC20.sol) pragma solidity ^0.8.20; /** * @title SafeERC20 * @dev Wrappers around ERC20 operations that throw on failure (when the token * contract returns false). Tokens that return no value (and instead revert or * throw on failure) are also supported, non-reverting calls are assumed to be * successful. * To use this library you can add a `using SafeERC20 for IERC20;` statement to your contract, * which allows you to call the safe operations as `token.safeTransfer(...)`, etc. */ library SafeERC20 { using Address for address; /** * @dev An operation with an ERC20 token failed. */ error SafeERC20FailedOperation(address token); /** * @dev Indicates a failed `decreaseAllowance` request. */ error SafeERC20FailedDecreaseAllowance(address spender, uint256 currentAllowance, uint256 requestedDecrease); /** * @dev Transfer `value` amount of `token` from the calling contract to `to`. If `token` returns no value, * non-reverting calls are assumed to be successful. */ function safeTransfer(IERC20 token, address to, uint256 value) internal { _callOptionalReturn(token, abi.encodeCall(token.transfer, (to, value))); } /** * @dev Transfer `value` amount of `token` from `from` to `to`, spending the approval given by `from` to the * calling contract. If `token` returns no value, non-reverting calls are assumed to be successful. */ function safeTransferFrom(IERC20 token, address from, address to, uint256 value) internal { _callOptionalReturn(token, abi.encodeCall(token.transferFrom, (from, to, value))); } /** * @dev Increase the calling contract's allowance toward `spender` by `value`. If `token` returns no value, * non-reverting calls are assumed to be successful. */ function safeIncreaseAllowance(IERC20 token, address spender, uint256 value) internal { uint256 oldAllowance = token.allowance(address(this), spender); forceApprove(token, spender, oldAllowance + value); } /** * @dev Decrease the calling contract's allowance toward `spender` by `requestedDecrease`. If `token` returns no * value, non-reverting calls are assumed to be successful. */ function safeDecreaseAllowance(IERC20 token, address spender, uint256 requestedDecrease) internal { unchecked { uint256 currentAllowance = token.allowance(address(this), spender); if (currentAllowance < requestedDecrease) { revert SafeERC20FailedDecreaseAllowance(spender, currentAllowance, requestedDecrease); } forceApprove(token, spender, currentAllowance - requestedDecrease); } } /** * @dev Set the calling contract's allowance toward `spender` to `value`. If `token` returns no value, * non-reverting calls are assumed to be successful. Meant to be used with tokens that require the approval * to be set to zero before setting it to a non-zero value, such as USDT. */ function forceApprove(IERC20 token, address spender, uint256 value) internal { bytes memory approvalCall = abi.encodeCall(token.approve, (spender, value)); if (!_callOptionalReturnBool(token, approvalCall)) { _callOptionalReturn(token, abi.encodeCall(token.approve, (spender, 0))); _callOptionalReturn(token, approvalCall); } } /** * @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); if (returndata.length != 0 && !abi.decode(returndata, (bool))) { revert SafeERC20FailedOperation(address(token)); } } /** * @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). * * This is a variant of {_callOptionalReturn} that silents catches all reverts and returns a bool instead. */ function _callOptionalReturnBool(IERC20 token, bytes memory data) private returns (bool) { // 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 cannot use {Address-functionCall} here since this should return false // and not revert is the subcall reverts. (bool success, bytes memory returndata) = address(token).call(data); return success && (returndata.length == 0 || abi.decode(returndata, (bool))) && address(token).code.length > 0; } } // File: @openzeppelin/contracts/utils/Context.sol // OpenZeppelin Contracts (last updated v5.0.1) (utils/Context.sol) pragma solidity ^0.8.20; /** * @dev Provides information about the current execution context, including the * sender of the transaction and its data. While these are generally available * via msg.sender and msg.data, they should not be accessed in such a direct * manner, since when dealing with meta-transactions the account sending and * paying for execution may not be the actual sender (as far as an application * is concerned). * * This contract is only required for intermediate, library-like contracts. */ abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } function _msgData() internal view virtual returns (bytes calldata) { return msg.data; } function _contextSuffixLength() internal view virtual returns (uint256) { return 0; } } // File: @openzeppelin/contracts/access/Ownable.sol // OpenZeppelin Contracts (last updated v5.0.0) (access/Ownable.sol) pragma solidity ^0.8.20; /** * @dev Contract module which provides a basic access control mechanism, where * there is an account (an owner) that can be granted exclusive access to * specific functions. * * The initial owner is set to the address provided by the deployer. This can * later be changed with {transferOwnership}. * * This module is used through inheritance. It will make available the modifier * `onlyOwner`, which can be applied to your functions to restrict their use to * the owner. */ abstract contract Ownable is Context { address private _owner; /** * @dev The caller account is not authorized to perform an operation. */ error OwnableUnauthorizedAccount(address account); /** * @dev The owner is not a valid owner account. (eg. `address(0)`) */ error OwnableInvalidOwner(address owner); event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); /** * @dev Initializes the contract setting the address provided by the deployer as the initial owner. */ constructor(address initialOwner) { if (initialOwner == address(0)) { revert OwnableInvalidOwner(address(0)); } _transferOwnership(initialOwner); } /** * @dev Throws if called by any account other than the owner. */ modifier onlyOwner() { _checkOwner(); _; } /** * @dev Returns the address of the current owner. */ function owner() public view virtual returns (address) { return _owner; } /** * @dev Throws if the sender is not the owner. */ function _checkOwner() internal view virtual { if (owner() != _msgSender()) { revert OwnableUnauthorizedAccount(_msgSender()); } } /** * @dev Leaves the contract without owner. It will not be possible to call * `onlyOwner` functions. Can only be called by the current owner. * * NOTE: Renouncing ownership will leave the contract without an owner, * thereby disabling any functionality that is only available to the owner. */ function renounceOwnership() public virtual onlyOwner { _transferOwnership(address(0)); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). * Can only be called by the current owner. */ function transferOwnership(address newOwner) public virtual onlyOwner { if (newOwner == address(0)) { revert OwnableInvalidOwner(address(0)); } _transferOwnership(newOwner); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). * Internal function without access restriction. */ function _transferOwnership(address newOwner) internal virtual { address oldOwner = _owner; _owner = newOwner; emit OwnershipTransferred(oldOwner, newOwner); } } // File: @openzeppelin/contracts/access/Ownable2Step.sol // OpenZeppelin Contracts (last updated v5.0.0) (access/Ownable2Step.sol) pragma solidity ^0.8.20; /** * @dev Contract module which provides access control mechanism, where * there is an account (an owner) that can be granted exclusive access to * specific functions. * * The initial owner is specified at deployment time in the constructor for `Ownable`. This * can later be changed with {transferOwnership} and {acceptOwnership}. * * This module is used through inheritance. It will make available all functions * from parent (Ownable). */ abstract contract Ownable2Step is Ownable { address private _pendingOwner; event OwnershipTransferStarted(address indexed previousOwner, address indexed newOwner); /** * @dev Returns the address of the pending owner. */ function pendingOwner() public view virtual returns (address) { return _pendingOwner; } /** * @dev Starts the ownership transfer of the contract to a new account. Replaces the pending transfer if there is one. * Can only be called by the current owner. */ function transferOwnership(address newOwner) public virtual override onlyOwner { _pendingOwner = newOwner; emit OwnershipTransferStarted(owner(), newOwner); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`) and deletes any pending owner. * Internal function without access restriction. */ function _transferOwnership(address newOwner) internal virtual override { delete _pendingOwner; super._transferOwnership(newOwner); } /** * @dev The new owner accepts the ownership transfer. */ function acceptOwnership() public virtual { address sender = _msgSender(); if (pendingOwner() != sender) { revert OwnableUnauthorizedAccount(sender); } _transferOwnership(sender); } } // File: @openzeppelin/contracts/security/Pausable.sol // OpenZeppelin Contracts (last updated v4.7.0) (security/Pausable.sol) pragma solidity ^0.8.0; /** * @dev Contract module which allows children to implement an emergency stop * mechanism that can be triggered by an authorized account. * * This module is used through inheritance. It will make available the * modifiers `whenNotPaused` and `whenPaused`, which can be applied to * the functions of your contract. Note that they will not be pausable by * simply including this module, only once the modifiers are put in place. */ abstract contract Pausable is Context { /** * @dev Emitted when the pause is triggered by `account`. */ event Paused(address account); /** * @dev Emitted when the pause is lifted by `account`. */ event Unpaused(address account); bool private _paused; /** * @dev Initializes the contract in unpaused state. */ constructor() { _paused = false; } /** * @dev Modifier to make a function callable only when the contract is not paused. * * Requirements: * * - The contract must not be paused. */ modifier whenNotPaused() { _requireNotPaused(); _; } /** * @dev Modifier to make a function callable only when the contract is paused. * * Requirements: * * - The contract must be paused. */ modifier whenPaused() { _requirePaused(); _; } /** * @dev Returns true if the contract is paused, and false otherwise. */ function paused() public view virtual returns (bool) { return _paused; } /** * @dev Throws if the contract is paused. */ function _requireNotPaused() internal view virtual { require(!paused(), "Pausable: paused"); } /** * @dev Throws if the contract is not paused. */ function _requirePaused() internal view virtual { require(paused(), "Pausable: not paused"); } /** * @dev Triggers stopped state. * * Requirements: * * - The contract must not be paused. */ function _pause() internal virtual whenNotPaused { _paused = true; emit Paused(_msgSender()); } /** * @dev Returns to normal state. * * Requirements: * * - The contract must be paused. */ function _unpause() internal virtual whenPaused { _paused = false; emit Unpaused(_msgSender()); } } // File: @chainlink/contracts/src/v0.8/interfaces/AggregatorV3Interface.sol pragma solidity ^0.8.0; interface AggregatorV3Interface { function decimals() external view returns (uint8); function description() external view returns (string memory); function version() external view returns (uint256); function getRoundData( uint80 _roundId ) external view returns (uint80 roundId, int256 answer, uint256 startedAt, uint256 updatedAt, uint80 answeredInRound); function latestRoundData() external view returns (uint80 roundId, int256 answer, uint256 startedAt, uint256 updatedAt, uint80 answeredInRound); } // File: @openzeppelin/contracts/security/ReentrancyGuard.sol // OpenZeppelin Contracts (last updated v4.9.0) (security/ReentrancyGuard.sol) pragma solidity ^0.8.0; /** * @dev Contract module that helps prevent reentrant calls to a function. * * Inheriting from `ReentrancyGuard` will make the {nonReentrant} modifier * available, which can be applied to functions to make sure there are no nested * (reentrant) calls to them. * * Note that because there is a single `nonReentrant` guard, functions marked as * `nonReentrant` may not call one another. This can be worked around by making * those functions `private`, and then adding `external` `nonReentrant` entry * points to them. * * TIP: If you would like to learn more about reentrancy and alternative ways * to protect against it, check out our blog post * https://blog.openzeppelin.com/reentrancy-after-istanbul/[Reentrancy After Istanbul]. */ abstract contract ReentrancyGuard { // Booleans are more expensive than uint256 or any type that takes up a full // word because each write operation emits an extra SLOAD to first read the // slot's contents, replace the bits taken up by the boolean, and then write // back. This is the compiler's defense against contract upgrades and // pointer aliasing, and it cannot be disabled. // The values being non-zero value makes deployment a bit more expensive, // but in exchange the refund on every call to nonReentrant will be lower in // amount. Since refunds are capped to a percentage of the total // transaction's gas, it is best to keep them low in cases like this one, to // increase the likelihood of the full refund coming into effect. uint256 private constant _NOT_ENTERED = 1; uint256 private constant _ENTERED = 2; uint256 private _status; constructor() { _status = _NOT_ENTERED; } /** * @dev Prevents a contract from calling itself, directly or indirectly. * Calling a `nonReentrant` function from another `nonReentrant` * function is not supported. It is possible to prevent this from happening * by making the `nonReentrant` function external, and making it call a * `private` function that does the actual work. */ modifier nonReentrant() { _nonReentrantBefore(); _; _nonReentrantAfter(); } function _nonReentrantBefore() private { // On the first call to nonReentrant, _status will be _NOT_ENTERED require(_status != _ENTERED, "ReentrancyGuard: reentrant call"); // Any calls to nonReentrant after this point will fail _status = _ENTERED; } function _nonReentrantAfter() private { // By storing the original value once again, a refund is triggered (see // https://eips.ethereum.org/EIPS/eip-2200) _status = _NOT_ENTERED; } /** * @dev Returns true if the reentrancy guard is currently set to "entered", which indicates there is a * `nonReentrant` function in the call stack. */ function _reentrancyGuardEntered() internal view returns (bool) { return _status == _ENTERED; } } // File: contracts/bxnkPreSale.sol pragma solidity ^0.8.24; contract BxnkPreSale is Pausable, Ownable2Step, ReentrancyGuard { using SafeERC20 for IERC20; address private multiSigTreasuryWallet; IERC20 public bxnkToken; IERC20 public usdtToken; AggregatorV3Interface public priceFeed; uint256 public rate; uint256 public minPriceForETHInUSDT = 1000 * 1e8; uint256 public maxPriceForETHInUSDT = 10000 * 1e8; uint256 public lastPriceUpdate; uint256 public priceStalenessThreshold = 1 hours; uint256 private constant GRACE_PERIOD_TIME = 3600; uint96 private constant MAX_UINT96 = type(uint96).max; // Max limit for uint96 constructor(uint256 _initialRate, address _multiSigTreasuryWallet) Ownable(_multiSigTreasuryWallet) { bxnkToken = IERC20(0xFa3376B9f0C62b99e0cd5E0f388bfd501A2A0A0a); // BXNK Token Address usdtToken = IERC20(0xdAC17F958D2ee523a2206206994597C13D831ec7); //USDT Tether multiSigTreasuryWallet = _multiSigTreasuryWallet; // Treasury MultiSig Wallet Address priceFeed = AggregatorV3Interface( 0x5f4eC3Df9cbd43714FE2740f5E3616155c5b8419 ); // ETH/USDT Pair Price Feed Address rate = _initialRate; } function getLatestPrice() public view returns (uint256) { (, int256 price, , uint256 updatedAt, ) = priceFeed.latestRoundData(); require(price > 0, "Invalid price"); require( uint256(price) >= minPriceForETHInUSDT, "Price below minimum threshold" ); require( uint256(price) <= maxPriceForETHInUSDT, "Price above maximum threshold" ); require( block.timestamp - updatedAt <= priceStalenessThreshold, "Price data is stale" ); return uint256(price); } function updatePrice() external { (, int256 price, , uint256 updatedAt, ) = priceFeed.latestRoundData(); require(price > 0, "Invalid price"); require( block.timestamp - updatedAt <= priceStalenessThreshold, "Price data is stale" ); lastPriceUpdate = block.timestamp; } function buyTokens() external payable whenNotPaused nonReentrant { require(msg.value > 0, "Must send some ETH"); uint256 ETHPriceInUSDT = getLatestPrice(); // price in 8 decimal format require( ETHPriceInUSDT > minPriceForETHInUSDT, "Price is below acceptable threshold" ); // Calculate the equivalent amount of USDT uint256 ETHAmountInUSDT = ((ETHPriceInUSDT / 1e8) * msg.value) / 1e18; // Adjust to ETH decimal // Calculate the amount of BXNK tokens to send uint256 bxnkAmount = (ETHAmountInUSDT * rate); require(bxnkAmount > 0, "Invalid Purchase"); require( bxnkToken.balanceOf(address(this)) >= bxnkAmount, "Insufficent Tokens" ); bxnkToken.safeTransfer(msg.sender, bxnkAmount); (bool success, ) = payable(multiSigTreasuryWallet).call{ value: msg.value }(""); require(success, "Failed to transfer ETH"); } function buyTokenWithUsdt(uint256 usdtAmount) external whenNotPaused nonReentrant { if (usdtAmount > MAX_UINT96) { revert("Limit Exceeds"); } require(usdtAmount > 0, "Must send some USDT"); uint256 bxnkAmount = ((usdtAmount / 1e6) * rate); require(bxnkAmount > 0, "Invalid Amount"); require( bxnkToken.balanceOf(address(this)) >= bxnkAmount, "Insufficent Tokens" ); usdtToken.safeTransferFrom( msg.sender, multiSigTreasuryWallet, usdtAmount ); bxnkToken.safeTransfer(msg.sender, bxnkAmount); } function updateRate(uint256 newRate) external onlyOwner { rate = newRate; } function updateTreasuryWallet(address newTreasuryWallet) external onlyOwner { require(newTreasuryWallet != address(0), "Invalid address"); multiSigTreasuryWallet = newTreasuryWallet; } function updatePriceStalenessThreshold(uint256 _newThreshold) external onlyOwner { priceStalenessThreshold = _newThreshold; } function updateMinPrice(uint256 newMinPrice) external onlyOwner { minPriceForETHInUSDT = newMinPrice; } function updateMaxPrice(uint256 newMaxPrice) external onlyOwner { maxPriceForETHInUSDT = newMaxPrice; } function withdrawETH() external onlyOwner nonReentrant { (bool success, ) = payable(multiSigTreasuryWallet).call{ value: address(this).balance }(""); require(success, "Failed to withdraw ETH"); } function withdrawBxnkTokens(uint256 amount) external onlyOwner nonReentrant { require( bxnkToken.balanceOf(address(this)) >= amount, "Insufficent Tokens" ); bxnkToken.safeTransfer(multiSigTreasuryWallet, amount); } function contractBxnkBalance() public view returns (uint256) { return bxnkToken.balanceOf(address(this)); } receive() external payable {} }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"inputs":[{"internalType":"uint256","name":"_initialRate","type":"uint256"},{"internalType":"address","name":"_multiSigTreasuryWallet","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"address","name":"target","type":"address"}],"name":"AddressEmptyCode","type":"error"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"AddressInsufficientBalance","type":"error"},{"inputs":[],"name":"FailedInnerCall","type":"error"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"OwnableInvalidOwner","type":"error"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"OwnableUnauthorizedAccount","type":"error"},{"inputs":[{"internalType":"address","name":"token","type":"address"}],"name":"SafeERC20FailedOperation","type":"error"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferStarted","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"}],"name":"Paused","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"}],"name":"Unpaused","type":"event"},{"inputs":[],"name":"acceptOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"usdtAmount","type":"uint256"}],"name":"buyTokenWithUsdt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"buyTokens","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"bxnkToken","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"contractBxnkBalance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getLatestPrice","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lastPriceUpdate","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxPriceForETHInUSDT","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"minPriceForETHInUSDT","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"paused","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pendingOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"priceFeed","outputs":[{"internalType":"contract AggregatorV3Interface","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"priceStalenessThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"rate","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newMaxPrice","type":"uint256"}],"name":"updateMaxPrice","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newMinPrice","type":"uint256"}],"name":"updateMinPrice","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"updatePrice","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_newThreshold","type":"uint256"}],"name":"updatePriceStalenessThreshold","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newRate","type":"uint256"}],"name":"updateRate","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newTreasuryWallet","type":"address"}],"name":"updateTreasuryWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"usdtToken","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"withdrawBxnkTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"withdrawETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
608060405264174876e80060085564e8d4a51000600955610e10600b55348015610027575f80fd5b50604051620015ed380380620015ed8339810160408190526100489161018a565b5f805460ff19169055806001600160a01b03811661007f57604051631e4fbdf760e01b81525f600482015260240160405180910390fd5b61008881610116565b506001600255600480546001600160a01b031990811673fa3376b9f0c62b99e0cd5e0f388bfd501a2a0a0a1790915560058054821673dac17f958d2ee523a2206206994597c13d831ec7179055600380546001600160a01b03939093169282169290921790915560068054909116735f4ec3df9cbd43714fe2740f5e3616155c5b84191790556007556101c4565b600180546001600160a01b031916905561012f81610132565b50565b5f80546001600160a01b03838116610100818102610100600160a81b0319851617855560405193049190911692909183917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a35050565b5f806040838503121561019b575f80fd5b825160208401519092506001600160a01b03811681146101b9575f80fd5b809150509250929050565b61141b80620001d25f395ff3fe60806040526004361061017e575f3560e01c80638da5cb5b116100cd578063ce1e084d11610087578063e30c397811610062578063e30c3978146103e3578063ebb8802e14610400578063f2fde38b14610415578063fb6c210a14610434575f80fd5b8063ce1e084d146103a8578063d0febe4c146103c7578063e086e5ec146103cf575f80fd5b80638da5cb5b1461030c5780638e15f4731461032d5780639989808814610341578063a98ad46c14610355578063ab64b49b14610374578063bd11187014610393575f80fd5b8063673a7e2811610138578063715018a611610113578063715018a61461028e578063741bef1a146102a257806379ba5097146102d9578063809d458d146102ed575f80fd5b8063673a7e28146102465780636949faeb1461025a57806369ea17711461026f575f80fd5b80630539fcd1146101895780632c4e722e146101aa578063400a9047146101d257806341328794146101e7578063469619f2146102065780635c975abb14610225575f80fd5b3661018557005b5f80fd5b348015610194575f80fd5b506101a86101a3366004611253565b610453565b005b3480156101b5575f80fd5b506101bf60075481565b6040519081526020015b60405180910390f35b3480156101dd575f80fd5b506101bf60085481565b3480156101f2575f80fd5b506101a8610201366004611253565b610460565b348015610211575f80fd5b506101a8610220366004611253565b61046d565b348015610230575f80fd5b505f5460ff1660405190151581526020016101c9565b348015610251575f80fd5b506101a861047a565b348015610265575f80fd5b506101bf600a5481565b34801561027a575f80fd5b506101a8610289366004611253565b610594565b348015610299575f80fd5b506101a86105a1565b3480156102ad575f80fd5b506006546102c1906001600160a01b031681565b6040516001600160a01b0390911681526020016101c9565b3480156102e4575f80fd5b506101a86105b4565b3480156102f8575f80fd5b506101a861030736600461126a565b6105f8565b348015610317575f80fd5b505f5461010090046001600160a01b03166102c1565b348015610338575f80fd5b506101bf61066a565b34801561034c575f80fd5b506101bf610822565b348015610360575f80fd5b506005546102c1906001600160a01b031681565b34801561037f575f80fd5b506101a861038e366004611253565b610896565b34801561039e575f80fd5b506101bf600b5481565b3480156103b3575f80fd5b506101a86103c2366004611253565b610a63565b6101a8610b27565b3480156103da575f80fd5b506101a8610db0565b3480156103ee575f80fd5b506001546001600160a01b03166102c1565b34801561040b575f80fd5b506101bf60095481565b348015610420575f80fd5b506101a861042f36600461126a565b610e64565b34801561043f575f80fd5b506004546102c1906001600160a01b031681565b61045b610eda565b600855565b610468610eda565b600b55565b610475610eda565b600955565b5f8060065f9054906101000a90046001600160a01b03166001600160a01b031663feaf968c6040518163ffffffff1660e01b815260040160a060405180830381865afa1580156104cc573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906104f091906112ae565b509350509250505f821361053b5760405162461bcd60e51b815260206004820152600d60248201526c496e76616c696420707269636560981b60448201526064015b60405180910390fd5b600b54610548824261130e565b111561058c5760405162461bcd60e51b815260206004820152601360248201527250726963652064617461206973207374616c6560681b6044820152606401610532565b505042600a55565b61059c610eda565b600755565b6105a9610eda565b6105b25f610f0c565b565b60015433906001600160a01b031681146105ec5760405163118cdaa760e01b81526001600160a01b0382166004820152602401610532565b6105f581610f0c565b50565b610600610eda565b6001600160a01b0381166106485760405162461bcd60e51b815260206004820152600f60248201526e496e76616c6964206164647265737360881b6044820152606401610532565b600380546001600160a01b0319166001600160a01b0392909216919091179055565b5f805f60065f9054906101000a90046001600160a01b03166001600160a01b031663feaf968c6040518163ffffffff1660e01b815260040160a060405180830381865afa1580156106bd573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106e191906112ae565b509350509250505f82136107275760405162461bcd60e51b815260206004820152600d60248201526c496e76616c696420707269636560981b6044820152606401610532565b6008548210156107795760405162461bcd60e51b815260206004820152601d60248201527f50726963652062656c6f77206d696e696d756d207468726573686f6c640000006044820152606401610532565b6009548211156107cb5760405162461bcd60e51b815260206004820152601d60248201527f50726963652061626f7665206d6178696d756d207468726573686f6c640000006044820152606401610532565b600b546107d8824261130e565b111561081c5760405162461bcd60e51b815260206004820152601360248201527250726963652064617461206973207374616c6560681b6044820152606401610532565b50919050565b600480546040516370a0823160e01b815230928101929092525f916001600160a01b03909116906370a0823190602401602060405180830381865afa15801561086d573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108919190611321565b905090565b61089e610f25565b6108a6610f6a565b6bffffffffffffffffffffffff8111156108f25760405162461bcd60e51b815260206004820152600d60248201526c4c696d6974204578636565647360981b6044820152606401610532565b5f81116109375760405162461bcd60e51b8152602060048201526013602482015272135d5cdd081cd95b99081cdbdb59481554d115606a1b6044820152606401610532565b6007545f90610949620f424084611338565b6109539190611357565b90505f81116109955760405162461bcd60e51b815260206004820152600e60248201526d125b9d985b1a5908105b5bdd5b9d60921b6044820152606401610532565b600480546040516370a0823160e01b8152309281019290925282916001600160a01b03909116906370a0823190602401602060405180830381865afa1580156109e0573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a049190611321565b1015610a225760405162461bcd60e51b81526004016105329061136e565b600354600554610a41916001600160a01b039182169133911685610fc1565b600454610a58906001600160a01b0316338361102e565b506105f56001600255565b610a6b610eda565b610a73610f6a565b600480546040516370a0823160e01b8152309281019290925282916001600160a01b03909116906370a0823190602401602060405180830381865afa158015610abe573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610ae29190611321565b1015610b005760405162461bcd60e51b81526004016105329061136e565b600354600454610b1d916001600160a01b0391821691168361102e565b6105f56001600255565b610b2f610f25565b610b37610f6a565b5f3411610b7b5760405162461bcd60e51b815260206004820152601260248201527109aeae6e840e6cadcc840e6dedaca408aa8960731b6044820152606401610532565b5f610b8461066a565b90506008548111610be35760405162461bcd60e51b815260206004820152602360248201527f50726963652069732062656c6f772061636365707461626c65207468726573686044820152621bdb1960ea1b6064820152608401610532565b5f670de0b6b3a764000034610bfc6305f5e10085611338565b610c069190611357565b610c109190611338565b90505f60075482610c219190611357565b90505f8111610c655760405162461bcd60e51b815260206004820152601060248201526f496e76616c696420507572636861736560801b6044820152606401610532565b600480546040516370a0823160e01b8152309281019290925282916001600160a01b03909116906370a0823190602401602060405180830381865afa158015610cb0573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610cd49190611321565b1015610cf25760405162461bcd60e51b81526004016105329061136e565b600454610d09906001600160a01b0316338361102e565b6003546040515f916001600160a01b03169034908381818185875af1925050503d805f8114610d53576040519150601f19603f3d011682016040523d82523d5f602084013e610d58565b606091505b5050905080610da25760405162461bcd60e51b815260206004820152601660248201527508cc2d2d8cac840e8de40e8e4c2dce6cccae4408aa8960531b6044820152606401610532565b505050506105b26001600255565b610db8610eda565b610dc0610f6a565b6003546040515f916001600160a01b03169047908381818185875af1925050503d805f8114610e0a576040519150601f19603f3d011682016040523d82523d5f602084013e610e0f565b606091505b5050905080610e595760405162461bcd60e51b815260206004820152601660248201527508cc2d2d8cac840e8de40eed2e8d0c8e4c2ee408aa8960531b6044820152606401610532565b506105b26001600255565b610e6c610eda565b600180546001600160a01b0383166001600160a01b03199091168117909155610ea25f546001600160a01b036101009091041690565b6001600160a01b03167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270060405160405180910390a350565b5f546001600160a01b036101009091041633146105b25760405163118cdaa760e01b8152336004820152602401610532565b600180546001600160a01b03191690556105f581611064565b5f5460ff16156105b25760405162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b6044820152606401610532565b6002805403610fbb5760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610532565b60028055565b6040516001600160a01b0384811660248301528381166044830152606482018390526110289186918216906323b872dd906084015b604051602081830303815290604052915060e01b6020820180516001600160e01b0383818316178352505050506110bc565b50505050565b6040516001600160a01b0383811660248301526044820183905261105f91859182169063a9059cbb90606401610ff6565b505050565b5f80546001600160a01b03838116610100818102610100600160a81b0319851617855560405193049190911692909183917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a35050565b5f6110d06001600160a01b0384168361111d565b905080515f141580156110f45750808060200190518101906110f2919061139a565b155b1561105f57604051635274afe760e01b81526001600160a01b0384166004820152602401610532565b606061112a83835f611133565b90505b92915050565b6060814710156111585760405163cd78605960e01b8152306004820152602401610532565b5f80856001600160a01b0316848660405161117391906113b9565b5f6040518083038185875af1925050503d805f81146111ad576040519150601f19603f3d011682016040523d82523d5f602084013e6111b2565b606091505b50915091506111c28683836111ce565b925050505b9392505050565b6060826111e3576111de8261122a565b6111c7565b81511580156111fa57506001600160a01b0384163b155b1561122357604051639996b31560e01b81526001600160a01b0385166004820152602401610532565b50806111c7565b80511561123a5780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b5f60208284031215611263575f80fd5b5035919050565b5f6020828403121561127a575f80fd5b81356001600160a01b03811681146111c7575f80fd5b805169ffffffffffffffffffff811681146112a9575f80fd5b919050565b5f805f805f60a086880312156112c2575f80fd5b6112cb86611290565b94506020860151935060408601519250606086015191506112ee60808701611290565b90509295509295909350565b634e487b7160e01b5f52601160045260245ffd5b8181038181111561112d5761112d6112fa565b5f60208284031215611331575f80fd5b5051919050565b5f8261135257634e487b7160e01b5f52601260045260245ffd5b500490565b808202811582820484141761112d5761112d6112fa565b602080825260129082015271496e737566666963656e7420546f6b656e7360701b604082015260600190565b5f602082840312156113aa575f80fd5b815180151581146111c7575f80fd5b5f82515f5b818110156113d857602081860181015185830152016113be565b505f92019182525091905056fea2646970667358221220b8775dbbc7e60c09b409f4d8d1bcd09e166fe2b2a02b30bbde60b54e1e537d1764736f6c634300081800330000000000000000000000000000000000000000000000004563918244f4000000000000000000000000000011ce49940f6e0c73c43d14c067906f4c0b5a42a6
Deployed Bytecode
0x60806040526004361061017e575f3560e01c80638da5cb5b116100cd578063ce1e084d11610087578063e30c397811610062578063e30c3978146103e3578063ebb8802e14610400578063f2fde38b14610415578063fb6c210a14610434575f80fd5b8063ce1e084d146103a8578063d0febe4c146103c7578063e086e5ec146103cf575f80fd5b80638da5cb5b1461030c5780638e15f4731461032d5780639989808814610341578063a98ad46c14610355578063ab64b49b14610374578063bd11187014610393575f80fd5b8063673a7e2811610138578063715018a611610113578063715018a61461028e578063741bef1a146102a257806379ba5097146102d9578063809d458d146102ed575f80fd5b8063673a7e28146102465780636949faeb1461025a57806369ea17711461026f575f80fd5b80630539fcd1146101895780632c4e722e146101aa578063400a9047146101d257806341328794146101e7578063469619f2146102065780635c975abb14610225575f80fd5b3661018557005b5f80fd5b348015610194575f80fd5b506101a86101a3366004611253565b610453565b005b3480156101b5575f80fd5b506101bf60075481565b6040519081526020015b60405180910390f35b3480156101dd575f80fd5b506101bf60085481565b3480156101f2575f80fd5b506101a8610201366004611253565b610460565b348015610211575f80fd5b506101a8610220366004611253565b61046d565b348015610230575f80fd5b505f5460ff1660405190151581526020016101c9565b348015610251575f80fd5b506101a861047a565b348015610265575f80fd5b506101bf600a5481565b34801561027a575f80fd5b506101a8610289366004611253565b610594565b348015610299575f80fd5b506101a86105a1565b3480156102ad575f80fd5b506006546102c1906001600160a01b031681565b6040516001600160a01b0390911681526020016101c9565b3480156102e4575f80fd5b506101a86105b4565b3480156102f8575f80fd5b506101a861030736600461126a565b6105f8565b348015610317575f80fd5b505f5461010090046001600160a01b03166102c1565b348015610338575f80fd5b506101bf61066a565b34801561034c575f80fd5b506101bf610822565b348015610360575f80fd5b506005546102c1906001600160a01b031681565b34801561037f575f80fd5b506101a861038e366004611253565b610896565b34801561039e575f80fd5b506101bf600b5481565b3480156103b3575f80fd5b506101a86103c2366004611253565b610a63565b6101a8610b27565b3480156103da575f80fd5b506101a8610db0565b3480156103ee575f80fd5b506001546001600160a01b03166102c1565b34801561040b575f80fd5b506101bf60095481565b348015610420575f80fd5b506101a861042f36600461126a565b610e64565b34801561043f575f80fd5b506004546102c1906001600160a01b031681565b61045b610eda565b600855565b610468610eda565b600b55565b610475610eda565b600955565b5f8060065f9054906101000a90046001600160a01b03166001600160a01b031663feaf968c6040518163ffffffff1660e01b815260040160a060405180830381865afa1580156104cc573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906104f091906112ae565b509350509250505f821361053b5760405162461bcd60e51b815260206004820152600d60248201526c496e76616c696420707269636560981b60448201526064015b60405180910390fd5b600b54610548824261130e565b111561058c5760405162461bcd60e51b815260206004820152601360248201527250726963652064617461206973207374616c6560681b6044820152606401610532565b505042600a55565b61059c610eda565b600755565b6105a9610eda565b6105b25f610f0c565b565b60015433906001600160a01b031681146105ec5760405163118cdaa760e01b81526001600160a01b0382166004820152602401610532565b6105f581610f0c565b50565b610600610eda565b6001600160a01b0381166106485760405162461bcd60e51b815260206004820152600f60248201526e496e76616c6964206164647265737360881b6044820152606401610532565b600380546001600160a01b0319166001600160a01b0392909216919091179055565b5f805f60065f9054906101000a90046001600160a01b03166001600160a01b031663feaf968c6040518163ffffffff1660e01b815260040160a060405180830381865afa1580156106bd573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106e191906112ae565b509350509250505f82136107275760405162461bcd60e51b815260206004820152600d60248201526c496e76616c696420707269636560981b6044820152606401610532565b6008548210156107795760405162461bcd60e51b815260206004820152601d60248201527f50726963652062656c6f77206d696e696d756d207468726573686f6c640000006044820152606401610532565b6009548211156107cb5760405162461bcd60e51b815260206004820152601d60248201527f50726963652061626f7665206d6178696d756d207468726573686f6c640000006044820152606401610532565b600b546107d8824261130e565b111561081c5760405162461bcd60e51b815260206004820152601360248201527250726963652064617461206973207374616c6560681b6044820152606401610532565b50919050565b600480546040516370a0823160e01b815230928101929092525f916001600160a01b03909116906370a0823190602401602060405180830381865afa15801561086d573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108919190611321565b905090565b61089e610f25565b6108a6610f6a565b6bffffffffffffffffffffffff8111156108f25760405162461bcd60e51b815260206004820152600d60248201526c4c696d6974204578636565647360981b6044820152606401610532565b5f81116109375760405162461bcd60e51b8152602060048201526013602482015272135d5cdd081cd95b99081cdbdb59481554d115606a1b6044820152606401610532565b6007545f90610949620f424084611338565b6109539190611357565b90505f81116109955760405162461bcd60e51b815260206004820152600e60248201526d125b9d985b1a5908105b5bdd5b9d60921b6044820152606401610532565b600480546040516370a0823160e01b8152309281019290925282916001600160a01b03909116906370a0823190602401602060405180830381865afa1580156109e0573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a049190611321565b1015610a225760405162461bcd60e51b81526004016105329061136e565b600354600554610a41916001600160a01b039182169133911685610fc1565b600454610a58906001600160a01b0316338361102e565b506105f56001600255565b610a6b610eda565b610a73610f6a565b600480546040516370a0823160e01b8152309281019290925282916001600160a01b03909116906370a0823190602401602060405180830381865afa158015610abe573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610ae29190611321565b1015610b005760405162461bcd60e51b81526004016105329061136e565b600354600454610b1d916001600160a01b0391821691168361102e565b6105f56001600255565b610b2f610f25565b610b37610f6a565b5f3411610b7b5760405162461bcd60e51b815260206004820152601260248201527109aeae6e840e6cadcc840e6dedaca408aa8960731b6044820152606401610532565b5f610b8461066a565b90506008548111610be35760405162461bcd60e51b815260206004820152602360248201527f50726963652069732062656c6f772061636365707461626c65207468726573686044820152621bdb1960ea1b6064820152608401610532565b5f670de0b6b3a764000034610bfc6305f5e10085611338565b610c069190611357565b610c109190611338565b90505f60075482610c219190611357565b90505f8111610c655760405162461bcd60e51b815260206004820152601060248201526f496e76616c696420507572636861736560801b6044820152606401610532565b600480546040516370a0823160e01b8152309281019290925282916001600160a01b03909116906370a0823190602401602060405180830381865afa158015610cb0573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610cd49190611321565b1015610cf25760405162461bcd60e51b81526004016105329061136e565b600454610d09906001600160a01b0316338361102e565b6003546040515f916001600160a01b03169034908381818185875af1925050503d805f8114610d53576040519150601f19603f3d011682016040523d82523d5f602084013e610d58565b606091505b5050905080610da25760405162461bcd60e51b815260206004820152601660248201527508cc2d2d8cac840e8de40e8e4c2dce6cccae4408aa8960531b6044820152606401610532565b505050506105b26001600255565b610db8610eda565b610dc0610f6a565b6003546040515f916001600160a01b03169047908381818185875af1925050503d805f8114610e0a576040519150601f19603f3d011682016040523d82523d5f602084013e610e0f565b606091505b5050905080610e595760405162461bcd60e51b815260206004820152601660248201527508cc2d2d8cac840e8de40eed2e8d0c8e4c2ee408aa8960531b6044820152606401610532565b506105b26001600255565b610e6c610eda565b600180546001600160a01b0383166001600160a01b03199091168117909155610ea25f546001600160a01b036101009091041690565b6001600160a01b03167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270060405160405180910390a350565b5f546001600160a01b036101009091041633146105b25760405163118cdaa760e01b8152336004820152602401610532565b600180546001600160a01b03191690556105f581611064565b5f5460ff16156105b25760405162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b6044820152606401610532565b6002805403610fbb5760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610532565b60028055565b6040516001600160a01b0384811660248301528381166044830152606482018390526110289186918216906323b872dd906084015b604051602081830303815290604052915060e01b6020820180516001600160e01b0383818316178352505050506110bc565b50505050565b6040516001600160a01b0383811660248301526044820183905261105f91859182169063a9059cbb90606401610ff6565b505050565b5f80546001600160a01b03838116610100818102610100600160a81b0319851617855560405193049190911692909183917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a35050565b5f6110d06001600160a01b0384168361111d565b905080515f141580156110f45750808060200190518101906110f2919061139a565b155b1561105f57604051635274afe760e01b81526001600160a01b0384166004820152602401610532565b606061112a83835f611133565b90505b92915050565b6060814710156111585760405163cd78605960e01b8152306004820152602401610532565b5f80856001600160a01b0316848660405161117391906113b9565b5f6040518083038185875af1925050503d805f81146111ad576040519150601f19603f3d011682016040523d82523d5f602084013e6111b2565b606091505b50915091506111c28683836111ce565b925050505b9392505050565b6060826111e3576111de8261122a565b6111c7565b81511580156111fa57506001600160a01b0384163b155b1561122357604051639996b31560e01b81526001600160a01b0385166004820152602401610532565b50806111c7565b80511561123a5780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b5f60208284031215611263575f80fd5b5035919050565b5f6020828403121561127a575f80fd5b81356001600160a01b03811681146111c7575f80fd5b805169ffffffffffffffffffff811681146112a9575f80fd5b919050565b5f805f805f60a086880312156112c2575f80fd5b6112cb86611290565b94506020860151935060408601519250606086015191506112ee60808701611290565b90509295509295909350565b634e487b7160e01b5f52601160045260245ffd5b8181038181111561112d5761112d6112fa565b5f60208284031215611331575f80fd5b5051919050565b5f8261135257634e487b7160e01b5f52601260045260245ffd5b500490565b808202811582820484141761112d5761112d6112fa565b602080825260129082015271496e737566666963656e7420546f6b656e7360701b604082015260600190565b5f602082840312156113aa575f80fd5b815180151581146111c7575f80fd5b5f82515f5b818110156113d857602081860181015185830152016113be565b505f92019182525091905056fea2646970667358221220b8775dbbc7e60c09b409f4d8d1bcd09e166fe2b2a02b30bbde60b54e1e537d1764736f6c63430008180033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
0000000000000000000000000000000000000000000000004563918244f4000000000000000000000000000011ce49940f6e0c73c43d14c067906f4c0b5a42a6
-----Decoded View---------------
Arg [0] : _initialRate (uint256): 5000000000000000000
Arg [1] : _multiSigTreasuryWallet (address): 0x11cE49940F6e0c73C43d14C067906f4c0B5A42A6
-----Encoded View---------------
2 Constructor Arguments found :
Arg [0] : 0000000000000000000000000000000000000000000000004563918244f40000
Arg [1] : 00000000000000000000000011ce49940f6e0c73c43d14c067906f4c0b5a42a6
Deployed Bytecode Sourcemap
31927:5392:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;36348:117;;;;;;;;;;-1:-1:-1;36348:117:0;;;;;:::i;:::-;;:::i;:::-;;32185:19;;;;;;;;;;;;;;;;;;;345:25:1;;;333:2;318:18;32185:19:0;;;;;;;;32211:48;;;;;;;;;;;;;;;;36178:162;;;;;;;;;;-1:-1:-1;36178:162:0;;;;;:::i;:::-;;:::i;36473:117::-;;;;;;;;;;-1:-1:-1;36473:117:0;;;;;:::i;:::-;;:::i;26964:86::-;;;;;;;;;;-1:-1:-1;27011:4:0;27035:7;;;26964:86;;546:14:1;;539:22;521:41;;509:2;494:18;26964:86:0;381:187:1;33761:344:0;;;;;;;;;;;;;:::i;32322:30::-;;;;;;;;;;;;;;;;35843:89;;;;;;;;;;-1:-1:-1;35843:89:0;;;;;:::i;:::-;;:::i;22412:103::-;;;;;;;;;;;;;:::i;32138:38::-;;;;;;;;;;-1:-1:-1;32138:38:0;;;;-1:-1:-1;;;;;32138:38:0;;;;;;-1:-1:-1;;;;;767:32:1;;;749:51;;737:2;722:18;32138:38:0;573:233:1;25049:235:0;;;;;;;;;;;;;:::i;35940:230::-;;;;;;;;;;-1:-1:-1;35940:230:0;;;;;:::i;:::-;;:::i;21737:87::-;;;;;;;;;;-1:-1:-1;21783:7:0;21810:6;;;;-1:-1:-1;;;;;21810:6:0;21737:87;;33141:612;;;;;;;;;;;;;:::i;37158:121::-;;;;;;;;;;;;;:::i;32108:23::-;;;;;;;;;;-1:-1:-1;32108:23:0;;;;-1:-1:-1;;;;;32108:23:0;;;35137:698;;;;;;;;;;-1:-1:-1;35137:698:0;;;;;:::i;:::-;;:::i;32359:48::-;;;;;;;;;;;;;;;;36846:304;;;;;;;;;;-1:-1:-1;36846:304:0;;;;;:::i;:::-;;:::i;34113:1016::-;;;:::i;36598:240::-;;;;;;;;;;;;;:::i;24137:101::-;;;;;;;;;;-1:-1:-1;24217:13:0;;-1:-1:-1;;;;;24217:13:0;24137:101;;32266:49;;;;;;;;;;;;;;;;24437:181;;;;;;;;;;-1:-1:-1;24437:181:0;;;;;:::i;:::-;;:::i;32078:23::-;;;;;;;;;;-1:-1:-1;32078:23:0;;;;-1:-1:-1;;;;;32078:23:0;;;36348:117;21623:13;:11;:13::i;:::-;36423:20:::1;:34:::0;36348:117::o;36178:162::-;21623:13;:11;:13::i;:::-;36293:23:::1;:39:::0;36178:162::o;36473:117::-;21623:13;:11;:13::i;:::-;36548:20:::1;:34:::0;36473:117::o;33761:344::-;33807:12;33823:17;33846:9;;;;;;;;;-1:-1:-1;;;;;33846:9:0;-1:-1:-1;;;;;33846:25:0;;:27;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;33804:69;;;;;;;33900:1;33892:5;:9;33884:35;;;;-1:-1:-1;;;33884:35:0;;2395:2:1;33884:35:0;;;2377:21:1;2434:2;2414:18;;;2407:30;-1:-1:-1;;;2453:18:1;;;2446:43;2506:18;;33884:35:0;;;;;;;;;33983:23;;33952:27;33970:9;33952:15;:27;:::i;:::-;:54;;33930:123;;;;-1:-1:-1;;;33930:123:0;;3002:2:1;33930:123:0;;;2984:21:1;3041:2;3021:18;;;3014:30;-1:-1:-1;;;3060:18:1;;;3053:49;3119:18;;33930:123:0;2800:343:1;33930:123:0;-1:-1:-1;;34082:15:0;34064;:33;33761:344::o;35843:89::-;21623:13;:11;:13::i;:::-;35910:4:::1;:14:::0;35843:89::o;22412:103::-;21623:13;:11;:13::i;:::-;22477:30:::1;22504:1;22477:18;:30::i;:::-;22412:103::o:0;25049:235::-;24217:13;;19826:10;;-1:-1:-1;;;;;24217:13:0;25146:24;;25142:98;;25194:34;;-1:-1:-1;;;25194:34:0;;-1:-1:-1;;;;;767:32:1;;25194:34:0;;;749:51:1;722:18;;25194:34:0;573:233:1;25142:98:0;25250:26;25269:6;25250:18;:26::i;:::-;25091:193;25049:235::o;35940:230::-;21623:13;:11;:13::i;:::-;-1:-1:-1;;;;;36058:31:0;::::1;36050:59;;;::::0;-1:-1:-1;;;36050:59:0;;3350:2:1;36050:59:0::1;::::0;::::1;3332:21:1::0;3389:2;3369:18;;;3362:30;-1:-1:-1;;;3408:18:1;;;3401:45;3463:18;;36050:59:0::1;3148:339:1::0;36050:59:0::1;36120:22;:42:::0;;-1:-1:-1;;;;;;36120:42:0::1;-1:-1:-1::0;;;;;36120:42:0;;;::::1;::::0;;;::::1;::::0;;35940:230::o;33141:612::-;33188:7;33211:12;33227:17;33250:9;;;;;;;;;-1:-1:-1;;;;;33250:9:0;-1:-1:-1;;;;;33250:25:0;;:27;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;33208:69;;;;;;;33304:1;33296:5;:9;33288:35;;;;-1:-1:-1;;;33288:35:0;;2395:2:1;33288:35:0;;;2377:21:1;2434:2;2414:18;;;2407:30;-1:-1:-1;;;2453:18:1;;;2446:43;2506:18;;33288:35:0;2193:337:1;33288:35:0;33374:20;;33364:5;33356:38;;33334:117;;;;-1:-1:-1;;;33334:117:0;;3694:2:1;33334:117:0;;;3676:21:1;3733:2;3713:18;;;3706:30;3772:31;3752:18;;;3745:59;3821:18;;33334:117:0;3492:353:1;33334:117:0;33502:20;;33492:5;33484:38;;33462:117;;;;-1:-1:-1;;;33462:117:0;;4052:2:1;33462:117:0;;;4034:21:1;4091:2;4071:18;;;4064:30;4130:31;4110:18;;;4103:59;4179:18;;33462:117:0;3850:353:1;33462:117:0;33643:23;;33612:27;33630:9;33612:15;:27;:::i;:::-;:54;;33590:123;;;;-1:-1:-1;;;33590:123:0;;3002:2:1;33590:123:0;;;2984:21:1;3041:2;3021:18;;;3014:30;-1:-1:-1;;;3060:18:1;;;3053:49;3119:18;;33590:123:0;2800:343:1;33590:123:0;-1:-1:-1;33739:5:0;33141:612;-1:-1:-1;33141:612:0:o;37158:121::-;37237:9;;;:34;;-1:-1:-1;;;37237:34:0;;37265:4;37237:34;;;749:51:1;;;;37210:7:0;;-1:-1:-1;;;;;37237:9:0;;;;:19;;722:18:1;;37237:34:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;37230:41;;37158:121;:::o;35137:698::-;26569:19;:17;:19::i;:::-;30952:21:::1;:19;:21::i;:::-;32507:16:::2;35266:23:::0;::::2;35262:79;;;35306:23;::::0;-1:-1:-1;;;35306:23:0;;4599:2:1;35306:23:0::2;::::0;::::2;4581:21:1::0;4638:2;4618:18;;;4611:30;-1:-1:-1;;;4657:18:1;;;4650:43;4710:18;;35306:23:0::2;4397:337:1::0;35262:79:0::2;35372:1;35359:10;:14;35351:46;;;::::0;-1:-1:-1;;;35351:46:0;;4941:2:1;35351:46:0::2;::::0;::::2;4923:21:1::0;4980:2;4960:18;;;4953:30;-1:-1:-1;;;4999:18:1;;;4992:49;5058:18;;35351:46:0::2;4739:343:1::0;35351:46:0::2;35451:4;::::0;35408:18:::2;::::0;35431:16:::2;35444:3;35431:10:::0;:16:::2;:::i;:::-;35430:25;;;;:::i;:::-;35408:48;;35488:1;35475:10;:14;35467:41;;;::::0;-1:-1:-1;;;35467:41:0;;5684:2:1;35467:41:0::2;::::0;::::2;5666:21:1::0;5723:2;5703:18;;;5696:30;-1:-1:-1;;;5742:18:1;;;5735:44;5796:18;;35467:41:0::2;5482:338:1::0;35467:41:0::2;35541:9;::::0;;:34:::2;::::0;-1:-1:-1;;;35541:34:0;;35569:4:::2;35541:34:::0;;::::2;749:51:1::0;;;;35579:10:0;;-1:-1:-1;;;;;35541:9:0;;::::2;::::0;:19:::2;::::0;722:18:1;;35541:34:0::2;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:48;;35519:116;;;;-1:-1:-1::0;;;35519:116:0::2;;;;;;;:::i;:::-;35712:22;::::0;35646:9:::2;::::0;:124:::2;::::0;-1:-1:-1;;;;;35646:9:0;;::::2;::::0;35687:10:::2;::::0;35712:22:::2;35749:10:::0;35646:26:::2;:124::i;:::-;35781:9;::::0;:46:::2;::::0;-1:-1:-1;;;;;35781:9:0::2;35804:10;35816::::0;35781:22:::2;:46::i;:::-;35251:584;30996:20:::1;30390:1:::0;31516:7;:22;31333:213;36846:304;21623:13;:11;:13::i;:::-;30952:21:::1;:19;:21::i;:::-;36987:9:::2;::::0;;:34:::2;::::0;-1:-1:-1;;;36987:34:0;;37015:4:::2;36987:34:::0;;::::2;749:51:1::0;;;;37025:6:0;;-1:-1:-1;;;;;36987:9:0;;::::2;::::0;:19:::2;::::0;722:18:1;;36987:34:0::2;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:44;;36965:112;;;;-1:-1:-1::0;;;36965:112:0::2;;;;;;;:::i;:::-;37111:22;::::0;37088:9:::2;::::0;:54:::2;::::0;-1:-1:-1;;;;;37088:9:0;;::::2;::::0;37111:22:::2;37135:6:::0;37088:22:::2;:54::i;:::-;30996:20:::1;30390:1:::0;31516:7;:22;31333:213;34113:1016;26569:19;:17;:19::i;:::-;30952:21:::1;:19;:21::i;:::-;34209:1:::2;34197:9;:13;34189:44;;;::::0;-1:-1:-1;;;34189:44:0;;6374:2:1;34189:44:0::2;::::0;::::2;6356:21:1::0;6413:2;6393:18;;;6386:30;-1:-1:-1;;;6432:18:1;;;6425:48;6490:18;;34189:44:0::2;6172:342:1::0;34189:44:0::2;34244:22;34269:16;:14;:16::i;:::-;34244:41;;34364:20;;34347:14;:37;34325:122;;;::::0;-1:-1:-1;;;34325:122:0;;6721:2:1;34325:122:0::2;::::0;::::2;6703:21:1::0;6760:2;6740:18;;;6733:30;6799:34;6779:18;;;6772:62;-1:-1:-1;;;6850:18:1;;;6843:33;6893:19;;34325:122:0::2;6519:399:1::0;34325:122:0::2;34510:23;34575:4;34562:9;34538:20;34555:3;34538:14:::0;:20:::2;:::i;:::-;34537:34;;;;:::i;:::-;34536:43;;;;:::i;:::-;34510:69;;34671:18;34711:4;;34693:15;:22;;;;:::i;:::-;34671:45;;34748:1;34735:10;:14;34727:43;;;::::0;-1:-1:-1;;;34727:43:0;;7125:2:1;34727:43:0::2;::::0;::::2;7107:21:1::0;7164:2;7144:18;;;7137:30;-1:-1:-1;;;7183:18:1;;;7176:46;7239:18;;34727:43:0::2;6923:340:1::0;34727:43:0::2;34803:9;::::0;;:34:::2;::::0;-1:-1:-1;;;34803:34:0;;34831:4:::2;34803:34:::0;;::::2;749:51:1::0;;;;34841:10:0;;-1:-1:-1;;;;;34803:9:0;;::::2;::::0;:19:::2;::::0;722:18:1;;34803:34:0::2;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:48;;34781:116;;;;-1:-1:-1::0;;;34781:116:0::2;;;;;;;:::i;:::-;34910:9;::::0;:46:::2;::::0;-1:-1:-1;;;;;34910:9:0::2;34933:10;34945::::0;34910:22:::2;:46::i;:::-;34994:22;::::0;34986:82:::2;::::0;34968:12:::2;::::0;-1:-1:-1;;;;;34994:22:0::2;::::0;35044:9:::2;::::0;34968:12;34986:82;34968:12;34986:82;35044:9;34994:22;34986:82:::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;34967:101;;;35087:7;35079:42;;;::::0;-1:-1:-1;;;35079:42:0;;7680:2:1;35079:42:0::2;::::0;::::2;7662:21:1::0;7719:2;7699:18;;;7692:30;-1:-1:-1;;;7738:18:1;;;7731:52;7800:18;;35079:42:0::2;7478:346:1::0;35079:42:0::2;34178:951;;;;30996:20:::1;30390:1:::0;31516:7;:22;31333:213;36598:240;21623:13;:11;:13::i;:::-;30952:21:::1;:19;:21::i;:::-;36691:22:::2;::::0;36683:94:::2;::::0;36665:12:::2;::::0;-1:-1:-1;;;;;36691:22:0::2;::::0;36741:21:::2;::::0;36665:12;36683:94;36665:12;36683:94;36741:21;36691:22;36683:94:::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;36664:113;;;36796:7;36788:42;;;::::0;-1:-1:-1;;;36788:42:0;;8031:2:1;36788:42:0::2;::::0;::::2;8013:21:1::0;8070:2;8050:18;;;8043:30;-1:-1:-1;;;8089:18:1;;;8082:52;8151:18;;36788:42:0::2;7829:346:1::0;36788:42:0::2;36653:185;30996:20:::1;30390:1:::0;31516:7;:22;31333:213;24437:181;21623:13;:11;:13::i;:::-;24527::::1;:24:::0;;-1:-1:-1;;;;;24527:24:0;::::1;-1:-1:-1::0;;;;;;24527:24:0;;::::1;::::0;::::1;::::0;;;24592:7:::1;21783::::0;21810:6;-1:-1:-1;;;;;21810:6:0;;;;;;21737:87;24592:7:::1;-1:-1:-1::0;;;;;24567:43:0::1;;;;;;;;;;;24437:181:::0;:::o;21902:166::-;21783:7;21810:6;-1:-1:-1;;;;;21810:6:0;;;;;19826:10;21962:23;21958:103;;22009:40;;-1:-1:-1;;;22009:40:0;;19826:10;22009:40;;;749:51:1;722:18;;22009:40:0;573:233:1;24808:156:0;24898:13;24891:20;;-1:-1:-1;;;;;;24891:20:0;;;24922:34;24947:8;24922:24;:34::i;27123:108::-;27011:4;27035:7;;;27193:9;27185:38;;;;-1:-1:-1;;;27185:38:0;;8382:2:1;27185:38:0;;;8364:21:1;8421:2;8401:18;;;8394:30;-1:-1:-1;;;8440:18:1;;;8433:46;8496:18;;27185:38:0;8180:340:1;31032:293:0;30434:1;31166:7;;:19;31158:63;;;;-1:-1:-1;;;31158:63:0;;8727:2:1;31158:63:0;;;8709:21:1;8766:2;8746:18;;;8739:30;8805:33;8785:18;;;8778:61;8856:18;;31158:63:0;8525:355:1;31158:63:0;30434:1;31299:18;;31032:293::o;14906:190::-;15034:53;;-1:-1:-1;;;;;9143:15:1;;;15034:53:0;;;9125:34:1;9195:15;;;9175:18;;;9168:43;9227:18;;;9220:34;;;15007:81:0;;15027:5;;15049:18;;;;;9060::1;;15034:53:0;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;15034:53:0;;;;;;;;;;;15007:19;:81::i;:::-;14906:190;;;;:::o;14499:162::-;14609:43;;-1:-1:-1;;;;;9457:32:1;;;14609:43:0;;;9439:51:1;9506:18;;;9499:34;;;14582:71:0;;14602:5;;14624:14;;;;;9412:18:1;;14609:43:0;9265:274:1;14582:71:0;14499:162;;;:::o;23050:191::-;23124:16;23143:6;;-1:-1:-1;;;;;23160:17:0;;;23143:6;23160:17;;;-1:-1:-1;;;;;;23160:17:0;;;;;23193:40;;23143:6;;;;;;;23160:17;;23143:6;;23193:40;;;23113:128;23050:191;:::o;17310:638::-;17734:23;17760:33;-1:-1:-1;;;;;17760:27:0;;17788:4;17760:27;:33::i;:::-;17734:59;;17808:10;:17;17829:1;17808:22;;:57;;;;;17846:10;17835:30;;;;;;;;;;;;:::i;:::-;17834:31;17808:57;17804:137;;;17889:40;;-1:-1:-1;;;17889:40:0;;-1:-1:-1;;;;;767:32:1;;17889:40:0;;;749:51:1;722:18;;17889:40:0;573:233:1;9625:153:0;9700:12;9732:38;9754:6;9762:4;9768:1;9732:21;:38::i;:::-;9725:45;;9625:153;;;;;:::o;10113:398::-;10212:12;10265:5;10241:21;:29;10237:110;;;10294:41;;-1:-1:-1;;;10294:41:0;;10329:4;10294:41;;;749:51:1;722:18;;10294:41:0;573:233:1;10237:110:0;10358:12;10372:23;10399:6;-1:-1:-1;;;;;10399:11:0;10418:5;10425:4;10399:31;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10357:73;;;;10448:55;10475:6;10483:7;10492:10;10448:26;:55::i;:::-;10441:62;;;;10113:398;;;;;;:::o;11589:597::-;11737:12;11767:7;11762:417;;11791:19;11799:10;11791:7;:19::i;:::-;11762:417;;;12019:17;;:22;:49;;;;-1:-1:-1;;;;;;12045:18:0;;;:23;12019:49;12015:121;;;12096:24;;-1:-1:-1;;;12096:24:0;;-1:-1:-1;;;;;767:32:1;;12096:24:0;;;749:51:1;722:18;;12096:24:0;573:233:1;12015:121:0;-1:-1:-1;12157:10:0;12150:17;;12739:528;12872:17;;:21;12868:392;;13104:10;13098:17;13161:15;13148:10;13144:2;13140:19;13133:44;12868:392;13231:17;;-1:-1:-1;;;13231:17:0;;;;;;;;;;;14:180:1;73:6;126:2;114:9;105:7;101:23;97:32;94:52;;;142:1;139;132:12;94:52;-1:-1:-1;165:23:1;;14:180;-1:-1:-1;14:180:1:o;811:286::-;870:6;923:2;911:9;902:7;898:23;894:32;891:52;;;939:1;936;929:12;891:52;965:23;;-1:-1:-1;;;;;1017:31:1;;1007:42;;997:70;;1063:1;1060;1053:12;1531:179;1609:13;;1662:22;1651:34;;1641:45;;1631:73;;1700:1;1697;1690:12;1631:73;1531:179;;;:::o;1715:473::-;1818:6;1826;1834;1842;1850;1903:3;1891:9;1882:7;1878:23;1874:33;1871:53;;;1920:1;1917;1910:12;1871:53;1943:39;1972:9;1943:39;:::i;:::-;1933:49;;2022:2;2011:9;2007:18;2001:25;1991:35;;2066:2;2055:9;2051:18;2045:25;2035:35;;2110:2;2099:9;2095:18;2089:25;2079:35;;2133:49;2177:3;2166:9;2162:19;2133:49;:::i;:::-;2123:59;;1715:473;;;;;;;;:::o;2535:127::-;2596:10;2591:3;2587:20;2584:1;2577:31;2627:4;2624:1;2617:15;2651:4;2648:1;2641:15;2667:128;2734:9;;;2755:11;;;2752:37;;;2769:18;;:::i;4208:184::-;4278:6;4331:2;4319:9;4310:7;4306:23;4302:32;4299:52;;;4347:1;4344;4337:12;4299:52;-1:-1:-1;4370:16:1;;4208:184;-1:-1:-1;4208:184:1:o;5087:217::-;5127:1;5153;5143:132;;5197:10;5192:3;5188:20;5185:1;5178:31;5232:4;5229:1;5222:15;5260:4;5257:1;5250:15;5143:132;-1:-1:-1;5289:9:1;;5087:217::o;5309:168::-;5382:9;;;5413;;5430:15;;;5424:22;;5410:37;5400:71;;5451:18;;:::i;5825:342::-;6027:2;6009:21;;;6066:2;6046:18;;;6039:30;-1:-1:-1;;;6100:2:1;6085:18;;6078:48;6158:2;6143:18;;5825:342::o;9544:277::-;9611:6;9664:2;9652:9;9643:7;9639:23;9635:32;9632:52;;;9680:1;9677;9670:12;9632:52;9712:9;9706:16;9765:5;9758:13;9751:21;9744:5;9741:32;9731:60;;9787:1;9784;9777:12;9826:412;9955:3;9993:6;9987:13;10018:1;10028:129;10042:6;10039:1;10036:13;10028:129;;;10140:4;10124:14;;;10120:25;;10114:32;10101:11;;;10094:53;10057:12;10028:129;;;-1:-1:-1;10212:1:1;10176:16;;10201:13;;;-1:-1:-1;10176:16:1;9826:412;-1:-1:-1;9826:412:1:o
Swarm Source
ipfs://b8775dbbc7e60c09b409f4d8d1bcd09e166fe2b2a02b30bbde60b54e1e537d17
Loading...
Loading
Loading...
Loading

Multichain Portfolio | 34 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|
Loading...
Loading
Loading...
Loading
Loading...
Loading
[ Download: CSV Export ]
[ Download: CSV Export ]
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.