ERC-20
Overview
Max Total Supply
3,138,753.016917680310952815 aeUD-LORDS
Holders
89
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 18 Decimals)
Balance
9,255.822421943151869851 aeUD-LORDSValue
$0.00Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Minimal Proxy Contract for 0xc3b9d873a71bceaae796e7dc9585db8b4fec6f60
Contract Name:
AelinUpFrontDeal
Compiler Version
v0.8.6+commit.11564f7e
Optimization Enabled:
Yes with 200 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity Standard Json-Input format)
1234567891011121314151617181920212223242526// SPDX-License-Identifier: MITpragma solidity 0.8.6;import "./AelinERC20.sol";import "./MinimalProxyFactory.sol";import {SafeERC20} from "@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol";import "@openzeppelin/contracts/utils/cryptography/MerkleProof.sol";import {AelinDeal} from "./AelinDeal.sol";import {AelinPool} from "./AelinPool.sol";import {AelinFeeEscrow} from "./AelinFeeEscrow.sol";import {IAelinUpFrontDeal} from "./interfaces/IAelinUpFrontDeal.sol";import "./libraries/AelinNftGating.sol";import "./libraries/AelinAllowList.sol";import "./libraries/MerkleTree.sol";contract AelinUpFrontDeal is AelinERC20, MinimalProxyFactory, IAelinUpFrontDeal {using SafeERC20 for IERC20;uint256 constant BASE = 100 * 10**18;uint256 constant MAX_SPONSOR_FEE = 15 * 10**18;uint256 constant AELIN_FEE = 2 * 10**18;UpFrontDealData public dealData;UpFrontDealConfig public dealConfig;address public aelinTreasuryAddress;
1234567891011121314151617181920212223242526// SPDX-License-Identifier: MITpragma solidity 0.8.6;import {ERC20, IERC20} from "@openzeppelin/contracts/token/ERC20/ERC20.sol";interface IERC20Decimals {function decimals() external view returns (uint8);}/*** @dev a standard ERC20 contract that is extended with a few methods* described in detail below*/contract AelinERC20 is ERC20 {bool setInfo;/*** @dev Due to the constructor being empty for the MinimalProxy architecture we need* to set the name and symbol in the initializer which requires these custom variables*/string private _custom_name;string private _custom_symbol;uint8 private _custom_decimals;bool private locked;uint8 constant DEAL_TOKEN_DECIMALS = 18;constructor() ERC20("", "") {}
1234567891011121314151617181920212223242526// SPDX-License-Identifier: MITpragma solidity >=0.6.0 <0.8.7;// https://docs.synthetix.io/contracts/source/contracts/minimalproxyfactory// https://blog.openzeppelin.com/deep-dive-into-the-minimal-proxy-contract/contract MinimalProxyFactory {function _cloneAsMinimalProxy(address _base, string memory _revertMsg) internal returns (address clone) {bytes memory createData = _generateMinimalProxyCreateData(_base);assembly {clone := create(0, // no valueadd(createData, 0x20), // data55 // data is always 55 bytes (10 constructor + 45 code))}// If CREATE fails for some reason, address(0) is returnedrequire(clone != address(0), _revertMsg);}function _generateMinimalProxyCreateData(address _base) internal pure returns (bytes memory) {returnabi.encodePacked(//---- constructor -----bytes10(0x3d602d80600a3d3981f3),
1234567891011121314151617181920212223242526// SPDX-License-Identifier: MIT// OpenZeppelin Contracts (last updated v4.7.0) (token/ERC20/utils/SafeERC20.sol)pragma solidity ^0.8.0;import "../IERC20.sol";import "../extensions/draft-IERC20Permit.sol";import "../../../utils/Address.sol";/*** @title SafeERC20* @dev Wrappers around ERC20 operations that throw on failure (when the token* contract returns false). Tokens that return no value (and instead revert or* throw on failure) are also supported, non-reverting calls are assumed to be* successful.* To use this library you can add a `using SafeERC20 for IERC20;` statement to your contract,* which allows you to call the safe operations as `token.safeTransfer(...)`, etc.*/library SafeERC20 {using Address for address;function safeTransfer(IERC20 token,address to,uint256 value) internal {
1234567891011121314151617181920212223242526// SPDX-License-Identifier: MIT// OpenZeppelin Contracts (last updated v4.7.0) (utils/cryptography/MerkleProof.sol)pragma solidity ^0.8.0;/*** @dev These functions deal with verification of Merkle Tree proofs.** The proofs can be generated using the JavaScript library* https://github.com/miguelmota/merkletreejs[merkletreejs].* Note: the hashing algorithm should be keccak256 and pair sorting should be enabled.** See `test/utils/cryptography/MerkleProof.test.js` for some examples.** WARNING: You should avoid using leaf values that are 64 bytes long prior to* hashing, or use a hash function other than keccak256 for hashing leaves.* This is because the concatenation of a sorted pair of internal nodes in* the merkle tree could be reinterpreted as a leaf value.*/library MerkleProof {/*** @dev Returns true if a `leaf` can be proved to be a part of a Merkle tree* defined by `root`. For this, a `proof` must be provided, containing* sibling hashes on the branch from the leaf to the root of the tree. Each* pair of leaves and each pair of pre-images are assumed to be sorted.*/
1234567891011121314151617181920212223242526// SPDX-License-Identifier: MITpragma solidity 0.8.6;import "./AelinERC20.sol";import "./interfaces/IAelinDeal.sol";import "./MinimalProxyFactory.sol";import "./AelinFeeEscrow.sol";contract AelinDeal is AelinERC20, MinimalProxyFactory, IAelinDeal {using SafeERC20 for IERC20;uint256 public maxTotalSupply;address public underlyingDealToken;uint256 public underlyingDealTokenTotal;uint256 public totalUnderlyingClaimed;address public holder;address public futureHolder;address public aelinTreasuryAddress;uint256 public underlyingPerDealExchangeRate;address public aelinPool;uint256 public vestingCliffExpiry;uint256 public vestingCliffPeriod;uint256 public vestingPeriod;uint256 public vestingExpiry;
1234567891011121314151617181920212223242526// SPDX-License-Identifier: MITpragma solidity 0.8.6;import "./AelinDeal.sol";import "./interfaces/IAelinPool.sol";import "./interfaces/ICryptoPunks.sol";import "./libraries/NftCheck.sol";contract AelinPool is AelinERC20, MinimalProxyFactory, IAelinPool {using SafeERC20 for IERC20;address constant CRYPTO_PUNKS = address(0xb47e3cd837dDF8e4c57F05d70Ab865de6e193BBB);uint256 constant BASE = 100 * 10**18;uint256 constant MAX_SPONSOR_FEE = 15 * 10**18;uint256 constant AELIN_FEE = 2 * 10**18;uint8 constant MAX_DEALS = 5;uint8 public numberOfDeals;uint8 public purchaseTokenDecimals;address public purchaseToken;uint256 public purchaseTokenCap;uint256 public proRataConversion;uint256 public sponsorFee;address public sponsor;address public futureSponsor;address public poolFactory;
1234567891011121314151617181920212223242526// SPDX-License-Identifier: MITpragma solidity 0.8.6;import {IERC20} from "@openzeppelin/contracts/token/ERC20/ERC20.sol";import {SafeERC20} from "@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol";contract AelinFeeEscrow {using SafeERC20 for IERC20;uint256 public vestingExpiry;address public treasury;address public futureTreasury;address public escrowedToken;bool private calledInitialize;/*** @dev the constructor will always be blank due to the MinimalProxyFactory pattern* this allows the underlying logic of this contract to only be deployed once* and each new escrow created is simply a storage wrapper*/constructor() {}/*** @dev the treasury may change their address*/function setTreasury(address _treasury) external onlyTreasury {
1234567891011121314151617181920212223242526// SPDX-License-Identifier: MITpragma solidity 0.8.6;import {IAelinPool} from "./IAelinPool.sol";interface IAelinUpFrontDeal {struct UpFrontDealData {string name;string symbol;address purchaseToken;address underlyingDealToken;address holder;address sponsor;uint256 sponsorFee;bytes32 merkleRoot;string ipfsHash;}struct UpFrontDealConfig {uint256 underlyingDealTokenTotal;uint256 purchaseTokenPerDealToken;uint256 purchaseRaiseMinimum;uint256 purchaseDuration;uint256 vestingPeriod;uint256 vestingCliffPeriod;bool allowDeallocation;
1234567891011121314151617181920212223242526// SPDX-License-Identifier: MITpragma solidity 0.8.6;import "./NftCheck.sol";import "../interfaces/ICryptoPunks.sol";library AelinNftGating {address constant CRYPTO_PUNKS = address(0xb47e3cd837dDF8e4c57F05d70Ab865de6e193BBB);// collectionAddress should be unique, otherwise will overridestruct NftCollectionRules {// if 0, then unlimited purchaseuint256 purchaseAmount;address collectionAddress;// if true, then `purchaseAmount` is per token// else `purchaseAmount` is per account regardless of the NFTs heldbool purchaseAmountPerToken;// both variables below are only applicable for 1155uint256[] tokenIds;// min number of tokens required for participatinguint256[] minTokensEligible;}struct NftGatingData {mapping(address => NftCollectionRules) nftCollectionDetails;mapping(address => mapping(address => bool)) nftWalletUsedForPurchase;
1234567891011121314151617181920212223242526// SPDX-License-Identifier: MITpragma solidity 0.8.6;library AelinAllowList {struct InitData {address[] allowListAddresses;uint256[] allowListAmounts;}struct AllowList {address[] allowListAddresses;uint256[] allowListAmounts;mapping(address => uint256) amountPerAddress;bool hasAllowList;}function initialize(InitData calldata _init, AllowList storage _self) external {if (_init.allowListAddresses.length > 0 || _init.allowListAmounts.length > 0) {require(_init.allowListAddresses.length == _init.allowListAmounts.length,"allowListAddresses and allowListAmounts arrays should have the same length");_self.allowListAddresses = _init.allowListAddresses;_self.allowListAmounts = _init.allowListAmounts;for (uint256 i; i < _init.allowListAddresses.length; ++i) {_self.amountPerAddress[_init.allowListAddresses[i]] = _init.allowListAmounts[i];
1234567891011121314151617181920212223242526// SPDX-License-Identifier: MITpragma solidity 0.8.6;import "@openzeppelin/contracts/utils/cryptography/MerkleProof.sol";library MerkleTree {struct UpFrontMerkleData {uint256 index;address account;uint256 amount;bytes32[] merkleProof;}struct TrackClaimed {mapping(uint256 => uint256) claimedBitMap;}/*** @dev a function that checks if the index leaf node is valid and if the user has purchased.* will set the index node to purchased if approved*/function purchaseMerkleAmount(UpFrontMerkleData calldata merkleData,TrackClaimed storage self,uint256 _purchaseTokenAmount,bytes32 merkleRoot
1234567891011121314151617181920212223242526// SPDX-License-Identifier: MIT// OpenZeppelin Contracts (last updated v4.7.0) (token/ERC20/ERC20.sol)pragma solidity ^0.8.0;import "./IERC20.sol";import "./extensions/IERC20Metadata.sol";import "../../utils/Context.sol";/*** @dev Implementation of the {IERC20} interface.** This implementation is agnostic to the way tokens are created. This means* that a supply mechanism has to be added in a derived contract using {_mint}.* For a generic mechanism see {ERC20PresetMinterPauser}.** TIP: For a detailed writeup see our guide* https://forum.zeppelin.solutions/t/how-to-implement-erc20-supply-mechanisms/226[How* to implement supply mechanisms].** We have followed general OpenZeppelin Contracts guidelines: functions revert* instead returning `false` on failure. This behavior is nonetheless* conventional and does not conflict with the expectations of ERC20* applications.** Additionally, an {Approval} event is emitted on calls to {transferFrom}.
1234567891011121314151617181920212223242526// SPDX-License-Identifier: MIT// OpenZeppelin Contracts (last updated v4.6.0) (token/ERC20/IERC20.sol)pragma solidity ^0.8.0;/*** @dev Interface of the ERC20 standard as defined in the EIP.*/interface IERC20 {/*** @dev Emitted when `value` tokens are moved from one account (`from`) to* another (`to`).** Note that `value` may be zero.*/event Transfer(address indexed from, address indexed to, uint256 value);/*** @dev Emitted when the allowance of a `spender` for an `owner` is set by* a call to {approve}. `value` is the new allowance.*/event Approval(address indexed owner, address indexed spender, uint256 value);/*** @dev Returns the amount of tokens in existence.*/
1234567891011121314151617181920212223242526// SPDX-License-Identifier: MIT// OpenZeppelin Contracts v4.4.1 (token/ERC20/extensions/IERC20Metadata.sol)pragma solidity ^0.8.0;import "../IERC20.sol";/*** @dev Interface for the optional metadata functions from the ERC20 standard.** _Available since v4.1._*/interface IERC20Metadata is IERC20 {/*** @dev Returns the name of the token.*/function name() external view returns (string memory);/*** @dev Returns the symbol of the token.*/function symbol() external view returns (string memory);/*** @dev Returns the decimals places of the token.*/
123456789101112131415161718192021222324// SPDX-License-Identifier: MIT// OpenZeppelin Contracts v4.4.1 (utils/Context.sol)pragma solidity ^0.8.0;/*** @dev Provides information about the current execution context, including the* sender of the transaction and its data. While these are generally available* via msg.sender and msg.data, they should not be accessed in such a direct* manner, since when dealing with meta-transactions the account sending and* paying for execution may not be the actual sender (as far as an application* is concerned).** This contract is only required for intermediate, library-like contracts.*/abstract contract Context {function _msgSender() internal view virtual returns (address) {return msg.sender;}function _msgData() internal view virtual returns (bytes calldata) {return msg.data;}}
1234567891011121314151617181920212223242526// SPDX-License-Identifier: MIT// OpenZeppelin Contracts v4.4.1 (token/ERC20/extensions/draft-IERC20Permit.sol)pragma solidity ^0.8.0;/*** @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.*/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.
1234567891011121314151617181920212223242526// SPDX-License-Identifier: MIT// OpenZeppelin Contracts (last updated v4.7.0) (utils/Address.sol)pragma solidity ^0.8.1;/*** @dev Collection of functions related to the address type*/library Address {/*** @dev Returns true if `account` is a contract.** [IMPORTANT]* ====* It is unsafe to assume that an address for which this function returns* false is an externally-owned account (EOA) and not a contract.** Among others, `isContract` will return false for the following* types of addresses:** - an externally-owned account* - a contract in construction* - an address where a contract will be created* - an address where a contract lived, but was destroyed* ====*
12345678910111213141516171819202122// SPDX-License-Identifier: MITpragma solidity 0.8.6;interface IAelinDeal {struct DealData {address underlyingDealToken;uint256 underlyingDealTokenTotal;uint256 vestingPeriod;uint256 vestingCliffPeriod;uint256 proRataRedemptionPeriod;uint256 openRedemptionPeriod;address holder;uint256 maxDealTotalSupply;uint256 holderFundingDuration;}struct Timeline {uint256 period;uint256 start;uint256 expiry;}}
1234567891011121314151617181920212223242526// SPDX-License-Identifier: MITpragma solidity 0.8.6;interface IAelinPool {struct PoolData {string name;string symbol;uint256 purchaseTokenCap;address purchaseToken;uint256 duration;uint256 sponsorFee;uint256 purchaseDuration;address[] allowListAddresses;uint256[] allowListAmounts;NftCollectionRules[] nftCollectionRules;}// collectionAddress should be unique, otherwise will overridestruct NftCollectionRules {// if 0, then unlimited purchaseuint256 purchaseAmount;address collectionAddress;// if true, then `purchaseAmount` is per token// else `purchaseAmount` is per account regardless of the NFTs heldbool purchaseAmountPerToken;// both variables below are only applicable for 1155
12345678// SPDX-License-Identifier: GPL-3.0pragma solidity 0.8.6;interface ICryptoPunks {function balanceOf(address) external view returns (uint256);function punkIndexToAddress(uint256) external view returns (address);}
1234567891011121314151617181920212223242526// SPDX-License-Identifier: MITpragma solidity 0.8.6;import "@openzeppelin/contracts/utils/introspection/IERC165.sol";import "@openzeppelin/contracts/token/ERC1155/IERC1155.sol";import "@openzeppelin/contracts/token/ERC721/IERC721.sol";library NftCheck {bytes4 public constant IERC165_ID = type(IERC165).interfaceId;bytes4 public constant IERC1155_ID = type(IERC1155).interfaceId;bytes4 public constant IERC721_ID = type(IERC721).interfaceId;function supports721(address collectionAddress) internal view returns (bool) {return _supportsInterface(collectionAddress, IERC721_ID);}function supports1155(address collectionAddress) internal view returns (bool) {return _supportsInterface(collectionAddress, IERC1155_ID);}function _supportsInterface(address account, bytes4 interfaceId) private view returns (bool) {bytes memory encodedParams = abi.encodeWithSelector(IERC165.supportsInterface.selector, interfaceId);(bool success, bytes memory result) = account.staticcall{gas: 30000}(encodedParams);if (result.length < 32) return false;return success && abi.decode(result, (bool));}
12345678910111213141516171819202122232425// SPDX-License-Identifier: MIT// OpenZeppelin Contracts v4.4.1 (utils/introspection/IERC165.sol)pragma solidity ^0.8.0;/*** @dev Interface of the ERC165 standard, as defined in the* https://eips.ethereum.org/EIPS/eip-165[EIP].** Implementers can declare support of contract interfaces, which can then be* queried by others ({ERC165Checker}).** For an implementation, see {ERC165}.*/interface IERC165 {/*** @dev Returns true if this contract implements the interface defined by* `interfaceId`. See the corresponding* https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section]* to learn more about how these ids are created.** This function call must use less than 30 000 gas.*/function supportsInterface(bytes4 interfaceId) external view returns (bool);}
1234567891011121314151617181920212223242526// SPDX-License-Identifier: MIT// OpenZeppelin Contracts (last updated v4.7.0) (token/ERC1155/IERC1155.sol)pragma solidity ^0.8.0;import "../../utils/introspection/IERC165.sol";/*** @dev Required interface of an ERC1155 compliant contract, as defined in the* https://eips.ethereum.org/EIPS/eip-1155[EIP].** _Available since v3.1._*/interface IERC1155 is IERC165 {/*** @dev Emitted when `value` tokens of token type `id` are transferred from `from` to `to` by `operator`.*/event TransferSingle(address indexed operator, address indexed from, address indexed to, uint256 id, uint256 value);/*** @dev Equivalent to multiple {TransferSingle} events, where `operator`, `from` and `to` are the same for all* transfers.*/event TransferBatch(address indexed operator,address indexed from,
1234567891011121314151617181920212223242526// SPDX-License-Identifier: MIT// OpenZeppelin Contracts (last updated v4.7.0) (token/ERC721/IERC721.sol)pragma solidity ^0.8.0;import "../../utils/introspection/IERC165.sol";/*** @dev Required interface of an ERC721 compliant contract.*/interface IERC721 is IERC165 {/*** @dev Emitted when `tokenId` token is transferred from `from` to `to`.*/event Transfer(address indexed from, address indexed to, uint256 indexed tokenId);/*** @dev Emitted when `owner` enables `approved` to manage the `tokenId` token.*/event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId);/*** @dev Emitted when `owner` enables or disables (`approved`) `operator` to manage all of its assets.*/event ApprovalForAll(address indexed owner, address indexed operator, bool approved);
1234567891011121314151617181920212223242526{"optimizer": {"enabled": true,"runs": 200},"outputSelection": {"*": {"*": ["evm.bytecode","evm.deployedBytecode","devdoc","userdoc","metadata","abi"]}},"libraries": {"contracts/libraries/AelinAllowList.sol": {"AelinAllowList": "0x011829226a32e992a4def3efe225978136dd5cce"},"contracts/libraries/AelinNftGating.sol": {"AelinNftGating": "0xe98dc0da44994f5546644e3384026bb2b5efb153"},"contracts/libraries/MerkleTree.sol": {"MerkleTree": "0x15545f77783c8b47e7d9af53cd9a91ae612b3bac"
[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":false,"internalType":"uint256","name":"amountPurchased","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"totalPurchased","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amountDealTokens","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"totalDealTokens","type":"uint256"}],"name":"AcceptDeal","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"string","name":"name","type":"string"},{"indexed":false,"internalType":"string","name":"symbol","type":"string"},{"indexed":false,"internalType":"uint8","name":"decimals","type":"uint8"}],"name":"AelinToken","type":"event"},{"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":"user","type":"address"},{"indexed":false,"internalType":"uint256","name":"amountMinted","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amountPurchasingReturned","type":"uint256"}],"name":"ClaimDealTokens","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":false,"internalType":"address","name":"underlyingToken","type":"address"},{"indexed":false,"internalType":"uint256","name":"amountClaimed","type":"uint256"}],"name":"ClaimedUnderlyingDealToken","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"dealAddress","type":"address"},{"indexed":false,"internalType":"string","name":"name","type":"string"},{"indexed":false,"internalType":"string","name":"symbol","type":"string"},{"indexed":false,"internalType":"address","name":"purchaseToken","type":"address"},{"indexed":false,"internalType":"address","name":"underlyingDealToken","type":"address"},{"indexed":true,"internalType":"address","name":"holder","type":"address"},{"indexed":true,"internalType":"address","name":"sponsor","type":"address"},{"indexed":false,"internalType":"uint256","name":"sponsorFee","type":"uint256"},{"indexed":false,"internalType":"bytes32","name":"merkleRoot","type":"bytes32"},{"indexed":false,"internalType":"string","name":"ipfsHash","type":"string"}],"name":"CreateUpFrontDeal","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"dealAddress","type":"address"},{"indexed":false,"internalType":"uint256","name":"underlyingDealTokenTotal","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"purchaseTokenPerDealToken","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"purchaseRaiseMinimum","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"purchaseDuration","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"vestingPeriod","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"vestingCliffPeriod","type":"uint256"},{"indexed":false,"internalType":"bool","name":"allowDeallocation","type":"bool"}],"name":"CreateUpFrontDealConfig","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"upFrontDealAddress","type":"address"},{"indexed":false,"internalType":"uint256","name":"timestamp","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"purchaseExpiryTimestamp","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"vestingCliffExpiryTimestamp","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"vestingExpiryTimestamp","type":"uint256"}],"name":"DealFullyFunded","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"underlyingDealTokenAddress","type":"address"},{"indexed":true,"internalType":"address","name":"depositor","type":"address"},{"indexed":false,"internalType":"uint256","name":"underlyingDealTokenAmount","type":"uint256"}],"name":"DepositDealToken","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"voucher","type":"address"}],"name":"Disavow","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"aelinFeeEscrow","type":"address"},{"indexed":true,"internalType":"address","name":"underlyingTokenAddress","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"FeeEscrowClaim","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"holder","type":"address"},{"indexed":false,"internalType":"address","name":"purchaseToken","type":"address"},{"indexed":false,"internalType":"uint256","name":"amountClaimed","type":"uint256"},{"indexed":false,"internalType":"address","name":"underlyingToken","type":"address"},{"indexed":false,"internalType":"uint256","name":"underlyingRefund","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"timestamp","type":"uint256"}],"name":"HolderClaim","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"collectionAddress","type":"address"},{"indexed":false,"internalType":"uint256","name":"purchaseAmount","type":"uint256"},{"indexed":false,"internalType":"bool","name":"purchaseAmountPerToken","type":"bool"},{"indexed":false,"internalType":"uint256[]","name":"tokenIds","type":"uint256[]"},{"indexed":false,"internalType":"uint256[]","name":"minTokensEligible","type":"uint256[]"}],"name":"PoolWith1155","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"collectionAddress","type":"address"},{"indexed":false,"internalType":"uint256","name":"purchaseAmount","type":"uint256"},{"indexed":false,"internalType":"bool","name":"purchaseAmountPerToken","type":"bool"}],"name":"PoolWith721","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"holder","type":"address"}],"name":"SetHolder","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"sponsor","type":"address"},{"indexed":false,"internalType":"uint256","name":"amountMinted","type":"uint256"}],"name":"SponsorClaim","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"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"voucher","type":"address"}],"name":"Vouch","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"UpFrontDealAddress","type":"address"},{"indexed":false,"internalType":"uint256","name":"amountWithdrawn","type":"uint256"}],"name":"WithdrewExcess","type":"event"},{"inputs":[{"components":[{"internalType":"address","name":"collectionAddress","type":"address"},{"internalType":"uint256[]","name":"tokenIds","type":"uint256[]"}],"internalType":"struct AelinNftGating.NftPurchaseList[]","name":"_nftPurchaseList","type":"tuple[]"},{"components":[{"internalType":"uint256","name":"index","type":"uint256"},{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"bytes32[]","name":"merkleProof","type":"bytes32[]"}],"internalType":"struct MerkleTree.UpFrontMerkleData","name":"_merkleData","type":"tuple"},{"internalType":"uint256","name":"_purchaseTokenAmount","type":"uint256"}],"name":"acceptDeal","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"acceptHolder","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"aelinEscrowLogicAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"aelinFeeEscrow","outputs":[{"internalType":"contract AelinFeeEscrow","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"aelinTreasuryAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"allowList","outputs":[{"internalType":"bool","name":"hasAllowList","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"amountVested","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"claimUnderlying","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_purchaser","type":"address"}],"name":"claimableUnderlyingTokens","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"dealConfig","outputs":[{"internalType":"uint256","name":"underlyingDealTokenTotal","type":"uint256"},{"internalType":"uint256","name":"purchaseTokenPerDealToken","type":"uint256"},{"internalType":"uint256","name":"purchaseRaiseMinimum","type":"uint256"},{"internalType":"uint256","name":"purchaseDuration","type":"uint256"},{"internalType":"uint256","name":"vestingPeriod","type":"uint256"},{"internalType":"uint256","name":"vestingCliffPeriod","type":"uint256"},{"internalType":"bool","name":"allowDeallocation","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"dealData","outputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"symbol","type":"string"},{"internalType":"address","name":"purchaseToken","type":"address"},{"internalType":"address","name":"underlyingDealToken","type":"address"},{"internalType":"address","name":"holder","type":"address"},{"internalType":"address","name":"sponsor","type":"address"},{"internalType":"uint256","name":"sponsorFee","type":"uint256"},{"internalType":"bytes32","name":"merkleRoot","type":"bytes32"},{"internalType":"string","name":"ipfsHash","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"dealFactory","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"dealStart","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_depositUnderlyingAmount","type":"uint256"}],"name":"depositUnderlyingTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"disavow","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"feeEscrowClaim","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"futureHolder","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_userAddress","type":"address"}],"name":"getAllowList","outputs":[{"internalType":"address[]","name":"","type":"address[]"},{"internalType":"uint256[]","name":"","type":"uint256[]"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"}],"name":"getAmountVested","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_collection","type":"address"}],"name":"getNftCollectionDetails","outputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"address","name":"","type":"address"},{"internalType":"bool","name":"","type":"bool"},{"internalType":"uint256[]","name":"","type":"uint256[]"},{"internalType":"uint256[]","name":"","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_collection","type":"address"},{"internalType":"address","name":"_wallet","type":"address"},{"internalType":"uint256","name":"_nftId","type":"uint256"}],"name":"getNftGatingDetails","outputs":[{"internalType":"bool","name":"","type":"bool"},{"internalType":"bool","name":"","type":"bool"},{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"}],"name":"getPoolSharesPerUser","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"}],"name":"getPurchaseTokensPerUser","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_index","type":"uint256"}],"name":"hasPurchasedMerkle","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"holderClaim","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"components":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"symbol","type":"string"},{"internalType":"address","name":"purchaseToken","type":"address"},{"internalType":"address","name":"underlyingDealToken","type":"address"},{"internalType":"address","name":"holder","type":"address"},{"internalType":"address","name":"sponsor","type":"address"},{"internalType":"uint256","name":"sponsorFee","type":"uint256"},{"internalType":"bytes32","name":"merkleRoot","type":"bytes32"},{"internalType":"string","name":"ipfsHash","type":"string"}],"internalType":"struct IAelinUpFrontDeal.UpFrontDealData","name":"_dealData","type":"tuple"},{"components":[{"internalType":"uint256","name":"underlyingDealTokenTotal","type":"uint256"},{"internalType":"uint256","name":"purchaseTokenPerDealToken","type":"uint256"},{"internalType":"uint256","name":"purchaseRaiseMinimum","type":"uint256"},{"internalType":"uint256","name":"purchaseDuration","type":"uint256"},{"internalType":"uint256","name":"vestingPeriod","type":"uint256"},{"internalType":"uint256","name":"vestingCliffPeriod","type":"uint256"},{"internalType":"bool","name":"allowDeallocation","type":"bool"}],"internalType":"struct IAelinUpFrontDeal.UpFrontDealConfig","name":"_dealConfig","type":"tuple"},{"components":[{"internalType":"uint256","name":"purchaseAmount","type":"uint256"},{"internalType":"address","name":"collectionAddress","type":"address"},{"internalType":"bool","name":"purchaseAmountPerToken","type":"bool"},{"internalType":"uint256[]","name":"tokenIds","type":"uint256[]"},{"internalType":"uint256[]","name":"minTokensEligible","type":"uint256[]"}],"internalType":"struct AelinNftGating.NftCollectionRules[]","name":"_nftCollectionRules","type":"tuple[]"},{"components":[{"internalType":"address[]","name":"allowListAddresses","type":"address[]"},{"internalType":"uint256[]","name":"allowListAmounts","type":"uint256[]"}],"internalType":"struct AelinAllowList.InitData","name":"_allowListInit","type":"tuple"},{"internalType":"address","name":"_aelinTreasuryAddress","type":"address"},{"internalType":"address","name":"_aelinEscrowLogicAddress","type":"address"}],"name":"initialize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"nftGating","outputs":[{"internalType":"bool","name":"hasNftList","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"poolSharesPerUser","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"purchaseExpiry","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"purchaseTokensPerUser","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"purchaserClaim","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_holder","type":"address"}],"name":"setHolder","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sponsorClaim","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalPoolShares","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalPurchasingAccepted","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalUnderlyingClaimed","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_dst","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_src","type":"address"},{"internalType":"address","name":"_dst","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"vestingCliffExpiry","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"vestingExpiry","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"vouch","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"withdrawExcess","outputs":[],"stateMutability":"nonpayable","type":"function"}]
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.