@artblocks/contracts 1.2.0 → 1.2.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (164) hide show
  1. package/README.md +22 -38
  2. package/artifacts/contracts/AdminACLV1.sol/AdminACLV1.json +2 -2
  3. package/artifacts/contracts/BytecodeStorageReaders/BytecodeStorageReaderContractV2.sol/BytecodeStorageReaderContractV2.json +201 -0
  4. package/artifacts/contracts/BytecodeStorageReaders/UniversalBytecodeStorageReader.sol/UniversalBytecodeStorageReader.json +154 -0
  5. package/artifacts/contracts/BytecodeStorageV2Writer.sol/BytecodeStorageV2Writer.json +87 -0
  6. package/artifacts/contracts/DependencyRegistryV0.sol/DependencyRegistryV0.json +144 -14
  7. package/artifacts/contracts/GenArt721CoreV3_Curated.sol/GenArt721CoreV3_Curated.json +2493 -0
  8. package/artifacts/contracts/OwnedCreate2FactoryV0.sol/OwnedCreate2FactoryV0.json +311 -0
  9. package/artifacts/contracts/archive/GenArt721CoreV3.sol/GenArt721CoreV3.json +15 -2
  10. package/artifacts/contracts/archive/GenArt721CoreV3_Explorations.sol/GenArt721CoreV3_Explorations.json +15 -2
  11. package/artifacts/contracts/archive/minter-suite/Minters/MinterDAExp/MinterDAExpV2.sol/MinterDAExpV2.json +2 -2
  12. package/artifacts/contracts/archive/minter-suite/Minters/MinterDAExp/MinterDAExpV3.sol/MinterDAExpV3.json +2 -2
  13. package/artifacts/contracts/archive/minter-suite/Minters/MinterDAExp/MinterDAExpV4.sol/MinterDAExpV4.json +2 -2
  14. package/artifacts/contracts/archive/minter-suite/Minters/MinterDAExpSettlement/MinterDAExpSettlementV0.sol/MinterDAExpSettlementV0.json +2 -2
  15. package/artifacts/contracts/archive/minter-suite/Minters/MinterDAExpSettlement/MinterDAExpSettlementV1.sol/MinterDAExpSettlementV1.json +2 -2
  16. package/artifacts/contracts/archive/minter-suite/Minters/MinterDAExpSettlement/MinterDAExpSettlementV2.sol/MinterDAExpSettlementV2.json +2 -2
  17. package/artifacts/contracts/archive/minter-suite/Minters/MinterDALin/MinterDALinV2.sol/MinterDALinV2.json +2 -2
  18. package/artifacts/contracts/archive/minter-suite/Minters/MinterDALin/MinterDALinV3.sol/MinterDALinV3.json +2 -2
  19. package/artifacts/contracts/archive/minter-suite/Minters/MinterDALin/MinterDALinV4.sol/MinterDALinV4.json +2 -2
  20. package/artifacts/contracts/archive/minter-suite/Minters/MinterHolder/MinterHolderV1.sol/MinterHolderV1.json +2 -2
  21. package/artifacts/contracts/archive/minter-suite/Minters/MinterHolder/MinterHolderV2.sol/MinterHolderV2.json +2 -2
  22. package/artifacts/contracts/archive/minter-suite/Minters/MinterHolder/MinterHolderV3.sol/MinterHolderV3.json +2 -2
  23. package/artifacts/contracts/archive/minter-suite/Minters/MinterHolder/MinterHolderV4.sol/MinterHolderV4.json +2 -2
  24. package/artifacts/contracts/archive/minter-suite/Minters/MinterMerkle/MinterMerkleV1.sol/MinterMerkleV1.json +2 -2
  25. package/artifacts/contracts/archive/minter-suite/Minters/MinterMerkle/MinterMerkleV2.sol/MinterMerkleV2.json +2 -2
  26. package/artifacts/contracts/archive/minter-suite/Minters/MinterMerkle/MinterMerkleV3.sol/MinterMerkleV3.json +2 -2
  27. package/artifacts/contracts/archive/minter-suite/Minters/MinterMerkle/MinterMerkleV4.sol/MinterMerkleV4.json +2 -2
  28. package/artifacts/contracts/archive/minter-suite/Minters/MinterMerkle/MinterMerkleV5.sol/MinterMerkleV5.json +2 -2
  29. package/artifacts/contracts/archive/minter-suite/Minters/MinterPolyptych/MinterPolyptychV0.sol/IGenArt721CoreContractV3WithRandomizer.json +37 -0
  30. package/artifacts/contracts/archive/minter-suite/Minters/MinterPolyptych/MinterPolyptychV0.sol/MinterPolyptychV0.json +2 -2
  31. package/artifacts/contracts/archive/minter-suite/Minters/MinterSEA/MinterSEAV0.sol/MinterSEAV0.json +2 -2
  32. package/artifacts/contracts/archive/minter-suite/Minters/MinterSetPrice/MinterSetPriceV2.sol/MinterSetPriceV2.json +2 -2
  33. package/artifacts/contracts/archive/minter-suite/Minters/MinterSetPrice/MinterSetPriceV3.sol/MinterSetPriceV3.json +2 -2
  34. package/artifacts/contracts/archive/minter-suite/Minters/MinterSetPrice/MinterSetPriceV4.sol/MinterSetPriceV4.json +2 -2
  35. package/artifacts/contracts/archive/minter-suite/Minters/MinterSetPriceERC20/MinterSetPriceERC20V2.sol/MinterSetPriceERC20V2.json +2 -2
  36. package/artifacts/contracts/archive/minter-suite/Minters/MinterSetPriceERC20/MinterSetPriceERC20V3.sol/MinterSetPriceERC20V3.json +2 -2
  37. package/artifacts/contracts/archive/minter-suite/Minters/MinterSetPriceERC20/MinterSetPriceERC20V4.sol/MinterSetPriceERC20V4.json +2 -2
  38. package/artifacts/contracts/engine/V3/EngineFactoryV0.sol/EngineFactoryV0.json +20 -2
  39. package/artifacts/contracts/engine/V3/GenArt721CoreV3_Engine.sol/GenArt721CoreV3_Engine.json +48 -12
  40. package/artifacts/contracts/engine/V3/GenArt721CoreV3_Engine_Flex.sol/GenArt721CoreV3_Engine_Flex.json +76 -40
  41. package/artifacts/contracts/engine/V3/forks/GenArt721CoreV3_Engine_Flex_PROOF.sol/GenArt721CoreV3_Engine_Flex_PROOF.json +15 -2
  42. package/artifacts/contracts/engine/V3/forks/PROHIBITION/AdminACLV0_PROHIBITION.sol/AdminACLV0_PROHIBITION.json +2 -2
  43. package/artifacts/contracts/engine/V3/forks/PROHIBITION/GenArt721CoreV3_Engine_Flex_PROHIBITION.sol/GenArt721CoreV3_Engine_Flex_PROHIBITION.json +15 -2
  44. package/artifacts/contracts/engine/V3/forks/PROHIBITION/interfaces/IGenArt721CoreContractV3_Engine_Flex_PROHIBITION.sol/IGenArt721CoreContractV3_Engine_Flex_PROHIBITION.json +37 -0
  45. package/artifacts/contracts/engine-registry/CoreRegistryV1.sol/CoreRegistryV1.json +2 -2
  46. package/artifacts/contracts/generator/AddressChunks.sol/AddressChunks.json +10 -0
  47. package/artifacts/contracts/generator/GenArt721GeneratorV0.sol/GenArt721GeneratorV0.json +333 -0
  48. package/artifacts/contracts/generator/GenArt721GeneratorV0.sol/ILegacyGenArt721CoreV2_PBAB_Flex.json +47 -0
  49. package/artifacts/contracts/interfaces/v0.8.x/IBytecodeStorageReader.sol/IBytecodeStorageReader.json +7 -7
  50. package/artifacts/contracts/interfaces/v0.8.x/IBytecodeStorageReaderV2.sol/IBytecodeStorageReaderV2.json +7 -7
  51. package/artifacts/contracts/interfaces/v0.8.x/IBytecodeStorageReader_Base.sol/IBytecodeStorageReader_Base.json +30 -0
  52. package/artifacts/contracts/interfaces/v0.8.x/ICoreRegistryV1.sol/ICoreRegistryV1.json +13 -0
  53. package/artifacts/contracts/interfaces/v0.8.x/IDependencyRegistryV0.sol/IDependencyRegistryV0.json +170 -0
  54. package/artifacts/contracts/interfaces/v0.8.x/IGenArt721CoreContractV3.sol/IGenArt721CoreContractV3.json +37 -0
  55. package/artifacts/contracts/interfaces/v0.8.x/IGenArt721CoreContractV3_Base.sol/IGenArt721CoreContractV3_Base.json +37 -0
  56. package/artifacts/contracts/interfaces/v0.8.x/IGenArt721CoreContractV3_Engine.sol/IGenArt721CoreContractV3_Engine.json +42 -0
  57. package/artifacts/contracts/interfaces/v0.8.x/IGenArt721CoreContractV3_Engine_Flex.sol/IGenArt721CoreContractV3_Engine_Flex.json +42 -0
  58. package/artifacts/contracts/interfaces/v0.8.x/IGenArt721CoreContractV3_Engine_Flex_PreV3p2.sol/IGenArt721CoreContractV3_Engine_Flex_PreV3p2.json +37 -0
  59. package/artifacts/contracts/interfaces/v0.8.x/IGenArt721CoreContractV3_Engine_PreV3p2.sol/IGenArt721CoreContractV3_Engine_PreV3p2.json +37 -0
  60. package/artifacts/contracts/interfaces/v0.8.x/IGenArt721CoreProjectScriptV0.sol/IGenArt721CoreProjectScriptV0.json +59 -0
  61. package/artifacts/contracts/interfaces/v0.8.x/IGenArt721CoreProjectScriptV1.sol/IGenArt721CoreProjectScriptV1.json +64 -0
  62. package/artifacts/contracts/interfaces/v0.8.x/IGenArt721CoreTokenHashProviderV0.sol/IGenArt721CoreTokenHashProviderV0.json +30 -0
  63. package/artifacts/contracts/interfaces/v0.8.x/IGenArt721CoreTokenHashProviderV1.sol/IGenArt721CoreTokenHashProviderV1.json +30 -0
  64. package/artifacts/contracts/interfaces/v0.8.x/IGenArt721GeneratorV0.sol/IGenArt721GeneratorV0.json +63 -0
  65. package/artifacts/contracts/interfaces/v0.8.x/IOwnedCreate2FactoryV0.sol/IOwnedCreate2FactoryV0.json +74 -0
  66. package/artifacts/contracts/interfaces/v0.8.x/ISeaDropShimForContract.sol/ISeaDropShimForContract.json +37 -0
  67. package/artifacts/contracts/interfaces/v0.8.x/ISharedMinterMinPriceV0.sol/ISharedMinterMinPriceV0.json +37 -0
  68. package/artifacts/contracts/interfaces/v0.8.x/IUniversalBytecodeStorageReader.sol/IUniversalBytecodeStorageReader.json +56 -0
  69. package/artifacts/contracts/interfaces/v0.8.x/integration-refs/OpenSea/ERC721SeaDropStructsErrorsAndEvents.sol/ERC721SeaDropStructsErrorsAndEvents.json +43 -0
  70. package/artifacts/contracts/interfaces/v0.8.x/integration-refs/OpenSea/INonFungibleSeaDropToken.sol/INonFungibleSeaDropToken.json +715 -0
  71. package/artifacts/contracts/interfaces/v0.8.x/integration-refs/OpenSea/ISeaDrop.sol/ISeaDrop.json +1571 -0
  72. package/artifacts/contracts/interfaces/v0.8.x/integration-refs/OpenSea/ISeaDropTokenContractMetadata.sol/ISeaDropTokenContractMetadata.json +345 -0
  73. package/artifacts/contracts/interfaces/v0.8.x/integration-refs/OpenSea/SeaDropErrorsAndEvents.sol/SeaDropErrorsAndEvents.json +717 -0
  74. package/artifacts/contracts/libs/v0.8.x/AuthLib.sol/AuthLib.json +2 -2
  75. package/artifacts/contracts/libs/v0.8.x/Bytes32Strings.sol/Bytes32Strings.json +2 -2
  76. package/artifacts/contracts/libs/v0.8.x/DependencyRegistryStorageLib.sol/DependencyRegistryStorageLib.json +2 -2
  77. package/artifacts/contracts/libs/v0.8.x/JsonStatic.sol/JsonStatic.json +10 -0
  78. package/artifacts/contracts/libs/v0.8.x/V3FlexLib.sol/V3FlexLib.json +9 -22
  79. package/artifacts/contracts/libs/v0.8.x/minter-libs/MaxInvocationsLib.sol/MaxInvocationsLib.json +2 -2
  80. package/artifacts/contracts/libs/v0.8.x/minter-libs/MinPriceLib.sol/MinPriceLib.json +24 -0
  81. package/artifacts/contracts/libs/v0.8.x/minter-libs/PolyptychLib.sol/PolyptychLib.json +2 -2
  82. package/artifacts/contracts/libs/v0.8.x/minter-libs/RAMLib.sol/RAMLib.json +2 -2
  83. package/artifacts/contracts/libs/v0.8.x/minter-libs/SEALib.sol/SEALib.json +2 -2
  84. package/artifacts/contracts/libs/v0.8.x/minter-libs/SettlementExpLib.sol/SettlementExpLib.json +2 -2
  85. package/artifacts/contracts/libs/v0.8.x/minter-libs/SplitFundsLib.sol/SplitFundsLib.json +2 -2
  86. package/artifacts/contracts/minter-suite/MinterFilter/MinterFilterV1.sol/MinterFilterV1.json +2 -2
  87. package/artifacts/contracts/minter-suite/MinterFilter/MinterFilterV2.sol/MinterFilterV2.json +2 -2
  88. package/artifacts/contracts/minter-suite/Minters/MinterDAExpHolderV5.sol/MinterDAExpHolderV5.json +2 -2
  89. package/artifacts/contracts/minter-suite/Minters/MinterDAExpSettlementV3.sol/MinterDAExpSettlementV3.json +2 -2
  90. package/artifacts/contracts/minter-suite/Minters/MinterDAExpV5.sol/MinterDAExpV5.json +2 -2
  91. package/artifacts/contracts/minter-suite/Minters/MinterDALinHolderV5.sol/MinterDALinHolderV5.json +2 -2
  92. package/artifacts/contracts/minter-suite/Minters/MinterDALinV5.sol/MinterDALinV5.json +2 -2
  93. package/artifacts/contracts/minter-suite/Minters/MinterMinPriceMerkleV0.sol/MinterMinPriceMerkleV0.json +664 -0
  94. package/artifacts/contracts/minter-suite/Minters/MinterMinPriceV0.sol/MinterMinPriceV0.json +387 -0
  95. package/artifacts/contracts/minter-suite/Minters/MinterRAMV0.sol/MinterRAMV0.json +2 -2
  96. package/artifacts/contracts/minter-suite/Minters/MinterSEAV1.sol/MinterSEAV1.json +2 -2
  97. package/artifacts/contracts/minter-suite/Minters/MinterSetPriceERC20V5.sol/MinterSetPriceERC20V5.json +2 -2
  98. package/artifacts/contracts/minter-suite/Minters/MinterSetPriceHolderV5.sol/MinterSetPriceHolderV5.json +2 -2
  99. package/artifacts/contracts/minter-suite/Minters/MinterSetPriceMerkleV5.sol/MinterSetPriceMerkleV5.json +2 -2
  100. package/artifacts/contracts/minter-suite/Minters/MinterSetPricePolyptychERC20V5.sol/MinterSetPricePolyptychERC20V5.json +2 -2
  101. package/artifacts/contracts/minter-suite/Minters/MinterSetPricePolyptychV5.sol/MinterSetPricePolyptychV5.json +2 -2
  102. package/artifacts/contracts/minter-suite/Minters/MinterSetPriceV5.sol/MinterSetPriceV5.json +2 -2
  103. package/artifacts/contracts/minter-suite/Minters/one-off/MinterSetPriceV5_SingleCore.sol/MinterSetPriceV5_SingleCore.json +2 -2
  104. package/artifacts/contracts/minter-suite/Minters/one-off/SeaDropXArtBlocksShim.sol/SeaDropXArtBlocksShim.json +1206 -0
  105. package/artifacts/contracts/mock/BytecodeV1LibCallsMock.sol/BytecodeV1LibCallsMock.json +2 -2
  106. package/artifacts/contracts/mock/BytecodeV2LibCallsMock.sol/BytecodeV2LibCallsMock.json +2 -2
  107. package/artifacts/contracts/mock/DummySharedMinter.sol/DummySharedMinter.json +2 -2
  108. package/artifacts/contracts/mock/ERC20MockAltDecimals.sol/ERC20MockAltDecimals.json +318 -0
  109. package/artifacts/contracts/mock/ForceSendMock.sol/ForceSendMock.json +2 -2
  110. package/artifacts/contracts/mock/GenArt721CoreV3_Engine_IncorrectCoreType.sol/GenArt721CoreV3_Engine_IncorrectCoreType.json +2 -2
  111. package/artifacts/contracts/mock/MockAdminACLV0_PROHIBITION.sol/MockAdminACLV0Events_PROHIBITION.json +2 -2
  112. package/artifacts/contracts/mock/MockFileStore.sol/MockFileStore.json +35 -0
  113. package/artifacts/contracts/mock/OriginRegisterMock.sol/OriginRegisterMock.json +2 -2
  114. package/artifacts/contracts/mock/RandomizerV2_NoAssignMock.sol/RandomizerV2_NoAssignMock.json +2 -2
  115. package/artifacts/contracts/randomizer/deprecated/PolyptychRandomizerV0.sol/BasicPolyptychRandomizerV0.json +2 -2
  116. package/artifacts/contracts/randomizer/deprecated/RandomizerV2.sol/BasicRandomizerV2.json +2 -2
  117. package/artifacts/contracts/randomizer/shared/SharedRandomizerV0.sol/SharedRandomizerV0.json +2 -2
  118. package/contracts/BytecodeStorageReaders/BytecodeStorageReaderContractV2.sol +103 -0
  119. package/contracts/BytecodeStorageReaders/UniversalBytecodeStorageReader.sol +70 -0
  120. package/contracts/BytecodeStorageV2Writer.sol +69 -0
  121. package/contracts/DependencyRegistryV0.sol +229 -60
  122. package/contracts/GenArt721CoreV3_Curated.sol +133 -0
  123. package/contracts/OwnedCreate2FactoryV0.sol +173 -0
  124. package/contracts/engine/V3/EngineFactoryV0.sol +10 -2
  125. package/contracts/engine/V3/GenArt721CoreV3_Engine.sol +139 -70
  126. package/contracts/engine/V3/GenArt721CoreV3_Engine_Flex.sol +141 -71
  127. package/contracts/generator/AddressChunks.sol +106 -0
  128. package/contracts/generator/GenArt721GeneratorV0.sol +1094 -0
  129. package/contracts/generator/scripty-support/Scripty.sol +5 -0
  130. package/contracts/interfaces/v0.8.x/IBytecodeStorageReader.sol +34 -36
  131. package/contracts/interfaces/v0.8.x/IBytecodeStorageReaderV2.sol +5 -3
  132. package/contracts/interfaces/v0.8.x/IBytecodeStorageReader_Base.sol +20 -0
  133. package/contracts/interfaces/v0.8.x/ICoreRegistryV1.sol +5 -0
  134. package/contracts/interfaces/v0.8.x/IDependencyRegistryV0.sol +94 -0
  135. package/contracts/interfaces/v0.8.x/IGenArt721CoreContractV3_Base.sol +13 -2
  136. package/contracts/interfaces/v0.8.x/IGenArt721CoreContractV3_Engine.sol +3 -1
  137. package/contracts/interfaces/v0.8.x/IGenArt721CoreProjectScriptV0.sol +22 -0
  138. package/contracts/interfaces/v0.8.x/IGenArt721CoreProjectScriptV1.sol +23 -0
  139. package/contracts/interfaces/v0.8.x/IGenArt721CoreTokenHashProviderV0.sol +11 -0
  140. package/contracts/interfaces/v0.8.x/IGenArt721CoreTokenHashProviderV1.sol +9 -0
  141. package/contracts/interfaces/v0.8.x/IGenArt721GeneratorV0.sol +14 -0
  142. package/contracts/interfaces/v0.8.x/IOwnedCreate2FactoryV0.sol +40 -0
  143. package/contracts/interfaces/v0.8.x/ISeaDropShimForContract.sol +19 -0
  144. package/contracts/interfaces/v0.8.x/ISharedMinterMinPriceV0.sol +22 -0
  145. package/contracts/interfaces/v0.8.x/ISharedMinterRequired.sol +10 -4
  146. package/contracts/interfaces/v0.8.x/IUniversalBytecodeStorageReader.sol +28 -0
  147. package/contracts/interfaces/v0.8.x/integration-refs/OpenSea/ERC721SeaDropStructsErrorsAndEvents.sol +58 -0
  148. package/contracts/interfaces/v0.8.x/integration-refs/OpenSea/INonFungibleSeaDropToken.sol +186 -0
  149. package/contracts/interfaces/v0.8.x/integration-refs/OpenSea/ISeaDrop.sol +337 -0
  150. package/contracts/interfaces/v0.8.x/integration-refs/OpenSea/ISeaDropTokenContractMetadata.sol +152 -0
  151. package/contracts/interfaces/v0.8.x/integration-refs/OpenSea/SeaDropErrorsAndEvents.sol +320 -0
  152. package/contracts/interfaces/v0.8.x/integration-refs/OpenSea/SeaDropStructs.sol +146 -0
  153. package/contracts/libs/v0.8.x/Bytes32Strings.sol +20 -0
  154. package/contracts/libs/v0.8.x/DependencyRegistryStorageLib.sol +11 -3
  155. package/contracts/libs/v0.8.x/JsonStatic.sol +373 -0
  156. package/contracts/libs/v0.8.x/V3FlexLib.sol +9 -3
  157. package/contracts/libs/v0.8.x/minter-libs/MinPriceLib.sol +64 -0
  158. package/contracts/libs/v0.8.x/minter-libs/SplitFundsLib.sol +107 -0
  159. package/contracts/minter-suite/Minters/MinterMinPriceMerkleV0.sol +765 -0
  160. package/contracts/minter-suite/Minters/MinterMinPriceV0.sol +462 -0
  161. package/contracts/minter-suite/Minters/one-off/SeaDropXArtBlocksShim.sol +869 -0
  162. package/contracts/mock/ERC20MockAltDecimals.sol +31 -0
  163. package/contracts/mock/MockFileStore.sol +22 -0
  164. package/package.json +20 -18
@@ -0,0 +1,5 @@
1
+ // SPDX-License-Identifier: LGPL-3.0-only
2
+ pragma solidity ^0.8.0;
3
+
4
+ // This file is just used to make sure ScriptyBuilderV2.sol is compiled for use in tests.
5
+ import "scripty.sol/contracts/scripty/ScriptyBuilderV2.sol";
@@ -3,60 +3,58 @@
3
3
 
4
4
  pragma solidity ^0.8.0;
5
5
 
6
+ import {IBytecodeStorageReader_Base} from "./IBytecodeStorageReader_Base.sol";
7
+
6
8
  /**
7
- * @title Art Blocks Script Storage Library (Reader)
8
- * @notice This interface defines the expected read functions for the Art Blocks Script Storage Library (Reader).
9
+ * @title Art Blocks Script Storage Library - Reader Contract
10
+ * @notice This interface defines the expected read functions for the Art Blocks Script Storage Library's Reader
11
+ * Contracts. It is extended from the base interface to add additional read functions for further introspection of
12
+ * stored data.
9
13
  */
10
- interface IBytecodeStorageReader {
11
- /**
12
- * @notice Read a string from contract bytecode
13
- * @param _address address of deployed contract with bytecode stored in the V0 or V1 format
14
- * @return data string read from contract bytecode
15
- * @dev This function performs input validation that the contract to read is in an expected format
16
- */
17
- function readFromBytecode(
18
- address _address
19
- ) external view returns (string memory data);
20
-
14
+ interface IBytecodeStorageReader is IBytecodeStorageReader_Base {
21
15
  /**
22
- * @notice Read the bytes from contract bytecode that was written to the EVM using SSTORE2
23
- * @param _address address of deployed contract with bytecode stored in the SSTORE2 format
24
- * @return data bytes read from contract bytecode
25
- * @dev This function performs no input validation on the provided contract,
26
- * other than that there is content to read (but not that its a "storage contract")
16
+ * @notice Read a bytes array from the SSTORE2-formatted bytecode of a contract.
17
+ * Note that this function is only compatible with contracts that have been deployed using the popular SSTORE2
18
+ * library.
19
+ * @dev see versioned BytecodeStorageReader implementation details to understand which data are being returned,
20
+ * espcially in the context of EOF updates.
21
+ * @param address_ address of contract with SSTORE2-formatted bytecode to be read
22
+ * @return data The bytes data stored at the specific address.
27
23
  */
28
24
  function readBytesFromSSTORE2Bytecode(
29
- address _address
25
+ address address_
30
26
  ) external view returns (bytes memory data);
31
27
 
32
28
  /**
33
- * @notice Read the bytes from contract bytecode, with an explicitly provided starting offset
34
- * @param _address address of deployed contract with bytecode stored in the V0 or V1 format
35
- * @param _offset offset to read from in contract bytecode, explicitly provided (not calculated)
36
- * @return data bytes read from contract bytecode
37
- * @dev This function performs no input validation on the provided contract,
38
- * other than that there is content to read (but not that its a "storage contract")
29
+ * @notice Read a bytes array from the a contract deployed via BytecodeStorage.
30
+ * @dev see versioned BytecodeStorageReader implementation details to understand which data are being returned, and
31
+ * how offset is interpreted, especially in the context of EOF updates.
32
+ * @param address_ address of contract with valid bytecode to be read
33
+ * @param offset offset to read from in contract bytecode, explicitly provided (not calculated)
34
+ * @return The bytes data stored at the specific address.
39
35
  */
40
36
  function readBytesFromBytecode(
41
- address _address,
42
- uint256 _offset
43
- ) external view returns (bytes memory data);
37
+ address address_,
38
+ uint256 offset
39
+ ) external view returns (bytes memory);
40
+
41
+ //------ Metadata Functions ------//
44
42
 
45
43
  /**
46
- * @notice Get address for deployer for given contract bytecode
47
- * @param _address address of deployed contract with bytecode stored in the V0 or V1 format
48
- * @return writerAddress address read from contract bytecode
44
+ * @notice Get address of deployer for given contract deployed via BytecodeStorage.
45
+ * @param address_ address of deployed contract
46
+ * @return writerAddress address of deployer
49
47
  */
50
48
  function getWriterAddressForBytecode(
51
- address _address
49
+ address address_
52
50
  ) external view returns (address);
53
51
 
54
52
  /**
55
- * @notice Get version for given contract bytecode
56
- * @param _address address of deployed contract with bytecode stored in the V0 or V1 format
57
- * @return version version read from contract bytecode
53
+ * @notice Get version for given contract deployed via BytecodeStorage.
54
+ * @param address_ address of deployed contract
55
+ * @return version version of the contract
58
56
  */
59
57
  function getLibraryVersionForBytecode(
60
- address _address
58
+ address address_
61
59
  ) external view returns (bytes32);
62
60
  }
@@ -7,14 +7,16 @@ import {IBytecodeStorageReader} from "./IBytecodeStorageReader.sol";
7
7
 
8
8
  /**
9
9
  * @title Art Blocks Script Storage Library (Reader)
10
- * @notice This interface defines the expected read functions for the Art Blocks Script Storage Library (Reader).
10
+ * @notice This interface defines the expected read functions for a Bytecode Storage Reader contract.
11
11
  * @dev This interface extends the V1 interface to add a function to get if data are stored in compressed format,
12
12
  * which is functionality added in the V2 format of the bytecode storage.
13
13
  */
14
14
  interface IBytecodeStorageReaderV2 is IBytecodeStorageReader {
15
+ //------ Metadata Functions ------//
16
+
15
17
  /**
16
- * @notice Get if data are stored in compressed format for given contract bytecode
17
- * @param _address address of deployed contract with bytecode stored in the V0, V1, or V2 format
18
+ * @notice Get if data are stored in compressed format for given contract deployed via BytecodeStorage.
19
+ * @param _address address of deployed contract
18
20
  * @return isCompressed boolean indicating if the stored data are compressed
19
21
  */
20
22
  function getIsCompressedForBytecode(
@@ -0,0 +1,20 @@
1
+ // SPDX-License-Identifier: LGPL-3.0-only
2
+ // Creatd By: Art Blocks Inc.
3
+
4
+ pragma solidity ^0.8.0;
5
+
6
+ /**
7
+ * @title Art Blocks Script Storage Library - Minimal Interface for Reader Contracts
8
+ * @notice This interface defines the minimal expected read function(s) for a Bytecode Storage Reader contract.
9
+ */
10
+ interface IBytecodeStorageReader_Base {
11
+ /**
12
+ * @notice Read a string from a data contract deployed via BytecodeStorage.
13
+ * @dev may also support reading additional stored data formats in the future.
14
+ * @param address_ address of contract deployed via BytecodeStorage to be read
15
+ * @return data The string data stored at the specific address.
16
+ */
17
+ function readFromBytecode(
18
+ address address_
19
+ ) external view returns (string memory data);
20
+ }
@@ -22,4 +22,9 @@ interface ICoreRegistryV1 is IEngineRegistryV0 {
22
22
  function isRegisteredContract(
23
23
  address contractAddress
24
24
  ) external view returns (bool isRegistered);
25
+
26
+ function getAllRegisteredContracts()
27
+ external
28
+ view
29
+ returns (address[] memory);
25
30
  }
@@ -3,10 +3,22 @@
3
3
  pragma solidity ^0.8.19;
4
4
 
5
5
  interface IDependencyRegistryV0 {
6
+ // legacy event used before deferring to core registry for allowlist
6
7
  event SupportedCoreContractAdded(address indexed coreContractAddress);
7
8
 
9
+ // legacy event used before deferring to core registry for allowlist
8
10
  event SupportedCoreContractRemoved(address indexed coreContractAddress);
9
11
 
12
+ // active event used to add additional supported contracts beyond what core registry allows
13
+ event SupportedCoreContractOverrideAdded(
14
+ address indexed coreContractAddress
15
+ );
16
+
17
+ // active event used to remove additional supported contracts beyond what core registry allows
18
+ event SupportedCoreContractOverrideRemoved(
19
+ address indexed coreContractAddress
20
+ );
21
+
10
22
  event ProjectDependencyOverrideAdded(
11
23
  address indexed coreContractAddress,
12
24
  uint256 indexed projectId,
@@ -71,6 +83,8 @@ interface IDependencyRegistryV0 {
71
83
 
72
84
  event DependencyScriptUpdated(bytes32 indexed dependencyNameAndVersion);
73
85
 
86
+ event CoreRegistryAddressUpdated(address indexed coreRegistryAddress);
87
+
74
88
  /**
75
89
  * @notice Returns the count of scripts for dependency `dependencyNameAndVersion`.
76
90
  * @param dependencyNameAndVersion Dependency type to be queried.
@@ -97,4 +111,84 @@ interface IDependencyRegistryV0 {
97
111
  bytes32 dependencyNameAndVersion,
98
112
  uint256 index
99
113
  ) external view returns (string memory);
114
+
115
+ /**
116
+ * @notice Returns details for a given dependency type `dependencyNameAndVersion`.
117
+ * @param dependencyNameAndVersion Name and version of dependency (i.e. "name@version") used to identify dependency.
118
+ * @return nameAndVersion String representation of `dependencyNameAndVersion`.
119
+ * (e.g. "p5js(atSymbol)1.0.0")
120
+ * @return licenseType License type for dependency
121
+ * @return preferredCDN Preferred CDN URL for dependency
122
+ * @return additionalCDNCount Count of additional CDN URLs for dependency
123
+ * @return preferredRepository Preferred repository URL for dependency
124
+ * @return additionalRepositoryCount Count of additional repository URLs for dependency
125
+ * @return dependencyWebsite Project website URL for dependency
126
+ * @return availableOnChain Whether dependency is available on chain
127
+ * @return scriptCount Count of on-chain scripts for dependency
128
+ */
129
+ function getDependencyDetails(
130
+ bytes32 dependencyNameAndVersion
131
+ )
132
+ external
133
+ view
134
+ returns (
135
+ string memory nameAndVersion,
136
+ string memory licenseType,
137
+ string memory preferredCDN,
138
+ uint24 additionalCDNCount,
139
+ string memory preferredRepository,
140
+ uint24 additionalRepositoryCount,
141
+ string memory dependencyWebsite,
142
+ bool availableOnChain,
143
+ uint24 scriptCount
144
+ );
145
+
146
+ /**
147
+ * @notice Returns the dependency name and version for a given project (`projectId`)
148
+ * on a given core contract (`_contractAddress`). If no override is set,
149
+ * the core contract is called to retrieve the script type and version as
150
+ * dependency type. For any contract earlier than v3, that does not have
151
+ * an override set, this will revert.
152
+ * @param contractAddress Core contract address.
153
+ * @param projectId Project to return dependency type for.
154
+ * @return dependencyType Identifier for the dependency (i.e. "name@version") used by project.
155
+ */
156
+ function getDependencyNameAndVersionForProject(
157
+ address contractAddress,
158
+ uint256 projectId
159
+ ) external view returns (string memory);
160
+
161
+ /**
162
+ * @notice Returns whether the given contract address is a supported core contract.
163
+ * @param coreContractAddress Address of the core contract to be queried.
164
+ * @return True if the given contract address is a supported core contract.
165
+ */
166
+ function isSupportedCoreContract(
167
+ address coreContractAddress
168
+ ) external view returns (bool);
169
+
170
+ /**
171
+ * @notice Convenience function that returns whether `_sender` is allowed
172
+ * to call function with selector `_selector` on contract `_contract`, as
173
+ * determined by this contract's current Admin ACL contract. Expected use
174
+ * cases include minter contracts checking if caller is allowed to call
175
+ * admin-gated functions on minter contracts.
176
+ * @param sender Address of the sender calling function with selector
177
+ * `selector` on contract `contract_`.
178
+ * @param contract_ Address of the contract being called by `sender`.
179
+ * @param selector Function selector of the function being called by
180
+ * `sender`.
181
+ * @return bool Whether `sender` is allowed to call function with selector
182
+ * `selector` on contract `contract_`.
183
+ * @dev assumes the Admin ACL contract is the owner of this contract, which
184
+ * is expected to always be true.
185
+ * @dev adminACLContract is expected to either be null address (if owner
186
+ * has renounced ownership), or conform to IAdminACLV0 interface. Check for
187
+ * null address first to avoid revert when admin has renounced ownership.
188
+ */
189
+ function adminACLAllowed(
190
+ address sender,
191
+ address contract_,
192
+ bytes4 selector
193
+ ) external returns (bool);
100
194
  }
@@ -4,6 +4,7 @@
4
4
  pragma solidity ^0.8.0;
5
5
 
6
6
  import "./IAdminACLV0.sol";
7
+ import "./IGenArt721CoreProjectScriptV1.sol";
7
8
 
8
9
  /**
9
10
  * @title This interface is intended to house interface items that are common
@@ -12,7 +13,7 @@ import "./IAdminACLV0.sol";
12
13
  * add support the Royalty Registry by default.
13
14
  * @author Art Blocks Inc.
14
15
  */
15
- interface IGenArt721CoreContractV3_Base {
16
+ interface IGenArt721CoreContractV3_Base is IGenArt721CoreProjectScriptV1 {
16
17
  // This interface emits generic events that contain fields that indicate
17
18
  // which parameter has been updated. This is sufficient for application
18
19
  // state management, while also simplifying the contract and indexing code.
@@ -21,6 +22,15 @@ interface IGenArt721CoreContractV3_Base {
21
22
  // be introspected by indexers due to the design of this smart contract
22
23
  // exposing these state changes via publicly viewable fields.
23
24
 
25
+ /**
26
+ * @notice Event emitted when the Art Blocks Curation Registry contract is updated.
27
+ * @dev only utilized by subset of V3 core contracts (Art Blocks Curated contracts)
28
+ * @param artblocksCurationRegistryAddress Address of Art Blocks Curation Registry contract.
29
+ */
30
+ event ArtBlocksCurationRegistryContractUpdated(
31
+ address indexed artblocksCurationRegistryAddress
32
+ );
33
+
24
34
  /**
25
35
  * @notice Project's royalty splitter was updated to `_splitter`.
26
36
  * @dev New event in v3.2
@@ -46,7 +56,8 @@ interface IGenArt721CoreContractV3_Base {
46
56
  FIELD_PROVIDER_SALES_ADDRESSES, // 7
47
57
  FIELD_PROVIDER_PRIMARY_SALES_PERCENTAGES, // 8
48
58
  FIELD_PROVIDER_SECONDARY_SALES_BPS, // 9
49
- FIELD_SPLIT_PROVIDER // 10
59
+ FIELD_SPLIT_PROVIDER, // 10
60
+ FIELD_BYTECODE_STORAGE_READER // 11
50
61
  }
51
62
 
52
63
  // The following fields are used to indicate which project-level parameter
@@ -51,11 +51,13 @@ interface IGenArt721CoreContractV3_Engine is IGenArt721CoreContractV3_Base {
51
51
  * @param adminACLContract_ Address of admin access control contract, to be
52
52
  * set as contract owner.
53
53
  * @param defaultBaseURIHost Base URI prefix to initialize default base URI with.
54
+ * @param bytecodeStorageReaderContract_ Address of the bytecode storage reader contract.
54
55
  */
55
56
  function initialize(
56
57
  EngineConfiguration calldata engineConfiguration,
57
58
  address adminACLContract_,
58
- string memory defaultBaseURIHost
59
+ string memory defaultBaseURIHost,
60
+ address bytecodeStorageReaderContract_
59
61
  ) external;
60
62
 
61
63
  // @dev new function in V3
@@ -0,0 +1,22 @@
1
+ // SPDX-License-Identifier: LGPL-3.0-only
2
+ pragma solidity ^0.8.0;
3
+
4
+ /**
5
+ * @dev This interface is implemented by GenArt721CoreV0, GenArt721CoreV1, and GenArt721CoreV2
6
+ */
7
+ interface IGenArt721CoreProjectScriptV0 {
8
+ function projectScriptByIndex(
9
+ uint256 _projectId,
10
+ uint256 _index
11
+ ) external view returns (string memory);
12
+
13
+ /**
14
+ * @dev the return specified here is common across all
15
+ * pre-v3 core contracts. They all return additional
16
+ * data as well that varies between contracts but is not
17
+ * used by the dependency registry.
18
+ */
19
+ function projectScriptInfo(
20
+ uint256 _projectId
21
+ ) external view returns (string memory scriptJSON, uint256 scriptCount);
22
+ }
@@ -0,0 +1,23 @@
1
+ // SPDX-License-Identifier: LGPL-3.0-only
2
+ pragma solidity ^0.8.0;
3
+
4
+ /**
5
+ * @dev This interface is implemented by GenArt721CoreV3 and above
6
+ */
7
+ interface IGenArt721CoreProjectScriptV1 {
8
+ function projectScriptDetails(
9
+ uint256 _projectId
10
+ )
11
+ external
12
+ view
13
+ returns (
14
+ string memory scriptTypeAndVersion,
15
+ string memory aspectRatio,
16
+ uint256 scriptCount
17
+ );
18
+
19
+ function projectScriptBytecodeAddressByIndex(
20
+ uint256 _projectId,
21
+ uint256 _index
22
+ ) external view returns (address);
23
+ }
@@ -0,0 +1,11 @@
1
+ // SPDX-License-Identifier: LGPL-3.0-only
2
+ pragma solidity ^0.8.0;
3
+
4
+ /**
5
+ * @dev This interface is implemented by the GenArt721 (GenArt721CoreV0)
6
+ */
7
+ interface IGenArt721CoreTokenHashProviderV0 {
8
+ function showTokenHashes(
9
+ uint256 _tokenId
10
+ ) external view returns (bytes32[] memory);
11
+ }
@@ -0,0 +1,9 @@
1
+ // SPDX-License-Identifier: LGPL-3.0-only
2
+ pragma solidity ^0.8.0;
3
+
4
+ /**
5
+ * @dev This interface is implemented by GenArt721CoreV1 and above.
6
+ */
7
+ interface IGenArt721CoreTokenHashProviderV1 {
8
+ function tokenIdToHash(uint256 tokenId) external view returns (bytes32);
9
+ }
@@ -0,0 +1,14 @@
1
+ // SPDX-License-Identifier: LGPL-3.0-only
2
+ // Created By: Art Blocks Inc.
3
+ pragma solidity ^0.8.22;
4
+
5
+ interface IGenArt721GeneratorV0 {
6
+ event DependencyRegistryUpdated(address indexed _dependencyRegistry);
7
+ event ScriptyBuilderUpdated(address indexed _scriptyBuilder);
8
+ event GunzipScriptBytecodeAddressUpdated(
9
+ address indexed _gunzipScriptBytecodeAddress
10
+ );
11
+ event UniversalBytecodeStorageReaderUpdated(
12
+ address indexed _universalBytecodeStorageReader
13
+ );
14
+ }
@@ -0,0 +1,40 @@
1
+ // SPDX-License-Identifier: LGPL-3.0-only
2
+ // Creatd By: Art Blocks Inc.
3
+
4
+ pragma solidity ^0.8.0;
5
+
6
+ import {EngineConfiguration} from "./IGenArt721CoreContractV3_Engine.sol";
7
+
8
+ interface IOwnedCreate2FactoryV0 {
9
+ /**
10
+ * @notice This contract was deployed.
11
+ */
12
+ event Deployed();
13
+ /**
14
+ * @notice New curated core contract was created.
15
+ * @param newContract new contract
16
+ */
17
+ event ContractCreated(address indexed newContract);
18
+
19
+ /**
20
+ * @notice Drains the contract's balance to the `recipient`.
21
+ * @param recipient The address to send funds to.
22
+ * Only callable by the owner.
23
+ */
24
+ function drainETH(address payable recipient) external;
25
+
26
+ /**
27
+ * @notice Drains the contract's balance of an input ERC20 token to
28
+ * the `recipient`.
29
+ * @param ERC20TokenAddress The address of the ERC20 token to withdraw.
30
+ * @param recipient The address to send ERC20 tokens to.
31
+ * Only callable by the owner.
32
+ */
33
+ function drainERC20(address ERC20TokenAddress, address recipient) external;
34
+
35
+ /**
36
+ * @notice Indicates the type of the contract, e.g. `EngineFactoryV0`.
37
+ * @return type_ The type of the contract.
38
+ */
39
+ function type_() external pure returns (bytes32);
40
+ }
@@ -0,0 +1,19 @@
1
+ // SPDX-License-Identifier: MIT
2
+
3
+ // @dev file adds event for indicating a shim contract compatible with SeaDrop, and points to the corresponding NFT
4
+ // contract
5
+ pragma solidity ^0.8.22;
6
+
7
+ interface ISeaDropShimForContract {
8
+ /**
9
+ * @dev Emit event when a shim-minter compatible with SeaDrop that mints tokens on a different contract is deployed
10
+ * @param nftContract The address of the NFT contract that this shim contract is compatible with
11
+ */
12
+ event SeaDropShimForContract(address nftContract);
13
+
14
+ /**
15
+ * @dev Emit event when the local max supply is updated
16
+ * @param newLocalMaxSupply The new local max supply
17
+ */
18
+ event LocalMaxSupplyUpdated(uint256 newLocalMaxSupply);
19
+ }
@@ -0,0 +1,22 @@
1
+ // SPDX-License-Identifier: LGPL-3.0-only
2
+ // Created By: Art Blocks Inc.
3
+
4
+ pragma solidity ^0.8.0;
5
+
6
+ /**
7
+ * @title This interface adds support for minimum price minting.
8
+ * @author Art Blocks Inc.
9
+ */
10
+ interface ISharedMinterMinPriceV0 {
11
+ /**
12
+ * @notice Update the default minimum mint fee for the minter.
13
+ * @param newDefaultMinMintFee New default minimum mint fee, in wei
14
+ */
15
+ function updateDefaultMinMintFee(uint256 newDefaultMinMintFee) external;
16
+
17
+ /**
18
+ * @notice Get the default mint fee for the minter.
19
+ * @return defaultMinMintFee Default minimum mint fee, in wei
20
+ */
21
+ function defaultMinMintFee() external view returns (uint256);
22
+ }
@@ -10,11 +10,17 @@ pragma solidity ^0.8.0;
10
10
  * interface.
11
11
  */
12
12
  interface ISharedMinterRequired {
13
- // Function returns the minter type, and is called by the MinterFilter for
14
- // metadata purposes.
13
+ /**
14
+ * @notice Returns the minter's type, used by the minter filter for metadata
15
+ * purposes.
16
+ * @return The minter type.
17
+ */
15
18
  function minterType() external view returns (string memory);
16
19
 
17
- // Function returns the minter's associated shared minter filter address,
18
- // and is called by subgraph indexing service for entity relation purposes.
20
+ /**
21
+ * @notice Returns the minter's associated shared minter filter address.
22
+ * @dev used by subgraph indexing service for entity relation purposes.
23
+ * @return The minter filter address.
24
+ */
19
25
  function minterFilterAddress() external returns (address);
20
26
  }
@@ -0,0 +1,28 @@
1
+ // SPDX-License-Identifier: LGPL-3.0-only
2
+ // Created By: Art Blocks Inc.
3
+
4
+ pragma solidity ^0.8.0;
5
+
6
+ import {IBytecodeStorageReader_Base} from "./IBytecodeStorageReader_Base.sol";
7
+
8
+ /**
9
+ * @title This interface extends the IBytecodeStorageReader_Base interface with relevant events and functions used on the
10
+ * universal bytecode storage reader contract.
11
+ * @author Art Blocks Inc.
12
+ */
13
+ interface IUniversalBytecodeStorageReader is IBytecodeStorageReader_Base {
14
+ /**
15
+ * @notice The active bytecode storage reader contract being used by this universal reader was updated.
16
+ * @param activeReader The address of the new active bytecode storage reader contract.
17
+ */
18
+ event ReaderUpdated(address indexed activeReader);
19
+
20
+ /**
21
+ * @notice Update the active bytecode storage reader contract being used by this universal reader.
22
+ * @dev emits a ReaderUpdated event when successful.
23
+ * @param newBytecodeStorageReaderContract The address of the new active bytecode storage reader contract.
24
+ */
25
+ function updateBytecodeStorageReaderContract(
26
+ IBytecodeStorageReader_Base newBytecodeStorageReaderContract
27
+ ) external;
28
+ }
@@ -0,0 +1,58 @@
1
+ // SPDX-License-Identifier: MIT
2
+ // @dev file is sourced from OpenSea's repository: https://github.com/ProjectOpenSea/seadrop/blob/main/src/lib/ERC721SeaDropStructsErrorsAndEvents.sol
3
+ // @dev modified to not lock to specific version, as well as updated imports for this repository
4
+ pragma solidity ^0.8.17;
5
+
6
+ import {AllowListData, PublicDrop, SignedMintValidationParams, TokenGatedDropStage} from "./SeaDropStructs.sol";
7
+
8
+ interface ERC721SeaDropStructsErrorsAndEvents {
9
+ /**
10
+ * @notice Revert with an error if mint exceeds the max supply.
11
+ */
12
+ error MintQuantityExceedsMaxSupply(uint256 total, uint256 maxSupply);
13
+
14
+ /**
15
+ * @notice Revert with an error if the number of token gated
16
+ * allowedNftTokens doesn't match the length of supplied
17
+ * drop stages.
18
+ */
19
+ error TokenGatedMismatch();
20
+
21
+ /**
22
+ * @notice Revert with an error if the number of signers doesn't match
23
+ * the length of supplied signedMintValidationParams
24
+ */
25
+ error SignersMismatch();
26
+
27
+ /**
28
+ * @notice An event to signify that a SeaDrop token contract was deployed.
29
+ */
30
+ event SeaDropTokenDeployed();
31
+
32
+ /**
33
+ * @notice A struct to configure multiple contract options at a time.
34
+ */
35
+ struct MultiConfigureStruct {
36
+ uint256 maxSupply;
37
+ string baseURI;
38
+ string contractURI;
39
+ address seaDropImpl;
40
+ PublicDrop publicDrop;
41
+ string dropURI;
42
+ AllowListData allowListData;
43
+ address creatorPayoutAddress;
44
+ bytes32 provenanceHash;
45
+ address[] allowedFeeRecipients;
46
+ address[] disallowedFeeRecipients;
47
+ address[] allowedPayers;
48
+ address[] disallowedPayers;
49
+ // Token-gated
50
+ address[] tokenGatedAllowedNftTokens;
51
+ TokenGatedDropStage[] tokenGatedDropStages;
52
+ address[] disallowedTokenGatedAllowedNftTokens;
53
+ // Server-signed
54
+ address[] signers;
55
+ SignedMintValidationParams[] signedMintValidationParams;
56
+ address[] disallowedSigners;
57
+ }
58
+ }