I got a same problem in some cases when running the 5-wyvern-exchange-matching.js, such as 'does not match any-any reentrant order'. As shown in the picture below(I run the test in truffle develop):
Transaction: 0xfd1355c906114edcf3929a0945279916ed0ada7c3df58d7e09f2865216028478 exited with an error (status 0) after consuming all gas.
Please check that the transaction:
satisfies all conditions set by Solidity assert statements.
has enough gas to execute the full transaction.
does not trigger an invalid opcode by other means (ex: accessing an array out of bounds).
Then I debuged this transaction and found that the transaction failed with the function executeCall in ExchangeCore.sol 'require(executeCall(ProxyRegistryInterface(firstOrder.registry), firstOrder.maker, firstCall), "First call failed");'.
Why did the firstcall go wrong and not the secondcall?
What gets even weirder is that if I replace the secondCall with firstCall(Only replace the params in test not in contract), it works well. As shown in the picture below(replace the call2 with call1, it works well):
I also got the same problem in other test cases, including 'matches nft-nft swap order', 'matches nft-nft swap order, abi-decoding instead' and 'matches erc20-erc20 swap order'
I got a same problem in some cases when running the 5-wyvern-exchange-matching.js, such as 'does not match any-any reentrant order'. As shown in the picture below(I run the test in truffle develop): Transaction: 0xfd1355c906114edcf3929a0945279916ed0ada7c3df58d7e09f2865216028478 exited with an error (status 0) after consuming all gas. Please check that the transaction:
assert
statements.