编译器
0.8.17+commit.8df45f5f
文件 1 的 65:ABProjectPoolSellable.sol
文件 2 的 65:AccessControl.sol
文件 3 的 65:AccessControlEnumerable.sol
文件 4 的 65:AccessControlPausable.sol
文件 6 的 65:BaseRedeemableToken.sol
文件 7 的 65:BaseSellable.sol
文件 8 的 65:BaseTokenURI.sol
文件 9 的 65:BytecodeStorage.sol
文件 10 的 65:Bytes32Strings.sol
文件 13 的 65:DefaultOperatorFilterer.sol
文件 18 的 65:ERC721ACommon.sol
文件 19 的 65:ERC721ATransferRestricted.sol
文件 20 的 65:ERC721ATransferRestrictedBase.sol
文件 21 的 65:ERC721_PackedHashSeed.sol
文件 22 的 65:EnumerableSet.sol
文件 23 的 65:GenArt721CoreV3_Engine_Flex_PROOF.sol
文件 24 的 65:Grails4.sol
pragma solidity ^0.8.15;
import {GenArt721CoreV3_Engine_Flex_PROOF} from "artblocks-contracts/GenArt721CoreV3_Engine_Flex_PROOF.sol";
import {Address} from "openzeppelin-contracts/utils/Address.sol";
import {IGenArt721CoreContractV3_Mintable} from "proof/artblocks/IGenArt721CoreContractV3_Mintable.sol";
import {ABProjectPoolSellable, ProjectPoolSellable} from "proof/presets/pool/ABProjectPoolSellable.sol";
contract Grails4 is ABProjectPoolSellable {
using Address for address payable;
address payable public primaryReceiver;
constructor(
ProjectPoolSellable.Init memory init,
GenArt721CoreV3_Engine_Flex_PROOF flex_,
IGenArt721CoreContractV3_Mintable flexMintGateway_,
address payable primaryReceiver_
) ABProjectPoolSellable(init, flex_, flexMintGateway_) {
primaryReceiver = primaryReceiver_;
}
function _isLongformProject(uint128 projectId) internal view virtual override returns (bool) {
return projectId == 0 || projectId == 5 || projectId == 9;
}
function isLongformProject(uint128 projectId) external view returns (bool) {
return _isLongformProject(projectId);
}
function _artblocksProjectId(uint128 projectId) internal view virtual override returns (uint256) {
assert(_isLongformProject(projectId));
if (projectId == 0) {
return 3;
}
if (projectId == 5) {
return 1;
}
if (projectId == 9) {
return 2;
}
assert(false);
return 0;
}
function artblocksProjectId(uint128 projectId) external view returns (uint256) {
return _artblocksProjectId(projectId);
}
function _numProjects() internal view virtual override returns (uint128) {
return 20;
}
function numProjects() external view returns (uint128) {
return _numProjects();
}
function _maxNumPerProject(uint128 projectId) internal view virtual override returns (uint64) {
return [150, 50, 50, 50, 50, 150, 50, 50, 50, 150, 50, 150, 150, 50, 50, 50, 50, 50, 25, 50][projectId];
}
function maxNumPerProject(uint128 projectId) external view returns (uint64) {
return _maxNumPerProject(projectId);
}
function _handleSale(address to, uint64 num, bytes calldata data) internal virtual override {
super._handleSale(to, num, data);
primaryReceiver.sendValue(msg.value);
}
function burn(uint256 tokenId) public {
_burn(tokenId, true);
}
function setPrimaryReceiver(address payable newPrimaryReceiver) public onlyRole(DEFAULT_STEERING_ROLE) {
primaryReceiver = newPrimaryReceiver;
}
}
文件 25 的 65:Grails4MintPass.sol
pragma solidity ^0.8.15;
import {ERC721ACommon, BaseTokenURI} from "ethier/erc721/BaseTokenURI.sol";
import {SellableRedeemableRestrictableERC721} from "proof/presets/SellableRedeemableRestrictableERC721.sol";
contract Grails4MintPass is SellableRedeemableRestrictableERC721 {
constructor(address admin, address steerer, address payable secondaryReceiver)
ERC721ACommon(admin, steerer, "Grails IV: Mint Pass", "G4PASS", secondaryReceiver, 500)
BaseTokenURI("https://metadata.proof.xyz/grails-iv/pass/")
{}
}
文件 26 的 65:Grails4MintPassRedeemer.sol
pragma solidity ^0.8.15;
import {
MintPassForProjectIDRedeemer, FixedPricedMintPassForProjectIDRedeemer
} from "proof/presets/MintPassRedeemer.sol";
import {ISellable} from "proof/sellers/interfaces/ISellable.sol";
import {Grails4} from "./Grails4.sol";
import {Grails4MintPass} from "./Grails4MintPass.sol";
contract Grails4MintPassRedeemer is FixedPricedMintPassForProjectIDRedeemer {
constructor(Grails4 sellable_, Grails4MintPass pass_, uint256 price)
FixedPricedMintPassForProjectIDRedeemer(sellable_, pass_, price)
{}
}
文件 27 的 65:IAccessControl.sol
文件 28 的 65:IAccessControlEnumerable.sol
文件 29 的 65:IAdminACLV0.sol
文件 30 的 65:IDependencyRegistryCompatibleV0.sol
文件 35 的 65:IERC721Metadata.sol
文件 36 的 65:IERC721Receiver.sol
文件 37 的 65:IEngineRegistryV0.sol
文件 38 的 65:IGenArt721CoreContractV3_Base.sol
文件 39 的 65:IGenArt721CoreContractV3_Engine.sol
文件 40 的 65:IGenArt721CoreContractV3_Engine_Flex.sol
文件 41 的 65:IGenArt721CoreContractV3_Mintable.sol
文件 43 的 65:IOperatorFilterRegistry.sol
文件 44 的 65:IRandomizerV2.sol
文件 45 的 65:IRedeemableToken.sol
文件 47 的 65:InternallyPriced.sol
文件 49 的 65:MintPassRedeemer.sol
文件 50 的 65:OperatorFilterOS.sol
文件 51 的 65:OperatorFilterer.sol
文件 54 的 65:ProjectPoolSellable.sol
文件 55 的 65:PurchaseExecuter.sol
文件 56 的 65:RedeemableERC721ACommon.sol
文件 57 的 65:ReentrancyGuard.sol
文件 58 的 65:SellableCallbacker.sol
文件 59 的 65:SellableERC721ACommon.sol
文件 60 的 65:SellableERC721ACommonByProjectID.sol
文件 61 的 65:SellableRedeemableRestrictableERC721.sol
文件 64 的 65:TokenIDMapping.sol
文件 65 的 65:TransferRestrictedRedeemableERC721ACommon.sol
{
"compilationTarget": {
"src/Grails4MintPassRedeemer.sol": "Grails4MintPassRedeemer"
},
"evmVersion": "london",
"libraries": {},
"metadata": {
"bytecodeHash": "ipfs"
},
"optimizer": {
"enabled": true,
"runs": 9999
},
"remappings": [
":@divergencetech/ethier/=/home/dave/.cache/bazel/_bazel_dave/b9a57168317213f9241a484d2ee2d038/external/ethier_0-55-0/",
":@openzeppelin-4-7-0/=/home/dave/.cache/bazel/_bazel_dave/b9a57168317213f9241a484d2ee2d038/external/openzeppelin-contracts_4-7-0_exact_remap/",
":@openzeppelin-4.7/=/home/dave/.cache/bazel/_bazel_dave/b9a57168317213f9241a484d2ee2d038/external/openzeppelin-contracts_4-7-0_exact_remap/",
":@openzeppelin/=/home/dave/.cache/bazel/_bazel_dave/b9a57168317213f9241a484d2ee2d038/external/openzeppelin-contracts_4-8-1/",
":ERC721A/=/home/dave/.cache/bazel/_bazel_dave/b9a57168317213f9241a484d2ee2d038/external/ERC721A_4-2-3/contracts/",
":ERC721A_root/=/home/dave/.cache/bazel/_bazel_dave/b9a57168317213f9241a484d2ee2d038/external/ERC721A_4-2-3/",
":artblocks-contracts/=/home/dave/.cache/bazel/_bazel_dave/b9a57168317213f9241a484d2ee2d038/external/artblocks-contracts_fa1dc466/contracts/",
":artblocks-contracts_root/=/home/dave/.cache/bazel/_bazel_dave/b9a57168317213f9241a484d2ee2d038/external/artblocks-contracts_fa1dc466/",
":delegation-registry/=/home/dave/.cache/bazel/_bazel_dave/b9a57168317213f9241a484d2ee2d038/external/delegation-registry_2d1a158b/src/",
":delegation-registry_root/=/home/dave/.cache/bazel/_bazel_dave/b9a57168317213f9241a484d2ee2d038/external/delegation-registry_2d1a158b/",
":ds-test/=/home/dave/.cache/bazel/_bazel_dave/b9a57168317213f9241a484d2ee2d038/external/ds-test_013e6c64/src/",
":ds-test_root/=/home/dave/.cache/bazel/_bazel_dave/b9a57168317213f9241a484d2ee2d038/external/ds-test_013e6c64/",
":erc721a/=/home/dave/.cache/bazel/_bazel_dave/b9a57168317213f9241a484d2ee2d038/external/ERC721A_4-2-3/",
":ethier/=/home/dave/.cache/bazel/_bazel_dave/b9a57168317213f9241a484d2ee2d038/external/ethier_0-55-0/contracts/",
":ethier_root/=/home/dave/.cache/bazel/_bazel_dave/b9a57168317213f9241a484d2ee2d038/external/ethier_0-55-0/",
":forge-std/=/home/dave/.cache/bazel/_bazel_dave/b9a57168317213f9241a484d2ee2d038/external/forge-std_1-5-6/src/",
":openzeppelin-contracts-4-7-0/=/home/dave/.cache/bazel/_bazel_dave/b9a57168317213f9241a484d2ee2d038/external/openzeppelin-contracts_4-7-0_exact_remap/contracts/",
":openzeppelin-contracts/=/home/dave/.cache/bazel/_bazel_dave/b9a57168317213f9241a484d2ee2d038/external/openzeppelin-contracts_4-8-1/contracts/",
":openzeppelin-contracts/contracts/=/home/dave/.cache/bazel/_bazel_dave/b9a57168317213f9241a484d2ee2d038/external/openzeppelin-contracts_4-8-1/contracts/",
":openzeppelin-contracts_root-4-7-0/=/home/dave/.cache/bazel/_bazel_dave/b9a57168317213f9241a484d2ee2d038/external/openzeppelin-contracts_4-7-0_exact_remap/",
":openzeppelin-contracts_root/=/home/dave/.cache/bazel/_bazel_dave/b9a57168317213f9241a484d2ee2d038/external/openzeppelin-contracts_4-8-1/",
":operator-filter-registry/src/=/home/dave/.cache/bazel/_bazel_dave/b9a57168317213f9241a484d2ee2d038/external/operator-filter-registry_1-4-1/src/",
":operator-filter-registry_root/=/home/dave/.cache/bazel/_bazel_dave/b9a57168317213f9241a484d2ee2d038/external/operator-filter-registry_1-4-1/",
":proof/artblocks/=/home/dave/proof/proof-seller/contracts/artblocks/src/",
":proof/constants/=/home/dave/proof/proof-seller/contracts/constants/src/",
":proof/presets/=/home/dave/proof/proof-seller/contracts/presets/src/",
":proof/redemption/=/home/dave/proof/proof-seller/contracts/redemption/src/",
":proof/sellers/=/home/dave/proof/proof-seller/contracts/sellers/src/"
]
}
[{"inputs":[{"internalType":"contract Grails4","name":"sellable_","type":"address"},{"internalType":"contract Grails4MintPass","name":"pass_","type":"address"},{"internalType":"uint256","name":"price","type":"uint256"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"bytes","name":"reason","type":"bytes"}],"name":"CallbackFailed","type":"error"},{"inputs":[{"internalType":"contract IRedeemableToken","name":"token","type":"address"},{"internalType":"uint256","name":"passId","type":"uint256"},{"internalType":"bytes","name":"reason","type":"bytes"}],"name":"RedeemableCallbackFailed","type":"error"},{"inputs":[{"internalType":"uint256","name":"actual","type":"uint256"},{"internalType":"uint256","name":"expected","type":"uint256"}],"name":"WrongPayment","type":"error"},{"inputs":[{"internalType":"uint64","name":"num","type":"uint64"}],"name":"cost","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pass","outputs":[{"internalType":"contract IRedeemableToken","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"components":[{"internalType":"uint256","name":"passId","type":"uint256"},{"internalType":"uint128","name":"projectId","type":"uint128"}],"internalType":"struct MintPassForProjectIDRedeemer.Redemption[]","name":"redemptions","type":"tuple[]"}],"name":"redeem","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"sellable","outputs":[{"internalType":"contract ISellable","name":"","type":"address"}],"stateMutability":"view","type":"function"}]