diff --git a/packages/json-schemas/schemas/eip712_domain_schema.json b/packages/json-schemas/schemas/eip712_domain_schema.json new file mode 100644 index 0000000000..3c5bbea89b --- /dev/null +++ b/packages/json-schemas/schemas/eip712_domain_schema.json @@ -0,0 +1,14 @@ +{ + "id": "/eip712DomainSchema", + "properties": { + "name": { "type": "string" }, + "version": { "type": "version" }, + "chainId": { "type": "number" }, + "verifyingContractAddress": { "$ref": "/addressSchema" } + }, + "required": [ + "chainId", + "verifyingContractAddress" + ], + "type": "object" +} diff --git a/packages/json-schemas/schemas/eip712_typed_data_schema.json b/packages/json-schemas/schemas/eip712_typed_data_schema.json index 8efd6de448..6409819fc6 100644 --- a/packages/json-schemas/schemas/eip712_typed_data_schema.json +++ b/packages/json-schemas/schemas/eip712_typed_data_schema.json @@ -21,7 +21,7 @@ "required": ["EIP712Domain"] }, "primaryType": { "type": "string" }, - "domain": { "type": "object" }, + "domain": { "$ref": "/eip712DomainSchema" }, "message": { "type": "object" } }, "required": ["types", "primaryType", "domain", "message"] diff --git a/packages/json-schemas/schemas/order_schema.json b/packages/json-schemas/schemas/order_schema.json index 543d226ff9..ff693da811 100644 --- a/packages/json-schemas/schemas/order_schema.json +++ b/packages/json-schemas/schemas/order_schema.json @@ -11,10 +11,9 @@ "makerAssetData": { "$ref": "/hexSchema" }, "takerAssetData": { "$ref": "/hexSchema" }, "salt": { "$ref": "/wholeNumberSchema" }, - "exchangeAddress": { "$ref": "/addressSchema" }, - "chainId": { "type": "number" }, "feeRecipientAddress": { "$ref": "/addressSchema" }, - "expirationTimeSeconds": { "$ref": "/wholeNumberSchema" } + "expirationTimeSeconds": { "$ref": "/wholeNumberSchema" }, + "domain": { "$ref": "/eip712DomainSchema" } }, "required": [ "makerAddress", @@ -27,10 +26,9 @@ "makerAssetData", "takerAssetData", "salt", - "exchangeAddress", - "chainId", "feeRecipientAddress", - "expirationTimeSeconds" + "expirationTimeSeconds", + "domain" ], "type": "object" } diff --git a/packages/json-schemas/schemas/zero_ex_transaction_schema.json b/packages/json-schemas/schemas/zero_ex_transaction_schema.json index ffdf1f2295..b0578b9968 100644 --- a/packages/json-schemas/schemas/zero_ex_transaction_schema.json +++ b/packages/json-schemas/schemas/zero_ex_transaction_schema.json @@ -1,11 +1,11 @@ { "id": "/zeroExTransactionSchema", "properties": { - "verifyingContractAddress": { "$ref": "/addressSchema" }, "data": { "$ref": "/hexSchema" }, "signerAddress": { "$ref": "/addressSchema" }, - "salt": { "$ref": "/wholeNumberSchema" } + "salt": { "$ref": "/wholeNumberSchema" }, + "domain": { "$ref": "/eip712DomainSchema" } }, - "required": ["verifyingContractAddress", "data", "salt", "signerAddress"], + "required": ["data", "salt", "signerAddress", "domain"], "type": "object" } diff --git a/packages/json-schemas/src/schemas.ts b/packages/json-schemas/src/schemas.ts index 9e8eb6959f..a79bcfc7e4 100644 --- a/packages/json-schemas/src/schemas.ts +++ b/packages/json-schemas/src/schemas.ts @@ -5,6 +5,7 @@ import * as blockRangeSchema from '../schemas/block_range_schema.json'; import * as callDataSchema from '../schemas/call_data_schema.json'; import * as ecSignatureParameterSchema from '../schemas/ec_signature_parameter_schema.json'; import * as ecSignatureSchema from '../schemas/ec_signature_schema.json'; +import * as eip712DomainSchema from '../schemas/eip712_domain_schema.json'; import * as eip712TypedDataSchema from '../schemas/eip712_typed_data_schema.json'; import * as hexSchema from '../schemas/hex_schema.json'; import * as indexFilterValuesSchema from '../schemas/index_filter_values_schema.json'; @@ -52,6 +53,7 @@ export const schemas = { hexSchema, ecSignatureParameterSchema, ecSignatureSchema, + eip712DomainSchema, eip712TypedDataSchema, indexFilterValuesSchema, orderCancellationRequestsSchema, diff --git a/packages/json-schemas/test/schema_test.ts b/packages/json-schemas/test/schema_test.ts index 51723732ca..bb16f4bbbe 100644 --- a/packages/json-schemas/test/schema_test.ts +++ b/packages/json-schemas/test/schema_test.ts @@ -216,9 +216,11 @@ describe('Schema', () => { takerAssetData: NULL_ADDRESS, salt: '67006738228878699843088602623665307406148487219438534730168799356281242528500', feeRecipientAddress: NULL_ADDRESS, - exchangeAddress: NULL_ADDRESS, - chainId: CHAIN_ID, expirationTimeSeconds: '42', + domain: { + verifyingContractAddress: NULL_ADDRESS, + chainId: CHAIN_ID, + }, }; const relayerApiOrder = { order, diff --git a/packages/json-schemas/tsconfig.json b/packages/json-schemas/tsconfig.json index 7d7ce1d7e6..25d5f306fb 100644 --- a/packages/json-schemas/tsconfig.json +++ b/packages/json-schemas/tsconfig.json @@ -15,6 +15,7 @@ "./schemas/call_data_schema.json", "./schemas/ec_signature_parameter_schema.json", "./schemas/ec_signature_schema.json", + "./schemas/eip712_domain_schema.json", "./schemas/eip712_typed_data_schema.json", "./schemas/order_cancel_schema.json", "./schemas/order_fill_or_kill_requests_schema.json",