ETH Price: $2,024.86 (-1.91%)

Transaction Decoder

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 Code
0x00000000...830B95127
(Blur.io: Marketplace)
0x00000000...d351887Ac
(Coinbase: MEV Builder)
0.638018573609379395 Eth0.638051329809379395 Eth0.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)]
            File 1 of 8: ERC1967Proxy
            1
            2
            3
            4
            5
            6
            7
            8
            9
            10
            11
            12
            13
            14
            15
            16
            // 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 {
            /**
            XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

            File 2 of 8: ERC1967Proxy
            1
            2
            3
            4
            5
            6
            7
            8
            9
            10
            11
            12
            13
            14
            15
            16
            // 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 {
            /**
            XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

            File 3 of 8: BoredApeYachtClub
            1
            2
            3
            4
            5
            6
            7
            8
            9
            10
            11
            12
            13
            14
            15
            16
            // File: @openzeppelin/contracts/utils/Context.sol
            // SPDX-License-Identifier: MIT
            pragma 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.
            */
            XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

            File 4 of 8: BlurExchange
            1
            2
            3
            4
            5
            6
            7
            8
            9
            10
            11
            12
            13
            14
            15
            16
            // SPDX-License-Identifier: MIT
            pragma 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,
            XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

            File 5 of 8: PolicyManager
            1
            2
            3
            4
            5
            6
            7
            8
            9
            10
            11
            12
            13
            14
            15
            16
            // SPDX-License-Identifier: MIT
            pragma 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
            XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

            File 6 of 8: SafeCollectionBidPolicyERC721
            1
            2
            3
            4
            5
            6
            7
            8
            9
            10
            11
            12
            13
            14
            15
            16
            // SPDX-License-Identifier: MIT
            pragma 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)
            external
            pure
            override
            returns (
            bool,
            uint256,
            XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

            File 7 of 8: BlurPool
            1
            2
            3
            4
            5
            6
            7
            8
            9
            10
            11
            12
            13
            14
            15
            16
            // SPDX-License-Identifier: MIT
            pragma 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
            XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

            File 8 of 8: ExecutionDelegate
            1
            2
            3
            4
            5
            6
            7
            8
            9
            10
            11
            12
            13
            14
            15
            16
            // SPDX-License-Identifier: MIT
            pragma 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;
            XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX