From 67149afd5b29cab3ee58dcd36f4b4d6539dabdff Mon Sep 17 00:00:00 2001 From: Igor Artamonov Date: Wed, 24 Apr 2024 13:58:56 +0100 Subject: [PATCH] problem: incompatible with new sepolia testnet --- packages/core/package.json | 3 +- packages/core/src/types.ts | 6 +- packages/native/native/Cargo.lock | 2 +- packages/native/package.json | 8 +- .../sign_ethereum.test.ts | 26 +-- packages/native/src/__tests__/entries.test.ts | 4 +- packages/native/src/__tests__/signTx.test.ts | 40 +++++ yarn.lock | 154 ++++++++---------- 8 files changed, 132 insertions(+), 111 deletions(-) diff --git a/packages/core/package.json b/packages/core/package.json index f213f8f..3088be4 100644 --- a/packages/core/package.json +++ b/packages/core/package.json @@ -25,10 +25,11 @@ }, "devDependencies": { "@types/jest": "24.0.13", + "@types/node": "^20.12.7", "jest": "24.8.0", "jest-serial-runner": "1.1.0", "rimraf": "^2.6.3", "ts-jest": "24.0.2", - "typescript": "^3.9.10" + "typescript": "^4.9.5" } } diff --git a/packages/core/src/types.ts b/packages/core/src/types.ts index 9111401..e812917 100644 --- a/packages/core/src/types.ts +++ b/packages/core/src/types.ts @@ -31,6 +31,7 @@ export enum BlockchainId { KOVAN_TESTNET = 10002, BITCOIN_TESTNET = 10003, GOERLI_TESTNET = 10005, + SEPOLIA_TESTNET = 10009, } export const DEFAULT_BITCOIN_SEQ = 0xfffffffe; @@ -39,7 +40,7 @@ export function getBlockchainType(id: BlockchainId): BlockchainType { if (id == BlockchainId.BITCOIN || id == BlockchainId.BITCOIN_TESTNET) { return "bitcoin"; } - if (id == BlockchainId.ETHEREUM || id == BlockchainId.ETHEREUM_CLASSIC || id == BlockchainId.KOVAN_TESTNET || id == BlockchainId.GOERLI_TESTNET) { + if (id == BlockchainId.ETHEREUM || id == BlockchainId.ETHEREUM_CLASSIC || id == BlockchainId.KOVAN_TESTNET || id == BlockchainId.GOERLI_TESTNET || id == BlockchainId.SEPOLIA_TESTNET) { return "ethereum"; } throw new Error("Unsupported id: " + id); @@ -48,7 +49,8 @@ export function getBlockchainType(id: BlockchainId): BlockchainType { export function isBlockchainId(id: number): id is BlockchainId { return id === BlockchainId.BITCOIN || id === BlockchainId.BITCOIN_TESTNET || id === BlockchainId.ETHEREUM || id === BlockchainId.ETHEREUM_CLASSIC - || id === BlockchainId.KOVAN_TESTNET || id === BlockchainId.GOERLI_TESTNET; + || id === BlockchainId.KOVAN_TESTNET || id === BlockchainId.GOERLI_TESTNET || id === BlockchainId.SEPOLIA_TESTNET + ; } /** diff --git a/packages/native/native/Cargo.lock b/packages/native/native/Cargo.lock index 435d6e0..beda55d 100644 --- a/packages/native/native/Cargo.lock +++ b/packages/native/native/Cargo.lock @@ -488,7 +488,7 @@ dependencies = [ [[package]] name = "emerald-vault" version = "0.34.0-dev" -source = "git+https://github.com/emeraldpay/emerald-vault?branch=master#83a178ca19bb1a9a42c655879f7965df4f698b07" +source = "git+https://github.com/emeraldpay/emerald-vault?branch=master#f3eb9de91984cd2750cc0fbb945fe143271fd2db" dependencies = [ "aes", "argon2", diff --git a/packages/native/package.json b/packages/native/package.json index d00e3af..b4c5181 100644 --- a/packages/native/package.json +++ b/packages/native/package.json @@ -66,7 +66,7 @@ "@jest-runner/electron": "^2.0.3", "@mapbox/node-pre-gyp": "^1.0.8", "@types/jest": "24.0.13", - "@types/node": "^16.0.0", + "@types/node": "^20.12.7", "bitcoinjs-lib": "^5.2.0", "cross-env": "6.0.3", "crypto-js": "^4.0.0", @@ -80,9 +80,9 @@ "node-gyp": "8.4.1", "rimraf": "^2.6.3", "ts-jest": "24.0.2", - "typescript": "^3.9.10", + "typescript": "^4.9.5", "unzipper": "0.10.5", - "@ethereumjs/common": "^3.2.0", - "@ethereumjs/tx": "^4.2.0" + "@ethereumjs/common": "^4.3.0", + "@ethereumjs/tx": "^5.3.0" } } diff --git a/packages/native/src/__integration-tests__/sign_ethereum.test.ts b/packages/native/src/__integration-tests__/sign_ethereum.test.ts index 7d80d6d..151d8fe 100644 --- a/packages/native/src/__integration-tests__/sign_ethereum.test.ts +++ b/packages/native/src/__integration-tests__/sign_ethereum.test.ts @@ -72,16 +72,16 @@ describe('Sign different tx combinations (slow to execute)', () => { function testAll(entryId: EntryId, chainId: number): Promise { let chainConfig = {}; if (chainId !== 1) { - chainConfig = {common: Common.custom({ chainId }, { baseChain: 1, hardfork: Hardfork.Byzantium })}; + chainConfig = {common: Common.custom({ chainId }, { baseChain: 1, hardfork: Hardfork.Shanghai })}; } else { chainConfig = {common: new Common({ hardfork: Hardfork.Shanghai, chain: chainId })}; } let result = []; - ["0", "1", "255", "256", "1000000000000000000", "12345600000000000000"].forEach((value) => { + ["0", "1", "255", "256", "1000000000000000000"].forEach((value) => { [0x5208, 0x1fbd0, 0x1, 0xb7, 0x100].forEach((gas) => { ["2000000000", "1", "0", "128"].forEach((gasPrice) => { - [0x0, 0x1, 0x1f, 0xff, 0x38ae].forEach((nonce) => { + [0x0, 0x1, 0xff, 0x38ae].forEach((nonce) => { ["", "d0e30db0", "095ea7b300000000000000000000000036a8ce9b0b86361a02070e4303d5e24d6c63b3f10000000000000000000000000000000000000000033b2e3c9fd0803ce8000000"].forEach((data) => { ["0x3eaf0b987b49c4d782ee134fdc1243fd0ccdfdd3"].forEach(async (to) => { let tx = { @@ -107,14 +107,14 @@ describe('Sign different tx combinations (slow to execute)', () => { console.error(e); } expect(parsed).toBeDefined(); - expect(convertHex(parsed.hash())).toBe(raw.txid); + expect(convertHex(Buffer.from(parsed.hash()))).toBe(raw.txid); expect(parsed.getSenderAddress().toString()).toBe("0x36a8ce9b0b86361a02070e4303d5e24d6c63b3f1"); expect(parsed.to.toString()).toBe(to); expect(parsed.value.toString()).toBe(value); expect(parsed.gasLimit.toString()).toBe(gas.toString()); // expect(hexQuantity(convertHex(parsed.gasPrice))).toBe(gasPrice); expect(parsed.nonce.toString()).toBe(nonce.toString()); - expect(parsed.data.toString('hex')).toBe(data); + expect(Buffer.from(parsed.data).toString("hex")).toBe(data); expect(parseInt(parsed.v.toString())).toBeGreaterThanOrEqual(chainId * 2 + 35); expect(parseInt(parsed.v.toString())).toBeLessThanOrEqual(chainId * 2 + 36); }) @@ -152,18 +152,6 @@ describe('Sign different tx combinations (slow to execute)', () => { await testAll(entryId, 61); }); - test("Kovan", async () => { - let walletId = await vault.addWallet("slow sign Kovan"); - let entryId = await vault.addEntry(walletId, { - blockchain: 10002, - type: "ethereum-json", - key: JSON.stringify(pk), - jsonPassword: "123456", - password: "global-password" - }); - await testAll(entryId, 42); - }) - }); describe('Sign different key combinations (slow to execute)', () => { @@ -216,11 +204,11 @@ describe('Sign different key combinations (slow to execute)', () => { let raw = await vault.signTx(entry.id, tx, "global-password"); expect(raw).toBeDefined(); - let parsed: Transaction; + let parsed; try { const bytes = Buffer.from(raw.raw.slice(2), 'hex'); let chainConfig = {common: new Common({ hardfork: Hardfork.Shanghai, chain: chainId })}; - parsed = TransactionFactory.fromSerializedData(bytes, chainConfig) as Transaction; + parsed = TransactionFactory.fromSerializedData(bytes, chainConfig); } catch (e) { console.error("Invalid signature", tx); console.error("Raw", raw); diff --git a/packages/native/src/__tests__/entries.test.ts b/packages/native/src/__tests__/entries.test.ts index 8405796..a10faf1 100644 --- a/packages/native/src/__tests__/entries.test.ts +++ b/packages/native/src/__tests__/entries.test.ts @@ -19,14 +19,14 @@ describe("Entries", () => { describe("Details", () => { let vault: EmeraldVaultNative; - beforeAll(async () => { + beforeEach(async () => { vault = new EmeraldVaultNative({ dir: tempPath("entry-details") }); vault.open(); await vault.createGlobalKey("test"); }); - afterAll(() => { + afterEach(() => { vault.close() }); diff --git a/packages/native/src/__tests__/signTx.test.ts b/packages/native/src/__tests__/signTx.test.ts index 067705b..af8e0bf 100644 --- a/packages/native/src/__tests__/signTx.test.ts +++ b/packages/native/src/__tests__/signTx.test.ts @@ -1,6 +1,8 @@ import {EmeraldVaultNative} from "../EmeraldVaultNative"; import {tempPath} from "./_commons"; import {BlockchainId, UnsignedBitcoinTx, WalletsOp} from "@emeraldpay/emerald-vault-core"; +import {TransactionFactory, TypedTransaction} from '@ethereumjs/tx'; +import {Common, Hardfork} from "@ethereumjs/common"; describe("Sign transaction", () => { @@ -211,6 +213,44 @@ describe("Sign transaction", () => { expect(raw.txid).toBe("0x7b0958868a76aee6803da842859c40e4594e762c8f26304d54e05cff60b1fac4"); }); + test("sign sepolia tx", async () => { + let walletId = await vault.addWallet("test"); + let seedId = await vault.importSeed({ + type: "mnemonic", + value: { + value: "fever misery evidence miss toddler fold scatter mail believe fire cabbage story verify tunnel echo" + }, + password: "test-global" + }); + let entryId = await vault.addEntry(walletId, { + blockchain: 10009, + type: "hd-path", + key: { + seed: {type: "id", value: seedId, password: "test-global"}, + hdPath: "m/44'/60'/0'/0/3", + } + }); + + let tx = { + from: "0xD4345AbBeEF14d2Fd2E0DEB898A67c26F1cbC4F1", + to: "0x3eaf0b987b49c4d782ee134fdc1243fd0ccdfdd3", + value: "0", + gas: 0x5208, + maxGasPrice: "2000000000", + priorityGasPrice: "100000", + nonce: 0x19 + }; + let raw = await vault.signTx(entryId, tx, "test-global"); + + let chainConfig = new Common({ chain: 'sepolia', hardfork: 'shanghai' }); + const bytes = Buffer.from(raw.raw.slice(2), 'hex'); + let parsed = TransactionFactory.fromSerializedData(bytes, {common: chainConfig}); + + expect(parsed.getSenderAddress().toString().toLowerCase()).toBe("0xD4345AbBeEF14d2Fd2E0DEB898A67c26F1cbC4F1".toLowerCase()); + expect(parsed.nonce.toString()).toBe("25"); + expect(parsed.to.toString().toLowerCase()).toBe("0x3eaf0b987b49c4d782ee134fdc1243fd0ccdfdd3".toLowerCase()); + }); + test("sign bitcoin tx", async () => { let walletId = await vault.addWallet("test sign 2"); let seedId = await vault.importSeed({ diff --git a/yarn.lock b/yarn.lock index d5edc3c..8a057f7 100644 --- a/yarn.lock +++ b/yarn.lock @@ -945,37 +945,35 @@ resolved "https://registry.yarnpkg.com/@emeraldpay/neon-frame/-/neon-frame-0.1.1.tgz#26ec8935d59f720da7b9aee48d3379330222ba10" integrity sha512-/oKiKNvyC3k9QJxH7OK8+1sI5sopq1yJeIRYgDG05zVIlN5ad2mP79gO8C6IINH8G4082HqZ+AgW7qIqYL+Z1Q== -"@ethereumjs/common@^3.2.0": - version "3.2.0" - resolved "https://registry.yarnpkg.com/@ethereumjs/common/-/common-3.2.0.tgz#b71df25845caf5456449163012074a55f048e0a0" - integrity sha512-pksvzI0VyLgmuEF2FA/JR/4/y6hcPq8OUail3/AvycBaW1d5VSauOZzqGvJ3RTmR4MU35lWE8KseKOsEhrFRBA== +"@ethereumjs/common@^4.3.0": + version "4.3.0" + resolved "https://registry.yarnpkg.com/@ethereumjs/common/-/common-4.3.0.tgz#5b45eec7dcf521fa4ddaf0b383072fbcf9913553" + integrity sha512-shBNJ0ewcPNTUfZduHiczPmqkfJDn0Dh/9BR5fq7xUFTuIq7Fu1Vx00XDwQVIrpVL70oycZocOhBM6nDO+4FEQ== dependencies: - "@ethereumjs/util" "^8.1.0" - crc-32 "^1.2.0" + "@ethereumjs/util" "^9.0.3" -"@ethereumjs/rlp@^4.0.1": - version "4.0.1" - resolved "https://registry.yarnpkg.com/@ethereumjs/rlp/-/rlp-4.0.1.tgz#626fabfd9081baab3d0a3074b0c7ecaf674aaa41" - integrity sha512-tqsQiBQDQdmPWE1xkkBq4rlSW5QZpLOUJ5RJh2/9fug+q9tnUhuZoVLk7s0scUIKTOzEtR72DFBXI4WiZcMpvw== +"@ethereumjs/rlp@^5.0.2": + version "5.0.2" + resolved "https://registry.yarnpkg.com/@ethereumjs/rlp/-/rlp-5.0.2.tgz#c89bd82f2f3bec248ab2d517ae25f5bbc4aac842" + integrity sha512-DziebCdg4JpGlEqEdGgXmjqcFoJi+JGulUXwEjsZGAscAQ7MyD/7LE/GVCP29vEQxKc7AAwjT3A2ywHp2xfoCA== -"@ethereumjs/tx@^4.2.0": - version "4.2.0" - resolved "https://registry.yarnpkg.com/@ethereumjs/tx/-/tx-4.2.0.tgz#5988ae15daf5a3b3c815493bc6b495e76009e853" - integrity sha512-1nc6VO4jtFd172BbSnTnDQVr9IYBFl1y4xPzZdtkrkKIncBCkdbgfdRV+MiTkJYAtTxvV12GRZLqBFT1PNK6Yw== +"@ethereumjs/tx@^5.3.0": + version "5.3.0" + resolved "https://registry.yarnpkg.com/@ethereumjs/tx/-/tx-5.3.0.tgz#473f351729ef4e30eaa3a3fb5aaccd4405a7ee41" + integrity sha512-uv++XYuIfuqYbvymL3/o14hHuC6zX0nRQ1nI2FHsbkkorLZ2ChEIDqVeeVk7Xc9/jQNU/22sk9qZZkRlsveXxw== dependencies: - "@ethereumjs/common" "^3.2.0" - "@ethereumjs/rlp" "^4.0.1" - "@ethereumjs/util" "^8.1.0" - ethereum-cryptography "^2.0.0" + "@ethereumjs/common" "^4.3.0" + "@ethereumjs/rlp" "^5.0.2" + "@ethereumjs/util" "^9.0.3" + ethereum-cryptography "^2.1.3" -"@ethereumjs/util@^8.1.0": - version "8.1.0" - resolved "https://registry.yarnpkg.com/@ethereumjs/util/-/util-8.1.0.tgz#299df97fb6b034e0577ce9f94c7d9d1004409ed4" - integrity sha512-zQ0IqbdX8FZ9aw11vP+dZkKDkS+kgIvQPHnSAXzP9pLu+Rfu3D3XEeLbicvoXJTYnhZiPmsZUxgdzXwNKxRPbA== +"@ethereumjs/util@^9.0.3": + version "9.0.3" + resolved "https://registry.yarnpkg.com/@ethereumjs/util/-/util-9.0.3.tgz#c2709e6127a85bbe23a71937ac78358ac93e7241" + integrity sha512-PmwzWDflky+7jlZIFqiGsBPap12tk9zK5SVH9YW2OEnDN7OEhCjUOMzbOqwuClrbkSIkM2ERivd7sXZ48Rh/vg== dependencies: - "@ethereumjs/rlp" "^4.0.1" - ethereum-cryptography "^2.0.0" - micro-ftch "^0.3.1" + "@ethereumjs/rlp" "^5.0.2" + ethereum-cryptography "^2.1.3" "@gar/promisify@^1.0.1": version "1.1.2" @@ -1180,22 +1178,17 @@ semver "^7.3.5" tar "^6.1.11" -"@noble/curves@1.1.0", "@noble/curves@~1.1.0": - version "1.1.0" - resolved "https://registry.yarnpkg.com/@noble/curves/-/curves-1.1.0.tgz#f13fc667c89184bc04cccb9b11e8e7bae27d8c3d" - integrity sha512-091oBExgENk/kGj3AZmtBDMpxQPDtxQABR2B9lb1JbVTs6ytdzZNwvhxQ4MWasRNEzlbEH8jCWFCwhF/Obj5AA== +"@noble/curves@1.3.0", "@noble/curves@~1.3.0": + version "1.3.0" + resolved "https://registry.yarnpkg.com/@noble/curves/-/curves-1.3.0.tgz#01be46da4fd195822dab821e72f71bf4aeec635e" + integrity sha512-t01iSXPuN+Eqzb4eBX0S5oubSqXbK/xXa1Ne18Hj8f9pStxztHCE2gfboSp/dZRLSqfuLpRK2nDXDK+W9puocA== dependencies: - "@noble/hashes" "1.3.1" - -"@noble/hashes@1.3.1": - version "1.3.1" - resolved "https://registry.yarnpkg.com/@noble/hashes/-/hashes-1.3.1.tgz#8831ef002114670c603c458ab8b11328406953a9" - integrity sha512-EbqwksQwz9xDRGfDST86whPBgM65E0OH/pCgqW0GBVzO22bNE+NuIbeTb714+IfSjU3aRk47EUvXIb5bTsenKA== + "@noble/hashes" "1.3.3" -"@noble/hashes@~1.3.0", "@noble/hashes@~1.3.1": - version "1.3.2" - resolved "https://registry.yarnpkg.com/@noble/hashes/-/hashes-1.3.2.tgz#6f26dbc8fbc7205873ce3cee2f690eba0d421b39" - integrity sha512-MVC8EAQp7MvEcm30KWENFjgR+Mkmf+D189XJTkFIlwohU5hcBbn1ZkKq7KVTi2Hme3PMGF390DaL52beVrIihQ== +"@noble/hashes@1.3.3", "@noble/hashes@~1.3.2": + version "1.3.3" + resolved "https://registry.yarnpkg.com/@noble/hashes/-/hashes-1.3.3.tgz#39908da56a4adc270147bb07968bf3b16cfe1699" + integrity sha512-V7/fPHgl+jsVPXqqeOzT8egNj2iBIVt+ECeMMG8TdcnTikP3oaBtUVqpT/gYCR68aEBJSF+XbYUxStjbFMqIIA== "@npmcli/fs@^1.0.0": version "1.1.0" @@ -1213,27 +1206,27 @@ mkdirp "^1.0.4" rimraf "^3.0.2" -"@scure/base@~1.1.0": - version "1.1.2" - resolved "https://registry.yarnpkg.com/@scure/base/-/base-1.1.2.tgz#ff0cf51874aaf176490c9cb46e4df807a2e581d2" - integrity sha512-sSCrnIdaUZQHhBxZThMuk7Wm1TWzMD3uJNdGgx3JS23xSqevu0tAOsg8k66nL3R2NwQe65AI9GgqpPOgZys/eA== +"@scure/base@~1.1.4": + version "1.1.6" + resolved "https://registry.yarnpkg.com/@scure/base/-/base-1.1.6.tgz#8ce5d304b436e4c84f896e0550c83e4d88cb917d" + integrity sha512-ok9AWwhcgYuGG3Zfhyqg+zwl+Wn5uE+dwC0NV/2qQkx4dABbb/bx96vWu8NSj+BNjjSjno+JRYRjle1jV08k3g== -"@scure/bip32@1.3.1": - version "1.3.1" - resolved "https://registry.yarnpkg.com/@scure/bip32/-/bip32-1.3.1.tgz#7248aea723667f98160f593d621c47e208ccbb10" - integrity sha512-osvveYtyzdEVbt3OfwwXFr4P2iVBL5u1Q3q4ONBfDY/UpOuXmOlbgwc1xECEboY8wIays8Yt6onaWMUdUbfl0A== +"@scure/bip32@1.3.3": + version "1.3.3" + resolved "https://registry.yarnpkg.com/@scure/bip32/-/bip32-1.3.3.tgz#a9624991dc8767087c57999a5d79488f48eae6c8" + integrity sha512-LJaN3HwRbfQK0X1xFSi0Q9amqOgzQnnDngIt+ZlsBC3Bm7/nE7K0kwshZHyaru79yIVRv/e1mQAjZyuZG6jOFQ== dependencies: - "@noble/curves" "~1.1.0" - "@noble/hashes" "~1.3.1" - "@scure/base" "~1.1.0" + "@noble/curves" "~1.3.0" + "@noble/hashes" "~1.3.2" + "@scure/base" "~1.1.4" -"@scure/bip39@1.2.1": - version "1.2.1" - resolved "https://registry.yarnpkg.com/@scure/bip39/-/bip39-1.2.1.tgz#5cee8978656b272a917b7871c981e0541ad6ac2a" - integrity sha512-Z3/Fsz1yr904dduJD0NpiyRHhRYHdcnyh73FZWiV+/qhWi83wNJ3NWolYqCEN+ZWsUz2TWwajJggcRE9r1zUYg== +"@scure/bip39@1.2.2": + version "1.2.2" + resolved "https://registry.yarnpkg.com/@scure/bip39/-/bip39-1.2.2.tgz#f3426813f4ced11a47489cbcf7294aa963966527" + integrity sha512-HYf9TUXG80beW+hGAt3TRM8wU6pQoYur9iNypTROm42dorCGmLnFe3eWjz3gOq6G62H2WRh0FCzAR1PI+29zIA== dependencies: - "@noble/hashes" "~1.3.0" - "@scure/base" "~1.1.0" + "@noble/hashes" "~1.3.2" + "@scure/base" "~1.1.4" "@sindresorhus/is@^0.14.0": version "0.14.0" @@ -1329,10 +1322,12 @@ resolved "https://registry.yarnpkg.com/@types/node/-/node-14.18.9.tgz#0e5944eefe2b287391279a19b407aa98bd14436d" integrity sha512-j11XSuRuAlft6vLDEX4RvhqC0KxNxx6QIyMXNb0vHHSNPXTPeiy3algESWmOOIzEtiEL0qiowPU3ewW9hHVa7Q== -"@types/node@^16.0.0": - version "16.11.21" - resolved "https://registry.yarnpkg.com/@types/node/-/node-16.11.21.tgz#474d7589a30afcf5291f59bd49cca9ad171ffde4" - integrity sha512-Pf8M1XD9i1ksZEcCP8vuSNwooJ/bZapNmIzpmsMaL+jMI+8mEYU3PKvs+xDNuQcJWF/x24WzY4qxLtB0zNow9A== +"@types/node@^20.12.7": + version "20.12.7" + resolved "https://registry.yarnpkg.com/@types/node/-/node-20.12.7.tgz#04080362fa3dd6c5822061aa3124f5c152cff384" + integrity sha512-wq0cICSkRLVaf3UGLMGItu/PtdY7oaXaI/RVU+xliKVOtRna3PRY57ZDfztpDL0n11vfymMUnXv8QwYCO7L1wg== + dependencies: + undici-types "~5.26.4" "@types/stack-utils@^1.0.1": version "1.0.1" @@ -2204,11 +2199,6 @@ core-util-is@1.0.2, core-util-is@~1.0.0: resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7" integrity sha1-tf1UIgqivFq1eqtxQMlAdUUDwac= -crc-32@^1.2.0: - version "1.2.2" - resolved "https://registry.yarnpkg.com/crc-32/-/crc-32-1.2.2.tgz#3cad35a934b8bf71f25ca524b6da51fb7eace2ff" - integrity sha512-ROmzCKrTnOwybPcJApAA6WBWij23HVfGVNKqqrZpuyZOHqK2CwHSvpGuyt/UNNvaIjEd8X5IFGp4Mh+Ie1IHJQ== - create-hash@^1.1.0, create-hash@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/create-hash/-/create-hash-1.2.0.tgz#889078af11a63756bcfb59bd221996be3a9ef196" @@ -2600,15 +2590,15 @@ esutils@^2.0.2: resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64" integrity sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g== -ethereum-cryptography@^2.0.0: - version "2.1.2" - resolved "https://registry.yarnpkg.com/ethereum-cryptography/-/ethereum-cryptography-2.1.2.tgz#18fa7108622e56481157a5cb7c01c0c6a672eb67" - integrity sha512-Z5Ba0T0ImZ8fqXrJbpHcbpAvIswRte2wGNR/KePnu8GbbvgJ47lMxT/ZZPG6i9Jaht4azPDop4HaM00J0J59ug== +ethereum-cryptography@^2.1.3: + version "2.1.3" + resolved "https://registry.yarnpkg.com/ethereum-cryptography/-/ethereum-cryptography-2.1.3.tgz#1352270ed3b339fe25af5ceeadcf1b9c8e30768a" + integrity sha512-BlwbIL7/P45W8FGW2r7LGuvoEZ+7PWsniMvQ4p5s2xCyw9tmaDlpfsN9HjAucbF+t/qpVHwZUisgfK24TCW8aA== dependencies: - "@noble/curves" "1.1.0" - "@noble/hashes" "1.3.1" - "@scure/bip32" "1.3.1" - "@scure/bip39" "1.2.1" + "@noble/curves" "1.3.0" + "@noble/hashes" "1.3.3" + "@scure/bip32" "1.3.3" + "@scure/bip39" "1.2.2" event-pubsub@4.3.0: version "4.3.0" @@ -4334,11 +4324,6 @@ merkle-lib@^2.0.10: resolved "https://registry.yarnpkg.com/merkle-lib/-/merkle-lib-2.0.10.tgz#82b8dbae75e27a7785388b73f9d7725d0f6f3326" integrity sha1-grjbrnXieneFOItz+ddyXQ9vMyY= -micro-ftch@^0.3.1: - version "0.3.1" - resolved "https://registry.yarnpkg.com/micro-ftch/-/micro-ftch-0.3.1.tgz#6cb83388de4c1f279a034fb0cf96dfc050853c5f" - integrity sha512-/0LLxhzP0tfiR5hcQebtudP56gUurs2CLkGarnCiB/OqEyUFQ6U3paQi/tgLv0hBJYt2rnr9MNpxz4fiiugstg== - micromatch@^3.1.10, micromatch@^3.1.4: version "3.1.10" resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-3.1.10.tgz#70859bc95c9840952f359a068a3fc49f9ecfac23" @@ -6118,10 +6103,10 @@ typeforce@^1.11.3, typeforce@^1.11.5: resolved "https://registry.yarnpkg.com/typeforce/-/typeforce-1.18.0.tgz#d7416a2c5845e085034d70fcc5b6cc4a90edbfdc" integrity sha512-7uc1O8h1M1g0rArakJdf0uLRSSgFcYexrVoKo+bzJd32gd4gDy2L/Z+8/FjPnU9ydY3pEnVPtr9FyscYY60K1g== -typescript@^3.9.10: - version "3.9.10" - resolved "https://registry.yarnpkg.com/typescript/-/typescript-3.9.10.tgz#70f3910ac7a51ed6bef79da7800690b19bf778b8" - integrity sha512-w6fIxVE/H1PkLKcCPsFqKE7Kv7QUwhU8qQY2MueZXWx5cPZdwFupLgKK3vntcK98BtNHZtAF4LA/yl2a7k8R6Q== +typescript@^4.9.5: + version "4.9.5" + resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.9.5.tgz#095979f9bcc0d09da324d58d03ce8f8374cbe65a" + integrity sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g== typical@^4.0.0: version "4.0.0" @@ -6141,6 +6126,11 @@ uglify-js@^3.1.4: commander "~2.20.3" source-map "~0.6.1" +undici-types@~5.26.4: + version "5.26.5" + resolved "https://registry.yarnpkg.com/undici-types/-/undici-types-5.26.5.tgz#bcd539893d00b56e964fd2657a4866b221a65617" + integrity sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA== + unicode-canonical-property-names-ecmascript@^1.0.4: version "1.0.4" resolved "https://registry.yarnpkg.com/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-1.0.4.tgz#2619800c4c825800efdd8343af7dd9933cbe2818"