ETH Price: $2,193.18 (-0.54%)

Token

Perpendicular Contract (PERP)
 

Overview

Max Total Supply

500 PERP

Holders

152

Market

Volume (24H)

N/A

Min Price (24H)

N/A

Max Price (24H)

N/A

Other Info

Balance
1 PERP
0xb57d3b51d202ec910c4c556da97b767320992ed6
Loading...
Loading
Loading...
Loading
Loading...
Loading

OVERVIEW

Perpendicular is [Andrew McWhae](https://twitter.com/andrewmcwhae)'s third NFT collection. It explores how a strict adherence to rules can still yield stunning surprises. It is his first on-chain, long-form generative collection. Interactivity: press "1" for low resolution, "2" for high resolution and "S" to download.

# Exchange Pair Price  24H Volume % Volume

Similar Match Source Code
This contract matches the deployed Bytecode of the Source Code for Contract 0xFC19B453...05457538D
The constructor portion of the code might be different and could alter the actual behaviour of the contract

Contract Name:
GenerativeSeries

Compiler Version
v0.8.10+commit.fc410830

Optimization Enabled:
Yes with 1 runs

Other Settings:
default evmVersion
File 1 of 5 : GenerativeSeries.sol
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
// SPDX-License-Identifier: MIT
pragma solidity 0.8.10;
import "../../mint/interfaces/IAbridgedMintVector.sol";
import "@openzeppelin/contracts/proxy/Proxy.sol";
import "@openzeppelin/contracts/utils/Address.sol";
import "@openzeppelin/contracts/utils/StorageSlot.sol";
/**
* @notice Instance of Generative Series contract
* @author highlight.xyz
*/
contract GenerativeSeries is Proxy {
/**
* @notice Set up Generative Series instance
* @param implementation_ Generative721 implementation
* @param initializeData Data to initialize Generative contract
* @ param creator Creator/owner of contract
* @ param _contractURI Contract metadata
* @ param defaultRoyalty Default royalty object for contract (optional)
* @ param _defaultTokenManager Default token manager for contract (optional)
* @ param _name Name of token edition
* @ param _symbol Symbol of the token edition
* @ param trustedForwarder Trusted minimal forwarder
* @ param initialMinter Initial minter to register
* @ param _generativeCodeURI Generative code URI
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

File 2 of 5 : Proxy.sol
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts (last updated v4.6.0) (proxy/Proxy.sol)
pragma solidity ^0.8.0;
/**
* @dev This abstract contract provides a fallback function that delegates all calls to another contract using the EVM
* instruction `delegatecall`. We refer to the second contract as the _implementation_ behind the proxy, and it has to
* be specified by overriding the virtual {_implementation} function.
*
* Additionally, delegation to the implementation can be triggered manually through the {_fallback} function, or to a
* different contract through the {_delegate} function.
*
* The success and return data of the delegated call will be returned back to the caller of the proxy.
*/
abstract contract Proxy {
/**
* @dev Delegates the current call to `implementation`.
*
* This function does not return to its internal call site, it will return directly to the external caller.
*/
function _delegate(address implementation) internal virtual {
assembly {
// Copy msg.data. We take full control of memory in this inline assembly
// block because it will not return to Solidity code. We overwrite the
// Solidity scratch pad at memory position 0.
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

File 3 of 5 : Address.sol
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts (last updated v4.9.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
*
* Furthermore, `isContract` will also return true if the target contract within
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

File 4 of 5 : StorageSlot.sol
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts (last updated v4.9.0) (utils/StorageSlot.sol)
// This file was procedurally generated from scripts/generate/templates/StorageSlot.js.
pragma solidity ^0.8.0;
/**
* @dev Library for reading and writing primitive types to specific storage slots.
*
* Storage slots are often used to avoid storage conflict when dealing with upgradeable contracts.
* This library helps with reading and writing to such slots without the need for inline assembly.
*
* The functions in this library return Slot structs that contain a `value` member that can be used to read or write.
*
* Example usage to set ERC1967 implementation slot:
* ```solidity
* contract ERC1967 {
* bytes32 internal constant _IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;
*
* function _getImplementation() internal view returns (address) {
* return StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value;
* }
*
* function _setImplementation(address newImplementation) internal {
* require(Address.isContract(newImplementation), "ERC1967: new implementation is not a contract");
* StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value = newImplementation;
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

File 5 of 5 : IAbridgedMintVector.sol
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
// SPDX-License-Identifier: UNLICENSED
pragma solidity 0.8.10;
/**
* @title MintManager interface for onchain abridged mint vectors
* @author highlight.xyz
*/
interface IAbridgedMintVector {
/**
* @notice On-chain mint vector (stored data)
* @param contractAddress NFT smart contract address
* @param startTimestamp When minting opens on vector
* @param endTimestamp When minting ends on vector
* @param paymentRecipient Payment recipient
* @param maxTotalClaimableViaVector Max number of tokens that can be minted via vector
* @param totalClaimedViaVector Total number of tokens minted via vector
* @param currency Currency used for payment. Native gas token, if zero address
* @param tokenLimitPerTx Max number of tokens that can be minted in one transaction
* @param maxUserClaimableViaVector Max number of tokens that can be minted by user via vector
* @param pricePerToken Price that has to be paid per minted token
* @param editionId Edition ID, if vector is for edition based collection
* @param editionBasedCollection If vector is for an edition based collection
* @param requireDirectEOA Require minters to directly be EOAs
* @param allowlistRoot Root of merkle tree with allowlist
*/
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

Settings
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
{
"metadata": {
"bytecodeHash": "none"
},
"optimizer": {
"enabled": true,
"runs": 1
},
"outputSelection": {
"*": {
"*": [
"evm.bytecode",
"evm.deployedBytecode",
"devdoc",
"userdoc",
"metadata",
"abi"
]
}
},
"libraries": {}
}
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

Contract Security Audit

Contract ABI

API
[{"inputs":[{"internalType":"address","name":"implementation_","type":"address"},{"internalType":"bytes","name":"initializeData","type":"bytes"},{"internalType":"bytes","name":"mintVectorData","type":"bytes"},{"internalType":"address","name":"_observability","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"stateMutability":"payable","type":"fallback"},{"inputs":[],"name":"implementation","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"standard","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"stateMutability":"payable","type":"receive"}]

60806040523480156200001157600080fd5b5060405162000be738038062000be78339810160408190526200003491620004e5565b6200006160017f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbd62000579565b60008051602062000ba0833981519152146200008157620000816200059f565b83620000aa60008051602062000ba083398151915260001b6200029560201b620000da1760201c565b80546001600160a01b0319166001600160a01b03929092169190911790556040516200011e908590620000e49086908590602401620005f0565b60408051601f19818403018152919052602080820180516001600160e01b031663cce2df0360e01b179052620000dd62000298821b17901c565b508151156200028b5760008060008060008060008060008a8060200190518101906200014b919062000638565b985098509850985098509850985098509850886001600160a01b03166377a856ea604051806101c00160405280306001600160a01b031681526020018a65ffffffffffff1681526020018965ffffffffffff1681526020018b6001600160a01b031681526020018665ffffffffffff168152602001600065ffffffffffff16815260200160006001600160a01b031681526020018765ffffffffffff1681526020018565ffffffffffff168152602001886001600160c01b03168152602001600065ffffffffffff168152602001600015158152602001600015158152602001848152506040518263ffffffff1660e01b81526004016200024d9190620006fd565b600060405180830381600087803b1580156200026857600080fd5b505af11580156200027d573d6000803e3d6000fd5b505050505050505050505050505b505050506200085d565b90565b6060620002c0838360405180606001604052806027815260200162000bc060279139620002c7565b9392505050565b6060600080856001600160a01b031685604051620002e691906200082a565b600060405180830381855af49150503d806000811462000323576040519150601f19603f3d011682016040523d82523d6000602084013e62000328565b606091505b5090925090506200033c8683838762000346565b9695505050505050565b60608315620003bb578251620003b3576001600160a01b0385163b620003b35760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064015b60405180910390fd5b5081620003c7565b620003c78383620003cf565b949350505050565b815115620003e05781518083602001fd5b8060405162461bcd60e51b8152600401620003aa919062000848565b6001600160a01b03811681146200041257600080fd5b50565b634e487b7160e01b600052604160045260246000fd5b60005b83811015620004485781810151838201526020016200042e565b8381111562000458576000848401525b50505050565b600082601f8301126200047057600080fd5b81516001600160401b03808211156200048d576200048d62000415565b604051601f8301601f19908116603f01168101908282118183101715620004b857620004b862000415565b81604052838152866020858801011115620004d257600080fd5b6200033c8460208301602089016200042b565b60008060008060808587031215620004fc57600080fd5b84516200050981620003fc565b60208601519094506001600160401b03808211156200052757600080fd5b62000535888389016200045e565b945060408701519150808211156200054c57600080fd5b506200055b878288016200045e565b92505060608501516200056e81620003fc565b939692955090935050565b6000828210156200059a57634e487b7160e01b600052601160045260246000fd5b500390565b634e487b7160e01b600052600160045260246000fd5b60008151808452620005cf8160208601602086016200042b565b601f01601f19169290920160200192915050565b6001600160a01b03169052565b604081526000620006056040830185620005b5565b905060018060a01b03831660208301529392505050565b805165ffffffffffff811681146200063357600080fd5b919050565b60008060008060008060008060006101208a8c0312156200065857600080fd5b89516200066581620003fc565b60208b01519099506200067881620003fc565b97506200068860408b016200061c565b96506200069860608b016200061c565b60808b01519096506001600160c01b0381168114620006b657600080fd5b9450620006c660a08b016200061c565b9350620006d660c08b016200061c565b9250620006e660e08b016200061c565b91506101008a015190509295985092959850929598565b60006101c08201905062000713828451620005e3565b60208301516200072d602084018265ffffffffffff169052565b50604083015162000748604084018265ffffffffffff169052565b5060608301516200075d6060840182620005e3565b50608083015162000778608084018265ffffffffffff169052565b5060a08301516200079360a084018265ffffffffffff169052565b5060c0830151620007a860c0840182620005e3565b5060e0830151620007c360e084018265ffffffffffff169052565b506101008381015165ffffffffffff90811691840191909152610120808501516001600160c01b031690840152610140808501519091169083015261016080840151151590830152610180808401511515908301526101a092830151929091019190915290565b600082516200083e8184602087016200042b565b9190910192915050565b602081526000620002c06020830184620005b5565b610333806200086d6000396000f3fe60806040526004361061002d5760003560e01c80635a3b7e42146100445780635c60da1b1461008c5761003c565b3661003c5761003a6100b9565b005b61003a6100b9565b34801561005057600080fd5b50604080518082018252601081526f47656e6572617469766553657269657360801b6020820152905161008391906102b0565b60405180910390f35b34801561009857600080fd5b506100a16100cb565b6040516001600160a01b039091168152602001610083565b6100c96100c4610109565b610137565b565b60006100d5610109565b905090565b90565b606061010283836040518060600160405280602781526020016103006027913961015b565b9392505050565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b3660008037600080366000845af43d6000803e808015610156573d6000f35b3d6000fd5b6060600080856001600160a01b03168560405161017891906102e3565b600060405180830381855af49150503d80600081146101b3576040519150601f19603f3d011682016040523d82523d6000602084013e6101b8565b606091505b50915091506101c9868383876101d3565b9695505050505050565b6060831561024457825161023d576001600160a01b0385163b61023d5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064015b60405180910390fd5b508161024e565b61024e8383610256565b949350505050565b8151156102665781518083602001fd5b8060405162461bcd60e51b815260040161023491906102b0565b60005b8381101561029b578181015183820152602001610283565b838111156102aa576000848401525b50505050565b60208152600082518060208401526102cf816040850160208701610280565b601f01601f19169190910160400192915050565b600082516102f5818460208701610280565b919091019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a164736f6c634300080a000a360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c656400000000000000000000000066ccdd047d23d17887331baf500fccdfac1eb8b900000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000420000000000000000000000000d21cf74a08ceb52555702658d3556300b09831580000000000000000000000000000000000000000000000000000000000000380000000000000000000000000a532df3bedc7a30747c45f57603080f37a60df4800000000000000000000000000000000000000000000000000000000000001a0000000000000000000000000a532df3bedc7a30747c45f57603080f37a60df4800000000000000000000000000000000000000000000000000000000000002ee0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000002400000000000000000000000007ab179690168f06d4f897a6c0b749c1524f4c7720000000000000000000000001bf979282181f2b7a640d17ab5d2e25125f2de5e000000000000000000000000000000000000000000000000000000000000028000000000000000000000000000000000000000000000000000000000000002e000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003f68747470733a2f2f617277656176652e6e65742f55654733674d636f34524e536c506a70556c3252386445344f33544a55736d6b35367559324e374538484d000000000000000000000000000000000000000000000000000000000000000006523346555333000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000065233465553330000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003f68747470733a2f2f617277656176652e6e65742f3569796a2d796f5f697951446172667679424b745f5a536a5752486f61303371497962765738456744466b00000000000000000000000000000000000000000000000000000000000000006c68747470733a2f2f686967686c696768742d63726561746f722d6173736574732e686967686c696768742e78797a2f6d61696e2f626173652d6469722f62306236316532632d663734312d343863342d393463612d6630393063396635383137652f6f6e436861696e446972000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001200000000000000000000000001bf979282181f2b7a640d17ab5d2e25125f2de5e000000000000000000000000a532df3bedc7a30747c45f57603080f37a60df48000000000000000000000000000000000000000000000000000000006529d78700000000000000000000000000000000000000000000000000000000655566fc000000000000000000000000000000000000000000000000000bb9551fc240000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000

Deployed Bytecode

0x60806040526004361061002d5760003560e01c80635a3b7e42146100445780635c60da1b1461008c5761003c565b3661003c5761003a6100b9565b005b61003a6100b9565b34801561005057600080fd5b50604080518082018252601081526f47656e6572617469766553657269657360801b6020820152905161008391906102b0565b60405180910390f35b34801561009857600080fd5b506100a16100cb565b6040516001600160a01b039091168152602001610083565b6100c96100c4610109565b610137565b565b60006100d5610109565b905090565b90565b606061010283836040518060600160405280602781526020016103006027913961015b565b9392505050565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b3660008037600080366000845af43d6000803e808015610156573d6000f35b3d6000fd5b6060600080856001600160a01b03168560405161017891906102e3565b600060405180830381855af49150503d80600081146101b3576040519150601f19603f3d011682016040523d82523d6000602084013e6101b8565b606091505b50915091506101c9868383876101d3565b9695505050505050565b6060831561024457825161023d576001600160a01b0385163b61023d5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064015b60405180910390fd5b508161024e565b61024e8383610256565b949350505050565b8151156102665781518083602001fd5b8060405162461bcd60e51b815260040161023491906102b0565b60005b8381101561029b578181015183820152602001610283565b838111156102aa576000848401525b50505050565b60208152600082518060208401526102cf816040850160208701610280565b601f01601f19169190910160400192915050565b600082516102f5818460208701610280565b919091019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a164736f6c634300080a000a

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.