@artblocks/contracts 1.3.0 → 1.3.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/artifacts/contracts/interfaces/v0.8.x/IPMPV0.sol/IPMPV0.json +7 -1
- package/artifacts/contracts/libs/v0.8.x/ImmutableStringArray.sol/ImmutableStringArray.json +2 -2
- package/artifacts/contracts/mock/ImmutableStringArrayMock.sol/ImmutableStringArrayMock.json +2 -2
- package/artifacts/contracts/mock/MockPMPAugmentHook.sol/MockPMPAugmentHook.json +2 -2
- package/artifacts/contracts/mock/MockPMPConfigureHook.sol/MockPMPConfigureHook.json +2 -2
- package/artifacts/contracts/web3call/PMPV0.sol/PMPV0.json +9 -3
- package/artifacts/contracts/web3call/augment-hooks/InjectBaseGasFee.sol/InjectBaseGasFee.json +2 -2
- package/artifacts/contracts/web3call/augment-hooks/InjectChromieSquiggleFloorPrice.sol/InjectChromieSquiggleFloorPrice.json +2 -2
- package/artifacts/contracts/web3call/augment-hooks/InjectIsNounsDaoMember.sol/InjectIsNounsDaoMember.json +2 -2
- package/artifacts/contracts/web3call/augment-hooks/InjectIsProjectFullyMinted.sol/InjectIsProjectFullyMinted.json +2 -2
- package/artifacts/contracts/web3call/augment-hooks/InjectPolyptychTokenHash.sol/InjectPolyptychTokenHash.json +2 -2
- package/artifacts/contracts/web3call/augment-hooks/InjectTokenHashSeed.sol/InjectTokenHashSeed.json +2 -2
- package/artifacts/contracts/web3call/augment-hooks/InjectTokenOwner.sol/InjectTokenOwner.json +2 -2
- package/artifacts/contracts/web3call/augment-hooks/InjectTokenOwnerEthBalance.sol/InjectTokenOwnerEthBalance.json +2 -2
- package/artifacts/contracts/web3call/augment-hooks/InjectUSDCTotalSupply.sol/InjectUSDCTotalSupply.json +2 -2
- package/contracts/interfaces/v0.8.x/IPMPV0.sol +5 -3
- package/contracts/libs/v0.8.x/ImmutableStringArray.sol +15 -3
- package/contracts/web3call/PMPV0.sol +93 -98
- package/package.json +2 -2
|
@@ -134,8 +134,8 @@
|
|
|
134
134
|
"type": "function"
|
|
135
135
|
}
|
|
136
136
|
],
|
|
137
|
-
"bytecode": "
|
|
138
|
-
"deployedBytecode": "
|
|
137
|
+
"bytecode": "0x60c060405234801561001057600080fd5b506040516109dd3803806109dd83398101604081905261002f91610045565b6001600160a01b0390911660a05260805261007f565b6000806040838503121561005857600080fd5b82516001600160a01b038116811461006f57600080fd5b6020939093015192949293505050565b60805160a05161092d6100b06000396000818160b30152610271015260008181607e0152610228015261092d6000f3fe608060405234801561001057600080fd5b506004361061004c5760003560e01c806301ffc9a7146100515780634d84f2d41461007957806356ecea49146100ae57806358f8699f146100ed575b600080fd5b61006461005f36600461057a565b61010d565b60405190151581526020015b60405180910390f35b6100a07f000000000000000000000000000000000000000000000000000000000000000081565b604051908152602001610070565b6100d57f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610070565b6101006100fb3660046105a4565b610144565b6040516100709190610681565b60006001600160e01b031982166358f8699f60e01b148061013e57506301ffc9a760e01b6001600160e01b03198316145b92915050565b606081600061015482600161071e565b9050806001600160401b0381111561016e5761016e610731565b6040519080825280602002602001820160405280156101b357816020015b604080518082019091526060808252602082015281526020019060019003908161018c5790505b50925060005b82811015610213578585828181106101d3576101d3610747565b90506020028101906101e5919061075d565b6101ee90610809565b84828151811061020057610200610747565b60209081029190910101526001016101b9565b50600061021f87610346565b9050600061024d7f000000000000000000000000000000000000000000000000000000000000000083610355565b60405163188687dd60e21b8152600481018290529091506000906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063621a1f7490602401602060405180830381865afa1580156102b8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102dc919061088e565b60408051608081018252600f9181019182526e0e6deeae4c6caa8ded6cadc90c2e6d608b1b60608201529081529091506020810161031983610376565b81525086868151811061032e5761032e610747565b60200260200101819052505050505050949350505050565b600061013e620f4240836108a7565b600081610365620f4240856108c9565b61036f919061071e565b9392505050565b606061013e826103858461038d565b6001016103f7565b600080608083901c156103a55760809290921c916010015b604083901c156103ba5760409290921c916008015b602083901c156103cf5760209290921c916004015b601083901c156103e45760109290921c916002015b600883901c1561013e5760010192915050565b60608260006104078460026108c9565b61041290600261071e565b6001600160401b0381111561042957610429610731565b6040519080825280601f01601f191660200182016040528015610453576020820181803683370190505b509050600360fc1b8160008151811061046e5761046e610747565b60200101906001600160f81b031916908160001a905350600f60fb1b8160018151811061049d5761049d610747565b60200101906001600160f81b031916908160001a90535060006104c18560026108c9565b6104cc90600161071e565b90505b6001811115610544576f181899199a1a9b1b9c1cb0b131b232b360811b83600f166010811061050057610500610747565b1a60f81b82828151811061051657610516610747565b60200101906001600160f81b031916908160001a90535060049290921c9161053d816108e0565b90506104cf565b5081156105725760405163e22e27eb60e01b8152600481018690526024810185905260440160405180910390fd5b949350505050565b60006020828403121561058c57600080fd5b81356001600160e01b03198116811461036f57600080fd5b600080600080606085870312156105ba57600080fd5b84356001600160a01b03811681146105d157600080fd5b93506020850135925060408501356001600160401b03808211156105f457600080fd5b818701915087601f83011261060857600080fd5b81358181111561061757600080fd5b8860208260051b850101111561062c57600080fd5b95989497505060200194505050565b6000815180845260005b8181101561066157602081850181015186830182015201610645565b506000602082860101526020601f19601f83011685010191505092915050565b600060208083018184528085518083526040925060408601915060408160051b87010184880160005b838110156106fa57888303603f19018552815180518785526106ce8886018261063b565b91890151858303868b01529190506106e6818361063b565b9689019694505050908601906001016106aa565b509098975050505050505050565b634e487b7160e01b600052601160045260246000fd5b8082018082111561013e5761013e610708565b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b60008235603e1983360301811261077357600080fd5b9190910192915050565b600082601f83011261078e57600080fd5b81356001600160401b03808211156107a8576107a8610731565b604051601f8301601f19908116603f011681019082821181831017156107d0576107d0610731565b816040528381528660208588010111156107e957600080fd5b836020870160208301376000602085830101528094505050505092915050565b60006040823603121561081b57600080fd5b604080519081016001600160401b03808211838310171561083e5761083e610731565b81604052843591508082111561085357600080fd5b61085f3683870161077d565b8352602085013591508082111561087557600080fd5b506108823682860161077d565b60208301525092915050565b6000602082840312156108a057600080fd5b5051919050565b6000826108c457634e487b7160e01b600052601260045260246000fd5b500690565b808202811582820484141761013e5761013e610708565b6000816108ef576108ef610708565b50600019019056fea2646970667358221220853017c6efb891bf8537f1930502c48f431834d7b4baa01a1b1c3e20eb12a0b464736f6c63430008160033",
|
|
138
|
+
"deployedBytecode": "0x608060405234801561001057600080fd5b506004361061004c5760003560e01c806301ffc9a7146100515780634d84f2d41461007957806356ecea49146100ae57806358f8699f146100ed575b600080fd5b61006461005f36600461057a565b61010d565b60405190151581526020015b60405180910390f35b6100a07f000000000000000000000000000000000000000000000000000000000000000081565b604051908152602001610070565b6100d57f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610070565b6101006100fb3660046105a4565b610144565b6040516100709190610681565b60006001600160e01b031982166358f8699f60e01b148061013e57506301ffc9a760e01b6001600160e01b03198316145b92915050565b606081600061015482600161071e565b9050806001600160401b0381111561016e5761016e610731565b6040519080825280602002602001820160405280156101b357816020015b604080518082019091526060808252602082015281526020019060019003908161018c5790505b50925060005b82811015610213578585828181106101d3576101d3610747565b90506020028101906101e5919061075d565b6101ee90610809565b84828151811061020057610200610747565b60209081029190910101526001016101b9565b50600061021f87610346565b9050600061024d7f000000000000000000000000000000000000000000000000000000000000000083610355565b60405163188687dd60e21b8152600481018290529091506000906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063621a1f7490602401602060405180830381865afa1580156102b8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102dc919061088e565b60408051608081018252600f9181019182526e0e6deeae4c6caa8ded6cadc90c2e6d608b1b60608201529081529091506020810161031983610376565b81525086868151811061032e5761032e610747565b60200260200101819052505050505050949350505050565b600061013e620f4240836108a7565b600081610365620f4240856108c9565b61036f919061071e565b9392505050565b606061013e826103858461038d565b6001016103f7565b600080608083901c156103a55760809290921c916010015b604083901c156103ba5760409290921c916008015b602083901c156103cf5760209290921c916004015b601083901c156103e45760109290921c916002015b600883901c1561013e5760010192915050565b60608260006104078460026108c9565b61041290600261071e565b6001600160401b0381111561042957610429610731565b6040519080825280601f01601f191660200182016040528015610453576020820181803683370190505b509050600360fc1b8160008151811061046e5761046e610747565b60200101906001600160f81b031916908160001a905350600f60fb1b8160018151811061049d5761049d610747565b60200101906001600160f81b031916908160001a90535060006104c18560026108c9565b6104cc90600161071e565b90505b6001811115610544576f181899199a1a9b1b9c1cb0b131b232b360811b83600f166010811061050057610500610747565b1a60f81b82828151811061051657610516610747565b60200101906001600160f81b031916908160001a90535060049290921c9161053d816108e0565b90506104cf565b5081156105725760405163e22e27eb60e01b8152600481018690526024810185905260440160405180910390fd5b949350505050565b60006020828403121561058c57600080fd5b81356001600160e01b03198116811461036f57600080fd5b600080600080606085870312156105ba57600080fd5b84356001600160a01b03811681146105d157600080fd5b93506020850135925060408501356001600160401b03808211156105f457600080fd5b818701915087601f83011261060857600080fd5b81358181111561061757600080fd5b8860208260051b850101111561062c57600080fd5b95989497505060200194505050565b6000815180845260005b8181101561066157602081850181015186830182015201610645565b506000602082860101526020601f19601f83011685010191505092915050565b600060208083018184528085518083526040925060408601915060408160051b87010184880160005b838110156106fa57888303603f19018552815180518785526106ce8886018261063b565b91890151858303868b01529190506106e6818361063b565b9689019694505050908601906001016106aa565b509098975050505050505050565b634e487b7160e01b600052601160045260246000fd5b8082018082111561013e5761013e610708565b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b60008235603e1983360301811261077357600080fd5b9190910192915050565b600082601f83011261078e57600080fd5b81356001600160401b03808211156107a8576107a8610731565b604051601f8301601f19908116603f011681019082821181831017156107d0576107d0610731565b816040528381528660208588010111156107e957600080fd5b836020870160208301376000602085830101528094505050505092915050565b60006040823603121561081b57600080fd5b604080519081016001600160401b03808211838310171561083e5761083e610731565b81604052843591508082111561085357600080fd5b61085f3683870161077d565b8352602085013591508082111561087557600080fd5b506108823682860161077d565b60208301525092915050565b6000602082840312156108a057600080fd5b5051919050565b6000826108c457634e487b7160e01b600052601260045260246000fd5b500690565b808202811582820484141761013e5761013e610708565b6000816108ef576108ef610708565b50600019019056fea2646970667358221220853017c6efb891bf8537f1930502c48f431834d7b4baa01a1b1c3e20eb12a0b464736f6c63430008160033",
|
|
139
139
|
"linkReferences": {},
|
|
140
140
|
"deployedLinkReferences": {}
|
|
141
141
|
}
|
package/artifacts/contracts/web3call/augment-hooks/InjectTokenHashSeed.sol/InjectTokenHashSeed.json
CHANGED
|
@@ -92,8 +92,8 @@
|
|
|
92
92
|
"type": "function"
|
|
93
93
|
}
|
|
94
94
|
],
|
|
95
|
-
"bytecode": "
|
|
96
|
-
"deployedBytecode": "
|
|
95
|
+
"bytecode": "0x608060405234801561001057600080fd5b50610813806100206000396000f3fe608060405234801561001057600080fd5b50600436106100365760003560e01c806301ffc9a71461003b57806358f8699f14610063575b600080fd5b61004e61004936600461046a565b610083565b60405190151581526020015b60405180910390f35b61007661007136600461049b565b6100ba565b60405161005a9190610578565b60006001600160e01b031982166358f8699f60e01b14806100b457506301ffc9a760e01b6001600160e01b03198316145b92915050565b60608160006100ca826001610615565b9050806001600160401b038111156100e4576100e4610628565b60405190808252806020026020018201604052801561012957816020015b60408051808201909152606080825260208201528152602001906001900390816101025790505b50925060005b82811015610189578585828181106101495761014961063e565b905060200281019061015b9190610654565b61016490610700565b8482815181106101765761017661063e565b602090810291909101015260010161012f565b50604051634d01727d60e11b8152600481018790526000906001600160a01b03891690639a02e4fa90602401602060405180830381865afa1580156101d2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101f69190610785565b60408051608081018252600d9181019182526c1d1bdad95b92185cda14d95959609a1b60608201529081529091506020810161023b6001600160a01b03198416610266565b8152508484815181106102505761025061063e565b6020026020010181905250505050949350505050565b60606100b4826102758461027d565b6001016102e7565b600080608083901c156102955760809290921c916010015b604083901c156102aa5760409290921c916008015b602083901c156102bf5760209290921c916004015b601083901c156102d45760109290921c916002015b600883901c156100b45760010192915050565b60608260006102f78460026107af565b610302906002610615565b6001600160401b0381111561031957610319610628565b6040519080825280601f01601f191660200182016040528015610343576020820181803683370190505b509050600360fc1b8160008151811061035e5761035e61063e565b60200101906001600160f81b031916908160001a905350600f60fb1b8160018151811061038d5761038d61063e565b60200101906001600160f81b031916908160001a90535060006103b18560026107af565b6103bc906001610615565b90505b6001811115610434576f181899199a1a9b1b9c1cb0b131b232b360811b83600f16601081106103f0576103f061063e565b1a60f81b8282815181106104065761040661063e565b60200101906001600160f81b031916908160001a90535060049290921c9161042d816107c6565b90506103bf565b5081156104625760405163e22e27eb60e01b8152600481018690526024810185905260440160405180910390fd5b949350505050565b60006020828403121561047c57600080fd5b81356001600160e01b03198116811461049457600080fd5b9392505050565b600080600080606085870312156104b157600080fd5b84356001600160a01b03811681146104c857600080fd5b93506020850135925060408501356001600160401b03808211156104eb57600080fd5b818701915087601f8301126104ff57600080fd5b81358181111561050e57600080fd5b8860208260051b850101111561052357600080fd5b95989497505060200194505050565b6000815180845260005b818110156105585760208185018101518683018201520161053c565b506000602082860101526020601f19601f83011685010191505092915050565b600060208083018184528085518083526040925060408601915060408160051b87010184880160005b838110156105f157888303603f19018552815180518785526105c588860182610532565b91890151858303868b01529190506105dd8183610532565b9689019694505050908601906001016105a1565b509098975050505050505050565b634e487b7160e01b600052601160045260246000fd5b808201808211156100b4576100b46105ff565b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b60008235603e1983360301811261066a57600080fd5b9190910192915050565b600082601f83011261068557600080fd5b81356001600160401b038082111561069f5761069f610628565b604051601f8301601f19908116603f011681019082821181831017156106c7576106c7610628565b816040528381528660208588010111156106e057600080fd5b836020870160208301376000602085830101528094505050505092915050565b60006040823603121561071257600080fd5b604080519081016001600160401b03808211838310171561073557610735610628565b81604052843591508082111561074a57600080fd5b61075636838701610674565b8352602085013591508082111561076c57600080fd5b5061077936828601610674565b60208301525092915050565b60006020828403121561079757600080fd5b81516001600160a01b03198116811461049457600080fd5b80820281158282048414176100b4576100b46105ff565b6000816107d5576107d56105ff565b50600019019056fea26469706673582212208247bd4046b8adca6a5b725d8c520c8a539c79239122a78e9f4aef06702466c764736f6c63430008160033",
|
|
96
|
+
"deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100365760003560e01c806301ffc9a71461003b57806358f8699f14610063575b600080fd5b61004e61004936600461046a565b610083565b60405190151581526020015b60405180910390f35b61007661007136600461049b565b6100ba565b60405161005a9190610578565b60006001600160e01b031982166358f8699f60e01b14806100b457506301ffc9a760e01b6001600160e01b03198316145b92915050565b60608160006100ca826001610615565b9050806001600160401b038111156100e4576100e4610628565b60405190808252806020026020018201604052801561012957816020015b60408051808201909152606080825260208201528152602001906001900390816101025790505b50925060005b82811015610189578585828181106101495761014961063e565b905060200281019061015b9190610654565b61016490610700565b8482815181106101765761017661063e565b602090810291909101015260010161012f565b50604051634d01727d60e11b8152600481018790526000906001600160a01b03891690639a02e4fa90602401602060405180830381865afa1580156101d2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101f69190610785565b60408051608081018252600d9181019182526c1d1bdad95b92185cda14d95959609a1b60608201529081529091506020810161023b6001600160a01b03198416610266565b8152508484815181106102505761025061063e565b6020026020010181905250505050949350505050565b60606100b4826102758461027d565b6001016102e7565b600080608083901c156102955760809290921c916010015b604083901c156102aa5760409290921c916008015b602083901c156102bf5760209290921c916004015b601083901c156102d45760109290921c916002015b600883901c156100b45760010192915050565b60608260006102f78460026107af565b610302906002610615565b6001600160401b0381111561031957610319610628565b6040519080825280601f01601f191660200182016040528015610343576020820181803683370190505b509050600360fc1b8160008151811061035e5761035e61063e565b60200101906001600160f81b031916908160001a905350600f60fb1b8160018151811061038d5761038d61063e565b60200101906001600160f81b031916908160001a90535060006103b18560026107af565b6103bc906001610615565b90505b6001811115610434576f181899199a1a9b1b9c1cb0b131b232b360811b83600f16601081106103f0576103f061063e565b1a60f81b8282815181106104065761040661063e565b60200101906001600160f81b031916908160001a90535060049290921c9161042d816107c6565b90506103bf565b5081156104625760405163e22e27eb60e01b8152600481018690526024810185905260440160405180910390fd5b949350505050565b60006020828403121561047c57600080fd5b81356001600160e01b03198116811461049457600080fd5b9392505050565b600080600080606085870312156104b157600080fd5b84356001600160a01b03811681146104c857600080fd5b93506020850135925060408501356001600160401b03808211156104eb57600080fd5b818701915087601f8301126104ff57600080fd5b81358181111561050e57600080fd5b8860208260051b850101111561052357600080fd5b95989497505060200194505050565b6000815180845260005b818110156105585760208185018101518683018201520161053c565b506000602082860101526020601f19601f83011685010191505092915050565b600060208083018184528085518083526040925060408601915060408160051b87010184880160005b838110156105f157888303603f19018552815180518785526105c588860182610532565b91890151858303868b01529190506105dd8183610532565b9689019694505050908601906001016105a1565b509098975050505050505050565b634e487b7160e01b600052601160045260246000fd5b808201808211156100b4576100b46105ff565b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b60008235603e1983360301811261066a57600080fd5b9190910192915050565b600082601f83011261068557600080fd5b81356001600160401b038082111561069f5761069f610628565b604051601f8301601f19908116603f011681019082821181831017156106c7576106c7610628565b816040528381528660208588010111156106e057600080fd5b836020870160208301376000602085830101528094505050505092915050565b60006040823603121561071257600080fd5b604080519081016001600160401b03808211838310171561073557610735610628565b81604052843591508082111561074a57600080fd5b61075636838701610674565b8352602085013591508082111561076c57600080fd5b5061077936828601610674565b60208301525092915050565b60006020828403121561079757600080fd5b81516001600160a01b03198116811461049457600080fd5b80820281158282048414176100b4576100b46105ff565b6000816107d5576107d56105ff565b50600019019056fea26469706673582212208247bd4046b8adca6a5b725d8c520c8a539c79239122a78e9f4aef06702466c764736f6c63430008160033",
|
|
97
97
|
"linkReferences": {},
|
|
98
98
|
"deployedLinkReferences": {}
|
|
99
99
|
}
|
package/artifacts/contracts/web3call/augment-hooks/InjectTokenOwner.sol/InjectTokenOwner.json
CHANGED
|
@@ -92,8 +92,8 @@
|
|
|
92
92
|
"type": "function"
|
|
93
93
|
}
|
|
94
94
|
],
|
|
95
|
-
"bytecode": "
|
|
96
|
-
"deployedBytecode": "
|
|
95
|
+
"bytecode": "0x608060405234801561001057600080fd5b5061079e806100206000396000f3fe608060405234801561001057600080fd5b50600436106100365760003560e01c806301ffc9a71461003b57806358f8699f14610063575b600080fd5b61004e6100493660046103f6565b610083565b60405190151581526020015b60405180910390f35b61007661007136600461043f565b6100ba565b60405161005a9190610510565b60006001600160e01b031982166358f8699f60e01b14806100b457506301ffc9a760e01b6001600160e01b03198316145b92915050565b60608160006100ca8260016105ad565b9050806001600160401b038111156100e4576100e46105c0565b60405190808252806020026020018201604052801561012957816020015b60408051808201909152606080825260208201528152602001906001900390816101025790505b50925060005b8281101561018957858582818110610149576101496105d6565b905060200281019061015b91906105ec565b61016490610698565b848281518110610176576101766105d6565b602090810291909101015260010161012f565b506040516331a9108f60e11b8152600481018790526000906001600160a01b03891690636352211e90602401602060405180830381865afa1580156101d2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101f6919061071d565b60408051608081018252600a918101918252693a37b5b2b727bbb732b960b11b6060820152908152909150602081016102376001600160a01b038416610262565b81525084848151811061024c5761024c6105d6565b6020026020010181905250505050949350505050565b60606100b46001600160a01b0383166014606082600061028384600261073a565b61028e9060026105ad565b6001600160401b038111156102a5576102a56105c0565b6040519080825280601f01601f1916602001820160405280156102cf576020820181803683370190505b509050600360fc1b816000815181106102ea576102ea6105d6565b60200101906001600160f81b031916908160001a905350600f60fb1b81600181518110610319576103196105d6565b60200101906001600160f81b031916908160001a905350600061033d85600261073a565b6103489060016105ad565b90505b60018111156103c0576f181899199a1a9b1b9c1cb0b131b232b360811b83600f166010811061037c5761037c6105d6565b1a60f81b828281518110610392576103926105d6565b60200101906001600160f81b031916908160001a90535060049290921c916103b981610751565b905061034b565b5081156103ee5760405163e22e27eb60e01b8152600481018690526024810185905260440160405180910390fd5b949350505050565b60006020828403121561040857600080fd5b81356001600160e01b03198116811461042057600080fd5b9392505050565b6001600160a01b038116811461043c57600080fd5b50565b6000806000806060858703121561045557600080fd5b843561046081610427565b93506020850135925060408501356001600160401b038082111561048357600080fd5b818701915087601f83011261049757600080fd5b8135818111156104a657600080fd5b8860208260051b85010111156104bb57600080fd5b95989497505060200194505050565b6000815180845260005b818110156104f0576020818501810151868301820152016104d4565b506000602082860101526020601f19601f83011685010191505092915050565b600060208083018184528085518083526040925060408601915060408160051b87010184880160005b8381101561058957888303603f190185528151805187855261055d888601826104ca565b91890151858303868b015291905061057581836104ca565b968901969450505090860190600101610539565b509098975050505050505050565b634e487b7160e01b600052601160045260246000fd5b808201808211156100b4576100b4610597565b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b60008235603e1983360301811261060257600080fd5b9190910192915050565b600082601f83011261061d57600080fd5b81356001600160401b0380821115610637576106376105c0565b604051601f8301601f19908116603f0116810190828211818310171561065f5761065f6105c0565b8160405283815286602085880101111561067857600080fd5b836020870160208301376000602085830101528094505050505092915050565b6000604082360312156106aa57600080fd5b604080519081016001600160401b0380821183831017156106cd576106cd6105c0565b8160405284359150808211156106e257600080fd5b6106ee3683870161060c565b8352602085013591508082111561070457600080fd5b506107113682860161060c565b60208301525092915050565b60006020828403121561072f57600080fd5b815161042081610427565b80820281158282048414176100b4576100b4610597565b60008161076057610760610597565b50600019019056fea2646970667358221220989bbaf0d71e9303cd2cf70dde8246d68293309e12fa0d39576b572cd922092d64736f6c63430008160033",
|
|
96
|
+
"deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100365760003560e01c806301ffc9a71461003b57806358f8699f14610063575b600080fd5b61004e6100493660046103f6565b610083565b60405190151581526020015b60405180910390f35b61007661007136600461043f565b6100ba565b60405161005a9190610510565b60006001600160e01b031982166358f8699f60e01b14806100b457506301ffc9a760e01b6001600160e01b03198316145b92915050565b60608160006100ca8260016105ad565b9050806001600160401b038111156100e4576100e46105c0565b60405190808252806020026020018201604052801561012957816020015b60408051808201909152606080825260208201528152602001906001900390816101025790505b50925060005b8281101561018957858582818110610149576101496105d6565b905060200281019061015b91906105ec565b61016490610698565b848281518110610176576101766105d6565b602090810291909101015260010161012f565b506040516331a9108f60e11b8152600481018790526000906001600160a01b03891690636352211e90602401602060405180830381865afa1580156101d2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101f6919061071d565b60408051608081018252600a918101918252693a37b5b2b727bbb732b960b11b6060820152908152909150602081016102376001600160a01b038416610262565b81525084848151811061024c5761024c6105d6565b6020026020010181905250505050949350505050565b60606100b46001600160a01b0383166014606082600061028384600261073a565b61028e9060026105ad565b6001600160401b038111156102a5576102a56105c0565b6040519080825280601f01601f1916602001820160405280156102cf576020820181803683370190505b509050600360fc1b816000815181106102ea576102ea6105d6565b60200101906001600160f81b031916908160001a905350600f60fb1b81600181518110610319576103196105d6565b60200101906001600160f81b031916908160001a905350600061033d85600261073a565b6103489060016105ad565b90505b60018111156103c0576f181899199a1a9b1b9c1cb0b131b232b360811b83600f166010811061037c5761037c6105d6565b1a60f81b828281518110610392576103926105d6565b60200101906001600160f81b031916908160001a90535060049290921c916103b981610751565b905061034b565b5081156103ee5760405163e22e27eb60e01b8152600481018690526024810185905260440160405180910390fd5b949350505050565b60006020828403121561040857600080fd5b81356001600160e01b03198116811461042057600080fd5b9392505050565b6001600160a01b038116811461043c57600080fd5b50565b6000806000806060858703121561045557600080fd5b843561046081610427565b93506020850135925060408501356001600160401b038082111561048357600080fd5b818701915087601f83011261049757600080fd5b8135818111156104a657600080fd5b8860208260051b85010111156104bb57600080fd5b95989497505060200194505050565b6000815180845260005b818110156104f0576020818501810151868301820152016104d4565b506000602082860101526020601f19601f83011685010191505092915050565b600060208083018184528085518083526040925060408601915060408160051b87010184880160005b8381101561058957888303603f190185528151805187855261055d888601826104ca565b91890151858303868b015291905061057581836104ca565b968901969450505090860190600101610539565b509098975050505050505050565b634e487b7160e01b600052601160045260246000fd5b808201808211156100b4576100b4610597565b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b60008235603e1983360301811261060257600080fd5b9190910192915050565b600082601f83011261061d57600080fd5b81356001600160401b0380821115610637576106376105c0565b604051601f8301601f19908116603f0116810190828211818310171561065f5761065f6105c0565b8160405283815286602085880101111561067857600080fd5b836020870160208301376000602085830101528094505050505092915050565b6000604082360312156106aa57600080fd5b604080519081016001600160401b0380821183831017156106cd576106cd6105c0565b8160405284359150808211156106e257600080fd5b6106ee3683870161060c565b8352602085013591508082111561070457600080fd5b506107113682860161060c565b60208301525092915050565b60006020828403121561072f57600080fd5b815161042081610427565b80820281158282048414176100b4576100b4610597565b60008161076057610760610597565b50600019019056fea2646970667358221220989bbaf0d71e9303cd2cf70dde8246d68293309e12fa0d39576b572cd922092d64736f6c63430008160033",
|
|
97
97
|
"linkReferences": {},
|
|
98
98
|
"deployedLinkReferences": {}
|
|
99
99
|
}
|
|
@@ -76,8 +76,8 @@
|
|
|
76
76
|
"type": "function"
|
|
77
77
|
}
|
|
78
78
|
],
|
|
79
|
-
"bytecode": "
|
|
80
|
-
"deployedBytecode": "
|
|
79
|
+
"bytecode": "0x608060405234801561001057600080fd5b5061074a806100206000396000f3fe608060405234801561001057600080fd5b50600436106100365760003560e01c806301ffc9a71461003b57806358f8699f14610063575b600080fd5b61004e6100493660046103d8565b610083565b60405190151581526020015b60405180910390f35b610076610071366004610421565b6100ba565b60405161005a91906104f2565b60006001600160e01b031982166358f8699f60e01b14806100b457506301ffc9a760e01b6001600160e01b03198316145b92915050565b60608160006100ca826001610579565b9050806001600160401b038111156100e4576100e461059a565b60405190808252806020026020018201604052801561012957816020015b60408051808201909152606080825260208201528152602001906001900390816101025790505b50925060005b8281101561018957858582818110610149576101496105b0565b905060200281019061015b91906105c6565b61016490610672565b848281518110610176576101766105b0565b602090810291909101015260010161012f565b506040516331a9108f60e11b8152600481018790526000906001600160a01b03891690636352211e90602401602060405180830381865afa1580156101d2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101f691906106f7565b60408051608081018252601491810191825273746f6b656e4f776e657245746842616c616e636560601b60608201529081529091506001600160a01b03821631906020810161024483610270565b815250858581518110610259576102596105b0565b602002602001018190525050505050949350505050565b6060600061027d83610302565b60010190506000816001600160401b0381111561029c5761029c61059a565b6040519080825280601f01601f1916602001820160405280156102c6576020820181803683370190505b5090508181016020015b600019016f181899199a1a9b1b9c1cb0b131b232b360811b600a86061a8153600a85049450846102d057509392505050565b60008072184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b83106103415772184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b830492506040015b6904ee2d6d415b85acef8160201b831061036b576904ee2d6d415b85acef8160201b830492506020015b662386f26fc10000831061038957662386f26fc10000830492506010015b6305f5e10083106103a1576305f5e100830492506008015b61271083106103b557612710830492506004015b606483106103c7576064830492506002015b600a83106100b45760010192915050565b6000602082840312156103ea57600080fd5b81356001600160e01b03198116811461040257600080fd5b9392505050565b6001600160a01b038116811461041e57600080fd5b50565b6000806000806060858703121561043757600080fd5b843561044281610409565b93506020850135925060408501356001600160401b038082111561046557600080fd5b818701915087601f83011261047957600080fd5b81358181111561048857600080fd5b8860208260051b850101111561049d57600080fd5b95989497505060200194505050565b6000815180845260005b818110156104d2576020818501810151868301820152016104b6565b506000602082860101526020601f19601f83011685010191505092915050565b600060208083018184528085518083526040925060408601915060408160051b87010184880160005b8381101561056b57888303603f190185528151805187855261053f888601826104ac565b91890151858303868b015291905061055781836104ac565b96890196945050509086019060010161051b565b509098975050505050505050565b808201808211156100b457634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b60008235603e198336030181126105dc57600080fd5b9190910192915050565b600082601f8301126105f757600080fd5b81356001600160401b03808211156106115761061161059a565b604051601f8301601f19908116603f011681019082821181831017156106395761063961059a565b8160405283815286602085880101111561065257600080fd5b836020870160208301376000602085830101528094505050505092915050565b60006040823603121561068457600080fd5b604080519081016001600160401b0380821183831017156106a7576106a761059a565b8160405284359150808211156106bc57600080fd5b6106c8368387016105e6565b835260208501359150808211156106de57600080fd5b506106eb368286016105e6565b60208301525092915050565b60006020828403121561070957600080fd5b81516104028161040956fea26469706673582212208e2049b3dfe651fb9ababa29297f99dd6042e35ae9ffa3573ad7ffe01bdd272d64736f6c63430008160033",
|
|
80
|
+
"deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100365760003560e01c806301ffc9a71461003b57806358f8699f14610063575b600080fd5b61004e6100493660046103d8565b610083565b60405190151581526020015b60405180910390f35b610076610071366004610421565b6100ba565b60405161005a91906104f2565b60006001600160e01b031982166358f8699f60e01b14806100b457506301ffc9a760e01b6001600160e01b03198316145b92915050565b60608160006100ca826001610579565b9050806001600160401b038111156100e4576100e461059a565b60405190808252806020026020018201604052801561012957816020015b60408051808201909152606080825260208201528152602001906001900390816101025790505b50925060005b8281101561018957858582818110610149576101496105b0565b905060200281019061015b91906105c6565b61016490610672565b848281518110610176576101766105b0565b602090810291909101015260010161012f565b506040516331a9108f60e11b8152600481018790526000906001600160a01b03891690636352211e90602401602060405180830381865afa1580156101d2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101f691906106f7565b60408051608081018252601491810191825273746f6b656e4f776e657245746842616c616e636560601b60608201529081529091506001600160a01b03821631906020810161024483610270565b815250858581518110610259576102596105b0565b602002602001018190525050505050949350505050565b6060600061027d83610302565b60010190506000816001600160401b0381111561029c5761029c61059a565b6040519080825280601f01601f1916602001820160405280156102c6576020820181803683370190505b5090508181016020015b600019016f181899199a1a9b1b9c1cb0b131b232b360811b600a86061a8153600a85049450846102d057509392505050565b60008072184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b83106103415772184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b830492506040015b6904ee2d6d415b85acef8160201b831061036b576904ee2d6d415b85acef8160201b830492506020015b662386f26fc10000831061038957662386f26fc10000830492506010015b6305f5e10083106103a1576305f5e100830492506008015b61271083106103b557612710830492506004015b606483106103c7576064830492506002015b600a83106100b45760010192915050565b6000602082840312156103ea57600080fd5b81356001600160e01b03198116811461040257600080fd5b9392505050565b6001600160a01b038116811461041e57600080fd5b50565b6000806000806060858703121561043757600080fd5b843561044281610409565b93506020850135925060408501356001600160401b038082111561046557600080fd5b818701915087601f83011261047957600080fd5b81358181111561048857600080fd5b8860208260051b850101111561049d57600080fd5b95989497505060200194505050565b6000815180845260005b818110156104d2576020818501810151868301820152016104b6565b506000602082860101526020601f19601f83011685010191505092915050565b600060208083018184528085518083526040925060408601915060408160051b87010184880160005b8381101561056b57888303603f190185528151805187855261053f888601826104ac565b91890151858303868b015291905061055781836104ac565b96890196945050509086019060010161051b565b509098975050505050505050565b808201808211156100b457634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b60008235603e198336030181126105dc57600080fd5b9190910192915050565b600082601f8301126105f757600080fd5b81356001600160401b03808211156106115761061161059a565b604051601f8301601f19908116603f011681019082821181831017156106395761063961059a565b8160405283815286602085880101111561065257600080fd5b836020870160208301376000602085830101528094505050505092915050565b60006040823603121561068457600080fd5b604080519081016001600160401b0380821183831017156106a7576106a761059a565b8160405284359150808211156106bc57600080fd5b6106c8368387016105e6565b835260208501359150808211156106de57600080fd5b506106eb368286016105e6565b60208301525092915050565b60006020828403121561070957600080fd5b81516104028161040956fea26469706673582212208e2049b3dfe651fb9ababa29297f99dd6042e35ae9ffa3573ad7ffe01bdd272d64736f6c63430008160033",
|
|
81
81
|
"linkReferences": {},
|
|
82
82
|
"deployedLinkReferences": {}
|
|
83
83
|
}
|
|
@@ -100,8 +100,8 @@
|
|
|
100
100
|
"type": "function"
|
|
101
101
|
}
|
|
102
102
|
],
|
|
103
|
-
"bytecode": "
|
|
104
|
-
"deployedBytecode": "
|
|
103
|
+
"bytecode": "0x60a060405234801561001057600080fd5b5060405161081b38038061081b83398101604081905261002f91610040565b6001600160a01b0316608052610070565b60006020828403121561005257600080fd5b81516001600160a01b038116811461006957600080fd5b9392505050565b60805161078a61009160003960008181607301526101d8015261078a6000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c806301ffc9a71461004657806302d454571461006e57806358f8699f146100ad575b600080fd5b610059610054366004610428565b6100cd565b60405190151581526020015b60405180910390f35b6100957f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610065565b6100c06100bb366004610459565b610104565b6040516100659190610536565b60006001600160e01b031982166358f8699f60e01b14806100fe57506301ffc9a760e01b6001600160e01b03198316145b92915050565b60608160006101148260016105bd565b9050806001600160401b0381111561012e5761012e6105de565b60405190808252806020026020018201604052801561017357816020015b604080518082019091526060808252602082015281526020019060019003908161014c5790505b50925060005b828110156101d357858582818110610193576101936105f4565b90506020028101906101a5919061060a565b6101ae906106b6565b8482815181106101c0576101c06105f4565b6020908102919091010152600101610179565b5060007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610234573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610258919061073b565b60408051608081018252600f9181019182526e746f74616c537570706c795553444360881b606082015290815290915060208101610295836102c0565b8152508484815181106102aa576102aa6105f4565b6020026020010181905250505050949350505050565b606060006102cd83610352565b60010190506000816001600160401b038111156102ec576102ec6105de565b6040519080825280601f01601f191660200182016040528015610316576020820181803683370190505b5090508181016020015b600019016f181899199a1a9b1b9c1cb0b131b232b360811b600a86061a8153600a850494508461032057509392505050565b60008072184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b83106103915772184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b830492506040015b6904ee2d6d415b85acef8160201b83106103bb576904ee2d6d415b85acef8160201b830492506020015b662386f26fc1000083106103d957662386f26fc10000830492506010015b6305f5e10083106103f1576305f5e100830492506008015b612710831061040557612710830492506004015b60648310610417576064830492506002015b600a83106100fe5760010192915050565b60006020828403121561043a57600080fd5b81356001600160e01b03198116811461045257600080fd5b9392505050565b6000806000806060858703121561046f57600080fd5b84356001600160a01b038116811461048657600080fd5b93506020850135925060408501356001600160401b03808211156104a957600080fd5b818701915087601f8301126104bd57600080fd5b8135818111156104cc57600080fd5b8860208260051b85010111156104e157600080fd5b95989497505060200194505050565b6000815180845260005b81811015610516576020818501810151868301820152016104fa565b506000602082860101526020601f19601f83011685010191505092915050565b600060208083018184528085518083526040925060408601915060408160051b87010184880160005b838110156105af57888303603f1901855281518051878552610583888601826104f0565b91890151858303868b015291905061059b81836104f0565b96890196945050509086019060010161055f565b509098975050505050505050565b808201808211156100fe57634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b60008235603e1983360301811261062057600080fd5b9190910192915050565b600082601f83011261063b57600080fd5b81356001600160401b0380821115610655576106556105de565b604051601f8301601f19908116603f0116810190828211818310171561067d5761067d6105de565b8160405283815286602085880101111561069657600080fd5b836020870160208301376000602085830101528094505050505092915050565b6000604082360312156106c857600080fd5b604080519081016001600160401b0380821183831017156106eb576106eb6105de565b81604052843591508082111561070057600080fd5b61070c3683870161062a565b8352602085013591508082111561072257600080fd5b5061072f3682860161062a565b60208301525092915050565b60006020828403121561074d57600080fd5b505191905056fea2646970667358221220d07a0875284d6c6d447bc6f792c447865ebc79e45739f04ba66749ab689be7df64736f6c63430008160033",
|
|
104
|
+
"deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100415760003560e01c806301ffc9a71461004657806302d454571461006e57806358f8699f146100ad575b600080fd5b610059610054366004610428565b6100cd565b60405190151581526020015b60405180910390f35b6100957f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610065565b6100c06100bb366004610459565b610104565b6040516100659190610536565b60006001600160e01b031982166358f8699f60e01b14806100fe57506301ffc9a760e01b6001600160e01b03198316145b92915050565b60608160006101148260016105bd565b9050806001600160401b0381111561012e5761012e6105de565b60405190808252806020026020018201604052801561017357816020015b604080518082019091526060808252602082015281526020019060019003908161014c5790505b50925060005b828110156101d357858582818110610193576101936105f4565b90506020028101906101a5919061060a565b6101ae906106b6565b8482815181106101c0576101c06105f4565b6020908102919091010152600101610179565b5060007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610234573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610258919061073b565b60408051608081018252600f9181019182526e746f74616c537570706c795553444360881b606082015290815290915060208101610295836102c0565b8152508484815181106102aa576102aa6105f4565b6020026020010181905250505050949350505050565b606060006102cd83610352565b60010190506000816001600160401b038111156102ec576102ec6105de565b6040519080825280601f01601f191660200182016040528015610316576020820181803683370190505b5090508181016020015b600019016f181899199a1a9b1b9c1cb0b131b232b360811b600a86061a8153600a850494508461032057509392505050565b60008072184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b83106103915772184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b830492506040015b6904ee2d6d415b85acef8160201b83106103bb576904ee2d6d415b85acef8160201b830492506020015b662386f26fc1000083106103d957662386f26fc10000830492506010015b6305f5e10083106103f1576305f5e100830492506008015b612710831061040557612710830492506004015b60648310610417576064830492506002015b600a83106100fe5760010192915050565b60006020828403121561043a57600080fd5b81356001600160e01b03198116811461045257600080fd5b9392505050565b6000806000806060858703121561046f57600080fd5b84356001600160a01b038116811461048657600080fd5b93506020850135925060408501356001600160401b03808211156104a957600080fd5b818701915087601f8301126104bd57600080fd5b8135818111156104cc57600080fd5b8860208260051b85010111156104e157600080fd5b95989497505060200194505050565b6000815180845260005b81811015610516576020818501810151868301820152016104fa565b506000602082860101526020601f19601f83011685010191505092915050565b600060208083018184528085518083526040925060408601915060408160051b87010184880160005b838110156105af57888303603f1901855281518051878552610583888601826104f0565b91890151858303868b015291905061059b81836104f0565b96890196945050509086019060010161055f565b509098975050505050505050565b808201808211156100fe57634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b60008235603e1983360301811261062057600080fd5b9190910192915050565b600082601f83011261063b57600080fd5b81356001600160401b0380821115610655576106556105de565b604051601f8301601f19908116603f0116810190828211818310171561067d5761067d6105de565b8160405283815286602085880101111561069657600080fd5b836020870160208301376000602085830101528094505050505092915050565b6000604082360312156106c857600080fd5b604080519081016001600160401b0380821183831017156106eb576106eb6105de565b81604052843591508082111561070057600080fd5b61070c3683870161062a565b8352602085013591508082111561072257600080fd5b5061072f3682860161062a565b60208301525092915050565b60006020828403121561074d57600080fd5b505191905056fea2646970667358221220d07a0875284d6c6d447bc6f792c447865ebc79e45739f04ba66749ab689be7df64736f6c63430008160033",
|
|
105
105
|
"linkReferences": {},
|
|
106
106
|
"deployedLinkReferences": {}
|
|
107
107
|
}
|
|
@@ -52,11 +52,13 @@ interface IPMPV0 is IWeb3Call {
|
|
|
52
52
|
* @param coreContract The address of the core contract.
|
|
53
53
|
* @param tokenId The token ID for which parameters were configured.
|
|
54
54
|
* @param pmpInputs Array of parameter inputs that were configured.
|
|
55
|
+
* @param authAddresses Array of addresses that authenticated the parameters. Aligned by index with pmpInputs.
|
|
55
56
|
*/
|
|
56
57
|
event TokenParamsConfigured(
|
|
57
58
|
address coreContract,
|
|
58
59
|
uint256 tokenId,
|
|
59
|
-
PMPInput[] pmpInputs
|
|
60
|
+
PMPInput[] pmpInputs,
|
|
61
|
+
address[] authAddresses
|
|
60
62
|
);
|
|
61
63
|
|
|
62
64
|
/**
|
|
@@ -213,12 +215,12 @@ interface IPMPV0 is IWeb3Call {
|
|
|
213
215
|
* @param wallet The wallet address to check.
|
|
214
216
|
* @param coreContract The address of the core contract to call.
|
|
215
217
|
* @param tokenId The tokenId of the token to check.
|
|
216
|
-
* @return
|
|
218
|
+
* @return isTokenOwnerOrDelegate_ True if the wallet is the owner or a delegate of the token,
|
|
217
219
|
* false otherwise.
|
|
218
220
|
*/
|
|
219
221
|
function isTokenOwnerOrDelegate(
|
|
220
222
|
address wallet,
|
|
221
223
|
address coreContract,
|
|
222
224
|
uint256 tokenId
|
|
223
|
-
) external view returns (bool);
|
|
225
|
+
) external view returns (bool isTokenOwnerOrDelegate_);
|
|
224
226
|
}
|
|
@@ -15,7 +15,7 @@ import {SSTORE2} from "./SSTORE2.sol"; // Import SSTORE2 library
|
|
|
15
15
|
library ImmutableStringArray {
|
|
16
16
|
/**
|
|
17
17
|
* @notice Struct to store the SSTORE2 pointer to the packed string array.
|
|
18
|
-
* @dev dataPointer is the SSTORE2 pointer to the packed string array.
|
|
18
|
+
* @dev dataPointer is the SSTORE2 pointer to the packed string array. Assigned to address(0) if the array is empty.
|
|
19
19
|
*/
|
|
20
20
|
struct StringArray {
|
|
21
21
|
address dataPointer; // SSTORE2 pointer storing length + packed offsets + packed string data
|
|
@@ -24,6 +24,7 @@ library ImmutableStringArray {
|
|
|
24
24
|
/**
|
|
25
25
|
* @notice Stores a packed immutable string array using a single SSTORE2 contract.
|
|
26
26
|
* Allows overwriting the pointer to point to a new immutable array.
|
|
27
|
+
* @dev Optimized for the case where the array is empty by assigning the dataPointer to address(0).
|
|
27
28
|
* @param storageArray The storage reference to store the packed array.
|
|
28
29
|
* @param strings The array of strings to pack.
|
|
29
30
|
*/
|
|
@@ -32,6 +33,12 @@ library ImmutableStringArray {
|
|
|
32
33
|
string[] memory strings
|
|
33
34
|
) internal {
|
|
34
35
|
uint256 arrayLength = strings.length;
|
|
36
|
+
// edge case - empty array
|
|
37
|
+
if (arrayLength == 0) {
|
|
38
|
+
storageArray.dataPointer = address(0);
|
|
39
|
+
return;
|
|
40
|
+
}
|
|
41
|
+
|
|
35
42
|
uint64[] memory offsets = new uint64[](arrayLength);
|
|
36
43
|
|
|
37
44
|
// compute total bytes length and offsets (ensuring no overflow)
|
|
@@ -126,6 +133,11 @@ library ImmutableStringArray {
|
|
|
126
133
|
function length(
|
|
127
134
|
StringArray storage storageArray
|
|
128
135
|
) internal view returns (uint256 count) {
|
|
136
|
+
// edge case - unassigned dataPointer or empty array
|
|
137
|
+
if (storageArray.dataPointer == address(0)) {
|
|
138
|
+
return 0;
|
|
139
|
+
}
|
|
140
|
+
|
|
129
141
|
// @dev this could be more efficient by only reading the first 8 bytes of the SSTORE2 contract
|
|
130
142
|
// but prefer to keep simple
|
|
131
143
|
bytes memory allData = SSTORE2.read(storageArray.dataPointer);
|
|
@@ -145,7 +157,7 @@ library ImmutableStringArray {
|
|
|
145
157
|
StringArray storage storageArray,
|
|
146
158
|
uint256 index
|
|
147
159
|
) internal view returns (string memory result) {
|
|
148
|
-
// edge case - unassigned dataPointer
|
|
160
|
+
// edge case - unassigned dataPointer or empty array
|
|
149
161
|
if (storageArray.dataPointer == address(0)) {
|
|
150
162
|
revert("Index out of bounds");
|
|
151
163
|
}
|
|
@@ -213,7 +225,7 @@ library ImmutableStringArray {
|
|
|
213
225
|
function getAll(
|
|
214
226
|
StringArray storage storageArray
|
|
215
227
|
) internal view returns (string[] memory results) {
|
|
216
|
-
// edge case - unassigned dataPointer
|
|
228
|
+
// edge case - unassigned dataPointer or empty array
|
|
217
229
|
if (storageArray.dataPointer == address(0)) {
|
|
218
230
|
return new string[](0);
|
|
219
231
|
}
|
|
@@ -263,6 +263,7 @@ contract PMPV0 is IPMPV0, Web3Call, ReentrancyGuard {
|
|
|
263
263
|
pmpConfigStorage.selectOptionsLength = uint8(
|
|
264
264
|
inputPMPConfig.selectOptions.length
|
|
265
265
|
);
|
|
266
|
+
// @dev ImmutableStringArray is optimized for the case where the array is empty.
|
|
266
267
|
ImmutableStringArray.store(
|
|
267
268
|
pmpConfigStorage.selectOptions,
|
|
268
269
|
inputPMPConfig.selectOptions
|
|
@@ -311,6 +312,8 @@ contract PMPV0 is IPMPV0, Web3Call, ReentrancyGuard {
|
|
|
311
312
|
ProjectConfig storage projectConfig = projectConfigs[coreContract][
|
|
312
313
|
ABHelpers.tokenIdToProjectId(tokenId)
|
|
313
314
|
];
|
|
315
|
+
// preallocate memory for auth addresses of each pmpInput
|
|
316
|
+
address[] memory authAddresses = new address[](pmpInputs.length);
|
|
314
317
|
// assign each pmpInput to the token
|
|
315
318
|
// @dev pmpInputs processed sequentially in order of input
|
|
316
319
|
for (uint256 i = 0; i < pmpInputs.length; i++) {
|
|
@@ -321,8 +324,8 @@ contract PMPV0 is IPMPV0, Web3Call, ReentrancyGuard {
|
|
|
321
324
|
];
|
|
322
325
|
PMPConfigStorage storage pmpConfigStorage = projectConfig
|
|
323
326
|
.pmpConfigsStorage[pmpKeyHash];
|
|
324
|
-
// validate pmpInput
|
|
325
|
-
_validatePMPInputAndAuth({
|
|
327
|
+
// validate pmpInput + record the authenticated address used to configure the pmpInput
|
|
328
|
+
authAddresses[i] = _validatePMPInputAndAuth({
|
|
326
329
|
tokenId: tokenId,
|
|
327
330
|
coreContract: coreContract,
|
|
328
331
|
pmpInput: pmpInput,
|
|
@@ -359,7 +362,8 @@ contract PMPV0 is IPMPV0, Web3Call, ReentrancyGuard {
|
|
|
359
362
|
emit TokenParamsConfigured({
|
|
360
363
|
coreContract: coreContract,
|
|
361
364
|
tokenId: tokenId,
|
|
362
|
-
pmpInputs: pmpInputs
|
|
365
|
+
pmpInputs: pmpInputs,
|
|
366
|
+
authAddresses: authAddresses
|
|
363
367
|
});
|
|
364
368
|
}
|
|
365
369
|
|
|
@@ -478,20 +482,19 @@ contract PMPV0 is IPMPV0, Web3Call, ReentrancyGuard {
|
|
|
478
482
|
* @param wallet The wallet address to check.
|
|
479
483
|
* @param coreContract The address of the core contract to call.
|
|
480
484
|
* @param tokenId The tokenId of the token to check.
|
|
481
|
-
* @return
|
|
485
|
+
* @return isTokenOwnerOrDelegate_ True if the wallet is the owner or a delegate of the token,
|
|
482
486
|
* false otherwise.
|
|
483
487
|
*/
|
|
484
488
|
function isTokenOwnerOrDelegate(
|
|
485
489
|
address wallet,
|
|
486
490
|
address coreContract,
|
|
487
491
|
uint256 tokenId
|
|
488
|
-
) external view returns (bool) {
|
|
489
|
-
|
|
490
|
-
|
|
491
|
-
|
|
492
|
-
|
|
493
|
-
|
|
494
|
-
});
|
|
492
|
+
) external view returns (bool isTokenOwnerOrDelegate_) {
|
|
493
|
+
(isTokenOwnerOrDelegate_, ) = _isTokenOwnerOrDelegate({
|
|
494
|
+
tokenId: tokenId,
|
|
495
|
+
coreContract: coreContract,
|
|
496
|
+
sender: wallet
|
|
497
|
+
});
|
|
495
498
|
}
|
|
496
499
|
|
|
497
500
|
/**
|
|
@@ -706,6 +709,7 @@ contract PMPV0 is IPMPV0, Web3Call, ReentrancyGuard {
|
|
|
706
709
|
* @param pmpInput The parameter input to validate.
|
|
707
710
|
* @param pmpConfigStorage The project's configuration storage for this parameter.
|
|
708
711
|
* @param projectConfigNonce The project's current configuration nonce.
|
|
712
|
+
* @return permissionedAddress the address used to make the update, accounting for delegation.
|
|
709
713
|
*/
|
|
710
714
|
function _validatePMPInputAndAuth(
|
|
711
715
|
uint256 tokenId,
|
|
@@ -713,7 +717,7 @@ contract PMPV0 is IPMPV0, Web3Call, ReentrancyGuard {
|
|
|
713
717
|
PMPInput memory pmpInput,
|
|
714
718
|
PMPConfigStorage storage pmpConfigStorage,
|
|
715
719
|
uint8 projectConfigNonce
|
|
716
|
-
) internal view {
|
|
720
|
+
) internal view returns (address permissionedAddress) {
|
|
717
721
|
// check that the param is part of the project's most recently configured PMP params
|
|
718
722
|
// @dev use config nonce to check if param is part of most recently configured PMP params
|
|
719
723
|
require(
|
|
@@ -732,88 +736,79 @@ contract PMPV0 is IPMPV0, Web3Call, ReentrancyGuard {
|
|
|
732
736
|
);
|
|
733
737
|
|
|
734
738
|
// ensure caller has appropriate auth
|
|
739
|
+
bool isAuthenticated;
|
|
735
740
|
{
|
|
736
|
-
|
|
741
|
+
AuthOption authOption = pmpConfigStorage.authOption;
|
|
742
|
+
// if artist may configure, check and authenticate if not already authenticated
|
|
743
|
+
if (
|
|
744
|
+
authOption == AuthOption.Artist ||
|
|
745
|
+
authOption == AuthOption.ArtistAndAddress ||
|
|
746
|
+
authOption == AuthOption.ArtistAndTokenOwner ||
|
|
747
|
+
authOption == AuthOption.ArtistAndTokenOwnerAndAddress
|
|
748
|
+
) {
|
|
749
|
+
bool isArtist;
|
|
750
|
+
(isArtist, permissionedAddress) = _isArtist({
|
|
751
|
+
tokenId: tokenId,
|
|
752
|
+
coreContract: coreContract,
|
|
753
|
+
sender: msg.sender
|
|
754
|
+
});
|
|
755
|
+
isAuthenticated = isArtist;
|
|
756
|
+
}
|
|
757
|
+
// if address may configure, check and authenticate if not already authenticated
|
|
758
|
+
if (
|
|
759
|
+
!isAuthenticated &&
|
|
760
|
+
(authOption == AuthOption.Address ||
|
|
761
|
+
authOption == AuthOption.TokenOwnerAndAddress ||
|
|
762
|
+
authOption == AuthOption.ArtistAndAddress ||
|
|
763
|
+
authOption == AuthOption.ArtistAndTokenOwnerAndAddress)
|
|
764
|
+
) {
|
|
765
|
+
permissionedAddress = pmpConfigStorage.authAddress;
|
|
766
|
+
isAuthenticated = permissionedAddress == msg.sender;
|
|
767
|
+
}
|
|
768
|
+
// if token owner or delegate may configure, check and authenticate
|
|
769
|
+
// @dev check token ownerlast to enable pre-mint PMP configuration by non-token-owner
|
|
770
|
+
if (
|
|
771
|
+
!isAuthenticated &&
|
|
772
|
+
(authOption == AuthOption.TokenOwner ||
|
|
773
|
+
authOption == AuthOption.ArtistAndTokenOwner ||
|
|
774
|
+
authOption == AuthOption.TokenOwnerAndAddress ||
|
|
775
|
+
authOption == AuthOption.ArtistAndTokenOwnerAndAddress)
|
|
776
|
+
) {
|
|
777
|
+
bool isTokenOwnerOrDelegate_;
|
|
778
|
+
(
|
|
779
|
+
isTokenOwnerOrDelegate_,
|
|
780
|
+
permissionedAddress
|
|
781
|
+
) = _isTokenOwnerOrDelegate({
|
|
782
|
+
tokenId: tokenId,
|
|
783
|
+
coreContract: coreContract,
|
|
784
|
+
sender: msg.sender
|
|
785
|
+
});
|
|
786
|
+
isAuthenticated = isTokenOwnerOrDelegate_;
|
|
787
|
+
}
|
|
788
|
+
}
|
|
789
|
+
// if not authenticated, revert with appropriate auth error
|
|
790
|
+
if (!isAuthenticated) {
|
|
737
791
|
AuthOption authOption = pmpConfigStorage.authOption;
|
|
738
792
|
if (authOption == AuthOption.Artist) {
|
|
739
|
-
|
|
740
|
-
_isArtist({
|
|
741
|
-
tokenId: tokenId,
|
|
742
|
-
coreContract: coreContract,
|
|
743
|
-
sender: msg.sender
|
|
744
|
-
}),
|
|
745
|
-
"PMP: artist auth required"
|
|
746
|
-
);
|
|
793
|
+
revert("PMP: artist auth required");
|
|
747
794
|
} else if (authOption == AuthOption.TokenOwner) {
|
|
748
|
-
|
|
749
|
-
_isTokenOwnerOrDelegate({
|
|
750
|
-
tokenId: tokenId,
|
|
751
|
-
coreContract: coreContract,
|
|
752
|
-
sender: msg.sender
|
|
753
|
-
}),
|
|
754
|
-
"PMP: token owner auth required"
|
|
755
|
-
);
|
|
795
|
+
revert("PMP: token owner auth required");
|
|
756
796
|
} else if (authOption == AuthOption.ArtistAndTokenOwner) {
|
|
757
|
-
|
|
758
|
-
require(
|
|
759
|
-
_isArtist({
|
|
760
|
-
tokenId: tokenId,
|
|
761
|
-
coreContract: coreContract,
|
|
762
|
-
sender: msg.sender
|
|
763
|
-
}) ||
|
|
764
|
-
_isTokenOwnerOrDelegate({
|
|
765
|
-
tokenId: tokenId,
|
|
766
|
-
coreContract: coreContract,
|
|
767
|
-
sender: msg.sender
|
|
768
|
-
}),
|
|
769
|
-
"PMP: artist and token owner auth required"
|
|
770
|
-
);
|
|
797
|
+
revert("PMP: artist and token owner auth required");
|
|
771
798
|
} else if (authOption == AuthOption.Address) {
|
|
772
|
-
|
|
773
|
-
msg.sender == pmpConfigStorage.authAddress,
|
|
774
|
-
"PMP: address auth required"
|
|
775
|
-
);
|
|
799
|
+
revert("PMP: address auth required");
|
|
776
800
|
} else if (authOption == AuthOption.ArtistAndTokenOwnerAndAddress) {
|
|
777
|
-
|
|
778
|
-
require(
|
|
779
|
-
_isArtist({
|
|
780
|
-
tokenId: tokenId,
|
|
781
|
-
coreContract: coreContract,
|
|
782
|
-
sender: msg.sender
|
|
783
|
-
}) ||
|
|
784
|
-
msg.sender == pmpConfigStorage.authAddress ||
|
|
785
|
-
_isTokenOwnerOrDelegate({
|
|
786
|
-
tokenId: tokenId,
|
|
787
|
-
coreContract: coreContract,
|
|
788
|
-
sender: msg.sender
|
|
789
|
-
}),
|
|
790
|
-
"PMP: artist and token owner and address auth required"
|
|
791
|
-
);
|
|
801
|
+
revert("PMP: artist and token owner and address auth required");
|
|
792
802
|
} else if (authOption == AuthOption.ArtistAndAddress) {
|
|
793
|
-
|
|
794
|
-
_isArtist({
|
|
795
|
-
tokenId: tokenId,
|
|
796
|
-
coreContract: coreContract,
|
|
797
|
-
sender: msg.sender
|
|
798
|
-
}) || msg.sender == pmpConfigStorage.authAddress,
|
|
799
|
-
"PMP: artist and address auth required"
|
|
800
|
-
);
|
|
803
|
+
revert("PMP: artist and address auth required");
|
|
801
804
|
} else if (authOption == AuthOption.TokenOwnerAndAddress) {
|
|
802
|
-
|
|
803
|
-
require(
|
|
804
|
-
msg.sender == pmpConfigStorage.authAddress ||
|
|
805
|
-
_isTokenOwnerOrDelegate({
|
|
806
|
-
tokenId: tokenId,
|
|
807
|
-
coreContract: coreContract,
|
|
808
|
-
sender: msg.sender
|
|
809
|
-
}),
|
|
810
|
-
"PMP: token owner and address auth required"
|
|
811
|
-
);
|
|
805
|
+
revert("PMP: token owner and address auth required");
|
|
812
806
|
} else {
|
|
813
807
|
// @dev no coverage, this should never be reached
|
|
814
808
|
revert("PMP: invalid authOption");
|
|
815
809
|
}
|
|
816
810
|
}
|
|
811
|
+
// @dev auth check is complete
|
|
817
812
|
|
|
818
813
|
// ensure properly configured value
|
|
819
814
|
ParamType paramType = pmpConfigStorage.paramType;
|
|
@@ -874,12 +869,13 @@ contract PMPV0 is IPMPV0, Web3Call, ReentrancyGuard {
|
|
|
874
869
|
// require artist is caller if configuring artist string
|
|
875
870
|
if (pmpInput.configuringArtistString) {
|
|
876
871
|
// require artist is caller
|
|
872
|
+
(bool isArtist, ) = _isArtist({
|
|
873
|
+
tokenId: tokenId,
|
|
874
|
+
coreContract: coreContract,
|
|
875
|
+
sender: msg.sender
|
|
876
|
+
});
|
|
877
877
|
require(
|
|
878
|
-
|
|
879
|
-
tokenId: tokenId,
|
|
880
|
-
coreContract: coreContract,
|
|
881
|
-
sender: msg.sender
|
|
882
|
-
}),
|
|
878
|
+
isArtist,
|
|
883
879
|
"PMP: artist auth required to configure artist string"
|
|
884
880
|
);
|
|
885
881
|
}
|
|
@@ -1019,17 +1015,18 @@ contract PMPV0 is IPMPV0, Web3Call, ReentrancyGuard {
|
|
|
1019
1015
|
* @param tokenId The token ID to get the project ID from.
|
|
1020
1016
|
* @param coreContract The address of the core contract.
|
|
1021
1017
|
* @param sender The address to check if it's the artist.
|
|
1022
|
-
* @return
|
|
1018
|
+
* @return isArtist true if the sender is the artist, false otherwise.
|
|
1019
|
+
* @return artistAddress the address of the artist.
|
|
1023
1020
|
*/
|
|
1024
1021
|
function _isArtist(
|
|
1025
1022
|
uint256 tokenId,
|
|
1026
1023
|
address coreContract,
|
|
1027
1024
|
address sender
|
|
1028
|
-
) internal view returns (bool) {
|
|
1025
|
+
) internal view returns (bool isArtist, address artistAddress) {
|
|
1029
1026
|
uint256 projectId = ABHelpers.tokenIdToProjectId(tokenId);
|
|
1030
|
-
|
|
1031
|
-
|
|
1032
|
-
|
|
1027
|
+
artistAddress = IGenArt721CoreContractV3_Base(coreContract)
|
|
1028
|
+
.projectIdToArtistAddress(projectId);
|
|
1029
|
+
isArtist = artistAddress == sender;
|
|
1033
1030
|
}
|
|
1034
1031
|
|
|
1035
1032
|
/**
|
|
@@ -1040,21 +1037,19 @@ contract PMPV0 is IPMPV0, Web3Call, ReentrancyGuard {
|
|
|
1040
1037
|
* @param tokenId The token ID to check ownership for.
|
|
1041
1038
|
* @param coreContract The address of the core contract.
|
|
1042
1039
|
* @param sender The address to check if it's the token owner.
|
|
1043
|
-
* @return
|
|
1040
|
+
* @return isTokenOwnerOrDelegate_ true if the sender is the token owner or delegate of the token owner, false otherwise.
|
|
1041
|
+
* @return tokenOwner the address of the token owner.
|
|
1044
1042
|
* @dev Always execute within a nonReentrant context.
|
|
1045
1043
|
*/
|
|
1046
1044
|
function _isTokenOwnerOrDelegate(
|
|
1047
1045
|
uint256 tokenId,
|
|
1048
1046
|
address coreContract,
|
|
1049
1047
|
address sender
|
|
1050
|
-
) internal view returns (bool) {
|
|
1048
|
+
) internal view returns (bool isTokenOwnerOrDelegate_, address tokenOwner) {
|
|
1051
1049
|
// @dev leading interaction - only execute within a nonReentrant context
|
|
1052
|
-
|
|
1053
|
-
|
|
1054
|
-
|
|
1055
|
-
}
|
|
1056
|
-
// @dev delegate.xyz v2 support
|
|
1057
|
-
return
|
|
1050
|
+
tokenOwner = IERC721(coreContract).ownerOf(tokenId);
|
|
1051
|
+
isTokenOwnerOrDelegate_ =
|
|
1052
|
+
(tokenOwner == sender) ||
|
|
1058
1053
|
delegateRegistry.checkDelegateForERC721({
|
|
1059
1054
|
to: sender, // hot wallet
|
|
1060
1055
|
from: tokenOwner, // vault
|