Transaction Hash:
Block:
17042778 at Apr-14-2023 03:26:47 AM +UTC
Transaction Fee:
0.008181896132068806 ETH
$16.57
Gas Used:
327,562 Gas / 24.978160263 Gwei
Emitted Events:
198 |
ERC1967Proxy.0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef( 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef, 0x0000000000000000000000008d6613877353fabde051931a191ce7ba6be16fe1, 0x000000000000000000000000a858ddc0445d8131dac4d1de01f834ffcba52ef1, 000000000000000000000000000000000000000000000000039bb49f599a0000 )
|
199 |
ERC1967Proxy.0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef( 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef, 0x0000000000000000000000008d6613877353fabde051931a191ce7ba6be16fe1, 0x0000000000000000000000009a7c7206962633a2440ae70d55149cafa30ef342, 000000000000000000000000000000000000000000000002ce0967dea6b60000 )
|
200 |
BoredApeYachtClub.Approval( owner=[Sender] 0x9a7c7206962633a2440ae70d55149cafa30ef342, approved=0x00000000...000000000, tokenId=1927 )
|
201 |
BoredApeYachtClub.Transfer( from=[Sender] 0x9a7c7206962633a2440ae70d55149cafa30ef342, to=0x8d661387...A6BE16fe1, tokenId=1927 )
|
202 |
ERC1967Proxy.0x61cbb2a3dee0b6064c2e681aadd61677fb4ef319f0b547508d495626f5a62f64( 0x61cbb2a3dee0b6064c2e681aadd61677fb4ef319f0b547508d495626f5a62f64, 0x0000000000000000000000008d6613877353fabde051931a191ce7ba6be16fe1, 0x0000000000000000000000009a7c7206962633a2440ae70d55149cafa30ef342, 0000000000000000000000000000000000000000000000000000000000000080, 0cabb16eea0f4328c6920e22520b924972dc22b78ae3c2e5f2bae1ff8f69a83e, 00000000000000000000000000000000000000000000000000000000000002c0, c92d2ccef6d600a556f9d8f87ab3790c2096f83bd148f4a1a0c48f384d4924e1, 0000000000000000000000009a7c7206962633a2440ae70d55149cafa30ef342, 0000000000000000000000000000000000000000000000000000000000000001, 0000000000000000000000000000000000b92d5d043faf7cecf7e2ee6aaed232, 000000000000000000000000bc4ca0eda7647a8ab7c2061c2e118a18a936f13d, 0000000000000000000000000000000000000000000000000000000000000787, 0000000000000000000000000000000000000000000000000000000000000001, 0000000000000000000000000000000000a39bb272e79075ade125fd351887ac, 000000000000000000000000000000000000000000000002d1a51c7e00500000, 00000000000000000000000000000000000000000000000000000000643826f8, 000000000000000000000000000000000000000000000000000000006438d5f5, 00000000000000000000000000000000000000000000000000000000000001a0, 000000000000000000000000000000001283fc7d1abe96f2d34e9be190f903c9, 0000000000000000000000000000000000000000000000000000000000000200, 0000000000000000000000000000000000000000000000000000000000000001, 0000000000000000000000000000000000000000000000000000000000000032, 000000000000000000000000a858ddc0445d8131dac4d1de01f834ffcba52ef1, 0000000000000000000000000000000000000000000000000000000000000001, 0100000000000000000000000000000000000000000000000000000000000000, 0000000000000000000000008d6613877353fabde051931a191ce7ba6be16fe1, 0000000000000000000000000000000000000000000000000000000000000000, 0000000000000000000000000000000000b92d5d043faf7cecf7e2ee6aaed232, 000000000000000000000000bc4ca0eda7647a8ab7c2061c2e118a18a936f13d, 0000000000000000000000000000000000000000000000000000000000000000, 0000000000000000000000000000000000000000000000000000000000000001, 0000000000000000000000000000000000a39bb272e79075ade125fd351887ac, 000000000000000000000000000000000000000000000002d1a51c7e00500000, 00000000000000000000000000000000000000000000000000000000643826f7, 0000000000000000000000000000000000000000000000000000000066195a74, 00000000000000000000000000000000000000000000000000000000000001a0, 000000000000000000000000000000002a7e6c0816e08082564b79c734fc2f78, 00000000000000000000000000000000000000000000000000000000000001c0, 0000000000000000000000000000000000000000000000000000000000000000, 0000000000000000000000000000000000000000000000000000000000000001, 0100000000000000000000000000000000000000000000000000000000000000 )
|
Account State Difference:
Address | Before | After | State Difference | ||
---|---|---|---|---|---|
0x00000000...830B95127 | (Blur.io: Marketplace) | ||||
0x00000000...d351887Ac | |||||
0x4675C7e5...ef3b0a263
Miner
| (Coinbase: MEV Builder) | 0.638018573609379395 Eth | 0.638051329809379395 Eth | 0.0000327562 | |
0x9A7c7206...fa30ef342 |
58.283113907814109962 Eth
Nonce: 42
|
58.274932011682041156 Eth
Nonce: 43
| 0.008181896132068806 | ||
0xBC4CA0Ed...8a936f13D |
Execution Trace
ERC1967Proxy.9a1fc3a7( )
BlurExchange.execute( sell=[{name:order, type:tuple, order:1, indexed:false, value:[{name:trader, type:address, order:1, indexed:false, value:0x9A7c7206962633A2440ae70D55149CAfa30ef342, valueString:0x9A7c7206962633A2440ae70D55149CAfa30ef342}, {name:side, type:uint8, order:2, indexed:false, value:1, valueString:1}, {name:matchingPolicy, type:address, order:3, indexed:false, value:0x0000000000b92D5d043FaF7CECf7E2EE6aaeD232, valueString:0x0000000000b92D5d043FaF7CECf7E2EE6aaeD232}, {name:collection, type:address, order:4, indexed:false, value:0xBC4CA0EdA7647A8aB7C2061c2E118A18a936f13D, valueString:0xBC4CA0EdA7647A8aB7C2061c2E118A18a936f13D}, {name:tokenId, type:uint256, order:5, indexed:false, value:1927, valueString:1927}, {name:amount, type:uint256, order:6, indexed:false, value:1, valueString:1}, {name:paymentToken, type:address, order:7, indexed:false, value:0x0000000000A39bb272e79075ade125fd351887Ac, valueString:0x0000000000A39bb272e79075ade125fd351887Ac}, {name:price, type:uint256, order:8, indexed:false, value:52000000000000000000, valueString:52000000000000000000}, {name:listingTime, type:uint256, order:9, indexed:false, value:1681401592, valueString:1681401592}, {name:expirationTime, type:uint256, order:10, indexed:false, value:1681446389, valueString:1681446389}, {name:fees, type:tuple[], order:11, indexed:false}, {name:salt, type:uint256, order:12, indexed:false, value:24611415891614001630987582402312340425, valueString:24611415891614001630987582402312340425}, {name:extraParams, type:bytes, order:13, indexed:false, value:0x01, valueString:0x01}], valueString:[{name:trader, type:address, order:1, indexed:false, value:0x9A7c7206962633A2440ae70D55149CAfa30ef342, valueString:0x9A7c7206962633A2440ae70D55149CAfa30ef342}, {name:side, type:uint8, order:2, indexed:false, value:1, valueString:1}, {name:matchingPolicy, type:address, order:3, indexed:false, value:0x0000000000b92D5d043FaF7CECf7E2EE6aaeD232, valueString:0x0000000000b92D5d043FaF7CECf7E2EE6aaeD232}, {name:collection, type:address, order:4, indexed:false, value:0xBC4CA0EdA7647A8aB7C2061c2E118A18a936f13D, valueString:0xBC4CA0EdA7647A8aB7C2061c2E118A18a936f13D}, {name:tokenId, type:uint256, order:5, indexed:false, value:1927, valueString:1927}, {name:amount, type:uint256, order:6, indexed:false, value:1, valueString:1}, {name:paymentToken, type:address, order:7, indexed:false, value:0x0000000000A39bb272e79075ade125fd351887Ac, valueString:0x0000000000A39bb272e79075ade125fd351887Ac}, {name:price, type:uint256, order:8, indexed:false, value:52000000000000000000, valueString:52000000000000000000}, {name:listingTime, type:uint256, order:9, indexed:false, value:1681401592, valueString:1681401592}, {name:expirationTime, type:uint256, order:10, indexed:false, value:1681446389, valueString:1681446389}, {name:fees, type:tuple[], order:11, indexed:false}, {name:salt, type:uint256, order:12, indexed:false, value:24611415891614001630987582402312340425, valueString:24611415891614001630987582402312340425}, {name:extraParams, type:bytes, order:13, indexed:false, value:0x01, valueString:0x01}]}, {name:v, type:uint8, order:2, indexed:false, value:0, valueString:0}, {name:r, type:bytes32, order:3, indexed:false, value:0000000000000000000000000000000000000000000000000000000000000000, valueString:0000000000000000000000000000000000000000000000000000000000000000}, {name:s, type:bytes32, order:4, indexed:false, value:0000000000000000000000000000000000000000000000000000000000000000, valueString:0000000000000000000000000000000000000000000000000000000000000000}, {name:extraSignature, type:bytes, order:5, indexed:false, value:0x000000000000000000000000000000000000000000000000000000000000001BCE8C10E3401FE75A63B05ADE6DD0A9E7C97EF6E1F04B853661E5DD4293FE77954A29C068E0959034D4ACC8DA031D90E651F7CF6DB3605403BA2BF57E59A3B3D4, valueString:0x000000000000000000000000000000000000000000000000000000000000001BCE8C10E3401FE75A63B05ADE6DD0A9E7C97EF6E1F04B853661E5DD4293FE77954A29C068E0959034D4ACC8DA031D90E651F7CF6DB3605403BA2BF57E59A3B3D4}, {name:signatureVersion, type:uint8, order:6, indexed:false, value:0, valueString:0}, {name:blockNumber, type:uint256, order:7, indexed:false, value:17042776, valueString:17042776}], buy=[{name:order, type:tuple, order:1, indexed:false, value:[{name:trader, type:address, order:1, indexed:false, value:0x8d6613877353FAbdE051931a191Ce7BA6BE16fe1, valueString:0x8d6613877353FAbdE051931a191Ce7BA6BE16fe1}, {name:side, type:uint8, order:2, indexed:false, value:0, valueString:0}, {name:matchingPolicy, type:address, order:3, indexed:false, value:0x0000000000b92D5d043FaF7CECf7E2EE6aaeD232, valueString:0x0000000000b92D5d043FaF7CECf7E2EE6aaeD232}, {name:collection, type:address, order:4, indexed:false, value:0xBC4CA0EdA7647A8aB7C2061c2E118A18a936f13D, valueString:0xBC4CA0EdA7647A8aB7C2061c2E118A18a936f13D}, {name:tokenId, type:uint256, order:5, indexed:false, value:0, valueString:0}, {name:amount, type:uint256, order:6, indexed:false, value:1, valueString:1}, {name:paymentToken, type:address, order:7, indexed:false, value:0x0000000000A39bb272e79075ade125fd351887Ac, valueString:0x0000000000A39bb272e79075ade125fd351887Ac}, {name:price, type:uint256, order:8, indexed:false, value:52000000000000000000, valueString:52000000000000000000}, {name:listingTime, type:uint256, order:9, indexed:false, value:1681401591, valueString:1681401591}, {name:expirationTime, type:uint256, order:10, indexed:false, value:1712937588, valueString:1712937588}, {name:fees, type:tuple[], order:11, indexed:false}, {name:salt, type:uint256, order:12, indexed:false, value:56483996368284425904543229071664623480, valueString:56483996368284425904543229071664623480}, {name:extraParams, type:bytes, order:13, indexed:false, value:0x01, valueString:0x01}], valueString:[{name:trader, type:address, order:1, indexed:false, value:0x8d6613877353FAbdE051931a191Ce7BA6BE16fe1, valueString:0x8d6613877353FAbdE051931a191Ce7BA6BE16fe1}, {name:side, type:uint8, order:2, indexed:false, value:0, valueString:0}, {name:matchingPolicy, type:address, order:3, indexed:false, value:0x0000000000b92D5d043FaF7CECf7E2EE6aaeD232, valueString:0x0000000000b92D5d043FaF7CECf7E2EE6aaeD232}, {name:collection, type:address, order:4, indexed:false, value:0xBC4CA0EdA7647A8aB7C2061c2E118A18a936f13D, valueString:0xBC4CA0EdA7647A8aB7C2061c2E118A18a936f13D}, {name:tokenId, type:uint256, order:5, indexed:false, value:0, valueString:0}, {name:amount, type:uint256, order:6, indexed:false, value:1, valueString:1}, {name:paymentToken, type:address, order:7, indexed:false, value:0x0000000000A39bb272e79075ade125fd351887Ac, valueString:0x0000000000A39bb272e79075ade125fd351887Ac}, {name:price, type:uint256, order:8, indexed:false, value:52000000000000000000, valueString:52000000000000000000}, {name:listingTime, type:uint256, order:9, indexed:false, value:1681401591, valueString:1681401591}, {name:expirationTime, type:uint256, order:10, indexed:false, value:1712937588, valueString:1712937588}, {name:fees, type:tuple[], order:11, indexed:false}, {name:salt, type:uint256, order:12, indexed:false, value:56483996368284425904543229071664623480, valueString:56483996368284425904543229071664623480}, {name:extraParams, type:bytes, order:13, indexed:false, value:0x01, valueString:0x01}]}, {name:v, type:uint8, order:2, indexed:false, value:27, valueString:27}, {name:r, type:bytes32, order:3, indexed:false, value:4243C23689C12167B078FAA41A838EC4F2F70A0A17EFEB5E58A31FF0D4DDA1F6, valueString:4243C23689C12167B078FAA41A838EC4F2F70A0A17EFEB5E58A31FF0D4DDA1F6}, {name:s, type:bytes32, order:4, indexed:false, value:0B2665213DFB386904F5D5666DA6694ABFA806AAF8A12BA9858FEC9BA73CC722, valueString:0B2665213DFB386904F5D5666DA6694ABFA806AAF8A12BA9858FEC9BA73CC722}, {name:extraSignature, type:bytes, order:5, indexed:false, value:0x000000000000000000000000000000000000000000000000000000000000001B10D8E1331C5B5922B53537250DCDE2AA72E490F526C99749DDEE1BD998F35E8C46902B57BF24F1DA82DA7C123E9893DB6BA94C5306B2C7A998AECAF11C68324B, valueString:0x000000000000000000000000000000000000000000000000000000000000001B10D8E1331C5B5922B53537250DCDE2AA72E490F526C99749DDEE1BD998F35E8C46902B57BF24F1DA82DA7C123E9893DB6BA94C5306B2C7A998AECAF11C68324B}, {name:signatureVersion, type:uint8, order:6, indexed:false, value:0, valueString:0}, {name:blockNumber, type:uint256, order:7, indexed:false, value:17042776, valueString:17042776}] )
-
Null: 0x000...001.625c7ea9( )
-
Null: 0x000...001.4e441c61( )
-
Null: 0x000...001.57a9b9c4( )
-
PolicyManager.isPolicyWhitelisted( policy=0x0000000000b92D5d043FaF7CECf7E2EE6aaeD232 ) => ( True )
-
SafeCollectionBidPolicyERC721.canMatchMakerBid( makerBid=[{name:trader, type:address, order:1, indexed:false, value:0x8d6613877353FAbdE051931a191Ce7BA6BE16fe1, valueString:0x8d6613877353FAbdE051931a191Ce7BA6BE16fe1}, {name:side, type:uint8, order:2, indexed:false, value:0, valueString:0}, {name:matchingPolicy, type:address, order:3, indexed:false, value:0x0000000000b92D5d043FaF7CECf7E2EE6aaeD232, valueString:0x0000000000b92D5d043FaF7CECf7E2EE6aaeD232}, {name:collection, type:address, order:4, indexed:false, value:0xBC4CA0EdA7647A8aB7C2061c2E118A18a936f13D, valueString:0xBC4CA0EdA7647A8aB7C2061c2E118A18a936f13D}, {name:tokenId, type:uint256, order:5, indexed:false, value:0, valueString:0}, {name:amount, type:uint256, order:6, indexed:false, value:1, valueString:1}, {name:paymentToken, type:address, order:7, indexed:false, value:0x0000000000A39bb272e79075ade125fd351887Ac, valueString:0x0000000000A39bb272e79075ade125fd351887Ac}, {name:price, type:uint256, order:8, indexed:false, value:52000000000000000000, valueString:52000000000000000000}, {name:listingTime, type:uint256, order:9, indexed:false, value:1681401591, valueString:1681401591}, {name:expirationTime, type:uint256, order:10, indexed:false, value:1712937588, valueString:1712937588}, {name:fees, type:tuple[], order:11, indexed:false}, {name:salt, type:uint256, order:12, indexed:false, value:56483996368284425904543229071664623480, valueString:56483996368284425904543229071664623480}, {name:extraParams, type:bytes, order:13, indexed:false, value:0x01, valueString:0x01}], takerAsk=[{name:trader, type:address, order:1, indexed:false, value:0x9A7c7206962633A2440ae70D55149CAfa30ef342, valueString:0x9A7c7206962633A2440ae70D55149CAfa30ef342}, {name:side, type:uint8, order:2, indexed:false, value:1, valueString:1}, {name:matchingPolicy, type:address, order:3, indexed:false, value:0x0000000000b92D5d043FaF7CECf7E2EE6aaeD232, valueString:0x0000000000b92D5d043FaF7CECf7E2EE6aaeD232}, {name:collection, type:address, order:4, indexed:false, value:0xBC4CA0EdA7647A8aB7C2061c2E118A18a936f13D, valueString:0xBC4CA0EdA7647A8aB7C2061c2E118A18a936f13D}, {name:tokenId, type:uint256, order:5, indexed:false, value:1927, valueString:1927}, {name:amount, type:uint256, order:6, indexed:false, value:1, valueString:1}, {name:paymentToken, type:address, order:7, indexed:false, value:0x0000000000A39bb272e79075ade125fd351887Ac, valueString:0x0000000000A39bb272e79075ade125fd351887Ac}, {name:price, type:uint256, order:8, indexed:false, value:52000000000000000000, valueString:52000000000000000000}, {name:listingTime, type:uint256, order:9, indexed:false, value:1681401592, valueString:1681401592}, {name:expirationTime, type:uint256, order:10, indexed:false, value:1681446389, valueString:1681446389}, {name:fees, type:tuple[], order:11, indexed:false}, {name:salt, type:uint256, order:12, indexed:false, value:24611415891614001630987582402312340425, valueString:24611415891614001630987582402312340425}, {name:extraParams, type:bytes, order:13, indexed:false, value:0x01, valueString:0x01}] ) => ( True, 52000000000000000000, 1927, 1, 0 )
ERC1967Proxy.23b872dd( )
-
BlurPool.transferFrom( from=0x8d6613877353FAbdE051931a191Ce7BA6BE16fe1, to=0xA858DDc0445d8131daC4d1DE01f834ffcbA52Ef1, amount=260000000000000000 ) => ( True )
-
ERC1967Proxy.23b872dd( )
-
BlurPool.transferFrom( from=0x8d6613877353FAbdE051931a191Ce7BA6BE16fe1, to=0x9A7c7206962633A2440ae70D55149CAfa30ef342, amount=51740000000000000000 ) => ( True )
-
ExecutionDelegate.transferERC721( collection=0xBC4CA0EdA7647A8aB7C2061c2E118A18a936f13D, from=0x9A7c7206962633A2440ae70D55149CAfa30ef342, to=0x8d6613877353FAbdE051931a191Ce7BA6BE16fe1, tokenId=1927 )
-
BoredApeYachtClub.safeTransferFrom( from=0x9A7c7206962633A2440ae70D55149CAfa30ef342, to=0x8d6613877353FAbdE051931a191Ce7BA6BE16fe1, tokenId=1927 )
-
-
execute[BlurExchange (ln:126)]
_execute[BlurExchange (ln:132)]
_hashOrder[BlurExchange (ln:194)]
_hashOrder[BlurExchange (ln:195)]
_validateOrderParameters[BlurExchange (ln:196)]
_validateOrderParameters[BlurExchange (ln:197)]
_validateSignatures[BlurExchange (ln:198)]
_validateOracleAuthorization[BlurExchange (ln:347)]
_hashToSignOracle[BlurExchange (ln:420)]
_verify[BlurExchange (ln:446)]
ecrecover[BlurExchange (ln:464)]
_validateUserAuthorization[BlurExchange (ln:362)]
_hashToSign[BlurExchange (ln:398)]
decode[BlurExchange (ln:401)]
_computeRoot[BlurExchange (ln:402)]
_hashPair[MerkleVerifier (ln:1137)]
_efficientHash[MerkleVerifier (ln:1142)]
_efficientHash[MerkleVerifier (ln:1142)]
_hashToSignRoot[BlurExchange (ln:403)]
_verify[BlurExchange (ln:405)]
ecrecover[BlurExchange (ln:464)]
_validateSignatures[BlurExchange (ln:199)]
_validateOracleAuthorization[BlurExchange (ln:347)]
_hashToSignOracle[BlurExchange (ln:420)]
_verify[BlurExchange (ln:446)]
ecrecover[BlurExchange (ln:464)]
_validateUserAuthorization[BlurExchange (ln:362)]
_hashToSign[BlurExchange (ln:398)]
decode[BlurExchange (ln:401)]
_computeRoot[BlurExchange (ln:402)]
_hashPair[MerkleVerifier (ln:1137)]
_efficientHash[MerkleVerifier (ln:1142)]
_efficientHash[MerkleVerifier (ln:1142)]
_hashToSignRoot[BlurExchange (ln:403)]
_verify[BlurExchange (ln:405)]
ecrecover[BlurExchange (ln:464)]
_canMatchOrders[BlurExchange (ln:200)]
isPolicyWhitelisted[BlurExchange (ln:484)]
canMatchMakerAsk[BlurExchange (ln:485)]
isPolicyWhitelisted[BlurExchange (ln:488)]
canMatchMakerBid[BlurExchange (ln:489)]
_executeFundsTransfer[BlurExchange (ln:204)]
_transferFees[BlurExchange (ln:517)]
_transferTo[BlurExchange (ln:545)]
call[BlurExchange (ln:576)]
payable[BlurExchange (ln:576)]
transferFrom[BlurExchange (ln:580)]
transferERC20[BlurExchange (ln:584)]
revert[BlurExchange (ln:586)]
_transferTo[BlurExchange (ln:551)]
call[BlurExchange (ln:576)]
payable[BlurExchange (ln:576)]
transferFrom[BlurExchange (ln:580)]
transferERC20[BlurExchange (ln:584)]
revert[BlurExchange (ln:586)]
_transferFees[BlurExchange (ln:518)]
_transferTo[BlurExchange (ln:545)]
call[BlurExchange (ln:576)]
payable[BlurExchange (ln:576)]
transferFrom[BlurExchange (ln:580)]
transferERC20[BlurExchange (ln:584)]
revert[BlurExchange (ln:586)]
_transferTo[BlurExchange (ln:551)]
call[BlurExchange (ln:576)]
payable[BlurExchange (ln:576)]
transferFrom[BlurExchange (ln:580)]
transferERC20[BlurExchange (ln:584)]
revert[BlurExchange (ln:586)]
_transferTo[BlurExchange (ln:524)]
call[BlurExchange (ln:576)]
payable[BlurExchange (ln:576)]
transferFrom[BlurExchange (ln:580)]
transferERC20[BlurExchange (ln:584)]
revert[BlurExchange (ln:586)]
_executeTokenTransfer[BlurExchange (ln:212)]
transferERC721[BlurExchange (ln:607)]
transferERC1155[BlurExchange (ln:609)]
OrdersMatched[BlurExchange (ln:220)]
_returnDust[BlurExchange (ln:133)]
File 1 of 8: ERC1967Proxy
File 2 of 8: ERC1967Proxy
File 3 of 8: BoredApeYachtClub
File 4 of 8: BlurExchange
File 5 of 8: PolicyManager
File 6 of 8: SafeCollectionBidPolicyERC721
File 7 of 8: BlurPool
File 8 of 8: ExecutionDelegate
12345678910111213141516// SPDX-License-Identifier: MIT// OpenZeppelin Contracts v4.4.1 (proxy/ERC1967/ERC1967Proxy.sol)pragma solidity 0.8.17;// OpenZeppelin Contracts v4.4.1 (proxy/Proxy.sol)/*** @dev This abstract contract provides a fallback function that delegates all calls to another contract using the EVM* instruction `delegatecall`. We refer to the second contract as the _implementation_ behind the proxy, and it has to* be specified by overriding the virtual {_implementation} function.** Additionally, delegation to the implementation can be triggered manually through the {_fallback} function, or to a* different contract through the {_delegate} function.** The success and return data of the delegated call will be returned back to the caller of the proxy.*/abstract contract Proxy {/**
File 2 of 8: ERC1967Proxy
12345678910111213141516// SPDX-License-Identifier: MIT// OpenZeppelin Contracts v4.4.1 (proxy/ERC1967/ERC1967Proxy.sol)pragma solidity 0.8.17;// OpenZeppelin Contracts v4.4.1 (proxy/Proxy.sol)/*** @dev This abstract contract provides a fallback function that delegates all calls to another contract using the EVM* instruction `delegatecall`. We refer to the second contract as the _implementation_ behind the proxy, and it has to* be specified by overriding the virtual {_implementation} function.** Additionally, delegation to the implementation can be triggered manually through the {_fallback} function, or to a* different contract through the {_delegate} function.** The success and return data of the delegated call will be returned back to the caller of the proxy.*/abstract contract Proxy {/**
File 3 of 8: BoredApeYachtClub
12345678910111213141516// File: @openzeppelin/contracts/utils/Context.sol// SPDX-License-Identifier: MITpragma solidity >=0.6.0 <0.8.0;/** @dev Provides information about the current execution context, including the* sender of the transaction and its data. While these are generally available* via msg.sender and msg.data, they should not be accessed in such a direct* manner, since when dealing with GSN meta-transactions the account sending and* paying for execution may not be the actual sender (as far as an application* is concerned).** This contract is only required for intermediate, library-like contracts.*/
File 4 of 8: BlurExchange
12345678910111213141516// SPDX-License-Identifier: MITpragma solidity 0.8.17;import "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol";import "@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol";import "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol";import "./lib/ReentrancyGuarded.sol";import "./lib/EIP712.sol";import "./lib/MerkleVerifier.sol";import "./interfaces/IBlurExchange.sol";import "./interfaces/IBlurPool.sol";import "./interfaces/IExecutionDelegate.sol";import "./interfaces/IPolicyManager.sol";import "./interfaces/IMatchingPolicy.sol";import {Side,SignatureVersion,
File 5 of 8: PolicyManager
12345678910111213141516// SPDX-License-Identifier: MITpragma solidity 0.8.17;import {Ownable} from "@openzeppelin/contracts/access/Ownable.sol";import {EnumerableSet} from "@openzeppelin/contracts/utils/structs/EnumerableSet.sol";import {IPolicyManager} from "./interfaces/IPolicyManager.sol";/*** @title PolicyManager* @dev Manages the policy whitelist for the Blur exchange*/contract PolicyManager is IPolicyManager, Ownable {using EnumerableSet for EnumerableSet.AddressSet;EnumerableSet.AddressSet private _whitelistedPolicies;event PolicyRemoved(address indexed policy);event PolicyWhitelisted(address indexed policy);/*** @notice Add matching policy
File 6 of 8: SafeCollectionBidPolicyERC721
12345678910111213141516// SPDX-License-Identifier: MITpragma solidity 0.8.17;import {Order, AssetType} from "../lib/OrderStructs.sol";import {IMatchingPolicy} from "../interfaces/IMatchingPolicy.sol";/*** @title SafeCollectionBidPolicyERC721* @dev Policy for matching orders where buyer will purchase any NON-SUSPICIOUS token from a collection*/contract SafeCollectionBidPolicyERC721 is IMatchingPolicy {function canMatchMakerAsk(Order calldata makerAsk, Order calldata takerBid)externalpureoverridereturns (bool,uint256,
File 7 of 8: BlurPool
12345678910111213141516// SPDX-License-Identifier: MITpragma solidity 0.8.17;import "@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol";import "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol";import "./interfaces/IBlurPool.sol";/*** @title BlurPool* @dev ETH pool; funds can only be transferred by Exchange or Swap*/contract BlurPool is IBlurPool, OwnableUpgradeable, UUPSUpgradeable {address private constant EXCHANGE = 0x000000000000Ad05Ccc4F10045630fb830B95127;address private constant SWAP = 0x39da41747a83aeE658334415666f3EF92DD0D541;mapping(address => uint256) private _balances;string public constant name = 'Blur Pool';string constant symbol = '';// required by the OZ UUPS module
File 8 of 8: ExecutionDelegate
12345678910111213141516// SPDX-License-Identifier: MITpragma solidity 0.8.17;import "@openzeppelin/contracts/token/ERC20/IERC20.sol";import "@openzeppelin/contracts/token/ERC721/IERC721.sol";import "@openzeppelin/contracts/token/ERC1155/IERC1155.sol";import "@openzeppelin/contracts/access/Ownable.sol";import "@openzeppelin/contracts/utils/Address.sol";import {IExecutionDelegate} from "./interfaces/IExecutionDelegate.sol";/*** @title ExecutionDelegate* @dev Proxy contract to manage user token approvals*/contract ExecutionDelegate is IExecutionDelegate, Ownable {using Address for address;mapping(address => bool) public contracts;mapping(address => bool) public revokedApproval;