From c03e24e10b23ce1c542d3dea10bc26ae9d86fea5 Mon Sep 17 00:00:00 2001 From: Fabio Berger Date: Mon, 4 Feb 2019 16:03:25 +0000 Subject: Fix bug where passing in signerAddress instead of exchangeAddress --- packages/order-utils/package.json | 1 + packages/order-utils/src/signature_utils.ts | 10 +++++++++- 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/packages/order-utils/package.json b/packages/order-utils/package.json index 7a4d4aa84..4e31d4094 100644 --- a/packages/order-utils/package.json +++ b/packages/order-utils/package.json @@ -57,6 +57,7 @@ "@0x/assert": "^1.0.23", "@0x/base-contract": "^3.0.13", "@0x/contract-artifacts": "^1.3.0", + "@0x/contract-addresses": "^2.2.0", "@0x/json-schemas": "^2.1.7", "@0x/types": "^1.5.2", "@0x/typescript-typings": "^3.0.8", diff --git a/packages/order-utils/src/signature_utils.ts b/packages/order-utils/src/signature_utils.ts index 131144d48..efcc146bf 100644 --- a/packages/order-utils/src/signature_utils.ts +++ b/packages/order-utils/src/signature_utils.ts @@ -1,4 +1,5 @@ import { ExchangeContract, IValidatorContract, IWalletContract } from '@0x/abi-gen-wrappers'; +import { getContractAddressesForNetworkOrThrow } from '@0x/contract-addresses'; import * as artifacts from '@0x/contract-artifacts'; import { schemas } from '@0x/json-schemas'; import { ECSignature, Order, SignatureType, SignedOrder, ValidatorSignature } from '@0x/types'; @@ -92,7 +93,14 @@ export const signatureUtils = { assert.isWeb3Provider('provider', provider); assert.isHexString('data', data); assert.isETHAddressHex('signerAddress', signerAddress); - const exchangeContract = new ExchangeContract(artifacts.Exchange.compilerOutput.abi, signerAddress, provider); + const web3Wrapper = new Web3Wrapper(provider); + const networkId = await web3Wrapper.getNetworkIdAsync(); + const addresses = getContractAddressesForNetworkOrThrow(networkId); + const exchangeContract = new ExchangeContract( + artifacts.Exchange.compilerOutput.abi, + addresses.exchange, + provider, + ); const isValid = await exchangeContract.preSigned.callAsync(data, signerAddress); return isValid; }, -- cgit v1.2.3 From 52f22aad818b5b5e19d93cf07344655f0f1ca45f Mon Sep 17 00:00:00 2001 From: Fabio Berger Date: Mon, 4 Feb 2019 16:03:48 +0000 Subject: Write failing preSign unit test --- packages/order-utils/test/signature_utils_test.ts | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/packages/order-utils/test/signature_utils_test.ts b/packages/order-utils/test/signature_utils_test.ts index 937382056..eab6aa636 100644 --- a/packages/order-utils/test/signature_utils_test.ts +++ b/packages/order-utils/test/signature_utils_test.ts @@ -99,6 +99,17 @@ describe('Signature utils', () => { ); expect(isValidSignatureLocal).to.be.true(); }); + + it.only('should return false if entry not found in `preSigned` mapping', async () => { + const preSignedSignature = '0x06'; + const isValidSignatureLocal = await signatureUtils.isValidSignatureAsync( + provider, + dataHex, + preSignedSignature, + address, + ); + expect(isValidSignatureLocal).to.be.true(); + }); }); describe('#isValidECSignature', () => { const signature = { -- cgit v1.2.3 From 2447c72a5c360382bafb1df114310be2c853a170 Mon Sep 17 00:00:00 2001 From: Fabio Berger Date: Tue, 5 Feb 2019 12:09:13 +0000 Subject: Fix heap out of memory issue --- packages/0x.js/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/0x.js/package.json b/packages/0x.js/package.json index d37988e26..e7011289e 100644 --- a/packages/0x.js/package.json +++ b/packages/0x.js/package.json @@ -24,7 +24,7 @@ "test:coverage": "nyc npm run test --all && yarn coverage:report:lcov", "coverage:report:lcov": "nyc report --reporter=text-lcov > coverage/lcov.info", "clean": "shx rm -rf _bundles lib test_temp src/generated_contract_wrappers generated_docs", - "build:umd:prod": "NODE_ENV=production webpack", + "build:umd:prod": "NODE_ENV=production node --max_old_space_size=8192 ../../node_modules/.bin/webpack --mode production", "build:commonjs": "tsc -b", "docs:json": "typedoc --excludePrivate --excludeExternals --target ES5 --tsconfig typedoc-tsconfig.json --json $JSON_FILE_PATH $PROJECT_FILES" }, -- cgit v1.2.3 From 7885b2e3f8094c957ca1c1e851c4bc368dda5bdf Mon Sep 17 00:00:00 2001 From: Fabio Berger Date: Tue, 5 Feb 2019 12:56:04 +0000 Subject: Fix test --- packages/order-utils/test/signature_utils_test.ts | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/packages/order-utils/test/signature_utils_test.ts b/packages/order-utils/test/signature_utils_test.ts index eab6aa636..44aa729b3 100644 --- a/packages/order-utils/test/signature_utils_test.ts +++ b/packages/order-utils/test/signature_utils_test.ts @@ -100,15 +100,15 @@ describe('Signature utils', () => { expect(isValidSignatureLocal).to.be.true(); }); - it.only('should return false if entry not found in `preSigned` mapping', async () => { + it('should return false if entry not found in `preSigned` mapping', async () => { const preSignedSignature = '0x06'; - const isValidSignatureLocal = await signatureUtils.isValidSignatureAsync( + const isValidPreSignature = await signatureUtils.isValidSignatureAsync( provider, dataHex, preSignedSignature, address, ); - expect(isValidSignatureLocal).to.be.true(); + expect(isValidPreSignature).to.be.false(); }); }); describe('#isValidECSignature', () => { -- cgit v1.2.3 From 332cc14dcde97d760d0115aefa0845f82e23cc26 Mon Sep 17 00:00:00 2001 From: Fabio Berger Date: Tue, 5 Feb 2019 13:07:40 +0000 Subject: Add preSigned isValidSignature test for success case using smart contract & TS implementation --- .../contract-wrappers/test/exchange_wrapper_test.ts | 21 +++++++++++++++++++-- 1 file changed, 19 insertions(+), 2 deletions(-) diff --git a/packages/contract-wrappers/test/exchange_wrapper_test.ts b/packages/contract-wrappers/test/exchange_wrapper_test.ts index a1d60dc6e..f8fa25491 100644 --- a/packages/contract-wrappers/test/exchange_wrapper_test.ts +++ b/packages/contract-wrappers/test/exchange_wrapper_test.ts @@ -1,6 +1,6 @@ import { BlockchainLifecycle, callbackErrorReporter } from '@0x/dev-utils'; import { FillScenarios } from '@0x/fill-scenarios'; -import { assetDataUtils, orderHashUtils } from '@0x/order-utils'; +import { assetDataUtils, orderHashUtils, signatureUtils } from '@0x/order-utils'; import { DoneCallback, RevertReason, SignedOrder } from '@0x/types'; import { BigNumber } from '@0x/utils'; import * as chai from 'chai'; @@ -353,7 +353,7 @@ describe('ExchangeWrapper', () => { }); }); describe('#preSignAsync/isPreSignedAsync', () => { - it('should preSign the hash', async () => { + it.only('should preSign the hash', async () => { const senderAddress = takerAddress; const hash = orderHashUtils.getOrderHashHex(signedOrder); const signerAddress = signedOrder.makerAddress; @@ -368,6 +368,23 @@ describe('ExchangeWrapper', () => { await web3Wrapper.awaitTransactionSuccessAsync(txHash, constants.AWAIT_TRANSACTION_MINED_MS); isPreSigned = await contractWrappers.exchange.isPreSignedAsync(hash, signerAddress); expect(isPreSigned).to.be.true(); + + const preSignedSignature = '0x06'; + const isValidSignature = await contractWrappers.exchange.isValidSignatureAsync( + hash, + signerAddress, + preSignedSignature, + ); + expect(isValidSignature).to.be.true(); + + // Test our TS implementation of signature validation + const isValidSignatureInTs = await signatureUtils.isValidSignatureAsync( + provider, + hash, + preSignedSignature, + signerAddress, + ); + expect(isValidSignatureInTs).to.be.true(); }); }); describe('#getVersionAsync', () => { -- cgit v1.2.3 From 0a93f3346fd015299e5ca78507ff37cefbdeb213 Mon Sep 17 00:00:00 2001 From: Fabio Berger Date: Tue, 5 Feb 2019 13:07:50 +0000 Subject: All CHANGELOG entry --- packages/order-utils/CHANGELOG.json | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/packages/order-utils/CHANGELOG.json b/packages/order-utils/CHANGELOG.json index 08d88da5b..8afae057c 100644 --- a/packages/order-utils/CHANGELOG.json +++ b/packages/order-utils/CHANGELOG.json @@ -5,6 +5,10 @@ { "note": "Upgrade the bignumber.js to v8.0.2", "pr": 1517 + }, + { + "note": "Fix preSigned isSignatureValidAsync check", + "pr": 1580 } ] }, -- cgit v1.2.3 From e021460f038b989f1fe78899ba7c2f8e29d416fd Mon Sep 17 00:00:00 2001 From: Fabio Berger Date: Tue, 5 Feb 2019 13:09:23 +0000 Subject: Remove .only --- packages/contract-wrappers/test/exchange_wrapper_test.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/contract-wrappers/test/exchange_wrapper_test.ts b/packages/contract-wrappers/test/exchange_wrapper_test.ts index f8fa25491..acd30495b 100644 --- a/packages/contract-wrappers/test/exchange_wrapper_test.ts +++ b/packages/contract-wrappers/test/exchange_wrapper_test.ts @@ -353,7 +353,7 @@ describe('ExchangeWrapper', () => { }); }); describe('#preSignAsync/isPreSignedAsync', () => { - it.only('should preSign the hash', async () => { + it('should preSign the hash', async () => { const senderAddress = takerAddress; const hash = orderHashUtils.getOrderHashHex(signedOrder); const signerAddress = signedOrder.makerAddress; -- cgit v1.2.3 From 3cb6744369157c24beb9bd14bec060678feea95f Mon Sep 17 00:00:00 2001 From: Leonid Logvinov Date: Tue, 5 Feb 2019 13:14:31 +0000 Subject: Update packages/order-utils/CHANGELOG.json Co-Authored-By: fabioberger --- packages/order-utils/CHANGELOG.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/order-utils/CHANGELOG.json b/packages/order-utils/CHANGELOG.json index 8afae057c..1d80aad50 100644 --- a/packages/order-utils/CHANGELOG.json +++ b/packages/order-utils/CHANGELOG.json @@ -7,7 +7,7 @@ "pr": 1517 }, { - "note": "Fix preSigned isSignatureValidAsync check", + "note": "Fix preSigned `isSignatureValidAsync` check", "pr": 1580 } ] -- cgit v1.2.3 From 224a58bdf25127786a9b83f37c20015b16cbe3d5 Mon Sep 17 00:00:00 2001 From: Fabio Berger Date: Tue, 5 Feb 2019 14:19:48 +0000 Subject: Fix dep version --- packages/order-utils/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/order-utils/package.json b/packages/order-utils/package.json index 3f14cea5f..8645581ab 100644 --- a/packages/order-utils/package.json +++ b/packages/order-utils/package.json @@ -57,7 +57,7 @@ "@0x/assert": "^2.0.0", "@0x/base-contract": "^4.0.0", "@0x/contract-artifacts": "^1.3.0", - "@0x/contract-addresses": "^2.2.0", + "@0x/contract-addresses": "^2.2.1", "@0x/json-schemas": "^3.0.0", "@0x/types": "^2.0.0", "@0x/typescript-typings": "^4.0.0", -- cgit v1.2.3