diff --git a/package-lock.json b/package-lock.json index 17f68103b9..0a4041cd97 100644 --- a/package-lock.json +++ b/package-lock.json @@ -12891,6 +12891,11 @@ "queue-microtask": "^1.2.2" } }, + "node_modules/rust-verkle-wasm": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/rust-verkle-wasm/-/rust-verkle-wasm-0.0.1.tgz", + "integrity": "sha512-BN6fiTsxcd2dCECz/cHtGTt9cdLJR925nh7iAuRcj8ymKw7OOaPmCneQZ7JePOJ/ia27TjEL91VdOi88Yf+mcA==" + }, "node_modules/rustbn-wasm": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/rustbn-wasm/-/rustbn-wasm-0.2.0.tgz", @@ -16170,7 +16175,8 @@ "dependencies": { "@ethereumjs/rlp": "5.0.1", "@ethereumjs/util": "9.0.1", - "lru-cache": "^10.0.0" + "lru-cache": "^10.0.0", + "rust-verkle-wasm": "^0.0.1" }, "engines": { "node": ">=18" diff --git a/packages/verkle/package.json b/packages/verkle/package.json index 174ec1ec10..b3d11540e3 100644 --- a/packages/verkle/package.json +++ b/packages/verkle/package.json @@ -52,7 +52,8 @@ "dependencies": { "@ethereumjs/rlp": "5.0.1", "@ethereumjs/util": "9.0.1", - "lru-cache": "^10.0.0" + "lru-cache": "^10.0.0", + "rust-verkle-wasm": "^0.0.1" }, "engines": { "node": ">=18" diff --git a/packages/verkle/src/index.ts b/packages/verkle/src/index.ts index 1965d0f02f..b963c25fe8 100644 --- a/packages/verkle/src/index.ts +++ b/packages/verkle/src/index.ts @@ -1,2 +1,5 @@ +export * from './db/index.js' +export * from './node/index.js' export * from './types.js' +export * from './util/index.js' export * from './verkleTrie.js' diff --git a/packages/verkle/src/node/index.ts b/packages/verkle/src/node/index.ts index c786638cde..1eef1f4817 100644 --- a/packages/verkle/src/node/index.ts +++ b/packages/verkle/src/node/index.ts @@ -2,3 +2,4 @@ export * from './baseVerkleNode.js' export * from './internalNode.js' export * from './leafNode.js' export * from './types.js' +export * from './util.js' diff --git a/packages/verkle/src/rust-verkle-wasm/LICENSE_APACHE b/packages/verkle/src/rust-verkle-wasm/LICENSE_APACHE deleted file mode 100644 index 1b5ec8b78e..0000000000 --- a/packages/verkle/src/rust-verkle-wasm/LICENSE_APACHE +++ /dev/null @@ -1,176 +0,0 @@ - Apache License - Version 2.0, January 2004 - http://www.apache.org/licenses/ - -TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - -1. Definitions. - - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. - - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. - - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. - - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. - - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but - not limited to compiled object code, generated documentation, - and conversions to other media types. - - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work - (an example is provided in the Appendix below). - - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. - - "Contribution" shall mean any work of authorship, including - the original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." - - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - -2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. - -3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. - -4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: - - (a) You must give any other recipients of the Work or - Derivative Works a copy of this License; and - - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works, in at least one - of the following places: within a NOTICE text file distributed - as part of the Derivative Works; within the Source form or - documentation, if provided along with the Derivative Works; or, - within a display generated by the Derivative Works, if and - wherever such third-party notices normally appear. The contents - of the NOTICE file are for informational purposes only and - do not modify the License. You may add Your own attribution - notices within Derivative Works that You distribute, alongside - or as an addendum to the NOTICE text from the Work, provided - that such additional attribution notices cannot be construed - as modifying the License. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. - -5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - -6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. - -7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - -8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - -9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. - -END OF TERMS AND CONDITIONS diff --git a/packages/verkle/src/rust-verkle-wasm/LICENSE_MIT b/packages/verkle/src/rust-verkle-wasm/LICENSE_MIT deleted file mode 100644 index f436a5ae91..0000000000 --- a/packages/verkle/src/rust-verkle-wasm/LICENSE_MIT +++ /dev/null @@ -1,25 +0,0 @@ -Copyright (c) 2018 Kevaundray Wedderburn - -Permission is hereby granted, free of charge, to any -person obtaining a copy of this software and associated -documentation files (the "Software"), to deal in the -Software without restriction, including without -limitation the rights to use, copy, modify, merge, -publish, distribute, sublicense, and/or sell copies of -the Software, and to permit persons to whom the Software -is furnished to do so, subject to the following -conditions: - -The above copyright notice and this permission notice -shall be included in all copies or substantial portions -of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF -ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED -TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A -PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT -SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY -CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION -OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR -IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER -DEALINGS IN THE SOFTWARE. diff --git a/packages/verkle/src/rust-verkle-wasm/rust_verkle_wasm.d.ts b/packages/verkle/src/rust-verkle-wasm/rust_verkle_wasm.d.ts deleted file mode 100644 index 956249d273..0000000000 --- a/packages/verkle/src/rust-verkle-wasm/rust_verkle_wasm.d.ts +++ /dev/null @@ -1,18 +0,0 @@ -/* tslint:disable */ -/* eslint-disable */ -/** - * @param {Uint8Array} address_tree_index - * @returns {any} - */ -export function pedersen_hash(address_tree_index: Uint8Array): any -/** - * @param {Uint8Array} js_root - * @param {Uint8Array} js_proof - * @param {Map} js_key_values - * @returns {any} - */ -export function verify_update( - js_root: Uint8Array, - js_proof: Uint8Array, - js_key_values: Map -): any diff --git a/packages/verkle/src/rust-verkle-wasm/rust_verkle_wasm.js b/packages/verkle/src/rust-verkle-wasm/rust_verkle_wasm.js deleted file mode 100644 index 75d2edf53f..0000000000 --- a/packages/verkle/src/rust-verkle-wasm/rust_verkle_wasm.js +++ /dev/null @@ -1,340 +0,0 @@ -let imports = {} -imports['__wbindgen_placeholder__'] = module.exports -let wasm -const { TextEncoder, TextDecoder } = require(`util`) - -const heap = new Array(32).fill(undefined) - -heap.push(undefined, null, true, false) - -function getObject(idx) { - return heap[idx] -} - -let heap_next = heap.length - -function dropObject(idx) { - if (idx < 36) return - heap[idx] = heap_next - heap_next = idx -} - -function takeObject(idx) { - const ret = getObject(idx) - dropObject(idx) - return ret -} - -function debugString(val) { - // primitive types - const type = typeof val - if (type == 'number' || type == 'boolean' || val == null) { - return `${val}` - } - if (type == 'string') { - return `"${val}"` - } - if (type == 'symbol') { - const description = val.description - if (description == null) { - return 'Symbol' - } else { - return `Symbol(${description})` - } - } - if (type == 'function') { - const name = val.name - if (typeof name == 'string' && name.length > 0) { - return `Function(${name})` - } else { - return 'Function' - } - } - // objects - if (Array.isArray(val)) { - const length = val.length - let debug = '[' - if (length > 0) { - debug += debugString(val[0]) - } - for (let i = 1; i < length; i++) { - debug += ', ' + debugString(val[i]) - } - debug += ']' - return debug - } - // Test for built-in - const builtInMatches = /\[object ([^\]]+)\]/.exec(toString.call(val)) - let className - if (builtInMatches.length > 1) { - className = builtInMatches[1] - } else { - // Failed to match the standard '[object ClassName]' - return toString.call(val) - } - if (className == 'Object') { - // we're a user defined class or Object - // JSON.stringify avoids problems with cycles, and is generally much - // easier than looping through ownProperties of `val`. - try { - return 'Object(' + JSON.stringify(val) + ')' - } catch (_) { - return 'Object' - } - } - // errors - if (val instanceof Error) { - return `${val.name}: ${val.message}\n${val.stack}` - } - // TODO we could test for more things here, like `Set`s and `Map`s. - return className -} - -let WASM_VECTOR_LEN = 0 - -let cachedUint8Memory0 = new Uint8Array() - -function getUint8Memory0() { - if (cachedUint8Memory0.byteLength === 0) { - cachedUint8Memory0 = new Uint8Array(wasm.memory.buffer) - } - return cachedUint8Memory0 -} - -let cachedTextEncoder = new TextEncoder('utf-8') - -const encodeString = - typeof cachedTextEncoder.encodeInto === 'function' - ? function (arg, view) { - return cachedTextEncoder.encodeInto(arg, view) - } - : function (arg, view) { - const buf = cachedTextEncoder.encode(arg) - view.set(buf) - return { - read: arg.length, - written: buf.length, - } - } - -function passStringToWasm0(arg, malloc, realloc) { - if (realloc === undefined) { - const buf = cachedTextEncoder.encode(arg) - const ptr = malloc(buf.length) - getUint8Memory0() - .subarray(ptr, ptr + buf.length) - .set(buf) - WASM_VECTOR_LEN = buf.length - return ptr - } - - let len = arg.length - let ptr = malloc(len) - - const mem = getUint8Memory0() - - let offset = 0 - - for (; offset < len; offset++) { - const code = arg.charCodeAt(offset) - if (code > 0x7f) break - mem[ptr + offset] = code - } - - if (offset !== len) { - if (offset !== 0) { - arg = arg.slice(offset) - } - ptr = realloc(ptr, len, (len = offset + arg.length * 3)) - const view = getUint8Memory0().subarray(ptr + offset, ptr + len) - const ret = encodeString(arg, view) - - offset += ret.written - } - - WASM_VECTOR_LEN = offset - return ptr -} - -let cachedInt32Memory0 = new Int32Array() - -function getInt32Memory0() { - if (cachedInt32Memory0.byteLength === 0) { - cachedInt32Memory0 = new Int32Array(wasm.memory.buffer) - } - return cachedInt32Memory0 -} - -let cachedTextDecoder = new TextDecoder('utf-8', { ignoreBOM: true, fatal: true }) - -cachedTextDecoder.decode() - -function getStringFromWasm0(ptr, len) { - return cachedTextDecoder.decode(getUint8Memory0().subarray(ptr, ptr + len)) -} - -function addHeapObject(obj) { - if (heap_next === heap.length) heap.push(heap.length + 1) - const idx = heap_next - heap_next = heap[idx] - - heap[idx] = obj - return idx -} -/** - * @param {Uint8Array} address_tree_index - * @returns {any} - */ -module.exports.pedersen_hash = function (address_tree_index) { - const ret = wasm.pedersen_hash(addHeapObject(address_tree_index)) - return takeObject(ret) -} - -let stack_pointer = 32 - -function addBorrowedObject(obj) { - if (stack_pointer == 1) throw new Error('out of js stack') - heap[--stack_pointer] = obj - return stack_pointer -} -/** - * @param {Uint8Array} js_root - * @param {Uint8Array} js_proof - * @param {Map} js_key_values - * @returns {any} - */ -module.exports.verify_update = function (js_root, js_proof, js_key_values) { - try { - const ret = wasm.verify_update( - addHeapObject(js_root), - addHeapObject(js_proof), - addBorrowedObject(js_key_values) - ) - return takeObject(ret) - } finally { - heap[stack_pointer++] = undefined - } -} - -function handleError(f, args) { - try { - return f.apply(this, args) - } catch (e) { - wasm.__wbindgen_exn_store(addHeapObject(e)) - } -} - -module.exports.__wbindgen_object_drop_ref = function (arg0) { - takeObject(arg0) -} - -module.exports.__wbg_log_035529d7f1f4615f = function (arg0, arg1) { - console.log(getStringFromWasm0(arg0, arg1)) -} - -module.exports.__wbindgen_is_null = function (arg0) { - const ret = getObject(arg0) === null - return ret -} - -module.exports.__wbg_new_abda76e883ba8a5f = function () { - const ret = new Error() - return addHeapObject(ret) -} - -module.exports.__wbg_stack_658279fe44541cf6 = function (arg0, arg1) { - const ret = getObject(arg1).stack - const ptr0 = passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc) - const len0 = WASM_VECTOR_LEN - getInt32Memory0()[arg0 / 4 + 1] = len0 - getInt32Memory0()[arg0 / 4 + 0] = ptr0 -} - -module.exports.__wbg_error_f851667af71bcfc6 = function (arg0, arg1) { - try { - console.error(getStringFromWasm0(arg0, arg1)) - } finally { - wasm.__wbindgen_free(arg0, arg1) - } -} - -module.exports.__wbg_get_57245cc7d7c7619d = function (arg0, arg1) { - const ret = getObject(arg0)[arg1 >>> 0] - return addHeapObject(ret) -} - -module.exports.__wbg_next_aaef7c8aa5e212ac = function () { - return handleError(function (arg0) { - const ret = getObject(arg0).next() - return addHeapObject(ret) - }, arguments) -} - -module.exports.__wbg_done_1b73b0672e15f234 = function (arg0) { - const ret = getObject(arg0).done - return ret -} - -module.exports.__wbg_value_1ccc36bc03462d71 = function (arg0) { - const ret = getObject(arg0).value - return addHeapObject(ret) -} - -module.exports.__wbg_from_7ce3cb27cb258569 = function (arg0) { - const ret = Array.from(getObject(arg0)) - return addHeapObject(ret) -} - -module.exports.__wbg_entries_ff7071308de9aaec = function (arg0) { - const ret = getObject(arg0).entries() - return addHeapObject(ret) -} - -module.exports.__wbg_buffer_3f3d764d4747d564 = function (arg0) { - const ret = getObject(arg0).buffer - return addHeapObject(ret) -} - -module.exports.__wbg_newwithbyteoffsetandlength_d9aa266703cb98be = function (arg0, arg1, arg2) { - const ret = new Uint8Array(getObject(arg0), arg1 >>> 0, arg2 >>> 0) - return addHeapObject(ret) -} - -module.exports.__wbg_new_8c3f0052272a457a = function (arg0) { - const ret = new Uint8Array(getObject(arg0)) - return addHeapObject(ret) -} - -module.exports.__wbg_set_83db9690f9353e79 = function (arg0, arg1, arg2) { - getObject(arg0).set(getObject(arg1), arg2 >>> 0) -} - -module.exports.__wbg_length_9e1ae1900cb0fbd5 = function (arg0) { - const ret = getObject(arg0).length - return ret -} - -module.exports.__wbindgen_debug_string = function (arg0, arg1) { - const ret = debugString(getObject(arg1)) - const ptr0 = passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc) - const len0 = WASM_VECTOR_LEN - getInt32Memory0()[arg0 / 4 + 1] = len0 - getInt32Memory0()[arg0 / 4 + 0] = ptr0 -} - -module.exports.__wbindgen_throw = function (arg0, arg1) { - throw new Error(getStringFromWasm0(arg0, arg1)) -} - -module.exports.__wbindgen_memory = function () { - const ret = wasm.memory - return addHeapObject(ret) -} - -const path = require('path').join(__dirname, 'rust_verkle_wasm_bg.wasm') -const bytes = require('fs').readFileSync(path) - -const wasmModule = new WebAssembly.Module(bytes) -const wasmInstance = new WebAssembly.Instance(wasmModule, imports) -wasm = wasmInstance.exports -module.exports.__wasm = wasm diff --git a/packages/verkle/src/rust-verkle-wasm/rust_verkle_wasm_bg.wasm b/packages/verkle/src/rust-verkle-wasm/rust_verkle_wasm_bg.wasm deleted file mode 100644 index a5d4fd9830..0000000000 Binary files a/packages/verkle/src/rust-verkle-wasm/rust_verkle_wasm_bg.wasm and /dev/null differ diff --git a/packages/verkle/src/rust-verkle-wasm/rust_verkle_wasm_bg.wasm.d.ts b/packages/verkle/src/rust-verkle-wasm/rust_verkle_wasm_bg.wasm.d.ts deleted file mode 100644 index 2276a26083..0000000000 --- a/packages/verkle/src/rust-verkle-wasm/rust_verkle_wasm_bg.wasm.d.ts +++ /dev/null @@ -1,9 +0,0 @@ -/* tslint:disable */ -/* eslint-disable */ -export const memory: WebAssembly.Memory -export function pedersen_hash(a: number): number -export function verify_update(a: number, b: number, c: number): number -export function __wbindgen_malloc(a: number): number -export function __wbindgen_realloc(a: number, b: number, c: number): number -export function __wbindgen_free(a: number, b: number): void -export function __wbindgen_exn_store(a: number): void diff --git a/packages/verkle/src/util/crypto.ts b/packages/verkle/src/util/crypto.ts index 8143765b7b..e5907fa21a 100644 --- a/packages/verkle/src/util/crypto.ts +++ b/packages/verkle/src/util/crypto.ts @@ -1,11 +1,10 @@ import { type Address, concatBytes, int32ToBytes, setLengthLeft, toBytes } from '@ethereumjs/util' +import { pedersen_hash, verify_update } from 'rust-verkle-wasm' -import * as rustVerkleWasm from '../rust-verkle-wasm/rust_verkle_wasm.js' - -import type { Point } from '../types.js' +import type { Point } from '../types' export function pedersenHash(input: Uint8Array): Uint8Array { - const pedersenHash = rustVerkleWasm.pedersen_hash(input) + const pedersenHash = pedersen_hash(input) if (pedersenHash === null) { throw new Error( @@ -36,5 +35,13 @@ export function getTreeKey(address: Address, treeIndex: number, subIndex: number return treeKey } +export function verifyUpdate( + root: Uint8Array, + proof: Uint8Array, + keyValues: Map +): Uint8Array { + return verify_update(root, proof, keyValues) +} + // TODO: Replace this by the actual value of Point().Identity() from the Go code. export const POINT_IDENTITY = new Uint8Array(32).fill(0) as unknown as Point diff --git a/packages/verkle/tsconfig.json b/packages/verkle/tsconfig.json index a940ba5460..03ee66c13b 100644 --- a/packages/verkle/tsconfig.json +++ b/packages/verkle/tsconfig.json @@ -3,5 +3,5 @@ "compilerOptions": { "outDir": "./dist" }, - "include": ["src/**/*.ts", "src/rust-verkle-wasm/rust_verkle_wasm.js", "test/**/*.spec.ts"] + "include": ["src/**/*.ts", "test/**/*.spec.ts"] }