Skip to content

Commit b741d97

Browse files
feat(crypto-config): add schema (#1257)
* Schema * Install ajv * Remove slip44 * Extract build milestones * Remove double milestones * Verify schemas * Move schemas to validation package * Fix tests * Remove schemas from crypto-validation * Temporarily disable schemas * Fix crypto-key-pair-ecdsa * Fix crypto-key-pair-bls12-381 tests * Fix crypto-address-base58 tests * Fix crypto-address-keccak256 tests * Test crypto-signature-bls12-381 * Fix crypto-transaction * Fix crypto-block * Fix crypto-messages * Fix crypto-commit * FIx crypto-proposal * Fix configuration-generator * Tmp * Test api-evm * Fix p2p * Fix core * style: resolve style guide violations [ci-lint-fix] * Remove unused deps * Fix unit tests * Inject validation * Verify shema * Support verification skip * Fix tests * style: resolve style guide violations [ci-lint-fix]
1 parent 729e691 commit b741d97

104 files changed

Lines changed: 828 additions & 667 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

packages/api-development/source/controllers/node.ts

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,6 @@ export class NodeController extends Controller {
3737
},
3838
explorer: network.client.explorer,
3939
nethash: network.nethash,
40-
slip44: network.slip44,
4140
symbol: network.client.symbol,
4241
token: network.client.token,
4342
version: network.pubKeyHash,

packages/api-evm/package.json

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,6 @@
3838
"@mainsail/contracts": "workspace:*",
3939
"@mainsail/crypto-address-keccak256": "workspace:*",
4040
"@mainsail/crypto-block": "workspace:*",
41-
"@mainsail/crypto-validation": "workspace:*",
4241
"@mainsail/test-runner": "workspace:*",
4342
"@mainsail/validation": "workspace:*",
4443
"@types/semver": "7.7.0",

packages/api-evm/source/actions/eth-get-balance.test.ts

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,16 @@
11
import { Identifiers } from "@mainsail/constants";
22
import { schemas as keccak256Schemas } from "@mainsail/crypto-address-keccak256";
3-
import { schemas as validationSchemas } from "@mainsail/crypto-validation";
4-
import { Validator } from "@mainsail/validation";
3+
import { ServiceProvider as ValidationServiceProvider } from "@mainsail/validation";
54
import { Application } from "@mainsail/kernel";
65
import { describe } from "@mainsail/test-runner";
6+
import { Contracts } from "@mainsail/contracts";
77
import { schemas } from "../validation/index.js";
88
import { EthGetBalanceAction } from "./index.js";
99

1010
describe<{
1111
app: Application;
1212
action: EthGetBalanceAction;
13-
validator: Validator;
13+
validator: Contracts.Crypto.Validator;
1414
evm: any;
1515
}>("EthGetBalanceAction", ({ beforeEach, it, assert }) => {
1616
let balance = BigInt(0);
@@ -25,10 +25,12 @@ describe<{
2525
};
2626

2727
context.app = new Application();
28+
await context.app.resolve(ValidationServiceProvider).register();
29+
2830
context.app.bind(Identifiers.Evm.Instance).toConstantValue(context.evm);
2931

3032
context.action = context.app.resolve(EthGetBalanceAction);
31-
context.validator = context.app.resolve(Validator);
33+
context.validator = context.app.get<Contracts.Crypto.Validator>(Identifiers.Cryptography.Validator);
3234
});
3335

3436
it("should have a name", ({ action }) => {
@@ -37,7 +39,6 @@ describe<{
3739

3840
it("schema should be array with 0 parameters", ({ action, validator }) => {
3941
validator.addSchema(keccak256Schemas.address);
40-
validator.addSchema(validationSchemas.prefixedQuantityHex);
4142
validator.addSchema(schemas.blockTag);
4243
validator.addSchema(action.schema);
4344

packages/api-evm/source/actions/eth-get-block-transaction-count-by-hash.test.ts

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,15 @@
11
import { Identifiers } from "@mainsail/constants";
22
import { schemas as cryptoBlockSchemas } from "@mainsail/crypto-block";
3-
import { schemas as cryptoValidationSchemas } from "@mainsail/crypto-validation";
4-
import { Validator } from "@mainsail/validation";
3+
import { ServiceProvider as ValidationServiceProvider } from "@mainsail/validation";
54
import { Application } from "@mainsail/kernel";
65
import { describe } from "@mainsail/test-runner";
6+
import { Contracts } from "@mainsail/contracts";
77
import { EthGetBlockTransactionCountByHash } from "./index.js";
88

99
describe<{
1010
app: Application;
1111
action: EthGetBlockTransactionCountByHash;
12-
validator: Validator;
12+
validator: Contracts.Crypto.Validator;
1313
database: any;
1414
}>("EthGetBlockTransactionCountByHash", ({ beforeEach, it, assert, stub }) => {
1515
beforeEach(async (context) => {
@@ -18,18 +18,18 @@ describe<{
1818
};
1919

2020
context.app = new Application();
21+
await context.app.resolve(ValidationServiceProvider).register();
2122
context.app.bind(Identifiers.Database.Service).toConstantValue(context.database);
2223

2324
context.action = context.app.resolve(EthGetBlockTransactionCountByHash);
24-
context.validator = context.app.resolve(Validator);
25+
context.validator = context.app.get<Contracts.Crypto.Validator>(Identifiers.Cryptography.Validator);
2526
});
2627

2728
it("should have a name", ({ action }) => {
2829
assert.equal(action.name, "eth_getBlockTransactionCountByHash");
2930
});
3031

3132
it("schema should be array with 0 parameters", ({ action, validator }) => {
32-
validator.addSchema(cryptoValidationSchemas.prefixedQuantityHex);
3333
validator.addSchema(cryptoBlockSchemas.prefixedBlockHash);
3434
validator.addSchema(action.schema);
3535

packages/api-evm/source/actions/eth-get-block-transaction-count-by-number.test.ts

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,34 +1,36 @@
11
import { Identifiers } from "@mainsail/constants";
2-
import { Validator } from "@mainsail/validation";
3-
import { schemas as cryptoValidationSchemas } from "@mainsail/crypto-validation";
2+
import { ServiceProvider as ValidationServiceProvider } from "@mainsail/validation";
43
import { Application } from "@mainsail/kernel";
54
import { describe } from "@mainsail/test-runner";
5+
import { Contracts } from "@mainsail/contracts";
66
import { EthGetBlockTransactionCountByNumber } from "./index.js";
77

88
describe<{
99
app: Application;
1010
action: EthGetBlockTransactionCountByNumber;
11-
validator: Validator;
11+
validator: Contracts.Crypto.Validator;
1212
database: any;
13-
}>("EthGetBlockTransactionCountByHash", ({ beforeEach, it, assert, stub }) => {
13+
}>("EthGetBlockTransactionCountByNumber", ({ beforeEach, it, assert, stub }) => {
1414
beforeEach(async (context) => {
1515
context.database = {
1616
getBlockHeader: async () => undefined,
1717
};
1818

1919
context.app = new Application();
20+
21+
context.app.resolve(ValidationServiceProvider).register();
22+
2023
context.app.bind(Identifiers.Database.Service).toConstantValue(context.database);
2124

2225
context.action = context.app.resolve(EthGetBlockTransactionCountByNumber);
23-
context.validator = context.app.resolve(Validator);
26+
context.validator = context.app.get<Contracts.Crypto.Validator>(Identifiers.Cryptography.Validator);
2427
});
2528

2629
it("should have a name", ({ action }) => {
2730
assert.equal(action.name, "eth_getBlockTransactionCountByNumber");
2831
});
2932

3033
it("schema should be array with 0 parameters", ({ action, validator }) => {
31-
validator.addSchema(cryptoValidationSchemas.prefixedQuantityHex);
3234
validator.addSchema(action.schema);
3335

3436
assert.undefined(validator.validate("jsonRpc_eth_getBlockTransactionCountByNumber", ["0x0"]).errors);

packages/api-evm/source/actions/eth-get-code.test.ts

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,16 @@
11
import { Identifiers } from "@mainsail/constants";
22
import { schemas as keccak256Schemas } from "@mainsail/crypto-address-keccak256";
3-
import { schemas as validationSchemas } from "@mainsail/crypto-validation";
4-
import { Validator } from "@mainsail/validation";
3+
import { ServiceProvider as ValidationServiceProvider } from "@mainsail/validation";
54
import { Application } from "@mainsail/kernel";
65
import { describe } from "@mainsail/test-runner";
6+
import { Contracts } from "@mainsail/contracts";
77
import { schemas } from "../validation/index.js";
88
import { EthGetCodeAction } from "./index.js";
99

1010
describe<{
1111
app: Application;
1212
action: EthGetCodeAction;
13-
validator: Validator;
13+
validator: Contracts.Crypto.Validator;
1414
evm: any;
1515
}>("EthGetCodeAction", ({ beforeEach, it, assert }) => {
1616
beforeEach(async (context) => {
@@ -19,10 +19,12 @@ describe<{
1919
};
2020

2121
context.app = new Application();
22+
23+
await context.app.resolve(ValidationServiceProvider).register();
2224
context.app.bind(Identifiers.Evm.Instance).toConstantValue(context.evm);
2325

2426
context.action = context.app.resolve(EthGetCodeAction);
25-
context.validator = context.app.resolve(Validator);
27+
context.validator = context.app.get<Contracts.Crypto.Validator>(Identifiers.Cryptography.Validator);
2628
});
2729

2830
it("should have a name", ({ action }) => {
@@ -31,7 +33,6 @@ describe<{
3133

3234
it("schema should be ok", ({ action, validator }) => {
3335
validator.addSchema(keccak256Schemas.address);
34-
validator.addSchema(validationSchemas.prefixedQuantityHex);
3536
validator.addSchema(schemas.blockTag);
3637
validator.addSchema(action.schema);
3738

packages/api-evm/source/actions/eth-get-storage-at.test.ts

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,28 +1,30 @@
11
import { Identifiers } from "@mainsail/constants";
22
import { schemas as keccak256Schemas } from "@mainsail/crypto-address-keccak256";
3-
import { schemas as validationSchemas } from "@mainsail/crypto-validation";
4-
import { Validator } from "@mainsail/validation";
3+
import { ServiceProvider as ValidationServiceProvider } from "@mainsail/validation";
54
import { Application } from "@mainsail/kernel";
65
import { describe } from "@mainsail/test-runner";
6+
import { Contracts } from "@mainsail/contracts";
77
import { schemas } from "../validation/index.js";
88
import { EthGetStorageAtAction } from "./index.js";
99

1010
describe<{
1111
app: Application;
1212
action: EthGetStorageAtAction;
13-
validator: Validator;
13+
validator: Contracts.Crypto.Validator;
1414
evm: any;
15-
}>("EthGetCodeAction", ({ beforeEach, it, assert, spy }) => {
15+
}>("EthGetStorageAtAction", ({ beforeEach, it, assert, spy }) => {
1616
beforeEach(async (context) => {
1717
context.evm = {
1818
storageAt: () => "0x0",
1919
};
2020

2121
context.app = new Application();
22+
23+
await context.app.resolve(ValidationServiceProvider).register();
2224
context.app.bind(Identifiers.Evm.Instance).toConstantValue(context.evm);
2325

2426
context.action = context.app.resolve(EthGetStorageAtAction);
25-
context.validator = context.app.resolve(Validator);
27+
context.validator = context.app.get<Contracts.Crypto.Validator>(Identifiers.Cryptography.Validator);
2628
});
2729

2830
it("should have a name", ({ action }) => {
@@ -31,7 +33,6 @@ describe<{
3133

3234
it("schema should be ok", ({ action, validator }) => {
3335
validator.addSchema(keccak256Schemas.address);
34-
validator.addSchema(validationSchemas.prefixedQuantityHex);
3536
validator.addSchema(schemas.blockTag);
3637
validator.addSchema(action.schema);
3738

packages/api-evm/source/actions/eth-get-transaction-count.test.ts

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,16 @@
11
import { Identifiers } from "@mainsail/constants";
22
import { schemas as keccak256Schemas } from "@mainsail/crypto-address-keccak256";
3-
import { schemas as validationSchemas } from "@mainsail/crypto-validation";
4-
import { Validator } from "@mainsail/validation";
3+
import { ServiceProvider as ValidationServiceProvider } from "@mainsail/validation";
54
import { Application } from "@mainsail/kernel";
65
import { describe } from "@mainsail/test-runner";
6+
import { Contracts } from "@mainsail/contracts";
77
import { schemas } from "../validation/index.js";
88
import { EthGetTransactionCount } from "./index.js";
99

1010
describe<{
1111
app: Application;
1212
action: EthGetTransactionCount;
13-
validator: Validator;
13+
validator: Contracts.Crypto.Validator;
1414
evm: any;
1515
}>("EthGetTransactionCount", ({ beforeEach, it, assert }) => {
1616
const balance = BigInt(0);
@@ -25,10 +25,11 @@ describe<{
2525
};
2626

2727
context.app = new Application();
28+
await context.app.resolve(ValidationServiceProvider).register();
2829
context.app.bind(Identifiers.Evm.Instance).toConstantValue(context.evm);
2930

3031
context.action = context.app.resolve(EthGetTransactionCount);
31-
context.validator = context.app.resolve(Validator);
32+
context.validator = context.app.get<Contracts.Crypto.Validator>(Identifiers.Cryptography.Validator);
3233
});
3334

3435
it("should have a name", ({ action }) => {
@@ -37,7 +38,6 @@ describe<{
3738

3839
it("schema should be array with 0 parameters", ({ action, validator }) => {
3940
validator.addSchema(keccak256Schemas.address);
40-
validator.addSchema(validationSchemas.prefixedQuantityHex);
4141
validator.addSchema(schemas.blockTag);
4242
validator.addSchema(action.schema);
4343

packages/api-evm/source/actions/web3-sha3.test.ts

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,32 +1,31 @@
11
import { Identifiers } from "@mainsail/constants";
2-
import { Validator } from "@mainsail/validation";
3-
import { schemas as cryptoValidationSchemas } from "@mainsail/crypto-validation";
2+
import { ServiceProvider as ValidationServiceProvider } from "@mainsail/validation";
43
import { Application } from "@mainsail/kernel";
54
import { describe } from "@mainsail/test-runner";
5+
import { Contracts } from "@mainsail/contracts";
66
import { Web3Sha3 } from "./index.js";
77

88
describe<{
99
app: Application;
1010
action: Web3Sha3;
11-
validator: Validator;
11+
validator: Contracts.Crypto.Validator;
1212
}>("Web3Sha3", ({ beforeEach, it, assert }) => {
1313
const version = "0.0.1";
1414

1515
beforeEach(async (context) => {
1616
context.app = new Application();
17+
await context.app.resolve(ValidationServiceProvider).register();
1718
context.app.bind(Identifiers.Application.Version).toConstantValue(version);
1819

1920
context.action = context.app.resolve(Web3Sha3);
20-
context.validator = context.app.resolve(Validator);
21+
context.validator = context.app.get<Contracts.Crypto.Validator>(Identifiers.Cryptography.Validator);
2122
});
2223

2324
it("should have a name", ({ action }) => {
2425
assert.equal(action.name, "web3_sha3");
2526
});
2627

2728
it("schema should be ok", ({ action, validator }) => {
28-
validator.addSchema(cryptoValidationSchemas.prefixedQuantityHex);
29-
3029
assert.equal(action.schema, {
3130
$id: `jsonRpc_web3_sha3`,
3231
maxItems: 1,

packages/api-http/source/controllers/node.ts

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -86,7 +86,6 @@ export class NodeController extends Controller {
8686
explorer: network.client.explorer,
8787
nethash: network.nethash,
8888
ports: this.buildPortMapping(plugins),
89-
slip44: network.slip44,
9089
symbol: network.client.symbol,
9190
token: network.client.token,
9291
version: network.pubKeyHash,

0 commit comments

Comments
 (0)