Style updates to ERC721 onReceiver

This commit is contained in:
Greg Hysen
2018-06-04 22:34:04 -07:00
parent a1b49d8389
commit 774d831fae
7 changed files with 27 additions and 16 deletions

View File

@@ -30,7 +30,7 @@
"test:circleci": "yarn test"
},
"config": {
"abis": "../migrations/artifacts/2.0.0/@(AssetProxyOwner|DummyERC20Token|DummyERC721Token|DummyERC721Receiver|ERC20Proxy|ERC721Proxy|Exchange|MixinAuthorizable|MultiSigWallet|MultiSigWalletWithTimeLock|TestAssetDataDecoders|TestAssetProxyDispatcher|TestLibBytes|TestLibMem|TestLibs|TestSignatureValidator|TokenRegistry|Whitelist|WETH9|ZRXToken).json"
"abis": "../migrations/artifacts/2.0.0/@(AssetProxyOwner|DummyERC20Token|DummyERC721Receiver|DummyERC721Token|ERC20Proxy|ERC721Proxy|Exchange|MixinAuthorizable|MultiSigWallet|MultiSigWalletWithTimeLock|TestAssetDataDecoders|TestAssetProxyDispatcher|TestLibBytes|TestLibMem|TestLibs|TestSignatureValidator|TokenRegistry|Whitelist|WETH9|ZRXToken).json"
},
"repository": {
"type": "git",

View File

@@ -20,7 +20,6 @@ pragma solidity ^0.4.24;
pragma experimental ABIEncoderV2;
import "../../utils/LibBytes/LibBytes.sol";
import "../../tokens/ERC20Token/IERC20Token.sol";
import "./MixinAssetProxy.sol";
import "./MixinAuthorizable.sol";
import "../../tokens/ERC20Token/IERC20Token.sol";

View File

@@ -33,8 +33,6 @@ contract ERC721Proxy is
// Id of this proxy.
uint8 constant PROXY_ID = 2;
string constant PROXY_ID_MISMATCH = "Proxy id in metadata does not match this proxy id.";
/// @dev Internal version of `transferFrom`.
/// @param assetData Encoded byte array.
/// @param from Address to transfer asset from.
@@ -60,7 +58,7 @@ contract ERC721Proxy is
// Data must be intended for this proxy.
require(
proxyId == PROXY_ID,
PROXY_ID_MISMATCH
ASSET_PROXY_ID_MISMATCH
);
// There exists only 1 of each token.

View File

@@ -332,7 +332,8 @@ contract LibBytes is
internal
pure
{
// Read length of nested bytes
// Assert length of <b> is valid, given
// length of input
require(
b.length >= index + 32 /* 32 bytes to store length */ + input.length,
GTE_32_LENGTH_REQUIRED
@@ -340,9 +341,9 @@ contract LibBytes is
// Copy <input> into <b>
memcpy(
getMemAddress(b) + index + 32, // +32 to skip length of <b>
getMemAddress(input), // include length of byte array
input.length + 32 // +32 bytes to store length
getMemAddress(b) + 32 + index, // +32 to skip length of <b>
getMemAddress(input), // includes length of <input>
input.length + 32 // +32 bytes to store <input> length
);
}
}

View File

@@ -24,6 +24,12 @@ describe('TestAssetDataDecoders', () => {
let testAssetProxyDecoder: TestAssetDataDecodersContract;
let testAddress: string;
before(async () => {
await blockchainLifecycle.startAsync();
});
after(async () => {
await blockchainLifecycle.revertAsync();
});
before(async () => {
// Setup accounts & addresses
const accounts = await web3Wrapper.getAvailableAddressesAsync();
@@ -78,8 +84,12 @@ describe('TestAssetDataDecoders', () => {
it('should correctly decode ERC721 asset data with receiver data', async () => {
const tokenId = generatePseudoRandomSalt();
const receiverData =
ethUtil.bufferToHex(assetProxyUtils.encodeUint256(generatePseudoRandomSalt())) + 'FFFF';
const receiverDataFirst32Bytes = ethUtil.bufferToHex(
assetProxyUtils.encodeUint256(generatePseudoRandomSalt()),
);
const receiverDataExtraBytes = 'FFFF';
// We add extra bytes to generate a value that doesn't fit perfectly into one word
const receiverData = receiverDataFirst32Bytes + receiverDataExtraBytes;
const encodedAssetData = assetProxyUtils.encodeERC721AssetData(testAddress, tokenId, receiverData);
const expectedDecodedAssetData = assetProxyUtils.decodeERC721AssetData(encodedAssetData);
let decodedAssetProxyId: number;

View File

@@ -287,7 +287,7 @@ describe('Asset Transfer Proxies', () => {
amount,
{ from: exchangeAddress },
);
await web3Wrapper.awaitTransactionSuccessAsync(txHash, constants.AWAIT_TRANSACTION_MINED_MS);
// Parse transaction logs
const logDecoder = new LogDecoder(web3Wrapper, erc721Receiver.address);
const tx = await logDecoder.getTxWithDecodedLogsAsync(txHash);
@@ -319,6 +319,7 @@ describe('Asset Transfer Proxies', () => {
amount,
{ from: exchangeAddress },
);
await web3Wrapper.awaitTransactionSuccessAsync(txHash, constants.AWAIT_TRANSACTION_MINED_MS);
// Parse transaction logs
const logDecoder = new LogDecoder(web3Wrapper, erc721Receiver.address);
const tx = await logDecoder.getTxWithDecodedLogsAsync(txHash);