diff --git a/README.md b/README.md index 9f78f7c..2e39a12 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,36 @@ # anotherblock anotherblock platform contracts +## contribution workflow + +### branches + +this git repository is composed of two main branches and feature branches : + +#### latest + +`latest` branch is synchronized with the latest contracts deployed on _mainnet_. +_after every mainnet deployment and/or upgrade_, a pull request from `dev` to `latest` must be initiated and merged. +this branch is the reference for any integration with other sub-systems, i.e. frontend, subgraphs, and so on. + +#### dev + +`dev` branch is accumulating and consolidating all the new features, bug fixes and upgrades that are _not yet deployed on mainnet_. +_mainnet deployment must be initiated_ from `dev` branch only after the end-to-end tests have been successfully conducted on testnet. +_testnet deployment must be initiated_ from `dev` branch. + +#### feature branches + +feature branches are created every time a new feature, bug fix or upgrade must be developped. +feature branches are created from `dev` branch. +feature branches naming convention is `abXXX-featName` where XXX is the Linear Ticket ID and featName is a brief feature description. +a feature branch can be merge to `dev` _only if all required units tests have been conducted and passed_ and after approval from relevant stakeholders that the feature, bug fix or upgrade will be fit for deployement on mainnet. + +### tags + +_after every mainnet deployment and/or upgrade_, a tag must be created +tag naming convention is `vX.Y` where X & Y are digits. +we increment `X` for major update while we increment `Y` for small update or patches. + ## install foundry [foundry installation procedure](https://book.getfoundry.sh/getting-started/installation) @@ -106,7 +137,6 @@ deploy standalone royalty contract for specific publisher ### base mainnet : - simulate platform deployment : ```sh @@ -130,3 +160,23 @@ deploy standalone royalty contract for specific publisher ```sh forge script script/base/deploy-royalty.s.sol:DeployRoyalty --rpc-url base --sig "run(address)" --broadcast --verify ``` + +## contribute + +### creating new NFT minting mechanism + +in order for anyone to create new minting mechanism NFT contract compatible with anotherblock self-service platform, the contract must comply with below requirements : + +1. the new contract shall inherit the abstract contract [ERC721AB](src/token/ERC721/ERC721AB.sol) + +2. the new contract state shall include two constants, `IMPLEMENTATION_VERSION` & `IMPLEMENTATION_TYPE` + +3. the new contract shall include a function `initDrop` calling the internal function `_initDrop` and contain a minimum set of parameters : + + - amount of share per token + - amount of genesis token to be minted + - recipient address of the genesis token(s) + - currency used to pay-out royalties + - base URI + +4. the new contract shall include a custom mint function (see [ERC721ABLE](src/token//ERC721/ERC721ABLE.sol) for reference) diff --git a/broadcast/deploy-upgrade.s.sol/84531/run-1698658644.json b/broadcast/deploy-upgrade.s.sol/84531/run-1698658644.json new file mode 100644 index 0000000..d9a59eb --- /dev/null +++ b/broadcast/deploy-upgrade.s.sol/84531/run-1698658644.json @@ -0,0 +1,94 @@ +{ + "transactions": [ + { + "hash": "0x87bbc0bb208ac803aa0b7d13ad37c9da03932cf319c9a3a0b40d0a906b001b0b", + "transactionType": "CREATE", + "contractName": "ABDataRegistry", + "contractAddress": "0x072e8fB0aa2C75F727da6df3220eF676A966bcc8", + "function": null, + "arguments": null, + "transaction": { + "type": "0x02", + "from": "0xd71256ec24925873ce9e9f085f89864ca05970bd", + "gas": "0x1b490a", + "value": "0x0", + "data": "0x608060405234801561001057600080fd5b5061001961001e565b6100de565b600054610100900460ff161561008a5760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff90811610156100dc576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b611770806100ed6000396000f3fe608060405234801561001057600080fd5b50600436106101da5760003560e01c80638353b91911610104578063b9138580116100a2578063d547741f11610071578063d547741f146104fd578063da35a26f14610510578063dd3394aa14610523578063f0f442601461053657600080fd5b8063b9138580146104a4578063b9d47392146104c4578063c70eae8c146104d7578063cb9685ba146104ea57600080fd5b806391d14854116100de57806391d1485414610463578063977f82ba14610476578063a217fddf14610489578063ae98d8571461049157600080fd5b80638353b919146104115780638392767d146104245780638ffaa1401461043757600080fd5b80632f2ff15d1161017c5780635eb399681161014b5780635eb399681461036a578063608ebea1146103ac57806369ca69a5146103de57806371ef9a93146103fe57600080fd5b80632f2ff15d146102f357806336568abe1461030657806341859ac8146103195780635134b49a1461034757600080fd5b80630a4d85cd116101b85780630a4d85cd14610265578063145f8dd4146102a657806319742e6c146102bb578063248a9ca3146102d057600080fd5b806301ffc9a7146101df57806304a0fb1714610207578063069a9b641461023c575b600080fd5b6101f26101ed36600461123e565b610549565b60405190151581526020015b60405180910390f35b61022e7fdfbefbf47cfe66b701d8cfdbce1de81c821590819cb07e71cb01b6602fb0ee2781565b6040519081526020016101fe565b61022e61024a366004611284565b6001600160a01b031660009081526099602052604090205490565b61028e610273366004611284565b6098602052600090815260409020546001600160a01b031681565b6040516001600160a01b0390911681526020016101fe565b61022e60008051602061171b83398151915281565b6102ce6102c936600461129f565b610580565b005b61022e6102de3660046112d9565b60009081526065602052604090206001015490565b6102ce6103013660046112f2565b6105da565b6102ce6103143660046112f2565b610604565b6101f2610327366004611284565b6001600160a01b0390811660009081526098602052604090205416151590565b6101f26103553660046112d9565b609c6020526000908152604090205460ff1681565b61037d6103783660046112d9565b610687565b6040805194855260208501939093526001600160a01b03918216928401929092521660608201526080016101fe565b6103bf6103ba36600461131e565b6106cd565b604080516001600160a01b0390931683526020830191909152016101fe565b61022e6103ec3660046112d9565b609d6020526000908152604090205481565b6102ce61040c36600461131e565b61072b565b6102ce61041f366004611348565b610790565b609b5461028e906001600160a01b031681565b61028e610445366004611284565b6001600160a01b039081166000908152609860205260409020541690565b6101f26104713660046112f2565b610864565b6102ce610484366004611384565b61088f565b61022e600081565b61022e61049f366004611348565b610937565b61022e6104b2366004611284565b60996020526000908152604090205481565b6102ce6104d23660046113d9565b610b2b565b6102ce6104e5366004611284565b610b8c565b6102ce6104f83660046114b4565b610bce565b6102ce61050b3660046112f2565b610c2d565b6102ce61051e3660046112f2565b610c52565b6102ce61053136600461154a565b610dc3565b6102ce610544366004611284565b610e6f565b60006001600160e01b03198216637965db0b60e01b148061057a57506301ffc9a760e01b6001600160e01b03198316145b92915050565b600061058b81610e9d565b6127108211156105ae57604051632627b42d60e11b815260040160405180910390fd5b506000918252609c60209081526040808420805460ff191695151595909517909455609d905291902055565b6000828152606560205260409020600101546105f581610e9d565b6105ff8383610eaa565b505050565b6001600160a01b03811633146106795760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201526e103937b632b9903337b91039b2b63360891b60648201526084015b60405180910390fd5b6106838282610f30565b5050565b609a818154811061069757600080fd5b60009182526020909120600490910201805460018201546002830154600390930154919350916001600160a01b03908116911684565b6000818152609c6020526040812054819060ff16156106fb57506000828152609d6020526040902054610716565b506001600160a01b0383166000908152609960205260409020545b609b546001600160a01b031694909350915050565b600061073681610e9d565b6001600160a01b038316600081815260996020908152604091829020859055815192835282018490527fc1c540da095b5b6d54738e18568e3c832ae9d1a26f1abeb3e69efde2d4fd6ec291015b60405180910390a1505050565b7fdfbefbf47cfe66b701d8cfdbce1de81c821590819cb07e71cb01b6602fb0ee276107ba81610e9d565b6001600160a01b0384811660009081526098602052604090205416156107f35760405163515567cf60e01b815260040160405180910390fd5b6001600160a01b03848116600081815260986020908152604080832080546001600160a01b0319169589169586179055609982529182902086905590519182527fb0c28f4dd5b8aa95e332651d07f6930a2f9d46ae2bc4bfa73e2f33e478a1269b910160405180910390a250505050565b60009182526065602090815260408084206001600160a01b0393909316845291905290205460ff1690565b60008051602061171b8339815191526108a781610e9d565b6001600160a01b03868116600090815260986020526040908190205490516323f4440760e21b81528783166004820152868316602482015260448101869052606481018590529116908190638fd1101c906084015b600060405180830381600087803b15801561091657600080fd5b505af115801561092a573d6000803e3d6000fd5b5050505050505050505050565b600060008051602061171b83398151915261095181610e9d565b610959610f97565b6040805160808101825282815260208082018781526001600160a01b038a81168486018181523360608701818152609a8054600181018255600091909152975160049098027f44da158ba27f9252712a74ff6a55c5d531f69609f1f6e7f17c4443a8e2089be481019890985594517f44da158ba27f9252712a74ff6a55c5d531f69609f1f6e7f17c4443a8e2089be588015590517f44da158ba27f9252712a74ff6a55c5d531f69609f1f6e7f17c4443a8e2089be6870180549185166001600160a01b031992831617905593517f44da158ba27f9252712a74ff6a55c5d531f69609f1f6e7f17c4443a8e2089be790960180549690931695909316949094179055835190815290810191909152919350849184917f5cbfe9cceabf50e9fcfff39e46cd47b1667ad148238648e99aee4fa0e1193d43910160405180910390a36001600160a01b03841615610b23576001600160a01b0385811660009081526098602052604090819020549051633670855b60e11b8152336004820152868316602482015260448101859052911690636ce10ab690606401600060405180830381600087803b158015610b0a57600080fd5b505af1158015610b1e573d6000803e3d6000fd5b505050505b509392505050565b6000610b3681610e9d565b6001600160a01b038216610b5d57604051632627b42d60e11b815260040160405180910390fd5b506001600160a01b03918216600090815260986020526040902080546001600160a01b03191691909216179055565b7fdfbefbf47cfe66b701d8cfdbce1de81c821590819cb07e71cb01b6602fb0ee27610bb681610e9d565b61068360008051602061171b83398151915283610eaa565b60008051602061171b833981519152610be681610e9d565b6001600160a01b038087166000908152609860205260409081902054905163d518b7ff60e01b8152911690819063d518b7ff906108fc9089908990899089906004016115a3565b600082815260656020526040902060010154610c4881610e9d565b6105ff8383610f30565b600054610100900460ff1615808015610c725750600054600160ff909116105b80610c8c5750303b158015610c8c575060005460ff166001145b610cef5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610670565b6000805460ff191660011790558015610d12576000805461ff0019166101001790555b610d1a610fb9565b610d25600033611026565b6097839055609b80546001600160a01b0319166001600160a01b03841690811790915560408051918252602082018590527fa4888636278c973bcfd5eca8f86d67bf0c980edbf1740721c6f229b0421ae1e2910160405180910390a180156105ff576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb384740249890602001610783565b6000610dce81610e9d565b6001600160a01b038085166000908152609860205260409020541680610e0757604051632627b42d60e11b815260040160405180910390fd5b60405163b08805a560e01b815260048101859052602481018490526001600160a01b0382169063b08805a590604401600060405180830381600087803b158015610e5057600080fd5b505af1158015610e64573d6000803e3d6000fd5b505050505050505050565b6000610e7a81610e9d565b50609b80546001600160a01b0319166001600160a01b0392909216919091179055565b610ea78133611030565b50565b610eb48282610864565b6106835760008281526065602090815260408083206001600160a01b03851684529091529020805460ff19166001179055610eec3390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b610f3a8282610864565b156106835760008281526065602090815260408083206001600160a01b0385168085529252808320805460ff1916905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b609a54609754600091610fa9916115f7565b610fb49060016115f7565b905090565b600054610100900460ff166110245760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b6064820152608401610670565b565b6106838282610eaa565b61103a8282610864565b6106835761104781611089565b61105283602061109b565b60405160200161106392919061162e565b60408051601f198184030181529082905262461bcd60e51b8252610670916004016116a3565b606061057a6001600160a01b03831660145b606060006110aa8360026116d6565b6110b59060026115f7565b67ffffffffffffffff8111156110cd576110cd611403565b6040519080825280601f01601f1916602001820160405280156110f7576020820181803683370190505b509050600360fc1b81600081518110611112576111126116ed565b60200101906001600160f81b031916908160001a905350600f60fb1b81600181518110611141576111416116ed565b60200101906001600160f81b031916908160001a90535060006111658460026116d6565b6111709060016115f7565b90505b60018111156111e8576f181899199a1a9b1b9c1cb0b131b232b360811b85600f16601081106111a4576111a46116ed565b1a60f81b8282815181106111ba576111ba6116ed565b60200101906001600160f81b031916908160001a90535060049490941c936111e181611703565b9050611173565b5083156112375760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e746044820152606401610670565b9392505050565b60006020828403121561125057600080fd5b81356001600160e01b03198116811461123757600080fd5b80356001600160a01b038116811461127f57600080fd5b919050565b60006020828403121561129657600080fd5b61123782611268565b6000806000606084860312156112b457600080fd5b833580151581146112c457600080fd5b95602085013595506040909401359392505050565b6000602082840312156112eb57600080fd5b5035919050565b6000806040838503121561130557600080fd5b8235915061131560208401611268565b90509250929050565b6000806040838503121561133157600080fd5b61133a83611268565b946020939093013593505050565b60008060006060848603121561135d57600080fd5b61136684611268565b925061137460208501611268565b9150604084013590509250925092565b600080600080600060a0868803121561139c57600080fd5b6113a586611268565b94506113b360208701611268565b93506113c160408701611268565b94979396509394606081013594506080013592915050565b600080604083850312156113ec57600080fd5b6113f583611268565b915061131560208401611268565b634e487b7160e01b600052604160045260246000fd5b600082601f83011261142a57600080fd5b8135602067ffffffffffffffff8083111561144757611447611403565b8260051b604051601f19603f8301168101818110848211171561146c5761146c611403565b60405293845285810183019383810192508785111561148a57600080fd5b83870191505b848210156114a957813583529183019190830190611490565b979650505050505050565b600080600080600060a086880312156114cc57600080fd5b6114d586611268565b94506114e360208701611268565b93506114f160408701611268565b9250606086013567ffffffffffffffff8082111561150e57600080fd5b61151a89838a01611419565b9350608088013591508082111561153057600080fd5b5061153d88828901611419565b9150509295509295909350565b60008060006060848603121561155f57600080fd5b6112c484611268565b600081518084526020808501945080840160005b838110156115985781518752958201959082019060010161157c565b509495945050505050565b6001600160a01b038581168252841660208201526080604082018190526000906115cf90830185611568565b82810360608401526114a98185611568565b634e487b7160e01b600052601160045260246000fd5b8082018082111561057a5761057a6115e1565b60005b8381101561162557818101518382015260200161160d565b50506000910152565b7f416363657373436f6e74726f6c3a206163636f756e742000000000000000000081526000835161166681601785016020880161160a565b7001034b99036b4b9b9b4b733903937b6329607d1b601791840191820152835161169781602884016020880161160a565b01602801949350505050565b60208152600082518060208401526116c281604085016020870161160a565b601f01601f19169190910160400192915050565b808202811582820484141761057a5761057a6115e1565b634e487b7160e01b600052603260045260246000fd5b600081611712576117126115e1565b50600019019056fe40a5c770eee7730548a6335e1f372e76bf4759f6fda1a932bd9cfc33106f0b4ca2646970667358221220b2618605619fe9d7ba99fe3576b090ded9d2e679e72096e3edb485193e189db164736f6c63430008130033", + "nonce": "0x483", + "accessList": [] + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0xc7d9df9de8d8dd6db347a6ecffd38864a7649c4a6327fc847b1203a24872c293", + "transactionType": "CREATE", + "contractName": "ERC721ABLE", + "contractAddress": "0xdDC710e86c9C0E01852C0770C0817f59416518D7", + "function": null, + "arguments": null, + "transaction": { + "type": "0x02", + "from": "0xd71256ec24925873ce9e9f085f89864ca05970bd", + "gas": "0x32518c", + "value": "0x0", + "data": "0x60806040523480156200001157600080fd5b506200001c62000022565b620000e4565b600054610100900460ff16156200008f5760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff9081161015620000e2576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b612c7380620000f46000396000f3fe60806040526004361061020f5760003560e01c806370a0823111610118578063a1db9782116100a0578063d5abeb011161006f578063d5abeb0114610622578063de7ecf8714610638578063e985e9c51461064e578063f2fde38b1461066e578063fe325e961461068e57600080fd5b8063a1db9782146105af578063a22cb465146105cf578063b88d4fde146105ef578063c87b56dd1461060257600080fd5b806384a0c766116100e757806384a0c7661461051c5780638c72c54e1461053c5780638da5cb5b1461055c5780639182ba971461057a57806395d89b411461059a57600080fd5b806370a08231146104ad578063715018a6146104cd578063731133e9146104e2578063754b377c146104f557600080fd5b806342842e0e1161019b57806365e8e4f41161016a57806365e8e4f4146103f557806366748e98146104155780636cc82b841461044d5780636dbdaae61461046d5780636f8b44b01461048d57600080fd5b806342842e0e1461036e5780634b1022621461038157806355f804b3146103b55780636352211e146103d557600080fd5b806318160ddd116101e257806318160ddd146102b857806323b872dd146102db5780632a778c9b146102ee5780632e37eef6146103045780634128541c1461034e57600080fd5b806301ffc9a71461021457806306fdde0314610249578063081812fc1461026b578063095ea7b3146102a3575b600080fd5b34801561022057600080fd5b5061023461022f3660046121e8565b6106a3565b60405190151581526020015b60405180910390f35b34801561025557600080fd5b5061025e6106b4565b6040516102409190612255565b34801561027757600080fd5b5061028b610286366004612268565b61074f565b6040516001600160a01b039091168152602001610240565b6102b66102b1366004612296565b61079c565b005b3480156102c457600080fd5b506102cd6107ac565b604051908152602001610240565b6102b66102e93660046122c2565b6107cc565b3480156102fa57600080fd5b506102cd60685481565b34801561031057600080fd5b5061032461031f366004612268565b6109d0565b6040805195865260208601949094529284019190915260608301521515608082015260a001610240565b34801561035a57600080fd5b5060655461028b906001600160a01b031681565b6102b661037c3660046122c2565b610a14565b34801561038d57600080fd5b506102cd7f73e84917c5def9002f59334ba09785218b36a703c0e3d37d832ea21e233bb17f81565b3480156103c157600080fd5b506102b66103d036600461234b565b610a34565b3480156103e157600080fd5b5061028b6103f0366004612268565b610a49565b34801561040157600080fd5b506102b6610410366004612417565b610a54565b34801561042157600080fd5b506102cd610430366004612296565b606c60209081526000928352604080842090915290825290205481565b34801561045957600080fd5b5060665461028b906001600160a01b031681565b34801561047957600080fd5b506102b6610488366004612268565b610cd9565b34801561049957600080fd5b506102b66104a8366004612268565b610ce6565b3480156104b957600080fd5b506102cd6104c836600461249f565b610d1b565b3480156104d957600080fd5b506102b6610d83565b6102b66104f03660046124bc565b610d97565b34801561050157600080fd5b5061050a600181565b60405160ff9091168152602001610240565b34801561052857600080fd5b506102b6610537366004612525565b610fbe565b34801561054857600080fd5b5060675461028b906001600160a01b031681565b34801561056857600080fd5b506033546001600160a01b031661028b565b34801561058657600080fd5b506102b66105953660046125aa565b611003565b3480156105a657600080fd5b5061025e6111ca565b3480156105bb57600080fd5b506102b66105ca366004612296565b611206565b3480156105db57600080fd5b506102b66105ea36600461262c565b61127f565b6102b66105fd366004612665565b6112fc565b34801561060e57600080fd5b5061025e61061d366004612268565b611346565b34801561062e57600080fd5b506102cd606d5481565b34801561064457600080fd5b506102cd60695481565b34801561065a57600080fd5b506102346106693660046126b8565b6114a1565b34801561067a57600080fd5b506102b661068936600461249f565b6114de565b34801561069a57600080fd5b506102b6611557565b60006106ae82611729565b92915050565b60606106be611777565b60020180546106cc906126e6565b80601f01602080910402602001604051908101604052809291908181526020018280546106f8906126e6565b80156107455780601f1061071a57610100808354040283529160200191610745565b820191906000526020600020905b81548152906001019060200180831161072857829003601f168201915b5050505050905090565b600061075a8261179b565b610777576040516333d1c03960e21b815260040160405180910390fd5b61077f611777565b60009283526006016020525060409020546001600160a01b031690565b6107a8828260016117e4565b5050565b600060016107b8611777565b600101546107c4611777565b540303919050565b60006107d782611899565b9050836001600160a01b0316816001600160a01b03161461080a5760405162a1148160e81b815260040160405180910390fd5b60008061081684611946565b9150915061083b81876108263390565b6001600160a01b039081169116811491141790565b6108665761084986336114a1565b61086657604051632ce44b5f60e11b815260040160405180910390fd5b6001600160a01b03851661088d57604051633a954ecd60e21b815260040160405180910390fd5b61089a868686600161196e565b80156108a557600082555b6108ad611777565b6001600160a01b03871660009081526005919091016020526040902080546000190190556108d9611777565b6001600160a01b03861660008181526005929092016020526040909120805460010190554260a01b17600160e11b17610910611777565b60008681526004919091016020526040812091909155600160e11b84169003610986576001840161093f611777565b60008281526004919091016020526040812054900361098457610960611777565b5481146109845783610970611777565b600083815260049190910160205260409020555b505b83856001600160a01b0316876001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a45b505050505050565b606b81815481106109e057600080fd5b6000918252602090912060059091020180546001820154600283015460038401546004909401549294509092909160ff1685565b610a2f838383604051806020016040528060008152506112fc565b505050565b610a3c6119ff565b606a610a2f828483612760565b60006106ae82611899565b600080516020612c1e83398151915254610100900460ff16610a8957600080516020612c1e8339815191525460ff1615610a8d565b303b155b610b045760405162461bcd60e51b815260206004820152603760248201527f455243373231415f5f496e697469616c697a61626c653a20636f6e747261637460448201527f20697320616c726561647920696e697469616c697a656400000000000000000060648201526084015b60405180910390fd5b600080516020612c1e83398151915254610100900460ff16158015610b4057600080516020612c1e833981519152805461ffff19166101011790555b600054610100900460ff1615808015610b605750600054600160ff909116105b80610b7a5750303b158015610b7a575060005460ff166001145b610bdd5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610afb565b6000805460ff191660011790558015610c00576000805461ff0019166101001790555b610c198360405180602001604052806000815250611a59565b610c21611a97565b610c2a86611ac6565b6000606855606580546001600160a01b038088166001600160a01b0319928316179092556066805487841690831617905560678054928916929091169190911790558015610cb2576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b508015610cd257600080516020612c1e833981519152805461ff00191690555b5050505050565b610ce16119ff565b606955565b610cee6119ff565b610cf6611b18565b811015610d1657604051632627b42d60e11b815260040160405180910390fd5b606d55565b60006001600160a01b038216610d44576040516323d3ad8160e21b815260040160405180910390fd5b6001600160401b03610d54611777565b6005016000846001600160a01b03166001600160a01b0316815260200190815260200160002054169050919050565b610d8b6119ff565b610d956000611ac6565b565b610da084611b2b565b610dbd576040516332f7a9d760e21b815260040160405180910390fd5b6000606b8581548110610dd257610dd261281f565b60009182526020918290206040805160a0810182526005909302909101805483526001810154938301939093526002830154908201526003820154606082015260049091015460ff1615156080820152606d5490915084610e31611b18565b610e3b919061284b565b1115610e5a576040516322eb5e9560e21b815260040160405180910390fd5b8060800151610ef9576066546040516332f1944960e21b81526001600160a01b039091169063cbc6512490610e9b90899030908a908990899060040161285e565b602060405180830381865afa158015610eb8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610edc91906128b2565b610ef9576040516352c973a760e01b815260040160405180910390fd5b60608101516001600160a01b0387166000908152606c60209081526040808320898452909152902054610f2d90869061284b565b1115610f4c57604051631d66b65960e11b815260040160405180910390fd5b838160400151610f5c91906128cf565b3414610f7b576040516318f4198360e21b815260040160405180910390fd5b6001600160a01b0386166000908152606c6020908152604080832088845290915281208054869290610fae90849061284b565b909155506109c890508685611bd2565b610fc66119ff565b606d87905586851115610fec57604051632627b42d60e11b815260040160405180910390fd5b610ffa868686868686611d1a565b50505050505050565b61100b6119ff565b606b541561101f5761101f606b600061217d565b600081815b818110156111905760008585838181106110405761104061281f565b905060a0020180360381019061105691906128e6565b9050838160000151108061106e575060208101518151115b1561108c57604051632627b42d60e11b815260040160405180910390fd5b606b805460018101825560009190915281517fbd43cb8ece8cd1863bcd6082d65c5b0d25665b1ce17980f0da43c0ed545f98b4600590920291820181905560208301517fbd43cb8ece8cd1863bcd6082d65c5b0d25665b1ce17980f0da43c0ed545f98b583015560408301517fbd43cb8ece8cd1863bcd6082d65c5b0d25665b1ce17980f0da43c0ed545f98b683015560608301517fbd43cb8ece8cd1863bcd6082d65c5b0d25665b1ce17980f0da43c0ed545f98b78301556080909201517fbd43cb8ece8cd1863bcd6082d65c5b0d25665b1ce17980f0da43c0ed545f98b8909101805460ff191691151591909117905592506111898161295b565b9050611024565b506040518181527ffda37b53117c5bf84916ece7449890be93cbd2842914c83f4a6864adb618654f9060200160405180910390a150505050565b6060606854600014611203576111e1606854611e32565b6040516020016111f19190612974565b60405160208183030381529060405290505b90565b61120e6119ff565b60405163a9059cbb60e01b8152336004820152602481018290526001600160a01b0383169063a9059cbb906044016020604051808303816000875af115801561125b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a2f91906128b2565b80611288611777565b336000818152600792909201602090815260408084206001600160a01b03881680865290835293819020805460ff19169515159590951790945592518415158152919290917f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a35050565b6113078484846107cc565b6001600160a01b0383163b156113405761132384848484611ec4565b611340576040516368d2bf6b60e11b815260040160405180910390fd5b50505050565b60606113518261179b565b61136e57604051632627b42d60e11b815260040160405180910390fd5b6000611378611faf565b9050805160000361139a5760405180602001604052806000815250915061149b565b60408051600180825281830190925260009160208201818036833701905050905081600183516113ca919061299e565b815181106113da576113da61281f565b602001015160f81c60f81b816000815181106113f8576113f861281f565b60200101906001600160f81b031916908160001a905350604051602f60f81b60208201528190602101604051602081830303815290604052805190602001208160405160200161144891906129b1565b6040516020818303038152906040528051906020012003611494578261146d86611fbe565b60405160200161147e9291906129cd565b6040516020818303038152906040529350611498565b8293505b50505b50919050565b60006114ab611777565b6001600160a01b039384166000908152600791909101602090815260408083209490951682529290925250205460ff1690565b6114e66119ff565b6001600160a01b03811661154b5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610afb565b61155481611ac6565b50565b61155f6119ff565b60655460675460685460405163608ebea160e01b81526001600160a01b03928316600482015260248101919091526000928392169063608ebea1906044016040805180830381865afa1580156115b9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115dd91906129fc565b90925090506001600160a01b03821661160957604051632627b42d60e11b815260040160405180910390fd5b47600061271061161984846128cf565b6116239190612a2a565b90506000611631828461299e565b905080156116af576000856001600160a01b03168260405160006040518083038185875af1925050503d8060008114611686576040519150601f19603f3d011682016040523d82523d6000602084013e61168b565b606091505b50509050806116ad57604051631fa55c0760e11b815260040160405180910390fd5b505b8115610cd2576067546040516000916001600160a01b03169084908381818185875af1925050503d8060008114611702576040519150601f19603f3d011682016040523d82523d6000602084013e611707565b606091505b50509050806109c857604051631fa55c0760e11b815260040160405180910390fd5b60006301ffc9a760e01b6001600160e01b03198316148061175a57506380ac58cd60e01b6001600160e01b03198316145b806106ae5750506001600160e01b031916635b5e139f60e01b1490565b7f2569078dfb4b0305704d3008e7403993ae9601b85f7ae5e742de3de8f8011c4090565b6000816001111580156117b557506117b1611777565b5482105b80156106ae5750600160e01b6117c9611777565b60008481526004919091016020526040902054161592915050565b60006117ef83610a49565b9050811561182e57336001600160a01b0382161461182e5761181181336114a1565b61182e576040516367d9dca160e11b815260040160405180910390fd5b83611837611777565b6000858152600691909101602052604080822080546001600160a01b0319166001600160a01b0394851617905551859287811692908516917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259190a450505050565b60008160011161192d576118ab611777565b600083815260049190910160205260408120549150600160e01b8216900361192d5780600003611928576118dd611777565b5482106118fd57604051636f96cda160e11b815260040160405180910390fd5b611905611777565b6000199092016000818152600493909301602052604090922054905080156118fd575b919050565b604051636f96cda160e11b815260040160405180910390fd5b6000806000611953611777565b60009485526006016020525050604090912080549092909150565b6069541561134057606554606754606854604051634bbfc15d60e11b81526001600160a01b0392831660048201528783166024820152868316604482015260648101919091526084810184905291169063977f82ba9060a401600060405180830381600087803b1580156119e157600080fd5b505af11580156119f5573d6000803e3d6000fd5b5050505050505050565b6033546001600160a01b03163314610d955760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610afb565b600080516020612c1e83398151915254610100900460ff16611a8d5760405162461bcd60e51b8152600401610afb90612a4c565b6107a88282612002565b600054610100900460ff16611abe5760405162461bcd60e51b8152600401610afb90612aa0565b610d95612075565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b60006001611b24611777565b5403919050565b606b546000908210611b5057604051632627b42d60e11b815260040160405180910390fd5b6000606b8381548110611b6557611b6561281f565b60009182526020918290206040805160a08101825260059093029091018054808452600182015494840194909452600281015491830191909152600381015460608301526004015460ff161515608082015291504210801590611bcb5750428160200151115b9392505050565b6000611bdc611777565b5490506000829003611c015760405163b562e8dd60e01b815260040160405180910390fd5b611c0e600084838561196e565b680100000000000000018202611c22611777565b6001600160a01b038516600081815260059290920160205260409091208054929092019091554260a01b6001841460e11b1717611c5d611777565b600083815260049190910160205260408120919091556001600160a01b0384169083830190839083907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8180a4600183015b818114611ce757808360007fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600080a4600101611caf565b5081600003611d0857604051622e076360e81b815260040160405180910390fd5b80611d11611777565b5550610a2f9050565b60685415611d3b576040516302d1671b60e41b815260040160405180910390fd5b85158015611d5157506001600160a01b03831615155b80611d6d57506001600160a01b038316158015611d6d57508515155b15611d8b57604051632627b42d60e11b815260040160405180910390fd5b60655460675460405163ae98d85760e01b81526001600160a01b03918216600482015285821660248201526000604482015291169063ae98d857906064016020604051808303816000875af1158015611de8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e0c9190612aeb565b6068556069869055606a611e21828483612760565b5084156109c8576109c88486611bd2565b60606000611e3f836120a5565b60010190506000816001600160401b03811115611e5e57611e5e61238c565b6040519080825280601f01601f191660200182016040528015611e88576020820181803683370190505b5090508181016020015b600019016f181899199a1a9b1b9c1cb0b131b232b360811b600a86061a8153600a8504945084611e9257509392505050565b604051630a85bd0160e11b81526000906001600160a01b0385169063150b7a0290611ef9903390899088908890600401612b04565b6020604051808303816000875af1925050508015611f34575060408051601f3d908101601f19168201909252611f3191810190612b41565b60015b611f92573d808015611f62576040519150601f19603f3d011682016040523d82523d6000602084013e611f67565b606091505b508051600003611f8a576040516368d2bf6b60e11b815260040160405180910390fd5b805181602001fd5b6001600160e01b031916630a85bd0160e11b149050949350505050565b6060606a80546106cc906126e6565b606060a06040510180604052602081039150506000815280825b600183039250600a81066030018353600a900480611fd85750819003601f19909101908152919050565b600080516020612c1e83398151915254610100900460ff166120365760405162461bcd60e51b8152600401610afb90612a4c565b8161203f611777565b6002019061204d9082612b5e565b5080612057611777565b600301906120659082612b5e565b506001612070611777565b555050565b600054610100900460ff1661209c5760405162461bcd60e51b8152600401610afb90612aa0565b610d9533611ac6565b60008072184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b83106120e45772184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b830492506040015b6d04ee2d6d415b85acef81000000008310612110576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc10000831061212e57662386f26fc10000830492506010015b6305f5e1008310612146576305f5e100830492506008015b612710831061215a57612710830492506004015b6064831061216c576064830492506002015b600a83106106ae5760010192915050565b508054600082556005029060005260206000209081019061155491905b808211156121ce5760008082556001820181905560028201819055600382015560048101805460ff1916905560050161219a565b5090565b6001600160e01b03198116811461155457600080fd5b6000602082840312156121fa57600080fd5b8135611bcb816121d2565b60005b83811015612220578181015183820152602001612208565b50506000910152565b60008151808452612241816020860160208601612205565b601f01601f19169290920160200192915050565b602081526000611bcb6020830184612229565b60006020828403121561227a57600080fd5b5035919050565b6001600160a01b038116811461155457600080fd5b600080604083850312156122a957600080fd5b82356122b481612281565b946020939093013593505050565b6000806000606084860312156122d757600080fd5b83356122e281612281565b925060208401356122f281612281565b929592945050506040919091013590565b60008083601f84011261231557600080fd5b5081356001600160401b0381111561232c57600080fd5b60208301915083602082850101111561234457600080fd5b9250929050565b6000806020838503121561235e57600080fd5b82356001600160401b0381111561237457600080fd5b61238085828601612303565b90969095509350505050565b634e487b7160e01b600052604160045260246000fd5b60006001600160401b03808411156123bc576123bc61238c565b604051601f8501601f19908116603f011681019082821181831017156123e4576123e461238c565b816040528093508581528686860111156123fd57600080fd5b858560208301376000602087830101525050509392505050565b6000806000806080858703121561242d57600080fd5b843561243881612281565b9350602085013561244881612281565b9250604085013561245881612281565b915060608501356001600160401b0381111561247357600080fd5b8501601f8101871361248457600080fd5b612493878235602084016123a2565b91505092959194509250565b6000602082840312156124b157600080fd5b8135611bcb81612281565b6000806000806000608086880312156124d457600080fd5b85356124df81612281565b9450602086013593506040860135925060608601356001600160401b0381111561250857600080fd5b61251488828901612303565b969995985093965092949392505050565b600080600080600080600060c0888a03121561254057600080fd5b873596506020880135955060408801359450606088013561256081612281565b9350608088013561257081612281565b925060a08801356001600160401b0381111561258b57600080fd5b6125978a828b01612303565b989b979a50959850939692959293505050565b600080602083850312156125bd57600080fd5b82356001600160401b03808211156125d457600080fd5b818501915085601f8301126125e857600080fd5b8135818111156125f757600080fd5b86602060a08302850101111561260c57600080fd5b60209290920196919550909350505050565b801515811461155457600080fd5b6000806040838503121561263f57600080fd5b823561264a81612281565b9150602083013561265a8161261e565b809150509250929050565b6000806000806080858703121561267b57600080fd5b843561268681612281565b9350602085013561269681612281565b92506040850135915060608501356001600160401b0381111561247357600080fd5b600080604083850312156126cb57600080fd5b82356126d681612281565b9150602083013561265a81612281565b600181811c908216806126fa57607f821691505b60208210810361149b57634e487b7160e01b600052602260045260246000fd5b601f821115610a2f57600081815260208120601f850160051c810160208610156127415750805b601f850160051c820191505b818110156109c85782815560010161274d565b6001600160401b038311156127775761277761238c565b61278b8361278583546126e6565b8361271a565b6000601f8411600181146127bf57600085156127a75750838201355b600019600387901b1c1916600186901b178355610cd2565b600083815260209020601f19861690835b828110156127f057868501358255602094850194600190920191016127d0565b508682101561280d5760001960f88860031b161c19848701351681555b505060018560011b0183555050505050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b808201808211156106ae576106ae612835565b6001600160a01b038681168252851660208201526040810184905260806060820181905281018290526000828460a0840137600060a0848401015260a0601f19601f85011683010190509695505050505050565b6000602082840312156128c457600080fd5b8151611bcb8161261e565b80820281158282048414176106ae576106ae612835565b600060a082840312156128f857600080fd5b60405160a081018181106001600160401b038211171561291a5761291a61238c565b806040525082358152602083013560208201526040830135604082015260608301356060820152608083013561294f8161261e565b60808201529392505050565b60006001820161296d5761296d612835565b5060010190565b6120a160f11b815260008251612991816002850160208701612205565b9190910160020192915050565b818103818111156106ae576106ae612835565b600082516129c3818460208701612205565b9190910192915050565b600083516129df818460208801612205565b8351908301906129f3818360208801612205565b01949350505050565b60008060408385031215612a0f57600080fd5b8251612a1a81612281565b6020939093015192949293505050565b600082612a4757634e487b7160e01b600052601260045260246000fd5b500490565b60208082526034908201527f455243373231415f5f496e697469616c697a61626c653a20636f6e7472616374604082015273206973206e6f7420696e697469616c697a696e6760601b606082015260800190565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b600060208284031215612afd57600080fd5b5051919050565b6001600160a01b0385811682528416602082015260408101839052608060608201819052600090612b3790830184612229565b9695505050505050565b600060208284031215612b5357600080fd5b8151611bcb816121d2565b81516001600160401b03811115612b7757612b7761238c565b612b8b81612b8584546126e6565b8461271a565b602080601f831160018114612bc05760008415612ba85750858301515b600019600386901b1c1916600185901b1785556109c8565b600085815260208120601f198616915b82811015612bef57888601518255948401946001909101908401612bd0565b5085821015612c0d5787850151600019600388901b60f8161c191681555b5050505050600190811b0190555056feee151c8401928dc223602bb187aff91b9a56c7cae5476ef1b3287b085a16c85fa2646970667358221220a9dd22b04ec37cf2afb5cdba470000e7559163057730e5cac14db8b6a172b7f164736f6c63430008130033", + "nonce": "0x484", + "accessList": [] + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0xa44071e057ccb66121a40d8e328625d15e471a621569e7f5966f630e080eec4c", + "transactionType": "CREATE", + "contractName": "ERC721ABOE", + "contractAddress": "0xEeB54C912C6971cC808a2f960b6E27148a66715c", + "function": null, + "arguments": null, + "transaction": { + "type": "0x02", + "from": "0xd71256ec24925873ce9e9f085f89864ca05970bd", + "gas": "0x3084fb", + "value": "0x0", + "data": "0x60806040523480156200001157600080fd5b506200001c62000022565b620000e4565b600054610100900460ff16156200008f5760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff9081161015620000e2576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b612acf80620000f46000396000f3fe6080604052600436106101f95760003560e01c806370a082311161010d57806395d89b41116100a0578063c87b56dd1161006f578063c87b56dd146105cc578063de7ecf87146105ec578063e985e9c514610602578063f2fde38b14610622578063fe325e961461064257600080fd5b806395d89b4114610564578063a1db978214610579578063a22cb46514610599578063b88d4fde146105b957600080fd5b80638c5c2a5b116100dc5780638c5c2a5b146104e65780638c72c54e146105065780638da5cb5b146105265780639182ba971461054457600080fd5b806370a0823114610477578063715018a614610497578063731133e9146104ac578063754b377c146104bf57600080fd5b80634128541c116101905780636352211e1161015f5780636352211e146103bf57806365e8e4f4146103df57806366748e98146103ff5780636cc82b84146104375780636dbdaae61461045757600080fd5b80634128541c1461033857806342842e0e146103585780634b1022621461036b57806355f804b31461039f57600080fd5b806318160ddd116101cc57806318160ddd146102a257806323b872dd146102c55780632a778c9b146102d85780632e37eef6146102ee57600080fd5b806301ffc9a7146101fe57806306fdde0314610233578063081812fc14610255578063095ea7b31461028d575b600080fd5b34801561020a57600080fd5b5061021e610219366004612061565b610657565b60405190151581526020015b60405180910390f35b34801561023f57600080fd5b50610248610668565b60405161022a91906120ce565b34801561026157600080fd5b506102756102703660046120e1565b610703565b6040516001600160a01b03909116815260200161022a565b6102a061029b36600461210f565b610750565b005b3480156102ae57600080fd5b506102b7610760565b60405190815260200161022a565b6102a06102d336600461213b565b610780565b3480156102e457600080fd5b506102b760685481565b3480156102fa57600080fd5b5061030e6103093660046120e1565b610984565b6040805195865260208601949094529284019190915260608301521515608082015260a00161022a565b34801561034457600080fd5b50606554610275906001600160a01b031681565b6102a061036636600461213b565b6109c8565b34801561037757600080fd5b506102b77fdcfc50123fc6ea3c803b5b1b4cbbc9ce5b81f13451fd3124e43ef593fd840d1981565b3480156103ab57600080fd5b506102a06103ba3660046121c4565b6109e8565b3480156103cb57600080fd5b506102756103da3660046120e1565b6109fd565b3480156103eb57600080fd5b506102a06103fa366004612290565b610a08565b34801561040b57600080fd5b506102b761041a36600461210f565b606c60209081526000928352604080842090915290825290205481565b34801561044357600080fd5b50606654610275906001600160a01b031681565b34801561046357600080fd5b506102a06104723660046120e1565b610c8d565b34801561048357600080fd5b506102b7610492366004612318565b610c9a565b3480156104a357600080fd5b506102a0610d02565b6102a06104ba366004612335565b610d16565b3480156104cb57600080fd5b506104d4600181565b60405160ff909116815260200161022a565b3480156104f257600080fd5b506102a061050136600461239e565b610e79565b34801561051257600080fd5b50606754610275906001600160a01b031681565b34801561053257600080fd5b506033546001600160a01b0316610275565b34801561055057600080fd5b506102a061055f366004612419565b610e8f565b34801561057057600080fd5b50610248611056565b34801561058557600080fd5b506102a061059436600461210f565b611092565b3480156105a557600080fd5b506102a06105b436600461249b565b61110b565b6102a06105c73660046124d4565b611188565b3480156105d857600080fd5b506102486105e73660046120e1565b6111d2565b3480156105f857600080fd5b506102b760695481565b34801561060e57600080fd5b5061021e61061d366004612527565b61132d565b34801561062e57600080fd5b506102a061063d366004612318565b61136a565b34801561064e57600080fd5b506102a06113e3565b6000610662826115b5565b92915050565b6060610672611603565b600201805461068090612555565b80601f01602080910402602001604051908101604052809291908181526020018280546106ac90612555565b80156106f95780601f106106ce576101008083540402835291602001916106f9565b820191906000526020600020905b8154815290600101906020018083116106dc57829003601f168201915b5050505050905090565b600061070e82611627565b61072b576040516333d1c03960e21b815260040160405180910390fd5b610733611603565b60009283526006016020525060409020546001600160a01b031690565b61075c82826001611670565b5050565b6000600161076c611603565b60010154610778611603565b540303919050565b600061078b82611725565b9050836001600160a01b0316816001600160a01b0316146107be5760405162a1148160e81b815260040160405180910390fd5b6000806107ca846117d2565b915091506107ef81876107da3390565b6001600160a01b039081169116811491141790565b61081a576107fd863361132d565b61081a57604051632ce44b5f60e11b815260040160405180910390fd5b6001600160a01b03851661084157604051633a954ecd60e21b815260040160405180910390fd5b61084e86868660016117fa565b801561085957600082555b610861611603565b6001600160a01b038716600090815260059190910160205260409020805460001901905561088d611603565b6001600160a01b03861660008181526005929092016020526040909120805460010190554260a01b17600160e11b176108c4611603565b60008681526004919091016020526040812091909155600160e11b8416900361093a57600184016108f3611603565b60008281526004919091016020526040812054900361093857610914611603565b5481146109385783610924611603565b600083815260049190910160205260409020555b505b83856001600160a01b0316876001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a45b505050505050565b606b818154811061099457600080fd5b6000918252602090912060059091020180546001820154600283015460038401546004909401549294509092909160ff1685565b6109e383838360405180602001604052806000815250611188565b505050565b6109f061188b565b606a6109e38284836125cf565b600061066282611725565b600080516020612a7a83398151915254610100900460ff16610a3d57600080516020612a7a8339815191525460ff1615610a41565b303b155b610ab85760405162461bcd60e51b815260206004820152603760248201527f455243373231415f5f496e697469616c697a61626c653a20636f6e747261637460448201527f20697320616c726561647920696e697469616c697a656400000000000000000060648201526084015b60405180910390fd5b600080516020612a7a83398151915254610100900460ff16158015610af457600080516020612a7a833981519152805461ffff19166101011790555b600054610100900460ff1615808015610b145750600054600160ff909116105b80610b2e5750303b158015610b2e575060005460ff166001145b610b915760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610aaf565b6000805460ff191660011790558015610bb4576000805461ff0019166101001790555b610bcd83604051806020016040528060008152506118e5565b610bd5611923565b610bde86611952565b6000606855606580546001600160a01b038088166001600160a01b0319928316179092556066805487841690831617905560678054928916929091169190911790558015610c66576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b508015610c8657600080516020612a7a833981519152805461ff00191690555b5050505050565b610c9561188b565b606955565b60006001600160a01b038216610cc3576040516323d3ad8160e21b815260040160405180910390fd5b6001600160401b03610cd3611603565b6005016000846001600160a01b03166001600160a01b0316815260200190815260200160002054169050919050565b610d0a61188b565b610d146000611952565b565b610d1f846119a4565b610d3c576040516332f7a9d760e21b815260040160405180910390fd5b6000606b8581548110610d5157610d5161268e565b60009182526020918290206040805160a0810182526005909302909101805483526001810154938301939093526002830154908201526003820154606082015260049091015460ff16151560808201819052909150610e40576066546040516332f1944960e21b81526001600160a01b039091169063cbc6512490610de290899030908a90899089906004016126a4565b602060405180830381865afa158015610dff573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e2391906126f8565b610e40576040516352c973a760e01b815260040160405180910390fd5b838160400151610e50919061272b565b3414610e6f576040516318f4198360e21b815260040160405180910390fd5b61097c8685611a4b565b610e8161188b565b61097c868686868686611b93565b610e9761188b565b606b5415610eab57610eab606b6000611ff6565b600081815b8181101561101c576000858583818110610ecc57610ecc61268e565b905060a00201803603810190610ee29190612742565b90508381600001511080610efa575060208101518151115b15610f1857604051632627b42d60e11b815260040160405180910390fd5b606b805460018101825560009190915281517fbd43cb8ece8cd1863bcd6082d65c5b0d25665b1ce17980f0da43c0ed545f98b4600590920291820181905560208301517fbd43cb8ece8cd1863bcd6082d65c5b0d25665b1ce17980f0da43c0ed545f98b583015560408301517fbd43cb8ece8cd1863bcd6082d65c5b0d25665b1ce17980f0da43c0ed545f98b683015560608301517fbd43cb8ece8cd1863bcd6082d65c5b0d25665b1ce17980f0da43c0ed545f98b78301556080909201517fbd43cb8ece8cd1863bcd6082d65c5b0d25665b1ce17980f0da43c0ed545f98b8909101805460ff19169115159190911790559250611015816127b7565b9050610eb0565b506040518181527ffda37b53117c5bf84916ece7449890be93cbd2842914c83f4a6864adb618654f9060200160405180910390a150505050565b606060685460001461108f5761106d606854611cab565b60405160200161107d91906127d0565b60405160208183030381529060405290505b90565b61109a61188b565b60405163a9059cbb60e01b8152336004820152602481018290526001600160a01b0383169063a9059cbb906044016020604051808303816000875af11580156110e7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109e391906126f8565b80611114611603565b336000818152600792909201602090815260408084206001600160a01b03881680865290835293819020805460ff19169515159590951790945592518415158152919290917f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a35050565b611193848484610780565b6001600160a01b0383163b156111cc576111af84848484611d3d565b6111cc576040516368d2bf6b60e11b815260040160405180910390fd5b50505050565b60606111dd82611627565b6111fa57604051632627b42d60e11b815260040160405180910390fd5b6000611204611e28565b9050805160000361122657604051806020016040528060008152509150611327565b604080516001808252818301909252600091602082018180368337019050509050816001835161125691906127fa565b815181106112665761126661268e565b602001015160f81c60f81b816000815181106112845761128461268e565b60200101906001600160f81b031916908160001a905350604051602f60f81b6020820152819060210160405160208183030381529060405280519060200120816040516020016112d4919061280d565b604051602081830303815290604052805190602001200361132057826112f986611e37565b60405160200161130a929190612829565b6040516020818303038152906040529350611324565b8293505b50505b50919050565b6000611337611603565b6001600160a01b039384166000908152600791909101602090815260408083209490951682529290925250205460ff1690565b61137261188b565b6001600160a01b0381166113d75760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610aaf565b6113e081611952565b50565b6113eb61188b565b60655460675460685460405163608ebea160e01b81526001600160a01b03928316600482015260248101919091526000928392169063608ebea1906044016040805180830381865afa158015611445573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114699190612858565b90925090506001600160a01b03821661149557604051632627b42d60e11b815260040160405180910390fd5b4760006127106114a5848461272b565b6114af9190612886565b905060006114bd82846127fa565b9050801561153b576000856001600160a01b03168260405160006040518083038185875af1925050503d8060008114611512576040519150601f19603f3d011682016040523d82523d6000602084013e611517565b606091505b505090508061153957604051631fa55c0760e11b815260040160405180910390fd5b505b8115610c86576067546040516000916001600160a01b03169084908381818185875af1925050503d806000811461158e576040519150601f19603f3d011682016040523d82523d6000602084013e611593565b606091505b505090508061097c57604051631fa55c0760e11b815260040160405180910390fd5b60006301ffc9a760e01b6001600160e01b0319831614806115e657506380ac58cd60e01b6001600160e01b03198316145b806106625750506001600160e01b031916635b5e139f60e01b1490565b7f2569078dfb4b0305704d3008e7403993ae9601b85f7ae5e742de3de8f8011c4090565b600081600111158015611641575061163d611603565b5482105b80156106625750600160e01b611655611603565b60008481526004919091016020526040902054161592915050565b600061167b836109fd565b905081156116ba57336001600160a01b038216146116ba5761169d813361132d565b6116ba576040516367d9dca160e11b815260040160405180910390fd5b836116c3611603565b6000858152600691909101602052604080822080546001600160a01b0319166001600160a01b0394851617905551859287811692908516917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259190a450505050565b6000816001116117b957611737611603565b600083815260049190910160205260408120549150600160e01b821690036117b957806000036117b457611769611603565b54821061178957604051636f96cda160e11b815260040160405180910390fd5b611791611603565b600019909201600081815260049390930160205260409092205490508015611789575b919050565b604051636f96cda160e11b815260040160405180910390fd5b60008060006117df611603565b60009485526006016020525050604090912080549092909150565b606954156111cc57606554606754606854604051634bbfc15d60e11b81526001600160a01b0392831660048201528783166024820152868316604482015260648101919091526084810184905291169063977f82ba9060a401600060405180830381600087803b15801561186d57600080fd5b505af1158015611881573d6000803e3d6000fd5b5050505050505050565b6033546001600160a01b03163314610d145760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610aaf565b600080516020612a7a83398151915254610100900460ff166119195760405162461bcd60e51b8152600401610aaf906128a8565b61075c8282611e7b565b600054610100900460ff1661194a5760405162461bcd60e51b8152600401610aaf906128fc565b610d14611eee565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b606b5460009082106119c957604051632627b42d60e11b815260040160405180910390fd5b6000606b83815481106119de576119de61268e565b60009182526020918290206040805160a08101825260059093029091018054808452600182015494840194909452600281015491830191909152600381015460608301526004015460ff161515608082015291504210801590611a445750428160200151115b9392505050565b6000611a55611603565b5490506000829003611a7a5760405163b562e8dd60e01b815260040160405180910390fd5b611a8760008483856117fa565b680100000000000000018202611a9b611603565b6001600160a01b038516600081815260059290920160205260409091208054929092019091554260a01b6001841460e11b1717611ad6611603565b600083815260049190910160205260408120919091556001600160a01b0384169083830190839083907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8180a4600183015b818114611b6057808360007fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600080a4600101611b28565b5081600003611b8157604051622e076360e81b815260040160405180910390fd5b80611b8a611603565b55506109e39050565b60685415611bb4576040516302d1671b60e41b815260040160405180910390fd5b85158015611bca57506001600160a01b03831615155b80611be657506001600160a01b038316158015611be657508515155b15611c0457604051632627b42d60e11b815260040160405180910390fd5b60655460675460405163ae98d85760e01b81526001600160a01b03918216600482015285821660248201526000604482015291169063ae98d857906064016020604051808303816000875af1158015611c61573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c859190612947565b6068556069869055606a611c9a8284836125cf565b50841561097c5761097c8486611a4b565b60606000611cb883611f1e565b60010190506000816001600160401b03811115611cd757611cd7612205565b6040519080825280601f01601f191660200182016040528015611d01576020820181803683370190505b5090508181016020015b600019016f181899199a1a9b1b9c1cb0b131b232b360811b600a86061a8153600a8504945084611d0b57509392505050565b604051630a85bd0160e11b81526000906001600160a01b0385169063150b7a0290611d72903390899088908890600401612960565b6020604051808303816000875af1925050508015611dad575060408051601f3d908101601f19168201909252611daa9181019061299d565b60015b611e0b573d808015611ddb576040519150601f19603f3d011682016040523d82523d6000602084013e611de0565b606091505b508051600003611e03576040516368d2bf6b60e11b815260040160405180910390fd5b805181602001fd5b6001600160e01b031916630a85bd0160e11b149050949350505050565b6060606a805461068090612555565b606060a06040510180604052602081039150506000815280825b600183039250600a81066030018353600a900480611e515750819003601f19909101908152919050565b600080516020612a7a83398151915254610100900460ff16611eaf5760405162461bcd60e51b8152600401610aaf906128a8565b81611eb8611603565b60020190611ec690826129ba565b5080611ed0611603565b60030190611ede90826129ba565b506001611ee9611603565b555050565b600054610100900460ff16611f155760405162461bcd60e51b8152600401610aaf906128fc565b610d1433611952565b60008072184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b8310611f5d5772184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b830492506040015b6d04ee2d6d415b85acef81000000008310611f89576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc100008310611fa757662386f26fc10000830492506010015b6305f5e1008310611fbf576305f5e100830492506008015b6127108310611fd357612710830492506004015b60648310611fe5576064830492506002015b600a83106106625760010192915050565b50805460008255600502906000526020600020908101906113e091905b808211156120475760008082556001820181905560028201819055600382015560048101805460ff19169055600501612013565b5090565b6001600160e01b0319811681146113e057600080fd5b60006020828403121561207357600080fd5b8135611a448161204b565b60005b83811015612099578181015183820152602001612081565b50506000910152565b600081518084526120ba81602086016020860161207e565b601f01601f19169290920160200192915050565b602081526000611a4460208301846120a2565b6000602082840312156120f357600080fd5b5035919050565b6001600160a01b03811681146113e057600080fd5b6000806040838503121561212257600080fd5b823561212d816120fa565b946020939093013593505050565b60008060006060848603121561215057600080fd5b833561215b816120fa565b9250602084013561216b816120fa565b929592945050506040919091013590565b60008083601f84011261218e57600080fd5b5081356001600160401b038111156121a557600080fd5b6020830191508360208285010111156121bd57600080fd5b9250929050565b600080602083850312156121d757600080fd5b82356001600160401b038111156121ed57600080fd5b6121f98582860161217c565b90969095509350505050565b634e487b7160e01b600052604160045260246000fd5b60006001600160401b038084111561223557612235612205565b604051601f8501601f19908116603f0116810190828211818310171561225d5761225d612205565b8160405280935085815286868601111561227657600080fd5b858560208301376000602087830101525050509392505050565b600080600080608085870312156122a657600080fd5b84356122b1816120fa565b935060208501356122c1816120fa565b925060408501356122d1816120fa565b915060608501356001600160401b038111156122ec57600080fd5b8501601f810187136122fd57600080fd5b61230c8782356020840161221b565b91505092959194509250565b60006020828403121561232a57600080fd5b8135611a44816120fa565b60008060008060006080868803121561234d57600080fd5b8535612358816120fa565b9450602086013593506040860135925060608601356001600160401b0381111561238157600080fd5b61238d8882890161217c565b969995985093965092949392505050565b60008060008060008060a087890312156123b757600080fd5b863595506020870135945060408701356123d0816120fa565b935060608701356123e0816120fa565b925060808701356001600160401b038111156123fb57600080fd5b61240789828a0161217c565b979a9699509497509295939492505050565b6000806020838503121561242c57600080fd5b82356001600160401b038082111561244357600080fd5b818501915085601f83011261245757600080fd5b81358181111561246657600080fd5b86602060a08302850101111561247b57600080fd5b60209290920196919550909350505050565b80151581146113e057600080fd5b600080604083850312156124ae57600080fd5b82356124b9816120fa565b915060208301356124c98161248d565b809150509250929050565b600080600080608085870312156124ea57600080fd5b84356124f5816120fa565b93506020850135612505816120fa565b92506040850135915060608501356001600160401b038111156122ec57600080fd5b6000806040838503121561253a57600080fd5b8235612545816120fa565b915060208301356124c9816120fa565b600181811c9082168061256957607f821691505b60208210810361132757634e487b7160e01b600052602260045260246000fd5b601f8211156109e357600081815260208120601f850160051c810160208610156125b05750805b601f850160051c820191505b8181101561097c578281556001016125bc565b6001600160401b038311156125e6576125e6612205565b6125fa836125f48354612555565b83612589565b6000601f84116001811461262e57600085156126165750838201355b600019600387901b1c1916600186901b178355610c86565b600083815260209020601f19861690835b8281101561265f578685013582556020948501946001909201910161263f565b508682101561267c5760001960f88860031b161c19848701351681555b505060018560011b0183555050505050565b634e487b7160e01b600052603260045260246000fd5b6001600160a01b038681168252851660208201526040810184905260806060820181905281018290526000828460a0840137600060a0848401015260a0601f19601f85011683010190509695505050505050565b60006020828403121561270a57600080fd5b8151611a448161248d565b634e487b7160e01b600052601160045260246000fd5b808202811582820484141761066257610662612715565b600060a0828403121561275457600080fd5b60405160a081018181106001600160401b038211171561277657612776612205565b80604052508235815260208301356020820152604083013560408201526060830135606082015260808301356127ab8161248d565b60808201529392505050565b6000600182016127c9576127c9612715565b5060010190565b6120a160f11b8152600082516127ed81600285016020870161207e565b9190910160020192915050565b8181038181111561066257610662612715565b6000825161281f81846020870161207e565b9190910192915050565b6000835161283b81846020880161207e565b83519083019061284f81836020880161207e565b01949350505050565b6000806040838503121561286b57600080fd5b8251612876816120fa565b6020939093015192949293505050565b6000826128a357634e487b7160e01b600052601260045260246000fd5b500490565b60208082526034908201527f455243373231415f5f496e697469616c697a61626c653a20636f6e7472616374604082015273206973206e6f7420696e697469616c697a696e6760601b606082015260800190565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b60006020828403121561295957600080fd5b5051919050565b6001600160a01b0385811682528416602082015260408101839052608060608201819052600090612993908301846120a2565b9695505050505050565b6000602082840312156129af57600080fd5b8151611a448161204b565b81516001600160401b038111156129d3576129d3612205565b6129e7816129e18454612555565b84612589565b602080601f831160018114612a1c5760008415612a045750858301515b600019600386901b1c1916600185901b17855561097c565b600085815260208120601f198616915b82811015612a4b57888601518255948401946001909101908401612a2c565b5085821015612a695787850151600019600388901b60f8161c191681555b5050505050600190811b0190555056feee151c8401928dc223602bb187aff91b9a56c7cae5476ef1b3287b085a16c85fa264697066735822122023fa41bc39b9268e59f7967d1440716167d00463f29541b323f7e476d816a66d64736f6c63430008130033", + "nonce": "0x485", + "accessList": [] + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0x177ee1ac28d6153b493f8d756cac44bc933eab4016f50a7f87bfd058a2b6bf3f", + "transactionType": "CALL", + "contractName": "TransparentUpgradeableProxy", + "contractAddress": "0x9BE7E2B13f70f170B63c0379663313EcdB527294", + "function": null, + "arguments": null, + "transaction": { + "type": "0x02", + "from": "0xd71256ec24925873ce9e9f085f89864ca05970bd", + "to": "0x9be7e2b13f70f170b63c0379663313ecdb527294", + "gas": "0xc552", + "value": "0x0", + "data": "0x641254bd000000000000000000000000ddc710e86c9c0e01852c0770c0817f59416518d7", + "nonce": "0x486", + "accessList": [] + }, + "additionalContracts": [], + "isFixedGasLimit": false + } + ], + "receipts": [], + "libraries": [], + "pending": [ + "0x87bbc0bb208ac803aa0b7d13ad37c9da03932cf319c9a3a0b40d0a906b001b0b", + "0xc7d9df9de8d8dd6db347a6ecffd38864a7649c4a6327fc847b1203a24872c293", + "0xa44071e057ccb66121a40d8e328625d15e471a621569e7f5966f630e080eec4c", + "0x177ee1ac28d6153b493f8d756cac44bc933eab4016f50a7f87bfd058a2b6bf3f" + ], + "returns": {}, + "timestamp": 1698658644, + "chain": 84531, + "multi": false, + "commit": "cec81dc" +} \ No newline at end of file diff --git a/broadcast/deploy-upgrade.s.sol/84531/run-1698658651.json b/broadcast/deploy-upgrade.s.sol/84531/run-1698658651.json new file mode 100644 index 0000000..8c7f2ee --- /dev/null +++ b/broadcast/deploy-upgrade.s.sol/84531/run-1698658651.json @@ -0,0 +1,196 @@ +{ + "transactions": [ + { + "hash": "0x87bbc0bb208ac803aa0b7d13ad37c9da03932cf319c9a3a0b40d0a906b001b0b", + "transactionType": "CREATE", + "contractName": "ABDataRegistry", + "contractAddress": "0x072e8fB0aa2C75F727da6df3220eF676A966bcc8", + "function": null, + "arguments": null, + "transaction": { + "type": "0x02", + "from": "0xd71256ec24925873ce9e9f085f89864ca05970bd", + "gas": "0x1b490a", + "value": "0x0", + "data": "0x608060405234801561001057600080fd5b5061001961001e565b6100de565b600054610100900460ff161561008a5760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff90811610156100dc576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b611770806100ed6000396000f3fe608060405234801561001057600080fd5b50600436106101da5760003560e01c80638353b91911610104578063b9138580116100a2578063d547741f11610071578063d547741f146104fd578063da35a26f14610510578063dd3394aa14610523578063f0f442601461053657600080fd5b8063b9138580146104a4578063b9d47392146104c4578063c70eae8c146104d7578063cb9685ba146104ea57600080fd5b806391d14854116100de57806391d1485414610463578063977f82ba14610476578063a217fddf14610489578063ae98d8571461049157600080fd5b80638353b919146104115780638392767d146104245780638ffaa1401461043757600080fd5b80632f2ff15d1161017c5780635eb399681161014b5780635eb399681461036a578063608ebea1146103ac57806369ca69a5146103de57806371ef9a93146103fe57600080fd5b80632f2ff15d146102f357806336568abe1461030657806341859ac8146103195780635134b49a1461034757600080fd5b80630a4d85cd116101b85780630a4d85cd14610265578063145f8dd4146102a657806319742e6c146102bb578063248a9ca3146102d057600080fd5b806301ffc9a7146101df57806304a0fb1714610207578063069a9b641461023c575b600080fd5b6101f26101ed36600461123e565b610549565b60405190151581526020015b60405180910390f35b61022e7fdfbefbf47cfe66b701d8cfdbce1de81c821590819cb07e71cb01b6602fb0ee2781565b6040519081526020016101fe565b61022e61024a366004611284565b6001600160a01b031660009081526099602052604090205490565b61028e610273366004611284565b6098602052600090815260409020546001600160a01b031681565b6040516001600160a01b0390911681526020016101fe565b61022e60008051602061171b83398151915281565b6102ce6102c936600461129f565b610580565b005b61022e6102de3660046112d9565b60009081526065602052604090206001015490565b6102ce6103013660046112f2565b6105da565b6102ce6103143660046112f2565b610604565b6101f2610327366004611284565b6001600160a01b0390811660009081526098602052604090205416151590565b6101f26103553660046112d9565b609c6020526000908152604090205460ff1681565b61037d6103783660046112d9565b610687565b6040805194855260208501939093526001600160a01b03918216928401929092521660608201526080016101fe565b6103bf6103ba36600461131e565b6106cd565b604080516001600160a01b0390931683526020830191909152016101fe565b61022e6103ec3660046112d9565b609d6020526000908152604090205481565b6102ce61040c36600461131e565b61072b565b6102ce61041f366004611348565b610790565b609b5461028e906001600160a01b031681565b61028e610445366004611284565b6001600160a01b039081166000908152609860205260409020541690565b6101f26104713660046112f2565b610864565b6102ce610484366004611384565b61088f565b61022e600081565b61022e61049f366004611348565b610937565b61022e6104b2366004611284565b60996020526000908152604090205481565b6102ce6104d23660046113d9565b610b2b565b6102ce6104e5366004611284565b610b8c565b6102ce6104f83660046114b4565b610bce565b6102ce61050b3660046112f2565b610c2d565b6102ce61051e3660046112f2565b610c52565b6102ce61053136600461154a565b610dc3565b6102ce610544366004611284565b610e6f565b60006001600160e01b03198216637965db0b60e01b148061057a57506301ffc9a760e01b6001600160e01b03198316145b92915050565b600061058b81610e9d565b6127108211156105ae57604051632627b42d60e11b815260040160405180910390fd5b506000918252609c60209081526040808420805460ff191695151595909517909455609d905291902055565b6000828152606560205260409020600101546105f581610e9d565b6105ff8383610eaa565b505050565b6001600160a01b03811633146106795760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201526e103937b632b9903337b91039b2b63360891b60648201526084015b60405180910390fd5b6106838282610f30565b5050565b609a818154811061069757600080fd5b60009182526020909120600490910201805460018201546002830154600390930154919350916001600160a01b03908116911684565b6000818152609c6020526040812054819060ff16156106fb57506000828152609d6020526040902054610716565b506001600160a01b0383166000908152609960205260409020545b609b546001600160a01b031694909350915050565b600061073681610e9d565b6001600160a01b038316600081815260996020908152604091829020859055815192835282018490527fc1c540da095b5b6d54738e18568e3c832ae9d1a26f1abeb3e69efde2d4fd6ec291015b60405180910390a1505050565b7fdfbefbf47cfe66b701d8cfdbce1de81c821590819cb07e71cb01b6602fb0ee276107ba81610e9d565b6001600160a01b0384811660009081526098602052604090205416156107f35760405163515567cf60e01b815260040160405180910390fd5b6001600160a01b03848116600081815260986020908152604080832080546001600160a01b0319169589169586179055609982529182902086905590519182527fb0c28f4dd5b8aa95e332651d07f6930a2f9d46ae2bc4bfa73e2f33e478a1269b910160405180910390a250505050565b60009182526065602090815260408084206001600160a01b0393909316845291905290205460ff1690565b60008051602061171b8339815191526108a781610e9d565b6001600160a01b03868116600090815260986020526040908190205490516323f4440760e21b81528783166004820152868316602482015260448101869052606481018590529116908190638fd1101c906084015b600060405180830381600087803b15801561091657600080fd5b505af115801561092a573d6000803e3d6000fd5b5050505050505050505050565b600060008051602061171b83398151915261095181610e9d565b610959610f97565b6040805160808101825282815260208082018781526001600160a01b038a81168486018181523360608701818152609a8054600181018255600091909152975160049098027f44da158ba27f9252712a74ff6a55c5d531f69609f1f6e7f17c4443a8e2089be481019890985594517f44da158ba27f9252712a74ff6a55c5d531f69609f1f6e7f17c4443a8e2089be588015590517f44da158ba27f9252712a74ff6a55c5d531f69609f1f6e7f17c4443a8e2089be6870180549185166001600160a01b031992831617905593517f44da158ba27f9252712a74ff6a55c5d531f69609f1f6e7f17c4443a8e2089be790960180549690931695909316949094179055835190815290810191909152919350849184917f5cbfe9cceabf50e9fcfff39e46cd47b1667ad148238648e99aee4fa0e1193d43910160405180910390a36001600160a01b03841615610b23576001600160a01b0385811660009081526098602052604090819020549051633670855b60e11b8152336004820152868316602482015260448101859052911690636ce10ab690606401600060405180830381600087803b158015610b0a57600080fd5b505af1158015610b1e573d6000803e3d6000fd5b505050505b509392505050565b6000610b3681610e9d565b6001600160a01b038216610b5d57604051632627b42d60e11b815260040160405180910390fd5b506001600160a01b03918216600090815260986020526040902080546001600160a01b03191691909216179055565b7fdfbefbf47cfe66b701d8cfdbce1de81c821590819cb07e71cb01b6602fb0ee27610bb681610e9d565b61068360008051602061171b83398151915283610eaa565b60008051602061171b833981519152610be681610e9d565b6001600160a01b038087166000908152609860205260409081902054905163d518b7ff60e01b8152911690819063d518b7ff906108fc9089908990899089906004016115a3565b600082815260656020526040902060010154610c4881610e9d565b6105ff8383610f30565b600054610100900460ff1615808015610c725750600054600160ff909116105b80610c8c5750303b158015610c8c575060005460ff166001145b610cef5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610670565b6000805460ff191660011790558015610d12576000805461ff0019166101001790555b610d1a610fb9565b610d25600033611026565b6097839055609b80546001600160a01b0319166001600160a01b03841690811790915560408051918252602082018590527fa4888636278c973bcfd5eca8f86d67bf0c980edbf1740721c6f229b0421ae1e2910160405180910390a180156105ff576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb384740249890602001610783565b6000610dce81610e9d565b6001600160a01b038085166000908152609860205260409020541680610e0757604051632627b42d60e11b815260040160405180910390fd5b60405163b08805a560e01b815260048101859052602481018490526001600160a01b0382169063b08805a590604401600060405180830381600087803b158015610e5057600080fd5b505af1158015610e64573d6000803e3d6000fd5b505050505050505050565b6000610e7a81610e9d565b50609b80546001600160a01b0319166001600160a01b0392909216919091179055565b610ea78133611030565b50565b610eb48282610864565b6106835760008281526065602090815260408083206001600160a01b03851684529091529020805460ff19166001179055610eec3390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b610f3a8282610864565b156106835760008281526065602090815260408083206001600160a01b0385168085529252808320805460ff1916905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b609a54609754600091610fa9916115f7565b610fb49060016115f7565b905090565b600054610100900460ff166110245760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b6064820152608401610670565b565b6106838282610eaa565b61103a8282610864565b6106835761104781611089565b61105283602061109b565b60405160200161106392919061162e565b60408051601f198184030181529082905262461bcd60e51b8252610670916004016116a3565b606061057a6001600160a01b03831660145b606060006110aa8360026116d6565b6110b59060026115f7565b67ffffffffffffffff8111156110cd576110cd611403565b6040519080825280601f01601f1916602001820160405280156110f7576020820181803683370190505b509050600360fc1b81600081518110611112576111126116ed565b60200101906001600160f81b031916908160001a905350600f60fb1b81600181518110611141576111416116ed565b60200101906001600160f81b031916908160001a90535060006111658460026116d6565b6111709060016115f7565b90505b60018111156111e8576f181899199a1a9b1b9c1cb0b131b232b360811b85600f16601081106111a4576111a46116ed565b1a60f81b8282815181106111ba576111ba6116ed565b60200101906001600160f81b031916908160001a90535060049490941c936111e181611703565b9050611173565b5083156112375760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e746044820152606401610670565b9392505050565b60006020828403121561125057600080fd5b81356001600160e01b03198116811461123757600080fd5b80356001600160a01b038116811461127f57600080fd5b919050565b60006020828403121561129657600080fd5b61123782611268565b6000806000606084860312156112b457600080fd5b833580151581146112c457600080fd5b95602085013595506040909401359392505050565b6000602082840312156112eb57600080fd5b5035919050565b6000806040838503121561130557600080fd5b8235915061131560208401611268565b90509250929050565b6000806040838503121561133157600080fd5b61133a83611268565b946020939093013593505050565b60008060006060848603121561135d57600080fd5b61136684611268565b925061137460208501611268565b9150604084013590509250925092565b600080600080600060a0868803121561139c57600080fd5b6113a586611268565b94506113b360208701611268565b93506113c160408701611268565b94979396509394606081013594506080013592915050565b600080604083850312156113ec57600080fd5b6113f583611268565b915061131560208401611268565b634e487b7160e01b600052604160045260246000fd5b600082601f83011261142a57600080fd5b8135602067ffffffffffffffff8083111561144757611447611403565b8260051b604051601f19603f8301168101818110848211171561146c5761146c611403565b60405293845285810183019383810192508785111561148a57600080fd5b83870191505b848210156114a957813583529183019190830190611490565b979650505050505050565b600080600080600060a086880312156114cc57600080fd5b6114d586611268565b94506114e360208701611268565b93506114f160408701611268565b9250606086013567ffffffffffffffff8082111561150e57600080fd5b61151a89838a01611419565b9350608088013591508082111561153057600080fd5b5061153d88828901611419565b9150509295509295909350565b60008060006060848603121561155f57600080fd5b6112c484611268565b600081518084526020808501945080840160005b838110156115985781518752958201959082019060010161157c565b509495945050505050565b6001600160a01b038581168252841660208201526080604082018190526000906115cf90830185611568565b82810360608401526114a98185611568565b634e487b7160e01b600052601160045260246000fd5b8082018082111561057a5761057a6115e1565b60005b8381101561162557818101518382015260200161160d565b50506000910152565b7f416363657373436f6e74726f6c3a206163636f756e742000000000000000000081526000835161166681601785016020880161160a565b7001034b99036b4b9b9b4b733903937b6329607d1b601791840191820152835161169781602884016020880161160a565b01602801949350505050565b60208152600082518060208401526116c281604085016020870161160a565b601f01601f19169190910160400192915050565b808202811582820484141761057a5761057a6115e1565b634e487b7160e01b600052603260045260246000fd5b600081611712576117126115e1565b50600019019056fe40a5c770eee7730548a6335e1f372e76bf4759f6fda1a932bd9cfc33106f0b4ca2646970667358221220b2618605619fe9d7ba99fe3576b090ded9d2e679e72096e3edb485193e189db164736f6c63430008130033", + "nonce": "0x483", + "accessList": [] + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0xc7d9df9de8d8dd6db347a6ecffd38864a7649c4a6327fc847b1203a24872c293", + "transactionType": "CREATE", + "contractName": "ERC721ABLE", + "contractAddress": "0xdDC710e86c9C0E01852C0770C0817f59416518D7", + "function": null, + "arguments": null, + "transaction": { + "type": "0x02", + "from": "0xd71256ec24925873ce9e9f085f89864ca05970bd", + "gas": "0x32518c", + "value": "0x0", + "data": "0x60806040523480156200001157600080fd5b506200001c62000022565b620000e4565b600054610100900460ff16156200008f5760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff9081161015620000e2576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b612c7380620000f46000396000f3fe60806040526004361061020f5760003560e01c806370a0823111610118578063a1db9782116100a0578063d5abeb011161006f578063d5abeb0114610622578063de7ecf8714610638578063e985e9c51461064e578063f2fde38b1461066e578063fe325e961461068e57600080fd5b8063a1db9782146105af578063a22cb465146105cf578063b88d4fde146105ef578063c87b56dd1461060257600080fd5b806384a0c766116100e757806384a0c7661461051c5780638c72c54e1461053c5780638da5cb5b1461055c5780639182ba971461057a57806395d89b411461059a57600080fd5b806370a08231146104ad578063715018a6146104cd578063731133e9146104e2578063754b377c146104f557600080fd5b806342842e0e1161019b57806365e8e4f41161016a57806365e8e4f4146103f557806366748e98146104155780636cc82b841461044d5780636dbdaae61461046d5780636f8b44b01461048d57600080fd5b806342842e0e1461036e5780634b1022621461038157806355f804b3146103b55780636352211e146103d557600080fd5b806318160ddd116101e257806318160ddd146102b857806323b872dd146102db5780632a778c9b146102ee5780632e37eef6146103045780634128541c1461034e57600080fd5b806301ffc9a71461021457806306fdde0314610249578063081812fc1461026b578063095ea7b3146102a3575b600080fd5b34801561022057600080fd5b5061023461022f3660046121e8565b6106a3565b60405190151581526020015b60405180910390f35b34801561025557600080fd5b5061025e6106b4565b6040516102409190612255565b34801561027757600080fd5b5061028b610286366004612268565b61074f565b6040516001600160a01b039091168152602001610240565b6102b66102b1366004612296565b61079c565b005b3480156102c457600080fd5b506102cd6107ac565b604051908152602001610240565b6102b66102e93660046122c2565b6107cc565b3480156102fa57600080fd5b506102cd60685481565b34801561031057600080fd5b5061032461031f366004612268565b6109d0565b6040805195865260208601949094529284019190915260608301521515608082015260a001610240565b34801561035a57600080fd5b5060655461028b906001600160a01b031681565b6102b661037c3660046122c2565b610a14565b34801561038d57600080fd5b506102cd7f73e84917c5def9002f59334ba09785218b36a703c0e3d37d832ea21e233bb17f81565b3480156103c157600080fd5b506102b66103d036600461234b565b610a34565b3480156103e157600080fd5b5061028b6103f0366004612268565b610a49565b34801561040157600080fd5b506102b6610410366004612417565b610a54565b34801561042157600080fd5b506102cd610430366004612296565b606c60209081526000928352604080842090915290825290205481565b34801561045957600080fd5b5060665461028b906001600160a01b031681565b34801561047957600080fd5b506102b6610488366004612268565b610cd9565b34801561049957600080fd5b506102b66104a8366004612268565b610ce6565b3480156104b957600080fd5b506102cd6104c836600461249f565b610d1b565b3480156104d957600080fd5b506102b6610d83565b6102b66104f03660046124bc565b610d97565b34801561050157600080fd5b5061050a600181565b60405160ff9091168152602001610240565b34801561052857600080fd5b506102b6610537366004612525565b610fbe565b34801561054857600080fd5b5060675461028b906001600160a01b031681565b34801561056857600080fd5b506033546001600160a01b031661028b565b34801561058657600080fd5b506102b66105953660046125aa565b611003565b3480156105a657600080fd5b5061025e6111ca565b3480156105bb57600080fd5b506102b66105ca366004612296565b611206565b3480156105db57600080fd5b506102b66105ea36600461262c565b61127f565b6102b66105fd366004612665565b6112fc565b34801561060e57600080fd5b5061025e61061d366004612268565b611346565b34801561062e57600080fd5b506102cd606d5481565b34801561064457600080fd5b506102cd60695481565b34801561065a57600080fd5b506102346106693660046126b8565b6114a1565b34801561067a57600080fd5b506102b661068936600461249f565b6114de565b34801561069a57600080fd5b506102b6611557565b60006106ae82611729565b92915050565b60606106be611777565b60020180546106cc906126e6565b80601f01602080910402602001604051908101604052809291908181526020018280546106f8906126e6565b80156107455780601f1061071a57610100808354040283529160200191610745565b820191906000526020600020905b81548152906001019060200180831161072857829003601f168201915b5050505050905090565b600061075a8261179b565b610777576040516333d1c03960e21b815260040160405180910390fd5b61077f611777565b60009283526006016020525060409020546001600160a01b031690565b6107a8828260016117e4565b5050565b600060016107b8611777565b600101546107c4611777565b540303919050565b60006107d782611899565b9050836001600160a01b0316816001600160a01b03161461080a5760405162a1148160e81b815260040160405180910390fd5b60008061081684611946565b9150915061083b81876108263390565b6001600160a01b039081169116811491141790565b6108665761084986336114a1565b61086657604051632ce44b5f60e11b815260040160405180910390fd5b6001600160a01b03851661088d57604051633a954ecd60e21b815260040160405180910390fd5b61089a868686600161196e565b80156108a557600082555b6108ad611777565b6001600160a01b03871660009081526005919091016020526040902080546000190190556108d9611777565b6001600160a01b03861660008181526005929092016020526040909120805460010190554260a01b17600160e11b17610910611777565b60008681526004919091016020526040812091909155600160e11b84169003610986576001840161093f611777565b60008281526004919091016020526040812054900361098457610960611777565b5481146109845783610970611777565b600083815260049190910160205260409020555b505b83856001600160a01b0316876001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a45b505050505050565b606b81815481106109e057600080fd5b6000918252602090912060059091020180546001820154600283015460038401546004909401549294509092909160ff1685565b610a2f838383604051806020016040528060008152506112fc565b505050565b610a3c6119ff565b606a610a2f828483612760565b60006106ae82611899565b600080516020612c1e83398151915254610100900460ff16610a8957600080516020612c1e8339815191525460ff1615610a8d565b303b155b610b045760405162461bcd60e51b815260206004820152603760248201527f455243373231415f5f496e697469616c697a61626c653a20636f6e747261637460448201527f20697320616c726561647920696e697469616c697a656400000000000000000060648201526084015b60405180910390fd5b600080516020612c1e83398151915254610100900460ff16158015610b4057600080516020612c1e833981519152805461ffff19166101011790555b600054610100900460ff1615808015610b605750600054600160ff909116105b80610b7a5750303b158015610b7a575060005460ff166001145b610bdd5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610afb565b6000805460ff191660011790558015610c00576000805461ff0019166101001790555b610c198360405180602001604052806000815250611a59565b610c21611a97565b610c2a86611ac6565b6000606855606580546001600160a01b038088166001600160a01b0319928316179092556066805487841690831617905560678054928916929091169190911790558015610cb2576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b508015610cd257600080516020612c1e833981519152805461ff00191690555b5050505050565b610ce16119ff565b606955565b610cee6119ff565b610cf6611b18565b811015610d1657604051632627b42d60e11b815260040160405180910390fd5b606d55565b60006001600160a01b038216610d44576040516323d3ad8160e21b815260040160405180910390fd5b6001600160401b03610d54611777565b6005016000846001600160a01b03166001600160a01b0316815260200190815260200160002054169050919050565b610d8b6119ff565b610d956000611ac6565b565b610da084611b2b565b610dbd576040516332f7a9d760e21b815260040160405180910390fd5b6000606b8581548110610dd257610dd261281f565b60009182526020918290206040805160a0810182526005909302909101805483526001810154938301939093526002830154908201526003820154606082015260049091015460ff1615156080820152606d5490915084610e31611b18565b610e3b919061284b565b1115610e5a576040516322eb5e9560e21b815260040160405180910390fd5b8060800151610ef9576066546040516332f1944960e21b81526001600160a01b039091169063cbc6512490610e9b90899030908a908990899060040161285e565b602060405180830381865afa158015610eb8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610edc91906128b2565b610ef9576040516352c973a760e01b815260040160405180910390fd5b60608101516001600160a01b0387166000908152606c60209081526040808320898452909152902054610f2d90869061284b565b1115610f4c57604051631d66b65960e11b815260040160405180910390fd5b838160400151610f5c91906128cf565b3414610f7b576040516318f4198360e21b815260040160405180910390fd5b6001600160a01b0386166000908152606c6020908152604080832088845290915281208054869290610fae90849061284b565b909155506109c890508685611bd2565b610fc66119ff565b606d87905586851115610fec57604051632627b42d60e11b815260040160405180910390fd5b610ffa868686868686611d1a565b50505050505050565b61100b6119ff565b606b541561101f5761101f606b600061217d565b600081815b818110156111905760008585838181106110405761104061281f565b905060a0020180360381019061105691906128e6565b9050838160000151108061106e575060208101518151115b1561108c57604051632627b42d60e11b815260040160405180910390fd5b606b805460018101825560009190915281517fbd43cb8ece8cd1863bcd6082d65c5b0d25665b1ce17980f0da43c0ed545f98b4600590920291820181905560208301517fbd43cb8ece8cd1863bcd6082d65c5b0d25665b1ce17980f0da43c0ed545f98b583015560408301517fbd43cb8ece8cd1863bcd6082d65c5b0d25665b1ce17980f0da43c0ed545f98b683015560608301517fbd43cb8ece8cd1863bcd6082d65c5b0d25665b1ce17980f0da43c0ed545f98b78301556080909201517fbd43cb8ece8cd1863bcd6082d65c5b0d25665b1ce17980f0da43c0ed545f98b8909101805460ff191691151591909117905592506111898161295b565b9050611024565b506040518181527ffda37b53117c5bf84916ece7449890be93cbd2842914c83f4a6864adb618654f9060200160405180910390a150505050565b6060606854600014611203576111e1606854611e32565b6040516020016111f19190612974565b60405160208183030381529060405290505b90565b61120e6119ff565b60405163a9059cbb60e01b8152336004820152602481018290526001600160a01b0383169063a9059cbb906044016020604051808303816000875af115801561125b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a2f91906128b2565b80611288611777565b336000818152600792909201602090815260408084206001600160a01b03881680865290835293819020805460ff19169515159590951790945592518415158152919290917f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a35050565b6113078484846107cc565b6001600160a01b0383163b156113405761132384848484611ec4565b611340576040516368d2bf6b60e11b815260040160405180910390fd5b50505050565b60606113518261179b565b61136e57604051632627b42d60e11b815260040160405180910390fd5b6000611378611faf565b9050805160000361139a5760405180602001604052806000815250915061149b565b60408051600180825281830190925260009160208201818036833701905050905081600183516113ca919061299e565b815181106113da576113da61281f565b602001015160f81c60f81b816000815181106113f8576113f861281f565b60200101906001600160f81b031916908160001a905350604051602f60f81b60208201528190602101604051602081830303815290604052805190602001208160405160200161144891906129b1565b6040516020818303038152906040528051906020012003611494578261146d86611fbe565b60405160200161147e9291906129cd565b6040516020818303038152906040529350611498565b8293505b50505b50919050565b60006114ab611777565b6001600160a01b039384166000908152600791909101602090815260408083209490951682529290925250205460ff1690565b6114e66119ff565b6001600160a01b03811661154b5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610afb565b61155481611ac6565b50565b61155f6119ff565b60655460675460685460405163608ebea160e01b81526001600160a01b03928316600482015260248101919091526000928392169063608ebea1906044016040805180830381865afa1580156115b9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115dd91906129fc565b90925090506001600160a01b03821661160957604051632627b42d60e11b815260040160405180910390fd5b47600061271061161984846128cf565b6116239190612a2a565b90506000611631828461299e565b905080156116af576000856001600160a01b03168260405160006040518083038185875af1925050503d8060008114611686576040519150601f19603f3d011682016040523d82523d6000602084013e61168b565b606091505b50509050806116ad57604051631fa55c0760e11b815260040160405180910390fd5b505b8115610cd2576067546040516000916001600160a01b03169084908381818185875af1925050503d8060008114611702576040519150601f19603f3d011682016040523d82523d6000602084013e611707565b606091505b50509050806109c857604051631fa55c0760e11b815260040160405180910390fd5b60006301ffc9a760e01b6001600160e01b03198316148061175a57506380ac58cd60e01b6001600160e01b03198316145b806106ae5750506001600160e01b031916635b5e139f60e01b1490565b7f2569078dfb4b0305704d3008e7403993ae9601b85f7ae5e742de3de8f8011c4090565b6000816001111580156117b557506117b1611777565b5482105b80156106ae5750600160e01b6117c9611777565b60008481526004919091016020526040902054161592915050565b60006117ef83610a49565b9050811561182e57336001600160a01b0382161461182e5761181181336114a1565b61182e576040516367d9dca160e11b815260040160405180910390fd5b83611837611777565b6000858152600691909101602052604080822080546001600160a01b0319166001600160a01b0394851617905551859287811692908516917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259190a450505050565b60008160011161192d576118ab611777565b600083815260049190910160205260408120549150600160e01b8216900361192d5780600003611928576118dd611777565b5482106118fd57604051636f96cda160e11b815260040160405180910390fd5b611905611777565b6000199092016000818152600493909301602052604090922054905080156118fd575b919050565b604051636f96cda160e11b815260040160405180910390fd5b6000806000611953611777565b60009485526006016020525050604090912080549092909150565b6069541561134057606554606754606854604051634bbfc15d60e11b81526001600160a01b0392831660048201528783166024820152868316604482015260648101919091526084810184905291169063977f82ba9060a401600060405180830381600087803b1580156119e157600080fd5b505af11580156119f5573d6000803e3d6000fd5b5050505050505050565b6033546001600160a01b03163314610d955760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610afb565b600080516020612c1e83398151915254610100900460ff16611a8d5760405162461bcd60e51b8152600401610afb90612a4c565b6107a88282612002565b600054610100900460ff16611abe5760405162461bcd60e51b8152600401610afb90612aa0565b610d95612075565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b60006001611b24611777565b5403919050565b606b546000908210611b5057604051632627b42d60e11b815260040160405180910390fd5b6000606b8381548110611b6557611b6561281f565b60009182526020918290206040805160a08101825260059093029091018054808452600182015494840194909452600281015491830191909152600381015460608301526004015460ff161515608082015291504210801590611bcb5750428160200151115b9392505050565b6000611bdc611777565b5490506000829003611c015760405163b562e8dd60e01b815260040160405180910390fd5b611c0e600084838561196e565b680100000000000000018202611c22611777565b6001600160a01b038516600081815260059290920160205260409091208054929092019091554260a01b6001841460e11b1717611c5d611777565b600083815260049190910160205260408120919091556001600160a01b0384169083830190839083907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8180a4600183015b818114611ce757808360007fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600080a4600101611caf565b5081600003611d0857604051622e076360e81b815260040160405180910390fd5b80611d11611777565b5550610a2f9050565b60685415611d3b576040516302d1671b60e41b815260040160405180910390fd5b85158015611d5157506001600160a01b03831615155b80611d6d57506001600160a01b038316158015611d6d57508515155b15611d8b57604051632627b42d60e11b815260040160405180910390fd5b60655460675460405163ae98d85760e01b81526001600160a01b03918216600482015285821660248201526000604482015291169063ae98d857906064016020604051808303816000875af1158015611de8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e0c9190612aeb565b6068556069869055606a611e21828483612760565b5084156109c8576109c88486611bd2565b60606000611e3f836120a5565b60010190506000816001600160401b03811115611e5e57611e5e61238c565b6040519080825280601f01601f191660200182016040528015611e88576020820181803683370190505b5090508181016020015b600019016f181899199a1a9b1b9c1cb0b131b232b360811b600a86061a8153600a8504945084611e9257509392505050565b604051630a85bd0160e11b81526000906001600160a01b0385169063150b7a0290611ef9903390899088908890600401612b04565b6020604051808303816000875af1925050508015611f34575060408051601f3d908101601f19168201909252611f3191810190612b41565b60015b611f92573d808015611f62576040519150601f19603f3d011682016040523d82523d6000602084013e611f67565b606091505b508051600003611f8a576040516368d2bf6b60e11b815260040160405180910390fd5b805181602001fd5b6001600160e01b031916630a85bd0160e11b149050949350505050565b6060606a80546106cc906126e6565b606060a06040510180604052602081039150506000815280825b600183039250600a81066030018353600a900480611fd85750819003601f19909101908152919050565b600080516020612c1e83398151915254610100900460ff166120365760405162461bcd60e51b8152600401610afb90612a4c565b8161203f611777565b6002019061204d9082612b5e565b5080612057611777565b600301906120659082612b5e565b506001612070611777565b555050565b600054610100900460ff1661209c5760405162461bcd60e51b8152600401610afb90612aa0565b610d9533611ac6565b60008072184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b83106120e45772184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b830492506040015b6d04ee2d6d415b85acef81000000008310612110576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc10000831061212e57662386f26fc10000830492506010015b6305f5e1008310612146576305f5e100830492506008015b612710831061215a57612710830492506004015b6064831061216c576064830492506002015b600a83106106ae5760010192915050565b508054600082556005029060005260206000209081019061155491905b808211156121ce5760008082556001820181905560028201819055600382015560048101805460ff1916905560050161219a565b5090565b6001600160e01b03198116811461155457600080fd5b6000602082840312156121fa57600080fd5b8135611bcb816121d2565b60005b83811015612220578181015183820152602001612208565b50506000910152565b60008151808452612241816020860160208601612205565b601f01601f19169290920160200192915050565b602081526000611bcb6020830184612229565b60006020828403121561227a57600080fd5b5035919050565b6001600160a01b038116811461155457600080fd5b600080604083850312156122a957600080fd5b82356122b481612281565b946020939093013593505050565b6000806000606084860312156122d757600080fd5b83356122e281612281565b925060208401356122f281612281565b929592945050506040919091013590565b60008083601f84011261231557600080fd5b5081356001600160401b0381111561232c57600080fd5b60208301915083602082850101111561234457600080fd5b9250929050565b6000806020838503121561235e57600080fd5b82356001600160401b0381111561237457600080fd5b61238085828601612303565b90969095509350505050565b634e487b7160e01b600052604160045260246000fd5b60006001600160401b03808411156123bc576123bc61238c565b604051601f8501601f19908116603f011681019082821181831017156123e4576123e461238c565b816040528093508581528686860111156123fd57600080fd5b858560208301376000602087830101525050509392505050565b6000806000806080858703121561242d57600080fd5b843561243881612281565b9350602085013561244881612281565b9250604085013561245881612281565b915060608501356001600160401b0381111561247357600080fd5b8501601f8101871361248457600080fd5b612493878235602084016123a2565b91505092959194509250565b6000602082840312156124b157600080fd5b8135611bcb81612281565b6000806000806000608086880312156124d457600080fd5b85356124df81612281565b9450602086013593506040860135925060608601356001600160401b0381111561250857600080fd5b61251488828901612303565b969995985093965092949392505050565b600080600080600080600060c0888a03121561254057600080fd5b873596506020880135955060408801359450606088013561256081612281565b9350608088013561257081612281565b925060a08801356001600160401b0381111561258b57600080fd5b6125978a828b01612303565b989b979a50959850939692959293505050565b600080602083850312156125bd57600080fd5b82356001600160401b03808211156125d457600080fd5b818501915085601f8301126125e857600080fd5b8135818111156125f757600080fd5b86602060a08302850101111561260c57600080fd5b60209290920196919550909350505050565b801515811461155457600080fd5b6000806040838503121561263f57600080fd5b823561264a81612281565b9150602083013561265a8161261e565b809150509250929050565b6000806000806080858703121561267b57600080fd5b843561268681612281565b9350602085013561269681612281565b92506040850135915060608501356001600160401b0381111561247357600080fd5b600080604083850312156126cb57600080fd5b82356126d681612281565b9150602083013561265a81612281565b600181811c908216806126fa57607f821691505b60208210810361149b57634e487b7160e01b600052602260045260246000fd5b601f821115610a2f57600081815260208120601f850160051c810160208610156127415750805b601f850160051c820191505b818110156109c85782815560010161274d565b6001600160401b038311156127775761277761238c565b61278b8361278583546126e6565b8361271a565b6000601f8411600181146127bf57600085156127a75750838201355b600019600387901b1c1916600186901b178355610cd2565b600083815260209020601f19861690835b828110156127f057868501358255602094850194600190920191016127d0565b508682101561280d5760001960f88860031b161c19848701351681555b505060018560011b0183555050505050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b808201808211156106ae576106ae612835565b6001600160a01b038681168252851660208201526040810184905260806060820181905281018290526000828460a0840137600060a0848401015260a0601f19601f85011683010190509695505050505050565b6000602082840312156128c457600080fd5b8151611bcb8161261e565b80820281158282048414176106ae576106ae612835565b600060a082840312156128f857600080fd5b60405160a081018181106001600160401b038211171561291a5761291a61238c565b806040525082358152602083013560208201526040830135604082015260608301356060820152608083013561294f8161261e565b60808201529392505050565b60006001820161296d5761296d612835565b5060010190565b6120a160f11b815260008251612991816002850160208701612205565b9190910160020192915050565b818103818111156106ae576106ae612835565b600082516129c3818460208701612205565b9190910192915050565b600083516129df818460208801612205565b8351908301906129f3818360208801612205565b01949350505050565b60008060408385031215612a0f57600080fd5b8251612a1a81612281565b6020939093015192949293505050565b600082612a4757634e487b7160e01b600052601260045260246000fd5b500490565b60208082526034908201527f455243373231415f5f496e697469616c697a61626c653a20636f6e7472616374604082015273206973206e6f7420696e697469616c697a696e6760601b606082015260800190565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b600060208284031215612afd57600080fd5b5051919050565b6001600160a01b0385811682528416602082015260408101839052608060608201819052600090612b3790830184612229565b9695505050505050565b600060208284031215612b5357600080fd5b8151611bcb816121d2565b81516001600160401b03811115612b7757612b7761238c565b612b8b81612b8584546126e6565b8461271a565b602080601f831160018114612bc05760008415612ba85750858301515b600019600386901b1c1916600185901b1785556109c8565b600085815260208120601f198616915b82811015612bef57888601518255948401946001909101908401612bd0565b5085821015612c0d5787850151600019600388901b60f8161c191681555b5050505050600190811b0190555056feee151c8401928dc223602bb187aff91b9a56c7cae5476ef1b3287b085a16c85fa2646970667358221220a9dd22b04ec37cf2afb5cdba470000e7559163057730e5cac14db8b6a172b7f164736f6c63430008130033", + "nonce": "0x484", + "accessList": [] + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0xa44071e057ccb66121a40d8e328625d15e471a621569e7f5966f630e080eec4c", + "transactionType": "CREATE", + "contractName": "ERC721ABOE", + "contractAddress": "0xEeB54C912C6971cC808a2f960b6E27148a66715c", + "function": null, + "arguments": null, + "transaction": { + "type": "0x02", + "from": "0xd71256ec24925873ce9e9f085f89864ca05970bd", + "gas": "0x3084fb", + "value": "0x0", + "data": "0x60806040523480156200001157600080fd5b506200001c62000022565b620000e4565b600054610100900460ff16156200008f5760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff9081161015620000e2576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b612acf80620000f46000396000f3fe6080604052600436106101f95760003560e01c806370a082311161010d57806395d89b41116100a0578063c87b56dd1161006f578063c87b56dd146105cc578063de7ecf87146105ec578063e985e9c514610602578063f2fde38b14610622578063fe325e961461064257600080fd5b806395d89b4114610564578063a1db978214610579578063a22cb46514610599578063b88d4fde146105b957600080fd5b80638c5c2a5b116100dc5780638c5c2a5b146104e65780638c72c54e146105065780638da5cb5b146105265780639182ba971461054457600080fd5b806370a0823114610477578063715018a614610497578063731133e9146104ac578063754b377c146104bf57600080fd5b80634128541c116101905780636352211e1161015f5780636352211e146103bf57806365e8e4f4146103df57806366748e98146103ff5780636cc82b84146104375780636dbdaae61461045757600080fd5b80634128541c1461033857806342842e0e146103585780634b1022621461036b57806355f804b31461039f57600080fd5b806318160ddd116101cc57806318160ddd146102a257806323b872dd146102c55780632a778c9b146102d85780632e37eef6146102ee57600080fd5b806301ffc9a7146101fe57806306fdde0314610233578063081812fc14610255578063095ea7b31461028d575b600080fd5b34801561020a57600080fd5b5061021e610219366004612061565b610657565b60405190151581526020015b60405180910390f35b34801561023f57600080fd5b50610248610668565b60405161022a91906120ce565b34801561026157600080fd5b506102756102703660046120e1565b610703565b6040516001600160a01b03909116815260200161022a565b6102a061029b36600461210f565b610750565b005b3480156102ae57600080fd5b506102b7610760565b60405190815260200161022a565b6102a06102d336600461213b565b610780565b3480156102e457600080fd5b506102b760685481565b3480156102fa57600080fd5b5061030e6103093660046120e1565b610984565b6040805195865260208601949094529284019190915260608301521515608082015260a00161022a565b34801561034457600080fd5b50606554610275906001600160a01b031681565b6102a061036636600461213b565b6109c8565b34801561037757600080fd5b506102b77fdcfc50123fc6ea3c803b5b1b4cbbc9ce5b81f13451fd3124e43ef593fd840d1981565b3480156103ab57600080fd5b506102a06103ba3660046121c4565b6109e8565b3480156103cb57600080fd5b506102756103da3660046120e1565b6109fd565b3480156103eb57600080fd5b506102a06103fa366004612290565b610a08565b34801561040b57600080fd5b506102b761041a36600461210f565b606c60209081526000928352604080842090915290825290205481565b34801561044357600080fd5b50606654610275906001600160a01b031681565b34801561046357600080fd5b506102a06104723660046120e1565b610c8d565b34801561048357600080fd5b506102b7610492366004612318565b610c9a565b3480156104a357600080fd5b506102a0610d02565b6102a06104ba366004612335565b610d16565b3480156104cb57600080fd5b506104d4600181565b60405160ff909116815260200161022a565b3480156104f257600080fd5b506102a061050136600461239e565b610e79565b34801561051257600080fd5b50606754610275906001600160a01b031681565b34801561053257600080fd5b506033546001600160a01b0316610275565b34801561055057600080fd5b506102a061055f366004612419565b610e8f565b34801561057057600080fd5b50610248611056565b34801561058557600080fd5b506102a061059436600461210f565b611092565b3480156105a557600080fd5b506102a06105b436600461249b565b61110b565b6102a06105c73660046124d4565b611188565b3480156105d857600080fd5b506102486105e73660046120e1565b6111d2565b3480156105f857600080fd5b506102b760695481565b34801561060e57600080fd5b5061021e61061d366004612527565b61132d565b34801561062e57600080fd5b506102a061063d366004612318565b61136a565b34801561064e57600080fd5b506102a06113e3565b6000610662826115b5565b92915050565b6060610672611603565b600201805461068090612555565b80601f01602080910402602001604051908101604052809291908181526020018280546106ac90612555565b80156106f95780601f106106ce576101008083540402835291602001916106f9565b820191906000526020600020905b8154815290600101906020018083116106dc57829003601f168201915b5050505050905090565b600061070e82611627565b61072b576040516333d1c03960e21b815260040160405180910390fd5b610733611603565b60009283526006016020525060409020546001600160a01b031690565b61075c82826001611670565b5050565b6000600161076c611603565b60010154610778611603565b540303919050565b600061078b82611725565b9050836001600160a01b0316816001600160a01b0316146107be5760405162a1148160e81b815260040160405180910390fd5b6000806107ca846117d2565b915091506107ef81876107da3390565b6001600160a01b039081169116811491141790565b61081a576107fd863361132d565b61081a57604051632ce44b5f60e11b815260040160405180910390fd5b6001600160a01b03851661084157604051633a954ecd60e21b815260040160405180910390fd5b61084e86868660016117fa565b801561085957600082555b610861611603565b6001600160a01b038716600090815260059190910160205260409020805460001901905561088d611603565b6001600160a01b03861660008181526005929092016020526040909120805460010190554260a01b17600160e11b176108c4611603565b60008681526004919091016020526040812091909155600160e11b8416900361093a57600184016108f3611603565b60008281526004919091016020526040812054900361093857610914611603565b5481146109385783610924611603565b600083815260049190910160205260409020555b505b83856001600160a01b0316876001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a45b505050505050565b606b818154811061099457600080fd5b6000918252602090912060059091020180546001820154600283015460038401546004909401549294509092909160ff1685565b6109e383838360405180602001604052806000815250611188565b505050565b6109f061188b565b606a6109e38284836125cf565b600061066282611725565b600080516020612a7a83398151915254610100900460ff16610a3d57600080516020612a7a8339815191525460ff1615610a41565b303b155b610ab85760405162461bcd60e51b815260206004820152603760248201527f455243373231415f5f496e697469616c697a61626c653a20636f6e747261637460448201527f20697320616c726561647920696e697469616c697a656400000000000000000060648201526084015b60405180910390fd5b600080516020612a7a83398151915254610100900460ff16158015610af457600080516020612a7a833981519152805461ffff19166101011790555b600054610100900460ff1615808015610b145750600054600160ff909116105b80610b2e5750303b158015610b2e575060005460ff166001145b610b915760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610aaf565b6000805460ff191660011790558015610bb4576000805461ff0019166101001790555b610bcd83604051806020016040528060008152506118e5565b610bd5611923565b610bde86611952565b6000606855606580546001600160a01b038088166001600160a01b0319928316179092556066805487841690831617905560678054928916929091169190911790558015610c66576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b508015610c8657600080516020612a7a833981519152805461ff00191690555b5050505050565b610c9561188b565b606955565b60006001600160a01b038216610cc3576040516323d3ad8160e21b815260040160405180910390fd5b6001600160401b03610cd3611603565b6005016000846001600160a01b03166001600160a01b0316815260200190815260200160002054169050919050565b610d0a61188b565b610d146000611952565b565b610d1f846119a4565b610d3c576040516332f7a9d760e21b815260040160405180910390fd5b6000606b8581548110610d5157610d5161268e565b60009182526020918290206040805160a0810182526005909302909101805483526001810154938301939093526002830154908201526003820154606082015260049091015460ff16151560808201819052909150610e40576066546040516332f1944960e21b81526001600160a01b039091169063cbc6512490610de290899030908a90899089906004016126a4565b602060405180830381865afa158015610dff573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e2391906126f8565b610e40576040516352c973a760e01b815260040160405180910390fd5b838160400151610e50919061272b565b3414610e6f576040516318f4198360e21b815260040160405180910390fd5b61097c8685611a4b565b610e8161188b565b61097c868686868686611b93565b610e9761188b565b606b5415610eab57610eab606b6000611ff6565b600081815b8181101561101c576000858583818110610ecc57610ecc61268e565b905060a00201803603810190610ee29190612742565b90508381600001511080610efa575060208101518151115b15610f1857604051632627b42d60e11b815260040160405180910390fd5b606b805460018101825560009190915281517fbd43cb8ece8cd1863bcd6082d65c5b0d25665b1ce17980f0da43c0ed545f98b4600590920291820181905560208301517fbd43cb8ece8cd1863bcd6082d65c5b0d25665b1ce17980f0da43c0ed545f98b583015560408301517fbd43cb8ece8cd1863bcd6082d65c5b0d25665b1ce17980f0da43c0ed545f98b683015560608301517fbd43cb8ece8cd1863bcd6082d65c5b0d25665b1ce17980f0da43c0ed545f98b78301556080909201517fbd43cb8ece8cd1863bcd6082d65c5b0d25665b1ce17980f0da43c0ed545f98b8909101805460ff19169115159190911790559250611015816127b7565b9050610eb0565b506040518181527ffda37b53117c5bf84916ece7449890be93cbd2842914c83f4a6864adb618654f9060200160405180910390a150505050565b606060685460001461108f5761106d606854611cab565b60405160200161107d91906127d0565b60405160208183030381529060405290505b90565b61109a61188b565b60405163a9059cbb60e01b8152336004820152602481018290526001600160a01b0383169063a9059cbb906044016020604051808303816000875af11580156110e7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109e391906126f8565b80611114611603565b336000818152600792909201602090815260408084206001600160a01b03881680865290835293819020805460ff19169515159590951790945592518415158152919290917f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a35050565b611193848484610780565b6001600160a01b0383163b156111cc576111af84848484611d3d565b6111cc576040516368d2bf6b60e11b815260040160405180910390fd5b50505050565b60606111dd82611627565b6111fa57604051632627b42d60e11b815260040160405180910390fd5b6000611204611e28565b9050805160000361122657604051806020016040528060008152509150611327565b604080516001808252818301909252600091602082018180368337019050509050816001835161125691906127fa565b815181106112665761126661268e565b602001015160f81c60f81b816000815181106112845761128461268e565b60200101906001600160f81b031916908160001a905350604051602f60f81b6020820152819060210160405160208183030381529060405280519060200120816040516020016112d4919061280d565b604051602081830303815290604052805190602001200361132057826112f986611e37565b60405160200161130a929190612829565b6040516020818303038152906040529350611324565b8293505b50505b50919050565b6000611337611603565b6001600160a01b039384166000908152600791909101602090815260408083209490951682529290925250205460ff1690565b61137261188b565b6001600160a01b0381166113d75760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610aaf565b6113e081611952565b50565b6113eb61188b565b60655460675460685460405163608ebea160e01b81526001600160a01b03928316600482015260248101919091526000928392169063608ebea1906044016040805180830381865afa158015611445573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114699190612858565b90925090506001600160a01b03821661149557604051632627b42d60e11b815260040160405180910390fd5b4760006127106114a5848461272b565b6114af9190612886565b905060006114bd82846127fa565b9050801561153b576000856001600160a01b03168260405160006040518083038185875af1925050503d8060008114611512576040519150601f19603f3d011682016040523d82523d6000602084013e611517565b606091505b505090508061153957604051631fa55c0760e11b815260040160405180910390fd5b505b8115610c86576067546040516000916001600160a01b03169084908381818185875af1925050503d806000811461158e576040519150601f19603f3d011682016040523d82523d6000602084013e611593565b606091505b505090508061097c57604051631fa55c0760e11b815260040160405180910390fd5b60006301ffc9a760e01b6001600160e01b0319831614806115e657506380ac58cd60e01b6001600160e01b03198316145b806106625750506001600160e01b031916635b5e139f60e01b1490565b7f2569078dfb4b0305704d3008e7403993ae9601b85f7ae5e742de3de8f8011c4090565b600081600111158015611641575061163d611603565b5482105b80156106625750600160e01b611655611603565b60008481526004919091016020526040902054161592915050565b600061167b836109fd565b905081156116ba57336001600160a01b038216146116ba5761169d813361132d565b6116ba576040516367d9dca160e11b815260040160405180910390fd5b836116c3611603565b6000858152600691909101602052604080822080546001600160a01b0319166001600160a01b0394851617905551859287811692908516917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259190a450505050565b6000816001116117b957611737611603565b600083815260049190910160205260408120549150600160e01b821690036117b957806000036117b457611769611603565b54821061178957604051636f96cda160e11b815260040160405180910390fd5b611791611603565b600019909201600081815260049390930160205260409092205490508015611789575b919050565b604051636f96cda160e11b815260040160405180910390fd5b60008060006117df611603565b60009485526006016020525050604090912080549092909150565b606954156111cc57606554606754606854604051634bbfc15d60e11b81526001600160a01b0392831660048201528783166024820152868316604482015260648101919091526084810184905291169063977f82ba9060a401600060405180830381600087803b15801561186d57600080fd5b505af1158015611881573d6000803e3d6000fd5b5050505050505050565b6033546001600160a01b03163314610d145760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610aaf565b600080516020612a7a83398151915254610100900460ff166119195760405162461bcd60e51b8152600401610aaf906128a8565b61075c8282611e7b565b600054610100900460ff1661194a5760405162461bcd60e51b8152600401610aaf906128fc565b610d14611eee565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b606b5460009082106119c957604051632627b42d60e11b815260040160405180910390fd5b6000606b83815481106119de576119de61268e565b60009182526020918290206040805160a08101825260059093029091018054808452600182015494840194909452600281015491830191909152600381015460608301526004015460ff161515608082015291504210801590611a445750428160200151115b9392505050565b6000611a55611603565b5490506000829003611a7a5760405163b562e8dd60e01b815260040160405180910390fd5b611a8760008483856117fa565b680100000000000000018202611a9b611603565b6001600160a01b038516600081815260059290920160205260409091208054929092019091554260a01b6001841460e11b1717611ad6611603565b600083815260049190910160205260408120919091556001600160a01b0384169083830190839083907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8180a4600183015b818114611b6057808360007fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600080a4600101611b28565b5081600003611b8157604051622e076360e81b815260040160405180910390fd5b80611b8a611603565b55506109e39050565b60685415611bb4576040516302d1671b60e41b815260040160405180910390fd5b85158015611bca57506001600160a01b03831615155b80611be657506001600160a01b038316158015611be657508515155b15611c0457604051632627b42d60e11b815260040160405180910390fd5b60655460675460405163ae98d85760e01b81526001600160a01b03918216600482015285821660248201526000604482015291169063ae98d857906064016020604051808303816000875af1158015611c61573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c859190612947565b6068556069869055606a611c9a8284836125cf565b50841561097c5761097c8486611a4b565b60606000611cb883611f1e565b60010190506000816001600160401b03811115611cd757611cd7612205565b6040519080825280601f01601f191660200182016040528015611d01576020820181803683370190505b5090508181016020015b600019016f181899199a1a9b1b9c1cb0b131b232b360811b600a86061a8153600a8504945084611d0b57509392505050565b604051630a85bd0160e11b81526000906001600160a01b0385169063150b7a0290611d72903390899088908890600401612960565b6020604051808303816000875af1925050508015611dad575060408051601f3d908101601f19168201909252611daa9181019061299d565b60015b611e0b573d808015611ddb576040519150601f19603f3d011682016040523d82523d6000602084013e611de0565b606091505b508051600003611e03576040516368d2bf6b60e11b815260040160405180910390fd5b805181602001fd5b6001600160e01b031916630a85bd0160e11b149050949350505050565b6060606a805461068090612555565b606060a06040510180604052602081039150506000815280825b600183039250600a81066030018353600a900480611e515750819003601f19909101908152919050565b600080516020612a7a83398151915254610100900460ff16611eaf5760405162461bcd60e51b8152600401610aaf906128a8565b81611eb8611603565b60020190611ec690826129ba565b5080611ed0611603565b60030190611ede90826129ba565b506001611ee9611603565b555050565b600054610100900460ff16611f155760405162461bcd60e51b8152600401610aaf906128fc565b610d1433611952565b60008072184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b8310611f5d5772184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b830492506040015b6d04ee2d6d415b85acef81000000008310611f89576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc100008310611fa757662386f26fc10000830492506010015b6305f5e1008310611fbf576305f5e100830492506008015b6127108310611fd357612710830492506004015b60648310611fe5576064830492506002015b600a83106106625760010192915050565b50805460008255600502906000526020600020908101906113e091905b808211156120475760008082556001820181905560028201819055600382015560048101805460ff19169055600501612013565b5090565b6001600160e01b0319811681146113e057600080fd5b60006020828403121561207357600080fd5b8135611a448161204b565b60005b83811015612099578181015183820152602001612081565b50506000910152565b600081518084526120ba81602086016020860161207e565b601f01601f19169290920160200192915050565b602081526000611a4460208301846120a2565b6000602082840312156120f357600080fd5b5035919050565b6001600160a01b03811681146113e057600080fd5b6000806040838503121561212257600080fd5b823561212d816120fa565b946020939093013593505050565b60008060006060848603121561215057600080fd5b833561215b816120fa565b9250602084013561216b816120fa565b929592945050506040919091013590565b60008083601f84011261218e57600080fd5b5081356001600160401b038111156121a557600080fd5b6020830191508360208285010111156121bd57600080fd5b9250929050565b600080602083850312156121d757600080fd5b82356001600160401b038111156121ed57600080fd5b6121f98582860161217c565b90969095509350505050565b634e487b7160e01b600052604160045260246000fd5b60006001600160401b038084111561223557612235612205565b604051601f8501601f19908116603f0116810190828211818310171561225d5761225d612205565b8160405280935085815286868601111561227657600080fd5b858560208301376000602087830101525050509392505050565b600080600080608085870312156122a657600080fd5b84356122b1816120fa565b935060208501356122c1816120fa565b925060408501356122d1816120fa565b915060608501356001600160401b038111156122ec57600080fd5b8501601f810187136122fd57600080fd5b61230c8782356020840161221b565b91505092959194509250565b60006020828403121561232a57600080fd5b8135611a44816120fa565b60008060008060006080868803121561234d57600080fd5b8535612358816120fa565b9450602086013593506040860135925060608601356001600160401b0381111561238157600080fd5b61238d8882890161217c565b969995985093965092949392505050565b60008060008060008060a087890312156123b757600080fd5b863595506020870135945060408701356123d0816120fa565b935060608701356123e0816120fa565b925060808701356001600160401b038111156123fb57600080fd5b61240789828a0161217c565b979a9699509497509295939492505050565b6000806020838503121561242c57600080fd5b82356001600160401b038082111561244357600080fd5b818501915085601f83011261245757600080fd5b81358181111561246657600080fd5b86602060a08302850101111561247b57600080fd5b60209290920196919550909350505050565b80151581146113e057600080fd5b600080604083850312156124ae57600080fd5b82356124b9816120fa565b915060208301356124c98161248d565b809150509250929050565b600080600080608085870312156124ea57600080fd5b84356124f5816120fa565b93506020850135612505816120fa565b92506040850135915060608501356001600160401b038111156122ec57600080fd5b6000806040838503121561253a57600080fd5b8235612545816120fa565b915060208301356124c9816120fa565b600181811c9082168061256957607f821691505b60208210810361132757634e487b7160e01b600052602260045260246000fd5b601f8211156109e357600081815260208120601f850160051c810160208610156125b05750805b601f850160051c820191505b8181101561097c578281556001016125bc565b6001600160401b038311156125e6576125e6612205565b6125fa836125f48354612555565b83612589565b6000601f84116001811461262e57600085156126165750838201355b600019600387901b1c1916600186901b178355610c86565b600083815260209020601f19861690835b8281101561265f578685013582556020948501946001909201910161263f565b508682101561267c5760001960f88860031b161c19848701351681555b505060018560011b0183555050505050565b634e487b7160e01b600052603260045260246000fd5b6001600160a01b038681168252851660208201526040810184905260806060820181905281018290526000828460a0840137600060a0848401015260a0601f19601f85011683010190509695505050505050565b60006020828403121561270a57600080fd5b8151611a448161248d565b634e487b7160e01b600052601160045260246000fd5b808202811582820484141761066257610662612715565b600060a0828403121561275457600080fd5b60405160a081018181106001600160401b038211171561277657612776612205565b80604052508235815260208301356020820152604083013560408201526060830135606082015260808301356127ab8161248d565b60808201529392505050565b6000600182016127c9576127c9612715565b5060010190565b6120a160f11b8152600082516127ed81600285016020870161207e565b9190910160020192915050565b8181038181111561066257610662612715565b6000825161281f81846020870161207e565b9190910192915050565b6000835161283b81846020880161207e565b83519083019061284f81836020880161207e565b01949350505050565b6000806040838503121561286b57600080fd5b8251612876816120fa565b6020939093015192949293505050565b6000826128a357634e487b7160e01b600052601260045260246000fd5b500490565b60208082526034908201527f455243373231415f5f496e697469616c697a61626c653a20636f6e7472616374604082015273206973206e6f7420696e697469616c697a696e6760601b606082015260800190565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b60006020828403121561295957600080fd5b5051919050565b6001600160a01b0385811682528416602082015260408101839052608060608201819052600090612993908301846120a2565b9695505050505050565b6000602082840312156129af57600080fd5b8151611a448161204b565b81516001600160401b038111156129d3576129d3612205565b6129e7816129e18454612555565b84612589565b602080601f831160018114612a1c5760008415612a045750858301515b600019600386901b1c1916600185901b17855561097c565b600085815260208120601f198616915b82811015612a4b57888601518255948401946001909101908401612a2c565b5085821015612a695787850151600019600388901b60f8161c191681555b5050505050600190811b0190555056feee151c8401928dc223602bb187aff91b9a56c7cae5476ef1b3287b085a16c85fa264697066735822122023fa41bc39b9268e59f7967d1440716167d00463f29541b323f7e476d816a66d64736f6c63430008130033", + "nonce": "0x485", + "accessList": [] + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0x177ee1ac28d6153b493f8d756cac44bc933eab4016f50a7f87bfd058a2b6bf3f", + "transactionType": "CALL", + "contractName": "TransparentUpgradeableProxy", + "contractAddress": "0x9BE7E2B13f70f170B63c0379663313EcdB527294", + "function": null, + "arguments": null, + "transaction": { + "type": "0x02", + "from": "0xd71256ec24925873ce9e9f085f89864ca05970bd", + "to": "0x9be7e2b13f70f170b63c0379663313ecdb527294", + "gas": "0xc552", + "value": "0x0", + "data": "0x641254bd000000000000000000000000ddc710e86c9c0e01852c0770c0817f59416518d7", + "nonce": "0x486", + "accessList": [] + }, + "additionalContracts": [], + "isFixedGasLimit": false + } + ], + "receipts": [ + { + "transactionHash": "0x87bbc0bb208ac803aa0b7d13ad37c9da03932cf319c9a3a0b40d0a906b001b0b", + "transactionIndex": "0x1", + "blockHash": "0x6ccd9336c9345457abd191a21a5ef21699dd729188653e3d0be0a9fa1481c887", + "blockNumber": "0xb30623", + "from": "0xD71256eC24925873cE9E9F085f89864Ca05970bD", + "to": null, + "cumulativeGasUsed": "0x15b421", + "gasUsed": "0x14fd1c", + "contractAddress": "0x072e8fB0aa2C75F727da6df3220eF676A966bcc8", + "logs": [ + { + "address": "0x072e8fB0aa2C75F727da6df3220eF676A966bcc8", + "topics": [ + "0x7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498" + ], + "data": "0x00000000000000000000000000000000000000000000000000000000000000ff", + "blockHash": "0x6ccd9336c9345457abd191a21a5ef21699dd729188653e3d0be0a9fa1481c887", + "blockNumber": "0xb30623", + "transactionHash": "0x87bbc0bb208ac803aa0b7d13ad37c9da03932cf319c9a3a0b40d0a906b001b0b", + "transactionIndex": "0x1", + "logIndex": "0x0", + "removed": false + } + ], + "status": "0x1", + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000008000400000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "type": "0x2", + "effectiveGasPrice": "0xb2d05e32" + }, + { + "transactionHash": "0xc7d9df9de8d8dd6db347a6ecffd38864a7649c4a6327fc847b1203a24872c293", + "transactionIndex": "0x2", + "blockHash": "0x6ccd9336c9345457abd191a21a5ef21699dd729188653e3d0be0a9fa1481c887", + "blockNumber": "0xb30623", + "from": "0xD71256eC24925873cE9E9F085f89864Ca05970bD", + "to": null, + "cumulativeGasUsed": "0x3c6903", + "gasUsed": "0x26b4e2", + "contractAddress": "0xdDC710e86c9C0E01852C0770C0817f59416518D7", + "logs": [ + { + "address": "0xdDC710e86c9C0E01852C0770C0817f59416518D7", + "topics": [ + "0x7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498" + ], + "data": "0x00000000000000000000000000000000000000000000000000000000000000ff", + "blockHash": "0x6ccd9336c9345457abd191a21a5ef21699dd729188653e3d0be0a9fa1481c887", + "blockNumber": "0xb30623", + "transactionHash": "0xc7d9df9de8d8dd6db347a6ecffd38864a7649c4a6327fc847b1203a24872c293", + "transactionIndex": "0x2", + "logIndex": "0x1", + "removed": false + } + ], + "status": "0x1", + "logsBloom": "0x00000000000000000000000400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000040800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "type": "0x2", + "effectiveGasPrice": "0xb2d05e32" + }, + { + "transactionHash": "0xa44071e057ccb66121a40d8e328625d15e471a621569e7f5966f630e080eec4c", + "transactionIndex": "0x3", + "blockHash": "0x6ccd9336c9345457abd191a21a5ef21699dd729188653e3d0be0a9fa1481c887", + "blockNumber": "0xb30623", + "from": "0xD71256eC24925873cE9E9F085f89864Ca05970bD", + "to": null, + "cumulativeGasUsed": "0x61bb9d", + "gasUsed": "0x25529a", + "contractAddress": "0xEeB54C912C6971cC808a2f960b6E27148a66715c", + "logs": [ + { + "address": "0xEeB54C912C6971cC808a2f960b6E27148a66715c", + "topics": [ + "0x7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498" + ], + "data": "0x00000000000000000000000000000000000000000000000000000000000000ff", + "blockHash": "0x6ccd9336c9345457abd191a21a5ef21699dd729188653e3d0be0a9fa1481c887", + "blockNumber": "0xb30623", + "transactionHash": "0xa44071e057ccb66121a40d8e328625d15e471a621569e7f5966f630e080eec4c", + "transactionIndex": "0x3", + "logIndex": "0x2", + "removed": false + } + ], + "status": "0x1", + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000400000000000100000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "type": "0x2", + "effectiveGasPrice": "0xb2d05e32" + }, + { + "transactionHash": "0x177ee1ac28d6153b493f8d756cac44bc933eab4016f50a7f87bfd058a2b6bf3f", + "transactionIndex": "0x4", + "blockHash": "0x6ccd9336c9345457abd191a21a5ef21699dd729188653e3d0be0a9fa1481c887", + "blockNumber": "0xb30623", + "from": "0xD71256eC24925873cE9E9F085f89864Ca05970bD", + "to": "0x9BE7E2B13f70f170B63c0379663313EcdB527294", + "cumulativeGasUsed": "0x624a79", + "gasUsed": "0x8edc", + "contractAddress": null, + "logs": [], + "status": "0x1", + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "type": "0x2", + "effectiveGasPrice": "0xb2d05e32" + } + ], + "libraries": [], + "pending": [], + "returns": {}, + "timestamp": 1698658651, + "chain": 84531, + "multi": false, + "commit": "cec81dc" +} \ No newline at end of file diff --git a/broadcast/deploy-upgrade.s.sol/84531/run-1698658702.json b/broadcast/deploy-upgrade.s.sol/84531/run-1698658702.json new file mode 100644 index 0000000..80df778 --- /dev/null +++ b/broadcast/deploy-upgrade.s.sol/84531/run-1698658702.json @@ -0,0 +1,196 @@ +{ + "transactions": [ + { + "hash": "0x87bbc0bb208ac803aa0b7d13ad37c9da03932cf319c9a3a0b40d0a906b001b0b", + "transactionType": "CREATE", + "contractName": "ABDataRegistry", + "contractAddress": "0x072e8fB0aa2C75F727da6df3220eF676A966bcc8", + "function": null, + "arguments": null, + "transaction": { + "type": "0x02", + "from": "0xd71256ec24925873ce9e9f085f89864ca05970bd", + "gas": "0x1b490a", + "value": "0x0", + "data": "0x608060405234801561001057600080fd5b5061001961001e565b6100de565b600054610100900460ff161561008a5760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff90811610156100dc576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b611770806100ed6000396000f3fe608060405234801561001057600080fd5b50600436106101da5760003560e01c80638353b91911610104578063b9138580116100a2578063d547741f11610071578063d547741f146104fd578063da35a26f14610510578063dd3394aa14610523578063f0f442601461053657600080fd5b8063b9138580146104a4578063b9d47392146104c4578063c70eae8c146104d7578063cb9685ba146104ea57600080fd5b806391d14854116100de57806391d1485414610463578063977f82ba14610476578063a217fddf14610489578063ae98d8571461049157600080fd5b80638353b919146104115780638392767d146104245780638ffaa1401461043757600080fd5b80632f2ff15d1161017c5780635eb399681161014b5780635eb399681461036a578063608ebea1146103ac57806369ca69a5146103de57806371ef9a93146103fe57600080fd5b80632f2ff15d146102f357806336568abe1461030657806341859ac8146103195780635134b49a1461034757600080fd5b80630a4d85cd116101b85780630a4d85cd14610265578063145f8dd4146102a657806319742e6c146102bb578063248a9ca3146102d057600080fd5b806301ffc9a7146101df57806304a0fb1714610207578063069a9b641461023c575b600080fd5b6101f26101ed36600461123e565b610549565b60405190151581526020015b60405180910390f35b61022e7fdfbefbf47cfe66b701d8cfdbce1de81c821590819cb07e71cb01b6602fb0ee2781565b6040519081526020016101fe565b61022e61024a366004611284565b6001600160a01b031660009081526099602052604090205490565b61028e610273366004611284565b6098602052600090815260409020546001600160a01b031681565b6040516001600160a01b0390911681526020016101fe565b61022e60008051602061171b83398151915281565b6102ce6102c936600461129f565b610580565b005b61022e6102de3660046112d9565b60009081526065602052604090206001015490565b6102ce6103013660046112f2565b6105da565b6102ce6103143660046112f2565b610604565b6101f2610327366004611284565b6001600160a01b0390811660009081526098602052604090205416151590565b6101f26103553660046112d9565b609c6020526000908152604090205460ff1681565b61037d6103783660046112d9565b610687565b6040805194855260208501939093526001600160a01b03918216928401929092521660608201526080016101fe565b6103bf6103ba36600461131e565b6106cd565b604080516001600160a01b0390931683526020830191909152016101fe565b61022e6103ec3660046112d9565b609d6020526000908152604090205481565b6102ce61040c36600461131e565b61072b565b6102ce61041f366004611348565b610790565b609b5461028e906001600160a01b031681565b61028e610445366004611284565b6001600160a01b039081166000908152609860205260409020541690565b6101f26104713660046112f2565b610864565b6102ce610484366004611384565b61088f565b61022e600081565b61022e61049f366004611348565b610937565b61022e6104b2366004611284565b60996020526000908152604090205481565b6102ce6104d23660046113d9565b610b2b565b6102ce6104e5366004611284565b610b8c565b6102ce6104f83660046114b4565b610bce565b6102ce61050b3660046112f2565b610c2d565b6102ce61051e3660046112f2565b610c52565b6102ce61053136600461154a565b610dc3565b6102ce610544366004611284565b610e6f565b60006001600160e01b03198216637965db0b60e01b148061057a57506301ffc9a760e01b6001600160e01b03198316145b92915050565b600061058b81610e9d565b6127108211156105ae57604051632627b42d60e11b815260040160405180910390fd5b506000918252609c60209081526040808420805460ff191695151595909517909455609d905291902055565b6000828152606560205260409020600101546105f581610e9d565b6105ff8383610eaa565b505050565b6001600160a01b03811633146106795760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201526e103937b632b9903337b91039b2b63360891b60648201526084015b60405180910390fd5b6106838282610f30565b5050565b609a818154811061069757600080fd5b60009182526020909120600490910201805460018201546002830154600390930154919350916001600160a01b03908116911684565b6000818152609c6020526040812054819060ff16156106fb57506000828152609d6020526040902054610716565b506001600160a01b0383166000908152609960205260409020545b609b546001600160a01b031694909350915050565b600061073681610e9d565b6001600160a01b038316600081815260996020908152604091829020859055815192835282018490527fc1c540da095b5b6d54738e18568e3c832ae9d1a26f1abeb3e69efde2d4fd6ec291015b60405180910390a1505050565b7fdfbefbf47cfe66b701d8cfdbce1de81c821590819cb07e71cb01b6602fb0ee276107ba81610e9d565b6001600160a01b0384811660009081526098602052604090205416156107f35760405163515567cf60e01b815260040160405180910390fd5b6001600160a01b03848116600081815260986020908152604080832080546001600160a01b0319169589169586179055609982529182902086905590519182527fb0c28f4dd5b8aa95e332651d07f6930a2f9d46ae2bc4bfa73e2f33e478a1269b910160405180910390a250505050565b60009182526065602090815260408084206001600160a01b0393909316845291905290205460ff1690565b60008051602061171b8339815191526108a781610e9d565b6001600160a01b03868116600090815260986020526040908190205490516323f4440760e21b81528783166004820152868316602482015260448101869052606481018590529116908190638fd1101c906084015b600060405180830381600087803b15801561091657600080fd5b505af115801561092a573d6000803e3d6000fd5b5050505050505050505050565b600060008051602061171b83398151915261095181610e9d565b610959610f97565b6040805160808101825282815260208082018781526001600160a01b038a81168486018181523360608701818152609a8054600181018255600091909152975160049098027f44da158ba27f9252712a74ff6a55c5d531f69609f1f6e7f17c4443a8e2089be481019890985594517f44da158ba27f9252712a74ff6a55c5d531f69609f1f6e7f17c4443a8e2089be588015590517f44da158ba27f9252712a74ff6a55c5d531f69609f1f6e7f17c4443a8e2089be6870180549185166001600160a01b031992831617905593517f44da158ba27f9252712a74ff6a55c5d531f69609f1f6e7f17c4443a8e2089be790960180549690931695909316949094179055835190815290810191909152919350849184917f5cbfe9cceabf50e9fcfff39e46cd47b1667ad148238648e99aee4fa0e1193d43910160405180910390a36001600160a01b03841615610b23576001600160a01b0385811660009081526098602052604090819020549051633670855b60e11b8152336004820152868316602482015260448101859052911690636ce10ab690606401600060405180830381600087803b158015610b0a57600080fd5b505af1158015610b1e573d6000803e3d6000fd5b505050505b509392505050565b6000610b3681610e9d565b6001600160a01b038216610b5d57604051632627b42d60e11b815260040160405180910390fd5b506001600160a01b03918216600090815260986020526040902080546001600160a01b03191691909216179055565b7fdfbefbf47cfe66b701d8cfdbce1de81c821590819cb07e71cb01b6602fb0ee27610bb681610e9d565b61068360008051602061171b83398151915283610eaa565b60008051602061171b833981519152610be681610e9d565b6001600160a01b038087166000908152609860205260409081902054905163d518b7ff60e01b8152911690819063d518b7ff906108fc9089908990899089906004016115a3565b600082815260656020526040902060010154610c4881610e9d565b6105ff8383610f30565b600054610100900460ff1615808015610c725750600054600160ff909116105b80610c8c5750303b158015610c8c575060005460ff166001145b610cef5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610670565b6000805460ff191660011790558015610d12576000805461ff0019166101001790555b610d1a610fb9565b610d25600033611026565b6097839055609b80546001600160a01b0319166001600160a01b03841690811790915560408051918252602082018590527fa4888636278c973bcfd5eca8f86d67bf0c980edbf1740721c6f229b0421ae1e2910160405180910390a180156105ff576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb384740249890602001610783565b6000610dce81610e9d565b6001600160a01b038085166000908152609860205260409020541680610e0757604051632627b42d60e11b815260040160405180910390fd5b60405163b08805a560e01b815260048101859052602481018490526001600160a01b0382169063b08805a590604401600060405180830381600087803b158015610e5057600080fd5b505af1158015610e64573d6000803e3d6000fd5b505050505050505050565b6000610e7a81610e9d565b50609b80546001600160a01b0319166001600160a01b0392909216919091179055565b610ea78133611030565b50565b610eb48282610864565b6106835760008281526065602090815260408083206001600160a01b03851684529091529020805460ff19166001179055610eec3390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b610f3a8282610864565b156106835760008281526065602090815260408083206001600160a01b0385168085529252808320805460ff1916905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b609a54609754600091610fa9916115f7565b610fb49060016115f7565b905090565b600054610100900460ff166110245760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b6064820152608401610670565b565b6106838282610eaa565b61103a8282610864565b6106835761104781611089565b61105283602061109b565b60405160200161106392919061162e565b60408051601f198184030181529082905262461bcd60e51b8252610670916004016116a3565b606061057a6001600160a01b03831660145b606060006110aa8360026116d6565b6110b59060026115f7565b67ffffffffffffffff8111156110cd576110cd611403565b6040519080825280601f01601f1916602001820160405280156110f7576020820181803683370190505b509050600360fc1b81600081518110611112576111126116ed565b60200101906001600160f81b031916908160001a905350600f60fb1b81600181518110611141576111416116ed565b60200101906001600160f81b031916908160001a90535060006111658460026116d6565b6111709060016115f7565b90505b60018111156111e8576f181899199a1a9b1b9c1cb0b131b232b360811b85600f16601081106111a4576111a46116ed565b1a60f81b8282815181106111ba576111ba6116ed565b60200101906001600160f81b031916908160001a90535060049490941c936111e181611703565b9050611173565b5083156112375760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e746044820152606401610670565b9392505050565b60006020828403121561125057600080fd5b81356001600160e01b03198116811461123757600080fd5b80356001600160a01b038116811461127f57600080fd5b919050565b60006020828403121561129657600080fd5b61123782611268565b6000806000606084860312156112b457600080fd5b833580151581146112c457600080fd5b95602085013595506040909401359392505050565b6000602082840312156112eb57600080fd5b5035919050565b6000806040838503121561130557600080fd5b8235915061131560208401611268565b90509250929050565b6000806040838503121561133157600080fd5b61133a83611268565b946020939093013593505050565b60008060006060848603121561135d57600080fd5b61136684611268565b925061137460208501611268565b9150604084013590509250925092565b600080600080600060a0868803121561139c57600080fd5b6113a586611268565b94506113b360208701611268565b93506113c160408701611268565b94979396509394606081013594506080013592915050565b600080604083850312156113ec57600080fd5b6113f583611268565b915061131560208401611268565b634e487b7160e01b600052604160045260246000fd5b600082601f83011261142a57600080fd5b8135602067ffffffffffffffff8083111561144757611447611403565b8260051b604051601f19603f8301168101818110848211171561146c5761146c611403565b60405293845285810183019383810192508785111561148a57600080fd5b83870191505b848210156114a957813583529183019190830190611490565b979650505050505050565b600080600080600060a086880312156114cc57600080fd5b6114d586611268565b94506114e360208701611268565b93506114f160408701611268565b9250606086013567ffffffffffffffff8082111561150e57600080fd5b61151a89838a01611419565b9350608088013591508082111561153057600080fd5b5061153d88828901611419565b9150509295509295909350565b60008060006060848603121561155f57600080fd5b6112c484611268565b600081518084526020808501945080840160005b838110156115985781518752958201959082019060010161157c565b509495945050505050565b6001600160a01b038581168252841660208201526080604082018190526000906115cf90830185611568565b82810360608401526114a98185611568565b634e487b7160e01b600052601160045260246000fd5b8082018082111561057a5761057a6115e1565b60005b8381101561162557818101518382015260200161160d565b50506000910152565b7f416363657373436f6e74726f6c3a206163636f756e742000000000000000000081526000835161166681601785016020880161160a565b7001034b99036b4b9b9b4b733903937b6329607d1b601791840191820152835161169781602884016020880161160a565b01602801949350505050565b60208152600082518060208401526116c281604085016020870161160a565b601f01601f19169190910160400192915050565b808202811582820484141761057a5761057a6115e1565b634e487b7160e01b600052603260045260246000fd5b600081611712576117126115e1565b50600019019056fe40a5c770eee7730548a6335e1f372e76bf4759f6fda1a932bd9cfc33106f0b4ca2646970667358221220b2618605619fe9d7ba99fe3576b090ded9d2e679e72096e3edb485193e189db164736f6c63430008130033", + "nonce": "0x483", + "accessList": [] + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0xc7d9df9de8d8dd6db347a6ecffd38864a7649c4a6327fc847b1203a24872c293", + "transactionType": "CREATE", + "contractName": "ERC721ABLE", + "contractAddress": "0xdDC710e86c9C0E01852C0770C0817f59416518D7", + "function": null, + "arguments": null, + "transaction": { + "type": "0x02", + "from": "0xd71256ec24925873ce9e9f085f89864ca05970bd", + "gas": "0x32518c", + "value": "0x0", + "data": "0x60806040523480156200001157600080fd5b506200001c62000022565b620000e4565b600054610100900460ff16156200008f5760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff9081161015620000e2576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b612c7380620000f46000396000f3fe60806040526004361061020f5760003560e01c806370a0823111610118578063a1db9782116100a0578063d5abeb011161006f578063d5abeb0114610622578063de7ecf8714610638578063e985e9c51461064e578063f2fde38b1461066e578063fe325e961461068e57600080fd5b8063a1db9782146105af578063a22cb465146105cf578063b88d4fde146105ef578063c87b56dd1461060257600080fd5b806384a0c766116100e757806384a0c7661461051c5780638c72c54e1461053c5780638da5cb5b1461055c5780639182ba971461057a57806395d89b411461059a57600080fd5b806370a08231146104ad578063715018a6146104cd578063731133e9146104e2578063754b377c146104f557600080fd5b806342842e0e1161019b57806365e8e4f41161016a57806365e8e4f4146103f557806366748e98146104155780636cc82b841461044d5780636dbdaae61461046d5780636f8b44b01461048d57600080fd5b806342842e0e1461036e5780634b1022621461038157806355f804b3146103b55780636352211e146103d557600080fd5b806318160ddd116101e257806318160ddd146102b857806323b872dd146102db5780632a778c9b146102ee5780632e37eef6146103045780634128541c1461034e57600080fd5b806301ffc9a71461021457806306fdde0314610249578063081812fc1461026b578063095ea7b3146102a3575b600080fd5b34801561022057600080fd5b5061023461022f3660046121e8565b6106a3565b60405190151581526020015b60405180910390f35b34801561025557600080fd5b5061025e6106b4565b6040516102409190612255565b34801561027757600080fd5b5061028b610286366004612268565b61074f565b6040516001600160a01b039091168152602001610240565b6102b66102b1366004612296565b61079c565b005b3480156102c457600080fd5b506102cd6107ac565b604051908152602001610240565b6102b66102e93660046122c2565b6107cc565b3480156102fa57600080fd5b506102cd60685481565b34801561031057600080fd5b5061032461031f366004612268565b6109d0565b6040805195865260208601949094529284019190915260608301521515608082015260a001610240565b34801561035a57600080fd5b5060655461028b906001600160a01b031681565b6102b661037c3660046122c2565b610a14565b34801561038d57600080fd5b506102cd7f73e84917c5def9002f59334ba09785218b36a703c0e3d37d832ea21e233bb17f81565b3480156103c157600080fd5b506102b66103d036600461234b565b610a34565b3480156103e157600080fd5b5061028b6103f0366004612268565b610a49565b34801561040157600080fd5b506102b6610410366004612417565b610a54565b34801561042157600080fd5b506102cd610430366004612296565b606c60209081526000928352604080842090915290825290205481565b34801561045957600080fd5b5060665461028b906001600160a01b031681565b34801561047957600080fd5b506102b6610488366004612268565b610cd9565b34801561049957600080fd5b506102b66104a8366004612268565b610ce6565b3480156104b957600080fd5b506102cd6104c836600461249f565b610d1b565b3480156104d957600080fd5b506102b6610d83565b6102b66104f03660046124bc565b610d97565b34801561050157600080fd5b5061050a600181565b60405160ff9091168152602001610240565b34801561052857600080fd5b506102b6610537366004612525565b610fbe565b34801561054857600080fd5b5060675461028b906001600160a01b031681565b34801561056857600080fd5b506033546001600160a01b031661028b565b34801561058657600080fd5b506102b66105953660046125aa565b611003565b3480156105a657600080fd5b5061025e6111ca565b3480156105bb57600080fd5b506102b66105ca366004612296565b611206565b3480156105db57600080fd5b506102b66105ea36600461262c565b61127f565b6102b66105fd366004612665565b6112fc565b34801561060e57600080fd5b5061025e61061d366004612268565b611346565b34801561062e57600080fd5b506102cd606d5481565b34801561064457600080fd5b506102cd60695481565b34801561065a57600080fd5b506102346106693660046126b8565b6114a1565b34801561067a57600080fd5b506102b661068936600461249f565b6114de565b34801561069a57600080fd5b506102b6611557565b60006106ae82611729565b92915050565b60606106be611777565b60020180546106cc906126e6565b80601f01602080910402602001604051908101604052809291908181526020018280546106f8906126e6565b80156107455780601f1061071a57610100808354040283529160200191610745565b820191906000526020600020905b81548152906001019060200180831161072857829003601f168201915b5050505050905090565b600061075a8261179b565b610777576040516333d1c03960e21b815260040160405180910390fd5b61077f611777565b60009283526006016020525060409020546001600160a01b031690565b6107a8828260016117e4565b5050565b600060016107b8611777565b600101546107c4611777565b540303919050565b60006107d782611899565b9050836001600160a01b0316816001600160a01b03161461080a5760405162a1148160e81b815260040160405180910390fd5b60008061081684611946565b9150915061083b81876108263390565b6001600160a01b039081169116811491141790565b6108665761084986336114a1565b61086657604051632ce44b5f60e11b815260040160405180910390fd5b6001600160a01b03851661088d57604051633a954ecd60e21b815260040160405180910390fd5b61089a868686600161196e565b80156108a557600082555b6108ad611777565b6001600160a01b03871660009081526005919091016020526040902080546000190190556108d9611777565b6001600160a01b03861660008181526005929092016020526040909120805460010190554260a01b17600160e11b17610910611777565b60008681526004919091016020526040812091909155600160e11b84169003610986576001840161093f611777565b60008281526004919091016020526040812054900361098457610960611777565b5481146109845783610970611777565b600083815260049190910160205260409020555b505b83856001600160a01b0316876001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a45b505050505050565b606b81815481106109e057600080fd5b6000918252602090912060059091020180546001820154600283015460038401546004909401549294509092909160ff1685565b610a2f838383604051806020016040528060008152506112fc565b505050565b610a3c6119ff565b606a610a2f828483612760565b60006106ae82611899565b600080516020612c1e83398151915254610100900460ff16610a8957600080516020612c1e8339815191525460ff1615610a8d565b303b155b610b045760405162461bcd60e51b815260206004820152603760248201527f455243373231415f5f496e697469616c697a61626c653a20636f6e747261637460448201527f20697320616c726561647920696e697469616c697a656400000000000000000060648201526084015b60405180910390fd5b600080516020612c1e83398151915254610100900460ff16158015610b4057600080516020612c1e833981519152805461ffff19166101011790555b600054610100900460ff1615808015610b605750600054600160ff909116105b80610b7a5750303b158015610b7a575060005460ff166001145b610bdd5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610afb565b6000805460ff191660011790558015610c00576000805461ff0019166101001790555b610c198360405180602001604052806000815250611a59565b610c21611a97565b610c2a86611ac6565b6000606855606580546001600160a01b038088166001600160a01b0319928316179092556066805487841690831617905560678054928916929091169190911790558015610cb2576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b508015610cd257600080516020612c1e833981519152805461ff00191690555b5050505050565b610ce16119ff565b606955565b610cee6119ff565b610cf6611b18565b811015610d1657604051632627b42d60e11b815260040160405180910390fd5b606d55565b60006001600160a01b038216610d44576040516323d3ad8160e21b815260040160405180910390fd5b6001600160401b03610d54611777565b6005016000846001600160a01b03166001600160a01b0316815260200190815260200160002054169050919050565b610d8b6119ff565b610d956000611ac6565b565b610da084611b2b565b610dbd576040516332f7a9d760e21b815260040160405180910390fd5b6000606b8581548110610dd257610dd261281f565b60009182526020918290206040805160a0810182526005909302909101805483526001810154938301939093526002830154908201526003820154606082015260049091015460ff1615156080820152606d5490915084610e31611b18565b610e3b919061284b565b1115610e5a576040516322eb5e9560e21b815260040160405180910390fd5b8060800151610ef9576066546040516332f1944960e21b81526001600160a01b039091169063cbc6512490610e9b90899030908a908990899060040161285e565b602060405180830381865afa158015610eb8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610edc91906128b2565b610ef9576040516352c973a760e01b815260040160405180910390fd5b60608101516001600160a01b0387166000908152606c60209081526040808320898452909152902054610f2d90869061284b565b1115610f4c57604051631d66b65960e11b815260040160405180910390fd5b838160400151610f5c91906128cf565b3414610f7b576040516318f4198360e21b815260040160405180910390fd5b6001600160a01b0386166000908152606c6020908152604080832088845290915281208054869290610fae90849061284b565b909155506109c890508685611bd2565b610fc66119ff565b606d87905586851115610fec57604051632627b42d60e11b815260040160405180910390fd5b610ffa868686868686611d1a565b50505050505050565b61100b6119ff565b606b541561101f5761101f606b600061217d565b600081815b818110156111905760008585838181106110405761104061281f565b905060a0020180360381019061105691906128e6565b9050838160000151108061106e575060208101518151115b1561108c57604051632627b42d60e11b815260040160405180910390fd5b606b805460018101825560009190915281517fbd43cb8ece8cd1863bcd6082d65c5b0d25665b1ce17980f0da43c0ed545f98b4600590920291820181905560208301517fbd43cb8ece8cd1863bcd6082d65c5b0d25665b1ce17980f0da43c0ed545f98b583015560408301517fbd43cb8ece8cd1863bcd6082d65c5b0d25665b1ce17980f0da43c0ed545f98b683015560608301517fbd43cb8ece8cd1863bcd6082d65c5b0d25665b1ce17980f0da43c0ed545f98b78301556080909201517fbd43cb8ece8cd1863bcd6082d65c5b0d25665b1ce17980f0da43c0ed545f98b8909101805460ff191691151591909117905592506111898161295b565b9050611024565b506040518181527ffda37b53117c5bf84916ece7449890be93cbd2842914c83f4a6864adb618654f9060200160405180910390a150505050565b6060606854600014611203576111e1606854611e32565b6040516020016111f19190612974565b60405160208183030381529060405290505b90565b61120e6119ff565b60405163a9059cbb60e01b8152336004820152602481018290526001600160a01b0383169063a9059cbb906044016020604051808303816000875af115801561125b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a2f91906128b2565b80611288611777565b336000818152600792909201602090815260408084206001600160a01b03881680865290835293819020805460ff19169515159590951790945592518415158152919290917f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a35050565b6113078484846107cc565b6001600160a01b0383163b156113405761132384848484611ec4565b611340576040516368d2bf6b60e11b815260040160405180910390fd5b50505050565b60606113518261179b565b61136e57604051632627b42d60e11b815260040160405180910390fd5b6000611378611faf565b9050805160000361139a5760405180602001604052806000815250915061149b565b60408051600180825281830190925260009160208201818036833701905050905081600183516113ca919061299e565b815181106113da576113da61281f565b602001015160f81c60f81b816000815181106113f8576113f861281f565b60200101906001600160f81b031916908160001a905350604051602f60f81b60208201528190602101604051602081830303815290604052805190602001208160405160200161144891906129b1565b6040516020818303038152906040528051906020012003611494578261146d86611fbe565b60405160200161147e9291906129cd565b6040516020818303038152906040529350611498565b8293505b50505b50919050565b60006114ab611777565b6001600160a01b039384166000908152600791909101602090815260408083209490951682529290925250205460ff1690565b6114e66119ff565b6001600160a01b03811661154b5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610afb565b61155481611ac6565b50565b61155f6119ff565b60655460675460685460405163608ebea160e01b81526001600160a01b03928316600482015260248101919091526000928392169063608ebea1906044016040805180830381865afa1580156115b9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115dd91906129fc565b90925090506001600160a01b03821661160957604051632627b42d60e11b815260040160405180910390fd5b47600061271061161984846128cf565b6116239190612a2a565b90506000611631828461299e565b905080156116af576000856001600160a01b03168260405160006040518083038185875af1925050503d8060008114611686576040519150601f19603f3d011682016040523d82523d6000602084013e61168b565b606091505b50509050806116ad57604051631fa55c0760e11b815260040160405180910390fd5b505b8115610cd2576067546040516000916001600160a01b03169084908381818185875af1925050503d8060008114611702576040519150601f19603f3d011682016040523d82523d6000602084013e611707565b606091505b50509050806109c857604051631fa55c0760e11b815260040160405180910390fd5b60006301ffc9a760e01b6001600160e01b03198316148061175a57506380ac58cd60e01b6001600160e01b03198316145b806106ae5750506001600160e01b031916635b5e139f60e01b1490565b7f2569078dfb4b0305704d3008e7403993ae9601b85f7ae5e742de3de8f8011c4090565b6000816001111580156117b557506117b1611777565b5482105b80156106ae5750600160e01b6117c9611777565b60008481526004919091016020526040902054161592915050565b60006117ef83610a49565b9050811561182e57336001600160a01b0382161461182e5761181181336114a1565b61182e576040516367d9dca160e11b815260040160405180910390fd5b83611837611777565b6000858152600691909101602052604080822080546001600160a01b0319166001600160a01b0394851617905551859287811692908516917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259190a450505050565b60008160011161192d576118ab611777565b600083815260049190910160205260408120549150600160e01b8216900361192d5780600003611928576118dd611777565b5482106118fd57604051636f96cda160e11b815260040160405180910390fd5b611905611777565b6000199092016000818152600493909301602052604090922054905080156118fd575b919050565b604051636f96cda160e11b815260040160405180910390fd5b6000806000611953611777565b60009485526006016020525050604090912080549092909150565b6069541561134057606554606754606854604051634bbfc15d60e11b81526001600160a01b0392831660048201528783166024820152868316604482015260648101919091526084810184905291169063977f82ba9060a401600060405180830381600087803b1580156119e157600080fd5b505af11580156119f5573d6000803e3d6000fd5b5050505050505050565b6033546001600160a01b03163314610d955760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610afb565b600080516020612c1e83398151915254610100900460ff16611a8d5760405162461bcd60e51b8152600401610afb90612a4c565b6107a88282612002565b600054610100900460ff16611abe5760405162461bcd60e51b8152600401610afb90612aa0565b610d95612075565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b60006001611b24611777565b5403919050565b606b546000908210611b5057604051632627b42d60e11b815260040160405180910390fd5b6000606b8381548110611b6557611b6561281f565b60009182526020918290206040805160a08101825260059093029091018054808452600182015494840194909452600281015491830191909152600381015460608301526004015460ff161515608082015291504210801590611bcb5750428160200151115b9392505050565b6000611bdc611777565b5490506000829003611c015760405163b562e8dd60e01b815260040160405180910390fd5b611c0e600084838561196e565b680100000000000000018202611c22611777565b6001600160a01b038516600081815260059290920160205260409091208054929092019091554260a01b6001841460e11b1717611c5d611777565b600083815260049190910160205260408120919091556001600160a01b0384169083830190839083907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8180a4600183015b818114611ce757808360007fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600080a4600101611caf565b5081600003611d0857604051622e076360e81b815260040160405180910390fd5b80611d11611777565b5550610a2f9050565b60685415611d3b576040516302d1671b60e41b815260040160405180910390fd5b85158015611d5157506001600160a01b03831615155b80611d6d57506001600160a01b038316158015611d6d57508515155b15611d8b57604051632627b42d60e11b815260040160405180910390fd5b60655460675460405163ae98d85760e01b81526001600160a01b03918216600482015285821660248201526000604482015291169063ae98d857906064016020604051808303816000875af1158015611de8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e0c9190612aeb565b6068556069869055606a611e21828483612760565b5084156109c8576109c88486611bd2565b60606000611e3f836120a5565b60010190506000816001600160401b03811115611e5e57611e5e61238c565b6040519080825280601f01601f191660200182016040528015611e88576020820181803683370190505b5090508181016020015b600019016f181899199a1a9b1b9c1cb0b131b232b360811b600a86061a8153600a8504945084611e9257509392505050565b604051630a85bd0160e11b81526000906001600160a01b0385169063150b7a0290611ef9903390899088908890600401612b04565b6020604051808303816000875af1925050508015611f34575060408051601f3d908101601f19168201909252611f3191810190612b41565b60015b611f92573d808015611f62576040519150601f19603f3d011682016040523d82523d6000602084013e611f67565b606091505b508051600003611f8a576040516368d2bf6b60e11b815260040160405180910390fd5b805181602001fd5b6001600160e01b031916630a85bd0160e11b149050949350505050565b6060606a80546106cc906126e6565b606060a06040510180604052602081039150506000815280825b600183039250600a81066030018353600a900480611fd85750819003601f19909101908152919050565b600080516020612c1e83398151915254610100900460ff166120365760405162461bcd60e51b8152600401610afb90612a4c565b8161203f611777565b6002019061204d9082612b5e565b5080612057611777565b600301906120659082612b5e565b506001612070611777565b555050565b600054610100900460ff1661209c5760405162461bcd60e51b8152600401610afb90612aa0565b610d9533611ac6565b60008072184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b83106120e45772184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b830492506040015b6d04ee2d6d415b85acef81000000008310612110576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc10000831061212e57662386f26fc10000830492506010015b6305f5e1008310612146576305f5e100830492506008015b612710831061215a57612710830492506004015b6064831061216c576064830492506002015b600a83106106ae5760010192915050565b508054600082556005029060005260206000209081019061155491905b808211156121ce5760008082556001820181905560028201819055600382015560048101805460ff1916905560050161219a565b5090565b6001600160e01b03198116811461155457600080fd5b6000602082840312156121fa57600080fd5b8135611bcb816121d2565b60005b83811015612220578181015183820152602001612208565b50506000910152565b60008151808452612241816020860160208601612205565b601f01601f19169290920160200192915050565b602081526000611bcb6020830184612229565b60006020828403121561227a57600080fd5b5035919050565b6001600160a01b038116811461155457600080fd5b600080604083850312156122a957600080fd5b82356122b481612281565b946020939093013593505050565b6000806000606084860312156122d757600080fd5b83356122e281612281565b925060208401356122f281612281565b929592945050506040919091013590565b60008083601f84011261231557600080fd5b5081356001600160401b0381111561232c57600080fd5b60208301915083602082850101111561234457600080fd5b9250929050565b6000806020838503121561235e57600080fd5b82356001600160401b0381111561237457600080fd5b61238085828601612303565b90969095509350505050565b634e487b7160e01b600052604160045260246000fd5b60006001600160401b03808411156123bc576123bc61238c565b604051601f8501601f19908116603f011681019082821181831017156123e4576123e461238c565b816040528093508581528686860111156123fd57600080fd5b858560208301376000602087830101525050509392505050565b6000806000806080858703121561242d57600080fd5b843561243881612281565b9350602085013561244881612281565b9250604085013561245881612281565b915060608501356001600160401b0381111561247357600080fd5b8501601f8101871361248457600080fd5b612493878235602084016123a2565b91505092959194509250565b6000602082840312156124b157600080fd5b8135611bcb81612281565b6000806000806000608086880312156124d457600080fd5b85356124df81612281565b9450602086013593506040860135925060608601356001600160401b0381111561250857600080fd5b61251488828901612303565b969995985093965092949392505050565b600080600080600080600060c0888a03121561254057600080fd5b873596506020880135955060408801359450606088013561256081612281565b9350608088013561257081612281565b925060a08801356001600160401b0381111561258b57600080fd5b6125978a828b01612303565b989b979a50959850939692959293505050565b600080602083850312156125bd57600080fd5b82356001600160401b03808211156125d457600080fd5b818501915085601f8301126125e857600080fd5b8135818111156125f757600080fd5b86602060a08302850101111561260c57600080fd5b60209290920196919550909350505050565b801515811461155457600080fd5b6000806040838503121561263f57600080fd5b823561264a81612281565b9150602083013561265a8161261e565b809150509250929050565b6000806000806080858703121561267b57600080fd5b843561268681612281565b9350602085013561269681612281565b92506040850135915060608501356001600160401b0381111561247357600080fd5b600080604083850312156126cb57600080fd5b82356126d681612281565b9150602083013561265a81612281565b600181811c908216806126fa57607f821691505b60208210810361149b57634e487b7160e01b600052602260045260246000fd5b601f821115610a2f57600081815260208120601f850160051c810160208610156127415750805b601f850160051c820191505b818110156109c85782815560010161274d565b6001600160401b038311156127775761277761238c565b61278b8361278583546126e6565b8361271a565b6000601f8411600181146127bf57600085156127a75750838201355b600019600387901b1c1916600186901b178355610cd2565b600083815260209020601f19861690835b828110156127f057868501358255602094850194600190920191016127d0565b508682101561280d5760001960f88860031b161c19848701351681555b505060018560011b0183555050505050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b808201808211156106ae576106ae612835565b6001600160a01b038681168252851660208201526040810184905260806060820181905281018290526000828460a0840137600060a0848401015260a0601f19601f85011683010190509695505050505050565b6000602082840312156128c457600080fd5b8151611bcb8161261e565b80820281158282048414176106ae576106ae612835565b600060a082840312156128f857600080fd5b60405160a081018181106001600160401b038211171561291a5761291a61238c565b806040525082358152602083013560208201526040830135604082015260608301356060820152608083013561294f8161261e565b60808201529392505050565b60006001820161296d5761296d612835565b5060010190565b6120a160f11b815260008251612991816002850160208701612205565b9190910160020192915050565b818103818111156106ae576106ae612835565b600082516129c3818460208701612205565b9190910192915050565b600083516129df818460208801612205565b8351908301906129f3818360208801612205565b01949350505050565b60008060408385031215612a0f57600080fd5b8251612a1a81612281565b6020939093015192949293505050565b600082612a4757634e487b7160e01b600052601260045260246000fd5b500490565b60208082526034908201527f455243373231415f5f496e697469616c697a61626c653a20636f6e7472616374604082015273206973206e6f7420696e697469616c697a696e6760601b606082015260800190565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b600060208284031215612afd57600080fd5b5051919050565b6001600160a01b0385811682528416602082015260408101839052608060608201819052600090612b3790830184612229565b9695505050505050565b600060208284031215612b5357600080fd5b8151611bcb816121d2565b81516001600160401b03811115612b7757612b7761238c565b612b8b81612b8584546126e6565b8461271a565b602080601f831160018114612bc05760008415612ba85750858301515b600019600386901b1c1916600185901b1785556109c8565b600085815260208120601f198616915b82811015612bef57888601518255948401946001909101908401612bd0565b5085821015612c0d5787850151600019600388901b60f8161c191681555b5050505050600190811b0190555056feee151c8401928dc223602bb187aff91b9a56c7cae5476ef1b3287b085a16c85fa2646970667358221220a9dd22b04ec37cf2afb5cdba470000e7559163057730e5cac14db8b6a172b7f164736f6c63430008130033", + "nonce": "0x484", + "accessList": [] + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0xa44071e057ccb66121a40d8e328625d15e471a621569e7f5966f630e080eec4c", + "transactionType": "CREATE", + "contractName": "ERC721ABOE", + "contractAddress": "0xEeB54C912C6971cC808a2f960b6E27148a66715c", + "function": null, + "arguments": null, + "transaction": { + "type": "0x02", + "from": "0xd71256ec24925873ce9e9f085f89864ca05970bd", + "gas": "0x3084fb", + "value": "0x0", + "data": "0x60806040523480156200001157600080fd5b506200001c62000022565b620000e4565b600054610100900460ff16156200008f5760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff9081161015620000e2576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b612acf80620000f46000396000f3fe6080604052600436106101f95760003560e01c806370a082311161010d57806395d89b41116100a0578063c87b56dd1161006f578063c87b56dd146105cc578063de7ecf87146105ec578063e985e9c514610602578063f2fde38b14610622578063fe325e961461064257600080fd5b806395d89b4114610564578063a1db978214610579578063a22cb46514610599578063b88d4fde146105b957600080fd5b80638c5c2a5b116100dc5780638c5c2a5b146104e65780638c72c54e146105065780638da5cb5b146105265780639182ba971461054457600080fd5b806370a0823114610477578063715018a614610497578063731133e9146104ac578063754b377c146104bf57600080fd5b80634128541c116101905780636352211e1161015f5780636352211e146103bf57806365e8e4f4146103df57806366748e98146103ff5780636cc82b84146104375780636dbdaae61461045757600080fd5b80634128541c1461033857806342842e0e146103585780634b1022621461036b57806355f804b31461039f57600080fd5b806318160ddd116101cc57806318160ddd146102a257806323b872dd146102c55780632a778c9b146102d85780632e37eef6146102ee57600080fd5b806301ffc9a7146101fe57806306fdde0314610233578063081812fc14610255578063095ea7b31461028d575b600080fd5b34801561020a57600080fd5b5061021e610219366004612061565b610657565b60405190151581526020015b60405180910390f35b34801561023f57600080fd5b50610248610668565b60405161022a91906120ce565b34801561026157600080fd5b506102756102703660046120e1565b610703565b6040516001600160a01b03909116815260200161022a565b6102a061029b36600461210f565b610750565b005b3480156102ae57600080fd5b506102b7610760565b60405190815260200161022a565b6102a06102d336600461213b565b610780565b3480156102e457600080fd5b506102b760685481565b3480156102fa57600080fd5b5061030e6103093660046120e1565b610984565b6040805195865260208601949094529284019190915260608301521515608082015260a00161022a565b34801561034457600080fd5b50606554610275906001600160a01b031681565b6102a061036636600461213b565b6109c8565b34801561037757600080fd5b506102b77fdcfc50123fc6ea3c803b5b1b4cbbc9ce5b81f13451fd3124e43ef593fd840d1981565b3480156103ab57600080fd5b506102a06103ba3660046121c4565b6109e8565b3480156103cb57600080fd5b506102756103da3660046120e1565b6109fd565b3480156103eb57600080fd5b506102a06103fa366004612290565b610a08565b34801561040b57600080fd5b506102b761041a36600461210f565b606c60209081526000928352604080842090915290825290205481565b34801561044357600080fd5b50606654610275906001600160a01b031681565b34801561046357600080fd5b506102a06104723660046120e1565b610c8d565b34801561048357600080fd5b506102b7610492366004612318565b610c9a565b3480156104a357600080fd5b506102a0610d02565b6102a06104ba366004612335565b610d16565b3480156104cb57600080fd5b506104d4600181565b60405160ff909116815260200161022a565b3480156104f257600080fd5b506102a061050136600461239e565b610e79565b34801561051257600080fd5b50606754610275906001600160a01b031681565b34801561053257600080fd5b506033546001600160a01b0316610275565b34801561055057600080fd5b506102a061055f366004612419565b610e8f565b34801561057057600080fd5b50610248611056565b34801561058557600080fd5b506102a061059436600461210f565b611092565b3480156105a557600080fd5b506102a06105b436600461249b565b61110b565b6102a06105c73660046124d4565b611188565b3480156105d857600080fd5b506102486105e73660046120e1565b6111d2565b3480156105f857600080fd5b506102b760695481565b34801561060e57600080fd5b5061021e61061d366004612527565b61132d565b34801561062e57600080fd5b506102a061063d366004612318565b61136a565b34801561064e57600080fd5b506102a06113e3565b6000610662826115b5565b92915050565b6060610672611603565b600201805461068090612555565b80601f01602080910402602001604051908101604052809291908181526020018280546106ac90612555565b80156106f95780601f106106ce576101008083540402835291602001916106f9565b820191906000526020600020905b8154815290600101906020018083116106dc57829003601f168201915b5050505050905090565b600061070e82611627565b61072b576040516333d1c03960e21b815260040160405180910390fd5b610733611603565b60009283526006016020525060409020546001600160a01b031690565b61075c82826001611670565b5050565b6000600161076c611603565b60010154610778611603565b540303919050565b600061078b82611725565b9050836001600160a01b0316816001600160a01b0316146107be5760405162a1148160e81b815260040160405180910390fd5b6000806107ca846117d2565b915091506107ef81876107da3390565b6001600160a01b039081169116811491141790565b61081a576107fd863361132d565b61081a57604051632ce44b5f60e11b815260040160405180910390fd5b6001600160a01b03851661084157604051633a954ecd60e21b815260040160405180910390fd5b61084e86868660016117fa565b801561085957600082555b610861611603565b6001600160a01b038716600090815260059190910160205260409020805460001901905561088d611603565b6001600160a01b03861660008181526005929092016020526040909120805460010190554260a01b17600160e11b176108c4611603565b60008681526004919091016020526040812091909155600160e11b8416900361093a57600184016108f3611603565b60008281526004919091016020526040812054900361093857610914611603565b5481146109385783610924611603565b600083815260049190910160205260409020555b505b83856001600160a01b0316876001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a45b505050505050565b606b818154811061099457600080fd5b6000918252602090912060059091020180546001820154600283015460038401546004909401549294509092909160ff1685565b6109e383838360405180602001604052806000815250611188565b505050565b6109f061188b565b606a6109e38284836125cf565b600061066282611725565b600080516020612a7a83398151915254610100900460ff16610a3d57600080516020612a7a8339815191525460ff1615610a41565b303b155b610ab85760405162461bcd60e51b815260206004820152603760248201527f455243373231415f5f496e697469616c697a61626c653a20636f6e747261637460448201527f20697320616c726561647920696e697469616c697a656400000000000000000060648201526084015b60405180910390fd5b600080516020612a7a83398151915254610100900460ff16158015610af457600080516020612a7a833981519152805461ffff19166101011790555b600054610100900460ff1615808015610b145750600054600160ff909116105b80610b2e5750303b158015610b2e575060005460ff166001145b610b915760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610aaf565b6000805460ff191660011790558015610bb4576000805461ff0019166101001790555b610bcd83604051806020016040528060008152506118e5565b610bd5611923565b610bde86611952565b6000606855606580546001600160a01b038088166001600160a01b0319928316179092556066805487841690831617905560678054928916929091169190911790558015610c66576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b508015610c8657600080516020612a7a833981519152805461ff00191690555b5050505050565b610c9561188b565b606955565b60006001600160a01b038216610cc3576040516323d3ad8160e21b815260040160405180910390fd5b6001600160401b03610cd3611603565b6005016000846001600160a01b03166001600160a01b0316815260200190815260200160002054169050919050565b610d0a61188b565b610d146000611952565b565b610d1f846119a4565b610d3c576040516332f7a9d760e21b815260040160405180910390fd5b6000606b8581548110610d5157610d5161268e565b60009182526020918290206040805160a0810182526005909302909101805483526001810154938301939093526002830154908201526003820154606082015260049091015460ff16151560808201819052909150610e40576066546040516332f1944960e21b81526001600160a01b039091169063cbc6512490610de290899030908a90899089906004016126a4565b602060405180830381865afa158015610dff573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e2391906126f8565b610e40576040516352c973a760e01b815260040160405180910390fd5b838160400151610e50919061272b565b3414610e6f576040516318f4198360e21b815260040160405180910390fd5b61097c8685611a4b565b610e8161188b565b61097c868686868686611b93565b610e9761188b565b606b5415610eab57610eab606b6000611ff6565b600081815b8181101561101c576000858583818110610ecc57610ecc61268e565b905060a00201803603810190610ee29190612742565b90508381600001511080610efa575060208101518151115b15610f1857604051632627b42d60e11b815260040160405180910390fd5b606b805460018101825560009190915281517fbd43cb8ece8cd1863bcd6082d65c5b0d25665b1ce17980f0da43c0ed545f98b4600590920291820181905560208301517fbd43cb8ece8cd1863bcd6082d65c5b0d25665b1ce17980f0da43c0ed545f98b583015560408301517fbd43cb8ece8cd1863bcd6082d65c5b0d25665b1ce17980f0da43c0ed545f98b683015560608301517fbd43cb8ece8cd1863bcd6082d65c5b0d25665b1ce17980f0da43c0ed545f98b78301556080909201517fbd43cb8ece8cd1863bcd6082d65c5b0d25665b1ce17980f0da43c0ed545f98b8909101805460ff19169115159190911790559250611015816127b7565b9050610eb0565b506040518181527ffda37b53117c5bf84916ece7449890be93cbd2842914c83f4a6864adb618654f9060200160405180910390a150505050565b606060685460001461108f5761106d606854611cab565b60405160200161107d91906127d0565b60405160208183030381529060405290505b90565b61109a61188b565b60405163a9059cbb60e01b8152336004820152602481018290526001600160a01b0383169063a9059cbb906044016020604051808303816000875af11580156110e7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109e391906126f8565b80611114611603565b336000818152600792909201602090815260408084206001600160a01b03881680865290835293819020805460ff19169515159590951790945592518415158152919290917f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a35050565b611193848484610780565b6001600160a01b0383163b156111cc576111af84848484611d3d565b6111cc576040516368d2bf6b60e11b815260040160405180910390fd5b50505050565b60606111dd82611627565b6111fa57604051632627b42d60e11b815260040160405180910390fd5b6000611204611e28565b9050805160000361122657604051806020016040528060008152509150611327565b604080516001808252818301909252600091602082018180368337019050509050816001835161125691906127fa565b815181106112665761126661268e565b602001015160f81c60f81b816000815181106112845761128461268e565b60200101906001600160f81b031916908160001a905350604051602f60f81b6020820152819060210160405160208183030381529060405280519060200120816040516020016112d4919061280d565b604051602081830303815290604052805190602001200361132057826112f986611e37565b60405160200161130a929190612829565b6040516020818303038152906040529350611324565b8293505b50505b50919050565b6000611337611603565b6001600160a01b039384166000908152600791909101602090815260408083209490951682529290925250205460ff1690565b61137261188b565b6001600160a01b0381166113d75760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610aaf565b6113e081611952565b50565b6113eb61188b565b60655460675460685460405163608ebea160e01b81526001600160a01b03928316600482015260248101919091526000928392169063608ebea1906044016040805180830381865afa158015611445573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114699190612858565b90925090506001600160a01b03821661149557604051632627b42d60e11b815260040160405180910390fd5b4760006127106114a5848461272b565b6114af9190612886565b905060006114bd82846127fa565b9050801561153b576000856001600160a01b03168260405160006040518083038185875af1925050503d8060008114611512576040519150601f19603f3d011682016040523d82523d6000602084013e611517565b606091505b505090508061153957604051631fa55c0760e11b815260040160405180910390fd5b505b8115610c86576067546040516000916001600160a01b03169084908381818185875af1925050503d806000811461158e576040519150601f19603f3d011682016040523d82523d6000602084013e611593565b606091505b505090508061097c57604051631fa55c0760e11b815260040160405180910390fd5b60006301ffc9a760e01b6001600160e01b0319831614806115e657506380ac58cd60e01b6001600160e01b03198316145b806106625750506001600160e01b031916635b5e139f60e01b1490565b7f2569078dfb4b0305704d3008e7403993ae9601b85f7ae5e742de3de8f8011c4090565b600081600111158015611641575061163d611603565b5482105b80156106625750600160e01b611655611603565b60008481526004919091016020526040902054161592915050565b600061167b836109fd565b905081156116ba57336001600160a01b038216146116ba5761169d813361132d565b6116ba576040516367d9dca160e11b815260040160405180910390fd5b836116c3611603565b6000858152600691909101602052604080822080546001600160a01b0319166001600160a01b0394851617905551859287811692908516917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259190a450505050565b6000816001116117b957611737611603565b600083815260049190910160205260408120549150600160e01b821690036117b957806000036117b457611769611603565b54821061178957604051636f96cda160e11b815260040160405180910390fd5b611791611603565b600019909201600081815260049390930160205260409092205490508015611789575b919050565b604051636f96cda160e11b815260040160405180910390fd5b60008060006117df611603565b60009485526006016020525050604090912080549092909150565b606954156111cc57606554606754606854604051634bbfc15d60e11b81526001600160a01b0392831660048201528783166024820152868316604482015260648101919091526084810184905291169063977f82ba9060a401600060405180830381600087803b15801561186d57600080fd5b505af1158015611881573d6000803e3d6000fd5b5050505050505050565b6033546001600160a01b03163314610d145760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610aaf565b600080516020612a7a83398151915254610100900460ff166119195760405162461bcd60e51b8152600401610aaf906128a8565b61075c8282611e7b565b600054610100900460ff1661194a5760405162461bcd60e51b8152600401610aaf906128fc565b610d14611eee565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b606b5460009082106119c957604051632627b42d60e11b815260040160405180910390fd5b6000606b83815481106119de576119de61268e565b60009182526020918290206040805160a08101825260059093029091018054808452600182015494840194909452600281015491830191909152600381015460608301526004015460ff161515608082015291504210801590611a445750428160200151115b9392505050565b6000611a55611603565b5490506000829003611a7a5760405163b562e8dd60e01b815260040160405180910390fd5b611a8760008483856117fa565b680100000000000000018202611a9b611603565b6001600160a01b038516600081815260059290920160205260409091208054929092019091554260a01b6001841460e11b1717611ad6611603565b600083815260049190910160205260408120919091556001600160a01b0384169083830190839083907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8180a4600183015b818114611b6057808360007fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600080a4600101611b28565b5081600003611b8157604051622e076360e81b815260040160405180910390fd5b80611b8a611603565b55506109e39050565b60685415611bb4576040516302d1671b60e41b815260040160405180910390fd5b85158015611bca57506001600160a01b03831615155b80611be657506001600160a01b038316158015611be657508515155b15611c0457604051632627b42d60e11b815260040160405180910390fd5b60655460675460405163ae98d85760e01b81526001600160a01b03918216600482015285821660248201526000604482015291169063ae98d857906064016020604051808303816000875af1158015611c61573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c859190612947565b6068556069869055606a611c9a8284836125cf565b50841561097c5761097c8486611a4b565b60606000611cb883611f1e565b60010190506000816001600160401b03811115611cd757611cd7612205565b6040519080825280601f01601f191660200182016040528015611d01576020820181803683370190505b5090508181016020015b600019016f181899199a1a9b1b9c1cb0b131b232b360811b600a86061a8153600a8504945084611d0b57509392505050565b604051630a85bd0160e11b81526000906001600160a01b0385169063150b7a0290611d72903390899088908890600401612960565b6020604051808303816000875af1925050508015611dad575060408051601f3d908101601f19168201909252611daa9181019061299d565b60015b611e0b573d808015611ddb576040519150601f19603f3d011682016040523d82523d6000602084013e611de0565b606091505b508051600003611e03576040516368d2bf6b60e11b815260040160405180910390fd5b805181602001fd5b6001600160e01b031916630a85bd0160e11b149050949350505050565b6060606a805461068090612555565b606060a06040510180604052602081039150506000815280825b600183039250600a81066030018353600a900480611e515750819003601f19909101908152919050565b600080516020612a7a83398151915254610100900460ff16611eaf5760405162461bcd60e51b8152600401610aaf906128a8565b81611eb8611603565b60020190611ec690826129ba565b5080611ed0611603565b60030190611ede90826129ba565b506001611ee9611603565b555050565b600054610100900460ff16611f155760405162461bcd60e51b8152600401610aaf906128fc565b610d1433611952565b60008072184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b8310611f5d5772184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b830492506040015b6d04ee2d6d415b85acef81000000008310611f89576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc100008310611fa757662386f26fc10000830492506010015b6305f5e1008310611fbf576305f5e100830492506008015b6127108310611fd357612710830492506004015b60648310611fe5576064830492506002015b600a83106106625760010192915050565b50805460008255600502906000526020600020908101906113e091905b808211156120475760008082556001820181905560028201819055600382015560048101805460ff19169055600501612013565b5090565b6001600160e01b0319811681146113e057600080fd5b60006020828403121561207357600080fd5b8135611a448161204b565b60005b83811015612099578181015183820152602001612081565b50506000910152565b600081518084526120ba81602086016020860161207e565b601f01601f19169290920160200192915050565b602081526000611a4460208301846120a2565b6000602082840312156120f357600080fd5b5035919050565b6001600160a01b03811681146113e057600080fd5b6000806040838503121561212257600080fd5b823561212d816120fa565b946020939093013593505050565b60008060006060848603121561215057600080fd5b833561215b816120fa565b9250602084013561216b816120fa565b929592945050506040919091013590565b60008083601f84011261218e57600080fd5b5081356001600160401b038111156121a557600080fd5b6020830191508360208285010111156121bd57600080fd5b9250929050565b600080602083850312156121d757600080fd5b82356001600160401b038111156121ed57600080fd5b6121f98582860161217c565b90969095509350505050565b634e487b7160e01b600052604160045260246000fd5b60006001600160401b038084111561223557612235612205565b604051601f8501601f19908116603f0116810190828211818310171561225d5761225d612205565b8160405280935085815286868601111561227657600080fd5b858560208301376000602087830101525050509392505050565b600080600080608085870312156122a657600080fd5b84356122b1816120fa565b935060208501356122c1816120fa565b925060408501356122d1816120fa565b915060608501356001600160401b038111156122ec57600080fd5b8501601f810187136122fd57600080fd5b61230c8782356020840161221b565b91505092959194509250565b60006020828403121561232a57600080fd5b8135611a44816120fa565b60008060008060006080868803121561234d57600080fd5b8535612358816120fa565b9450602086013593506040860135925060608601356001600160401b0381111561238157600080fd5b61238d8882890161217c565b969995985093965092949392505050565b60008060008060008060a087890312156123b757600080fd5b863595506020870135945060408701356123d0816120fa565b935060608701356123e0816120fa565b925060808701356001600160401b038111156123fb57600080fd5b61240789828a0161217c565b979a9699509497509295939492505050565b6000806020838503121561242c57600080fd5b82356001600160401b038082111561244357600080fd5b818501915085601f83011261245757600080fd5b81358181111561246657600080fd5b86602060a08302850101111561247b57600080fd5b60209290920196919550909350505050565b80151581146113e057600080fd5b600080604083850312156124ae57600080fd5b82356124b9816120fa565b915060208301356124c98161248d565b809150509250929050565b600080600080608085870312156124ea57600080fd5b84356124f5816120fa565b93506020850135612505816120fa565b92506040850135915060608501356001600160401b038111156122ec57600080fd5b6000806040838503121561253a57600080fd5b8235612545816120fa565b915060208301356124c9816120fa565b600181811c9082168061256957607f821691505b60208210810361132757634e487b7160e01b600052602260045260246000fd5b601f8211156109e357600081815260208120601f850160051c810160208610156125b05750805b601f850160051c820191505b8181101561097c578281556001016125bc565b6001600160401b038311156125e6576125e6612205565b6125fa836125f48354612555565b83612589565b6000601f84116001811461262e57600085156126165750838201355b600019600387901b1c1916600186901b178355610c86565b600083815260209020601f19861690835b8281101561265f578685013582556020948501946001909201910161263f565b508682101561267c5760001960f88860031b161c19848701351681555b505060018560011b0183555050505050565b634e487b7160e01b600052603260045260246000fd5b6001600160a01b038681168252851660208201526040810184905260806060820181905281018290526000828460a0840137600060a0848401015260a0601f19601f85011683010190509695505050505050565b60006020828403121561270a57600080fd5b8151611a448161248d565b634e487b7160e01b600052601160045260246000fd5b808202811582820484141761066257610662612715565b600060a0828403121561275457600080fd5b60405160a081018181106001600160401b038211171561277657612776612205565b80604052508235815260208301356020820152604083013560408201526060830135606082015260808301356127ab8161248d565b60808201529392505050565b6000600182016127c9576127c9612715565b5060010190565b6120a160f11b8152600082516127ed81600285016020870161207e565b9190910160020192915050565b8181038181111561066257610662612715565b6000825161281f81846020870161207e565b9190910192915050565b6000835161283b81846020880161207e565b83519083019061284f81836020880161207e565b01949350505050565b6000806040838503121561286b57600080fd5b8251612876816120fa565b6020939093015192949293505050565b6000826128a357634e487b7160e01b600052601260045260246000fd5b500490565b60208082526034908201527f455243373231415f5f496e697469616c697a61626c653a20636f6e7472616374604082015273206973206e6f7420696e697469616c697a696e6760601b606082015260800190565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b60006020828403121561295957600080fd5b5051919050565b6001600160a01b0385811682528416602082015260408101839052608060608201819052600090612993908301846120a2565b9695505050505050565b6000602082840312156129af57600080fd5b8151611a448161204b565b81516001600160401b038111156129d3576129d3612205565b6129e7816129e18454612555565b84612589565b602080601f831160018114612a1c5760008415612a045750858301515b600019600386901b1c1916600185901b17855561097c565b600085815260208120601f198616915b82811015612a4b57888601518255948401946001909101908401612a2c565b5085821015612a695787850151600019600388901b60f8161c191681555b5050505050600190811b0190555056feee151c8401928dc223602bb187aff91b9a56c7cae5476ef1b3287b085a16c85fa264697066735822122023fa41bc39b9268e59f7967d1440716167d00463f29541b323f7e476d816a66d64736f6c63430008130033", + "nonce": "0x485", + "accessList": [] + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0x177ee1ac28d6153b493f8d756cac44bc933eab4016f50a7f87bfd058a2b6bf3f", + "transactionType": "CALL", + "contractName": "TransparentUpgradeableProxy", + "contractAddress": "0x9BE7E2B13f70f170B63c0379663313EcdB527294", + "function": null, + "arguments": null, + "transaction": { + "type": "0x02", + "from": "0xd71256ec24925873ce9e9f085f89864ca05970bd", + "to": "0x9be7e2b13f70f170b63c0379663313ecdb527294", + "gas": "0xc552", + "value": "0x0", + "data": "0x641254bd000000000000000000000000ddc710e86c9c0e01852c0770c0817f59416518d7", + "nonce": "0x486", + "accessList": [] + }, + "additionalContracts": [], + "isFixedGasLimit": false + } + ], + "receipts": [ + { + "transactionHash": "0x87bbc0bb208ac803aa0b7d13ad37c9da03932cf319c9a3a0b40d0a906b001b0b", + "transactionIndex": "0x1", + "blockHash": "0x6ccd9336c9345457abd191a21a5ef21699dd729188653e3d0be0a9fa1481c887", + "blockNumber": "0xb30623", + "from": "0xD71256eC24925873cE9E9F085f89864Ca05970bD", + "to": null, + "cumulativeGasUsed": "0x15b421", + "gasUsed": "0x14fd1c", + "contractAddress": "0x072e8fB0aa2C75F727da6df3220eF676A966bcc8", + "logs": [ + { + "address": "0x072e8fB0aa2C75F727da6df3220eF676A966bcc8", + "topics": [ + "0x7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498" + ], + "data": "0x00000000000000000000000000000000000000000000000000000000000000ff", + "blockHash": "0x6ccd9336c9345457abd191a21a5ef21699dd729188653e3d0be0a9fa1481c887", + "blockNumber": "0xb30623", + "transactionHash": "0x87bbc0bb208ac803aa0b7d13ad37c9da03932cf319c9a3a0b40d0a906b001b0b", + "transactionIndex": "0x1", + "logIndex": "0x0", + "removed": false + } + ], + "status": "0x1", + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000008000400000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "type": "0x2", + "effectiveGasPrice": "0xb2d05e32" + }, + { + "transactionHash": "0xc7d9df9de8d8dd6db347a6ecffd38864a7649c4a6327fc847b1203a24872c293", + "transactionIndex": "0x2", + "blockHash": "0x6ccd9336c9345457abd191a21a5ef21699dd729188653e3d0be0a9fa1481c887", + "blockNumber": "0xb30623", + "from": "0xD71256eC24925873cE9E9F085f89864Ca05970bD", + "to": null, + "cumulativeGasUsed": "0x3c6903", + "gasUsed": "0x26b4e2", + "contractAddress": "0xdDC710e86c9C0E01852C0770C0817f59416518D7", + "logs": [ + { + "address": "0xdDC710e86c9C0E01852C0770C0817f59416518D7", + "topics": [ + "0x7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498" + ], + "data": "0x00000000000000000000000000000000000000000000000000000000000000ff", + "blockHash": "0x6ccd9336c9345457abd191a21a5ef21699dd729188653e3d0be0a9fa1481c887", + "blockNumber": "0xb30623", + "transactionHash": "0xc7d9df9de8d8dd6db347a6ecffd38864a7649c4a6327fc847b1203a24872c293", + "transactionIndex": "0x2", + "logIndex": "0x1", + "removed": false + } + ], + "status": "0x1", + "logsBloom": "0x00000000000000000000000400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000040800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "type": "0x2", + "effectiveGasPrice": "0xb2d05e32" + }, + { + "transactionHash": "0xa44071e057ccb66121a40d8e328625d15e471a621569e7f5966f630e080eec4c", + "transactionIndex": "0x3", + "blockHash": "0x6ccd9336c9345457abd191a21a5ef21699dd729188653e3d0be0a9fa1481c887", + "blockNumber": "0xb30623", + "from": "0xD71256eC24925873cE9E9F085f89864Ca05970bD", + "to": null, + "cumulativeGasUsed": "0x61bb9d", + "gasUsed": "0x25529a", + "contractAddress": "0xEeB54C912C6971cC808a2f960b6E27148a66715c", + "logs": [ + { + "address": "0xEeB54C912C6971cC808a2f960b6E27148a66715c", + "topics": [ + "0x7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498" + ], + "data": "0x00000000000000000000000000000000000000000000000000000000000000ff", + "blockHash": "0x6ccd9336c9345457abd191a21a5ef21699dd729188653e3d0be0a9fa1481c887", + "blockNumber": "0xb30623", + "transactionHash": "0xa44071e057ccb66121a40d8e328625d15e471a621569e7f5966f630e080eec4c", + "transactionIndex": "0x3", + "logIndex": "0x2", + "removed": false + } + ], + "status": "0x1", + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000400000000000100000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "type": "0x2", + "effectiveGasPrice": "0xb2d05e32" + }, + { + "transactionHash": "0x177ee1ac28d6153b493f8d756cac44bc933eab4016f50a7f87bfd058a2b6bf3f", + "transactionIndex": "0x4", + "blockHash": "0x6ccd9336c9345457abd191a21a5ef21699dd729188653e3d0be0a9fa1481c887", + "blockNumber": "0xb30623", + "from": "0xD71256eC24925873cE9E9F085f89864Ca05970bD", + "to": "0x9BE7E2B13f70f170B63c0379663313EcdB527294", + "cumulativeGasUsed": "0x624a79", + "gasUsed": "0x8edc", + "contractAddress": null, + "logs": [], + "status": "0x1", + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "type": "0x2", + "effectiveGasPrice": "0xb2d05e32" + } + ], + "libraries": [], + "pending": [], + "returns": {}, + "timestamp": 1698658702, + "chain": 84531, + "multi": false, + "commit": "cec81dc" +} \ No newline at end of file diff --git a/broadcast/deploy-upgrade.s.sol/84531/run-1698933961.json b/broadcast/deploy-upgrade.s.sol/84531/run-1698933961.json new file mode 100644 index 0000000..69beb9c --- /dev/null +++ b/broadcast/deploy-upgrade.s.sol/84531/run-1698933961.json @@ -0,0 +1,33 @@ +{ + "transactions": [ + { + "hash": "0xeabe34dcfea19a18b0dd7899af40f375eb75969788ca5ff94de8b1b3f7fd1756", + "transactionType": "CREATE", + "contractName": "AnotherCloneFactory", + "contractAddress": "0x2b0DDB1926B69337F83314537a24a2713da00fa5", + "function": null, + "arguments": null, + "transaction": { + "type": "0x02", + "from": "0xd71256ec24925873ce9e9f085f89864ca05970bd", + "gas": "0x1c9a2f", + "value": "0x0", + "data": "0x608060405234801561001057600080fd5b5061001961001e565b6100de565b600054610100900460ff161561008a5760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff90811610156100dc576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6118a5806100ed6000396000f3fe608060405234801561001057600080fd5b50600436106101da5760003560e01c80636b7e394911610104578063a217fddf116100a2578063d57f966b11610071578063d57f966b14610411578063d8f4b6fd1461041a578063e442ac181461042f578063fdbda0ec1461044257600080fd5b8063a217fddf146103ce578063bdd2fe78146103d6578063cfc5a0c0146103e9578063d547741f146103fe57600080fd5b8063832ca2f5116100de578063832ca2f5146103825780638d058ac81461039557806391d14854146103a85780639f1fb80d146103bb57600080fd5b80636b7e3949146103495780636cc82b841461035c5780637d2405bb1461036f57600080fd5b8063248a9ca31161017c57806347fcac3b1161014b57806347fcac3b146102fd5780634c7dfac314610310578063641254bd14610323578063678213491461033657600080fd5b8063248a9ca3146102935780632f2ff15d146102c457806336568abe146102d75780634128541c146102ea57600080fd5b80631c8518c2116101b85780631c8518c21461022f5780631ce6e4441461025a5780631e5b36841461026d578063229a8a821461028057600080fd5b806301ffc9a7146101df5780631459457a1461020757806318c25d8a1461021c575b600080fd5b6101f26101ed3660046113b7565b610475565b60405190151581526020015b60405180910390f35b61021a6102153660046113f8565b6104ac565b005b61021a61022a36600461145d565b61062d565b609b54610242906001600160a01b031681565b6040516001600160a01b0390911681526020016101fe565b609a54610242906001600160a01b031681565b61021a61027b366004611487565b61079c565b61024261028e366004611487565b61084e565b6102b66102a1366004611487565b60009081526065602052604090206001015490565b6040519081526020016101fe565b61021a6102d23660046114a0565b610868565b61021a6102e53660046114a0565b61088d565b609854610242906001600160a01b031681565b61024261030b36600461145d565b61090b565b6101f261031e3660046114cc565b61091f565b61021a6103313660046114cc565b610939565b61021a6103443660046114e7565b610967565b61021a6103573660046114cc565b610a4f565b609954610242906001600160a01b031681565b61021a61037d3660046114cc565b610a7f565b61021a6103903660046114cc565b610aad565b6102426103a3366004611487565b610adb565b6101f26103b63660046114a0565b610af5565b61021a6103c93660046115c6565b610b20565b6102b6600081565b609c54610242906001600160a01b031681565b6102b660008051602061183083398151915281565b61021a61040c3660046114a0565b610c4a565b6102b6609d5481565b6102b660008051602061185083398151915281565b61021a61043d36600461162c565b610c6f565b610455610450366004611487565b610d1b565b604080516001600160a01b039384168152929091166020830152016101fe565b60006001600160e01b03198216637965db0b60e01b14806104a657506301ffc9a760e01b6001600160e01b03198316145b92915050565b600054610100900460ff16158080156104cc5750600054600160ff909116105b806104e65750303b1580156104e6575060005460ff166001145b61054e5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b6000805460ff191660011790558015610571576000805461ff0019166101001790555b609880546001600160a01b03199081166001600160a01b0389811691909117909255609980548216888416179055609a80548216878416179055609b80548216868416179055609c80549091169184169190911790556000609d556105d4610d54565b6105df600033610dc1565b8015610625576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050505050565b60008051602061183083398151915261064581610dcb565b61271082111561066857604051632627b42d60e11b815260040160405180910390fd5b6001600160a01b03831661068f57604051632627b42d60e11b815260040160405180910390fd5b609c546000906106a7906001600160a01b0316610dd8565b60985460405163485cc95560e01b81526001600160a01b038781166004830152918216602482015291925082169063485cc95590604401600060405180830381600087803b1580156106f857600080fd5b505af115801561070c573d6000803e3d6000fd5b5050609854604051638353b91960e01b81526001600160a01b0388811660048301528581166024830152604482018890529091169250638353b9199150606401600060405180830381600087803b15801561076657600080fd5b505af115801561077a573d6000803e3d6000fd5b5050505061079660008051602061185083398151915285610e72565b50505050565b6000805160206118508339815191526107b481610dcb565b609b546000906107cd906001600160a01b031684610ef8565b60985460995460405163c0c53b8b60e01b81523360048201526001600160a01b039283166024820152908216604482015291925082169063c0c53b8b90606401600060405180830381600087803b15801561082757600080fd5b505af115801561083b573d6000803e3d6000fd5b505050506108498133610f95565b505050565b609a546000906104a6906001600160a01b031683306110ed565b60008281526065602052604090206001015461088381610dcb565b6108498383610e72565b6001600160a01b03811633146108fd5760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201526e103937b632b9903337b91039b2b63360891b6064820152608401610545565b6109078282611149565b5050565b60006109188383306110ed565b9392505050565b60006104a660008051602061185083398151915283610af5565b600061094481610dcb565b50609a80546001600160a01b0319166001600160a01b0392909216919091179055565b60008051602061183083398151915261097f81610dcb565b6127108211156109a257604051632627b42d60e11b815260040160405180910390fd5b6001600160a01b0384166109c957604051632627b42d60e11b815260040160405180910390fd5b609854604051638353b91960e01b81526001600160a01b03868116600483015285811660248301526044820185905290911690638353b91990606401600060405180830381600087803b158015610a1f57600080fd5b505af1158015610a33573d6000803e3d6000fd5b5050505061079660008051602061185083398151915285610868565b600080516020611830833981519152610a6781610dcb565b61090760008051602061185083398151915283610c4a565b6000610a8a81610dcb565b50609b80546001600160a01b0319166001600160a01b0392909216919091179055565b6000610ab881610dcb565b50609c80546001600160a01b0319166001600160a01b0392909216919091179055565b609b546000906104a6906001600160a01b031683306110ed565b60009182526065602090815260408084206001600160a01b0393909316845291905290205460ff1690565b600080516020611830833981519152610b3881610dcb565b609854604051630830b35960e31b81526001600160a01b038681166004830152909116906341859ac890602401602060405180830381865afa158015610b82573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ba69190611671565b610bc357604051634f3bd42760e01b815260040160405180910390fd5b6000610bcf8684610ef8565b60985460995460405163197a393d60e21b81529293506001600160a01b03808516936365e8e4f493610c0e938b93918216929116908a906004016116e3565b600060405180830381600087803b158015610c2857600080fd5b505af1158015610c3c573d6000803e3d6000fd5b505050506106258186610f95565b600082815260656020526040902060010154610c6581610dcb565b6108498383611149565b600080516020611850833981519152610c8781610dcb565b609a54600090610ca0906001600160a01b031684610ef8565b60985460995460405163197a393d60e21b81529293506001600160a01b03808516936365e8e4f493610cdf933393918216929116908a906004016116e3565b600060405180830381600087803b158015610cf957600080fd5b505af1158015610d0d573d6000803e3d6000fd5b505050506107968133610f95565b60978181548110610d2b57600080fd5b6000918252602090912060029091020180546001909101546001600160a01b0391821692501682565b600054610100900460ff16610dbf5760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b6064820152608401610545565b565b6109078282610e72565b610dd581336111b0565b50565b6000763d602d80600a3d3981f3363d3d373d3d3d363d730000008260601b60e81c176000526e5af43d82803e903d91602b57fd5bf38260781b17602052603760096000f090506001600160a01b038116610e6d5760405162461bcd60e51b8152602060048201526016602482015275115490cc4c4d8dce8818dc99585d194819985a5b195960521b6044820152606401610545565b919050565b610e7c8282610af5565b6109075760008281526065602090815260408083206001600160a01b03851684529091529020805460ff19166001179055610eb43390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b6000763d602d80600a3d3981f3363d3d373d3d3d363d730000008360601b60e81c176000526e5af43d82803e903d91602b57fd5bf38360781b1760205281603760096000f590506001600160a01b0381166104a65760405162461bcd60e51b815260206004820152601760248201527f455243313136373a2063726561746532206661696c65640000000000000000006044820152606401610545565b6040805180820182526001600160a01b0380851682528381166020830190815260978054600181018255600091909152925160029093027f354a83ed9988f79f6038d4c7a7dadbad8af32f4ad6df893e0e5807a1b1944ff9810180549484166001600160a01b031995861617905590517f354a83ed9988f79f6038d4c7a7dadbad8af32f4ad6df893e0e5807a1b1944ffa9091018054918316919093161790915560985491516331c3aba360e21b815291169063c70eae8c9061106b9085906004016001600160a01b0391909116815260200190565b600060405180830381600087803b15801561108557600080fd5b505af1158015611099573d6000803e3d6000fd5b50505050609d600081546110ac90611737565b909155506040516001600160a01b0380831691908416907f5d0de243db1669e3a7056744cd715c625f0c1c348736c2c2d53d0ddebff1a6c790600090a35050565b60405160388101919091526f5af43d82803e903d91602b57fd5bf3ff60248201526014810192909252733d602d80600a3d3981f3363d3d373d3d3d363d73825260588201526037600c8201206078820152605560439091012090565b6111538282610af5565b156109075760008281526065602090815260408083206001600160a01b0385168085529252808320805460ff1916905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b6111ba8282610af5565b610907576111c781611209565b6111d283602061121b565b6040516020016111e3929190611750565b60408051601f198184030181529082905262461bcd60e51b8252610545916004016117c5565b60606104a66001600160a01b03831660145b6060600061122a8360026117d8565b6112359060026117ef565b67ffffffffffffffff81111561124d5761124d611523565b6040519080825280601f01601f191660200182016040528015611277576020820181803683370190505b509050600360fc1b8160008151811061129257611292611802565b60200101906001600160f81b031916908160001a905350600f60fb1b816001815181106112c1576112c1611802565b60200101906001600160f81b031916908160001a90535060006112e58460026117d8565b6112f09060016117ef565b90505b6001811115611368576f181899199a1a9b1b9c1cb0b131b232b360811b85600f166010811061132457611324611802565b1a60f81b82828151811061133a5761133a611802565b60200101906001600160f81b031916908160001a90535060049490941c9361136181611818565b90506112f3565b5083156109185760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e746044820152606401610545565b6000602082840312156113c957600080fd5b81356001600160e01b03198116811461091857600080fd5b80356001600160a01b0381168114610e6d57600080fd5b600080600080600060a0868803121561141057600080fd5b611419866113e1565b9450611427602087016113e1565b9350611435604087016113e1565b9250611443606087016113e1565b9150611451608087016113e1565b90509295509295909350565b6000806040838503121561147057600080fd5b611479836113e1565b946020939093013593505050565b60006020828403121561149957600080fd5b5035919050565b600080604083850312156114b357600080fd5b823591506114c3602084016113e1565b90509250929050565b6000602082840312156114de57600080fd5b610918826113e1565b6000806000606084860312156114fc57600080fd5b611505846113e1565b9250611513602085016113e1565b9150604084013590509250925092565b634e487b7160e01b600052604160045260246000fd5b600082601f83011261154a57600080fd5b813567ffffffffffffffff8082111561156557611565611523565b604051601f8301601f19908116603f0116810190828211818310171561158d5761158d611523565b816040528381528660208588010111156115a657600080fd5b836020870160208301376000602085830101528094505050505092915050565b600080600080608085870312156115dc57600080fd5b6115e5856113e1565b93506115f3602086016113e1565b9250604085013567ffffffffffffffff81111561160f57600080fd5b61161b87828801611539565b949793965093946060013593505050565b6000806040838503121561163f57600080fd5b823567ffffffffffffffff81111561165657600080fd5b61166285828601611539565b95602094909401359450505050565b60006020828403121561168357600080fd5b8151801515811461091857600080fd5b60005b838110156116ae578181015183820152602001611696565b50506000910152565b600081518084526116cf816020860160208601611693565b601f01601f19169290920160200192915050565b6001600160a01b038581168252848116602083015283166040820152608060608201819052600090611717908301846116b7565b9695505050505050565b634e487b7160e01b600052601160045260246000fd5b60006001820161174957611749611721565b5060010190565b7f416363657373436f6e74726f6c3a206163636f756e7420000000000000000000815260008351611788816017850160208801611693565b7001034b99036b4b9b9b4b733903937b6329607d1b60179184019182015283516117b9816028840160208801611693565b01602801949350505050565b60208152600061091860208301846116b7565b80820281158282048414176104a6576104a6611721565b808201808211156104a6576104a6611721565b634e487b7160e01b600052603260045260246000fd5b60008161182757611827611721565b50600019019056fe2ceaf29507f118cd1f62635058556b732f02f44e3a3a133e73c60008a777fd3e0ac90c257048ef1c3e387c26d4a99bde06894efbcbff862dc1885c3a9319308aa264697066735822122048db67ee1ffecdefc42751a373454d0957c4a30cb81daab953553f592408248e64736f6c63430008130033", + "nonce": "0x496", + "accessList": [] + }, + "additionalContracts": [], + "isFixedGasLimit": false + } + ], + "receipts": [], + "libraries": [], + "pending": [ + "0xeabe34dcfea19a18b0dd7899af40f375eb75969788ca5ff94de8b1b3f7fd1756" + ], + "returns": {}, + "timestamp": 1698933961, + "chain": 84531, + "multi": false, + "commit": "3a8a171" +} \ No newline at end of file diff --git a/broadcast/deploy-upgrade.s.sol/84531/run-1698933967.json b/broadcast/deploy-upgrade.s.sol/84531/run-1698933967.json new file mode 100644 index 0000000..9aa28aa --- /dev/null +++ b/broadcast/deploy-upgrade.s.sol/84531/run-1698933967.json @@ -0,0 +1,62 @@ +{ + "transactions": [ + { + "hash": "0xeabe34dcfea19a18b0dd7899af40f375eb75969788ca5ff94de8b1b3f7fd1756", + "transactionType": "CREATE", + "contractName": "AnotherCloneFactory", + "contractAddress": "0x2b0DDB1926B69337F83314537a24a2713da00fa5", + "function": null, + "arguments": null, + "transaction": { + "type": "0x02", + "from": "0xd71256ec24925873ce9e9f085f89864ca05970bd", + "gas": "0x1c9a2f", + "value": "0x0", + "data": "0x608060405234801561001057600080fd5b5061001961001e565b6100de565b600054610100900460ff161561008a5760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff90811610156100dc576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6118a5806100ed6000396000f3fe608060405234801561001057600080fd5b50600436106101da5760003560e01c80636b7e394911610104578063a217fddf116100a2578063d57f966b11610071578063d57f966b14610411578063d8f4b6fd1461041a578063e442ac181461042f578063fdbda0ec1461044257600080fd5b8063a217fddf146103ce578063bdd2fe78146103d6578063cfc5a0c0146103e9578063d547741f146103fe57600080fd5b8063832ca2f5116100de578063832ca2f5146103825780638d058ac81461039557806391d14854146103a85780639f1fb80d146103bb57600080fd5b80636b7e3949146103495780636cc82b841461035c5780637d2405bb1461036f57600080fd5b8063248a9ca31161017c57806347fcac3b1161014b57806347fcac3b146102fd5780634c7dfac314610310578063641254bd14610323578063678213491461033657600080fd5b8063248a9ca3146102935780632f2ff15d146102c457806336568abe146102d75780634128541c146102ea57600080fd5b80631c8518c2116101b85780631c8518c21461022f5780631ce6e4441461025a5780631e5b36841461026d578063229a8a821461028057600080fd5b806301ffc9a7146101df5780631459457a1461020757806318c25d8a1461021c575b600080fd5b6101f26101ed3660046113b7565b610475565b60405190151581526020015b60405180910390f35b61021a6102153660046113f8565b6104ac565b005b61021a61022a36600461145d565b61062d565b609b54610242906001600160a01b031681565b6040516001600160a01b0390911681526020016101fe565b609a54610242906001600160a01b031681565b61021a61027b366004611487565b61079c565b61024261028e366004611487565b61084e565b6102b66102a1366004611487565b60009081526065602052604090206001015490565b6040519081526020016101fe565b61021a6102d23660046114a0565b610868565b61021a6102e53660046114a0565b61088d565b609854610242906001600160a01b031681565b61024261030b36600461145d565b61090b565b6101f261031e3660046114cc565b61091f565b61021a6103313660046114cc565b610939565b61021a6103443660046114e7565b610967565b61021a6103573660046114cc565b610a4f565b609954610242906001600160a01b031681565b61021a61037d3660046114cc565b610a7f565b61021a6103903660046114cc565b610aad565b6102426103a3366004611487565b610adb565b6101f26103b63660046114a0565b610af5565b61021a6103c93660046115c6565b610b20565b6102b6600081565b609c54610242906001600160a01b031681565b6102b660008051602061183083398151915281565b61021a61040c3660046114a0565b610c4a565b6102b6609d5481565b6102b660008051602061185083398151915281565b61021a61043d36600461162c565b610c6f565b610455610450366004611487565b610d1b565b604080516001600160a01b039384168152929091166020830152016101fe565b60006001600160e01b03198216637965db0b60e01b14806104a657506301ffc9a760e01b6001600160e01b03198316145b92915050565b600054610100900460ff16158080156104cc5750600054600160ff909116105b806104e65750303b1580156104e6575060005460ff166001145b61054e5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b6000805460ff191660011790558015610571576000805461ff0019166101001790555b609880546001600160a01b03199081166001600160a01b0389811691909117909255609980548216888416179055609a80548216878416179055609b80548216868416179055609c80549091169184169190911790556000609d556105d4610d54565b6105df600033610dc1565b8015610625576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050505050565b60008051602061183083398151915261064581610dcb565b61271082111561066857604051632627b42d60e11b815260040160405180910390fd5b6001600160a01b03831661068f57604051632627b42d60e11b815260040160405180910390fd5b609c546000906106a7906001600160a01b0316610dd8565b60985460405163485cc95560e01b81526001600160a01b038781166004830152918216602482015291925082169063485cc95590604401600060405180830381600087803b1580156106f857600080fd5b505af115801561070c573d6000803e3d6000fd5b5050609854604051638353b91960e01b81526001600160a01b0388811660048301528581166024830152604482018890529091169250638353b9199150606401600060405180830381600087803b15801561076657600080fd5b505af115801561077a573d6000803e3d6000fd5b5050505061079660008051602061185083398151915285610e72565b50505050565b6000805160206118508339815191526107b481610dcb565b609b546000906107cd906001600160a01b031684610ef8565b60985460995460405163c0c53b8b60e01b81523360048201526001600160a01b039283166024820152908216604482015291925082169063c0c53b8b90606401600060405180830381600087803b15801561082757600080fd5b505af115801561083b573d6000803e3d6000fd5b505050506108498133610f95565b505050565b609a546000906104a6906001600160a01b031683306110ed565b60008281526065602052604090206001015461088381610dcb565b6108498383610e72565b6001600160a01b03811633146108fd5760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201526e103937b632b9903337b91039b2b63360891b6064820152608401610545565b6109078282611149565b5050565b60006109188383306110ed565b9392505050565b60006104a660008051602061185083398151915283610af5565b600061094481610dcb565b50609a80546001600160a01b0319166001600160a01b0392909216919091179055565b60008051602061183083398151915261097f81610dcb565b6127108211156109a257604051632627b42d60e11b815260040160405180910390fd5b6001600160a01b0384166109c957604051632627b42d60e11b815260040160405180910390fd5b609854604051638353b91960e01b81526001600160a01b03868116600483015285811660248301526044820185905290911690638353b91990606401600060405180830381600087803b158015610a1f57600080fd5b505af1158015610a33573d6000803e3d6000fd5b5050505061079660008051602061185083398151915285610868565b600080516020611830833981519152610a6781610dcb565b61090760008051602061185083398151915283610c4a565b6000610a8a81610dcb565b50609b80546001600160a01b0319166001600160a01b0392909216919091179055565b6000610ab881610dcb565b50609c80546001600160a01b0319166001600160a01b0392909216919091179055565b609b546000906104a6906001600160a01b031683306110ed565b60009182526065602090815260408084206001600160a01b0393909316845291905290205460ff1690565b600080516020611830833981519152610b3881610dcb565b609854604051630830b35960e31b81526001600160a01b038681166004830152909116906341859ac890602401602060405180830381865afa158015610b82573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ba69190611671565b610bc357604051634f3bd42760e01b815260040160405180910390fd5b6000610bcf8684610ef8565b60985460995460405163197a393d60e21b81529293506001600160a01b03808516936365e8e4f493610c0e938b93918216929116908a906004016116e3565b600060405180830381600087803b158015610c2857600080fd5b505af1158015610c3c573d6000803e3d6000fd5b505050506106258186610f95565b600082815260656020526040902060010154610c6581610dcb565b6108498383611149565b600080516020611850833981519152610c8781610dcb565b609a54600090610ca0906001600160a01b031684610ef8565b60985460995460405163197a393d60e21b81529293506001600160a01b03808516936365e8e4f493610cdf933393918216929116908a906004016116e3565b600060405180830381600087803b158015610cf957600080fd5b505af1158015610d0d573d6000803e3d6000fd5b505050506107968133610f95565b60978181548110610d2b57600080fd5b6000918252602090912060029091020180546001909101546001600160a01b0391821692501682565b600054610100900460ff16610dbf5760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b6064820152608401610545565b565b6109078282610e72565b610dd581336111b0565b50565b6000763d602d80600a3d3981f3363d3d373d3d3d363d730000008260601b60e81c176000526e5af43d82803e903d91602b57fd5bf38260781b17602052603760096000f090506001600160a01b038116610e6d5760405162461bcd60e51b8152602060048201526016602482015275115490cc4c4d8dce8818dc99585d194819985a5b195960521b6044820152606401610545565b919050565b610e7c8282610af5565b6109075760008281526065602090815260408083206001600160a01b03851684529091529020805460ff19166001179055610eb43390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b6000763d602d80600a3d3981f3363d3d373d3d3d363d730000008360601b60e81c176000526e5af43d82803e903d91602b57fd5bf38360781b1760205281603760096000f590506001600160a01b0381166104a65760405162461bcd60e51b815260206004820152601760248201527f455243313136373a2063726561746532206661696c65640000000000000000006044820152606401610545565b6040805180820182526001600160a01b0380851682528381166020830190815260978054600181018255600091909152925160029093027f354a83ed9988f79f6038d4c7a7dadbad8af32f4ad6df893e0e5807a1b1944ff9810180549484166001600160a01b031995861617905590517f354a83ed9988f79f6038d4c7a7dadbad8af32f4ad6df893e0e5807a1b1944ffa9091018054918316919093161790915560985491516331c3aba360e21b815291169063c70eae8c9061106b9085906004016001600160a01b0391909116815260200190565b600060405180830381600087803b15801561108557600080fd5b505af1158015611099573d6000803e3d6000fd5b50505050609d600081546110ac90611737565b909155506040516001600160a01b0380831691908416907f5d0de243db1669e3a7056744cd715c625f0c1c348736c2c2d53d0ddebff1a6c790600090a35050565b60405160388101919091526f5af43d82803e903d91602b57fd5bf3ff60248201526014810192909252733d602d80600a3d3981f3363d3d373d3d3d363d73825260588201526037600c8201206078820152605560439091012090565b6111538282610af5565b156109075760008281526065602090815260408083206001600160a01b0385168085529252808320805460ff1916905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b6111ba8282610af5565b610907576111c781611209565b6111d283602061121b565b6040516020016111e3929190611750565b60408051601f198184030181529082905262461bcd60e51b8252610545916004016117c5565b60606104a66001600160a01b03831660145b6060600061122a8360026117d8565b6112359060026117ef565b67ffffffffffffffff81111561124d5761124d611523565b6040519080825280601f01601f191660200182016040528015611277576020820181803683370190505b509050600360fc1b8160008151811061129257611292611802565b60200101906001600160f81b031916908160001a905350600f60fb1b816001815181106112c1576112c1611802565b60200101906001600160f81b031916908160001a90535060006112e58460026117d8565b6112f09060016117ef565b90505b6001811115611368576f181899199a1a9b1b9c1cb0b131b232b360811b85600f166010811061132457611324611802565b1a60f81b82828151811061133a5761133a611802565b60200101906001600160f81b031916908160001a90535060049490941c9361136181611818565b90506112f3565b5083156109185760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e746044820152606401610545565b6000602082840312156113c957600080fd5b81356001600160e01b03198116811461091857600080fd5b80356001600160a01b0381168114610e6d57600080fd5b600080600080600060a0868803121561141057600080fd5b611419866113e1565b9450611427602087016113e1565b9350611435604087016113e1565b9250611443606087016113e1565b9150611451608087016113e1565b90509295509295909350565b6000806040838503121561147057600080fd5b611479836113e1565b946020939093013593505050565b60006020828403121561149957600080fd5b5035919050565b600080604083850312156114b357600080fd5b823591506114c3602084016113e1565b90509250929050565b6000602082840312156114de57600080fd5b610918826113e1565b6000806000606084860312156114fc57600080fd5b611505846113e1565b9250611513602085016113e1565b9150604084013590509250925092565b634e487b7160e01b600052604160045260246000fd5b600082601f83011261154a57600080fd5b813567ffffffffffffffff8082111561156557611565611523565b604051601f8301601f19908116603f0116810190828211818310171561158d5761158d611523565b816040528381528660208588010111156115a657600080fd5b836020870160208301376000602085830101528094505050505092915050565b600080600080608085870312156115dc57600080fd5b6115e5856113e1565b93506115f3602086016113e1565b9250604085013567ffffffffffffffff81111561160f57600080fd5b61161b87828801611539565b949793965093946060013593505050565b6000806040838503121561163f57600080fd5b823567ffffffffffffffff81111561165657600080fd5b61166285828601611539565b95602094909401359450505050565b60006020828403121561168357600080fd5b8151801515811461091857600080fd5b60005b838110156116ae578181015183820152602001611696565b50506000910152565b600081518084526116cf816020860160208601611693565b601f01601f19169290920160200192915050565b6001600160a01b038581168252848116602083015283166040820152608060608201819052600090611717908301846116b7565b9695505050505050565b634e487b7160e01b600052601160045260246000fd5b60006001820161174957611749611721565b5060010190565b7f416363657373436f6e74726f6c3a206163636f756e7420000000000000000000815260008351611788816017850160208801611693565b7001034b99036b4b9b9b4b733903937b6329607d1b60179184019182015283516117b9816028840160208801611693565b01602801949350505050565b60208152600061091860208301846116b7565b80820281158282048414176104a6576104a6611721565b808201808211156104a6576104a6611721565b634e487b7160e01b600052603260045260246000fd5b60008161182757611827611721565b50600019019056fe2ceaf29507f118cd1f62635058556b732f02f44e3a3a133e73c60008a777fd3e0ac90c257048ef1c3e387c26d4a99bde06894efbcbff862dc1885c3a9319308aa264697066735822122048db67ee1ffecdefc42751a373454d0957c4a30cb81daab953553f592408248e64736f6c63430008130033", + "nonce": "0x496", + "accessList": [] + }, + "additionalContracts": [], + "isFixedGasLimit": false + } + ], + "receipts": [ + { + "transactionHash": "0xeabe34dcfea19a18b0dd7899af40f375eb75969788ca5ff94de8b1b3f7fd1756", + "transactionIndex": "0x1", + "blockHash": "0x2d84bda58b7e6ee53c8fb9ab50110ea7fc81c3f8aa23f9aed11d7a8eab56f725", + "blockNumber": "0xb51fdd", + "from": "0xD71256eC24925873cE9E9F085f89864Ca05970bD", + "to": null, + "cumulativeGasUsed": "0x16b76c", + "gasUsed": "0x160073", + "contractAddress": "0x2b0DDB1926B69337F83314537a24a2713da00fa5", + "logs": [ + { + "address": "0x2b0DDB1926B69337F83314537a24a2713da00fa5", + "topics": [ + "0x7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498" + ], + "data": "0x00000000000000000000000000000000000000000000000000000000000000ff", + "blockHash": "0x2d84bda58b7e6ee53c8fb9ab50110ea7fc81c3f8aa23f9aed11d7a8eab56f725", + "blockNumber": "0xb51fdd", + "transactionHash": "0xeabe34dcfea19a18b0dd7899af40f375eb75969788ca5ff94de8b1b3f7fd1756", + "transactionIndex": "0x1", + "logIndex": "0x0", + "removed": false + } + ], + "status": "0x1", + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000400000000000000000000000000000100000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000", + "type": "0x2", + "effectiveGasPrice": "0xb2d05e32" + } + ], + "libraries": [], + "pending": [], + "returns": {}, + "timestamp": 1698933967, + "chain": 84531, + "multi": false, + "commit": "3a8a171" +} \ No newline at end of file diff --git a/broadcast/deploy-upgrade.s.sol/84531/run-1698933984.json b/broadcast/deploy-upgrade.s.sol/84531/run-1698933984.json new file mode 100644 index 0000000..b63fcca --- /dev/null +++ b/broadcast/deploy-upgrade.s.sol/84531/run-1698933984.json @@ -0,0 +1,62 @@ +{ + "transactions": [ + { + "hash": "0xeabe34dcfea19a18b0dd7899af40f375eb75969788ca5ff94de8b1b3f7fd1756", + "transactionType": "CREATE", + "contractName": "AnotherCloneFactory", + "contractAddress": "0x2b0DDB1926B69337F83314537a24a2713da00fa5", + "function": null, + "arguments": null, + "transaction": { + "type": "0x02", + "from": "0xd71256ec24925873ce9e9f085f89864ca05970bd", + "gas": "0x1c9a2f", + "value": "0x0", + "data": "0x608060405234801561001057600080fd5b5061001961001e565b6100de565b600054610100900460ff161561008a5760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff90811610156100dc576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6118a5806100ed6000396000f3fe608060405234801561001057600080fd5b50600436106101da5760003560e01c80636b7e394911610104578063a217fddf116100a2578063d57f966b11610071578063d57f966b14610411578063d8f4b6fd1461041a578063e442ac181461042f578063fdbda0ec1461044257600080fd5b8063a217fddf146103ce578063bdd2fe78146103d6578063cfc5a0c0146103e9578063d547741f146103fe57600080fd5b8063832ca2f5116100de578063832ca2f5146103825780638d058ac81461039557806391d14854146103a85780639f1fb80d146103bb57600080fd5b80636b7e3949146103495780636cc82b841461035c5780637d2405bb1461036f57600080fd5b8063248a9ca31161017c57806347fcac3b1161014b57806347fcac3b146102fd5780634c7dfac314610310578063641254bd14610323578063678213491461033657600080fd5b8063248a9ca3146102935780632f2ff15d146102c457806336568abe146102d75780634128541c146102ea57600080fd5b80631c8518c2116101b85780631c8518c21461022f5780631ce6e4441461025a5780631e5b36841461026d578063229a8a821461028057600080fd5b806301ffc9a7146101df5780631459457a1461020757806318c25d8a1461021c575b600080fd5b6101f26101ed3660046113b7565b610475565b60405190151581526020015b60405180910390f35b61021a6102153660046113f8565b6104ac565b005b61021a61022a36600461145d565b61062d565b609b54610242906001600160a01b031681565b6040516001600160a01b0390911681526020016101fe565b609a54610242906001600160a01b031681565b61021a61027b366004611487565b61079c565b61024261028e366004611487565b61084e565b6102b66102a1366004611487565b60009081526065602052604090206001015490565b6040519081526020016101fe565b61021a6102d23660046114a0565b610868565b61021a6102e53660046114a0565b61088d565b609854610242906001600160a01b031681565b61024261030b36600461145d565b61090b565b6101f261031e3660046114cc565b61091f565b61021a6103313660046114cc565b610939565b61021a6103443660046114e7565b610967565b61021a6103573660046114cc565b610a4f565b609954610242906001600160a01b031681565b61021a61037d3660046114cc565b610a7f565b61021a6103903660046114cc565b610aad565b6102426103a3366004611487565b610adb565b6101f26103b63660046114a0565b610af5565b61021a6103c93660046115c6565b610b20565b6102b6600081565b609c54610242906001600160a01b031681565b6102b660008051602061183083398151915281565b61021a61040c3660046114a0565b610c4a565b6102b6609d5481565b6102b660008051602061185083398151915281565b61021a61043d36600461162c565b610c6f565b610455610450366004611487565b610d1b565b604080516001600160a01b039384168152929091166020830152016101fe565b60006001600160e01b03198216637965db0b60e01b14806104a657506301ffc9a760e01b6001600160e01b03198316145b92915050565b600054610100900460ff16158080156104cc5750600054600160ff909116105b806104e65750303b1580156104e6575060005460ff166001145b61054e5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b6000805460ff191660011790558015610571576000805461ff0019166101001790555b609880546001600160a01b03199081166001600160a01b0389811691909117909255609980548216888416179055609a80548216878416179055609b80548216868416179055609c80549091169184169190911790556000609d556105d4610d54565b6105df600033610dc1565b8015610625576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050505050565b60008051602061183083398151915261064581610dcb565b61271082111561066857604051632627b42d60e11b815260040160405180910390fd5b6001600160a01b03831661068f57604051632627b42d60e11b815260040160405180910390fd5b609c546000906106a7906001600160a01b0316610dd8565b60985460405163485cc95560e01b81526001600160a01b038781166004830152918216602482015291925082169063485cc95590604401600060405180830381600087803b1580156106f857600080fd5b505af115801561070c573d6000803e3d6000fd5b5050609854604051638353b91960e01b81526001600160a01b0388811660048301528581166024830152604482018890529091169250638353b9199150606401600060405180830381600087803b15801561076657600080fd5b505af115801561077a573d6000803e3d6000fd5b5050505061079660008051602061185083398151915285610e72565b50505050565b6000805160206118508339815191526107b481610dcb565b609b546000906107cd906001600160a01b031684610ef8565b60985460995460405163c0c53b8b60e01b81523360048201526001600160a01b039283166024820152908216604482015291925082169063c0c53b8b90606401600060405180830381600087803b15801561082757600080fd5b505af115801561083b573d6000803e3d6000fd5b505050506108498133610f95565b505050565b609a546000906104a6906001600160a01b031683306110ed565b60008281526065602052604090206001015461088381610dcb565b6108498383610e72565b6001600160a01b03811633146108fd5760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201526e103937b632b9903337b91039b2b63360891b6064820152608401610545565b6109078282611149565b5050565b60006109188383306110ed565b9392505050565b60006104a660008051602061185083398151915283610af5565b600061094481610dcb565b50609a80546001600160a01b0319166001600160a01b0392909216919091179055565b60008051602061183083398151915261097f81610dcb565b6127108211156109a257604051632627b42d60e11b815260040160405180910390fd5b6001600160a01b0384166109c957604051632627b42d60e11b815260040160405180910390fd5b609854604051638353b91960e01b81526001600160a01b03868116600483015285811660248301526044820185905290911690638353b91990606401600060405180830381600087803b158015610a1f57600080fd5b505af1158015610a33573d6000803e3d6000fd5b5050505061079660008051602061185083398151915285610868565b600080516020611830833981519152610a6781610dcb565b61090760008051602061185083398151915283610c4a565b6000610a8a81610dcb565b50609b80546001600160a01b0319166001600160a01b0392909216919091179055565b6000610ab881610dcb565b50609c80546001600160a01b0319166001600160a01b0392909216919091179055565b609b546000906104a6906001600160a01b031683306110ed565b60009182526065602090815260408084206001600160a01b0393909316845291905290205460ff1690565b600080516020611830833981519152610b3881610dcb565b609854604051630830b35960e31b81526001600160a01b038681166004830152909116906341859ac890602401602060405180830381865afa158015610b82573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ba69190611671565b610bc357604051634f3bd42760e01b815260040160405180910390fd5b6000610bcf8684610ef8565b60985460995460405163197a393d60e21b81529293506001600160a01b03808516936365e8e4f493610c0e938b93918216929116908a906004016116e3565b600060405180830381600087803b158015610c2857600080fd5b505af1158015610c3c573d6000803e3d6000fd5b505050506106258186610f95565b600082815260656020526040902060010154610c6581610dcb565b6108498383611149565b600080516020611850833981519152610c8781610dcb565b609a54600090610ca0906001600160a01b031684610ef8565b60985460995460405163197a393d60e21b81529293506001600160a01b03808516936365e8e4f493610cdf933393918216929116908a906004016116e3565b600060405180830381600087803b158015610cf957600080fd5b505af1158015610d0d573d6000803e3d6000fd5b505050506107968133610f95565b60978181548110610d2b57600080fd5b6000918252602090912060029091020180546001909101546001600160a01b0391821692501682565b600054610100900460ff16610dbf5760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b6064820152608401610545565b565b6109078282610e72565b610dd581336111b0565b50565b6000763d602d80600a3d3981f3363d3d373d3d3d363d730000008260601b60e81c176000526e5af43d82803e903d91602b57fd5bf38260781b17602052603760096000f090506001600160a01b038116610e6d5760405162461bcd60e51b8152602060048201526016602482015275115490cc4c4d8dce8818dc99585d194819985a5b195960521b6044820152606401610545565b919050565b610e7c8282610af5565b6109075760008281526065602090815260408083206001600160a01b03851684529091529020805460ff19166001179055610eb43390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b6000763d602d80600a3d3981f3363d3d373d3d3d363d730000008360601b60e81c176000526e5af43d82803e903d91602b57fd5bf38360781b1760205281603760096000f590506001600160a01b0381166104a65760405162461bcd60e51b815260206004820152601760248201527f455243313136373a2063726561746532206661696c65640000000000000000006044820152606401610545565b6040805180820182526001600160a01b0380851682528381166020830190815260978054600181018255600091909152925160029093027f354a83ed9988f79f6038d4c7a7dadbad8af32f4ad6df893e0e5807a1b1944ff9810180549484166001600160a01b031995861617905590517f354a83ed9988f79f6038d4c7a7dadbad8af32f4ad6df893e0e5807a1b1944ffa9091018054918316919093161790915560985491516331c3aba360e21b815291169063c70eae8c9061106b9085906004016001600160a01b0391909116815260200190565b600060405180830381600087803b15801561108557600080fd5b505af1158015611099573d6000803e3d6000fd5b50505050609d600081546110ac90611737565b909155506040516001600160a01b0380831691908416907f5d0de243db1669e3a7056744cd715c625f0c1c348736c2c2d53d0ddebff1a6c790600090a35050565b60405160388101919091526f5af43d82803e903d91602b57fd5bf3ff60248201526014810192909252733d602d80600a3d3981f3363d3d373d3d3d363d73825260588201526037600c8201206078820152605560439091012090565b6111538282610af5565b156109075760008281526065602090815260408083206001600160a01b0385168085529252808320805460ff1916905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b6111ba8282610af5565b610907576111c781611209565b6111d283602061121b565b6040516020016111e3929190611750565b60408051601f198184030181529082905262461bcd60e51b8252610545916004016117c5565b60606104a66001600160a01b03831660145b6060600061122a8360026117d8565b6112359060026117ef565b67ffffffffffffffff81111561124d5761124d611523565b6040519080825280601f01601f191660200182016040528015611277576020820181803683370190505b509050600360fc1b8160008151811061129257611292611802565b60200101906001600160f81b031916908160001a905350600f60fb1b816001815181106112c1576112c1611802565b60200101906001600160f81b031916908160001a90535060006112e58460026117d8565b6112f09060016117ef565b90505b6001811115611368576f181899199a1a9b1b9c1cb0b131b232b360811b85600f166010811061132457611324611802565b1a60f81b82828151811061133a5761133a611802565b60200101906001600160f81b031916908160001a90535060049490941c9361136181611818565b90506112f3565b5083156109185760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e746044820152606401610545565b6000602082840312156113c957600080fd5b81356001600160e01b03198116811461091857600080fd5b80356001600160a01b0381168114610e6d57600080fd5b600080600080600060a0868803121561141057600080fd5b611419866113e1565b9450611427602087016113e1565b9350611435604087016113e1565b9250611443606087016113e1565b9150611451608087016113e1565b90509295509295909350565b6000806040838503121561147057600080fd5b611479836113e1565b946020939093013593505050565b60006020828403121561149957600080fd5b5035919050565b600080604083850312156114b357600080fd5b823591506114c3602084016113e1565b90509250929050565b6000602082840312156114de57600080fd5b610918826113e1565b6000806000606084860312156114fc57600080fd5b611505846113e1565b9250611513602085016113e1565b9150604084013590509250925092565b634e487b7160e01b600052604160045260246000fd5b600082601f83011261154a57600080fd5b813567ffffffffffffffff8082111561156557611565611523565b604051601f8301601f19908116603f0116810190828211818310171561158d5761158d611523565b816040528381528660208588010111156115a657600080fd5b836020870160208301376000602085830101528094505050505092915050565b600080600080608085870312156115dc57600080fd5b6115e5856113e1565b93506115f3602086016113e1565b9250604085013567ffffffffffffffff81111561160f57600080fd5b61161b87828801611539565b949793965093946060013593505050565b6000806040838503121561163f57600080fd5b823567ffffffffffffffff81111561165657600080fd5b61166285828601611539565b95602094909401359450505050565b60006020828403121561168357600080fd5b8151801515811461091857600080fd5b60005b838110156116ae578181015183820152602001611696565b50506000910152565b600081518084526116cf816020860160208601611693565b601f01601f19169290920160200192915050565b6001600160a01b038581168252848116602083015283166040820152608060608201819052600090611717908301846116b7565b9695505050505050565b634e487b7160e01b600052601160045260246000fd5b60006001820161174957611749611721565b5060010190565b7f416363657373436f6e74726f6c3a206163636f756e7420000000000000000000815260008351611788816017850160208801611693565b7001034b99036b4b9b9b4b733903937b6329607d1b60179184019182015283516117b9816028840160208801611693565b01602801949350505050565b60208152600061091860208301846116b7565b80820281158282048414176104a6576104a6611721565b808201808211156104a6576104a6611721565b634e487b7160e01b600052603260045260246000fd5b60008161182757611827611721565b50600019019056fe2ceaf29507f118cd1f62635058556b732f02f44e3a3a133e73c60008a777fd3e0ac90c257048ef1c3e387c26d4a99bde06894efbcbff862dc1885c3a9319308aa264697066735822122048db67ee1ffecdefc42751a373454d0957c4a30cb81daab953553f592408248e64736f6c63430008130033", + "nonce": "0x496", + "accessList": [] + }, + "additionalContracts": [], + "isFixedGasLimit": false + } + ], + "receipts": [ + { + "transactionHash": "0xeabe34dcfea19a18b0dd7899af40f375eb75969788ca5ff94de8b1b3f7fd1756", + "transactionIndex": "0x1", + "blockHash": "0x2d84bda58b7e6ee53c8fb9ab50110ea7fc81c3f8aa23f9aed11d7a8eab56f725", + "blockNumber": "0xb51fdd", + "from": "0xD71256eC24925873cE9E9F085f89864Ca05970bD", + "to": null, + "cumulativeGasUsed": "0x16b76c", + "gasUsed": "0x160073", + "contractAddress": "0x2b0DDB1926B69337F83314537a24a2713da00fa5", + "logs": [ + { + "address": "0x2b0DDB1926B69337F83314537a24a2713da00fa5", + "topics": [ + "0x7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498" + ], + "data": "0x00000000000000000000000000000000000000000000000000000000000000ff", + "blockHash": "0x2d84bda58b7e6ee53c8fb9ab50110ea7fc81c3f8aa23f9aed11d7a8eab56f725", + "blockNumber": "0xb51fdd", + "transactionHash": "0xeabe34dcfea19a18b0dd7899af40f375eb75969788ca5ff94de8b1b3f7fd1756", + "transactionIndex": "0x1", + "logIndex": "0x0", + "removed": false + } + ], + "status": "0x1", + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000400000000000000000000000000000100000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000", + "type": "0x2", + "effectiveGasPrice": "0xb2d05e32" + } + ], + "libraries": [], + "pending": [], + "returns": {}, + "timestamp": 1698933984, + "chain": 84531, + "multi": false, + "commit": "3a8a171" +} \ No newline at end of file diff --git a/broadcast/deploy-upgrade.s.sol/84531/run-latest.json b/broadcast/deploy-upgrade.s.sol/84531/run-latest.json new file mode 100644 index 0000000..b63fcca --- /dev/null +++ b/broadcast/deploy-upgrade.s.sol/84531/run-latest.json @@ -0,0 +1,62 @@ +{ + "transactions": [ + { + "hash": "0xeabe34dcfea19a18b0dd7899af40f375eb75969788ca5ff94de8b1b3f7fd1756", + "transactionType": "CREATE", + "contractName": "AnotherCloneFactory", + "contractAddress": "0x2b0DDB1926B69337F83314537a24a2713da00fa5", + "function": null, + "arguments": null, + "transaction": { + "type": "0x02", + "from": "0xd71256ec24925873ce9e9f085f89864ca05970bd", + "gas": "0x1c9a2f", + "value": "0x0", + "data": "0x608060405234801561001057600080fd5b5061001961001e565b6100de565b600054610100900460ff161561008a5760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff90811610156100dc576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6118a5806100ed6000396000f3fe608060405234801561001057600080fd5b50600436106101da5760003560e01c80636b7e394911610104578063a217fddf116100a2578063d57f966b11610071578063d57f966b14610411578063d8f4b6fd1461041a578063e442ac181461042f578063fdbda0ec1461044257600080fd5b8063a217fddf146103ce578063bdd2fe78146103d6578063cfc5a0c0146103e9578063d547741f146103fe57600080fd5b8063832ca2f5116100de578063832ca2f5146103825780638d058ac81461039557806391d14854146103a85780639f1fb80d146103bb57600080fd5b80636b7e3949146103495780636cc82b841461035c5780637d2405bb1461036f57600080fd5b8063248a9ca31161017c57806347fcac3b1161014b57806347fcac3b146102fd5780634c7dfac314610310578063641254bd14610323578063678213491461033657600080fd5b8063248a9ca3146102935780632f2ff15d146102c457806336568abe146102d75780634128541c146102ea57600080fd5b80631c8518c2116101b85780631c8518c21461022f5780631ce6e4441461025a5780631e5b36841461026d578063229a8a821461028057600080fd5b806301ffc9a7146101df5780631459457a1461020757806318c25d8a1461021c575b600080fd5b6101f26101ed3660046113b7565b610475565b60405190151581526020015b60405180910390f35b61021a6102153660046113f8565b6104ac565b005b61021a61022a36600461145d565b61062d565b609b54610242906001600160a01b031681565b6040516001600160a01b0390911681526020016101fe565b609a54610242906001600160a01b031681565b61021a61027b366004611487565b61079c565b61024261028e366004611487565b61084e565b6102b66102a1366004611487565b60009081526065602052604090206001015490565b6040519081526020016101fe565b61021a6102d23660046114a0565b610868565b61021a6102e53660046114a0565b61088d565b609854610242906001600160a01b031681565b61024261030b36600461145d565b61090b565b6101f261031e3660046114cc565b61091f565b61021a6103313660046114cc565b610939565b61021a6103443660046114e7565b610967565b61021a6103573660046114cc565b610a4f565b609954610242906001600160a01b031681565b61021a61037d3660046114cc565b610a7f565b61021a6103903660046114cc565b610aad565b6102426103a3366004611487565b610adb565b6101f26103b63660046114a0565b610af5565b61021a6103c93660046115c6565b610b20565b6102b6600081565b609c54610242906001600160a01b031681565b6102b660008051602061183083398151915281565b61021a61040c3660046114a0565b610c4a565b6102b6609d5481565b6102b660008051602061185083398151915281565b61021a61043d36600461162c565b610c6f565b610455610450366004611487565b610d1b565b604080516001600160a01b039384168152929091166020830152016101fe565b60006001600160e01b03198216637965db0b60e01b14806104a657506301ffc9a760e01b6001600160e01b03198316145b92915050565b600054610100900460ff16158080156104cc5750600054600160ff909116105b806104e65750303b1580156104e6575060005460ff166001145b61054e5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b6000805460ff191660011790558015610571576000805461ff0019166101001790555b609880546001600160a01b03199081166001600160a01b0389811691909117909255609980548216888416179055609a80548216878416179055609b80548216868416179055609c80549091169184169190911790556000609d556105d4610d54565b6105df600033610dc1565b8015610625576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050505050565b60008051602061183083398151915261064581610dcb565b61271082111561066857604051632627b42d60e11b815260040160405180910390fd5b6001600160a01b03831661068f57604051632627b42d60e11b815260040160405180910390fd5b609c546000906106a7906001600160a01b0316610dd8565b60985460405163485cc95560e01b81526001600160a01b038781166004830152918216602482015291925082169063485cc95590604401600060405180830381600087803b1580156106f857600080fd5b505af115801561070c573d6000803e3d6000fd5b5050609854604051638353b91960e01b81526001600160a01b0388811660048301528581166024830152604482018890529091169250638353b9199150606401600060405180830381600087803b15801561076657600080fd5b505af115801561077a573d6000803e3d6000fd5b5050505061079660008051602061185083398151915285610e72565b50505050565b6000805160206118508339815191526107b481610dcb565b609b546000906107cd906001600160a01b031684610ef8565b60985460995460405163c0c53b8b60e01b81523360048201526001600160a01b039283166024820152908216604482015291925082169063c0c53b8b90606401600060405180830381600087803b15801561082757600080fd5b505af115801561083b573d6000803e3d6000fd5b505050506108498133610f95565b505050565b609a546000906104a6906001600160a01b031683306110ed565b60008281526065602052604090206001015461088381610dcb565b6108498383610e72565b6001600160a01b03811633146108fd5760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201526e103937b632b9903337b91039b2b63360891b6064820152608401610545565b6109078282611149565b5050565b60006109188383306110ed565b9392505050565b60006104a660008051602061185083398151915283610af5565b600061094481610dcb565b50609a80546001600160a01b0319166001600160a01b0392909216919091179055565b60008051602061183083398151915261097f81610dcb565b6127108211156109a257604051632627b42d60e11b815260040160405180910390fd5b6001600160a01b0384166109c957604051632627b42d60e11b815260040160405180910390fd5b609854604051638353b91960e01b81526001600160a01b03868116600483015285811660248301526044820185905290911690638353b91990606401600060405180830381600087803b158015610a1f57600080fd5b505af1158015610a33573d6000803e3d6000fd5b5050505061079660008051602061185083398151915285610868565b600080516020611830833981519152610a6781610dcb565b61090760008051602061185083398151915283610c4a565b6000610a8a81610dcb565b50609b80546001600160a01b0319166001600160a01b0392909216919091179055565b6000610ab881610dcb565b50609c80546001600160a01b0319166001600160a01b0392909216919091179055565b609b546000906104a6906001600160a01b031683306110ed565b60009182526065602090815260408084206001600160a01b0393909316845291905290205460ff1690565b600080516020611830833981519152610b3881610dcb565b609854604051630830b35960e31b81526001600160a01b038681166004830152909116906341859ac890602401602060405180830381865afa158015610b82573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ba69190611671565b610bc357604051634f3bd42760e01b815260040160405180910390fd5b6000610bcf8684610ef8565b60985460995460405163197a393d60e21b81529293506001600160a01b03808516936365e8e4f493610c0e938b93918216929116908a906004016116e3565b600060405180830381600087803b158015610c2857600080fd5b505af1158015610c3c573d6000803e3d6000fd5b505050506106258186610f95565b600082815260656020526040902060010154610c6581610dcb565b6108498383611149565b600080516020611850833981519152610c8781610dcb565b609a54600090610ca0906001600160a01b031684610ef8565b60985460995460405163197a393d60e21b81529293506001600160a01b03808516936365e8e4f493610cdf933393918216929116908a906004016116e3565b600060405180830381600087803b158015610cf957600080fd5b505af1158015610d0d573d6000803e3d6000fd5b505050506107968133610f95565b60978181548110610d2b57600080fd5b6000918252602090912060029091020180546001909101546001600160a01b0391821692501682565b600054610100900460ff16610dbf5760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b6064820152608401610545565b565b6109078282610e72565b610dd581336111b0565b50565b6000763d602d80600a3d3981f3363d3d373d3d3d363d730000008260601b60e81c176000526e5af43d82803e903d91602b57fd5bf38260781b17602052603760096000f090506001600160a01b038116610e6d5760405162461bcd60e51b8152602060048201526016602482015275115490cc4c4d8dce8818dc99585d194819985a5b195960521b6044820152606401610545565b919050565b610e7c8282610af5565b6109075760008281526065602090815260408083206001600160a01b03851684529091529020805460ff19166001179055610eb43390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b6000763d602d80600a3d3981f3363d3d373d3d3d363d730000008360601b60e81c176000526e5af43d82803e903d91602b57fd5bf38360781b1760205281603760096000f590506001600160a01b0381166104a65760405162461bcd60e51b815260206004820152601760248201527f455243313136373a2063726561746532206661696c65640000000000000000006044820152606401610545565b6040805180820182526001600160a01b0380851682528381166020830190815260978054600181018255600091909152925160029093027f354a83ed9988f79f6038d4c7a7dadbad8af32f4ad6df893e0e5807a1b1944ff9810180549484166001600160a01b031995861617905590517f354a83ed9988f79f6038d4c7a7dadbad8af32f4ad6df893e0e5807a1b1944ffa9091018054918316919093161790915560985491516331c3aba360e21b815291169063c70eae8c9061106b9085906004016001600160a01b0391909116815260200190565b600060405180830381600087803b15801561108557600080fd5b505af1158015611099573d6000803e3d6000fd5b50505050609d600081546110ac90611737565b909155506040516001600160a01b0380831691908416907f5d0de243db1669e3a7056744cd715c625f0c1c348736c2c2d53d0ddebff1a6c790600090a35050565b60405160388101919091526f5af43d82803e903d91602b57fd5bf3ff60248201526014810192909252733d602d80600a3d3981f3363d3d373d3d3d363d73825260588201526037600c8201206078820152605560439091012090565b6111538282610af5565b156109075760008281526065602090815260408083206001600160a01b0385168085529252808320805460ff1916905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b6111ba8282610af5565b610907576111c781611209565b6111d283602061121b565b6040516020016111e3929190611750565b60408051601f198184030181529082905262461bcd60e51b8252610545916004016117c5565b60606104a66001600160a01b03831660145b6060600061122a8360026117d8565b6112359060026117ef565b67ffffffffffffffff81111561124d5761124d611523565b6040519080825280601f01601f191660200182016040528015611277576020820181803683370190505b509050600360fc1b8160008151811061129257611292611802565b60200101906001600160f81b031916908160001a905350600f60fb1b816001815181106112c1576112c1611802565b60200101906001600160f81b031916908160001a90535060006112e58460026117d8565b6112f09060016117ef565b90505b6001811115611368576f181899199a1a9b1b9c1cb0b131b232b360811b85600f166010811061132457611324611802565b1a60f81b82828151811061133a5761133a611802565b60200101906001600160f81b031916908160001a90535060049490941c9361136181611818565b90506112f3565b5083156109185760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e746044820152606401610545565b6000602082840312156113c957600080fd5b81356001600160e01b03198116811461091857600080fd5b80356001600160a01b0381168114610e6d57600080fd5b600080600080600060a0868803121561141057600080fd5b611419866113e1565b9450611427602087016113e1565b9350611435604087016113e1565b9250611443606087016113e1565b9150611451608087016113e1565b90509295509295909350565b6000806040838503121561147057600080fd5b611479836113e1565b946020939093013593505050565b60006020828403121561149957600080fd5b5035919050565b600080604083850312156114b357600080fd5b823591506114c3602084016113e1565b90509250929050565b6000602082840312156114de57600080fd5b610918826113e1565b6000806000606084860312156114fc57600080fd5b611505846113e1565b9250611513602085016113e1565b9150604084013590509250925092565b634e487b7160e01b600052604160045260246000fd5b600082601f83011261154a57600080fd5b813567ffffffffffffffff8082111561156557611565611523565b604051601f8301601f19908116603f0116810190828211818310171561158d5761158d611523565b816040528381528660208588010111156115a657600080fd5b836020870160208301376000602085830101528094505050505092915050565b600080600080608085870312156115dc57600080fd5b6115e5856113e1565b93506115f3602086016113e1565b9250604085013567ffffffffffffffff81111561160f57600080fd5b61161b87828801611539565b949793965093946060013593505050565b6000806040838503121561163f57600080fd5b823567ffffffffffffffff81111561165657600080fd5b61166285828601611539565b95602094909401359450505050565b60006020828403121561168357600080fd5b8151801515811461091857600080fd5b60005b838110156116ae578181015183820152602001611696565b50506000910152565b600081518084526116cf816020860160208601611693565b601f01601f19169290920160200192915050565b6001600160a01b038581168252848116602083015283166040820152608060608201819052600090611717908301846116b7565b9695505050505050565b634e487b7160e01b600052601160045260246000fd5b60006001820161174957611749611721565b5060010190565b7f416363657373436f6e74726f6c3a206163636f756e7420000000000000000000815260008351611788816017850160208801611693565b7001034b99036b4b9b9b4b733903937b6329607d1b60179184019182015283516117b9816028840160208801611693565b01602801949350505050565b60208152600061091860208301846116b7565b80820281158282048414176104a6576104a6611721565b808201808211156104a6576104a6611721565b634e487b7160e01b600052603260045260246000fd5b60008161182757611827611721565b50600019019056fe2ceaf29507f118cd1f62635058556b732f02f44e3a3a133e73c60008a777fd3e0ac90c257048ef1c3e387c26d4a99bde06894efbcbff862dc1885c3a9319308aa264697066735822122048db67ee1ffecdefc42751a373454d0957c4a30cb81daab953553f592408248e64736f6c63430008130033", + "nonce": "0x496", + "accessList": [] + }, + "additionalContracts": [], + "isFixedGasLimit": false + } + ], + "receipts": [ + { + "transactionHash": "0xeabe34dcfea19a18b0dd7899af40f375eb75969788ca5ff94de8b1b3f7fd1756", + "transactionIndex": "0x1", + "blockHash": "0x2d84bda58b7e6ee53c8fb9ab50110ea7fc81c3f8aa23f9aed11d7a8eab56f725", + "blockNumber": "0xb51fdd", + "from": "0xD71256eC24925873cE9E9F085f89864Ca05970bD", + "to": null, + "cumulativeGasUsed": "0x16b76c", + "gasUsed": "0x160073", + "contractAddress": "0x2b0DDB1926B69337F83314537a24a2713da00fa5", + "logs": [ + { + "address": "0x2b0DDB1926B69337F83314537a24a2713da00fa5", + "topics": [ + "0x7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498" + ], + "data": "0x00000000000000000000000000000000000000000000000000000000000000ff", + "blockHash": "0x2d84bda58b7e6ee53c8fb9ab50110ea7fc81c3f8aa23f9aed11d7a8eab56f725", + "blockNumber": "0xb51fdd", + "transactionHash": "0xeabe34dcfea19a18b0dd7899af40f375eb75969788ca5ff94de8b1b3f7fd1756", + "transactionIndex": "0x1", + "logIndex": "0x0", + "removed": false + } + ], + "status": "0x1", + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000400000000000000000000000000000100000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000", + "type": "0x2", + "effectiveGasPrice": "0xb2d05e32" + } + ], + "libraries": [], + "pending": [], + "returns": {}, + "timestamp": 1698933984, + "chain": 84531, + "multi": false, + "commit": "3a8a171" +} \ No newline at end of file diff --git a/deployment/84531/ABDataRegistry/address b/deployment/84531/ABDataRegistry/address index 7e5c6e2..9163b91 100644 --- a/deployment/84531/ABDataRegistry/address +++ b/deployment/84531/ABDataRegistry/address @@ -1 +1 @@ -0xba1Bb5a85AD1e3a8fC4DEb8369b092BFe061A2d3 \ No newline at end of file +0x7a9718F6d09e7A6ce84aFef32Ba68965b796a29D \ No newline at end of file diff --git a/deployment/84531/ABVerifier/address b/deployment/84531/ABVerifier/address index 2d7fe42..8fdd817 100644 --- a/deployment/84531/ABVerifier/address +++ b/deployment/84531/ABVerifier/address @@ -1 +1 @@ -0x98385696FD5487628ECB2d722c9d69116a0c5Af3 \ No newline at end of file +0x9e71972F69d67fb133B78036a4ba16F85968e0fa \ No newline at end of file diff --git a/deployment/84531/AnotherCloneFactory/address b/deployment/84531/AnotherCloneFactory/address index d010d98..6bcb78c 100644 --- a/deployment/84531/AnotherCloneFactory/address +++ b/deployment/84531/AnotherCloneFactory/address @@ -1 +1 @@ -0x4E393A0DD0331cE371d4d6fdd0B97E4b02450514 \ No newline at end of file +0x9BE7E2B13f70f170B63c0379663313EcdB527294 \ No newline at end of file diff --git a/forge-cache/deploy-upgrade.s.sol/84531/dry-run/run-1698658617.json b/forge-cache/deploy-upgrade.s.sol/84531/dry-run/run-1698658617.json new file mode 100644 index 0000000..3566a86 --- /dev/null +++ b/forge-cache/deploy-upgrade.s.sol/84531/dry-run/run-1698658617.json @@ -0,0 +1,16 @@ +{ + "transactions": [ + { + "rpc": "https://goerli.base.org" + }, + { + "rpc": "https://goerli.base.org" + }, + { + "rpc": "https://goerli.base.org" + }, + { + "rpc": "https://goerli.base.org" + } + ] +} \ No newline at end of file diff --git a/forge-cache/deploy-upgrade.s.sol/84531/dry-run/run-latest.json b/forge-cache/deploy-upgrade.s.sol/84531/dry-run/run-latest.json new file mode 100644 index 0000000..3566a86 --- /dev/null +++ b/forge-cache/deploy-upgrade.s.sol/84531/dry-run/run-latest.json @@ -0,0 +1,16 @@ +{ + "transactions": [ + { + "rpc": "https://goerli.base.org" + }, + { + "rpc": "https://goerli.base.org" + }, + { + "rpc": "https://goerli.base.org" + }, + { + "rpc": "https://goerli.base.org" + } + ] +} \ No newline at end of file diff --git a/forge-cache/deploy-upgrade.s.sol/84531/run-1698658644.json b/forge-cache/deploy-upgrade.s.sol/84531/run-1698658644.json new file mode 100644 index 0000000..3566a86 --- /dev/null +++ b/forge-cache/deploy-upgrade.s.sol/84531/run-1698658644.json @@ -0,0 +1,16 @@ +{ + "transactions": [ + { + "rpc": "https://goerli.base.org" + }, + { + "rpc": "https://goerli.base.org" + }, + { + "rpc": "https://goerli.base.org" + }, + { + "rpc": "https://goerli.base.org" + } + ] +} \ No newline at end of file diff --git a/forge-cache/deploy-upgrade.s.sol/84531/run-1698658651.json b/forge-cache/deploy-upgrade.s.sol/84531/run-1698658651.json new file mode 100644 index 0000000..3566a86 --- /dev/null +++ b/forge-cache/deploy-upgrade.s.sol/84531/run-1698658651.json @@ -0,0 +1,16 @@ +{ + "transactions": [ + { + "rpc": "https://goerli.base.org" + }, + { + "rpc": "https://goerli.base.org" + }, + { + "rpc": "https://goerli.base.org" + }, + { + "rpc": "https://goerli.base.org" + } + ] +} \ No newline at end of file diff --git a/forge-cache/deploy-upgrade.s.sol/84531/run-1698658702.json b/forge-cache/deploy-upgrade.s.sol/84531/run-1698658702.json new file mode 100644 index 0000000..3566a86 --- /dev/null +++ b/forge-cache/deploy-upgrade.s.sol/84531/run-1698658702.json @@ -0,0 +1,16 @@ +{ + "transactions": [ + { + "rpc": "https://goerli.base.org" + }, + { + "rpc": "https://goerli.base.org" + }, + { + "rpc": "https://goerli.base.org" + }, + { + "rpc": "https://goerli.base.org" + } + ] +} \ No newline at end of file diff --git a/forge-cache/deploy-upgrade.s.sol/84531/run-1698933961.json b/forge-cache/deploy-upgrade.s.sol/84531/run-1698933961.json new file mode 100644 index 0000000..6b3debb --- /dev/null +++ b/forge-cache/deploy-upgrade.s.sol/84531/run-1698933961.json @@ -0,0 +1,7 @@ +{ + "transactions": [ + { + "rpc": "https://goerli.base.org" + } + ] +} \ No newline at end of file diff --git a/forge-cache/deploy-upgrade.s.sol/84531/run-1698933967.json b/forge-cache/deploy-upgrade.s.sol/84531/run-1698933967.json new file mode 100644 index 0000000..6b3debb --- /dev/null +++ b/forge-cache/deploy-upgrade.s.sol/84531/run-1698933967.json @@ -0,0 +1,7 @@ +{ + "transactions": [ + { + "rpc": "https://goerli.base.org" + } + ] +} \ No newline at end of file diff --git a/forge-cache/deploy-upgrade.s.sol/84531/run-1698933984.json b/forge-cache/deploy-upgrade.s.sol/84531/run-1698933984.json new file mode 100644 index 0000000..6b3debb --- /dev/null +++ b/forge-cache/deploy-upgrade.s.sol/84531/run-1698933984.json @@ -0,0 +1,7 @@ +{ + "transactions": [ + { + "rpc": "https://goerli.base.org" + } + ] +} \ No newline at end of file diff --git a/forge-cache/deploy-upgrade.s.sol/84531/run-latest.json b/forge-cache/deploy-upgrade.s.sol/84531/run-latest.json new file mode 100644 index 0000000..6b3debb --- /dev/null +++ b/forge-cache/deploy-upgrade.s.sol/84531/run-latest.json @@ -0,0 +1,7 @@ +{ + "transactions": [ + { + "rpc": "https://goerli.base.org" + } + ] +} \ No newline at end of file diff --git a/forge-cache/solidity-files-cache.json b/forge-cache/solidity-files-cache.json index 9b85118..969c372 100644 --- a/forge-cache/solidity-files-cache.json +++ b/forge-cache/solidity-files-cache.json @@ -22,6 +22,7 @@ "runs": 200 }, "metadata": { + "useLiteralContent": false, "bytecodeHash": "ipfs", "appendCBOR": true }, @@ -62,6 +63,7 @@ "runs": 200 }, "metadata": { + "useLiteralContent": false, "bytecodeHash": "ipfs", "appendCBOR": true }, @@ -110,6 +112,7 @@ "runs": 200 }, "metadata": { + "useLiteralContent": false, "bytecodeHash": "ipfs", "appendCBOR": true }, @@ -152,6 +155,7 @@ "runs": 200 }, "metadata": { + "useLiteralContent": false, "bytecodeHash": "ipfs", "appendCBOR": true }, @@ -192,6 +196,7 @@ "runs": 200 }, "metadata": { + "useLiteralContent": false, "bytecodeHash": "ipfs", "appendCBOR": true }, @@ -232,6 +237,7 @@ "runs": 200 }, "metadata": { + "useLiteralContent": false, "bytecodeHash": "ipfs", "appendCBOR": true }, @@ -272,6 +278,7 @@ "runs": 200 }, "metadata": { + "useLiteralContent": false, "bytecodeHash": "ipfs", "appendCBOR": true }, @@ -321,6 +328,7 @@ "runs": 200 }, "metadata": { + "useLiteralContent": false, "bytecodeHash": "ipfs", "appendCBOR": true }, @@ -373,6 +381,7 @@ "runs": 200 }, "metadata": { + "useLiteralContent": false, "bytecodeHash": "ipfs", "appendCBOR": true }, @@ -416,6 +425,7 @@ "runs": 200 }, "metadata": { + "useLiteralContent": false, "bytecodeHash": "ipfs", "appendCBOR": true }, @@ -458,6 +468,7 @@ "runs": 200 }, "metadata": { + "useLiteralContent": false, "bytecodeHash": "ipfs", "appendCBOR": true }, @@ -504,6 +515,7 @@ "runs": 200 }, "metadata": { + "useLiteralContent": false, "bytecodeHash": "ipfs", "appendCBOR": true }, @@ -544,6 +556,7 @@ "runs": 200 }, "metadata": { + "useLiteralContent": false, "bytecodeHash": "ipfs", "appendCBOR": true }, @@ -584,6 +597,7 @@ "runs": 200 }, "metadata": { + "useLiteralContent": false, "bytecodeHash": "ipfs", "appendCBOR": true }, @@ -626,6 +640,7 @@ "runs": 200 }, "metadata": { + "useLiteralContent": false, "bytecodeHash": "ipfs", "appendCBOR": true }, @@ -666,6 +681,7 @@ "runs": 200 }, "metadata": { + "useLiteralContent": false, "bytecodeHash": "ipfs", "appendCBOR": true }, @@ -711,6 +727,7 @@ "runs": 200 }, "metadata": { + "useLiteralContent": false, "bytecodeHash": "ipfs", "appendCBOR": true }, @@ -753,6 +770,7 @@ "runs": 200 }, "metadata": { + "useLiteralContent": false, "bytecodeHash": "ipfs", "appendCBOR": true }, @@ -796,6 +814,7 @@ "runs": 200 }, "metadata": { + "useLiteralContent": false, "bytecodeHash": "ipfs", "appendCBOR": true }, @@ -853,6 +872,7 @@ "runs": 200 }, "metadata": { + "useLiteralContent": false, "bytecodeHash": "ipfs", "appendCBOR": true }, @@ -896,6 +916,7 @@ "runs": 200 }, "metadata": { + "useLiteralContent": false, "bytecodeHash": "ipfs", "appendCBOR": true }, @@ -936,6 +957,7 @@ "runs": 200 }, "metadata": { + "useLiteralContent": false, "bytecodeHash": "ipfs", "appendCBOR": true }, @@ -976,6 +998,7 @@ "runs": 200 }, "metadata": { + "useLiteralContent": false, "bytecodeHash": "ipfs", "appendCBOR": true }, @@ -1016,6 +1039,7 @@ "runs": 200 }, "metadata": { + "useLiteralContent": false, "bytecodeHash": "ipfs", "appendCBOR": true }, @@ -1058,6 +1082,7 @@ "runs": 200 }, "metadata": { + "useLiteralContent": false, "bytecodeHash": "ipfs", "appendCBOR": true }, @@ -1098,6 +1123,7 @@ "runs": 200 }, "metadata": { + "useLiteralContent": false, "bytecodeHash": "ipfs", "appendCBOR": true }, @@ -1138,6 +1164,7 @@ "runs": 200 }, "metadata": { + "useLiteralContent": false, "bytecodeHash": "ipfs", "appendCBOR": true }, @@ -1185,6 +1212,7 @@ "runs": 200 }, "metadata": { + "useLiteralContent": false, "bytecodeHash": "ipfs", "appendCBOR": true }, @@ -1230,6 +1258,7 @@ "runs": 200 }, "metadata": { + "useLiteralContent": false, "bytecodeHash": "ipfs", "appendCBOR": true }, @@ -1270,6 +1299,7 @@ "runs": 200 }, "metadata": { + "useLiteralContent": false, "bytecodeHash": "ipfs", "appendCBOR": true }, @@ -1310,6 +1340,7 @@ "runs": 200 }, "metadata": { + "useLiteralContent": false, "bytecodeHash": "ipfs", "appendCBOR": true }, @@ -1361,6 +1392,7 @@ "runs": 200 }, "metadata": { + "useLiteralContent": false, "bytecodeHash": "ipfs", "appendCBOR": true }, @@ -1409,6 +1441,7 @@ "runs": 200 }, "metadata": { + "useLiteralContent": false, "bytecodeHash": "ipfs", "appendCBOR": true }, @@ -1451,6 +1484,7 @@ "runs": 200 }, "metadata": { + "useLiteralContent": false, "bytecodeHash": "ipfs", "appendCBOR": true }, @@ -1499,6 +1533,7 @@ "runs": 200 }, "metadata": { + "useLiteralContent": false, "bytecodeHash": "ipfs", "appendCBOR": true }, @@ -1541,6 +1576,7 @@ "runs": 200 }, "metadata": { + "useLiteralContent": false, "bytecodeHash": "ipfs", "appendCBOR": true }, @@ -1583,6 +1619,7 @@ "runs": 200 }, "metadata": { + "useLiteralContent": false, "bytecodeHash": "ipfs", "appendCBOR": true }, @@ -1626,6 +1663,7 @@ "runs": 200 }, "metadata": { + "useLiteralContent": false, "bytecodeHash": "ipfs", "appendCBOR": true }, @@ -1671,6 +1709,7 @@ "runs": 200 }, "metadata": { + "useLiteralContent": false, "bytecodeHash": "ipfs", "appendCBOR": true }, @@ -1715,6 +1754,7 @@ "runs": 200 }, "metadata": { + "useLiteralContent": false, "bytecodeHash": "ipfs", "appendCBOR": true }, @@ -1759,6 +1799,7 @@ "runs": 200 }, "metadata": { + "useLiteralContent": false, "bytecodeHash": "ipfs", "appendCBOR": true }, @@ -1799,6 +1840,7 @@ "runs": 200 }, "metadata": { + "useLiteralContent": false, "bytecodeHash": "ipfs", "appendCBOR": true }, @@ -1841,6 +1883,7 @@ "runs": 200 }, "metadata": { + "useLiteralContent": false, "bytecodeHash": "ipfs", "appendCBOR": true }, @@ -1881,6 +1924,7 @@ "runs": 200 }, "metadata": { + "useLiteralContent": false, "bytecodeHash": "ipfs", "appendCBOR": true }, @@ -1925,6 +1969,7 @@ "runs": 200 }, "metadata": { + "useLiteralContent": false, "bytecodeHash": "ipfs", "appendCBOR": true }, @@ -1975,6 +2020,7 @@ "runs": 200 }, "metadata": { + "useLiteralContent": false, "bytecodeHash": "ipfs", "appendCBOR": true }, @@ -2017,6 +2063,7 @@ "runs": 200 }, "metadata": { + "useLiteralContent": false, "bytecodeHash": "ipfs", "appendCBOR": true }, @@ -2057,6 +2104,7 @@ "runs": 200 }, "metadata": { + "useLiteralContent": false, "bytecodeHash": "ipfs", "appendCBOR": true }, @@ -2100,6 +2148,7 @@ "runs": 200 }, "metadata": { + "useLiteralContent": false, "bytecodeHash": "ipfs", "appendCBOR": true }, @@ -2140,6 +2189,7 @@ "runs": 200 }, "metadata": { + "useLiteralContent": false, "bytecodeHash": "ipfs", "appendCBOR": true }, @@ -2180,6 +2230,7 @@ "runs": 200 }, "metadata": { + "useLiteralContent": false, "bytecodeHash": "ipfs", "appendCBOR": true }, @@ -2220,6 +2271,7 @@ "runs": 200 }, "metadata": { + "useLiteralContent": false, "bytecodeHash": "ipfs", "appendCBOR": true }, @@ -2260,6 +2312,7 @@ "runs": 200 }, "metadata": { + "useLiteralContent": false, "bytecodeHash": "ipfs", "appendCBOR": true }, @@ -2300,6 +2353,7 @@ "runs": 200 }, "metadata": { + "useLiteralContent": false, "bytecodeHash": "ipfs", "appendCBOR": true }, @@ -2340,6 +2394,7 @@ "runs": 200 }, "metadata": { + "useLiteralContent": false, "bytecodeHash": "ipfs", "appendCBOR": true }, @@ -2382,6 +2437,7 @@ "runs": 200 }, "metadata": { + "useLiteralContent": false, "bytecodeHash": "ipfs", "appendCBOR": true }, @@ -2425,6 +2481,7 @@ "runs": 200 }, "metadata": { + "useLiteralContent": false, "bytecodeHash": "ipfs", "appendCBOR": true }, @@ -2467,6 +2524,7 @@ "runs": 200 }, "metadata": { + "useLiteralContent": false, "bytecodeHash": "ipfs", "appendCBOR": true }, @@ -2507,6 +2565,7 @@ "runs": 200 }, "metadata": { + "useLiteralContent": false, "bytecodeHash": "ipfs", "appendCBOR": true }, @@ -2547,6 +2606,7 @@ "runs": 200 }, "metadata": { + "useLiteralContent": false, "bytecodeHash": "ipfs", "appendCBOR": true }, @@ -2587,6 +2647,7 @@ "runs": 200 }, "metadata": { + "useLiteralContent": false, "bytecodeHash": "ipfs", "appendCBOR": true }, @@ -2627,6 +2688,7 @@ "runs": 200 }, "metadata": { + "useLiteralContent": false, "bytecodeHash": "ipfs", "appendCBOR": true }, @@ -2667,6 +2729,7 @@ "runs": 200 }, "metadata": { + "useLiteralContent": false, "bytecodeHash": "ipfs", "appendCBOR": true }, @@ -2716,6 +2779,7 @@ "runs": 200 }, "metadata": { + "useLiteralContent": false, "bytecodeHash": "ipfs", "appendCBOR": true }, @@ -2756,6 +2820,7 @@ "runs": 200 }, "metadata": { + "useLiteralContent": false, "bytecodeHash": "ipfs", "appendCBOR": true }, @@ -2800,6 +2865,7 @@ "runs": 200 }, "metadata": { + "useLiteralContent": false, "bytecodeHash": "ipfs", "appendCBOR": true }, @@ -2842,6 +2908,7 @@ "runs": 200 }, "metadata": { + "useLiteralContent": false, "bytecodeHash": "ipfs", "appendCBOR": true }, @@ -2891,6 +2958,7 @@ "runs": 200 }, "metadata": { + "useLiteralContent": false, "bytecodeHash": "ipfs", "appendCBOR": true }, @@ -2933,6 +3001,7 @@ "runs": 200 }, "metadata": { + "useLiteralContent": false, "bytecodeHash": "ipfs", "appendCBOR": true }, @@ -2975,6 +3044,7 @@ "runs": 200 }, "metadata": { + "useLiteralContent": false, "bytecodeHash": "ipfs", "appendCBOR": true }, @@ -3018,6 +3088,7 @@ "runs": 200 }, "metadata": { + "useLiteralContent": false, "bytecodeHash": "ipfs", "appendCBOR": true }, @@ -3058,6 +3129,7 @@ "runs": 200 }, "metadata": { + "useLiteralContent": false, "bytecodeHash": "ipfs", "appendCBOR": true }, @@ -3101,6 +3173,7 @@ "runs": 200 }, "metadata": { + "useLiteralContent": false, "bytecodeHash": "ipfs", "appendCBOR": true }, @@ -3143,6 +3216,7 @@ "runs": 200 }, "metadata": { + "useLiteralContent": false, "bytecodeHash": "ipfs", "appendCBOR": true }, @@ -3187,6 +3261,7 @@ "runs": 200 }, "metadata": { + "useLiteralContent": false, "bytecodeHash": "ipfs", "appendCBOR": true }, @@ -3227,6 +3302,7 @@ "runs": 200 }, "metadata": { + "useLiteralContent": false, "bytecodeHash": "ipfs", "appendCBOR": true }, @@ -3267,6 +3343,7 @@ "runs": 200 }, "metadata": { + "useLiteralContent": false, "bytecodeHash": "ipfs", "appendCBOR": true }, @@ -3322,6 +3399,7 @@ "runs": 200 }, "metadata": { + "useLiteralContent": false, "bytecodeHash": "ipfs", "appendCBOR": true }, @@ -3365,6 +3443,7 @@ "runs": 200 }, "metadata": { + "useLiteralContent": false, "bytecodeHash": "ipfs", "appendCBOR": true }, @@ -3408,6 +3487,7 @@ "runs": 200 }, "metadata": { + "useLiteralContent": false, "bytecodeHash": "ipfs", "appendCBOR": true }, @@ -3460,6 +3540,7 @@ "runs": 200 }, "metadata": { + "useLiteralContent": false, "bytecodeHash": "ipfs", "appendCBOR": true }, @@ -3503,6 +3584,7 @@ "runs": 200 }, "metadata": { + "useLiteralContent": false, "bytecodeHash": "ipfs", "appendCBOR": true }, @@ -3556,6 +3638,7 @@ "runs": 200 }, "metadata": { + "useLiteralContent": false, "bytecodeHash": "ipfs", "appendCBOR": true }, @@ -3609,6 +3692,7 @@ "runs": 200 }, "metadata": { + "useLiteralContent": false, "bytecodeHash": "ipfs", "appendCBOR": true }, @@ -3662,6 +3746,7 @@ "runs": 200 }, "metadata": { + "useLiteralContent": false, "bytecodeHash": "ipfs", "appendCBOR": true }, @@ -3715,6 +3800,7 @@ "runs": 200 }, "metadata": { + "useLiteralContent": false, "bytecodeHash": "ipfs", "appendCBOR": true }, @@ -3768,6 +3854,7 @@ "runs": 200 }, "metadata": { + "useLiteralContent": false, "bytecodeHash": "ipfs", "appendCBOR": true }, @@ -3811,6 +3898,7 @@ "runs": 200 }, "metadata": { + "useLiteralContent": false, "bytecodeHash": "ipfs", "appendCBOR": true }, @@ -3854,6 +3942,7 @@ "runs": 200 }, "metadata": { + "useLiteralContent": false, "bytecodeHash": "ipfs", "appendCBOR": true }, @@ -3894,6 +3983,7 @@ "runs": 200 }, "metadata": { + "useLiteralContent": false, "bytecodeHash": "ipfs", "appendCBOR": true }, @@ -3936,6 +4026,7 @@ "runs": 200 }, "metadata": { + "useLiteralContent": false, "bytecodeHash": "ipfs", "appendCBOR": true }, @@ -3976,6 +4067,7 @@ "runs": 200 }, "metadata": { + "useLiteralContent": false, "bytecodeHash": "ipfs", "appendCBOR": true }, @@ -4016,6 +4108,7 @@ "runs": 200 }, "metadata": { + "useLiteralContent": false, "bytecodeHash": "ipfs", "appendCBOR": true }, @@ -4084,6 +4177,7 @@ "runs": 200 }, "metadata": { + "useLiteralContent": false, "bytecodeHash": "ipfs", "appendCBOR": true }, @@ -4140,6 +4234,7 @@ "runs": 200 }, "metadata": { + "useLiteralContent": false, "bytecodeHash": "ipfs", "appendCBOR": true }, @@ -4184,6 +4279,7 @@ "runs": 200 }, "metadata": { + "useLiteralContent": false, "bytecodeHash": "ipfs", "appendCBOR": true }, @@ -4214,7 +4310,7 @@ } }, "script/base/create-publisher.s.sol": { - "lastModificationDate": 1687533127276, + "lastModificationDate": 1693465366216, "contentHash": "66795bf71d6064ceb68bf8b87fcf82ef", "sourceName": "script/base/create-publisher.s.sol", "solcConfig": { @@ -4224,6 +4320,7 @@ "runs": 200 }, "metadata": { + "useLiteralContent": false, "bytecodeHash": "ipfs", "appendCBOR": true }, @@ -4314,7 +4411,7 @@ } }, "script/base/deploy-ABSuperToken.s.sol": { - "lastModificationDate": 1689597375820, + "lastModificationDate": 1695374870138, "contentHash": "85ab0e2433f5fdcad0153d0db2dcfd74", "sourceName": "script/base/deploy-ABSuperToken.s.sol", "solcConfig": { @@ -4324,6 +4421,7 @@ "runs": 200 }, "metadata": { + "useLiteralContent": false, "bytecodeHash": "ipfs", "appendCBOR": true }, @@ -4396,8 +4494,8 @@ } }, "script/base/deploy-implementations.s.sol": { - "lastModificationDate": 1691479173485, - "contentHash": "b66690fb869c9bde3ccf6371daedb26d", + "lastModificationDate": 1698045674541, + "contentHash": "7b91a7e4dd208eed116e3d6df13ec06b", "sourceName": "script/base/deploy-implementations.s.sol", "solcConfig": { "settings": { @@ -4406,6 +4504,7 @@ "runs": 200 }, "metadata": { + "useLiteralContent": false, "bytecodeHash": "ipfs", "appendCBOR": true }, @@ -4485,19 +4584,20 @@ "src/royalty/IABRoyalty.sol", "src/token/ERC1155/ERC1155AB.sol", "src/token/ERC721/ERC721AB.sol", + "src/token/ERC721/ERC721ABLE.sol", "src/utils/IABDataRegistry.sol", "src/utils/IABVerifier.sol" ], "versionRequirement": "^0.8.18", "artifacts": { "DeployImplementation": { - "0.8.19+commit.7dd6d404.Darwin.appleclang": "deploy-implementations.s.sol/DeployImplementation.json" + "0.8.19+commit.7dd6d404.Darwin.appleclang": "base/deploy-implementations.s.sol/DeployImplementation.json" } } }, "script/base/deploy-platform.s.sol": { - "lastModificationDate": 1691062918645, - "contentHash": "bb0b1272e7bc230429fb4c45d19a3631", + "lastModificationDate": 1698045674542, + "contentHash": "b249659654ea2b392c4629c74cc3f49e", "sourceName": "script/base/deploy-platform.s.sol", "solcConfig": { "settings": { @@ -4506,6 +4606,7 @@ "runs": 200 }, "metadata": { + "useLiteralContent": false, "bytecodeHash": "ipfs", "appendCBOR": true }, @@ -4597,6 +4698,7 @@ "src/royalty/IABRoyalty.sol", "src/token/ERC1155/ERC1155AB.sol", "src/token/ERC721/ERC721AB.sol", + "src/token/ERC721/ERC721ABLE.sol", "src/utils/ABDataRegistry.sol", "src/utils/ABVerifier.sol", "src/utils/IABDataRegistry.sol", @@ -4610,7 +4712,7 @@ } }, "script/base/deploy-royalty.s.sol": { - "lastModificationDate": 1689080613542, + "lastModificationDate": 1695374870138, "contentHash": "8f8077a3a079d877814bee151a073325", "sourceName": "script/base/deploy-royalty.s.sol", "solcConfig": { @@ -4620,6 +4722,7 @@ "runs": 200 }, "metadata": { + "useLiteralContent": false, "bytecodeHash": "ipfs", "appendCBOR": true }, @@ -4701,8 +4804,112 @@ } } }, + "script/base/deploy-v1_1.s.sol": { + "lastModificationDate": 1699346432137, + "contentHash": "04063eb25d5f988bc0b2f3a60fb763b7", + "sourceName": "script/base/deploy-v1_1.s.sol", + "solcConfig": { + "settings": { + "optimizer": { + "enabled": true, + "runs": 200 + }, + "metadata": { + "useLiteralContent": false, + "bytecodeHash": "ipfs", + "appendCBOR": true + }, + "outputSelection": { + "*": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata" + ] + } + }, + "evmVersion": "paris", + "libraries": {} + } + }, + "imports": [ + "lib/ERC721A-Upgradeable/contracts/ERC721AStorage.sol", + "lib/ERC721A-Upgradeable/contracts/ERC721AUpgradeable.sol", + "lib/ERC721A-Upgradeable/contracts/ERC721A__Initializable.sol", + "lib/ERC721A-Upgradeable/contracts/ERC721A__InitializableStorage.sol", + "lib/ERC721A-Upgradeable/contracts/IERC721AUpgradeable.sol", + "lib/forge-std/src/Base.sol", + "lib/forge-std/src/Script.sol", + "lib/forge-std/src/StdChains.sol", + "lib/forge-std/src/StdCheats.sol", + "lib/forge-std/src/StdJson.sol", + "lib/forge-std/src/StdMath.sol", + "lib/forge-std/src/StdStorage.sol", + "lib/forge-std/src/StdUtils.sol", + "lib/forge-std/src/Vm.sol", + "lib/forge-std/src/console.sol", + "lib/forge-std/src/console2.sol", + "lib/forge-std/src/interfaces/IMulticall3.sol", + "lib/openzeppelin-contracts/contracts/proxy/Clones.sol", + "lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol", + "lib/openzeppelin-contracts/contracts/token/ERC777/IERC777.sol", + "lib/openzeppelin-contracts/contracts/utils/Strings.sol", + "lib/openzeppelin-contracts/contracts/utils/math/Math.sol", + "lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol", + "lib/openzeppelin-contracts-upgradeable/contracts/access/IAccessControlUpgradeable.sol", + "lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol", + "lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol", + "lib/openzeppelin-contracts-upgradeable/contracts/token/ERC1155/ERC1155Upgradeable.sol", + "lib/openzeppelin-contracts-upgradeable/contracts/token/ERC1155/IERC1155ReceiverUpgradeable.sol", + "lib/openzeppelin-contracts-upgradeable/contracts/token/ERC1155/IERC1155Upgradeable.sol", + "lib/openzeppelin-contracts-upgradeable/contracts/token/ERC1155/extensions/IERC1155MetadataURIUpgradeable.sol", + "lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol", + "lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol", + "lib/openzeppelin-contracts-upgradeable/contracts/utils/StringsUpgradeable.sol", + "lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/ERC165Upgradeable.sol", + "lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/IERC165Upgradeable.sol", + "lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol", + "lib/protocol-monorepo/packages/ethereum-contracts/contracts/apps/SuperTokenV1Library.sol", + "lib/protocol-monorepo/packages/ethereum-contracts/contracts/interfaces/agreements/IConstantFlowAgreementV1.sol", + "lib/protocol-monorepo/packages/ethereum-contracts/contracts/interfaces/agreements/IInstantDistributionAgreementV1.sol", + "lib/protocol-monorepo/packages/ethereum-contracts/contracts/interfaces/superfluid/Definitions.sol", + "lib/protocol-monorepo/packages/ethereum-contracts/contracts/interfaces/superfluid/ISuperAgreement.sol", + "lib/protocol-monorepo/packages/ethereum-contracts/contracts/interfaces/superfluid/ISuperApp.sol", + "lib/protocol-monorepo/packages/ethereum-contracts/contracts/interfaces/superfluid/ISuperToken.sol", + "lib/protocol-monorepo/packages/ethereum-contracts/contracts/interfaces/superfluid/ISuperTokenFactory.sol", + "lib/protocol-monorepo/packages/ethereum-contracts/contracts/interfaces/superfluid/ISuperfluid.sol", + "lib/protocol-monorepo/packages/ethereum-contracts/contracts/interfaces/superfluid/ISuperfluidGovernance.sol", + "lib/protocol-monorepo/packages/ethereum-contracts/contracts/interfaces/superfluid/ISuperfluidToken.sol", + "lib/protocol-monorepo/packages/ethereum-contracts/contracts/interfaces/tokens/ERC20WithTokenInfo.sol", + "lib/protocol-monorepo/packages/ethereum-contracts/contracts/interfaces/tokens/TokenInfo.sol", + "src/factory/AnotherCloneFactory.sol", + "src/libraries/ABDataTypes.sol", + "src/libraries/ABErrors.sol", + "src/libraries/ABEvents.sol", + "src/royalty/ABRoyalty.sol", + "src/royalty/IABRoyalty.sol", + "src/token/ERC1155/ERC1155AB.sol", + "src/token/ERC721/ERC721AB.sol", + "src/token/ERC721/ERC721ABLE.sol", + "src/token/ERC721/ERC721ABOE.sol", + "src/utils/ABDataRegistry.sol", + "src/utils/IABDataRegistry.sol", + "src/utils/IABVerifier.sol" + ], + "versionRequirement": "^0.8.18", + "artifacts": { + "DeployUpgrade": { + "0.8.19+commit.7dd6d404.Darwin.appleclang": "deploy-v1_1.s.sol/DeployUpgrade.json" + } + } + }, "script/base-goerli/create-publisher.s.sol": { - "lastModificationDate": 1691420621216, + "lastModificationDate": 1695374870137, "contentHash": "e2267180499cb7133e1684156d386c07", "sourceName": "script/base-goerli/create-publisher.s.sol", "solcConfig": { @@ -4712,6 +4919,7 @@ "runs": 200 }, "metadata": { + "useLiteralContent": false, "bytecodeHash": "ipfs", "appendCBOR": true }, @@ -4802,7 +5010,7 @@ } }, "script/base-goerli/deploy-ABSuperToken.s.sol": { - "lastModificationDate": 1689847774948, + "lastModificationDate": 1695374870137, "contentHash": "85ab0e2433f5fdcad0153d0db2dcfd74", "sourceName": "script/base-goerli/deploy-ABSuperToken.s.sol", "solcConfig": { @@ -4812,6 +5020,7 @@ "runs": 200 }, "metadata": { + "useLiteralContent": false, "bytecodeHash": "ipfs", "appendCBOR": true }, @@ -4884,8 +5093,8 @@ } }, "script/base-goerli/deploy-implementations.s.sol": { - "lastModificationDate": 1691479390306, - "contentHash": "bd3a8040855ba864fb6a06e40d867a3c", + "lastModificationDate": 1698045674541, + "contentHash": "05dbd9c58bd38f549b31bb572d64d339", "sourceName": "script/base-goerli/deploy-implementations.s.sol", "solcConfig": { "settings": { @@ -4894,6 +5103,7 @@ "runs": 200 }, "metadata": { + "useLiteralContent": false, "bytecodeHash": "ipfs", "appendCBOR": true }, @@ -4973,19 +5183,20 @@ "src/royalty/IABRoyalty.sol", "src/token/ERC1155/ERC1155AB.sol", "src/token/ERC721/ERC721AB.sol", + "src/token/ERC721/ERC721ABLE.sol", "src/utils/IABDataRegistry.sol", "src/utils/IABVerifier.sol" ], "versionRequirement": "^0.8.18", "artifacts": { "DeployImplementation": { - "0.8.19+commit.7dd6d404.Darwin.appleclang": "deploy-implementations.s.sol/DeployImplementation.json" + "0.8.19+commit.7dd6d404.Darwin.appleclang": "base-goerli/deploy-implementations.s.sol/DeployImplementation.json" } } }, "script/base-goerli/deploy-platform.s.sol": { - "lastModificationDate": 1691420625921, - "contentHash": "362038700fdab1493800300d36faf139", + "lastModificationDate": 1699351517436, + "contentHash": "cbacf930a7cb4bf9d8fb6c6666a246aa", "sourceName": "script/base-goerli/deploy-platform.s.sol", "solcConfig": { "settings": { @@ -4994,6 +5205,7 @@ "runs": 200 }, "metadata": { + "useLiteralContent": false, "bytecodeHash": "ipfs", "appendCBOR": true }, @@ -5085,6 +5297,8 @@ "src/royalty/IABRoyalty.sol", "src/token/ERC1155/ERC1155AB.sol", "src/token/ERC721/ERC721AB.sol", + "src/token/ERC721/ERC721ABLE.sol", + "src/token/ERC721/ERC721ABOE.sol", "src/utils/ABDataRegistry.sol", "src/utils/ABVerifier.sol", "src/utils/IABDataRegistry.sol", @@ -5098,7 +5312,7 @@ } }, "script/base-goerli/deploy-royalty.s.sol": { - "lastModificationDate": 1689847774949, + "lastModificationDate": 1695374870138, "contentHash": "8f8077a3a079d877814bee151a073325", "sourceName": "script/base-goerli/deploy-royalty.s.sol", "solcConfig": { @@ -5108,6 +5322,7 @@ "runs": 200 }, "metadata": { + "useLiteralContent": false, "bytecodeHash": "ipfs", "appendCBOR": true }, @@ -5189,8 +5404,112 @@ } } }, + "script/base-goerli/deploy-upgrade.s.sol": { + "lastModificationDate": 1699258935132, + "contentHash": "17ffe38bcdb1a46ab3332f5ba0577919", + "sourceName": "script/base-goerli/deploy-upgrade.s.sol", + "solcConfig": { + "settings": { + "optimizer": { + "enabled": true, + "runs": 200 + }, + "metadata": { + "useLiteralContent": false, + "bytecodeHash": "ipfs", + "appendCBOR": true + }, + "outputSelection": { + "*": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata" + ] + } + }, + "evmVersion": "paris", + "libraries": {} + } + }, + "imports": [ + "lib/ERC721A-Upgradeable/contracts/ERC721AStorage.sol", + "lib/ERC721A-Upgradeable/contracts/ERC721AUpgradeable.sol", + "lib/ERC721A-Upgradeable/contracts/ERC721A__Initializable.sol", + "lib/ERC721A-Upgradeable/contracts/ERC721A__InitializableStorage.sol", + "lib/ERC721A-Upgradeable/contracts/IERC721AUpgradeable.sol", + "lib/forge-std/src/Base.sol", + "lib/forge-std/src/Script.sol", + "lib/forge-std/src/StdChains.sol", + "lib/forge-std/src/StdCheats.sol", + "lib/forge-std/src/StdJson.sol", + "lib/forge-std/src/StdMath.sol", + "lib/forge-std/src/StdStorage.sol", + "lib/forge-std/src/StdUtils.sol", + "lib/forge-std/src/Vm.sol", + "lib/forge-std/src/console.sol", + "lib/forge-std/src/console2.sol", + "lib/forge-std/src/interfaces/IMulticall3.sol", + "lib/openzeppelin-contracts/contracts/proxy/Clones.sol", + "lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol", + "lib/openzeppelin-contracts/contracts/token/ERC777/IERC777.sol", + "lib/openzeppelin-contracts/contracts/utils/Strings.sol", + "lib/openzeppelin-contracts/contracts/utils/math/Math.sol", + "lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol", + "lib/openzeppelin-contracts-upgradeable/contracts/access/IAccessControlUpgradeable.sol", + "lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol", + "lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol", + "lib/openzeppelin-contracts-upgradeable/contracts/token/ERC1155/ERC1155Upgradeable.sol", + "lib/openzeppelin-contracts-upgradeable/contracts/token/ERC1155/IERC1155ReceiverUpgradeable.sol", + "lib/openzeppelin-contracts-upgradeable/contracts/token/ERC1155/IERC1155Upgradeable.sol", + "lib/openzeppelin-contracts-upgradeable/contracts/token/ERC1155/extensions/IERC1155MetadataURIUpgradeable.sol", + "lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol", + "lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol", + "lib/openzeppelin-contracts-upgradeable/contracts/utils/StringsUpgradeable.sol", + "lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/ERC165Upgradeable.sol", + "lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/IERC165Upgradeable.sol", + "lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol", + "lib/protocol-monorepo/packages/ethereum-contracts/contracts/apps/SuperTokenV1Library.sol", + "lib/protocol-monorepo/packages/ethereum-contracts/contracts/interfaces/agreements/IConstantFlowAgreementV1.sol", + "lib/protocol-monorepo/packages/ethereum-contracts/contracts/interfaces/agreements/IInstantDistributionAgreementV1.sol", + "lib/protocol-monorepo/packages/ethereum-contracts/contracts/interfaces/superfluid/Definitions.sol", + "lib/protocol-monorepo/packages/ethereum-contracts/contracts/interfaces/superfluid/ISuperAgreement.sol", + "lib/protocol-monorepo/packages/ethereum-contracts/contracts/interfaces/superfluid/ISuperApp.sol", + "lib/protocol-monorepo/packages/ethereum-contracts/contracts/interfaces/superfluid/ISuperToken.sol", + "lib/protocol-monorepo/packages/ethereum-contracts/contracts/interfaces/superfluid/ISuperTokenFactory.sol", + "lib/protocol-monorepo/packages/ethereum-contracts/contracts/interfaces/superfluid/ISuperfluid.sol", + "lib/protocol-monorepo/packages/ethereum-contracts/contracts/interfaces/superfluid/ISuperfluidGovernance.sol", + "lib/protocol-monorepo/packages/ethereum-contracts/contracts/interfaces/superfluid/ISuperfluidToken.sol", + "lib/protocol-monorepo/packages/ethereum-contracts/contracts/interfaces/tokens/ERC20WithTokenInfo.sol", + "lib/protocol-monorepo/packages/ethereum-contracts/contracts/interfaces/tokens/TokenInfo.sol", + "src/factory/AnotherCloneFactory.sol", + "src/libraries/ABDataTypes.sol", + "src/libraries/ABErrors.sol", + "src/libraries/ABEvents.sol", + "src/royalty/ABRoyalty.sol", + "src/royalty/IABRoyalty.sol", + "src/token/ERC1155/ERC1155AB.sol", + "src/token/ERC721/ERC721AB.sol", + "src/token/ERC721/ERC721ABLE.sol", + "src/token/ERC721/ERC721ABOE.sol", + "src/utils/ABDataRegistry.sol", + "src/utils/IABDataRegistry.sol", + "src/utils/IABVerifier.sol" + ], + "versionRequirement": "^0.8.18", + "artifacts": { + "DeployUpgrade": { + "0.8.19+commit.7dd6d404.Darwin.appleclang": "deploy-upgrade.s.sol/DeployUpgrade.json" + } + } + }, "script/op/deploy-ABSuperToken.s.sol": { - "lastModificationDate": 1685104963887, + "lastModificationDate": 1693465366217, "contentHash": "1d056aa991c6d5dfab2d1e455afd5113", "sourceName": "script/op/deploy-ABSuperToken.s.sol", "solcConfig": { @@ -5200,6 +5519,7 @@ "runs": 200 }, "metadata": { + "useLiteralContent": false, "bytecodeHash": "ipfs", "appendCBOR": true }, @@ -5272,8 +5592,8 @@ } }, "script/op/deploy-platform.s.sol": { - "lastModificationDate": 1689249568517, - "contentHash": "bf5977017d6fc6e7fb50592a34bee58d", + "lastModificationDate": 1698045674543, + "contentHash": "bd1558a2a1b08abdadcab46e1dc68d55", "sourceName": "script/op/deploy-platform.s.sol", "solcConfig": { "settings": { @@ -5282,6 +5602,7 @@ "runs": 200 }, "metadata": { + "useLiteralContent": false, "bytecodeHash": "ipfs", "appendCBOR": true }, @@ -5373,6 +5694,7 @@ "src/royalty/IABRoyalty.sol", "src/token/ERC1155/ERC1155AB.sol", "src/token/ERC721/ERC721AB.sol", + "src/token/ERC721/ERC721ABLE.sol", "src/utils/ABDataRegistry.sol", "src/utils/ABVerifier.sol", "src/utils/IABDataRegistry.sol", @@ -5386,7 +5708,7 @@ } }, "script/op/deploy-royalty.s.sol": { - "lastModificationDate": 1688991732243, + "lastModificationDate": 1695374870139, "contentHash": "bb2815d1b7297d11c82eee3952d59434", "sourceName": "script/op/deploy-royalty.s.sol", "solcConfig": { @@ -5396,6 +5718,7 @@ "runs": 200 }, "metadata": { + "useLiteralContent": false, "bytecodeHash": "ipfs", "appendCBOR": true }, @@ -5478,8 +5801,8 @@ } }, "src/factory/AnotherCloneFactory.sol": { - "lastModificationDate": 1691161016156, - "contentHash": "19bd4bec59b487a82156b5506ac19fe8", + "lastModificationDate": 1698932348920, + "contentHash": "b370aa7ef541079cc15fe35e58d87c2e", "sourceName": "src/factory/AnotherCloneFactory.sol", "solcConfig": { "settings": { @@ -5488,6 +5811,7 @@ "runs": 200 }, "metadata": { + "useLiteralContent": false, "bytecodeHash": "ipfs", "appendCBOR": true }, @@ -5565,7 +5889,7 @@ } }, "src/libraries/ABDataTypes.sol": { - "lastModificationDate": 1689942031383, + "lastModificationDate": 1695374870140, "contentHash": "1fb8a463a53cb3f46035daf65d058bd8", "sourceName": "src/libraries/ABDataTypes.sol", "solcConfig": { @@ -5575,6 +5899,7 @@ "runs": 200 }, "metadata": { + "useLiteralContent": false, "bytecodeHash": "ipfs", "appendCBOR": true }, @@ -5605,8 +5930,8 @@ } }, "src/libraries/ABErrors.sol": { - "lastModificationDate": 1689941612251, - "contentHash": "6182110616230ba2872975119c9c13ff", + "lastModificationDate": 1699259015359, + "contentHash": "a830557b02dcd7a590b70f262663f586", "sourceName": "src/libraries/ABErrors.sol", "solcConfig": { "settings": { @@ -5615,6 +5940,7 @@ "runs": 200 }, "metadata": { + "useLiteralContent": false, "bytecodeHash": "ipfs", "appendCBOR": true }, @@ -5645,7 +5971,7 @@ } }, "src/libraries/ABEvents.sol": { - "lastModificationDate": 1690966702420, + "lastModificationDate": 1698653960245, "contentHash": "fd828f54bf1543d5aafa603c67c38bda", "sourceName": "src/libraries/ABEvents.sol", "solcConfig": { @@ -5655,6 +5981,7 @@ "runs": 200 }, "metadata": { + "useLiteralContent": false, "bytecodeHash": "ipfs", "appendCBOR": true }, @@ -5685,7 +6012,7 @@ } }, "src/royalty/ABRoyalty.sol": { - "lastModificationDate": 1690358295665, + "lastModificationDate": 1695374870141, "contentHash": "b245d965a64ac207654b99c35b633852", "sourceName": "src/royalty/ABRoyalty.sol", "solcConfig": { @@ -5695,6 +6022,7 @@ "runs": 200 }, "metadata": { + "useLiteralContent": false, "bytecodeHash": "ipfs", "appendCBOR": true }, @@ -5753,7 +6081,7 @@ } }, "src/royalty/IABRoyalty.sol": { - "lastModificationDate": 1689945711053, + "lastModificationDate": 1695374870141, "contentHash": "0f8ece50d5fa6fa360a39af9be68a08a", "sourceName": "src/royalty/IABRoyalty.sol", "solcConfig": { @@ -5763,6 +6091,7 @@ "runs": 200 }, "metadata": { + "useLiteralContent": false, "bytecodeHash": "ipfs", "appendCBOR": true }, @@ -5793,8 +6122,8 @@ } }, "src/token/ERC1155/ERC1155AB.sol": { - "lastModificationDate": 1691162551904, - "contentHash": "866228a3aa35e59c4026fe0d27ab21a6", + "lastModificationDate": 1698045674543, + "contentHash": "1452971d484276b84b000f29153aaca4", "sourceName": "src/token/ERC1155/ERC1155AB.sol", "solcConfig": { "settings": { @@ -5803,6 +6132,7 @@ "runs": 200 }, "metadata": { + "useLiteralContent": false, "bytecodeHash": "ipfs", "appendCBOR": true }, @@ -5850,8 +6180,8 @@ } }, "src/token/ERC721/ERC721AB.sol": { - "lastModificationDate": 1691161159888, - "contentHash": "59541c35d3ba197d9a9c9b721c1191f2", + "lastModificationDate": 1699349155791, + "contentHash": "17d03817fde02f2207eb384b9a9d4244", "sourceName": "src/token/ERC721/ERC721AB.sol", "solcConfig": { "settings": { @@ -5860,6 +6190,7 @@ "runs": 200 }, "metadata": { + "useLiteralContent": false, "bytecodeHash": "ipfs", "appendCBOR": true }, @@ -5907,9 +6238,129 @@ } } }, + "src/token/ERC721/ERC721ABLE.sol": { + "lastModificationDate": 1699349138016, + "contentHash": "8a218f9e4a907b72e13264a421178cad", + "sourceName": "src/token/ERC721/ERC721ABLE.sol", + "solcConfig": { + "settings": { + "optimizer": { + "enabled": true, + "runs": 200 + }, + "metadata": { + "useLiteralContent": false, + "bytecodeHash": "ipfs", + "appendCBOR": true + }, + "outputSelection": { + "*": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata" + ] + } + }, + "evmVersion": "paris", + "libraries": {} + } + }, + "imports": [ + "lib/ERC721A-Upgradeable/contracts/ERC721AStorage.sol", + "lib/ERC721A-Upgradeable/contracts/ERC721AUpgradeable.sol", + "lib/ERC721A-Upgradeable/contracts/ERC721A__Initializable.sol", + "lib/ERC721A-Upgradeable/contracts/ERC721A__InitializableStorage.sol", + "lib/ERC721A-Upgradeable/contracts/IERC721AUpgradeable.sol", + "lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol", + "lib/openzeppelin-contracts/contracts/utils/Strings.sol", + "lib/openzeppelin-contracts/contracts/utils/math/Math.sol", + "lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol", + "lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol", + "lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol", + "lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol", + "src/libraries/ABDataTypes.sol", + "src/libraries/ABErrors.sol", + "src/libraries/ABEvents.sol", + "src/token/ERC721/ERC721AB.sol", + "src/utils/IABDataRegistry.sol", + "src/utils/IABVerifier.sol" + ], + "versionRequirement": "^0.8.18", + "artifacts": { + "ERC721ABLE": { + "0.8.19+commit.7dd6d404.Darwin.appleclang": "ERC721ABLE.sol/ERC721ABLE.json" + } + } + }, + "src/token/ERC721/ERC721ABOE.sol": { + "lastModificationDate": 1699349152220, + "contentHash": "2e939a79a96748e57db51583a275929f", + "sourceName": "src/token/ERC721/ERC721ABOE.sol", + "solcConfig": { + "settings": { + "optimizer": { + "enabled": true, + "runs": 200 + }, + "metadata": { + "useLiteralContent": false, + "bytecodeHash": "ipfs", + "appendCBOR": true + }, + "outputSelection": { + "*": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata" + ] + } + }, + "evmVersion": "paris", + "libraries": {} + } + }, + "imports": [ + "lib/ERC721A-Upgradeable/contracts/ERC721AStorage.sol", + "lib/ERC721A-Upgradeable/contracts/ERC721AUpgradeable.sol", + "lib/ERC721A-Upgradeable/contracts/ERC721A__Initializable.sol", + "lib/ERC721A-Upgradeable/contracts/ERC721A__InitializableStorage.sol", + "lib/ERC721A-Upgradeable/contracts/IERC721AUpgradeable.sol", + "lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol", + "lib/openzeppelin-contracts/contracts/utils/Strings.sol", + "lib/openzeppelin-contracts/contracts/utils/math/Math.sol", + "lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol", + "lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol", + "lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol", + "lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol", + "src/libraries/ABDataTypes.sol", + "src/libraries/ABErrors.sol", + "src/libraries/ABEvents.sol", + "src/token/ERC721/ERC721AB.sol", + "src/utils/IABDataRegistry.sol", + "src/utils/IABVerifier.sol" + ], + "versionRequirement": "^0.8.18", + "artifacts": { + "ERC721ABOE": { + "0.8.19+commit.7dd6d404.Darwin.appleclang": "ERC721ABOE.sol/ERC721ABOE.json" + } + } + }, "src/utils/ABDataRegistry.sol": { - "lastModificationDate": 1690966709602, - "contentHash": "b98398aab09b7ace084cab48697e404c", + "lastModificationDate": 1698656722561, + "contentHash": "01daae19991c3d298a84da11cea6a548", "sourceName": "src/utils/ABDataRegistry.sol", "solcConfig": { "settings": { @@ -5918,6 +6369,7 @@ "runs": 200 }, "metadata": { + "useLiteralContent": false, "bytecodeHash": "ipfs", "appendCBOR": true }, @@ -5963,7 +6415,7 @@ } }, "src/utils/ABVerifier.sol": { - "lastModificationDate": 1689948318640, + "lastModificationDate": 1698654153571, "contentHash": "65412e9bc6f0764bc78b283d2e1af36c", "sourceName": "src/utils/ABVerifier.sol", "solcConfig": { @@ -5973,6 +6425,7 @@ "runs": 200 }, "metadata": { + "useLiteralContent": false, "bytecodeHash": "ipfs", "appendCBOR": true }, @@ -6018,8 +6471,8 @@ } }, "src/utils/IABDataRegistry.sol": { - "lastModificationDate": 1689948536040, - "contentHash": "77e916c3a170f7877ca9b70ec1307191", + "lastModificationDate": 1698045674545, + "contentHash": "072410114586180b67b3b28e70466677", "sourceName": "src/utils/IABDataRegistry.sol", "solcConfig": { "settings": { @@ -6028,6 +6481,7 @@ "runs": 200 }, "metadata": { + "useLiteralContent": false, "bytecodeHash": "ipfs", "appendCBOR": true }, @@ -6058,7 +6512,7 @@ } }, "src/utils/IABVerifier.sol": { - "lastModificationDate": 1689948314191, + "lastModificationDate": 1698654153571, "contentHash": "4fbc1efff48937c20859fb673ba4ff0a", "sourceName": "src/utils/IABVerifier.sol", "solcConfig": { @@ -6068,6 +6522,7 @@ "runs": 200 }, "metadata": { + "useLiteralContent": false, "bytecodeHash": "ipfs", "appendCBOR": true }, @@ -6098,7 +6553,7 @@ } }, "test/_mocks/ABSuperToken.sol": { - "lastModificationDate": 1689595715692, + "lastModificationDate": 1695374870143, "contentHash": "e3ae917be85f9c4b702856168287dc50", "sourceName": "test/_mocks/ABSuperToken.sol", "solcConfig": { @@ -6108,6 +6563,7 @@ "runs": 200 }, "metadata": { + "useLiteralContent": false, "bytecodeHash": "ipfs", "appendCBOR": true }, @@ -6167,7 +6623,7 @@ } }, "test/_mocks/MockNFT.sol": { - "lastModificationDate": 1684750159507, + "lastModificationDate": 1693465366219, "contentHash": "46e23044e7157f33ccba3b4e3c835c2a", "sourceName": "test/_mocks/MockNFT.sol", "solcConfig": { @@ -6177,6 +6633,7 @@ "runs": 200 }, "metadata": { + "useLiteralContent": false, "bytecodeHash": "ipfs", "appendCBOR": true }, @@ -6218,7 +6675,7 @@ } }, "test/_mocks/MockNFT1155.sol": { - "lastModificationDate": 1684750159507, + "lastModificationDate": 1693465366220, "contentHash": "f2a125a3dfdfd7723da9119b3256488d", "sourceName": "test/_mocks/MockNFT1155.sol", "solcConfig": { @@ -6228,6 +6685,7 @@ "runs": 200 }, "metadata": { + "useLiteralContent": false, "bytecodeHash": "ipfs", "appendCBOR": true }, @@ -6267,7 +6725,7 @@ } }, "test/_mocks/MockToken.sol": { - "lastModificationDate": 1687533127279, + "lastModificationDate": 1693465366220, "contentHash": "76f897607ba873482fa32a4ffa54661b", "sourceName": "test/_mocks/MockToken.sol", "solcConfig": { @@ -6277,6 +6735,7 @@ "runs": 200 }, "metadata": { + "useLiteralContent": false, "bytecodeHash": "ipfs", "appendCBOR": true }, @@ -6312,7 +6771,7 @@ } }, "test/_testdata/ABRoyalty.td.sol": { - "lastModificationDate": 1689681102233, + "lastModificationDate": 1695374870143, "contentHash": "5c33f38ecb1bb6df367bbb9a27b1e70d", "sourceName": "test/_testdata/ABRoyalty.td.sol", "solcConfig": { @@ -6322,6 +6781,7 @@ "runs": 200 }, "metadata": { + "useLiteralContent": false, "bytecodeHash": "ipfs", "appendCBOR": true }, @@ -6352,7 +6812,7 @@ } }, "test/_testdata/ABVerifier.td.sol": { - "lastModificationDate": 1684750159507, + "lastModificationDate": 1693465366220, "contentHash": "bbc9cfbadf55c2bba8535e2f112b0cd4", "sourceName": "test/_testdata/ABVerifier.td.sol", "solcConfig": { @@ -6362,6 +6822,7 @@ "runs": 200 }, "metadata": { + "useLiteralContent": false, "bytecodeHash": "ipfs", "appendCBOR": true }, @@ -6392,7 +6853,7 @@ } }, "test/_testdata/AnotherCloneFactory.td.sol": { - "lastModificationDate": 1689681108087, + "lastModificationDate": 1695374870144, "contentHash": "e8260c770956ee743d56367a16870e5a", "sourceName": "test/_testdata/AnotherCloneFactory.td.sol", "solcConfig": { @@ -6402,6 +6863,7 @@ "runs": 200 }, "metadata": { + "useLiteralContent": false, "bytecodeHash": "ipfs", "appendCBOR": true }, @@ -6432,7 +6894,7 @@ } }, "test/_testdata/ERC1155AB.td.sol": { - "lastModificationDate": 1689681613537, + "lastModificationDate": 1695374870144, "contentHash": "23ad035185459b78fc89b380a079b389", "sourceName": "test/_testdata/ERC1155AB.td.sol", "solcConfig": { @@ -6442,6 +6904,7 @@ "runs": 200 }, "metadata": { + "useLiteralContent": false, "bytecodeHash": "ipfs", "appendCBOR": true }, @@ -6471,10 +6934,10 @@ } } }, - "test/_testdata/ERC721AB.td.sol": { - "lastModificationDate": 1689681114633, - "contentHash": "c39be0c899a171fd25c6db423146b6f7", - "sourceName": "test/_testdata/ERC721AB.td.sol", + "test/_testdata/ERC721ABLE.td.sol": { + "lastModificationDate": 1698045674546, + "contentHash": "18e471e2024322ed2364a9b96590a5d4", + "sourceName": "test/_testdata/ERC721ABLE.td.sol", "solcConfig": { "settings": { "optimizer": { @@ -6482,6 +6945,7 @@ "runs": 200 }, "metadata": { + "useLiteralContent": false, "bytecodeHash": "ipfs", "appendCBOR": true }, @@ -6507,13 +6971,54 @@ "versionRequirement": "^0.8.18", "artifacts": { "ERC721ABTestData": { - "0.8.19+commit.7dd6d404.Darwin.appleclang": "ERC721AB.td.sol/ERC721ABTestData.json" + "0.8.19+commit.7dd6d404.Darwin.appleclang": "ERC721ABLE.td.sol/ERC721ABTestData.json" + } + } + }, + "test/_testdata/ERC721ABOE.td.sol": { + "lastModificationDate": 1698653960247, + "contentHash": "0788ecee578ed53f129ab21f714a4788", + "sourceName": "test/_testdata/ERC721ABOE.td.sol", + "solcConfig": { + "settings": { + "optimizer": { + "enabled": true, + "runs": 200 + }, + "metadata": { + "useLiteralContent": false, + "bytecodeHash": "ipfs", + "appendCBOR": true + }, + "outputSelection": { + "*": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata" + ] + } + }, + "evmVersion": "paris", + "libraries": {} + } + }, + "imports": [], + "versionRequirement": "^0.8.18", + "artifacts": { + "ERC721ABOETestData": { + "0.8.19+commit.7dd6d404.Darwin.appleclang": "ERC721ABOE.td.sol/ERC721ABOETestData.json" } } }, "test/factory/AnotherCloneFactory.t.sol": { - "lastModificationDate": 1691161197755, - "contentHash": "0cd9ba923e6d9d827dd0977c6bede06a", + "lastModificationDate": 1698933866742, + "contentHash": "231bdc9a61da91b7c17310ca391a1f50", "sourceName": "test/factory/AnotherCloneFactory.t.sol", "solcConfig": { "settings": { @@ -6522,6 +7027,7 @@ "runs": 200 }, "metadata": { + "useLiteralContent": false, "bytecodeHash": "ipfs", "appendCBOR": true }, @@ -6618,6 +7124,8 @@ "src/royalty/IABRoyalty.sol", "src/token/ERC1155/ERC1155AB.sol", "src/token/ERC721/ERC721AB.sol", + "src/token/ERC721/ERC721ABLE.sol", + "src/token/ERC721/ERC721ABOE.sol", "src/utils/ABDataRegistry.sol", "src/utils/ABVerifier.sol", "src/utils/IABDataRegistry.sol", @@ -6632,8 +7140,8 @@ } }, "test/royalty/ABRoyalty.t.sol": { - "lastModificationDate": 1691396829052, - "contentHash": "d9dcf566dbcca70b46b0fb565e521a02", + "lastModificationDate": 1698045674547, + "contentHash": "1709c4b58e65fec2eb5d4f2a98d2dab4", "sourceName": "test/royalty/ABRoyalty.t.sol", "solcConfig": { "settings": { @@ -6642,6 +7150,7 @@ "runs": 200 }, "metadata": { + "useLiteralContent": false, "bytecodeHash": "ipfs", "appendCBOR": true }, @@ -6753,6 +7262,7 @@ "src/royalty/IABRoyalty.sol", "src/token/ERC1155/ERC1155AB.sol", "src/token/ERC721/ERC721AB.sol", + "src/token/ERC721/ERC721ABLE.sol", "src/utils/ABDataRegistry.sol", "src/utils/ABVerifier.sol", "src/utils/IABDataRegistry.sol", @@ -6768,8 +7278,8 @@ } }, "test/token/ERC1155/ERC1155AB.t.sol": { - "lastModificationDate": 1691162671739, - "contentHash": "43ec890988ab59aba76d4911d7a22215", + "lastModificationDate": 1698045674548, + "contentHash": "7e601132d94c61b0b8aea76a591768ba", "sourceName": "test/token/ERC1155/ERC1155AB.t.sol", "solcConfig": { "settings": { @@ -6778,6 +7288,7 @@ "runs": 200 }, "metadata": { + "useLiteralContent": false, "bytecodeHash": "ipfs", "appendCBOR": true }, @@ -6896,6 +7407,7 @@ "src/royalty/IABRoyalty.sol", "src/token/ERC1155/ERC1155AB.sol", "src/token/ERC721/ERC721AB.sol", + "src/token/ERC721/ERC721ABLE.sol", "src/utils/ABDataRegistry.sol", "src/utils/ABVerifier.sol", "src/utils/IABDataRegistry.sol", @@ -6911,10 +7423,10 @@ } } }, - "test/token/ERC721/ERC721AB.t.sol": { - "lastModificationDate": 1691161403285, - "contentHash": "c5b5c1369f1b15c64d4e17df4ae9e332", - "sourceName": "test/token/ERC721/ERC721AB.t.sol", + "test/token/ERC721/ERC721ABLE.t.sol": { + "lastModificationDate": 1698045674548, + "contentHash": "c3871a4701ce436512f1844c328b512f", + "sourceName": "test/token/ERC721/ERC721ABLE.t.sol", "solcConfig": { "settings": { "optimizer": { @@ -6922,6 +7434,7 @@ "runs": 200 }, "metadata": { + "useLiteralContent": false, "bytecodeHash": "ipfs", "appendCBOR": true }, @@ -7035,24 +7548,166 @@ "src/royalty/IABRoyalty.sol", "src/token/ERC1155/ERC1155AB.sol", "src/token/ERC721/ERC721AB.sol", + "src/token/ERC721/ERC721ABLE.sol", "src/utils/ABDataRegistry.sol", "src/utils/ABVerifier.sol", "src/utils/IABDataRegistry.sol", "src/utils/IABVerifier.sol", "test/_mocks/ABSuperToken.sol", "test/_mocks/MockToken.sol", - "test/_testdata/ERC721AB.td.sol" + "test/_testdata/ERC721ABLE.td.sol" ], "versionRequirement": "^0.8.18", "artifacts": { "ERC721ABTest": { - "0.8.19+commit.7dd6d404.Darwin.appleclang": "ERC721AB.t.sol/ERC721ABTest.json" + "0.8.19+commit.7dd6d404.Darwin.appleclang": "ERC721ABLE.t.sol/ERC721ABTest.json" + } + } + }, + "test/token/ERC721/ERC721ABOE.t.sol": { + "lastModificationDate": 1699258924774, + "contentHash": "a7b541a46d9274042a34a4f4a02dbbde", + "sourceName": "test/token/ERC721/ERC721ABOE.t.sol", + "solcConfig": { + "settings": { + "optimizer": { + "enabled": true, + "runs": 200 + }, + "metadata": { + "useLiteralContent": false, + "bytecodeHash": "ipfs", + "appendCBOR": true + }, + "outputSelection": { + "*": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata" + ] + } + }, + "evmVersion": "paris", + "libraries": {} + } + }, + "imports": [ + "lib/ERC721A-Upgradeable/contracts/ERC721AStorage.sol", + "lib/ERC721A-Upgradeable/contracts/ERC721AUpgradeable.sol", + "lib/ERC721A-Upgradeable/contracts/ERC721A__Initializable.sol", + "lib/ERC721A-Upgradeable/contracts/ERC721A__InitializableStorage.sol", + "lib/ERC721A-Upgradeable/contracts/IERC721AUpgradeable.sol", + "lib/forge-std/lib/ds-test/src/test.sol", + "lib/forge-std/src/Base.sol", + "lib/forge-std/src/StdAssertions.sol", + "lib/forge-std/src/StdChains.sol", + "lib/forge-std/src/StdCheats.sol", + "lib/forge-std/src/StdError.sol", + "lib/forge-std/src/StdInvariant.sol", + "lib/forge-std/src/StdJson.sol", + "lib/forge-std/src/StdMath.sol", + "lib/forge-std/src/StdStorage.sol", + "lib/forge-std/src/StdStyle.sol", + "lib/forge-std/src/StdUtils.sol", + "lib/forge-std/src/Test.sol", + "lib/forge-std/src/Vm.sol", + "lib/forge-std/src/console.sol", + "lib/forge-std/src/console2.sol", + "lib/forge-std/src/interfaces/IMulticall3.sol", + "lib/openzeppelin-contracts/contracts/access/Ownable.sol", + "lib/openzeppelin-contracts/contracts/interfaces/draft-IERC1822.sol", + "lib/openzeppelin-contracts/contracts/proxy/Clones.sol", + "lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Proxy.sol", + "lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Upgrade.sol", + "lib/openzeppelin-contracts/contracts/proxy/Proxy.sol", + "lib/openzeppelin-contracts/contracts/proxy/beacon/IBeacon.sol", + "lib/openzeppelin-contracts/contracts/proxy/transparent/ProxyAdmin.sol", + "lib/openzeppelin-contracts/contracts/proxy/transparent/TransparentUpgradeableProxy.sol", + "lib/openzeppelin-contracts/contracts/proxy/utils/Initializable.sol", + "lib/openzeppelin-contracts/contracts/token/ERC20/ERC20.sol", + "lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol", + "lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Metadata.sol", + "lib/openzeppelin-contracts/contracts/token/ERC20/extensions/draft-IERC20Permit.sol", + "lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol", + "lib/openzeppelin-contracts/contracts/token/ERC777/IERC777.sol", + "lib/openzeppelin-contracts/contracts/token/ERC777/IERC777Recipient.sol", + "lib/openzeppelin-contracts/contracts/token/ERC777/IERC777Sender.sol", + "lib/openzeppelin-contracts/contracts/utils/Address.sol", + "lib/openzeppelin-contracts/contracts/utils/Context.sol", + "lib/openzeppelin-contracts/contracts/utils/StorageSlot.sol", + "lib/openzeppelin-contracts/contracts/utils/Strings.sol", + "lib/openzeppelin-contracts/contracts/utils/cryptography/ECDSA.sol", + "lib/openzeppelin-contracts/contracts/utils/introspection/IERC1820Registry.sol", + "lib/openzeppelin-contracts/contracts/utils/math/Math.sol", + "lib/openzeppelin-contracts/contracts/utils/math/SafeCast.sol", + "lib/openzeppelin-contracts/contracts/utils/math/SafeMath.sol", + "lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol", + "lib/openzeppelin-contracts-upgradeable/contracts/access/IAccessControlUpgradeable.sol", + "lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol", + "lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol", + "lib/openzeppelin-contracts-upgradeable/contracts/token/ERC1155/ERC1155Upgradeable.sol", + "lib/openzeppelin-contracts-upgradeable/contracts/token/ERC1155/IERC1155ReceiverUpgradeable.sol", + "lib/openzeppelin-contracts-upgradeable/contracts/token/ERC1155/IERC1155Upgradeable.sol", + "lib/openzeppelin-contracts-upgradeable/contracts/token/ERC1155/extensions/IERC1155MetadataURIUpgradeable.sol", + "lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol", + "lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol", + "lib/openzeppelin-contracts-upgradeable/contracts/utils/StringsUpgradeable.sol", + "lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/ERC165Upgradeable.sol", + "lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/IERC165Upgradeable.sol", + "lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol", + "lib/protocol-monorepo/packages/ethereum-contracts/contracts/apps/SuperTokenV1Library.sol", + "lib/protocol-monorepo/packages/ethereum-contracts/contracts/interfaces/agreements/IConstantFlowAgreementV1.sol", + "lib/protocol-monorepo/packages/ethereum-contracts/contracts/interfaces/agreements/IInstantDistributionAgreementV1.sol", + "lib/protocol-monorepo/packages/ethereum-contracts/contracts/interfaces/superfluid/Definitions.sol", + "lib/protocol-monorepo/packages/ethereum-contracts/contracts/interfaces/superfluid/ISuperAgreement.sol", + "lib/protocol-monorepo/packages/ethereum-contracts/contracts/interfaces/superfluid/ISuperApp.sol", + "lib/protocol-monorepo/packages/ethereum-contracts/contracts/interfaces/superfluid/ISuperToken.sol", + "lib/protocol-monorepo/packages/ethereum-contracts/contracts/interfaces/superfluid/ISuperTokenFactory.sol", + "lib/protocol-monorepo/packages/ethereum-contracts/contracts/interfaces/superfluid/ISuperfluid.sol", + "lib/protocol-monorepo/packages/ethereum-contracts/contracts/interfaces/superfluid/ISuperfluidGovernance.sol", + "lib/protocol-monorepo/packages/ethereum-contracts/contracts/interfaces/superfluid/ISuperfluidToken.sol", + "lib/protocol-monorepo/packages/ethereum-contracts/contracts/interfaces/tokens/ERC20WithTokenInfo.sol", + "lib/protocol-monorepo/packages/ethereum-contracts/contracts/interfaces/tokens/TokenInfo.sol", + "lib/protocol-monorepo/packages/ethereum-contracts/contracts/libs/ERC777Helper.sol", + "lib/protocol-monorepo/packages/ethereum-contracts/contracts/libs/EventsEmitter.sol", + "lib/protocol-monorepo/packages/ethereum-contracts/contracts/libs/FixedSizeData.sol", + "lib/protocol-monorepo/packages/ethereum-contracts/contracts/superfluid/SuperToken.sol", + "lib/protocol-monorepo/packages/ethereum-contracts/contracts/superfluid/SuperfluidToken.sol", + "lib/protocol-monorepo/packages/ethereum-contracts/contracts/upgradability/UUPSProxiable.sol", + "lib/protocol-monorepo/packages/ethereum-contracts/contracts/upgradability/UUPSUtils.sol", + "src/factory/AnotherCloneFactory.sol", + "src/libraries/ABDataTypes.sol", + "src/libraries/ABErrors.sol", + "src/libraries/ABEvents.sol", + "src/royalty/ABRoyalty.sol", + "src/royalty/IABRoyalty.sol", + "src/token/ERC1155/ERC1155AB.sol", + "src/token/ERC721/ERC721AB.sol", + "src/token/ERC721/ERC721ABOE.sol", + "src/utils/ABDataRegistry.sol", + "src/utils/ABVerifier.sol", + "src/utils/IABDataRegistry.sol", + "src/utils/IABVerifier.sol", + "test/_mocks/ABSuperToken.sol", + "test/_mocks/MockToken.sol", + "test/_testdata/ERC721ABOE.td.sol" + ], + "versionRequirement": "^0.8.18", + "artifacts": { + "ERC721ABOETest": { + "0.8.19+commit.7dd6d404.Darwin.appleclang": "ERC721ABOE.t.sol/ERC721ABOETest.json" } } }, "test/utils/ABDataRegistry.t.sol": { - "lastModificationDate": 1690364495334, - "contentHash": "b11a60b7b176b82ce0b6f935f79a7d1f", + "lastModificationDate": 1698763838746, + "contentHash": "c5537f68bf6c3c9c871bbde7e9d6c952", "sourceName": "test/utils/ABDataRegistry.t.sol", "solcConfig": { "settings": { @@ -7061,6 +7716,7 @@ "runs": 200 }, "metadata": { + "useLiteralContent": false, "bytecodeHash": "ipfs", "appendCBOR": true }, @@ -7167,8 +7823,8 @@ } }, "test/utils/ABVerifier.t.sol": { - "lastModificationDate": 1690277038555, - "contentHash": "cf028e2861199c5b945ef2e0e1e81444", + "lastModificationDate": 1698045674549, + "contentHash": "9c9577365435fdbc47bbf215a8914342", "sourceName": "test/utils/ABVerifier.t.sol", "solcConfig": { "settings": { @@ -7177,6 +7833,7 @@ "runs": 200 }, "metadata": { + "useLiteralContent": false, "bytecodeHash": "ipfs", "appendCBOR": true }, diff --git a/foundry.toml b/foundry.toml index e9efac0..f5f2839 100644 --- a/foundry.toml +++ b/foundry.toml @@ -22,7 +22,7 @@ base-goerli = { key = "${ETHERSCAN_API_KEY}", chain = 84531, url = "https://api- base = { key = "${BASE_ETHERSCAN_API_KEY}", chain = 8453, url = "https://api.basescan.org/api" } [fuzz] -seed = 10 +seed = "0x3130" # See more config options https://github.com/foundry-rs/foundry/tree/master/config diff --git a/lcov.info b/lcov.info index b5a3fb6..924951b 100644 --- a/lcov.info +++ b/lcov.info @@ -32,37 +32,55 @@ BRF:0 BRH:0 end_of_record TN: +SF:script/base-goerli/deploy-implementations.s.sol +FN:19,DeployImplementation.run +FNDA:0,DeployImplementation.run +DA:21,0 +DA:24,0 +DA:27,0 +DA:28,0 +DA:31,0 +DA:32,0 +DA:34,0 +FNF:1 +FNH:0 +LF:7 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: SF:script/base-goerli/deploy-platform.s.sol -FN:33,DeployPlatform.run +FN:35,DeployPlatform.run FNDA:0,DeployPlatform.run -DA:35,0 -DA:36,0 +DA:37,0 DA:39,0 DA:42,0 -DA:43,0 -DA:44,0 +DA:45,0 +DA:46,0 DA:47,0 -DA:57,0 -DA:62,0 -BRDA:62,0,0,- -BRDA:62,0,1,- -DA:63,0 -DA:67,0 -DA:72,0 -BRDA:72,1,0,- -BRDA:72,1,1,- -DA:73,0 -DA:77,0 -DA:88,0 -BRDA:88,2,0,- -BRDA:88,2,1,- -DA:89,0 +DA:50,0 +DA:60,0 +DA:65,0 +BRDA:65,0,0,- +BRDA:65,0,1,- +DA:66,0 +DA:70,0 +DA:75,0 +BRDA:75,1,0,- +BRDA:75,1,1,- +DA:76,0 +DA:80,0 +DA:91,0 +BRDA:91,2,0,- +BRDA:91,2,1,- DA:92,0 -DA:97,0 -DA:99,0 -FN:102,DeployPlatform._writeAddressToFile +DA:95,0 +DA:100,0 +DA:102,0 +FN:105,DeployPlatform._writeAddressToFile FNDA:0,DeployPlatform._writeAddressToFile -DA:103,0 +DA:106,0 FNF:2 FNH:0 LF:20 @@ -121,40 +139,57 @@ BRF:0 BRH:0 end_of_record TN: +SF:script/base/deploy-implementations.s.sol +FN:20,DeployImplementation.run +FNDA:0,DeployImplementation.run +DA:22,0 +DA:25,0 +DA:28,0 +DA:29,0 +DA:32,0 +DA:33,0 +DA:35,0 +FNF:1 +FNH:0 +LF:7 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: SF:script/base/deploy-platform.s.sol -FN:35,DeployPlatform.run +FN:37,DeployPlatform.run FNDA:0,DeployPlatform.run -DA:37,0 -DA:38,0 -DA:41,0 -DA:44,0 +DA:39,0 +DA:42,0 DA:45,0 DA:46,0 -DA:49,0 -DA:59,0 -DA:64,0 -BRDA:64,0,0,- -BRDA:64,0,1,- -DA:65,0 -DA:69,0 -DA:74,0 -BRDA:74,1,0,- -BRDA:74,1,1,- -DA:75,0 -DA:79,0 -DA:90,0 -BRDA:90,2,0,- -BRDA:90,2,1,- -DA:91,0 -DA:94,0 -DA:99,0 +DA:47,0 +DA:50,0 +DA:61,0 +DA:66,0 +BRDA:66,0,0,- +BRDA:66,0,1,- +DA:67,0 +DA:71,0 +DA:76,0 +BRDA:76,1,0,- +BRDA:76,1,1,- +DA:77,0 +DA:81,0 +DA:92,0 +BRDA:92,2,0,- +BRDA:92,2,1,- +DA:93,0 +DA:96,0 DA:101,0 -FN:104,DeployPlatform._writeAddressToFile -FNDA:0,DeployPlatform._writeAddressToFile DA:105,0 +FN:108,DeployPlatform._writeAddressToFile +FNDA:0,DeployPlatform._writeAddressToFile +DA:109,0 FNF:2 FNH:0 -LF:20 +LF:19 LH:0 BRF:6 BRH:0 @@ -249,694 +284,704 @@ BRH:0 end_of_record TN: SF:src/factory/AnotherCloneFactory.sol -FN:112,AnotherCloneFactory.initialize -FNDA:2,AnotherCloneFactory.initialize -DA:119,1 -DA:120,1 -DA:121,1 -DA:122,1 -DA:123,1 -DA:126,1 -DA:127,1 -FN:144,AnotherCloneFactory.createCollection721 -FNDA:768,AnotherCloneFactory.createCollection721 -DA:146,512 -DA:149,512 -DA:152,512 -FN:162,AnotherCloneFactory.createCollection1155 -FNDA:768,AnotherCloneFactory.createCollection1155 -DA:164,512 -DA:167,512 -DA:170,512 -FN:190,AnotherCloneFactory.createCollection721FromImplementation -FNDA:768,AnotherCloneFactory.createCollection721FromImplementation -DA:196,512 -BRDA:196,0,0,256 -BRDA:196,0,1,256 -DA:199,256 -DA:202,256 -DA:205,256 -FN:217,AnotherCloneFactory.createPublisherProfile -FNDA:1023,AnotherCloneFactory.createPublisherProfile -DA:222,768 -BRDA:222,1,0,256 -BRDA:222,1,1,512 -DA:225,512 -BRDA:225,2,0,256 -BRDA:225,2,1,256 -DA:228,256 -DA:231,256 -FN:242,AnotherCloneFactory.createPublisherProfile -FNDA:3328,AnotherCloneFactory.createPublisherProfile -DA:244,3072 -BRDA:244,3,0,256 -BRDA:244,3,1,2816 -DA:247,2816 -BRDA:247,4,0,256 -BRDA:247,4,1,2560 -DA:250,2560 -DA:253,2560 -DA:256,2560 -DA:259,2560 -FN:269,AnotherCloneFactory.revokePublisherAccess -FNDA:512,AnotherCloneFactory.revokePublisherAccess -DA:271,256 -FN:281,AnotherCloneFactory.setERC721Implementation -FNDA:257,AnotherCloneFactory.setERC721Implementation -DA:282,1 -FN:292,AnotherCloneFactory.setERC1155Implementation -FNDA:257,AnotherCloneFactory.setERC1155Implementation -DA:293,1 -FN:303,AnotherCloneFactory.setABRoyaltyImplementation -FNDA:257,AnotherCloneFactory.setABRoyaltyImplementation -DA:304,1 -FN:321,AnotherCloneFactory.predictERC721Address -FNDA:256,AnotherCloneFactory.predictERC721Address -DA:322,256 -FN:333,AnotherCloneFactory.predictERC1155Address -FNDA:256,AnotherCloneFactory.predictERC1155Address -DA:334,256 -FN:345,AnotherCloneFactory.hasPublisherRole -FNDA:512,AnotherCloneFactory.hasPublisherRole -DA:346,512 -FN:354,AnotherCloneFactory._setupCollection -FNDA:1280,AnotherCloneFactory._setupCollection -DA:356,1280 -DA:359,1280 -DA:362,1280 +FN:115,AnotherCloneFactory.initialize +FNDA:0,AnotherCloneFactory.initialize +DA:122,0 +DA:123,0 +DA:124,0 +DA:125,0 +DA:126,0 +DA:128,0 +DA:131,0 +DA:132,0 +FN:149,AnotherCloneFactory.createCollection721 +FNDA:0,AnotherCloneFactory.createCollection721 +DA:151,0 +DA:154,0 +DA:157,0 +FN:167,AnotherCloneFactory.createCollection1155 +FNDA:0,AnotherCloneFactory.createCollection1155 +DA:169,0 +DA:172,0 +DA:175,0 +FN:195,AnotherCloneFactory.createCollection721FromImplementation +FNDA:0,AnotherCloneFactory.createCollection721FromImplementation +DA:201,0 +BRDA:201,0,0,- +BRDA:201,0,1,- +DA:204,0 +DA:207,0 +DA:210,0 +FN:222,AnotherCloneFactory.createPublisherProfile +FNDA:0,AnotherCloneFactory.createPublisherProfile +DA:227,0 +BRDA:227,1,0,- +BRDA:227,1,1,- +DA:230,0 +BRDA:230,2,0,- +BRDA:230,2,1,- +DA:233,0 +DA:236,0 +FN:247,AnotherCloneFactory.createPublisherProfile +FNDA:0,AnotherCloneFactory.createPublisherProfile +DA:249,0 +BRDA:249,3,0,- +BRDA:249,3,1,- +DA:252,0 +BRDA:252,4,0,- +BRDA:252,4,1,- +DA:255,0 +DA:258,0 +DA:261,0 +DA:264,0 +FN:274,AnotherCloneFactory.revokePublisherAccess +FNDA:0,AnotherCloneFactory.revokePublisherAccess +DA:276,0 +FN:286,AnotherCloneFactory.setERC721Implementation +FNDA:0,AnotherCloneFactory.setERC721Implementation +DA:287,0 +FN:297,AnotherCloneFactory.setERC1155Implementation +FNDA:0,AnotherCloneFactory.setERC1155Implementation +DA:298,0 +FN:308,AnotherCloneFactory.setABRoyaltyImplementation +FNDA:0,AnotherCloneFactory.setABRoyaltyImplementation +DA:309,0 +FN:326,AnotherCloneFactory.predictERC721Address +FNDA:0,AnotherCloneFactory.predictERC721Address +DA:327,0 +FN:338,AnotherCloneFactory.predictERC1155Address +FNDA:0,AnotherCloneFactory.predictERC1155Address +DA:339,0 +FN:350,AnotherCloneFactory.hasPublisherRole +FNDA:0,AnotherCloneFactory.hasPublisherRole +DA:351,0 +FN:359,AnotherCloneFactory._setupCollection +FNDA:0,AnotherCloneFactory._setupCollection +DA:361,0 +DA:364,0 +DA:367,0 +DA:370,0 FNF:14 -FNH:14 -LF:37 -LH:37 +FNH:0 +LF:39 +LH:0 BRF:10 -BRH:10 +BRH:0 end_of_record TN: SF:src/royalty/ABRoyalty.sol FN:105,ABRoyalty.initialize -FNDA:2562,ABRoyalty.initialize -DA:107,2561 -DA:108,2561 -DA:109,2561 -DA:110,2561 -DA:113,2561 +FNDA:0,ABRoyalty.initialize +DA:107,0 +DA:108,0 +DA:109,0 +DA:110,0 +DA:113,0 FN:129,ABRoyalty.claimPayout -FNDA:256,ABRoyalty.claimPayout -DA:131,256 +FNDA:0,ABRoyalty.claimPayout +DA:131,0 FN:141,ABRoyalty.claimPayouts -FNDA:256,ABRoyalty.claimPayouts -DA:142,256 -DA:143,256 -DA:144,512 +FNDA:0,ABRoyalty.claimPayouts +DA:142,0 +DA:143,0 +DA:144,0 FN:164,ABRoyalty.distribute -FNDA:3072,ABRoyalty.distribute -DA:165,3072 +FNDA:0,ABRoyalty.distribute +DA:165,0 BRDA:165,0,0,- -BRDA:165,0,1,2560 -DA:166,3072 +BRDA:165,0,1,- +DA:166,0 FN:176,ABRoyalty.claimPayoutsOnBehalf -FNDA:256,ABRoyalty.claimPayoutsOnBehalf -DA:178,256 +FNDA:0,ABRoyalty.claimPayoutsOnBehalf +DA:178,0 FN:188,ABRoyalty.claimPayoutsOnBehalf -FNDA:256,ABRoyalty.claimPayoutsOnBehalf -DA:189,256 -DA:190,256 -DA:191,512 +FNDA:0,ABRoyalty.claimPayoutsOnBehalf +DA:189,0 +DA:190,0 +DA:191,0 FN:203,ABRoyalty.claimPayoutsOnMultipleBehalf -FNDA:256,ABRoyalty.claimPayoutsOnMultipleBehalf -DA:208,256 -DA:210,512 +FNDA:0,ABRoyalty.claimPayoutsOnMultipleBehalf +DA:208,0 +DA:210,0 FN:222,ABRoyalty.claimPayoutsOnMultipleBehalf -FNDA:256,ABRoyalty.claimPayoutsOnMultipleBehalf -DA:226,256 -DA:227,256 -DA:230,256 -DA:232,512 -DA:234,1024 +FNDA:0,ABRoyalty.claimPayoutsOnMultipleBehalf +DA:226,0 +DA:227,0 +DA:230,0 +DA:232,0 +DA:234,0 FN:255,ABRoyalty.initPayoutIndex -FNDA:8007,ABRoyalty.initPayoutIndex -DA:259,7751 -DA:260,7751 +FNDA:768,ABRoyalty.initPayoutIndex +DA:259,768 +DA:260,768 BRDA:260,1,0,- -BRDA:260,1,1,7751 +BRDA:260,1,1,768 DA:261,0 -DA:263,7751 -DA:264,7751 +DA:263,768 +DA:264,768 FN:277,ABRoyalty.updatePayout1155 -FNDA:1845,ABRoyalty.updatePayout1155 -DA:283,1589 -DA:284,1589 -BRDA:284,2,0,256 -BRDA:284,2,1,1333 -DA:286,1333 -DA:288,2617 -DA:291,2617 +FNDA:0,ABRoyalty.updatePayout1155 +DA:283,0 +DA:284,0 +BRDA:284,2,0,- +BRDA:284,2,1,- +DA:286,0 +DA:288,0 +DA:291,0 FN:305,ABRoyalty.updatePayout721 -FNDA:8215,ABRoyalty.updatePayout721 -DA:310,7959 -DA:313,7959 +FNDA:512,ABRoyalty.updatePayout721 +DA:310,512 +DA:313,512 FN:324,ABRoyalty.distributeOnBehalf FNDA:256,ABRoyalty.distributeOnBehalf DA:325,256 FN:343,ABRoyalty.getUserSubscription -FNDA:5632,ABRoyalty.getUserSubscription -DA:345,5632 +FNDA:0,ABRoyalty.getUserSubscription +DA:345,0 FN:357,ABRoyalty.getClaimableAmount FNDA:256,ABRoyalty.getClaimableAmount DA:359,256 FN:372,ABRoyalty.getIndexInfo -FNDA:256,ABRoyalty.getIndexInfo -DA:377,256 +FNDA:0,ABRoyalty.getIndexInfo +DA:377,0 FN:395,ABRoyalty._gainShare -FNDA:10576,ABRoyalty._gainShare -DA:397,10576 -BRDA:397,3,0,9808 -BRDA:397,3,1,10576 -DA:400,9808 -DA:401,9808 -DA:404,9808 +FNDA:512,ABRoyalty._gainShare +DA:397,512 +BRDA:397,3,0,512 +BRDA:397,3,1,512 +DA:400,512 +DA:401,512 +DA:404,512 FN:417,ABRoyalty._loseShare -FNDA:10576,ABRoyalty._loseShare -DA:419,10576 -BRDA:419,4,0,1792 -BRDA:419,4,1,10576 -DA:422,1792 -DA:423,1792 -DA:426,1792 -BRDA:426,5,0,1536 -BRDA:426,5,1,256 -DA:428,1536 -DA:431,256 +FNDA:512,ABRoyalty._loseShare +DA:419,512 +BRDA:419,4,0,- +BRDA:419,4,1,512 +DA:422,0 +DA:423,0 +DA:426,0 +BRDA:426,5,0,- +BRDA:426,5,1,- +DA:428,0 +DA:431,0 FN:444,ABRoyalty._distribute -FNDA:3328,ABRoyalty._distribute -DA:446,3328 -DA:447,3328 -DA:450,3328 -DA:453,3072 +FNDA:256,ABRoyalty._distribute +DA:446,256 +DA:447,256 +DA:450,256 +DA:453,256 FN:463,ABRoyalty._claimPayout -FNDA:3072,ABRoyalty._claimPayout -DA:465,3072 +FNDA:0,ABRoyalty._claimPayout +DA:465,0 FNF:19 -FNH:19 +FNH:7 LF:53 -LH:52 +LH:17 BRF:12 -BRH:10 +BRH:4 end_of_record TN: SF:src/token/ERC1155/ERC1155AB.sol FN:103,ERC1155AB.initialize -FNDA:514,ERC1155AB.initialize -DA:105,513 -DA:108,513 -DA:109,513 -DA:110,513 -DA:113,513 -DA:116,513 -DA:119,513 -DA:122,513 -FN:138,ERC1155AB.mint -FNDA:13,ERC1155AB.mint -DA:140,13 -DA:143,13 -BRDA:143,0,0,1 -BRDA:143,0,1,12 -DA:146,12 -DA:149,12 -BRDA:149,1,0,1 -BRDA:149,1,1,10 -DA:152,10 -BRDA:152,2,0,2 -BRDA:152,2,1,8 -DA:153,2 -DA:157,8 -BRDA:157,3,0,1 -BRDA:157,3,1,6 -DA:160,7 -BRDA:159,4,0,1 -BRDA:159,4,1,6 -DA:164,1 -DA:169,7 -BRDA:169,5,0,1 -BRDA:169,5,1,6 -DA:170,1 -DA:174,6 -BRDA:174,6,0,2 -BRDA:174,6,1,4 -DA:175,2 -DA:179,4 -DA:182,4 -DA:185,4 -FN:195,ERC1155AB.mintBatch -FNDA:8,ERC1155AB.mintBatch -DA:196,8 -DA:198,8 -DA:199,8 -DA:201,8 -DA:203,8 -DA:205,8 -DA:207,14 -DA:210,14 -BRDA:210,7,0,1 -BRDA:210,7,1,13 -DA:213,13 -DA:216,13 -BRDA:216,8,0,1 -BRDA:216,8,1,12 -DA:219,12 -BRDA:219,9,0,1 -BRDA:219,9,1,11 -DA:220,1 -DA:224,11 -BRDA:224,10,0,1 -BRDA:224,10,1,10 -DA:227,11 -BRDA:226,11,0,1 -BRDA:226,11,1,10 -DA:231,1 -DA:236,10 -BRDA:235,12,0,1 -BRDA:235,12,1,9 -DA:239,1 -DA:243,9 -DA:246,9 -DA:249,9 -DA:252,9 -DA:253,9 -DA:257,3 -BRDA:257,13,0,1 -BRDA:257,13,1,2 -DA:258,1 -DA:260,2 -FN:277,ERC1155AB.initDrop -FNDA:22,ERC1155AB.initDrop -DA:278,21 -FN:288,ERC1155AB.initDrop -FNDA:11,ERC1155AB.initDrop -DA:289,10 -DA:291,10 -DA:292,30 -FN:304,ERC1155AB.setDropPhases -FNDA:31,ERC1155AB.setDropPhases -DA:309,30 -DA:311,30 -DA:313,30 -DA:314,30 -DA:315,33 -DA:318,33 -BRDA:318,14,0,1 -BRDA:318,14,1,32 -DA:319,1 -DA:323,32 -DA:324,32 -DA:328,29 -DA:330,29 -FN:339,ERC1155AB.withdrawToRightholder -FNDA:1280,ERC1155AB.withdrawToRightholder -DA:340,1024 -DA:342,1024 -BRDA:342,15,0,256 -BRDA:342,15,1,768 -DA:344,768 -DA:345,768 -DA:346,768 -DA:348,768 -BRDA:348,16,0,- -BRDA:348,16,1,512 -DA:349,512 -DA:350,512 -BRDA:350,17,0,- -BRDA:350,17,1,512 -DA:353,768 -BRDA:353,18,0,- -BRDA:353,18,1,512 -DA:354,512 -DA:355,512 -BRDA:355,19,0,- -BRDA:355,19,1,512 -FN:367,ERC1155AB.withdrawERC20 -FNDA:257,ERC1155AB.withdrawERC20 -DA:369,1 -FN:381,ERC1155AB.setTokenURI -FNDA:2,ERC1155AB.setTokenURI -DA:382,1 -FN:393,ERC1155AB.setMaxSupply -FNDA:2,ERC1155AB.setMaxSupply -DA:394,2 -BRDA:394,20,0,1 -BRDA:394,20,1,1 -DA:395,1 -FN:412,ERC1155AB.uri -FNDA:2,ERC1155AB.uri -DA:413,2 -FN:425,ERC1155AB.getPhaseInfo -FNDA:4,ERC1155AB.getPhaseInfo -DA:426,4 -FN:429,ERC1155AB.supportsInterface -FNDA:1,ERC1155AB.supportsInterface -DA:436,1 -DA:437,1 -FN:452,ERC1155AB._initDrop -FNDA:51,ERC1155AB._initDrop -DA:455,51 -BRDA:454,21,0,2 -BRDA:454,21,1,49 -DA:457,2 -DA:459,49 -DA:462,49 -DA:465,49 -DA:468,49 -DA:471,49 -DA:474,49 -DA:477,49 -BRDA:477,22,0,1 -BRDA:477,22,1,47 -DA:479,48 -BRDA:479,23,0,1 -BRDA:479,23,1,47 -DA:482,47 -DA:485,47 -DA:489,48 -FN:500,ERC1155AB._isPhaseActive -FNDA:25,ERC1155AB._isPhaseActive -DA:502,25 -BRDA:502,24,0,1 -BRDA:502,24,1,24 -DA:505,24 -FN:508,ERC1155AB._beforeTokenTransfer -FNDA:53,ERC1155AB._beforeTokenTransfer -DA:516,53 -DA:517,53 -DA:520,53 -DA:521,57 -BRDA:521,25,0,57 -BRDA:521,25,1,57 -DA:525,53 -DA:526,53 -DA:528,53 -DA:531,53 -DA:532,57 -BRDA:532,26,0,- -BRDA:532,26,1,57 -DA:533,57 -DA:534,57 -DA:535,57 -DA:538,53 +FNDA:0,ERC1155AB.initialize +DA:105,0 +DA:108,0 +DA:109,0 +DA:112,0 +DA:115,0 +DA:118,0 +DA:121,0 +FN:137,ERC1155AB.mint +FNDA:0,ERC1155AB.mint +DA:139,0 +DA:142,0 +BRDA:142,0,0,- +BRDA:142,0,1,- +DA:145,0 +DA:148,0 +BRDA:148,1,0,- +BRDA:148,1,1,- +DA:151,0 +BRDA:151,2,0,- +BRDA:151,2,1,- +DA:152,0 +DA:156,0 +BRDA:156,3,0,- +BRDA:156,3,1,- +DA:159,0 +BRDA:158,4,0,- +BRDA:158,4,1,- +DA:163,0 +DA:168,0 +BRDA:168,5,0,- +BRDA:168,5,1,- +DA:169,0 +DA:173,0 +BRDA:173,6,0,- +BRDA:173,6,1,- +DA:174,0 +DA:178,0 +DA:181,0 +DA:184,0 +FN:194,ERC1155AB.mintBatch +FNDA:0,ERC1155AB.mintBatch +DA:195,0 +DA:197,0 +DA:198,0 +DA:200,0 +DA:202,0 +DA:204,0 +DA:206,0 +DA:209,0 +BRDA:209,7,0,- +BRDA:209,7,1,- +DA:212,0 +DA:215,0 +BRDA:215,8,0,- +BRDA:215,8,1,- +DA:218,0 +BRDA:218,9,0,- +BRDA:218,9,1,- +DA:219,0 +DA:223,0 +BRDA:223,10,0,- +BRDA:223,10,1,- +DA:226,0 +BRDA:225,11,0,- +BRDA:225,11,1,- +DA:230,0 +DA:235,0 +BRDA:234,12,0,- +BRDA:234,12,1,- +DA:238,0 +DA:242,0 +DA:245,0 +DA:248,0 +DA:251,0 +DA:252,0 +DA:256,0 +BRDA:256,13,0,- +BRDA:256,13,1,- +DA:257,0 +DA:259,0 +FN:276,ERC1155AB.initDrop +FNDA:0,ERC1155AB.initDrop +DA:277,0 +FN:287,ERC1155AB.initDrop +FNDA:0,ERC1155AB.initDrop +DA:288,0 +DA:290,0 +DA:291,0 +FN:303,ERC1155AB.setDropPhases +FNDA:0,ERC1155AB.setDropPhases +DA:305,0 +DA:307,0 +DA:309,0 +DA:310,0 +DA:311,0 +DA:314,0 +BRDA:314,14,0,- +BRDA:314,14,1,- +DA:315,0 +DA:319,0 +DA:320,0 +DA:324,0 +DA:326,0 +FN:335,ERC1155AB.withdrawToRightholder +FNDA:0,ERC1155AB.withdrawToRightholder +DA:336,0 +DA:338,0 +BRDA:338,15,0,- +BRDA:338,15,1,- +DA:340,0 +DA:341,0 +DA:342,0 +DA:344,0 +BRDA:344,16,0,- +BRDA:344,16,1,- +DA:345,0 +DA:346,0 +BRDA:346,17,0,- +BRDA:346,17,1,- +DA:349,0 +BRDA:349,18,0,- +BRDA:349,18,1,- +DA:350,0 +DA:351,0 +BRDA:351,19,0,- +BRDA:351,19,1,- +FN:363,ERC1155AB.withdrawERC20 +FNDA:0,ERC1155AB.withdrawERC20 +DA:365,0 +FN:377,ERC1155AB.setTokenURI +FNDA:0,ERC1155AB.setTokenURI +DA:378,0 +FN:389,ERC1155AB.setMaxSupply +FNDA:0,ERC1155AB.setMaxSupply +DA:390,0 +BRDA:390,20,0,- +BRDA:390,20,1,- +DA:391,0 +FN:408,ERC1155AB.uri +FNDA:0,ERC1155AB.uri +DA:409,0 +FN:421,ERC1155AB.getPhaseInfo +FNDA:0,ERC1155AB.getPhaseInfo +DA:422,0 +FN:425,ERC1155AB.supportsInterface +FNDA:0,ERC1155AB.supportsInterface +DA:426,0 +FN:441,ERC1155AB._initDrop +FNDA:0,ERC1155AB._initDrop +DA:444,0 +BRDA:443,21,0,- +BRDA:443,21,1,- +DA:446,0 +DA:448,0 +DA:451,0 +DA:454,0 +DA:457,0 +DA:460,0 +DA:463,0 +DA:466,0 +BRDA:466,22,0,- +BRDA:466,22,1,- +DA:468,0 +BRDA:468,23,0,- +BRDA:468,23,1,- +DA:471,0 +DA:474,0 +DA:478,0 +FN:489,ERC1155AB._isPhaseActive +FNDA:0,ERC1155AB._isPhaseActive +DA:491,0 +BRDA:491,24,0,- +BRDA:491,24,1,- +DA:494,0 +FN:497,ERC1155AB._beforeTokenTransfer +FNDA:0,ERC1155AB._beforeTokenTransfer +DA:505,0 +DA:506,0 +DA:509,0 +DA:510,0 +BRDA:510,25,0,- +BRDA:510,25,1,- +DA:514,0 +DA:515,0 +DA:517,0 +DA:520,0 +DA:521,0 +BRDA:521,26,0,- +BRDA:521,26,1,- +DA:522,0 +DA:523,0 +DA:524,0 +DA:527,0 FNF:16 -FNH:16 -LF:111 -LH:111 +FNH:0 +LF:109 +LH:0 BRF:54 -BRH:49 +BRH:0 end_of_record TN: SF:src/token/ERC721/ERC721AB.sol FN:116,ERC721AB.initialize -FNDA:770,ERC721AB.initialize -DA:122,769 -DA:125,769 -DA:126,769 -DA:127,769 -DA:129,769 -DA:132,769 -DA:135,769 -DA:138,769 -FN:156,ERC721AB.mint -FNDA:12,ERC721AB.mint -DA:158,12 -BRDA:158,0,0,1 -BRDA:158,0,1,10 -DA:161,10 -DA:164,10 -BRDA:164,1,0,2 -BRDA:164,1,1,8 -DA:165,2 -DA:169,8 -BRDA:169,2,0,1 -BRDA:169,2,1,6 -DA:171,7 -BRDA:171,3,0,1 -BRDA:171,3,1,6 -DA:172,1 -DA:177,7 -BRDA:177,4,0,1 -BRDA:177,4,1,6 -DA:180,6 -BRDA:180,5,0,2 -BRDA:180,5,1,4 -DA:183,4 -DA:186,4 -FN:208,ERC721AB.initDrop -FNDA:539,ERC721AB.initDrop -DA:217,538 -BRDA:217,6,0,1 -BRDA:217,6,1,537 -DA:221,537 -BRDA:220,7,0,2 -BRDA:220,7,1,535 -DA:223,2 -DA:226,535 -DA:229,535 -DA:232,535 -DA:235,535 -DA:238,535 -BRDA:238,8,0,1 -BRDA:238,8,1,532 -DA:239,533 -BRDA:239,9,0,1 -BRDA:239,9,1,532 -DA:240,532 -FN:251,ERC721AB.setBaseURI -FNDA:2,ERC721AB.setBaseURI -DA:252,1 -FN:262,ERC721AB.setSharePerToken -FNDA:512,ERC721AB.setSharePerToken -DA:263,256 -FN:274,ERC721AB.setDropPhases -FNDA:16,ERC721AB.setDropPhases -DA:276,15 -BRDA:276,10,0,2 -BRDA:276,10,1,15 -DA:277,2 -DA:280,15 -DA:282,15 -DA:284,15 -DA:285,22 -DA:288,22 -BRDA:288,11,0,1 -BRDA:288,11,1,21 -DA:289,1 -DA:292,21 -DA:293,21 -DA:296,14 -FN:305,ERC721AB.withdrawToRightholder -FNDA:1280,ERC721AB.withdrawToRightholder -DA:306,1024 -DA:308,1024 -BRDA:308,12,0,256 -BRDA:308,12,1,768 -DA:310,768 -DA:311,768 -DA:312,768 -DA:314,768 -BRDA:314,13,0,- -BRDA:314,13,1,512 -DA:315,512 -DA:316,512 -BRDA:316,14,0,- -BRDA:316,14,1,512 -DA:319,768 -BRDA:319,15,0,- -BRDA:319,15,1,512 -DA:320,512 -DA:321,512 -BRDA:321,16,0,- -BRDA:321,16,1,512 -FN:333,ERC721AB.withdrawERC20 -FNDA:257,ERC721AB.withdrawERC20 -DA:335,1 -FN:345,ERC721AB.setMaxSupply -FNDA:2,ERC721AB.setMaxSupply -DA:346,2 -BRDA:346,17,0,1 -BRDA:346,17,1,1 -DA:347,1 -FN:356,ERC721AB.supportsInterface -FNDA:1,ERC721AB.supportsInterface -DA:363,1 -DA:364,1 -FN:373,ERC721AB.symbol -FNDA:2,ERC721AB.symbol -DA:374,2 -BRDA:374,18,0,1 -BRDA:374,18,1,2 -DA:375,1 -FN:387,ERC721AB.tokenURI -FNDA:8,ERC721AB.tokenURI -DA:388,8 -BRDA:388,19,0,1 -BRDA:388,19,1,7 -DA:390,7 -DA:392,7 -BRDA:392,20,0,1 -BRDA:392,20,1,6 -DA:393,1 -DA:395,6 -DA:397,6 -DA:398,6 -DA:400,6 -BRDA:400,21,0,5 -BRDA:400,21,1,1 -DA:401,5 -DA:403,1 -FN:422,ERC721AB._isPhaseActive -FNDA:12,ERC721AB._isPhaseActive -DA:424,12 -BRDA:424,22,0,1 -BRDA:424,22,1,11 -DA:425,11 -DA:427,11 -FN:436,ERC721AB._baseURI -FNDA:7,ERC721AB._baseURI -DA:437,7 -FN:446,ERC721AB._startTokenId -FNDA:789,ERC721AB._startTokenId -DA:447,789 -FN:450,ERC721AB._beforeTokenTransfers -FNDA:536,ERC721AB._beforeTokenTransfers -DA:454,536 -BRDA:454,23,0,- -BRDA:454,23,1,535 -DA:455,535 +FNDA:0,ERC721AB.initialize +DA:122,0 +DA:125,0 +DA:126,0 +DA:128,0 +DA:131,0 +DA:134,0 +DA:137,0 +FN:155,ERC721AB.mint +FNDA:0,ERC721AB.mint +DA:157,0 +BRDA:157,0,0,- +BRDA:157,0,1,- +DA:160,0 +DA:163,0 +BRDA:163,1,0,- +BRDA:163,1,1,- +DA:164,0 +DA:168,0 +BRDA:168,2,0,- +BRDA:168,2,1,- +DA:170,0 +BRDA:170,3,0,- +BRDA:170,3,1,- +DA:171,0 +DA:176,0 +BRDA:176,4,0,- +BRDA:176,4,1,- +DA:179,0 +BRDA:179,5,0,- +BRDA:179,5,1,- +DA:182,0 +DA:185,0 +FN:207,ERC721AB.initDrop +FNDA:0,ERC721AB.initDrop +DA:216,0 +BRDA:216,6,0,- +BRDA:216,6,1,- +DA:220,0 +BRDA:219,7,0,- +BRDA:219,7,1,- +DA:222,0 +DA:225,0 +DA:228,0 +DA:231,0 +DA:234,0 +DA:237,0 +BRDA:237,8,0,- +BRDA:237,8,1,- +DA:238,0 +BRDA:238,9,0,- +BRDA:238,9,1,- +DA:239,0 +FN:250,ERC721AB.setBaseURI +FNDA:0,ERC721AB.setBaseURI +DA:251,0 +FN:261,ERC721AB.setSharePerToken +FNDA:0,ERC721AB.setSharePerToken +DA:262,0 +FN:273,ERC721AB.setDropPhases +FNDA:0,ERC721AB.setDropPhases +DA:275,0 +BRDA:275,10,0,- +BRDA:275,10,1,- +DA:276,0 +DA:279,0 +DA:281,0 +DA:283,0 +DA:284,0 +DA:287,0 +BRDA:287,11,0,- +BRDA:287,11,1,- +DA:288,0 +DA:291,0 +DA:292,0 +DA:295,0 +FN:304,ERC721AB.withdrawToRightholder +FNDA:0,ERC721AB.withdrawToRightholder +DA:305,0 +DA:307,0 +BRDA:307,12,0,- +BRDA:307,12,1,- +DA:309,0 +DA:310,0 +DA:311,0 +DA:313,0 +BRDA:313,13,0,- +BRDA:313,13,1,- +DA:314,0 +DA:315,0 +BRDA:315,14,0,- +BRDA:315,14,1,- +DA:318,0 +BRDA:318,15,0,- +BRDA:318,15,1,- +DA:319,0 +DA:320,0 +BRDA:320,16,0,- +BRDA:320,16,1,- +FN:332,ERC721AB.withdrawERC20 +FNDA:0,ERC721AB.withdrawERC20 +DA:334,0 +FN:344,ERC721AB.setMaxSupply +FNDA:0,ERC721AB.setMaxSupply +DA:345,0 +BRDA:345,17,0,- +BRDA:345,17,1,- +DA:346,0 +FN:355,ERC721AB.supportsInterface +FNDA:0,ERC721AB.supportsInterface +DA:356,0 +FN:365,ERC721AB.symbol +FNDA:0,ERC721AB.symbol +DA:366,0 +BRDA:366,18,0,- +BRDA:366,18,1,- +DA:367,0 +FN:379,ERC721AB.tokenURI +FNDA:0,ERC721AB.tokenURI +DA:380,0 +BRDA:380,19,0,- +BRDA:380,19,1,- +DA:382,0 +DA:384,0 +BRDA:384,20,0,- +BRDA:384,20,1,- +DA:385,0 +DA:387,0 +DA:389,0 +DA:390,0 +DA:392,0 +BRDA:392,21,0,- +BRDA:392,21,1,- +DA:393,0 +DA:395,0 +FN:414,ERC721AB._isPhaseActive +FNDA:0,ERC721AB._isPhaseActive +DA:416,0 +BRDA:416,22,0,- +BRDA:416,22,1,- +DA:417,0 +DA:419,0 +FN:428,ERC721AB._baseURI +FNDA:0,ERC721AB._baseURI +DA:429,0 +FN:438,ERC721AB._startTokenId +FNDA:0,ERC721AB._startTokenId +DA:439,0 +FN:442,ERC721AB._beforeTokenTransfers +FNDA:0,ERC721AB._beforeTokenTransfers +DA:446,0 +BRDA:446,23,0,- +BRDA:446,23,1,- +DA:447,0 FNF:16 -FNH:16 -LF:77 -LH:77 +FNH:0 +LF:75 +LH:0 BRF:48 -BRH:43 +BRH:0 end_of_record TN: SF:src/utils/ABDataRegistry.sol -FN:104,ABDataRegistry.initialize +FN:110,ABDataRegistry.initialize FNDA:2,ABDataRegistry.initialize -DA:106,1 -DA:107,1 -DA:109,1 -DA:110,1 DA:112,1 -FN:133,ABDataRegistry.registerDrop -FNDA:1864,ABDataRegistry.registerDrop -DA:139,1608 -DA:142,1608 -DA:145,1608 -DA:147,1608 -BRDA:147,0,0,- -BRDA:147,0,1,1351 -DA:149,1351 -FN:164,ABDataRegistry.on721TokenTransfer -FNDA:1047,ABDataRegistry.on721TokenTransfer -DA:168,1047 -DA:169,1047 -FN:184,ABDataRegistry.on1155TokenTransfer -FNDA:53,ABDataRegistry.on1155TokenTransfer -DA:191,53 -DA:192,53 -FN:212,ABDataRegistry.registerPublisher -FNDA:6656,ABDataRegistry.registerPublisher -DA:216,6400 -BRDA:216,1,0,256 -BRDA:216,1,1,6144 -DA:219,6144 -DA:222,6144 -DA:225,6144 -FN:236,ABDataRegistry.grantCollectionRole -FNDA:1792,ABDataRegistry.grantCollectionRole -DA:238,1536 -FN:257,ABDataRegistry.distributeOnBehalf +DA:113,1 +DA:115,1 +DA:116,1 +DA:118,1 +FN:139,ABDataRegistry.registerDrop +FNDA:1280,ABDataRegistry.registerDrop +DA:145,1024 +DA:148,1024 +DA:151,1024 +DA:153,1024 +BRDA:153,0,0,- +BRDA:153,0,1,768 +DA:155,768 +FN:170,ABDataRegistry.on721TokenTransfer +FNDA:512,ABDataRegistry.on721TokenTransfer +DA:174,512 +DA:175,512 +FN:190,ABDataRegistry.on1155TokenTransfer +FNDA:0,ABDataRegistry.on1155TokenTransfer +DA:197,0 +DA:198,0 +FN:218,ABDataRegistry.registerPublisher +FNDA:3840,ABDataRegistry.registerPublisher +DA:222,3584 +BRDA:222,1,0,256 +BRDA:222,1,1,3328 +DA:225,3328 +DA:228,3328 +DA:231,3328 +FN:242,ABDataRegistry.grantCollectionRole +FNDA:512,ABDataRegistry.grantCollectionRole +DA:244,256 +FN:263,ABDataRegistry.distributeOnBehalf FNDA:768,ABDataRegistry.distributeOnBehalf -DA:261,512 -DA:262,512 -BRDA:262,2,0,256 -BRDA:262,2,1,256 -DA:263,256 -FN:273,ABDataRegistry.setTreasury -FNDA:1024,ABDataRegistry.setTreasury -DA:274,768 -FN:285,ABDataRegistry.setPublisherFee -FNDA:1280,ABDataRegistry.setPublisherFee -DA:286,1280 -FN:297,ABDataRegistry.updatePublisher +DA:267,512 +DA:268,512 +BRDA:268,2,0,256 +BRDA:268,2,1,256 +DA:269,256 +FN:279,ABDataRegistry.setTreasury +FNDA:512,ABDataRegistry.setTreasury +DA:280,256 +FN:291,ABDataRegistry.setPublisherFee +FNDA:256,ABDataRegistry.setPublisherFee +DA:292,256 +DA:293,256 +FN:305,ABDataRegistry.setDropFee +FNDA:0,ABDataRegistry.setDropFee +DA:306,0 +BRDA:306,3,0,- +BRDA:306,3,1,- +DA:307,0 +DA:308,0 +FN:319,ABDataRegistry.updatePublisher FNDA:768,ABDataRegistry.updatePublisher -DA:298,512 -BRDA:298,3,0,256 -BRDA:298,3,1,256 -DA:299,256 -FN:316,ABDataRegistry.isPublisher -FNDA:1024,ABDataRegistry.isPublisher -DA:317,1024 -FN:328,ABDataRegistry.getRoyaltyContract +DA:320,512 +BRDA:320,4,0,256 +BRDA:320,4,1,256 +DA:321,256 +FN:338,ABDataRegistry.isPublisher +FNDA:512,ABDataRegistry.isPublisher +DA:339,512 +FN:350,ABDataRegistry.getRoyaltyContract FNDA:512,ABDataRegistry.getRoyaltyContract -DA:329,512 -FN:340,ABDataRegistry.getPublisherFee +DA:351,512 +FN:362,ABDataRegistry.getPublisherFee FNDA:512,ABDataRegistry.getPublisherFee -DA:341,512 -FN:353,ABDataRegistry.getPayoutDetails -FNDA:2304,ABDataRegistry.getPayoutDetails -DA:354,2304 -DA:355,2304 -FN:370,ABDataRegistry._getNextDropId -FNDA:1608,ABDataRegistry._getNextDropId -DA:371,1608 -FNF:15 -FNH:15 -LF:32 +DA:363,512 +FN:376,ABDataRegistry.getPayoutDetails +FNDA:256,ABDataRegistry.getPayoutDetails +DA:381,256 +BRDA:381,5,0,- +BRDA:381,5,1,256 +DA:382,0 +DA:384,256 +DA:386,256 +FN:401,ABDataRegistry._getNextDropId +FNDA:1024,ABDataRegistry._getNextDropId +DA:402,1024 +FNF:16 +FNH:14 +LF:38 LH:32 -BRF:8 -BRH:7 +BRF:12 +BRH:8 end_of_record TN: SF:src/utils/ABVerifier.sol FN:91,ABVerifier.initialize -FNDA:3,ABVerifier.initialize -DA:92,2 -BRDA:92,0,0,1 -BRDA:92,0,1,1 -DA:93,1 -DA:96,1 -DA:97,1 +FNDA:0,ABVerifier.initialize +DA:92,0 +BRDA:92,0,0,- +BRDA:92,0,1,- +DA:93,0 +DA:96,0 +DA:97,0 FN:117,ABVerifier.verifySignature721 -FNDA:521,ABVerifier.verifySignature721 -DA:122,521 -DA:124,521 -DA:129,521 +FNDA:0,ABVerifier.verifySignature721 +DA:122,0 +DA:124,0 +DA:129,0 FN:144,ABVerifier.verifySignature1155 -FNDA:788,ABVerifier.verifySignature1155 -DA:151,788 -DA:153,788 -DA:158,788 +FNDA:0,ABVerifier.verifySignature1155 +DA:151,0 +DA:153,0 +DA:158,0 FN:174,ABVerifier.setDefaultSigner -FNDA:2,ABVerifier.setDefaultSigner -DA:175,1 +FNDA:0,ABVerifier.setDefaultSigner +DA:175,0 FN:185,ABVerifier.setCollectionSigner -FNDA:4,ABVerifier.setCollectionSigner -DA:186,3 +FNDA:0,ABVerifier.setCollectionSigner +DA:186,0 FN:203,ABVerifier.getSigner -FNDA:4,ABVerifier.getSigner -DA:204,4 +FNDA:0,ABVerifier.getSigner +DA:204,0 FN:221,ABVerifier._getSigner -FNDA:1313,ABVerifier._getSigner -DA:222,1313 -DA:223,1313 -DA:224,1313 -BRDA:224,1,0,2 -BRDA:224,1,1,1313 -DA:225,2 +FNDA:0,ABVerifier._getSigner +DA:222,0 +DA:223,0 +DA:224,0 +BRDA:224,1,0,- +BRDA:224,1,1,- +DA:225,0 FNF:7 -FNH:7 +FNH:0 LF:17 -LH:17 +LH:0 BRF:4 -BRH:4 +BRH:0 end_of_record TN: SF:test/_mocks/ABSuperToken.sol diff --git a/script/base-goerli/deploy-implementations.s.sol b/script/base-goerli/deploy-implementations.s.sol index 371a5eb..3919796 100644 --- a/script/base-goerli/deploy-implementations.s.sol +++ b/script/base-goerli/deploy-implementations.s.sol @@ -9,11 +9,11 @@ pragma solidity ^0.8.18; import "forge-std/Script.sol"; import {ERC1155AB} from "src/token/ERC1155/ERC1155AB.sol"; -import {ERC721AB} from "src/token/ERC721/ERC721AB.sol"; +import {ERC721ABLE} from "src/token/ERC721/ERC721ABLE.sol"; import {AnotherCloneFactory} from "src/factory/AnotherCloneFactory.sol"; contract DeployImplementation is Script { - ERC721AB public erc721Impl; + ERC721ABLE public erc721Impl; ERC1155AB public erc1155Impl; function run() external { @@ -24,7 +24,7 @@ contract DeployImplementation is Script { vm.startBroadcast(deployerPrivateKey); // Deploy Implementation Contracts - erc721Impl = new ERC721AB(); + erc721Impl = new ERC721ABLE(); erc1155Impl = new ERC1155AB(); // Set new implementation contracts addresses in AnotherCloneFactory diff --git a/script/base-goerli/deploy-platform.s.sol b/script/base-goerli/deploy-platform.s.sol index cb5d84a..e0a3a20 100644 --- a/script/base-goerli/deploy-platform.s.sol +++ b/script/base-goerli/deploy-platform.s.sol @@ -11,7 +11,8 @@ import {ABRoyalty} from "src/royalty/ABRoyalty.sol"; import {ABVerifier} from "src/utils/ABVerifier.sol"; import {AnotherCloneFactory} from "src/factory/AnotherCloneFactory.sol"; import {ERC1155AB} from "src/token/ERC1155/ERC1155AB.sol"; -import {ERC721AB} from "src/token/ERC721/ERC721AB.sol"; +import {ERC721ABLE} from "src/token/ERC721/ERC721ABLE.sol"; +import {ERC721ABOE} from "src/token/ERC721/ERC721ABOE.sol"; contract DeployPlatform is Script { uint256 public constant DROP_ID_OFFSET = 20_000; @@ -21,7 +22,8 @@ contract DeployPlatform is Script { string public constant FACTORY_PATH = "deployment/84531/AnotherCloneFactory/address"; string public constant PROXY_ADMIN_PATH = "deployment/84531/ProxyAdmin/address"; - ERC721AB public erc721Impl; + ERC721ABLE public erc721Impl; + ERC721ABOE public erc721OEImpl; ERC1155AB public erc1155Impl; ABRoyalty public royaltyImpl; ProxyAdmin public proxyAdmin; @@ -42,7 +44,8 @@ contract DeployPlatform is Script { vm.startBroadcast(deployerPrivateKey); // Deploy Implementation Contracts - erc721Impl = new ERC721AB(); + erc721Impl = new ERC721ABLE(); + erc721OEImpl = new ERC721ABOE(); erc1155Impl = new ERC1155AB(); royaltyImpl = new ABRoyalty(); diff --git a/script/base-goerli/deploy-upgrade.s.sol b/script/base-goerli/deploy-upgrade.s.sol new file mode 100644 index 0000000..299bd45 --- /dev/null +++ b/script/base-goerli/deploy-upgrade.s.sol @@ -0,0 +1,40 @@ +/* +forge script script/base-goerli/deploy-upgrade.s.sol:DeployUpgrade --rpc-url base-goerli +forge script script/base-goerli/deploy-upgrade.s.sol:DeployUpgrade --rpc-url base-goerli --broadcast --verify +*/ + +// SPDX-License-Identifier: MIT +pragma solidity ^0.8.18; + +import "forge-std/Script.sol"; + +import {ABDataRegistry} from "src/utils/ABDataRegistry.sol"; +import {ERC721ABOE} from "src/token/ERC721/ERC721ABOE.sol"; +import {ERC721ABLE} from "src/token/ERC721/ERC721ABLE.sol"; +import {AnotherCloneFactory} from "src/factory/AnotherCloneFactory.sol"; + +contract DeployUpgrade is Script { + ERC721ABLE public erc721LimitedEditionImpl; + + function run() external { + // Account to deploy from + uint256 deployerPrivateKey = vm.envUint("PRIVATE_KEY"); + + // Start broadcasting transactions + vm.startBroadcast(deployerPrivateKey); + + // Deploy Implementation Contracts + new ABDataRegistry(); + + // Deploy Implementation Contracts + erc721LimitedEditionImpl = new ERC721ABLE(); + new ERC721ABOE(); + + // Set new implementation contracts addresses in AnotherCloneFactory + AnotherCloneFactory(0x9BE7E2B13f70f170B63c0379663313EcdB527294).setERC721Implementation( + address(erc721LimitedEditionImpl) + ); + + vm.stopBroadcast(); + } +} diff --git a/script/base/deploy-implementations.s.sol b/script/base/deploy-implementations.s.sol index c5e364f..e32941a 100644 --- a/script/base/deploy-implementations.s.sol +++ b/script/base/deploy-implementations.s.sol @@ -9,11 +9,11 @@ pragma solidity ^0.8.18; import "forge-std/Script.sol"; import {ERC1155AB} from "src/token/ERC1155/ERC1155AB.sol"; -import {ERC721AB} from "src/token/ERC721/ERC721AB.sol"; +import {ERC721ABLE} from "src/token/ERC721/ERC721ABLE.sol"; import {AnotherCloneFactory} from "src/factory/AnotherCloneFactory.sol"; contract DeployImplementation is Script { - ERC721AB public erc721Impl; + ERC721ABLE public erc721Impl; ERC1155AB public erc1155Impl; address public anotherCloneFactory = 0x137d7d27af9B4d7b467Ac008AFdcDb8C9Ac4ddd9; @@ -25,7 +25,7 @@ contract DeployImplementation is Script { vm.startBroadcast(deployerPrivateKey); // Deploy Implementation Contracts - erc721Impl = new ERC721AB(); + erc721Impl = new ERC721ABLE(); erc1155Impl = new ERC1155AB(); // Set new implementation contracts addresses in AnotherCloneFactory diff --git a/script/base/deploy-platform.s.sol b/script/base/deploy-platform.s.sol index 85676fe..404ffaf 100644 --- a/script/base/deploy-platform.s.sol +++ b/script/base/deploy-platform.s.sol @@ -11,7 +11,7 @@ import {ABRoyalty} from "src/royalty/ABRoyalty.sol"; import {ABVerifier} from "src/utils/ABVerifier.sol"; import {AnotherCloneFactory} from "src/factory/AnotherCloneFactory.sol"; import {ERC1155AB} from "src/token/ERC1155/ERC1155AB.sol"; -import {ERC721AB} from "src/token/ERC721/ERC721AB.sol"; +import {ERC721ABLE} from "src/token/ERC721/ERC721ABLE.sol"; contract DeployPlatform is Script { uint256 public constant DROP_ID_OFFSET = 10_000; @@ -25,7 +25,7 @@ contract DeployPlatform is Script { string public constant FACTORY_PATH = "deployment/8453/AnotherCloneFactory/address"; string public constant PROXY_ADMIN_PATH = "deployment/8453/ProxyAdmin/address"; - ERC721AB public erc721Impl; + ERC721ABLE public erc721Impl; ERC1155AB public erc1155Impl; ABRoyalty public royaltyImpl; ProxyAdmin public proxyAdmin; @@ -42,7 +42,7 @@ contract DeployPlatform is Script { vm.startBroadcast(deployerPrivateKey); // Deploy Implementation Contracts - erc721Impl = new ERC721AB(); + erc721Impl = new ERC721ABLE(); erc1155Impl = new ERC1155AB(); royaltyImpl = new ABRoyalty(); diff --git a/script/base/deploy-v1_1.s.sol b/script/base/deploy-v1_1.s.sol new file mode 100644 index 0000000..cd34b23 --- /dev/null +++ b/script/base/deploy-v1_1.s.sol @@ -0,0 +1,40 @@ +/* +forge script script/base/deploy-v1_1.s.sol:DeployUpgrade --rpc-url base +forge script script/base/deploy-v1_1.s.sol:DeployUpgrade --rpc-url base --broadcast --verify +*/ + +// SPDX-License-Identifier: MIT +pragma solidity ^0.8.18; + +import "forge-std/Script.sol"; + +import {ERC721ABLE} from "src/token/ERC721/ERC721ABLE.sol"; +import {ERC721ABOE} from "src/token/ERC721/ERC721ABOE.sol"; +import {ABDataRegistry} from "src/utils/ABDataRegistry.sol"; +import {AnotherCloneFactory} from "src/factory/AnotherCloneFactory.sol"; + +contract DeployUpgrade is Script { + function run() external { + // Account to deploy from + uint256 deployerPrivateKey = vm.envUint("PRIVATE_KEY"); + + // Start broadcasting transactions + vm.startBroadcast(deployerPrivateKey); + + // Deploy Implementation Contracts + new ERC721ABLE(); + new ERC721ABOE(); + new ABDataRegistry(); + new AnotherCloneFactory(); + + vm.stopBroadcast(); + + /* + TODO Manually + 1) Update Proxy Implementation (thru Proxy Admin) of ABDataRegistry contract + 2) Update Proxy Implementation (thru Proxy Admin) of AnotherCloneFactory contract + 3) setERC721ABImplementation of AnotherCloneFactory (using erc721LimitedEditionImpl address as parameter) + 4) Update theGraph on Base (added some checks on maxSupply) + */ + } +} diff --git a/script/op/deploy-platform.s.sol b/script/op/deploy-platform.s.sol index e9a84c7..436c8f2 100644 --- a/script/op/deploy-platform.s.sol +++ b/script/op/deploy-platform.s.sol @@ -11,7 +11,7 @@ import {ABRoyalty} from "src/royalty/ABRoyalty.sol"; import {ABVerifier} from "src/utils/ABVerifier.sol"; import {AnotherCloneFactory} from "src/factory/AnotherCloneFactory.sol"; import {ERC1155AB} from "src/token/ERC1155/ERC1155AB.sol"; -import {ERC721AB} from "src/token/ERC721/ERC721AB.sol"; +import {ERC721ABLE} from "src/token/ERC721/ERC721ABLE.sol"; contract DeployPlatform is Script { uint256 public constant DROP_ID_OFFSET = 10_000; @@ -21,7 +21,7 @@ contract DeployPlatform is Script { string public constant FACTORY_PATH = "deployment/420/AnotherCloneFactory/address"; string public constant PROXY_ADMIN_PATH = "deployment/420/ProxyAdmin/address"; - ERC721AB public erc721Impl; + ERC721ABLE public erc721Impl; ERC1155AB public erc1155Impl; ABRoyalty public royaltyImpl; ProxyAdmin public proxyAdmin; @@ -39,7 +39,7 @@ contract DeployPlatform is Script { vm.startBroadcast(deployerPrivateKey); // Deploy Implementation Contracts - erc721Impl = new ERC721AB(); + erc721Impl = new ERC721ABLE(); erc1155Impl = new ERC1155AB(); royaltyImpl = new ABRoyalty(); diff --git a/src/factory/AnotherCloneFactory.sol b/src/factory/AnotherCloneFactory.sol index fbc4f5c..3f14799 100644 --- a/src/factory/AnotherCloneFactory.sol +++ b/src/factory/AnotherCloneFactory.sol @@ -261,7 +261,7 @@ contract AnotherCloneFactory is AccessControlUpgradeable { abDataRegistry.registerPublisher(_account, address(newRoyalty), _publisherFee); // Grant publisher role to `_account` - grantRole(PUBLISHER_ROLE, _account); + _grantRole(PUBLISHER_ROLE, _account); } /** @@ -339,6 +339,23 @@ contract AnotherCloneFactory is AccessControlUpgradeable { _predicted = Clones.predictDeterministicAddress(erc1155Impl, _salt, address(this)); } + /** + * @notice + * Predict the new collection address for a given implementation address + * + * @param _impl implementation contract address to be cloned + * @param _salt address of the new implementation contract + * + * @return _predicted predicted address for the given `_salt` + */ + function predictAddressFromImplementation(address _impl, bytes32 _salt) + external + view + returns (address _predicted) + { + _predicted = Clones.predictDeterministicAddress(_impl, _salt, address(this)); + } + /** * @notice * Returns true if `_account` has `PUBLISHER_ROLE`, false otherwise @@ -347,6 +364,7 @@ contract AnotherCloneFactory is AccessControlUpgradeable { * * @return _hasRole true if `_account` has `PUBLISHER_ROLE`, false otherwise */ + function hasPublisherRole(address _account) external view returns (bool _hasRole) { _hasRole = hasRole(PUBLISHER_ROLE, _account); } diff --git a/src/libraries/ABErrors.sol b/src/libraries/ABErrors.sol index fa4356a..5f14e41 100644 --- a/src/libraries/ABErrors.sol +++ b/src/libraries/ABErrors.sol @@ -39,6 +39,9 @@ library ABErrors { ///@dev Error returned if the drop has already been initialized error DROP_ALREADY_INITIALIZED(); + ///@dev Error returned if the drop has not been initialized + error DROP_NOT_INITIALIZED(); + /// @dev Error returned if supply is insufficient error NOT_ENOUGH_TOKEN_AVAILABLE(); diff --git a/src/token/ERC1155/ERC1155AB.sol b/src/token/ERC1155/ERC1155AB.sol index a748929..29a76c9 100644 --- a/src/token/ERC1155/ERC1155AB.sol +++ b/src/token/ERC1155/ERC1155AB.sol @@ -333,7 +333,7 @@ contract ERC1155AB is ERC1155Upgradeable, OwnableUpgradeable { * */ function withdrawToRightholder() external onlyOwner { - (address abTreasury, uint256 fee) = abDataRegistry.getPayoutDetails(publisher); + (address abTreasury, uint256 fee) = abDataRegistry.getPayoutDetails(publisher, 0); if (abTreasury == address(0)) revert ABErrors.INVALID_PARAMETER(); diff --git a/src/token/ERC721/ERC721AB.sol b/src/token/ERC721/ERC721AB.sol index e95e9e9..fb4568e 100644 --- a/src/token/ERC721/ERC721AB.sol +++ b/src/token/ERC721/ERC721AB.sol @@ -52,7 +52,7 @@ import {ABEvents} from "src/libraries/ABEvents.sol"; import {IABVerifier} from "src/utils/IABVerifier.sol"; import {IABDataRegistry} from "src/utils/IABDataRegistry.sol"; -contract ERC721AB is ERC721AUpgradeable, OwnableUpgradeable { +abstract contract ERC721AB is ERC721AUpgradeable, OwnableUpgradeable { // _____ __ __ // / ___// /_____ _/ /____ _____ // \__ \/ __/ __ `/ __/ _ \/ ___/ @@ -71,9 +71,6 @@ contract ERC721AB is ERC721AUpgradeable, OwnableUpgradeable { /// @dev Drop Identifier uint256 public dropId; - /// @dev Supply cap for this collection - uint256 public maxSupply; - /// @dev Percentage ownership of the full master right for one token (to be divided by 1e6) uint256 public sharePerToken; @@ -86,9 +83,6 @@ contract ERC721AB is ERC721AUpgradeable, OwnableUpgradeable { /// @dev Mapping storing the amount minted per wallet and per phase mapping(address user => mapping(uint256 phaseId => uint256 minted)) public mintedPerPhase; - /// @dev ERC721AB implementation version - uint8 public constant IMPLEMENTATION_VERSION = 1; - // ______ __ __ // / ____/___ ____ _____/ /________ _______/ /_____ _____ // / / / __ \/ __ \/ ___/ __/ ___/ / / / ___/ __/ __ \/ ___/ @@ -113,6 +107,7 @@ contract ERC721AB is ERC721AUpgradeable, OwnableUpgradeable { * @param _abVerifier ABVerifier contract address * @param _name NFT collection name */ + function initialize(address _publisher, address _abDataRegistry, address _abVerifier, string memory _name) external initializerERC721A @@ -137,54 +132,6 @@ contract ERC721AB is ERC721AUpgradeable, OwnableUpgradeable { publisher = _publisher; } - // ______ __ __ ______ __ _ - // / ____/ __/ /____ _________ ____ _/ / / ____/_ ______ _____/ /_(_)___ ____ _____ - // / __/ | |/_/ __/ _ \/ ___/ __ \/ __ `/ / / /_ / / / / __ \/ ___/ __/ / __ \/ __ \/ ___/ - // / /____> maxSupply) { - revert ABErrors.NOT_ENOUGH_TOKEN_AVAILABLE(); - } - - // Check if the current phase is private - if (!phase.isPublic) { - // Check that the user is included in the allowlist - if (!abVerifier.verifySignature721(_to, address(this), _phaseId, _signature)) { - revert ABErrors.NOT_ELIGIBLE(); - } - } - - // Check that user did not mint / is not asking to mint more than the max mint per address for the current phase - if (mintedPerPhase[_to][_phaseId] + _quantity > phase.maxMint) revert ABErrors.MAX_MINT_PER_ADDRESS(); - - // Check that user is sending the correct amount of ETH (will revert if user send too much or not enough) - if (msg.value != phase.price * _quantity) revert ABErrors.INCORRECT_ETH_SENT(); - - // Set quantity minted for `_to` during the current phase - mintedPerPhase[_to][_phaseId] += _quantity; - - // Mint `_quantity` amount to `_to` address - _mint(_to, _quantity); - } - // ____ __ ___ __ _ // / __ \____ / /_ __ / | ____/ /___ ___ (_)___ // / / / / __ \/ / / / / / /| |/ __ / __ `__ \/ / __ \ @@ -192,54 +139,6 @@ contract ERC721AB is ERC721AUpgradeable, OwnableUpgradeable { // \____/_/ /_/_/\__, / /_/ |_\__,_/_/ /_/ /_/_/_/ /_/ // /____/ - /** - * @notice - * Initialize the Drop parameters - * Only the contract owner can perform this operation - * - * @param _maxSupply supply cap for this drop - * @param _sharePerToken percentage ownership of the full master right for one token (to be divided by 1e6) - * @param _mintGenesis amount of genesis tokens to be minted - * @param _genesisRecipient recipient address of genesis tokens - * @param _royaltyCurrency royalty currency contract address - * @param _baseUri base URI for this drop - */ - function initDrop( - uint256 _maxSupply, - uint256 _sharePerToken, - uint256 _mintGenesis, - address _genesisRecipient, - address _royaltyCurrency, - string calldata _baseUri - ) external virtual onlyOwner { - // Check that the drop hasn't been already initialized - if (dropId != 0) revert ABErrors.DROP_ALREADY_INITIALIZED(); - - // Check that share per token & royalty currency are consistent - if ( - (_sharePerToken == 0 && _royaltyCurrency != address(0)) - || (_royaltyCurrency == address(0) && _sharePerToken != 0) - ) revert ABErrors.INVALID_PARAMETER(); - - // Register Drop within ABDropRegistry - dropId = abDataRegistry.registerDrop(publisher, _royaltyCurrency, 0); - - // Set supply cap - maxSupply = _maxSupply; - - // Set the royalty share - sharePerToken = _sharePerToken; - - // Set base URI - baseTokenURI = _baseUri; - - // Mint Genesis tokens to `_genesisRecipient` address - if (_mintGenesis > 0) { - if (_mintGenesis > _maxSupply) revert ABErrors.INVALID_PARAMETER(); - _mint(_genesisRecipient, _mintGenesis); - } - } - /** * @notice * Update the Base URI @@ -302,7 +201,7 @@ contract ERC721AB is ERC721AUpgradeable, OwnableUpgradeable { * */ function withdrawToRightholder() external onlyOwner { - (address abTreasury, uint256 fee) = abDataRegistry.getPayoutDetails(publisher); + (address abTreasury, uint256 fee) = abDataRegistry.getPayoutDetails(publisher, dropId); if (abTreasury == address(0)) revert ABErrors.INVALID_PARAMETER(); @@ -334,18 +233,6 @@ contract ERC721AB is ERC721AUpgradeable, OwnableUpgradeable { IERC20(_token).transfer(msg.sender, _amount); } - /** - * @notice - * Set the maximum supply - * Only the contract owner can perform this operation - * - * @param _maxSupply new maximum supply to be set - */ - function setMaxSupply(uint256 _maxSupply) external onlyOwner { - if (_maxSupply < _totalMinted()) revert ABErrors.INVALID_PARAMETER(); - maxSupply = _maxSupply; - } - // _ ___ ______ __ _ // | | / (_)__ _ __ / ____/_ ______ _____/ /_(_)___ ____ _____ // | | / / / _ \ | /| / / / /_ / / / / __ \/ ___/ __/ / __ \/ __ \/ ___/ @@ -403,6 +290,48 @@ contract ERC721AB is ERC721AUpgradeable, OwnableUpgradeable { // _/ // / / / /_/ __/ / / / / / /_/ / / / __/ / /_/ / / / / /__/ /_/ / /_/ / / / (__ ) // /___/_/ /_/\__/\___/_/ /_/ /_/\__,_/_/ /_/ \__,_/_/ /_/\___/\__/_/\____/_/ /_/____/ + /** + * @notice + * Initialize the Drop parameters + * Only the contract owner can perform this operation + * + * @param _sharePerToken percentage ownership of the full master right for one token (to be divided by 1e6) + * @param _mintGenesis amount of genesis tokens to be minted + * @param _genesisRecipient recipient address of genesis tokens + * @param _royaltyCurrency royalty currency contract address + * @param _baseUri base URI for this drop + */ + function _initDrop( + uint256 _sharePerToken, + uint256 _mintGenesis, + address _genesisRecipient, + address _royaltyCurrency, + string calldata _baseUri + ) internal { + // Check that the drop hasn't been already initialized + if (dropId != 0) revert ABErrors.DROP_ALREADY_INITIALIZED(); + + // Check that share per token & royalty currency are consistent + if ( + (_sharePerToken == 0 && _royaltyCurrency != address(0)) + || (_royaltyCurrency == address(0) && _sharePerToken != 0) + ) revert ABErrors.INVALID_PARAMETER(); + + // Register Drop within ABDropRegistry + dropId = abDataRegistry.registerDrop(publisher, _royaltyCurrency, 0); + + // Set the royalty share + sharePerToken = _sharePerToken; + + // Set base URI + baseTokenURI = _baseUri; + + // Mint Genesis tokens to `_genesisRecipient` address + if (_mintGenesis > 0) { + _mint(_genesisRecipient, _mintGenesis); + } + } + /** * @notice * Returns true if the passed phase ID is active diff --git a/src/token/ERC721/ERC721ABLE.sol b/src/token/ERC721/ERC721ABLE.sol new file mode 100644 index 0000000..80fbb42 --- /dev/null +++ b/src/token/ERC721/ERC721ABLE.sol @@ -0,0 +1,154 @@ +// ██████████████████████████████████ +// ██████████████████████████████████ +// ██████████████████████████████████ +// ██████████████████████████████████ +// ██████████████████████████████████ +// ██████████████████████████████████ +// ██████████████████████████████████ +// ██████████████████████████████████ +// ██████████████████████████████████ +// ████████████████████████ ██████████ +// ████████████████████████ ██████████ +// ████████████████████████ ██████████ +// ████████████████████████ ██████████ +// ████████████████████ +// ████████████████████ +// ████████████████████ +// ████████████████████ +// +// +// █████╗ ███╗ ██╗ ██████╗ ████████╗██╗ ██╗███████╗██████╗ ██████╗ ██╗ ██████╗ ██████╗██╗ ██╗ +// ██╔══██╗████╗ ██║██╔═══██╗╚══██╔══╝██║ ██║██╔════╝██╔══██╗██╔══██╗██║ ██╔═══██╗██╔════╝██║ ██╔╝ +// ███████║██╔██╗ ██║██║ ██║ ██║ ███████║█████╗ ██████╔╝██████╔╝██║ ██║ ██║██║ █████╔╝ +// ██╔══██║██║╚██╗██║██║ ██║ ██║ ██╔══██║██╔══╝ ██╔══██╗██╔══██╗██║ ██║ ██║██║ ██╔═██╗ +// ██║ ██║██║ ╚████║╚██████╔╝ ██║ ██║ ██║███████╗██║ ██║██████╔╝███████╗╚██████╔╝╚██████╗██║ ██╗ +// ╚═╝ ╚═╝╚═╝ ╚═══╝ ╚═════╝ ╚═╝ ╚═╝ ╚═╝╚══════╝╚═╝ ╚═╝╚═════╝ ╚══════╝ ╚═════╝ ╚═════╝╚═╝ ╚═╝ +// + +/** + * @title ERC721ABLE + * @author anotherblock Technical Team + * @notice anotherblock ERC721 contract used for regular mint mechanism & limited edition + * + */ + +// SPDX-License-Identifier: MIT +pragma solidity ^0.8.18; + +/* anotherblock Contract */ +import {ERC721AB} from "src/token/ERC721/ERC721AB.sol"; + +/* anotherblock Libraries */ +import {ABDataTypes} from "src/libraries/ABDataTypes.sol"; +import {ABErrors} from "src/libraries/ABErrors.sol"; + +contract ERC721ABLE is ERC721AB { + // _____ __ __ + // / ___// /_____ _/ /____ _____ + // \__ \/ __/ __ `/ __/ _ \/ ___/ + // ___/ / /_/ /_/ / /_/ __(__ ) + // /____/\__/\__,_/\__/\___/____/ + + /// @dev Supply cap for this collection + uint256 public maxSupply; + + /// @dev Implementation Type + bytes32 public constant IMPLEMENTATION_TYPE = keccak256("LIMITED_EDITION"); + + /// @dev ERC721AB implementation version + uint8 public constant IMPLEMENTATION_VERSION = 1; + + // ______ __ __ ______ __ _ + // / ____/ __/ /____ _________ ____ _/ / / ____/_ ______ _____/ /_(_)___ ____ _____ + // / __/ | |/_/ __/ _ \/ ___/ __ \/ __ `/ / / /_ / / / / __ \/ ___/ __/ / __ \/ __ \/ ___/ + // / /____> maxSupply) { + revert ABErrors.NOT_ENOUGH_TOKEN_AVAILABLE(); + } + + // Check if the current phase is private + if (!phase.isPublic) { + // Check that the user is included in the allowlist + if (!abVerifier.verifySignature721(_to, address(this), _phaseId, _signature)) { + revert ABErrors.NOT_ELIGIBLE(); + } + } + + // Check that user did not mint / is not asking to mint more than the max mint per address for the current phase + if (mintedPerPhase[_to][_phaseId] + _quantity > phase.maxMint) revert ABErrors.MAX_MINT_PER_ADDRESS(); + + // Check that user is sending the correct amount of ETH (will revert if user send too much or not enough) + if (msg.value != phase.price * _quantity) revert ABErrors.INCORRECT_ETH_SENT(); + + // Set quantity minted for `_to` during the current phase + mintedPerPhase[_to][_phaseId] += _quantity; + + // Mint `_quantity` amount to `_to` address + _mint(_to, _quantity); + } + + // ____ __ ___ __ _ + // / __ \____ / /_ __ / | ____/ /___ ___ (_)___ + // / / / / __ \/ / / / / / /| |/ __ / __ `__ \/ / __ \ + // / /_/ / / / / / /_/ / / ___ / /_/ / / / / / / / / / / + // \____/_/ /_/_/\__, / /_/ |_\__,_/_/ /_/ /_/_/_/ /_/ + // /____/ + + /** + * @notice + * Initialize the Drop parameters + * Only the contract owner can perform this operation + * + * @param _maxSupply supply cap for this drop + * @param _sharePerToken percentage ownership of the full master right for one token (to be divided by 1e6) + * @param _mintGenesis amount of genesis tokens to be minted + * @param _genesisRecipient recipient address of genesis tokens + * @param _royaltyCurrency royalty currency contract address + * @param _baseUri base URI for this drop + */ + function initDrop( + uint256 _maxSupply, + uint256 _sharePerToken, + uint256 _mintGenesis, + address _genesisRecipient, + address _royaltyCurrency, + string calldata _baseUri + ) external onlyOwner { + // Set supply cap + maxSupply = _maxSupply; + if (_mintGenesis > _maxSupply) revert ABErrors.INVALID_PARAMETER(); + + _initDrop(_sharePerToken, _mintGenesis, _genesisRecipient, _royaltyCurrency, _baseUri); + } + + /** + * @notice + * Set the maximum supply + * Only the contract owner can perform this operation + * + * @param _maxSupply new maximum supply to be set + */ + function setMaxSupply(uint256 _maxSupply) external onlyOwner { + if (_maxSupply < _totalMinted()) revert ABErrors.INVALID_PARAMETER(); + maxSupply = _maxSupply; + } +} diff --git a/src/token/ERC721/ERC721ABOE.sol b/src/token/ERC721/ERC721ABOE.sol new file mode 100644 index 0000000..81299a1 --- /dev/null +++ b/src/token/ERC721/ERC721ABOE.sol @@ -0,0 +1,125 @@ +// ██████████████████████████████████ +// ██████████████████████████████████ +// ██████████████████████████████████ +// ██████████████████████████████████ +// ██████████████████████████████████ +// ██████████████████████████████████ +// ██████████████████████████████████ +// ██████████████████████████████████ +// ██████████████████████████████████ +// ████████████████████████ ██████████ +// ████████████████████████ ██████████ +// ████████████████████████ ██████████ +// ████████████████████████ ██████████ +// ████████████████████ +// ████████████████████ +// ████████████████████ +// ████████████████████ +// +// +// █████╗ ███╗ ██╗ ██████╗ ████████╗██╗ ██╗███████╗██████╗ ██████╗ ██╗ ██████╗ ██████╗██╗ ██╗ +// ██╔══██╗████╗ ██║██╔═══██╗╚══██╔══╝██║ ██║██╔════╝██╔══██╗██╔══██╗██║ ██╔═══██╗██╔════╝██║ ██╔╝ +// ███████║██╔██╗ ██║██║ ██║ ██║ ███████║█████╗ ██████╔╝██████╔╝██║ ██║ ██║██║ █████╔╝ +// ██╔══██║██║╚██╗██║██║ ██║ ██║ ██╔══██║██╔══╝ ██╔══██╗██╔══██╗██║ ██║ ██║██║ ██╔═██╗ +// ██║ ██║██║ ╚████║╚██████╔╝ ██║ ██║ ██║███████╗██║ ██║██████╔╝███████╗╚██████╔╝╚██████╗██║ ██╗ +// ╚═╝ ╚═╝╚═╝ ╚═══╝ ╚═════╝ ╚═╝ ╚═╝ ╚═╝╚══════╝╚═╝ ╚═╝╚═════╝ ╚══════╝ ╚═════╝ ╚═════╝╚═╝ ╚═╝ +// + +/** + * @title ERC721ABOE + * @author anotherblock Technical Team + * @notice anotherblock ERC721 Open Edition contract standard + * + */ + +// SPDX-License-Identifier: MIT +pragma solidity ^0.8.18; + +/* anotherblock Contract */ +import {ERC721AB} from "src/token/ERC721/ERC721AB.sol"; + +/* anotherblock Libraries */ +import {ABDataTypes} from "src/libraries/ABDataTypes.sol"; +import {ABErrors} from "src/libraries/ABErrors.sol"; + +contract ERC721ABOE is ERC721AB { + // _____ __ __ + // / ___// /_____ _/ /____ _____ + // \__ \/ __/ __ `/ __/ _ \/ ___/ + // ___/ / /_/ /_/ / /_/ __(__ ) + // /____/\__/\__,_/\__/\___/____/ + + /// @dev Implementation Type + bytes32 public constant IMPLEMENTATION_TYPE = keccak256("OPEN_EDITION"); + + /// @dev ERC721ABOE implementation version + uint8 public constant IMPLEMENTATION_VERSION = 1; + + // ______ __ __ ______ __ _ + // / ____/ __/ /____ _________ ____ _/ / / ____/_ ______ _____/ /_(_)___ ____ _____ + // / __/ | |/_/ __/ _ \/ ___/ __ \/ __ `/ / / /_ / / / / __ \/ ___/ __/ / __ \/ __ \/ ___/ + // / /____> bool dropSpecific) public hasDropSpecificFees; + + /// @dev Mapping storing Publisher Fee for a given drop identifier + mapping(uint256 dropId => uint256 fee) public dropFees; + /// @dev Storage gap used for future upgrades (30 * 32 bytes) - uint256[30] __gap; + uint256[28] __gap; // ______ __ __ // / ____/___ ____ _____/ /________ _______/ /_____ _____ @@ -287,6 +293,21 @@ contract ABDataRegistry is IABDataRegistry, AccessControlUpgradeable { emit ABEvents.PublisherFeesUpdated(_publisher, _fee); } + /** + * @notice + * Update a drop specific fee + * Only contract owner can perform this operation + * + * @param _isSpecific true to apply specific fee or false to apply publisher fee + * @param _dropId drop identifier to be updated + * @param _fee new fees to be set + */ + function setDropFee(bool _isSpecific, uint256 _dropId, uint256 _fee) external onlyRole(DEFAULT_ADMIN_ROLE) { + if (_fee > 10_000) revert ABErrors.INVALID_PARAMETER(); + hasDropSpecificFees[_dropId] = _isSpecific; + dropFees[_dropId] = _fee; + } + /** * @notice * Update a publisher royalty contract @@ -347,13 +368,22 @@ contract ABDataRegistry is IABDataRegistry, AccessControlUpgradeable { * Return the details required to withdraw the mint proceeds * * @param _publisher publisher to be queried + * @param _dropId drop identifier to be queried * * @return _treasury the treasury account address * @return _fee the fees associated to the given `_publisher` */ - function getPayoutDetails(address _publisher) external view returns (address _treasury, uint256 _fee) { + function getPayoutDetails(address _publisher, uint256 _dropId) + external + view + returns (address _treasury, uint256 _fee) + { + if (hasDropSpecificFees[_dropId]) { + _fee = dropFees[_dropId]; + } else { + _fee = publisherFees[_publisher]; + } _treasury = abTreasury; - _fee = publisherFees[_publisher]; } // ____ __ __ ______ __ _ diff --git a/src/utils/IABDataRegistry.sol b/src/utils/IABDataRegistry.sol index 366f62a..1169868 100644 --- a/src/utils/IABDataRegistry.sol +++ b/src/utils/IABDataRegistry.sol @@ -158,6 +158,17 @@ interface IABDataRegistry { */ function setPublisherFee(address _publisher, uint256 _fee) external; + /** + * @notice + * Update a drop specific fee + * Only contract owner can perform this operation + * + * @param _isSpecific true to apply specific fee or false to apply publisher fee + * @param _dropId drop identifier to be updated + * @param _fee new fees to be set + */ + function setDropFee(bool _isSpecific, uint256 _dropId, uint256 _fee) external; + /** * @notice * Update a publisher royalty contract @@ -209,9 +220,13 @@ interface IABDataRegistry { * Return the details required to withdraw the mint proceeds * * @param _publisher publisher to be queried + * @param _dropId drop identifier to be queried * * @return _treasury the treasury account address * @return _fee the fees associated to the given `_publisher` */ - function getPayoutDetails(address _publisher) external view returns (address _treasury, uint256 _fee); + function getPayoutDetails(address _publisher, uint256 _dropId) + external + view + returns (address _treasury, uint256 _fee); } diff --git a/test/_testdata/ERC721AB.td.sol b/test/_testdata/ERC721ABLE.td.sol similarity index 97% rename from test/_testdata/ERC721AB.td.sol rename to test/_testdata/ERC721ABLE.td.sol index e5bc5fc..6e7e7f9 100644 --- a/test/_testdata/ERC721AB.td.sol +++ b/test/_testdata/ERC721ABLE.td.sol @@ -15,6 +15,7 @@ contract ERC721ABTestData { string public constant MOCK_TOKEN_NAME = "Mock Token"; string public constant MOCK_TOKEN_SYMBOL = "MOCK"; uint256 public constant PUBLISHER_FEE = 9_000; + uint256 public constant DROP_SPECIFIC_FEE = 5_000; uint256 public constant PRICE = 0.1 ether; uint256 public constant SUPPLY = 5; uint256 public constant SHARE_PER_TOKEN = 90_000; diff --git a/test/_testdata/ERC721ABOE.td.sol b/test/_testdata/ERC721ABOE.td.sol new file mode 100644 index 0000000..a5951d2 --- /dev/null +++ b/test/_testdata/ERC721ABOE.td.sol @@ -0,0 +1,49 @@ +// SPDX-License-Identifier: MIT +pragma solidity ^0.8.18; + +contract ERC721ABOETestData { + /* Superfluid Host */ + address public constant SF_HOST = 0x4C073B3baB6d8826b8C5b229f3cfdC1eC6E47E74; + + /* Roles Hash */ + bytes32 public constant DEFAULT_ADMIN_ROLE_HASH = 0x0000000000000000000000000000000000000000000000000000000000000000; + bytes32 public constant PUBLISHER_ROLE_HASH = keccak256("PUBLISHER_ROLE"); + bytes32 public constant AB_ADMIN_ROLE_HASH = keccak256("AB_ADMIN_ROLE"); + bytes32 public constant FACTORY_ROLE_HASH = keccak256("FACTORY_ROLE"); + + /* Test Data */ + string public constant MOCK_TOKEN_NAME = "Mock Token"; + string public constant MOCK_TOKEN_SYMBOL = "MOCK"; + uint256 public constant PUBLISHER_FEE = 9_000; + uint256 public constant PRICE = 0.1 ether; + uint256 public constant SHARE_PER_TOKEN = 90_000; + uint256 public constant MINT_GENESIS = 1; + uint256 public constant UNITS_PRECISION = 1_000; + string public constant NAME = "name"; + string public constant SYMBOL = "SYMBOL"; + string public constant URI = "http://uri.ipfs/"; + bytes32 public constant SALT = "SALT"; + bytes32 public constant SALT_2 = "SALT_2"; + + bool public constant PUBLIC_PHASE = true; + bool public constant PRIVATE_PHASE = false; + + uint256 public constant PHASE_ID_0 = 0; + uint256 public constant PHASE_ID_1 = 1; + uint256 public constant PHASE_ID_2 = 2; + + uint256 public constant P0_PRICE = 0.1 ether; + uint256 public constant P0_START = 1680000000; + uint256 public constant P0_END = 1680000100; + uint256 public constant P0_MAX_MINT = 3; + + uint256 public constant P1_PRICE = 0.125 ether; + uint256 public constant P1_START = 1680100001; + uint256 public constant P1_END = 1680100100; + uint256 public constant P1_MAX_MINT = 3; + + uint256 public constant P2_PRICE = 0.15 ether; + uint256 public constant P2_START = 1680200001; + uint256 public constant P2_END = 1680200100; + uint256 public constant P2_MAX_MINT = 3; +} diff --git a/test/factory/AnotherCloneFactory.t.sol b/test/factory/AnotherCloneFactory.t.sol index cde0992..02b52e3 100644 --- a/test/factory/AnotherCloneFactory.t.sol +++ b/test/factory/AnotherCloneFactory.t.sol @@ -3,7 +3,8 @@ pragma solidity ^0.8.18; import "forge-std/Test.sol"; -import {ERC721AB} from "src/token/ERC721/ERC721AB.sol"; +import {ERC721ABLE} from "src/token/ERC721/ERC721ABLE.sol"; +import {ERC721ABOE} from "src/token/ERC721/ERC721ABOE.sol"; import {ERC1155AB} from "src/token/ERC1155/ERC1155AB.sol"; import {ABDataRegistry} from "src/utils/ABDataRegistry.sol"; import {AnotherCloneFactory} from "src/factory/AnotherCloneFactory.sol"; @@ -16,6 +17,7 @@ import {ProxyAdmin} from "@openzeppelin/contracts/proxy/transparent/ProxyAdmin.s import {AnotherCloneFactoryTestData} from "test/_testdata/AnotherCloneFactory.td.sol"; +/* solhint-disable */ contract AnotherCloneFactoryTest is Test, AnotherCloneFactoryTestData { /* Contracts */ ABVerifier public abVerifier; @@ -23,7 +25,8 @@ contract AnotherCloneFactoryTest is Test, AnotherCloneFactoryTestData { AnotherCloneFactory public anotherCloneFactory; ABRoyalty public royaltyImplementation; ERC1155AB public erc1155Implementation; - ERC721AB public erc721Implementation; + ERC721ABLE public erc721Implementation; + ERC721ABOE public erc721OEImplementation; ProxyAdmin public proxyAdmin; TransparentUpgradeableProxy public anotherCloneFactoryProxy; @@ -51,9 +54,12 @@ contract AnotherCloneFactoryTest is Test, AnotherCloneFactoryTestData { erc1155Implementation = new ERC1155AB(); vm.label(address(erc1155Implementation), "erc1155Implementation"); - erc721Implementation = new ERC721AB(); + erc721Implementation = new ERC721ABLE(); vm.label(address(erc721Implementation), "erc721Implementation"); + erc721OEImplementation = new ERC721ABOE(); + vm.label(address(erc721OEImplementation), "erc721OEImplementation"); + royaltyImplementation = new ABRoyalty(); vm.label(address(royaltyImplementation), "royaltyImplementation"); @@ -123,10 +129,12 @@ contract AnotherCloneFactoryTest is Test, AnotherCloneFactoryTestData { ); } - function test_createPublisherProfile_admin(address _publisher, uint256 _fee) public { + function test_createPublisherProfile_admin(address _sender, address _publisher, uint256 _fee) public { vm.assume(_fee <= 10_000); vm.assume(anotherCloneFactory.hasRole(PUBLISHER_ROLE_HASH, _publisher) == false && _publisher != address(0)); + anotherCloneFactory.grantRole(AB_ADMIN_ROLE_HASH, _sender); + vm.prank(_sender); anotherCloneFactory.createPublisherProfile(_publisher, _fee); assertEq(anotherCloneFactory.hasRole(PUBLISHER_ROLE_HASH, _publisher), true); @@ -218,7 +226,7 @@ contract AnotherCloneFactoryTest is Test, AnotherCloneFactoryTestData { anotherCloneFactory.createCollection721(NAME, SALT); (address nft, address publisher) = anotherCloneFactory.collections(0); - assertEq(ERC721AB(nft).owner(), _publisher); + assertEq(ERC721ABLE(nft).owner(), _publisher); assertEq(publisher, _publisher); vm.stopPrank(); @@ -245,7 +253,7 @@ contract AnotherCloneFactoryTest is Test, AnotherCloneFactoryTestData { anotherCloneFactory.createCollection721FromImplementation(address(erc721Implementation), _publisher, NAME, SALT); (address nft, address publisher) = anotherCloneFactory.collections(0); - assertEq(ERC721AB(nft).owner(), _publisher); + assertEq(ERC721ABLE(nft).owner(), _publisher); assertEq(publisher, _publisher); vm.stopPrank(); @@ -255,6 +263,7 @@ contract AnotherCloneFactoryTest is Test, AnotherCloneFactoryTestData { public { vm.assume(_sender != address(0)); + vm.assume(_sender != address(proxyAdmin)); vm.assume(anotherCloneFactory.hasRole(PUBLISHER_ROLE_HASH, _publisher) == false); vm.assume(_publisher != address(anotherCloneFactory) && _publisher != address(0)); @@ -305,7 +314,7 @@ contract AnotherCloneFactoryTest is Test, AnotherCloneFactoryTestData { } function test_setERC721Implementation_admin() public { - ERC721AB newErc721Implementation = new ERC721AB(); + ERC721ABLE newErc721Implementation = new ERC721ABLE(); assertEq(anotherCloneFactory.erc721Impl(), address(erc721Implementation)); @@ -317,7 +326,7 @@ contract AnotherCloneFactoryTest is Test, AnotherCloneFactoryTestData { function test_setERC721Implementation_nonAdmin(address _nonAdmin) public { vm.assume(_nonAdmin != address(this)); - ERC721AB newErc721Implementation = new ERC721AB(); + ERC721ABLE newErc721Implementation = new ERC721ABLE(); vm.prank(_nonAdmin); @@ -393,6 +402,26 @@ contract AnotherCloneFactoryTest is Test, AnotherCloneFactoryTestData { assertEq(predictedAddress, nft); } + function test_predictAddressFromImplementation(address _sender, address _publisher, bytes32 _salt) public { + vm.assume(_publisher != address(0)); + vm.assume(_sender != address(0)); + vm.assume(_sender != _publisher); + + anotherCloneFactory.createPublisherProfile(_publisher, PUBLISHER_FEE); + anotherCloneFactory.grantRole(AB_ADMIN_ROLE_HASH, _sender); + + address predictedAddress = + anotherCloneFactory.predictAddressFromImplementation(address(erc721OEImplementation), _salt); + + vm.prank(_sender); + anotherCloneFactory.createCollection721FromImplementation( + address(erc721OEImplementation), _publisher, NAME, _salt + ); + (address nft,) = anotherCloneFactory.collections(0); + + assertEq(predictedAddress, nft); + } + function test_hasPublisherRole(address _publisher, address _nonPublisher) public { vm.assume(_publisher != _nonPublisher); vm.assume(anotherCloneFactory.hasRole(PUBLISHER_ROLE_HASH, _publisher) == false && _publisher != address(0)); diff --git a/test/royalty/ABRoyalty.t.sol b/test/royalty/ABRoyalty.t.sol index 611a824..82b7efe 100644 --- a/test/royalty/ABRoyalty.t.sol +++ b/test/royalty/ABRoyalty.t.sol @@ -3,7 +3,7 @@ pragma solidity ^0.8.18; import "forge-std/Test.sol"; -import {ERC721AB} from "src/token/ERC721/ERC721AB.sol"; +import {ERC721ABLE} from "src/token/ERC721/ERC721ABLE.sol"; import {ERC1155AB} from "src/token/ERC1155/ERC1155AB.sol"; import {ABDataRegistry} from "src/utils/ABDataRegistry.sol"; import {AnotherCloneFactory} from "src/factory/AnotherCloneFactory.sol"; @@ -18,6 +18,7 @@ import {IERC20} from "@openzeppelin/contracts/token/ERC20/IERC20.sol"; import {TransparentUpgradeableProxy} from "@openzeppelin/contracts/proxy/transparent/TransparentUpgradeableProxy.sol"; import {ProxyAdmin} from "@openzeppelin/contracts/proxy/transparent/ProxyAdmin.sol"; +/* solhint-disable */ contract ABRoyaltyTest is Test, ABRoyaltyTestData { /* Users */ address payable public publisher; @@ -34,7 +35,7 @@ contract ABRoyaltyTest is Test, ABRoyaltyTestData { ABVerifier public abVerifier; ABDataRegistry public abDataRegistry; AnotherCloneFactory public anotherCloneFactory; - ERC721AB public erc721Impl; + ERC721ABLE public erc721Impl; ERC1155AB public erc1155Impl; ProxyAdmin public proxyAdmin; TransparentUpgradeableProxy public anotherCloneFactoryProxy; @@ -79,7 +80,7 @@ contract ABRoyaltyTest is Test, ABRoyaltyTestData { erc1155Impl = new ERC1155AB(); vm.label(address(erc1155Impl), "erc1155Impl"); - erc721Impl = new ERC721AB(); + erc721Impl = new ERC721ABLE(); vm.label(address(erc721Impl), "erc721Impl"); abRoyaltyImpl = new ABRoyalty(); diff --git a/test/token/ERC1155/ERC1155AB.t.sol b/test/token/ERC1155/ERC1155AB.t.sol index ee47ee2..2251110 100644 --- a/test/token/ERC1155/ERC1155AB.t.sol +++ b/test/token/ERC1155/ERC1155AB.t.sol @@ -3,7 +3,7 @@ pragma solidity ^0.8.18; import "forge-std/Test.sol"; -import {ERC721AB} from "src/token/ERC721/ERC721AB.sol"; +import {ERC721ABLE} from "src/token/ERC721/ERC721ABLE.sol"; import {ERC1155AB} from "src/token/ERC1155/ERC1155AB.sol"; import {ABDataRegistry} from "src/utils/ABDataRegistry.sol"; import {AnotherCloneFactory} from "src/factory/AnotherCloneFactory.sol"; @@ -21,8 +21,8 @@ import {ERC1155Holder} from "@openzeppelin/contracts/token/ERC1155/utils/ERC1155 import {ECDSA} from "@openzeppelin/contracts/utils/cryptography/ECDSA.sol"; import {TransparentUpgradeableProxy} from "@openzeppelin/contracts/proxy/transparent/TransparentUpgradeableProxy.sol"; import {ProxyAdmin} from "@openzeppelin/contracts/proxy/transparent/ProxyAdmin.sol"; -import {IAccessControlUpgradeable} from "@openzeppelin/contracts-upgradeable/access/AccessControlUpgradeable.sol"; +/* solhint-disable */ contract ERC1155ABTest is Test, ERC1155ABTestData, ERC1155Holder { using ECDSA for bytes32; @@ -45,7 +45,7 @@ contract ERC1155ABTest is Test, ERC1155ABTestData, ERC1155Holder { ABDataRegistry public abDataRegistry; AnotherCloneFactory public anotherCloneFactory; ABRoyalty public royaltyImpl; - ERC721AB public erc721Impl; + ERC721ABLE public erc721Impl; ERC1155AB public erc1155Impl; ProxyAdmin public proxyAdmin; TransparentUpgradeableProxy public anotherCloneFactoryProxy; @@ -109,7 +109,7 @@ contract ERC1155ABTest is Test, ERC1155ABTestData, ERC1155Holder { erc1155Impl = new ERC1155AB(); vm.label(address(erc1155Impl), "erc1155Impl"); - erc721Impl = new ERC721AB(); + erc721Impl = new ERC721ABLE(); vm.label(address(erc721Impl), "erc721Impl"); royaltyImpl = new ABRoyalty(); diff --git a/test/token/ERC721/ERC721AB.t.sol b/test/token/ERC721/ERC721ABLE.t.sol similarity index 95% rename from test/token/ERC721/ERC721AB.t.sol rename to test/token/ERC721/ERC721ABLE.t.sol index 81dfd2d..e6df19d 100644 --- a/test/token/ERC721/ERC721AB.t.sol +++ b/test/token/ERC721/ERC721ABLE.t.sol @@ -3,7 +3,7 @@ pragma solidity ^0.8.18; import "forge-std/Test.sol"; -import {ERC721AB} from "src/token/ERC721/ERC721AB.sol"; +import {ERC721ABLE} from "src/token/ERC721/ERC721ABLE.sol"; import {ERC1155AB} from "src/token/ERC1155/ERC1155AB.sol"; import {ABDataRegistry} from "src/utils/ABDataRegistry.sol"; import {AnotherCloneFactory} from "src/factory/AnotherCloneFactory.sol"; @@ -14,14 +14,14 @@ import {ABErrors} from "src/libraries/ABErrors.sol"; import {ABSuperToken} from "test/_mocks/ABSuperToken.sol"; import {MockToken} from "test/_mocks/MockToken.sol"; -import {ERC721ABTestData} from "test/_testdata/ERC721AB.td.sol"; +import {ERC721ABTestData} from "test/_testdata/ERC721ABLE.td.sol"; import {IERC20} from "@openzeppelin/contracts/token/ERC20/IERC20.sol"; import {ECDSA} from "@openzeppelin/contracts/utils/cryptography/ECDSA.sol"; import {TransparentUpgradeableProxy} from "@openzeppelin/contracts/proxy/transparent/TransparentUpgradeableProxy.sol"; import {ProxyAdmin} from "@openzeppelin/contracts/proxy/transparent/ProxyAdmin.sol"; -import {IAccessControlUpgradeable} from "@openzeppelin/contracts-upgradeable/access/AccessControlUpgradeable.sol"; +/* solhint-disable */ contract ERC721ABTest is Test, ERC721ABTestData { using ECDSA for bytes32; @@ -45,14 +45,14 @@ contract ERC721ABTest is Test, ERC721ABTestData { ABDataRegistry public abDataRegistry; AnotherCloneFactory public anotherCloneFactory; ABRoyalty public royaltyImpl; - ERC721AB public erc721Impl; + ERC721ABLE public erc721Impl; ERC1155AB public erc1155Impl; ProxyAdmin public proxyAdmin; TransparentUpgradeableProxy public anotherCloneFactoryProxy; TransparentUpgradeableProxy public abDataRegistryProxy; TransparentUpgradeableProxy public abVerifierProxy; - ERC721AB public nft; + ERC721ABLE public nft; uint256 public constant DROP_ID_OFFSET = 10_000; @@ -109,7 +109,7 @@ contract ERC721ABTest is Test, ERC721ABTestData { erc1155Impl = new ERC1155AB(); vm.label(address(erc1155Impl), "erc1155Impl"); - erc721Impl = new ERC721AB(); + erc721Impl = new ERC721ABLE(); vm.label(address(erc721Impl), "erc721Impl"); royaltyImpl = new ABRoyalty(); @@ -153,17 +153,17 @@ contract ERC721ABTest is Test, ERC721ABTestData { (address nftAddr,) = anotherCloneFactory.collections(0); - nft = ERC721AB(nftAddr); + nft = ERC721ABLE(nftAddr); } function test_initialize() public { TransparentUpgradeableProxy erc721proxy = new TransparentUpgradeableProxy( - address(new ERC721AB()), + address(new ERC721ABLE()), address(proxyAdmin), "" ); - nft = ERC721AB(address(erc721proxy)); + nft = ERC721ABLE(address(erc721proxy)); nft.initialize(publisher, address(abDataRegistry), address(abVerifier), NAME); assertEq(address(nft.abDataRegistry()), address(abDataRegistry)); @@ -822,6 +822,46 @@ contract ERC721ABTest is Test, ERC721ABTestData { assertEq(publisher.balance, expectedPublisherBalance); } + function test_withdrawToRightholder_dropSpecific_allToPublisher(uint256 _amount) public { + vm.assume(_amount > 10); + vm.assume(_amount < 1e30); + vm.deal(address(nft), _amount); + + vm.prank(publisher); + nft.initDrop(SUPPLY, SHARE_PER_TOKEN, MINT_GENESIS, genesisRecipient, address(royaltyToken), URI); + + abDataRegistry.setDropFee(true, nft.dropId(), 10_000); + + vm.prank(publisher); + nft.withdrawToRightholder(); + + uint256 expectedPublisherBalance = _amount; + uint256 expectedTreasuryBalance = 0; + + assertEq(treasury.balance, expectedTreasuryBalance); + assertEq(publisher.balance, expectedPublisherBalance); + } + + function test_withdrawToRightholder_dropSpecific_allToTreasury(uint256 _amount) public { + vm.assume(_amount > 10); + vm.assume(_amount < 1e30); + vm.deal(address(nft), _amount); + + vm.prank(publisher); + nft.initDrop(SUPPLY, SHARE_PER_TOKEN, MINT_GENESIS, genesisRecipient, address(royaltyToken), URI); + + abDataRegistry.setDropFee(true, nft.dropId(), 0); + + vm.prank(publisher); + nft.withdrawToRightholder(); + + uint256 expectedPublisherBalance = 0; + uint256 expectedTreasuryBalance = _amount; + + assertEq(treasury.balance, expectedTreasuryBalance); + assertEq(publisher.balance, expectedPublisherBalance); + } + function test_withdrawToRightholder_invalidParameter(uint256 _amount) public { vm.assume(_amount > 10); vm.assume(_amount < 1e30); diff --git a/test/token/ERC721/ERC721ABOE.t.sol b/test/token/ERC721/ERC721ABOE.t.sol new file mode 100644 index 0000000..a5ad40b --- /dev/null +++ b/test/token/ERC721/ERC721ABOE.t.sol @@ -0,0 +1,819 @@ +// SPDX-License-Identifier: MIT +pragma solidity ^0.8.18; + +import "forge-std/Test.sol"; + +import {ERC721ABOE} from "src/token/ERC721/ERC721ABOE.sol"; +import {ERC1155AB} from "src/token/ERC1155/ERC1155AB.sol"; +import {ABDataRegistry} from "src/utils/ABDataRegistry.sol"; +import {AnotherCloneFactory} from "src/factory/AnotherCloneFactory.sol"; +import {ABVerifier} from "src/utils/ABVerifier.sol"; +import {ABRoyalty} from "src/royalty/ABRoyalty.sol"; +import {ABDataTypes} from "src/libraries/ABDataTypes.sol"; +import {ABErrors} from "src/libraries/ABErrors.sol"; + +import {ABSuperToken} from "test/_mocks/ABSuperToken.sol"; +import {MockToken} from "test/_mocks/MockToken.sol"; +import {ERC721ABOETestData} from "test/_testdata/ERC721ABOE.td.sol"; + +import {IERC20} from "@openzeppelin/contracts/token/ERC20/IERC20.sol"; +import {ECDSA} from "@openzeppelin/contracts/utils/cryptography/ECDSA.sol"; +import {TransparentUpgradeableProxy} from "@openzeppelin/contracts/proxy/transparent/TransparentUpgradeableProxy.sol"; +import {ProxyAdmin} from "@openzeppelin/contracts/proxy/transparent/ProxyAdmin.sol"; + +contract ERC721ABOETest is Test, ERC721ABOETestData { + using ECDSA for bytes32; + + /* Admin */ + uint256 public abSignerPkey = 69; + address public abSigner; + address public genesisRecipient; + address payable public treasury; + + /* Users */ + address payable public alice; + address payable public bob; + address payable public publisher; + + /* Contracts */ + ABVerifier public abVerifier; + ABSuperToken public royaltyToken; + MockToken public mockToken; + ABDataRegistry public abDataRegistry; + AnotherCloneFactory public anotherCloneFactory; + ABRoyalty public royaltyImpl; + ERC721ABOE public erc721Impl; + ERC721ABOE public erc721OEImpl; + ERC1155AB public erc1155Impl; + ProxyAdmin public proxyAdmin; + TransparentUpgradeableProxy public anotherCloneFactoryProxy; + TransparentUpgradeableProxy public abDataRegistryProxy; + TransparentUpgradeableProxy public abVerifierProxy; + + ERC721ABOE public nft; + + uint256 public constant DROP_ID_OFFSET = 10_000; + + /* Environment Variables */ + string BASE_RPC_URL = vm.envString("BASE_RPC"); + + function setUp() public { + vm.selectFork(vm.createFork(BASE_RPC_URL)); + + /* Setup admins */ + abSigner = vm.addr(abSignerPkey); + genesisRecipient = vm.addr(100); + + /* Setup users */ + alice = payable(vm.addr(1)); + bob = payable(vm.addr(2)); + publisher = payable(vm.addr(5)); + treasury = payable(vm.addr(1000)); + + vm.deal(alice, 100 ether); + vm.deal(bob, 100 ether); + + vm.label(alice, "alice"); + vm.label(bob, "bob"); + vm.label(publisher, "publisher"); + vm.label(treasury, "treasury"); + + /* Contracts Deployments */ + proxyAdmin = new ProxyAdmin(); + + mockToken = new MockToken(MOCK_TOKEN_NAME, MOCK_TOKEN_SYMBOL); + vm.label(address(mockToken), "mockToken"); + mockToken.mint(alice, 100e18); + mockToken.mint(bob, 100e18); + + royaltyToken = new ABSuperToken(SF_HOST); + royaltyToken.initialize(IERC20(address(0)), 18, "fakeSuperToken", "FST"); + vm.label(address(royaltyToken), "royaltyToken"); + + abVerifierProxy = new TransparentUpgradeableProxy( + address(new ABVerifier()), + address(proxyAdmin), + abi.encodeWithSelector(ABVerifier.initialize.selector, abSigner) + ); + abVerifier = ABVerifier(address(abVerifierProxy)); + vm.label(address(abVerifier), "abVerifier"); + + erc1155Impl = new ERC1155AB(); + vm.label(address(erc1155Impl), "erc1155Impl"); + + erc721Impl = new ERC721ABOE(); + vm.label(address(erc721Impl), "erc721Impl"); + + erc721OEImpl = new ERC721ABOE(); + vm.label(address(erc721OEImpl), "erc721OEImpl"); + + royaltyImpl = new ABRoyalty(); + vm.label(address(royaltyImpl), "royaltyImpl"); + + abDataRegistryProxy = new TransparentUpgradeableProxy( + address(new ABDataRegistry()), + address(proxyAdmin), + abi.encodeWithSelector(ABDataRegistry.initialize.selector, DROP_ID_OFFSET, treasury) + ); + + abDataRegistry = ABDataRegistry(address(abDataRegistryProxy)); + vm.label(address(abDataRegistry), "abDataRegistry"); + + anotherCloneFactoryProxy = new TransparentUpgradeableProxy( + address(new AnotherCloneFactory()), + address(proxyAdmin), + abi.encodeWithSelector(AnotherCloneFactory.initialize.selector, + address(abDataRegistry), + address(abVerifier), + address(erc721Impl), + address(erc1155Impl), + address(royaltyImpl) + ) + ); + + anotherCloneFactory = AnotherCloneFactory(address(anotherCloneFactoryProxy)); + + vm.label(address(anotherCloneFactory), "anotherCloneFactory"); + + /* Setup Access Control Roles */ + anotherCloneFactory.grantRole(AB_ADMIN_ROLE_HASH, address(this)); + + /* Init contracts params */ + abDataRegistry.grantRole(keccak256("FACTORY_ROLE"), address(anotherCloneFactory)); + + anotherCloneFactory.createPublisherProfile(publisher, PUBLISHER_FEE); + + anotherCloneFactory.createCollection721FromImplementation(address(erc721OEImpl), publisher, NAME, SALT); + + (address nftAddr,) = anotherCloneFactory.collections(0); + + nft = ERC721ABOE(nftAddr); + } + + function test_initialize() public { + TransparentUpgradeableProxy erc721proxy = new TransparentUpgradeableProxy( + address(new ERC721ABOE()), + address(proxyAdmin), + "" + ); + + nft = ERC721ABOE(address(erc721proxy)); + nft.initialize(publisher, address(abDataRegistry), address(abVerifier), NAME); + + assertEq(address(nft.abDataRegistry()), address(abDataRegistry)); + assertEq(address(nft.abVerifier()), address(abVerifier)); + assertEq(nft.publisher(), publisher); + } + + function test_initialize_alreadyInitialized() public { + vm.expectRevert("ERC721A__Initializable: contract is already initialized"); + nft.initialize(address(this), address(abDataRegistry), address(abVerifier), NAME); + } + + function test_initDrop_owner() public { + vm.prank(publisher); + + nft.initDrop(SHARE_PER_TOKEN, MINT_GENESIS, genesisRecipient, address(royaltyToken), URI); + + uint256 dropId = nft.dropId(); + assertEq(dropId, DROP_ID_OFFSET + 1); + + assertEq(nft.balanceOf(genesisRecipient), MINT_GENESIS); + + string memory currentURI = nft.tokenURI(1); + assertEq(keccak256(abi.encodePacked(currentURI)), keccak256(abi.encodePacked(URI, "1"))); + } + + function test_initDrop_noRoyaltyNFT() public { + vm.prank(publisher); + + nft.initDrop(0, MINT_GENESIS, genesisRecipient, address(0), URI); + + uint256 dropId = nft.dropId(); + assertEq(dropId, DROP_ID_OFFSET + 1); + + uint256 sharePerToken = nft.sharePerToken(); + assertEq(sharePerToken, 0); + + assertEq(nft.balanceOf(genesisRecipient), MINT_GENESIS); + + string memory currentURI = nft.tokenURI(1); + assertEq(keccak256(abi.encodePacked(currentURI)), keccak256(abi.encodePacked(URI, "1"))); + } + + function test_initDrop_alreadyInitialized() public { + vm.startPrank(publisher); + nft.initDrop(SHARE_PER_TOKEN, MINT_GENESIS, genesisRecipient, address(royaltyToken), URI); + + vm.expectRevert(ABErrors.DROP_ALREADY_INITIALIZED.selector); + nft.initDrop(SHARE_PER_TOKEN, MINT_GENESIS, genesisRecipient, address(royaltyToken), URI); + vm.stopPrank(); + } + + function test_initDrop_noGenesisMint() public { + vm.prank(publisher); + nft.initDrop(SHARE_PER_TOKEN, 0, genesisRecipient, address(royaltyToken), URI); + + assertEq(nft.balanceOf(genesisRecipient), 0); + } + + function test_initDrop_nonOwner() public { + vm.prank(alice); + vm.expectRevert(); + nft.initDrop(SHARE_PER_TOKEN, MINT_GENESIS, genesisRecipient, address(royaltyToken), URI); + } + + function test_initDrop_invalidSharePerToken() public { + vm.expectRevert(ABErrors.INVALID_PARAMETER.selector); + vm.prank(publisher); + + nft.initDrop(0, MINT_GENESIS, genesisRecipient, address(royaltyToken), URI); + } + + function test_initDrop_invalidRoyaltyCurrency() public { + vm.expectRevert(ABErrors.INVALID_PARAMETER.selector); + vm.prank(publisher); + + nft.initDrop(SHARE_PER_TOKEN, MINT_GENESIS, genesisRecipient, address(0), URI); + } + + function test_setBaseURI_owner() public { + vm.startPrank(publisher); + nft.initDrop(SHARE_PER_TOKEN, MINT_GENESIS, genesisRecipient, address(royaltyToken), URI); + + string memory currentURI = nft.tokenURI(1); + assertEq(keccak256(abi.encodePacked(currentURI)), keccak256(abi.encodePacked(URI, "1"))); + + string memory newURI = "http://new-uri.ipfs/"; + + nft.setBaseURI(newURI); + currentURI = nft.tokenURI(1); + assertEq(keccak256(abi.encodePacked(currentURI)), keccak256(abi.encodePacked(newURI, "1"))); + + vm.stopPrank(); + } + + function test_setBaseURI_nonOwner() public { + vm.prank(publisher); + nft.initDrop(SHARE_PER_TOKEN, MINT_GENESIS, genesisRecipient, address(royaltyToken), URI); + + string memory newURI = "http://new-uri.ipfs/"; + + vm.prank(alice); + + vm.expectRevert(); + nft.setBaseURI(newURI); + } + + function test_setDropPhases_owner_multiplePhases() public { + ABDataTypes.Phase memory phase0 = ABDataTypes.Phase(P0_START, P0_END, P0_PRICE, P0_MAX_MINT, PRIVATE_PHASE); + ABDataTypes.Phase memory phase1 = ABDataTypes.Phase(P1_START, P1_END, P1_PRICE, P1_MAX_MINT, PRIVATE_PHASE); + ABDataTypes.Phase memory phase2 = ABDataTypes.Phase(P2_START, P2_END, P2_PRICE, P2_MAX_MINT, PRIVATE_PHASE); + ABDataTypes.Phase[] memory phases = new ABDataTypes.Phase[](3); + phases[0] = phase0; + phases[1] = phase1; + phases[2] = phase2; + + vm.prank(publisher); + nft.setDropPhases(phases); + + (uint256 _P0_START, uint256 _P0_END, uint256 _P0_PRICE, uint256 _P0_MAX_MINT, bool _P0_PHASE_STATUS) = + nft.phases(0); + (uint256 _P1_START, uint256 _P1_END, uint256 _P1_PRICE, uint256 _P1_MAX_MINT, bool _P1_PHASE_STATUS) = + nft.phases(1); + (uint256 _P2_START, uint256 _P2_END, uint256 _P2_PRICE, uint256 _P2_MAX_MINT, bool _P2_PHASE_STATUS) = + nft.phases(2); + + assertEq(_P0_START, P0_START); + assertEq(_P0_END, P0_END); + assertEq(_P0_PRICE, P0_PRICE); + assertEq(_P0_MAX_MINT, P0_MAX_MINT); + assertEq(_P0_PHASE_STATUS, PRIVATE_PHASE); + + assertEq(_P1_START, P1_START); + assertEq(_P1_END, P1_END); + assertEq(_P1_PRICE, P1_PRICE); + assertEq(_P1_MAX_MINT, P1_MAX_MINT); + assertEq(_P1_PHASE_STATUS, PRIVATE_PHASE); + + assertEq(_P2_START, P2_START); + assertEq(_P2_END, P2_END); + assertEq(_P2_PRICE, P2_PRICE); + assertEq(_P2_MAX_MINT, P2_MAX_MINT); + assertEq(_P2_PHASE_STATUS, PRIVATE_PHASE); + } + + function test_setDropPhases_owner_onePhase() public { + ABDataTypes.Phase memory phase0 = ABDataTypes.Phase(P0_START, P0_END, P0_PRICE, P0_MAX_MINT, PRIVATE_PHASE); + ABDataTypes.Phase[] memory phases = new ABDataTypes.Phase[](1); + phases[0] = phase0; + + vm.prank(publisher); + nft.setDropPhases(phases); + + (uint256 _P0_START, uint256 _P0_END, uint256 _P0_PRICE, uint256 _P0_MAX_MINT, bool _P0_PHASE_STATUS) = + nft.phases(0); + + assertEq(_P0_START, P0_START); + assertEq(_P0_END, P0_END); + assertEq(_P0_PRICE, P0_PRICE); + assertEq(_P0_MAX_MINT, P0_MAX_MINT); + assertEq(_P0_PHASE_STATUS, PRIVATE_PHASE); + } + + function test_setDropPhases_owner_rewritePhasesManyToOne() public { + ABDataTypes.Phase memory phase0 = ABDataTypes.Phase(P0_START, P0_END, P0_PRICE, P0_MAX_MINT, PRIVATE_PHASE); + ABDataTypes.Phase memory phase1 = ABDataTypes.Phase(P1_START, P1_END, P1_PRICE, P1_MAX_MINT, PRIVATE_PHASE); + ABDataTypes.Phase memory phase2 = ABDataTypes.Phase(P2_START, P2_END, P2_PRICE, P2_MAX_MINT, PRIVATE_PHASE); + ABDataTypes.Phase[] memory phases = new ABDataTypes.Phase[](3); + phases[0] = phase0; + phases[1] = phase1; + phases[2] = phase2; + + vm.prank(publisher); + nft.setDropPhases(phases); + + (uint256 _START, uint256 _END, uint256 _PRICE, uint256 _MAX_MINT, bool _PHASE_STATUS) = nft.phases(0); + + assertEq(_START, P0_START); + assertEq(_END, P0_END); + assertEq(_PRICE, P0_PRICE); + assertEq(_MAX_MINT, P0_MAX_MINT); + assertEq(_PHASE_STATUS, PRIVATE_PHASE); + + (_START, _END, _PRICE, _MAX_MINT, _PHASE_STATUS) = nft.phases(1); + + assertEq(_START, P1_START); + assertEq(_END, P1_END); + assertEq(_PRICE, P1_PRICE); + assertEq(_MAX_MINT, P1_MAX_MINT); + assertEq(_PHASE_STATUS, PRIVATE_PHASE); + + (_START, _END, _PRICE, _MAX_MINT, _PHASE_STATUS) = nft.phases(2); + + assertEq(_START, P2_START); + assertEq(_END, P2_END); + assertEq(_PRICE, P2_PRICE); + assertEq(_MAX_MINT, P2_MAX_MINT); + assertEq(_PHASE_STATUS, PRIVATE_PHASE); + + phases = new ABDataTypes.Phase[](1); + phases[0] = phase0; + + vm.prank(publisher); + nft.setDropPhases(phases); + + (_START, _END, _PRICE, _MAX_MINT, _PHASE_STATUS) = nft.phases(0); + + assertEq(_START, P0_START); + assertEq(_END, P0_END); + assertEq(_PRICE, P0_PRICE); + assertEq(_MAX_MINT, P0_MAX_MINT); + assertEq(_PHASE_STATUS, PRIVATE_PHASE); + + vm.expectRevert(); + (_START, _END, _PRICE, _MAX_MINT, _PHASE_STATUS) = nft.phases(1); + } + + function test_setDropPhases_owner_rewritePhasesOneToMany() public { + ABDataTypes.Phase memory phase0 = ABDataTypes.Phase(P0_START, P0_END, P0_PRICE, P0_MAX_MINT, PRIVATE_PHASE); + ABDataTypes.Phase[] memory phases = new ABDataTypes.Phase[](1); + phases[0] = phase0; + + vm.prank(publisher); + nft.setDropPhases(phases); + + (uint256 _START, uint256 _END, uint256 _PRICE, uint256 _MAX_MINT, bool _PHASE_STATUS) = nft.phases(0); + + assertEq(_START, P0_START); + assertEq(_END, P0_END); + assertEq(_PRICE, P0_PRICE); + assertEq(_MAX_MINT, P0_MAX_MINT); + assertEq(_PHASE_STATUS, PRIVATE_PHASE); + + ABDataTypes.Phase memory phase1 = ABDataTypes.Phase(P1_START, P1_END, P1_PRICE, P1_MAX_MINT, PRIVATE_PHASE); + ABDataTypes.Phase memory phase2 = ABDataTypes.Phase(P2_START, P2_END, P2_PRICE, P2_MAX_MINT, PRIVATE_PHASE); + phases = new ABDataTypes.Phase[](3); + phases[0] = phase0; + phases[1] = phase1; + phases[2] = phase2; + + vm.prank(publisher); + nft.setDropPhases(phases); + + (_START, _END, _PRICE, _MAX_MINT, _PHASE_STATUS) = nft.phases(0); + + assertEq(_START, P0_START); + assertEq(_END, P0_END); + assertEq(_PRICE, P0_PRICE); + assertEq(_MAX_MINT, P0_MAX_MINT); + assertEq(_PHASE_STATUS, PRIVATE_PHASE); + + (_START, _END, _PRICE, _MAX_MINT, _PHASE_STATUS) = nft.phases(1); + + assertEq(_START, P1_START); + assertEq(_END, P1_END); + assertEq(_PRICE, P1_PRICE); + assertEq(_MAX_MINT, P1_MAX_MINT); + assertEq(_PHASE_STATUS, PRIVATE_PHASE); + + (_START, _END, _PRICE, _MAX_MINT, _PHASE_STATUS) = nft.phases(2); + + assertEq(_START, P2_START); + assertEq(_END, P2_END); + assertEq(_PRICE, P2_PRICE); + assertEq(_MAX_MINT, P2_MAX_MINT); + assertEq(_PHASE_STATUS, PRIVATE_PHASE); + } + + function test_setDropPhases_incorrectPhaseOrder() public { + ABDataTypes.Phase memory phase0 = ABDataTypes.Phase(P0_START, P0_END, P0_PRICE, P0_MAX_MINT, PRIVATE_PHASE); + ABDataTypes.Phase memory phase1 = ABDataTypes.Phase(P1_START, P1_END, P1_PRICE, P1_MAX_MINT, PRIVATE_PHASE); + + ABDataTypes.Phase[] memory phases = new ABDataTypes.Phase[](2); + phases[0] = phase1; + phases[1] = phase0; + + vm.prank(publisher); + vm.expectRevert(ABErrors.INVALID_PARAMETER.selector); + nft.setDropPhases(phases); + } + + function test_setDropPhases_nonOwner() public { + ABDataTypes.Phase memory phase0 = ABDataTypes.Phase(P0_START, P0_END, P0_PRICE, P0_MAX_MINT, PRIVATE_PHASE); + ABDataTypes.Phase[] memory phases = new ABDataTypes.Phase[](1); + phases[0] = phase0; + + vm.prank(bob); + + vm.expectRevert(); + nft.setDropPhases(phases); + } + + function test_mint() public { + vm.startPrank(publisher); + nft.initDrop(SHARE_PER_TOKEN, MINT_GENESIS, genesisRecipient, address(royaltyToken), URI); + + // Set block.timestamp to be after the start of Phase 0 + vm.warp(P0_START + 1); + + // Set the phases + ABDataTypes.Phase memory phase0 = ABDataTypes.Phase(P0_START, P0_END, PRICE, P0_MAX_MINT, PRIVATE_PHASE); + ABDataTypes.Phase[] memory phases = new ABDataTypes.Phase[](1); + phases[0] = phase0; + nft.setDropPhases(phases); + vm.stopPrank(); + + // Create signature for `alice` dropId 0 and phaseId 0 + bytes memory signature = _generateBackendSignature(alice, address(nft), PHASE_ID_0); + + // Impersonate `alice` + vm.prank(alice); + nft.mint{value: PRICE}(alice, PHASE_ID_0, 1, signature); + assertEq(nft.balanceOf(alice), 1); + } + + function test_mint_noPhaseSet() public { + vm.prank(publisher); + nft.initDrop(SHARE_PER_TOKEN, MINT_GENESIS, genesisRecipient, address(royaltyToken), URI); + + uint256 aliceMintQty = 3; + + // Create signature for `alice` dropId 0 and phaseId 0 + bytes memory signature = _generateBackendSignature(alice, address(nft), PHASE_ID_0); + + vm.prank(alice); + vm.expectRevert(); + nft.mint{value: PRICE * aliceMintQty}(alice, PHASE_ID_0, aliceMintQty, signature); + } + + function test_mint_incorrectETHSent() public { + vm.startPrank(publisher); + nft.initDrop(SHARE_PER_TOKEN, MINT_GENESIS, genesisRecipient, address(royaltyToken), URI); + + // Set block.timestamp to be after the start of Phase 0 + vm.warp(P0_START + 1); + + // Set the phases + ABDataTypes.Phase memory phase0 = ABDataTypes.Phase(P0_START, P0_END, PRICE, 10, PRIVATE_PHASE); + ABDataTypes.Phase[] memory phases = new ABDataTypes.Phase[](1); + phases[0] = phase0; + nft.setDropPhases(phases); + + vm.stopPrank(); + + // Create signature for `alice` dropId 0 and phaseId 0 + bytes memory signature = _generateBackendSignature(alice, address(nft), PHASE_ID_0); + + // Impersonate `alice` + vm.startPrank(alice); + + uint256 mintQty = 4; + + uint256 tooHighPrice = PRICE * (mintQty + 1); + uint256 tooLowPrice = PRICE * (mintQty - 1); + + vm.expectRevert(ABErrors.INCORRECT_ETH_SENT.selector); + nft.mint{value: tooHighPrice}(alice, PHASE_ID_0, mintQty, signature); + + vm.expectRevert(ABErrors.INCORRECT_ETH_SENT.selector); + nft.mint{value: tooLowPrice}(alice, PHASE_ID_0, mintQty, signature); + + vm.stopPrank(); + } + + function test_mint_phaseNotActive() public { + vm.startPrank(publisher); + nft.initDrop(SHARE_PER_TOKEN, MINT_GENESIS, genesisRecipient, address(royaltyToken), URI); + + // Set block.timestamp to be before the start of Phase 0 + vm.warp(P0_START - 1); + + // Set the phases + ABDataTypes.Phase memory phase0 = ABDataTypes.Phase(P0_START, P0_END, PRICE, 10, PRIVATE_PHASE); + ABDataTypes.Phase[] memory phases = new ABDataTypes.Phase[](1); + phases[0] = phase0; + nft.setDropPhases(phases); + + vm.stopPrank(); + + // Create signature for `alice` dropId 0 and phaseId 0 + bytes memory signature = _generateBackendSignature(alice, address(nft), PHASE_ID_0); + + // Impersonate `alice` + vm.startPrank(alice); + + uint256 mintQty = 4; + + vm.expectRevert(ABErrors.PHASE_NOT_ACTIVE.selector); + nft.mint{value: PRICE * mintQty}(alice, PHASE_ID_0, mintQty, signature); + + vm.stopPrank(); + } + + function test_mint_notEligible() public { + vm.startPrank(publisher); + nft.initDrop(SHARE_PER_TOKEN, MINT_GENESIS, genesisRecipient, address(royaltyToken), URI); + + // Set block.timestamp to be after the start of Phase 0 + vm.warp(P0_START + 1); + + // Set the phases + ABDataTypes.Phase memory phase0 = ABDataTypes.Phase(P0_START, P0_END, PRICE, 10, PRIVATE_PHASE); + ABDataTypes.Phase[] memory phases = new ABDataTypes.Phase[](1); + phases[0] = phase0; + nft.setDropPhases(phases); + + vm.stopPrank(); + + // Impersonate `alice` + vm.startPrank(alice); + + uint256 mintQty = 4; + + bytes memory invalidSignature = _generateInvalidSignature(alice, address(nft), PHASE_ID_0); + + vm.expectRevert(ABErrors.NOT_ELIGIBLE.selector); + nft.mint{value: PRICE * mintQty}(alice, PHASE_ID_0, mintQty, invalidSignature); + + vm.stopPrank(); + } + + function test_mint_public() public { + vm.startPrank(publisher); + nft.initDrop(SHARE_PER_TOKEN, MINT_GENESIS, genesisRecipient, address(royaltyToken), URI); + + // Set block.timestamp to be after the start of Phase 0 + vm.warp(P0_START + 1); + + // Set the phases + ABDataTypes.Phase memory phase0 = ABDataTypes.Phase(P0_START, P0_END, PRICE, 10, PUBLIC_PHASE); + ABDataTypes.Phase[] memory phases = new ABDataTypes.Phase[](1); + phases[0] = phase0; + nft.setDropPhases(phases); + + vm.stopPrank(); + + // Impersonate `alice` + vm.startPrank(alice); + + uint256 mintQty = 4; + + nft.mint{value: PRICE * mintQty}(alice, PHASE_ID_0, mintQty, ""); + + assertEq(nft.balanceOf(alice), mintQty); + + vm.stopPrank(); + } + + function test_setSharePerToken_admin(uint256 _newShare) public { + vm.assume(_newShare != SHARE_PER_TOKEN); + vm.assume(_newShare < 1_000_000); + + vm.startPrank(publisher); + nft.initDrop(SHARE_PER_TOKEN, MINT_GENESIS, genesisRecipient, address(royaltyToken), URI); + + assertEq(nft.sharePerToken(), SHARE_PER_TOKEN); + + nft.setSharePerToken(_newShare); + + assertEq(nft.sharePerToken(), _newShare); + vm.stopPrank(); + } + + function test_setSharePerToken_nonAdmin(address _nonAdmin, uint256 _newShare) public { + vm.assume(_newShare != SHARE_PER_TOKEN); + vm.assume(_newShare < 1_000_000); + vm.assume(_nonAdmin != address(this)); + vm.assume(_nonAdmin != publisher); + + vm.prank(publisher); + nft.initDrop(SHARE_PER_TOKEN, MINT_GENESIS, genesisRecipient, address(royaltyToken), URI); + + assertEq(nft.sharePerToken(), SHARE_PER_TOKEN); + + vm.prank(_nonAdmin); + vm.expectRevert(); + nft.setSharePerToken(_newShare); + } + + function test_withdrawERC20_admin() public { + vm.prank(alice); + mockToken.transfer(address(nft), 10e18); + + assertEq(mockToken.balanceOf(publisher), 0); + assertEq(mockToken.balanceOf(address(nft)), 10e18); + + vm.prank(publisher); + nft.withdrawERC20(address(mockToken), 10e18); + + assertEq(mockToken.balanceOf(publisher), 10e18); + assertEq(mockToken.balanceOf(address(nft)), 0); + } + + function test_withdrawERC20_nonAdmin(address _nonAdmin) public { + vm.assume(_nonAdmin != address(this)); + vm.assume(_nonAdmin != publisher); + + vm.prank(alice); + mockToken.transfer(address(nft), 10e18); + + vm.prank(_nonAdmin); + vm.expectRevert(); + nft.withdrawERC20(address(mockToken), 10e18); + } + + function test_withdrawToRightholder(uint256 _amount) public { + vm.assume(_amount > 10); + vm.assume(_amount < 1e30); + vm.deal(address(nft), _amount); + + vm.prank(publisher); + nft.withdrawToRightholder(); + + uint256 expectedPublisherBalance = _amount * PUBLISHER_FEE / 10_000; + uint256 expectedTreasuryBalance = _amount - expectedPublisherBalance; + + assertEq(treasury.balance, expectedTreasuryBalance); + assertEq(publisher.balance, expectedPublisherBalance); + } + + function test_withdrawToRightholder_allToPublisher(uint256 _amount) public { + vm.assume(_amount > 10); + vm.assume(_amount < 1e30); + vm.deal(address(nft), _amount); + + abDataRegistry.setPublisherFee(publisher, 10_000); + + vm.prank(publisher); + nft.withdrawToRightholder(); + + uint256 expectedPublisherBalance = _amount; + uint256 expectedTreasuryBalance = 0; + + assertEq(treasury.balance, expectedTreasuryBalance); + assertEq(publisher.balance, expectedPublisherBalance); + } + + function test_withdrawToRightholder_allToTreasury(uint256 _amount) public { + vm.assume(_amount > 10); + vm.assume(_amount < 1e30); + vm.deal(address(nft), _amount); + + abDataRegistry.setPublisherFee(publisher, 0); + + vm.prank(publisher); + nft.withdrawToRightholder(); + + uint256 expectedPublisherBalance = 0; + uint256 expectedTreasuryBalance = _amount; + + assertEq(treasury.balance, expectedTreasuryBalance); + assertEq(publisher.balance, expectedPublisherBalance); + } + + function test_withdrawToRightholder_invalidParameter(uint256 _amount) public { + vm.assume(_amount > 10); + vm.assume(_amount < 1e30); + vm.deal(address(nft), _amount); + + abDataRegistry.setTreasury(address(0)); + + vm.prank(publisher); + vm.expectRevert(ABErrors.INVALID_PARAMETER.selector); + nft.withdrawToRightholder(); + } + + function test_withdrawToRightholder_nonAdmin(address _sender, uint256 _amount) public { + vm.assume(_amount > 10); + vm.assume(_amount < 1e30); + vm.assume(nft.owner() != _sender); + + vm.deal(address(nft), _amount); + + vm.prank(_sender); + vm.expectRevert(); + nft.withdrawToRightholder(); + } + + function test_symbol_initialized() public { + vm.startPrank(publisher); + nft.initDrop(SHARE_PER_TOKEN, 2, genesisRecipient, address(royaltyToken), URI); + + string memory symbol = nft.symbol(); + + assertEq(keccak256(abi.encodePacked(symbol)) == keccak256(abi.encodePacked("AB10001")), true); + } + + function test_symbol_notInitialized() public { + string memory symbol = nft.symbol(); + + assertEq(keccak256(abi.encodePacked(symbol)) == keccak256(abi.encodePacked("")), true); + } + + function test_tokenURI_nonUnique() public { + string memory tokenURI = "metadata.io/"; + + vm.prank(publisher); + nft.initDrop(SHARE_PER_TOKEN, MINT_GENESIS, genesisRecipient, address(royaltyToken), tokenURI); + + string memory returnedTokenURI = nft.tokenURI(1); + assertEq(keccak256(abi.encodePacked(returnedTokenURI)) == keccak256(abi.encodePacked("metadata.io/1")), true); + } + + function test_tokenURI_unique() public { + string memory tokenURI = "metadata.io"; + + vm.prank(publisher); + nft.initDrop(SHARE_PER_TOKEN, MINT_GENESIS, genesisRecipient, address(royaltyToken), tokenURI); + + string memory returnedTokenURI = nft.tokenURI(1); + assertEq(keccak256(abi.encodePacked(returnedTokenURI)) == keccak256(abi.encodePacked("metadata.io")), true); + } + + function test_tokenURI_empty() public { + string memory tokenURI = ""; + + vm.prank(publisher); + nft.initDrop(SHARE_PER_TOKEN, MINT_GENESIS, genesisRecipient, address(royaltyToken), tokenURI); + + string memory returnedTokenURI = nft.tokenURI(1); + assertEq(keccak256(abi.encodePacked(returnedTokenURI)) == keccak256(abi.encodePacked("")), true); + } + + function test_tokenURI_unminted() public { + string memory tokenURI = "metadata.io/"; + + vm.prank(publisher); + nft.initDrop(SHARE_PER_TOKEN, 0, genesisRecipient, address(royaltyToken), tokenURI); + + vm.expectRevert(ABErrors.INVALID_PARAMETER.selector); + nft.tokenURI(1); + } + + /* ******************************************************************************************/ + /* UTILITY FUNCTIONS */ + /* ******************************************************************************************/ + + function _generateBackendSignature(address _signFor, address _collection, uint256 _phaseId) + internal + view + returns (bytes memory signature) + { + // Create signature for user `signFor` for drop ID `_dropId` and phase ID `_phaseId` + bytes32 msgHash = keccak256(abi.encodePacked(_signFor, _collection, _phaseId)).toEthSignedMessageHash(); + (uint8 v, bytes32 r, bytes32 s) = vm.sign(abSignerPkey, msgHash); + signature = abi.encodePacked(r, s, v); + } + + function _generateInvalidSignature(address _signFor, address _collection, uint256 _phaseId) + internal + pure + returns (bytes memory signature) + { + // Create signature for user `signFor` for drop ID `_dropId` and phase ID `_phaseId` + bytes32 msgHash = keccak256(abi.encodePacked(_signFor, _collection, _phaseId)).toEthSignedMessageHash(); + (uint8 v, bytes32 r, bytes32 s) = vm.sign(1000, msgHash); + signature = abi.encodePacked(r, s, v); + } +} diff --git a/test/utils/ABDataRegistry.t.sol b/test/utils/ABDataRegistry.t.sol index efc1e2e..cc76d0b 100644 --- a/test/utils/ABDataRegistry.t.sol +++ b/test/utils/ABDataRegistry.t.sol @@ -2,7 +2,6 @@ pragma solidity ^0.8.18; import "forge-std/Test.sol"; -// import "forge-std/Console.sol"; import {ABDataRegistry} from "src/utils/ABDataRegistry.sol"; import {ABErrors} from "src/libraries/ABErrors.sol"; @@ -13,6 +12,7 @@ import {IERC20} from "@openzeppelin/contracts/token/ERC20/IERC20.sol"; import {TransparentUpgradeableProxy} from "@openzeppelin/contracts/proxy/transparent/TransparentUpgradeableProxy.sol"; import {ProxyAdmin} from "@openzeppelin/contracts/proxy/transparent/ProxyAdmin.sol"; +/* solhint-disable */ contract ABDataRegistryTest is Test { /* Constants */ uint256 public constant DROP_ID_OFFSET = 100; @@ -272,7 +272,24 @@ contract ABDataRegistryTest is Test { vm.prank(_sender); abDataRegistry.registerPublisher(_publisher, _royalty, _fee); - (address treasury, uint256 fee) = abDataRegistry.getPayoutDetails(_publisher); + (address treasury, uint256 fee) = abDataRegistry.getPayoutDetails(_publisher, 0); + + assertEq(fee, _fee); + assertEq(treasury, abTreasury); + } + + function test_getPayoutDetails_dropSpecific(address _sender, address _publisher, uint256 _dropId, uint256 _fee) + public + { + vm.assume(_sender != address(proxyAdmin)); + vm.assume(_fee <= 10_000); + + abDataRegistry.grantRole(DEFAULT_ADMIN_ROLE_HASH, _sender); + + vm.prank(_sender); + abDataRegistry.setDropFee(true, _dropId, _fee); + + (address treasury, uint256 fee) = abDataRegistry.getPayoutDetails(_publisher, _dropId); assertEq(fee, _fee); assertEq(treasury, abTreasury); @@ -291,6 +308,42 @@ contract ABDataRegistryTest is Test { assertEq(fee, _fee); } + function test_setDropFee_correctRole(address _sender, uint256 _dropId, uint256 _fee) public { + vm.assume(_sender != address(proxyAdmin)); + vm.assume(_fee <= 10_000); + + abDataRegistry.grantRole(DEFAULT_ADMIN_ROLE_HASH, _sender); + + vm.prank(_sender); + abDataRegistry.setDropFee(true, _dropId, _fee); + + uint256 fee = abDataRegistry.dropFees(_dropId); + bool hasDropFee = abDataRegistry.hasDropSpecificFees(_dropId); + + assertEq(fee, _fee); + assertEq(hasDropFee, true); + } + + function test_setDropFee_incorrectRole(address _sender, uint256 _dropId, uint256 _fee) public { + vm.assume(abDataRegistry.hasRole(DEFAULT_ADMIN_ROLE_HASH, _sender) == false); + vm.assume(_sender != address(proxyAdmin)); + + vm.prank(_sender); + vm.expectRevert(); + abDataRegistry.setDropFee(true, _dropId, _fee); + } + + function test_setDropFee_invalidParameter(address _sender, uint256 _dropId, uint256 _fee) public { + vm.assume(_sender != address(proxyAdmin)); + vm.assume(_fee > 10_000); + + abDataRegistry.grantRole(DEFAULT_ADMIN_ROLE_HASH, _sender); + + vm.prank(_sender); + vm.expectRevert(ABErrors.INVALID_PARAMETER.selector); + abDataRegistry.setDropFee(true, _dropId, _fee); + } + function test_updatePublisher_correctRole( address _sender, address _publisher, diff --git a/test/utils/ABVerifier.t.sol b/test/utils/ABVerifier.t.sol index 8fba3cc..8373161 100644 --- a/test/utils/ABVerifier.t.sol +++ b/test/utils/ABVerifier.t.sol @@ -12,6 +12,7 @@ import {ECDSA} from "@openzeppelin/contracts/utils/cryptography/ECDSA.sol"; import {TransparentUpgradeableProxy} from "@openzeppelin/contracts/proxy/transparent/TransparentUpgradeableProxy.sol"; import {ProxyAdmin} from "@openzeppelin/contracts/proxy/transparent/ProxyAdmin.sol"; +/* solhint-disable */ contract ABVerifierTest is Test, ABVerifierTestData { using ECDSA for bytes32;