Merge pull request #2443 from 0xProject/fix/abiDecoder/LogDecodingDynamicData

Fixes log decoding of dynamic data
This commit is contained in:
Greg Hysz
2020-01-14 18:33:57 -08:00
committed by GitHub
10 changed files with 115 additions and 64 deletions

View File

@@ -17,6 +17,7 @@
*/
pragma solidity ^0.5.9;
pragma experimental ABIEncoderV2;
import "@0x/contracts-utils/contracts/src/LibSafeMath.sol";
import "@0x/contracts-utils/contracts/src/LibAddress.sol";

View File

@@ -1,4 +1,23 @@
/*
Copyright 2019 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.5.9;
pragma experimental ABIEncoderV2;
import "@0x/contracts-utils/contracts/src/LibSafeMath.sol";
import "./ERC1155.sol";

View File

@@ -17,6 +17,7 @@
*/
pragma solidity ^0.5.9;
pragma experimental ABIEncoderV2;
contract MixinNonFungibleToken {
@@ -64,7 +65,7 @@ contract MixinNonFungibleToken {
// A base type has the NF bit but does has an index.
return (id & TYPE_NF_BIT == TYPE_NF_BIT) && (id & NF_INDEX_MASK != 0);
}
/// @dev returns owner of a non-fungible token
function ownerOf(uint256 id) public view returns (address) {
return nfOwners[id];

View File

@@ -17,13 +17,14 @@
*/
pragma solidity ^0.5.9;
pragma experimental ABIEncoderV2;
/// @title ERC-1155 Multi Token Standard
/// @dev See https://github.com/ethereum/EIPs/blob/master/EIPS/eip-1155.md
/// Note: The ERC-165 identifier for this interface is 0xd9b67a26.
interface IERC1155 {
/// @dev Either TransferSingle or TransferBatch MUST emit when tokens are transferred,
/// including zero value transfers as well as minting or burning.
/// Operator will always be msg.sender.

View File

@@ -1,4 +1,23 @@
/*
Copyright 2019 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.5.9;
pragma experimental ABIEncoderV2;
import "./IERC1155.sol";

View File

@@ -17,10 +17,11 @@
*/
pragma solidity ^0.5.9;
pragma experimental ABIEncoderV2;
interface IERC1155Receiver {
/// @notice Handle the receipt of a single ERC1155 token type
/// @dev The smart contract calls this function on the recipient
/// after a `safeTransferFrom`. This function MAY throw to revert and reject the

View File

@@ -1,4 +1,13 @@
[
{
"version": "3.1.0",
"changes": [
{
"note": "Uses updated event decoding to properly decodes arrays and objects.",
"pr": 2443
}
]
},
{
"timestamp": 1578272714,
"version": "3.0.3",

View File

@@ -121,22 +121,21 @@ blockchainTests('Exchange wrapper functions unit tests.', env => {
}
}
function assertSameOrderFromEvent(actual: any[], expected: Order): void {
expect(actual.length === 14);
expect(actual[0].toLowerCase()).to.be.eq(expected.makerAddress);
expect(actual[1].toLowerCase()).to.be.eq(expected.takerAddress);
expect(actual[2].toLowerCase()).to.be.eq(expected.feeRecipientAddress);
expect(actual[3].toLowerCase()).to.be.eq(expected.senderAddress);
expect(actual[4]).to.be.bignumber.eq(expected.makerAssetAmount);
expect(actual[5]).to.be.bignumber.eq(expected.takerAssetAmount);
expect(actual[6]).to.be.bignumber.eq(expected.makerFee);
expect(actual[7]).to.be.bignumber.eq(expected.takerFee);
expect(actual[8]).to.be.bignumber.eq(expected.expirationTimeSeconds);
expect(actual[9]).to.be.bignumber.eq(expected.salt);
expect(actual[10]).to.be.eq(expected.makerAssetData);
expect(actual[11]).to.be.eq(expected.takerAssetData);
expect(actual[12]).to.be.eq(expected.makerFeeAssetData);
expect(actual[13]).to.be.eq(expected.takerFeeAssetData);
function assertSameOrderFromEvent(actual: any, expected: Order): void {
expect(actual.makerAddress).to.be.eq(expected.makerAddress);
expect(actual.takerAddress).to.be.eq(expected.takerAddress);
expect(actual.feeRecipientAddress).to.be.eq(expected.feeRecipientAddress);
expect(actual.senderAddress).to.be.eq(expected.senderAddress);
expect(actual.makerAssetAmount).to.bignumber.eq(expected.makerAssetAmount);
expect(actual.takerAssetAmount).to.bignumber.eq(expected.takerAssetAmount);
expect(actual.makerFee).to.bignumber.eq(expected.makerFee);
expect(actual.takerFee).to.bignumber.eq(expected.takerFee);
expect(actual.expirationTimeSeconds).to.bignumber.eq(expected.expirationTimeSeconds);
expect(actual.salt).to.bignumber.eq(expected.salt);
expect(actual.makerAssetData).to.eq(expected.makerAssetData);
expect(actual.takerAssetData).to.eq(expected.takerAssetData);
expect(actual.makerFeeAssetData).to.eq(expected.makerFeeAssetData);
expect(actual.takerFeeAssetData).to.eq(expected.takerFeeAssetData);
}
describe('fillOrKillOrder', () => {

View File

@@ -1,4 +1,13 @@
[
{
"version": "4.1.0",
"changes": [
{
"note": "Replaced ethers with 0x ABI Encoder for decoding logs. Fixes decoding for arrays/objects.",
"pr": 2443
}
]
},
{
"timestamp": 1578272714,
"version": "4.0.3",