Add ERC721Receiver that returns incorrect value
This commit is contained in:
		@@ -33,6 +33,7 @@
 | 
			
		||||
        "Forwarder",
 | 
			
		||||
        "IAssetData",
 | 
			
		||||
        "IAssetProxy",
 | 
			
		||||
        "InvalidERC721Receiver",
 | 
			
		||||
        "IValidator",
 | 
			
		||||
        "IWallet",
 | 
			
		||||
        "MixinAuthorizable",
 | 
			
		||||
 
 | 
			
		||||
@@ -37,7 +37,7 @@
 | 
			
		||||
    },
 | 
			
		||||
    "config": {
 | 
			
		||||
        "abis":
 | 
			
		||||
            "../migrations/artifacts/2.0.0/@(AssetProxyOwner|DummyERC20Token|DummyERC721Receiver|DummyERC721Token|DummyNoReturnERC20Token|ERC20Proxy|ERC721Proxy|Forwarder|Exchange|ExchangeWrapper|IAssetData|IAssetProxy|MixinAuthorizable|MultiSigWallet|MultiSigWalletWithTimeLock|TestAssetProxyOwner|TestAssetProxyDispatcher|TestConstants|TestExchangeInternals|TestLibBytes|TestLibs|TestSignatureValidator|Validator|Wallet|TokenRegistry|Whitelist|WETH9|ZRXToken).json"
 | 
			
		||||
            "../migrations/artifacts/2.0.0/@(AssetProxyOwner|DummyERC20Token|DummyERC721Receiver|DummyERC721Token|DummyNoReturnERC20Token|ERC20Proxy|ERC721Proxy|Forwarder|Exchange|ExchangeWrapper|IAssetData|IAssetProxy|InvalidERC721Receiver|MixinAuthorizable|MultiSigWallet|MultiSigWalletWithTimeLock|TestAssetProxyOwner|TestAssetProxyDispatcher|TestConstants|TestExchangeInternals|TestLibBytes|TestLibs|TestSignatureValidator|Validator|Wallet|TokenRegistry|Whitelist|WETH9|ZRXToken).json"
 | 
			
		||||
    },
 | 
			
		||||
    "repository": {
 | 
			
		||||
        "type": "git",
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										66
									
								
								packages/contracts/src/2.0.0/test/DummyERC721Receiver/InvalidERC721Receiver.sol
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										66
									
								
								packages/contracts/src/2.0.0/test/DummyERC721Receiver/InvalidERC721Receiver.sol
									
									
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,66 @@
 | 
			
		||||
/*
 | 
			
		||||
 | 
			
		||||
  Copyright 2018 ZeroEx Intl.
 | 
			
		||||
 | 
			
		||||
  Licensed under the Apache License, Version 2.0 (the "License");
 | 
			
		||||
  you may not use this file except in compliance with the License.
 | 
			
		||||
  You may obtain a copy of the License at
 | 
			
		||||
 | 
			
		||||
    http://www.apache.org/licenses/LICENSE-2.0
 | 
			
		||||
 | 
			
		||||
  Unless required by applicable law or agreed to in writing, software
 | 
			
		||||
  distributed under the License is distributed on an "AS IS" BASIS,
 | 
			
		||||
  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 | 
			
		||||
  See the License for the specific language governing permissions and
 | 
			
		||||
  limitations under the License.
 | 
			
		||||
 | 
			
		||||
*/
 | 
			
		||||
 | 
			
		||||
pragma solidity 0.4.24;
 | 
			
		||||
 | 
			
		||||
import "../../tokens/ERC721Token/IERC721Receiver.sol";
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
contract InvalidERC721Receiver is
 | 
			
		||||
    IERC721Receiver
 | 
			
		||||
{
 | 
			
		||||
    // Actual function signature is `onERC721Received(address,address,uint256,bytes)`
 | 
			
		||||
    bytes4 constant internal INVALID_ERC721_RECEIVED = bytes4(keccak256("onERC721Received(address,uint256,bytes)"));
 | 
			
		||||
 | 
			
		||||
    event TokenReceived(
 | 
			
		||||
        address operator,
 | 
			
		||||
        address from,
 | 
			
		||||
        uint256 tokenId,
 | 
			
		||||
        bytes data
 | 
			
		||||
    );
 | 
			
		||||
 | 
			
		||||
    /// @notice Handle the receipt of an NFT
 | 
			
		||||
    /// @dev The ERC721 smart contract calls this function on the recipient
 | 
			
		||||
    ///      after a `transfer`. This function MAY throw to revert and reject the
 | 
			
		||||
    ///      transfer. Return of other than the magic value MUST result in the
 | 
			
		||||
    ///      transaction being reverted.
 | 
			
		||||
    ///      Note: the contract address is always the message sender.
 | 
			
		||||
    /// @param _operator The address which called `safeTransferFrom` function
 | 
			
		||||
    /// @param _from The address which previously owned the token
 | 
			
		||||
    /// @param _tokenId The NFT identifier which is being transferred
 | 
			
		||||
    /// @param _data Additional data with no specified format
 | 
			
		||||
    /// @return `bytes4(keccak256("onERC721Received(address,address,uint256,bytes)"))`
 | 
			
		||||
    ///         unless throwing
 | 
			
		||||
    function onERC721Received(
 | 
			
		||||
        address _operator,
 | 
			
		||||
        address _from,
 | 
			
		||||
        uint256 _tokenId,
 | 
			
		||||
        bytes _data
 | 
			
		||||
    )
 | 
			
		||||
        external
 | 
			
		||||
        returns (bytes4)
 | 
			
		||||
    {
 | 
			
		||||
        emit TokenReceived(
 | 
			
		||||
            _operator,
 | 
			
		||||
            _from,
 | 
			
		||||
            _tokenId,
 | 
			
		||||
            _data
 | 
			
		||||
        );
 | 
			
		||||
        return INVALID_ERC721_RECEIVED;
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
		Reference in New Issue
	
	Block a user