@artblocks/contracts 1.0.0 → 1.0.2
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.
- package/.env.example +8 -1
- package/README.md +44 -165
- package/artifacts/contracts/AdminACLV1.sol/AdminACLV1.json +2 -2
- package/artifacts/contracts/DependencyRegistryV0.sol/DependencyRegistryV0.json +2 -2
- package/artifacts/contracts/GenArt721CoreV3.sol/GenArt721CoreV3.json +2 -2
- package/artifacts/contracts/GenArt721CoreV3_Engine.sol/GenArt721CoreV3_Engine.json +2 -2
- package/artifacts/contracts/GenArt721CoreV3_Engine_Flex.sol/GenArt721CoreV3_Engine_Flex.json +2229 -0
- package/artifacts/contracts/archive/minter-suite/Minters/MinterDAExp/MinterDAExpV0.sol/MinterDAExpV0.json +2 -2
- package/artifacts/contracts/archive/minter-suite/Minters/MinterDAExp/MinterDAExpV1.sol/MinterDAExpV1.json +2 -2
- package/artifacts/contracts/archive/minter-suite/Minters/MinterDAExp/MinterDAExpV2.sol/MinterDAExpV2.json +2 -2
- package/artifacts/contracts/archive/minter-suite/Minters/MinterDAExp/MinterDAExpV3.sol/MinterDAExpV3.json +2 -2
- package/artifacts/contracts/archive/minter-suite/Minters/MinterDAExpSettlement/MinterDAExpSettlementV0.sol/MinterDAExpSettlementV0.json +2 -2
- package/artifacts/contracts/{minter-suite/Minters → archive/minter-suite/Minters/MinterDAExpSettlement}/MinterDAExpSettlementV1.sol/MinterDAExpSettlementV1.json +3 -3
- package/artifacts/contracts/archive/minter-suite/Minters/MinterDALin/MinterDALinV0.sol/MinterDALinV0.json +2 -2
- package/artifacts/contracts/archive/minter-suite/Minters/MinterDALin/MinterDALinV1.sol/MinterDALinV1.json +2 -2
- package/artifacts/contracts/archive/minter-suite/Minters/MinterDALin/MinterDALinV2.sol/MinterDALinV2.json +2 -2
- package/artifacts/contracts/archive/minter-suite/Minters/MinterDALin/MinterDALinV3.sol/MinterDALinV3.json +2 -2
- package/artifacts/contracts/archive/minter-suite/Minters/MinterHolder/MinterHolderV0.sol/MinterHolderV0.json +2 -2
- package/artifacts/contracts/archive/minter-suite/Minters/MinterHolder/MinterHolderV1.sol/MinterHolderV1.json +2 -2
- package/artifacts/contracts/archive/minter-suite/Minters/MinterHolder/MinterHolderV2.sol/MinterHolderV2.json +2 -2
- package/artifacts/contracts/archive/minter-suite/Minters/MinterHolder/MinterHolderV3.sol/MinterHolderV3.json +2 -2
- package/artifacts/contracts/archive/minter-suite/Minters/MinterMerkle/MinterMerkleV0.sol/MinterMerkleV0.json +2 -2
- package/artifacts/contracts/archive/minter-suite/Minters/MinterMerkle/MinterMerkleV1.sol/MinterMerkleV1.json +2 -2
- package/artifacts/contracts/archive/minter-suite/Minters/MinterMerkle/MinterMerkleV2.sol/MinterMerkleV2.json +2 -2
- package/artifacts/contracts/archive/minter-suite/Minters/MinterMerkle/MinterMerkleV3.sol/MinterMerkleV3.json +2 -2
- package/artifacts/contracts/archive/minter-suite/Minters/MinterMerkle/MinterMerkleV4.sol/MinterMerkleV4.json +2 -2
- package/artifacts/contracts/archive/minter-suite/Minters/MinterSetPrice/MinterSetPriceV0.sol/MinterSetPriceV0.json +2 -2
- package/artifacts/contracts/archive/minter-suite/Minters/MinterSetPrice/MinterSetPriceV1.sol/MinterSetPriceV1.json +2 -2
- package/artifacts/contracts/archive/minter-suite/Minters/MinterSetPrice/MinterSetPriceV2.sol/MinterSetPriceV2.json +2 -2
- package/artifacts/contracts/archive/minter-suite/Minters/MinterSetPrice/MinterSetPriceV3.sol/MinterSetPriceV3.json +2 -2
- package/artifacts/contracts/archive/minter-suite/Minters/MinterSetPriceERC20/MinterSetPriceERC20V0.sol/MinterSetPriceERC20V0.json +2 -2
- package/artifacts/contracts/archive/minter-suite/Minters/MinterSetPriceERC20/MinterSetPriceERC20V1.sol/MinterSetPriceERC20V1.json +2 -2
- package/artifacts/contracts/archive/minter-suite/Minters/MinterSetPriceERC20/MinterSetPriceERC20V2.sol/MinterSetPriceERC20V2.json +2 -2
- package/artifacts/contracts/archive/minter-suite/Minters/MinterSetPriceERC20/MinterSetPriceERC20V3.sol/MinterSetPriceERC20V3.json +2 -2
- package/artifacts/contracts/explorations/GenArt721CoreV3_Explorations.sol/GenArt721CoreV3_Explorations.json +2 -2
- package/artifacts/contracts/interfaces/0.8.x/IFilteredMinterDAExpSettlementV1.sol/IFilteredMinterDAExpSettlementV1.json +767 -0
- package/artifacts/contracts/interfaces/0.8.x/IFilteredMinterSEAV0.sol/IFilteredMinterSEAV0.json +1032 -0
- package/artifacts/contracts/interfaces/0.8.x/IGenArt721CoreContractV3.sol/IGenArt721CoreContractV3.json +149 -0
- package/artifacts/contracts/interfaces/0.8.x/IGenArt721CoreContractV3_Base.sol/IGenArt721CoreContractV3_Base.json +149 -0
- package/artifacts/contracts/interfaces/0.8.x/IGenArt721CoreContractV3_Engine.sol/IGenArt721CoreContractV3_Engine.json +130 -0
- package/artifacts/contracts/interfaces/0.8.x/IGenArt721CoreContractV3_Engine_Flex.sol/IGenArt721CoreContractV3_Engine_Flex.json +1066 -0
- package/artifacts/contracts/interfaces/0.8.x/IMinterFilterV0.sol/IMinterFilterV0.json +6 -0
- package/artifacts/contracts/interfaces/0.8.x/IRandomizerPolyptychV0.sol/IRandomizerPolyptychV0.json +87 -0
- package/artifacts/contracts/interfaces/0.8.x/IRandomizerV2.sol/IRandomizerV2.json +1 -1
- package/artifacts/contracts/interfaces/0.8.x/IWETH.sol/IWETH.json +55 -0
- package/artifacts/contracts/libs/integration-refs/weth9/weth9.sol/WETH9_.json +295 -0
- package/artifacts/contracts/minter-suite/MinterFilter/MinterFilterV0.sol/MinterFilterV0.json +8 -2
- package/artifacts/contracts/minter-suite/MinterFilter/MinterFilterV1.sol/MinterFilterV1.json +34 -2
- package/artifacts/contracts/minter-suite/Minters/MinterDAExpSettlementV2.sol/MinterDAExpSettlementV2.json +1127 -0
- package/artifacts/contracts/minter-suite/Minters/MinterDAExpV4.sol/MinterDAExpV4.json +15 -2
- package/artifacts/contracts/minter-suite/Minters/MinterDALinV4.sol/MinterDALinV4.json +15 -2
- package/artifacts/contracts/minter-suite/Minters/MinterHolderV4.sol/MinterHolderV4.json +15 -2
- package/artifacts/contracts/minter-suite/Minters/MinterMerkleV5.sol/MinterMerkleV5.json +15 -2
- package/artifacts/contracts/minter-suite/Minters/MinterPolyptychV0.sol/IGenArt721CoreContractV3WithRandomizer.json +792 -0
- package/artifacts/contracts/minter-suite/Minters/MinterPolyptychV0.sol/MinterPolyptychV0.json +1268 -0
- package/artifacts/contracts/minter-suite/Minters/MinterSEAV0.sol/MinterSEAV0.json +1310 -0
- package/artifacts/contracts/minter-suite/Minters/MinterSetPriceERC20V4.sol/MinterSetPriceERC20V4.json +15 -2
- package/artifacts/contracts/minter-suite/Minters/MinterSetPriceV4.sol/MinterSetPriceV4.json +15 -2
- package/artifacts/contracts/mock/DeadReceiverBidderMock.sol/DeadReceiverBidderMock.json +33 -0
- package/artifacts/contracts/mock/GasLimitReceiverBidderMock.sol/GasLimitReceiverBidderMock.json +46 -0
- package/artifacts/contracts/mock/GasLimitReceiverMock.sol/GasLimitReceiverMock.json +28 -0
- package/artifacts/contracts/mock/GenArt721CoreV3_Engine_IncorrectCoreType.sol/GenArt721CoreV3_Engine_IncorrectCoreType.json +2 -2
- package/artifacts/contracts/mock/RandomizerV2_NoAssignMock.sol/RandomizerV2_NoAssignMock.json +3 -3
- package/artifacts/contracts/mock/ReentrancySEAMock.sol/ReentrancySEAAutoBidderMock.json +51 -0
- package/artifacts/contracts/{BasicRandomizer.sol → randomizer/BasicRandomizer.sol}/BasicRandomizer.json +3 -3
- package/artifacts/contracts/randomizer/BasicRandomizerBase_v0_0_0.sol/RandomizerBase.json +10 -0
- package/artifacts/contracts/randomizer/PolyptychRandomizerV0.sol/BasicPolyptychRandomizerV0.json +229 -0
- package/artifacts/contracts/randomizer/RandomizerV2.sol/BasicRandomizerV2.json +102 -0
- package/artifacts/contracts/royalty-registry/GenArt721RoyaltyOverride.sol/GenArt721RoyaltyOverride.json +2 -2
- package/contracts/DependencyRegistryV0.sol +74 -113
- package/contracts/GenArt721CoreV3.sol +124 -171
- package/contracts/GenArt721CoreV3_Engine.sol +136 -198
- package/contracts/GenArt721CoreV3_Engine_Flex.sol +2274 -0
- package/contracts/{minter-suite/Minters → archive/minter-suite/Minters/MinterDAExpSettlement}/MinterDAExpSettlementV1.sol +4 -4
- package/contracts/explorations/GenArt721CoreV3_Explorations.sol +147 -176
- package/contracts/interfaces/0.8.x/IFilteredMinterDAExpSettlementV1.sol +21 -0
- package/contracts/interfaces/0.8.x/IFilteredMinterSEAV0.sol +145 -0
- package/contracts/interfaces/0.8.x/IGenArt721CoreContractV3_Base.sol +39 -0
- package/contracts/interfaces/0.8.x/IGenArt721CoreContractV3_Engine.sol +0 -3
- package/contracts/interfaces/0.8.x/IGenArt721CoreContractV3_Engine_Flex.sol +132 -0
- package/contracts/interfaces/0.8.x/IMinterFilterV0.sol +6 -0
- package/contracts/interfaces/0.8.x/IRandomizerPolyptychV0.sol +31 -0
- package/contracts/interfaces/0.8.x/IRandomizerV2.sol +5 -2
- package/contracts/interfaces/0.8.x/IWETH.sol +11 -0
- package/contracts/libs/integration-refs/weth9/weth9.sol +763 -0
- package/contracts/minter-suite/MinterFilter/MinterFilterV1.sol +53 -47
- package/contracts/minter-suite/Minters/MinterDAExpSettlementV2.sol +1304 -0
- package/contracts/minter-suite/Minters/MinterDAExpV4.sol +47 -24
- package/contracts/minter-suite/Minters/MinterDALinV4.sol +46 -21
- package/contracts/minter-suite/Minters/MinterHolderV4.sol +54 -25
- package/contracts/minter-suite/Minters/MinterMerkleV5.sol +47 -20
- package/contracts/minter-suite/Minters/MinterPolyptychV0.sol +998 -0
- package/contracts/minter-suite/Minters/MinterSEAV0.sol +1224 -0
- package/contracts/minter-suite/Minters/MinterSetPriceERC20V4.sol +45 -16
- package/contracts/minter-suite/Minters/MinterSetPriceV4.sol +40 -13
- package/contracts/mock/DeadReceiverBidderMock.sol +23 -0
- package/contracts/mock/GasLimitReceiverBidderMock.sol +23 -0
- package/contracts/mock/GasLimitReceiverMock.sol +19 -0
- package/contracts/mock/RandomizerV2_NoAssignMock.sol +2 -11
- package/contracts/mock/ReentrancySEAMock.sol +36 -0
- package/contracts/{BasicRandomizer.sol → randomizer/BasicRandomizer.sol} +1 -1
- package/contracts/randomizer/BasicRandomizerBase_v0_0_0.sol +23 -0
- package/contracts/randomizer/PolyptychRandomizerV0.sol +117 -0
- package/contracts/{BasicRandomizerV2.sol → randomizer/RandomizerV2.sol} +7 -15
- package/package.json +32 -13
- package/artifacts/contracts/BasicRandomizerV2.sol/BasicRandomizerV2.json +0 -102
package/.env.example
CHANGED
|
@@ -7,4 +7,11 @@ TESTNET_PRIVATE_KEY=
|
|
|
7
7
|
ETHERSCAN_API_KEY=
|
|
8
8
|
AWS_ACCESS_KEY_ID=
|
|
9
9
|
AWS_SECRET_ACCESS_KEY=
|
|
10
|
-
COINMARKETCAP_API_KEY=
|
|
10
|
+
COINMARKETCAP_API_KEY=
|
|
11
|
+
# The following are only required if using Art Blocks Deployment Scripts
|
|
12
|
+
GRAPHQL_API_ENDPOINT_DEV=
|
|
13
|
+
HASURA_ADMIN_SECRET_DEV=
|
|
14
|
+
GRAPHQL_API_ENDPOINT_STAGING=
|
|
15
|
+
HASURA_ADMIN_SECRET_STAGING=
|
|
16
|
+
GRAPHQL_API_ENDPOINT_MAINNET=
|
|
17
|
+
HASURA_ADMIN_SECRET_MAINNET=
|
package/README.md
CHANGED
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
[](https://circleci.com/gh/ArtBlocks/artblocks-contracts/tree/main)
|
|
4
4
|
|
|
5
|
+
[](https://www.gitpoap.io/gh/ArtBlocks/artblocks-contracts)
|
|
5
6
|
[](https://coveralls.io/github/ArtBlocks/artblocks-contracts?branch=main)
|
|
6
7
|
|
|
7
8
|
A collection of smart contracts used by [Art Blocks](https://artblocks.io) for our flagship product, as well as Artblocks Engine products.
|
|
@@ -44,39 +45,48 @@ Create a `.env` file by duplicating `.env.example` and populating all variables.
|
|
|
44
45
|
|
|
45
46
|
`yarn format`
|
|
46
47
|
|
|
47
|
-
## Contributing
|
|
48
|
+
## Contributing & Design Guidelines
|
|
48
49
|
|
|
49
50
|
We welcome contributions from the community!
|
|
50
51
|
|
|
51
|
-
Please read through our [
|
|
52
|
+
Please read through our [Style Guidelines](./GUIDELINES.md), [Solidity Gotchas](./solidity-gotchas.md), and [Testing Philosophy](./test/README.md) sections before contributing.
|
|
52
53
|
|
|
53
|
-
In addition to meeting our
|
|
54
|
+
In addition to meeting our style guidelines, all code must pass all tests and be formatted with prettier before being merged into the main branch. To run the tests, run `yarn test`. To format the code, run `yarn format`.
|
|
54
55
|
|
|
55
|
-
|
|
56
|
+
# Documentation
|
|
56
57
|
|
|
57
|
-
|
|
58
|
+
## auto-generated contract docs (via NatSpec)
|
|
58
59
|
|
|
59
|
-
|
|
60
|
+
Documentation for contracts is deployed via GitHub pages at: https://artblocks.github.io/artblocks-contracts/
|
|
60
61
|
|
|
61
|
-
#
|
|
62
|
+
Documentation for contracts may also be generated via `yarn docgen`. Most Art Blocks contracts use [NatSpec](https://docs.soliditylang.org/en/v0.8.9/natspec-format.html#documentation-example) comments to automatically enrich generated documentation. Some contracts use [dynamic expressions](https://docs.soliditylang.org/en/v0.8.9/natspec-format.html#dynamic-expressions) to improve user experience.
|
|
62
63
|
|
|
63
|
-
|
|
64
|
+
## Art Blocks V3 Contract Architecture
|
|
64
65
|
|
|
65
|
-
|
|
66
|
+
For a high-level overview of the Art Blocks V3 contract architecture, see the [V3 Contract Architecture page](./V3_ARCHITECTURE.md).
|
|
66
67
|
|
|
67
68
|
# Deployments
|
|
68
69
|
|
|
69
70
|
## Deploying New Contracts
|
|
70
71
|
|
|
71
|
-
Deployment script templates are located in the `./scripts` directory. To run a deployment script `deploy.ts`:
|
|
72
|
-
|
|
73
72
|
> IMPORTANT - many scripts rely on typechain-generated factories, so ensure you have run `yarn generate:typechain` before running any deployment scripts.
|
|
74
73
|
|
|
74
|
+
We have two types of deployment scripts: Generic and Specific.
|
|
75
|
+
|
|
76
|
+
Generic deployment scripts are located in the `./scripts` directory. These scripts are used to deploy contracts that are not specific to a particular deployment. Generic deployment scripts are used to deploy contracts that are used by multiple partners or core contracts, such as the `Art Blocks Engine` contracts, or minters. Generic scripts take an input json file, located in the `/deployents/` directory, and execute the deployment as defined in the input file. In general, there are scripts prepared to run generic deployments for all networks and environments. For example, the following can be used to deploy the `Art Blocks Engine` contracts to the `goerli` test network (note that an input configuration is also required for all generic deployments.):
|
|
77
|
+
|
|
78
|
+
```bash
|
|
79
|
+
yarn deploy:dev:v3-engine
|
|
75
80
|
```
|
|
81
|
+
|
|
82
|
+
Specific deployments are used less frequently, and are located in the `/scripts` directory as well. These scripts are used to deploy contracts that are specific to a particular deployment. They are not easily reusable, and are generally only used once. An example to run a specific deployment is:
|
|
83
|
+
|
|
84
|
+
```bash
|
|
76
85
|
yarn hardhat run --network <your-network> scripts/deploy.ts
|
|
77
86
|
```
|
|
78
87
|
|
|
79
88
|
where `<your network>` is any network configured in `hardhat.config.js`.
|
|
89
|
+
|
|
80
90
|
For additional deployment details, see hardhat docs: [https://hardhat.org/guides/deploying.html](https://hardhat.org/guides/deploying.html)
|
|
81
91
|
|
|
82
92
|
## Deployed Contract Details
|
|
@@ -87,104 +97,15 @@ This is the Smart contract that controls the artwork created by the artist. No f
|
|
|
87
97
|
|
|
88
98
|
Core contracts use the versioning schema below:
|
|
89
99
|
|
|
90
|
-
|
|
|
91
|
-
|
|
|
92
|
-
|
|
|
93
|
-
|
|
|
94
|
-
|
|
|
95
|
-
|
|
|
96
|
-
|
|
|
97
|
-
|
|
98
|
-
> AB Core V3 [changelog here](./contracts/V3_CHANGELOG.md), and [performance metrics here](./contracts/V3_Performance.md).
|
|
99
|
-
|
|
100
|
-
### MinterFilter Suite Compatibility Chart
|
|
101
|
-
|
|
102
|
-
The following table shows which Minters and MinterFilters are compatible with which Core contracts.
|
|
103
|
-
|
|
104
|
-
- **Note:** while the whole end-to-end MinterFilter+FilteredMinter architecture is likely not the ideal fit for PBAB partners due to the infrastructure complexity required for partners integrating with it, any of the individual minters from within the minter suite can readily be adapted to work with PBAB core contracts–if you are a PBAB partner and there is a minter in the suite that this would be appealing for, please contact your account manager!
|
|
105
|
-
|
|
106
|
-
| Core Contract Version(s) | Minter Filter | Recommended Minters | Deprecated Minters |
|
|
107
|
-
| ------------------------ | -------------- | --------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------- |
|
|
108
|
-
| V0 | - | (legacy minter) | - |
|
|
109
|
-
| V1, V1_PRTNR | MinterFilterV0 | MinterSetPriceV1<br>MinterSetPriceERC20V1<br>MinterDAExpV1<br>MinterDALinV1<br>MinterMerkleV0<br>MinterHolderV0 | MinterSetPriceV0<br>MinterSetPriceERC20V0<br>MinterDAExpV0<br>MinterDALinV0 |
|
|
110
|
-
| V2 (PBAB) | - | (various PBAB minters) | - |
|
|
111
|
-
| V3, V3_Explorations | MinterFilterV1 | MinterSetPriceV2<br>MinterSetPriceERC20V2<br>MinterDAExpV2<br>MinterDALinV2<br>MinterMerkleV2<br>MinterMerkleV3<br>MinterHolderV1<br>MinterHolderV2 | - |
|
|
112
|
-
|
|
113
|
-
### Active Minting Contract(s)
|
|
114
|
-
|
|
115
|
-
These are the smart contracts that receive funds, and split them between the artist(s) and the platform. Artists receive funds directly from these contracts.
|
|
116
|
-
|
|
117
|
-
#### MinterSetPrice (Set Price)
|
|
118
|
-
|
|
119
|
-
- V0 (deprecated): [0x1DEC9E52f1320F7Deb29cBCd7B7d67f3dF785142](https://etherscan.io/address/0x1DEC9E52f1320F7Deb29cBCd7B7d67f3dF785142#code)
|
|
120
|
-
- V1: [0x934cdc04C434b8dBf3E1265F4f198D70566f7355](https://etherscan.io/address/0x934cdc04C434b8dBf3E1265F4f198D70566f7355#code)
|
|
121
|
-
- V2: [0x7B7917e083CeA6d9f6a3060a7330c1072fcb4e40](https://etherscan.io/address/0x7B7917e083CeA6d9f6a3060a7330c1072fcb4e40#code)
|
|
122
|
-
- V3: N/A, never used in prod.
|
|
123
|
-
- V4: [0x234B25288011081817B5cC199C3754269cCb76D2](https://etherscan.io/address/0x234B25288011081817B5cC199C3754269cCb76D2#code)
|
|
124
|
-
|
|
125
|
-
#### MinterSetPriceERC20 (Set Price with ERC20)
|
|
126
|
-
|
|
127
|
-
- V0 (deprecated): [0x48742D38a0809135EFd643c1150BfC13768C3907](https://etherscan.io/address/0x48742D38a0809135EFd643c1150BfC13768C3907#code)
|
|
128
|
-
- V1: [0x0BbB93c5d118D1dee49e96BCAdc161403f4F8612](https://etherscan.io/address/0x0BbB93c5d118D1dee49e96BCAdc161403f4F8612#code)
|
|
129
|
-
- V2: [0xe4c6EeF13649e9C4Ad8ae8A9C7fA9A7F26B4287a](https://etherscan.io/address/0xe4c6EeF13649e9C4Ad8ae8A9C7fA9A7F26B4287a#code)
|
|
130
|
-
- V3: N/A, never used in prod.
|
|
131
|
-
- V4: [0x9fEcd2FbC6D890fB93632DcE9b1a01c4090A7E2d](https://etherscan.io/address/0x9fEcd2FbC6D890fB93632DcE9b1a01c4090A7E2d#code)
|
|
132
|
-
|
|
133
|
-
#### MinterDALin (Linear Dutch Auction)
|
|
134
|
-
|
|
135
|
-
- V0 (deprecated): [0xd219f61Bb5A3ffDeCB4362610977F1dAB3930eE2](https://etherscan.io/address/0xd219f61Bb5A3ffDeCB4362610977F1dAB3930eE2#code)
|
|
136
|
-
- V1: [0x32710950B014c2D29EA24f480Dd02c7e4610663b](https://etherscan.io/address/0x32710950B014c2D29EA24f480Dd02c7e4610663b#code)
|
|
137
|
-
- V2: [0xdaa6D1e224f4B9f7c4f1368C362C4333A8e385A6](https://etherscan.io/address/0xdaa6D1e224f4B9f7c4f1368C362C4333A8e385A6#code)
|
|
138
|
-
- V3: N/A, never used in prod.
|
|
139
|
-
- V4: [0x419501DD208BFf237e3E32C40D074065e12DfF4d](https://etherscan.io/address/0x419501DD208BFf237e3E32C40D074065e12DfF4d#code)
|
|
140
|
-
|
|
141
|
-
#### MinterDAExp (Exponential Decay Dutch Auction)
|
|
142
|
-
|
|
143
|
-
- V0 (deprecated): [0xFc74fD0f2c7EaD04f1E5E9fd82Aef55620710D7C](https://etherscan.io/address/0xFc74fD0f2c7EaD04f1E5E9fd82Aef55620710D7C#code)
|
|
144
|
-
- V1: [0xD94C7060808f3c876824E57e685702f3834D2e13](https://etherscan.io/address/0xD94C7060808f3c876824E57e685702f3834D2e13#code)
|
|
145
|
-
- V2: [0x706d6C6ef700a3c1C3a727f0c46492492E0A72b5](https://etherscan.io/address/0x706d6C6ef700a3c1C3a727f0c46492492E0A72b5#code)
|
|
146
|
-
- V3: N/A, never used in prod.
|
|
147
|
-
- V4: [0x47e2df2723238f913741Cc6b1963e76fdfD19B94](https://etherscan.io/address/0x47e2df2723238f913741Cc6b1963e76fdfD19B94#code)
|
|
148
|
-
|
|
149
|
-
#### MinterDAExpSettlement (Expotential Decay Last Price Dutch Auction)
|
|
150
|
-
|
|
151
|
-
- V0: N/A, never used in prod.
|
|
152
|
-
- V1: [0xfdE58c821D1c226b4a45c22904de20b114EDe7E7](https://etherscan.io/address/0xfdE58c821D1c226b4a45c22904de20b114EDe7E7#code)
|
|
153
|
-
|
|
154
|
-
#### MinterMerkle (Address Allowlist)
|
|
155
|
-
|
|
156
|
-
- V0: N/A, never used in prod.
|
|
157
|
-
- V1: [0xae5A48D22Cd069c4d72dDe204A7fB4B302e614af](https://etherscan.io/address/0xae5A48D22Cd069c4d72dDe204A7fB4B302e614af)
|
|
158
|
-
- V2: [0x6Ff3c104Ca9b4860D27079aFfF18701c4A532A4d](https://etherscan.io/address/0x6Ff3c104Ca9b4860D27079aFfF18701c4A532A4d)
|
|
159
|
-
- V3: N/A, never used in prod.
|
|
160
|
-
- V4: N/A, never used in prod.
|
|
161
|
-
- V5: [0xB8Bd1D2836C466DB149f665F777928bEE267304d](https://etherscan.io/address/0xB8Bd1D2836C466DB149f665F777928bEE267304d#code)
|
|
162
|
-
|
|
163
|
-
#### Minter Holder (Token Holder)
|
|
164
|
-
|
|
165
|
-
- V0: N/A, never used in prod.
|
|
166
|
-
- V1: [0xa198E22C32879f4214a37eB3051525bD9aff9145](https://etherscan.io/address/0xa198E22C32879f4214a37eB3051525bD9aff9145)
|
|
167
|
-
- V2: N/A, never used in prod.
|
|
168
|
-
- V3: N/A, never used in prod.
|
|
169
|
-
- V4: [0xCCFF562017bdAAa064184b3Eb9bd892d8Acce7d6](https://etherscan.io/address/0xCCFF562017bdAAa064184b3Eb9bd892d8Acce7d6#code)
|
|
170
|
-
|
|
171
|
-
### Other Minter Contracts
|
|
100
|
+
| Description | Version | Project Range | Mainnet Address |
|
|
101
|
+
| :-----------------------: | :------: | :-----------: | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
102
|
+
| AB Core V0 | V0 | 0-2 | `0x059EDD72Cd353dF5106D2B9cC5ab83a52287aC3a` |
|
|
103
|
+
| AB Core V1 | V1 | 3-373 | `0xa7d8d9ef8D8Ce8992Df33D8b8CF4Aebabd5bD270` |
|
|
104
|
+
| Engine Cores (V2) | V2_PBAB | All PBAB | Various - see `deployments/engine/` directory [DEPLOYMENTS.md files](https://github.com/search?q=repo%3AArtBlocks%2Fartblocks-contracts+extension%3Amd+filename%3ADEPLOYMENTS&type=Code&ref=advsearch&l=&l=) |
|
|
105
|
+
| Engine Partner Cores (V2) | V2_PRTNR | All PRTNR | Various - see `deployments/engine/` directory [DEPLOYMENTS.md files](https://github.com/search?q=repo%3AArtBlocks%2Fartblocks-contracts+extension%3Amd+filename%3ADEPLOYMENTS&type=Code&ref=advsearch&l=&l=) |
|
|
106
|
+
| AB Core V3 (current) | V3 | 374+ | `0x99a9B7c1116f9ceEB1652de04d5969CcE509B069` |
|
|
172
107
|
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
MinterFilterV1 for flagship V3 core: [0x092B8F64e713d66b38522978BCf4649db14b931E](https://etherscan.io/address/0x092B8F64e713d66b38522978BCf4649db14b931E).
|
|
176
|
-
|
|
177
|
-
Legacy minting contract for flagship V0 core: [0x47e312d99c09ce61a866c83cbbbbed5a4b9d33e7](https://etherscan.io/address/0x47e312d99c09ce61a866c83cbbbbed5a4b9d33e7).
|
|
178
|
-
|
|
179
|
-
For deployed Engine/Partner/Explorations minting contracts that integrate with V2 core contracts, see the archived source code in the `/posterity/engine/<engine-partner>/` directory and the deployment logs in `/deployments/engine/[V2|V3]/<engine-partner>/` directories. For V3 deployments, deployment script inputs are also available in the `/deployments/engine/[V2|V3]/<engine-partner>/` directories.
|
|
180
|
-
|
|
181
|
-
### Shared Randomizers
|
|
182
|
-
|
|
183
|
-
- Goerli: https://goerli.etherscan.io/address/0xec5dae4b11213290b2dbe5295093f75920bd2982#code
|
|
184
|
-
- Ropsten: https://ropsten.etherscan.io/address/0x7ba972189ED3C527847170453fC108707F62755a#code
|
|
185
|
-
- Rinkeby: https://rinkeby.etherscan.io/address/0x3b30d421a6dA95694EaaE09971424F15Eb375269#code
|
|
186
|
-
- Kovan: https://kovan.etherscan.io/address/0x3b30d421a6dA95694EaaE09971424F15Eb375269#code
|
|
187
|
-
- Mainnet: https://etherscan.io/address/0x088098f7438773182b703625c4128aff85fcffc4#code
|
|
108
|
+
> AB Core V3 [changelog here](./contracts/V3_CHANGELOG.md), and [performance metrics here](./contracts/V3_PERFORMANCE.md).
|
|
188
109
|
|
|
189
110
|
### Testnet Contracts
|
|
190
111
|
|
|
@@ -199,73 +120,31 @@ The following represents the current set of flagship core contracts deployed on
|
|
|
199
120
|
- V1 Core (deprecated): https://goerli.etherscan.io/address/0x1Bf03F29c4FEFFFe4eE26704aaA31d85c026aCE6
|
|
200
121
|
- V3 Core: https://goerli.etherscan.io/address/0xF396C180bb2f92EE28535D23F5224A5b9425ceca
|
|
201
122
|
|
|
202
|
-
## Art Blocks Engine
|
|
203
|
-
|
|
204
|
-
> Formerly known as PBAB or PRTNR core contracts
|
|
205
|
-
|
|
206
|
-
For deployed core contracts, see the archived source code in the `/posterity/engine/` directory and the deployment logs in `/deployments/engine/[V2|V3]/<engine-partner>/` directories.
|
|
207
|
-
|
|
208
|
-
## Contract Source Code Verification
|
|
209
|
-
|
|
210
|
-
In an effort to ensure source code verification is easily completed by anyone, After 10, January 2023, all mainnet deployments should also have a corresponding tag+release in this GitHub repository. For deployments prior to this date, PR history may be used to determine the commit hash used for a given deployment. Currently, all mainnet deployments of contracts developed in this repositiory are verified on Etherscan.
|
|
123
|
+
## Art Blocks Engine Core Contracts
|
|
211
124
|
|
|
212
|
-
|
|
125
|
+
For deployed core contracts, see the deployment details in the `/deployments/engine/[V2|V3]/<engine-partner>/` directories. For V2 core contracts, archived source code is available in the `/posterity/engine/` directory.
|
|
213
126
|
|
|
214
|
-
|
|
127
|
+
## Minter Suite
|
|
215
128
|
|
|
216
|
-
For
|
|
129
|
+
For details on the Flagship and Engine Minter Suite, see the [minter suite documenation](./MINTER_SUITE.md).
|
|
217
130
|
|
|
218
|
-
|
|
131
|
+
## Shared Randomizers
|
|
219
132
|
|
|
220
|
-
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
- **mainnet (RR deployed):**
|
|
226
|
-
- RoyaltyRegistry: https://etherscan.io/address/0xad2184fb5dbcfc05d8f056542fb25b04fa32a95d#code
|
|
227
|
-
- RoyaltyEngineV1: https://etherscan.io/address/0x0385603ab55642cb4dd5de3ae9e306809991804f#code
|
|
228
|
-
|
|
229
|
-
### Configuring PBAB Royalty Override (REQUIRED)
|
|
230
|
-
|
|
231
|
-
Upon deploying a PBAB contract, the following steps must be taken:
|
|
232
|
-
|
|
233
|
-
> Tasks denoted by (scripted) are included in `scripts/1_reference_pbab_suite_deployer.ts`, and scripted for newly deployed PBAB projects as of 03/2022.
|
|
234
|
-
|
|
235
|
-
- **(scripted), REQUIRED** Set the royalty lookup address on the royalty registry for the newly deployed contract
|
|
236
|
-
- Go to the [Royalty Registry](https://royaltyregistry.xyz/lookup) and call the following function on the Royalty Registry smart contract:
|
|
237
|
-
- `setRoyaltyLookupAddress(<new_PBAB_coreAddr>, <PBAB_royaltyOverrideContract>)`
|
|
238
|
-
- **(scripted), REQUIRED** Set Platform royalty payment address for the new core contract in PBAB royalty override contract
|
|
239
|
-
> note: This step is optional in the PBAB deployer script in case platform royalty payment address is not known at time of deployment, but must be completed before royalty lookups will work
|
|
240
|
-
- `admin` of the PBAB core contract must call the following function on the PBAB royalty override contract:
|
|
241
|
-
- `updatePlatformRoyaltyAddressForContract(<new_PBAB_coreAddr>, <platformRoyaltyPaymentAddress>)`
|
|
242
|
-
|
|
243
|
-
Additionally, the following settings may be configured/changed by a PBAB core contract's `admin` at any time:
|
|
244
|
-
|
|
245
|
-
- **Change Royalty Percentages**
|
|
246
|
-
- `renderProvider` or `platform` Royalty [BPS](https://www.investopedia.com/terms/b/basispoint.asp) may be changed from default values of 2.5% to any value. This can be configured by a PBAB core contract's `admin` via the PBAB override contract's functions `updateRenderProviderBpsForContract` and `updatePlatformBpsForContract`.
|
|
247
|
-
- **Change Platform Royalty Payment Address**
|
|
248
|
-
- The address to receive platform royalty payments may be updated by a PBAB core contract's admin via the PBAB override contract's function `updatePlatformRoyaltyAddressForContract`.
|
|
249
|
-
- **Change Render Provider Royalty Payment Address**
|
|
250
|
-
- The address to receive render provider royalty payments is delegated to the token core contract, and defined as the public variable `renderProviderAddress`.
|
|
133
|
+
- Goerli: https://goerli.etherscan.io/address/0xec5dae4b11213290b2dbe5295093f75920bd2982#code
|
|
134
|
+
- Ropsten: https://ropsten.etherscan.io/address/0x7ba972189ED3C527847170453fC108707F62755a#code
|
|
135
|
+
- Rinkeby: https://rinkeby.etherscan.io/address/0x3b30d421a6dA95694EaaE09971424F15Eb375269#code
|
|
136
|
+
- Kovan: https://kovan.etherscan.io/address/0x3b30d421a6dA95694EaaE09971424F15Eb375269#code
|
|
137
|
+
- Mainnet: https://etherscan.io/address/0x088098f7438773182b703625c4128aff85fcffc4#code
|
|
251
138
|
|
|
252
|
-
|
|
139
|
+
## Contract Source Code Verification
|
|
253
140
|
|
|
254
|
-
|
|
141
|
+
In an effort to ensure source code verification is easily completed by anyone, After 10, January 2023, all mainnet deployments should also have a corresponding tag+release in this GitHub repository. For deployments prior to this date, PR history may be used to determine the commit hash used for a given deployment. Currently, all mainnet deployments of contracts developed in this repositiory are verified on Etherscan.
|
|
255
142
|
|
|
256
|
-
|
|
257
|
-
- Go to the [Royalty Registry](https://royaltyregistry.xyz/lookup) to call the following function on the Royalty Registry smart contract:
|
|
258
|
-
- `setRoyaltyLookupAddress(<new_coreAddr>, <ArtBlocks_royaltyOverrideContract>)`
|
|
259
|
-
- **REQUIRED** Set Art Blocks royalty payment address for the new core contract in the royalty override contract
|
|
260
|
-
- `admin` of core contract must call:
|
|
261
|
-
- `updateArtblocksRoyaltyAddressForContract(<new_coreAddr>, <ArtBlocksRoyaltyPaymentAddress>)`
|
|
143
|
+
# Royalties
|
|
262
144
|
|
|
263
|
-
|
|
145
|
+
Art Blocks supports on-chain royalty lookups for all Flagship and Engine tokens on Manifold's [Royalty Registry](https://royaltyregistry.xyz/lookup). This enables royalty revenue streams for artists and other creators.
|
|
264
146
|
|
|
265
|
-
-
|
|
266
|
-
- Royalty [BPS](https://www.investopedia.com/terms/b/basispoint.asp) may be changed from default values of 2.5% to any value less than or equal to the default (cannot be increased above default). This can be configured by a core contract's `admin` via the override contract's function `updateArtblocksBpsForContract`.
|
|
267
|
-
- **Change Art Blocks Royalty Payment Address**
|
|
268
|
-
- The address to receive Art Blocks royalty payments may be updated by a core contract's admin via the royalty override contract's function `updateArtblocksRoyaltyAddressForContract`.
|
|
147
|
+
For information about on-chain royalties, please see the [royalties documentation](./ROYALTIES.md).
|
|
269
148
|
|
|
270
149
|
# Source Code Archival
|
|
271
150
|
|
|
@@ -241,8 +241,8 @@
|
|
|
241
241
|
"type": "function"
|
|
242
242
|
}
|
|
243
243
|
],
|
|
244
|
-
"bytecode": "
|
|
245
|
-
"deployedBytecode": "
|
|
244
|
+
"bytecode": "0x60c0604052600a60809081526941646d696e41434c563160b01b60a0526000906200002b9082620000f7565b503480156200003957600080fd5b50600180546001600160a01b03191633179055620001c3565b634e487b7160e01b600052604160045260246000fd5b600181811c908216806200007d57607f821691505b6020821081036200009e57634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115620000f257600081815260208120601f850160051c81016020861015620000cd5750805b601f850160051c820191505b81811015620000ee57828155600101620000d9565b5050505b505050565b81516001600160401b0381111562000113576200011362000052565b6200012b8162000124845462000068565b84620000a4565b602080601f8311600181146200016357600084156200014a5750858301515b600019600386901b1c1916600185901b178555620000ee565b600085815260208120601f198616915b82811015620001945788860151825594840194600190910190840162000173565b5085821015620001b35787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b610bac80620001d36000396000f3fe608060405234801561001057600080fd5b50600436106100995760003560e01c806301ffc9a71461009e57806305de62c0146100c657806329575f6a146100d9578063377a7d1a146100f9578063625e1b7d1461010e578063940ef80014610121578063985d196814610137578063ad35d2de1461014a578063bcc91a101461015d578063c81a396e14610170578063c94dca9a14610185575b600080fd5b6100b16100ac366004610894565b610198565b60405190151581526020015b60405180910390f35b6100b16100d43660046108c6565b6101cf565b6001546100ec906001600160a01b031681565b6040516100bd9190610909565b61010c61010736600461091d565b610234565b005b6100ec61011c3660046109a3565b6102cc565b6101296102d9565b6040519081526020016100bd565b61010c6101453660046109bc565b6102ea565b61010c6101583660046109bc565b61036a565b61010c61016b3660046109d7565b610422565b610178610588565b6040516100bd9190610a0a565b61010c6101933660046109bc565b610616565b60006001600160e01b03198216633001c1ef60e21b14806101c957506301ffc9a760e01b6001600160e01b03198316145b92915050565b6001546000906001600160a01b03908116908516036101f05750600161022d565b638911905560e01b6001600160e01b031983160161022957506001600160a01b038316600090815260036020526040902054151561022d565b5060005b9392505050565b6001546001600160a01b031633146102675760405162461bcd60e51b815260040161025e90610a58565b60405180910390fd5b600180546001600160a01b038581166001600160a01b0319831681179093556040519116919082907f3f6845104f9728af7979eed8814320daba008953c8db93b9fe32602d1f34b475906102be9087908790610a81565b60405180910390a350505050565b60006101c96002836106cb565b60006102e560026106d7565b905090565b6001546001600160a01b031633146103145760405162461bcd60e51b815260040161025e90610a58565b806001600160a01b031663715018a66040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561034f57600080fd5b505af1158015610363573d6000803e3d6000fd5b5050505050565b6001546001600160a01b031633146103945760405162461bcd60e51b815260040161025e90610a58565b61039f6002826106e1565b6103eb5760405162461bcd60e51b815260206004820152601e60248201527f41646d696e41434c56313a20416c726561647920726567697374657265640000604482015260640161025e565b6040516001600160a01b038216907fcfa45e813a030b8a5edb7a194db400758a7838280a892097169e8bc310a6bc9390600090a250565b6001546001600160a01b0316331461044c5760405162461bcd60e51b815260040161025e90610a58565b6040516301ffc9a760e01b8152633001c1ef60e21b60048201526001600160a01b038216906301ffc9a790602401602060405180830381865afa158015610497573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104bb9190610acd565b6105265760405162461bcd60e51b815260206004820152603660248201527f41646d696e41434c56313a206e65772061646d696e2041434c20646f6573206e60448201527506f7420737570706f7274204941646d696e41434c56360541b606482015260840161025e565b60405163f2fde38b60e01b81526001600160a01b0383169063f2fde38b90610552908490600401610909565b600060405180830381600087803b15801561056c57600080fd5b505af1158015610580573d6000803e3d6000fd5b505050505050565b6000805461059590610aef565b80601f01602080910402602001604051908101604052809291908181526020018280546105c190610aef565b801561060e5780601f106105e35761010080835404028352916020019161060e565b820191906000526020600020905b8154815290600101906020018083116105f157829003601f168201915b505050505081565b6001546001600160a01b031633146106405760405162461bcd60e51b815260040161025e90610a58565b61064b6002826106f6565b6106945760405162461bcd60e51b815260206004820152601a60248201527910591b5a5b9050d3158c4e88139bdd081c9959da5cdd195c995960321b604482015260640161025e565b6040516001600160a01b038216907ff1de73f684ba2cffe486a26456673d031647e0c7964095865ed8e159873edde290600090a250565b600061022d838361070b565b60006101c9825490565b600061022d836001600160a01b038416610735565b600061022d836001600160a01b038416610784565b600082600001828154811061072257610722610b29565b9060005260206000200154905092915050565b600081815260018301602052604081205461077c575081546001818101845560008481526020808220909301849055845484825282860190935260409020919091556101c9565b5060006101c9565b6000818152600183016020526040812054801561086d5760006107a8600183610b3f565b85549091506000906107bc90600190610b3f565b90508181146108215760008660000182815481106107dc576107dc610b29565b90600052602060002001549050808760000184815481106107ff576107ff610b29565b6000918252602080832090910192909255918252600188019052604090208390555b855486908061083257610832610b60565b6001900381819060005260206000200160009055905585600101600086815260200190815260200160002060009055600193505050506101c9565b60009150506101c9565b80356001600160e01b03198116811461088f57600080fd5b919050565b6000602082840312156108a657600080fd5b61022d82610877565b80356001600160a01b038116811461088f57600080fd5b6000806000606084860312156108db57600080fd5b6108e4846108af565b92506108f2602085016108af565b915061090060408501610877565b90509250925092565b6001600160a01b0391909116815260200190565b60008060006040848603121561093257600080fd5b61093b846108af565b9250602084013567ffffffffffffffff8082111561095857600080fd5b818601915086601f83011261096c57600080fd5b81358181111561097b57600080fd5b8760208260051b850101111561099057600080fd5b6020830194508093505050509250925092565b6000602082840312156109b557600080fd5b5035919050565b6000602082840312156109ce57600080fd5b61022d826108af565b600080604083850312156109ea57600080fd5b6109f3836108af565b9150610a01602084016108af565b90509250929050565b600060208083528351808285015260005b81811015610a3757858101830151858201604001528201610a1b565b506000604082860101526040601f19601f8301168501019250505092915050565b6020808252600f908201526e27b7363c9039bab832b920b236b4b760891b604082015260600190565b60208082528181018390526000908460408401835b86811015610ac2576001600160a01b03610aaf846108af565b1682529183019190830190600101610a96565b509695505050505050565b600060208284031215610adf57600080fd5b8151801515811461022d57600080fd5b600181811c90821680610b0357607f821691505b602082108103610b2357634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052603260045260246000fd5b818103818111156101c957634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052603160045260246000fdfea2646970667358221220395ed8593e98518a0f7448092544c049d575d4ad12ed748ecee8ec182e89d61b64736f6c63430008110033",
|
|
245
|
+
"deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100995760003560e01c806301ffc9a71461009e57806305de62c0146100c657806329575f6a146100d9578063377a7d1a146100f9578063625e1b7d1461010e578063940ef80014610121578063985d196814610137578063ad35d2de1461014a578063bcc91a101461015d578063c81a396e14610170578063c94dca9a14610185575b600080fd5b6100b16100ac366004610894565b610198565b60405190151581526020015b60405180910390f35b6100b16100d43660046108c6565b6101cf565b6001546100ec906001600160a01b031681565b6040516100bd9190610909565b61010c61010736600461091d565b610234565b005b6100ec61011c3660046109a3565b6102cc565b6101296102d9565b6040519081526020016100bd565b61010c6101453660046109bc565b6102ea565b61010c6101583660046109bc565b61036a565b61010c61016b3660046109d7565b610422565b610178610588565b6040516100bd9190610a0a565b61010c6101933660046109bc565b610616565b60006001600160e01b03198216633001c1ef60e21b14806101c957506301ffc9a760e01b6001600160e01b03198316145b92915050565b6001546000906001600160a01b03908116908516036101f05750600161022d565b638911905560e01b6001600160e01b031983160161022957506001600160a01b038316600090815260036020526040902054151561022d565b5060005b9392505050565b6001546001600160a01b031633146102675760405162461bcd60e51b815260040161025e90610a58565b60405180910390fd5b600180546001600160a01b038581166001600160a01b0319831681179093556040519116919082907f3f6845104f9728af7979eed8814320daba008953c8db93b9fe32602d1f34b475906102be9087908790610a81565b60405180910390a350505050565b60006101c96002836106cb565b60006102e560026106d7565b905090565b6001546001600160a01b031633146103145760405162461bcd60e51b815260040161025e90610a58565b806001600160a01b031663715018a66040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561034f57600080fd5b505af1158015610363573d6000803e3d6000fd5b5050505050565b6001546001600160a01b031633146103945760405162461bcd60e51b815260040161025e90610a58565b61039f6002826106e1565b6103eb5760405162461bcd60e51b815260206004820152601e60248201527f41646d696e41434c56313a20416c726561647920726567697374657265640000604482015260640161025e565b6040516001600160a01b038216907fcfa45e813a030b8a5edb7a194db400758a7838280a892097169e8bc310a6bc9390600090a250565b6001546001600160a01b0316331461044c5760405162461bcd60e51b815260040161025e90610a58565b6040516301ffc9a760e01b8152633001c1ef60e21b60048201526001600160a01b038216906301ffc9a790602401602060405180830381865afa158015610497573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104bb9190610acd565b6105265760405162461bcd60e51b815260206004820152603660248201527f41646d696e41434c56313a206e65772061646d696e2041434c20646f6573206e60448201527506f7420737570706f7274204941646d696e41434c56360541b606482015260840161025e565b60405163f2fde38b60e01b81526001600160a01b0383169063f2fde38b90610552908490600401610909565b600060405180830381600087803b15801561056c57600080fd5b505af1158015610580573d6000803e3d6000fd5b505050505050565b6000805461059590610aef565b80601f01602080910402602001604051908101604052809291908181526020018280546105c190610aef565b801561060e5780601f106105e35761010080835404028352916020019161060e565b820191906000526020600020905b8154815290600101906020018083116105f157829003601f168201915b505050505081565b6001546001600160a01b031633146106405760405162461bcd60e51b815260040161025e90610a58565b61064b6002826106f6565b6106945760405162461bcd60e51b815260206004820152601a60248201527910591b5a5b9050d3158c4e88139bdd081c9959da5cdd195c995960321b604482015260640161025e565b6040516001600160a01b038216907ff1de73f684ba2cffe486a26456673d031647e0c7964095865ed8e159873edde290600090a250565b600061022d838361070b565b60006101c9825490565b600061022d836001600160a01b038416610735565b600061022d836001600160a01b038416610784565b600082600001828154811061072257610722610b29565b9060005260206000200154905092915050565b600081815260018301602052604081205461077c575081546001818101845560008481526020808220909301849055845484825282860190935260409020919091556101c9565b5060006101c9565b6000818152600183016020526040812054801561086d5760006107a8600183610b3f565b85549091506000906107bc90600190610b3f565b90508181146108215760008660000182815481106107dc576107dc610b29565b90600052602060002001549050808760000184815481106107ff576107ff610b29565b6000918252602080832090910192909255918252600188019052604090208390555b855486908061083257610832610b60565b6001900381819060005260206000200160009055905585600101600086815260200190815260200160002060009055600193505050506101c9565b60009150506101c9565b80356001600160e01b03198116811461088f57600080fd5b919050565b6000602082840312156108a657600080fd5b61022d82610877565b80356001600160a01b038116811461088f57600080fd5b6000806000606084860312156108db57600080fd5b6108e4846108af565b92506108f2602085016108af565b915061090060408501610877565b90509250925092565b6001600160a01b0391909116815260200190565b60008060006040848603121561093257600080fd5b61093b846108af565b9250602084013567ffffffffffffffff8082111561095857600080fd5b818601915086601f83011261096c57600080fd5b81358181111561097b57600080fd5b8760208260051b850101111561099057600080fd5b6020830194508093505050509250925092565b6000602082840312156109b557600080fd5b5035919050565b6000602082840312156109ce57600080fd5b61022d826108af565b600080604083850312156109ea57600080fd5b6109f3836108af565b9150610a01602084016108af565b90509250929050565b600060208083528351808285015260005b81811015610a3757858101830151858201604001528201610a1b565b506000604082860101526040601f19601f8301168501019250505092915050565b6020808252600f908201526e27b7363c9039bab832b920b236b4b760891b604082015260600190565b60208082528181018390526000908460408401835b86811015610ac2576001600160a01b03610aaf846108af565b1682529183019190830190600101610a96565b509695505050505050565b600060208284031215610adf57600080fd5b8151801515811461022d57600080fd5b600181811c90821680610b0357607f821691505b602082108103610b2357634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052603260045260246000fd5b818103818111156101c957634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052603160045260246000fdfea2646970667358221220395ed8593e98518a0f7448092544c049d575d4ad12ed748ecee8ec182e89d61b64736f6c63430008110033",
|
|
246
246
|
"linkReferences": {},
|
|
247
247
|
"deployedLinkReferences": {}
|
|
248
248
|
}
|