mirror of
https://github.com/ChainSafe/lodestar.git
synced 2026-01-09 15:48:08 -05:00
refactor: remove cpu features direct dependency (#8261)
**Motivation**
Make the code transition for compatibility with the Bun.
**Description**
- The dependency `cpu-features` is not compatible with the `Bun`
- Removed the direct dependency
- Upgrade the `@chainsafe/persistent-merkle-tree` and `@chainsafe/ssz`
so the hasher detection is done implicitly.
- Latest commit for
[hahstree](e86a8b136a)
has the support for fallback, which is not used in the
`@chainsafe/persistent-merkle-tree`
**Steps to test or reproduce**
Run all tests
This commit is contained in:
@@ -70,8 +70,8 @@
|
||||
"check-readme": "typescript-docs-verifier"
|
||||
},
|
||||
"dependencies": {
|
||||
"@chainsafe/persistent-merkle-tree": "^1.2.0",
|
||||
"@chainsafe/ssz": "^1.2.1",
|
||||
"@chainsafe/persistent-merkle-tree": "^1.2.1",
|
||||
"@chainsafe/ssz": "^1.2.2",
|
||||
"@lodestar/config": "^1.33.0",
|
||||
"@lodestar/params": "^1.33.0",
|
||||
"@lodestar/types": "^1.33.0",
|
||||
|
||||
@@ -98,10 +98,10 @@
|
||||
"@chainsafe/enr": "^5.0.1",
|
||||
"@chainsafe/libp2p-gossipsub": "^14.1.1",
|
||||
"@chainsafe/libp2p-noise": "^16.1.0",
|
||||
"@chainsafe/persistent-merkle-tree": "^1.2.0",
|
||||
"@chainsafe/persistent-merkle-tree": "^1.2.1",
|
||||
"@chainsafe/prometheus-gc-stats": "^1.0.0",
|
||||
"@chainsafe/pubkey-index-map": "^3.0.0",
|
||||
"@chainsafe/ssz": "^1.2.1",
|
||||
"@chainsafe/ssz": "^1.2.2",
|
||||
"@chainsafe/threads": "^1.11.2",
|
||||
"@crate-crypto/node-eth-kzg": "0.8.0",
|
||||
"@ethersproject/abi": "^5.7.0",
|
||||
|
||||
@@ -56,8 +56,8 @@
|
||||
"@chainsafe/blst": "^2.2.0",
|
||||
"@chainsafe/discv5": "^11.0.3",
|
||||
"@chainsafe/enr": "^5.0.1",
|
||||
"@chainsafe/persistent-merkle-tree": "^1.2.0",
|
||||
"@chainsafe/ssz": "^1.2.1",
|
||||
"@chainsafe/persistent-merkle-tree": "^1.2.1",
|
||||
"@chainsafe/ssz": "^1.2.2",
|
||||
"@chainsafe/threads": "^1.11.2",
|
||||
"@libp2p/crypto": "^5.0.15",
|
||||
"@libp2p/interface": "^2.7.0",
|
||||
@@ -74,7 +74,6 @@
|
||||
"@lodestar/utils": "^1.33.0",
|
||||
"@lodestar/validator": "^1.33.0",
|
||||
"@multiformats/multiaddr": "^12.1.3",
|
||||
"cpu-features": "^0.0.10",
|
||||
"deepmerge": "^4.3.1",
|
||||
"ethers": "^6.7.0",
|
||||
"find-up": "^6.3.0",
|
||||
@@ -89,7 +88,6 @@
|
||||
},
|
||||
"devDependencies": {
|
||||
"@lodestar/test-utils": "^1.33.0",
|
||||
"@types/cpu-features": "^0.0.3",
|
||||
"@types/debug": "^4.1.7",
|
||||
"@types/inquirer": "^9.0.3",
|
||||
"@types/proper-lockfile": "^4.1.4",
|
||||
|
||||
@@ -1,23 +1,9 @@
|
||||
// MUST import this file first before anything and not import any Lodestar code.
|
||||
import {setHasher} from "@chainsafe/persistent-merkle-tree";
|
||||
import {hasher as asSha256Hasher} from "@chainsafe/persistent-merkle-tree/hasher/as-sha256";
|
||||
import {hasher as hashtreeHasher} from "@chainsafe/persistent-merkle-tree/hasher/hashtree";
|
||||
import CpuFeatures from "cpu-features";
|
||||
|
||||
// without setting this first, persistent-merkle-tree will use noble instead
|
||||
const cpuFeatures = CpuFeatures();
|
||||
if (
|
||||
cpuFeatures.arch === "x86" &&
|
||||
!(
|
||||
(cpuFeatures.flags.avx512f && cpuFeatures.flags.avx512vl) ||
|
||||
(cpuFeatures.flags.avx2 && cpuFeatures.flags.bmi2) ||
|
||||
(cpuFeatures.flags.avx && cpuFeatures.flags.sha)
|
||||
)
|
||||
) {
|
||||
setHasher(asSha256Hasher);
|
||||
} else {
|
||||
setHasher(hashtreeHasher);
|
||||
}
|
||||
// Without setting this first, persistent-merkle-tree will use noble instead
|
||||
setHasher(hashtreeHasher);
|
||||
|
||||
//
|
||||
// ## Rationale
|
||||
|
||||
@@ -64,7 +64,7 @@
|
||||
"blockchain"
|
||||
],
|
||||
"dependencies": {
|
||||
"@chainsafe/ssz": "^1.2.1",
|
||||
"@chainsafe/ssz": "^1.2.2",
|
||||
"@lodestar/params": "^1.33.0",
|
||||
"@lodestar/types": "^1.33.0",
|
||||
"@lodestar/utils": "^1.33.0"
|
||||
|
||||
@@ -35,7 +35,7 @@
|
||||
"check-readme": "typescript-docs-verifier"
|
||||
},
|
||||
"dependencies": {
|
||||
"@chainsafe/ssz": "^1.2.1",
|
||||
"@chainsafe/ssz": "^1.2.2",
|
||||
"@lodestar/config": "^1.33.0",
|
||||
"@lodestar/utils": "^1.33.0",
|
||||
"classic-level": "^1.4.1",
|
||||
|
||||
@@ -36,7 +36,7 @@
|
||||
"check-readme": "typescript-docs-verifier"
|
||||
},
|
||||
"dependencies": {
|
||||
"@chainsafe/ssz": "^1.2.1",
|
||||
"@chainsafe/ssz": "^1.2.2",
|
||||
"@lodestar/config": "^1.33.0",
|
||||
"@lodestar/params": "^1.33.0",
|
||||
"@lodestar/state-transition": "^1.33.0",
|
||||
|
||||
@@ -72,8 +72,8 @@
|
||||
"dependencies": {
|
||||
"@chainsafe/bls": "8.2.0",
|
||||
"@chainsafe/blst": "^2.2.0",
|
||||
"@chainsafe/persistent-merkle-tree": "^1.2.0",
|
||||
"@chainsafe/ssz": "^1.2.1",
|
||||
"@chainsafe/persistent-merkle-tree": "^1.2.1",
|
||||
"@chainsafe/ssz": "^1.2.2",
|
||||
"@lodestar/api": "^1.33.0",
|
||||
"@lodestar/config": "^1.33.0",
|
||||
"@lodestar/params": "^1.33.0",
|
||||
|
||||
@@ -1,23 +1,9 @@
|
||||
// MUST import this file first before anything and not import any Lodestar code.
|
||||
import {setHasher} from "@chainsafe/persistent-merkle-tree";
|
||||
import {hasher as asSha256Hasher} from "@chainsafe/persistent-merkle-tree/hasher/as-sha256";
|
||||
import {hasher as hashtreeHasher} from "@chainsafe/persistent-merkle-tree/hasher/hashtree";
|
||||
import CpuFeatures from "cpu-features";
|
||||
|
||||
// without setting this first, persistent-merkle-tree will use noble instead
|
||||
const cpuFeatures = CpuFeatures();
|
||||
if (
|
||||
cpuFeatures.arch === "x86" &&
|
||||
!(
|
||||
(cpuFeatures.flags.avx512f && cpuFeatures.flags.avx512vl) ||
|
||||
(cpuFeatures.flags.avx2 && cpuFeatures.flags.bmi2) ||
|
||||
(cpuFeatures.flags.avx && cpuFeatures.flags.sha)
|
||||
)
|
||||
) {
|
||||
setHasher(asSha256Hasher);
|
||||
} else {
|
||||
setHasher(hashtreeHasher);
|
||||
}
|
||||
// Without setting this first, persistent-merkle-tree will use noble instead
|
||||
setHasher(hashtreeHasher);
|
||||
|
||||
//
|
||||
// ## Rationale
|
||||
|
||||
@@ -60,10 +60,10 @@
|
||||
"dependencies": {
|
||||
"@chainsafe/as-sha256": "^1.2.0",
|
||||
"@chainsafe/blst": "^2.2.0",
|
||||
"@chainsafe/persistent-merkle-tree": "^1.2.0",
|
||||
"@chainsafe/persistent-merkle-tree": "^1.2.1",
|
||||
"@chainsafe/persistent-ts": "^1.0.0",
|
||||
"@chainsafe/pubkey-index-map": "^3.0.0",
|
||||
"@chainsafe/ssz": "^1.2.1",
|
||||
"@chainsafe/ssz": "^1.2.2",
|
||||
"@chainsafe/swap-or-not-shuffle": "^1.2.1",
|
||||
"@lodestar/config": "^1.33.0",
|
||||
"@lodestar/params": "^1.33.0",
|
||||
|
||||
@@ -68,7 +68,7 @@
|
||||
},
|
||||
"types": "lib/index.d.ts",
|
||||
"dependencies": {
|
||||
"@chainsafe/ssz": "^1.2.1",
|
||||
"@chainsafe/ssz": "^1.2.2",
|
||||
"@lodestar/params": "^1.33.0",
|
||||
"ethereum-cryptography": "^2.0.0"
|
||||
},
|
||||
|
||||
@@ -46,7 +46,7 @@
|
||||
],
|
||||
"dependencies": {
|
||||
"@chainsafe/blst": "^2.2.0",
|
||||
"@chainsafe/ssz": "^1.2.1",
|
||||
"@chainsafe/ssz": "^1.2.2",
|
||||
"@lodestar/api": "^1.33.0",
|
||||
"@lodestar/config": "^1.33.0",
|
||||
"@lodestar/db": "^1.33.0",
|
||||
|
||||
89
yarn.lock
89
yarn.lock
@@ -587,29 +587,47 @@
|
||||
optionalDependencies:
|
||||
"@node-rs/crc32" "^1.10.6"
|
||||
|
||||
"@chainsafe/hashtree-darwin-arm64@1.0.1":
|
||||
version "1.0.1"
|
||||
resolved "https://registry.yarnpkg.com/@chainsafe/hashtree-darwin-arm64/-/hashtree-darwin-arm64-1.0.1.tgz#e2c60090c56a1c8dc8bdff329856184ad32e4cd5"
|
||||
integrity sha512-+KmEgQMpO7FDL3klAcpXbQ4DPZvfCe0qSaBBrtT4vLF8V1JGm3sp+j7oibtxtOsLKz7nJMiK1pZExi7vjXu8og==
|
||||
"@chainsafe/hashtree-darwin-arm64@1.0.2":
|
||||
version "1.0.2"
|
||||
resolved "https://registry.yarnpkg.com/@chainsafe/hashtree-darwin-arm64/-/hashtree-darwin-arm64-1.0.2.tgz#fcf09de55e8b666fa86d2136d285a4ea55f066c0"
|
||||
integrity sha512-yIIwn9SUR5ZTl2vN1QqRtDFL/w2xYW4o68A1k8UexMbieGAnE7Ab7NvtCZRHRe8x0eONO46F/bWn5bxxyYlFXw==
|
||||
|
||||
"@chainsafe/hashtree-linux-arm64-gnu@1.0.1":
|
||||
version "1.0.1"
|
||||
resolved "https://registry.yarnpkg.com/@chainsafe/hashtree-linux-arm64-gnu/-/hashtree-linux-arm64-gnu-1.0.1.tgz#49d2604a6c9106219448af3eaf76f4da6e44daca"
|
||||
integrity sha512-p1hnhGq2aFY+Zhdn1Q6L/6yLYNKjqXfn/Pc8jiM0e3+Lf/hB+yCdqYVu1pto26BrZjugCFZfupHaL4DjUTDttw==
|
||||
"@chainsafe/hashtree-linux-arm64-gnu@1.0.2":
|
||||
version "1.0.2"
|
||||
resolved "https://registry.yarnpkg.com/@chainsafe/hashtree-linux-arm64-gnu/-/hashtree-linux-arm64-gnu-1.0.2.tgz#0af39b6f25ed77a2185151484c67636c3bfd7138"
|
||||
integrity sha512-MDz1xBRTRHw2eezGqx1Ff8NoeUUQP3bhbeeVG8ZZTkFYqvRc8O65OQOTtgO+fFGvqnDjVBSRHmiTXU5eNeH/mQ==
|
||||
|
||||
"@chainsafe/hashtree-linux-x64-gnu@1.0.1":
|
||||
version "1.0.1"
|
||||
resolved "https://registry.yarnpkg.com/@chainsafe/hashtree-linux-x64-gnu/-/hashtree-linux-x64-gnu-1.0.1.tgz#31c5a2bb196b78f04f2bf4bfb5c1bf1f3331f071"
|
||||
integrity sha512-uCIGuUWuWV0LiB4KLMy6JFa7Jp6NmPl3hKF5BYWu8TzUBe7vSXMZfqTzGxXPggFYN2/0KymfRdG9iDCOJfGRqg==
|
||||
"@chainsafe/hashtree-linux-arm64-musl@1.0.2":
|
||||
version "1.0.2"
|
||||
resolved "https://registry.yarnpkg.com/@chainsafe/hashtree-linux-arm64-musl/-/hashtree-linux-arm64-musl-1.0.2.tgz#40911e7427d88a1febca23f96f83f009977dbbf9"
|
||||
integrity sha512-BUy+/9brJwAFAtraro4y/1F+aP/8j/7HrnYdde8PTu7jHWAClI9xZygadaJbk0GoWxyCOUAJKUs8KHVnYxJDeg==
|
||||
|
||||
"@chainsafe/hashtree@1.0.1":
|
||||
version "1.0.1"
|
||||
resolved "https://registry.yarnpkg.com/@chainsafe/hashtree/-/hashtree-1.0.1.tgz#587666a261e1da6a37904095ce875fddc53c7c89"
|
||||
integrity sha512-bleu9FjqBeR/l6W1u2Lz+HsS0b0LLJX2eUt3hOPBN7VqOhidx8wzkVh2S7YurS+iTQtfdK4K5QU9tcTGNrGwDg==
|
||||
"@chainsafe/hashtree-linux-x64-gnu@1.0.2":
|
||||
version "1.0.2"
|
||||
resolved "https://registry.yarnpkg.com/@chainsafe/hashtree-linux-x64-gnu/-/hashtree-linux-x64-gnu-1.0.2.tgz#98d30f22200c0a4afd496b1466c51f9a42aa9e4f"
|
||||
integrity sha512-bFy9ffFG77SivmeOjOlZmOCrxzQ/WqUESy0I+dW6IX7wquTXHldJKWvohs9+FEn3TSXgeigFmEATz5tfxBfIZw==
|
||||
|
||||
"@chainsafe/hashtree-linux-x64-musl@1.0.2":
|
||||
version "1.0.2"
|
||||
resolved "https://registry.yarnpkg.com/@chainsafe/hashtree-linux-x64-musl/-/hashtree-linux-x64-musl-1.0.2.tgz#b7aa71150dd6c4687a0f529a5cee052e36a99fb3"
|
||||
integrity sha512-mbJB3C0RjwpqOMPZIUQm3IBH6d3sYiKDXMU6ORt5nuk7Ix2I80xxffAciDO1d7kKNnW6HStOj5s/rGhIDxK1ug==
|
||||
|
||||
"@chainsafe/hashtree-win32-x64-msvc@1.0.2":
|
||||
version "1.0.2"
|
||||
resolved "https://registry.yarnpkg.com/@chainsafe/hashtree-win32-x64-msvc/-/hashtree-win32-x64-msvc-1.0.2.tgz#1b9fbb3f6a4b51f36b9efd42db9ab0308580b518"
|
||||
integrity sha512-wXFhGqaydgadefQbjSTGqZY1R1MBhnJj+gbJhULNRUXco5pHsXfOk3QhCDAefp1PPW+wQwfT4clEnQCqJIf58w==
|
||||
|
||||
"@chainsafe/hashtree@1.0.2":
|
||||
version "1.0.2"
|
||||
resolved "https://registry.yarnpkg.com/@chainsafe/hashtree/-/hashtree-1.0.2.tgz#2a16b49e491bef9e5760cd1010363cb3d1351fb8"
|
||||
integrity sha512-OaWjsZ6S/GaT2RvaqdpsF5Mux8qQOE2KbitX2yHmQJZNUZkdh7C3N4PA5LsvewqX+z8Nkv8mr1uSe0LSrHGiQw==
|
||||
optionalDependencies:
|
||||
"@chainsafe/hashtree-darwin-arm64" "1.0.1"
|
||||
"@chainsafe/hashtree-linux-arm64-gnu" "1.0.1"
|
||||
"@chainsafe/hashtree-linux-x64-gnu" "1.0.1"
|
||||
"@chainsafe/hashtree-darwin-arm64" "1.0.2"
|
||||
"@chainsafe/hashtree-linux-arm64-gnu" "1.0.2"
|
||||
"@chainsafe/hashtree-linux-arm64-musl" "1.0.2"
|
||||
"@chainsafe/hashtree-linux-x64-gnu" "1.0.2"
|
||||
"@chainsafe/hashtree-linux-x64-musl" "1.0.2"
|
||||
"@chainsafe/hashtree-win32-x64-msvc" "1.0.2"
|
||||
|
||||
"@chainsafe/is-ip@^2.0.1":
|
||||
version "2.0.1"
|
||||
@@ -671,13 +689,13 @@
|
||||
dependencies:
|
||||
"@chainsafe/is-ip" "^2.0.1"
|
||||
|
||||
"@chainsafe/persistent-merkle-tree@1.2.0", "@chainsafe/persistent-merkle-tree@^1.2.0":
|
||||
version "1.2.0"
|
||||
resolved "https://registry.yarnpkg.com/@chainsafe/persistent-merkle-tree/-/persistent-merkle-tree-1.2.0.tgz#a402debcae6b386c51564c8cbacc9b0d56f64486"
|
||||
integrity sha512-Ng2eqd6OPvFPPuroQ659ZrFMHtc44LxUfK7K2WkoBhlQ3hrvIn3UTQNKc77xUCU40xjeBGSxAfz+MSV256i+/g==
|
||||
"@chainsafe/persistent-merkle-tree@1.2.1", "@chainsafe/persistent-merkle-tree@^1.2.1":
|
||||
version "1.2.1"
|
||||
resolved "https://registry.yarnpkg.com/@chainsafe/persistent-merkle-tree/-/persistent-merkle-tree-1.2.1.tgz#80f052e4a04c63304d5198dbf2fa49e104a0365a"
|
||||
integrity sha512-AOSEVLfaqwb9eTCKuY1ri0DrRxVQ3Rh+we1VBj1GahUGfEdE8OC3Vkbca7Up6RoI9Ip9FLnI31Y7AjKH9ZqAGA==
|
||||
dependencies:
|
||||
"@chainsafe/as-sha256" "1.2.0"
|
||||
"@chainsafe/hashtree" "1.0.1"
|
||||
"@chainsafe/hashtree" "1.0.2"
|
||||
"@noble/hashes" "^1.3.0"
|
||||
|
||||
"@chainsafe/persistent-merkle-tree@^0.6.1":
|
||||
@@ -760,13 +778,13 @@
|
||||
"@chainsafe/as-sha256" "^0.4.1"
|
||||
"@chainsafe/persistent-merkle-tree" "^0.6.1"
|
||||
|
||||
"@chainsafe/ssz@^1.2.1":
|
||||
version "1.2.1"
|
||||
resolved "https://registry.yarnpkg.com/@chainsafe/ssz/-/ssz-1.2.1.tgz#a9a89c9706de33444c0ee64fbc461ae6001132af"
|
||||
integrity sha512-rchrNF+tJ1yOMZS5CQK3bK5UZC1vQP8ANxW4McRedvBls5b9Mvn+LtbOE4wffrVMOxQzOXcBGZDoCPPJYX76Rg==
|
||||
"@chainsafe/ssz@^1.2.2":
|
||||
version "1.2.2"
|
||||
resolved "https://registry.yarnpkg.com/@chainsafe/ssz/-/ssz-1.2.2.tgz#3c41b70bac9e646cb4cce0d49bda176ca87984ad"
|
||||
integrity sha512-kIA3fJO6h2RsQndsNBlCSQYB4xfdZGMQvNPKPgbiB0mysV6okuxeJU3Nyl16xDCKv3tqej76eGYHcyjMVt7V1w==
|
||||
dependencies:
|
||||
"@chainsafe/as-sha256" "1.2.0"
|
||||
"@chainsafe/persistent-merkle-tree" "1.2.0"
|
||||
"@chainsafe/persistent-merkle-tree" "1.2.1"
|
||||
|
||||
"@chainsafe/swap-or-not-shuffle-darwin-arm64@1.2.1":
|
||||
version "1.2.1"
|
||||
@@ -3383,11 +3401,6 @@
|
||||
resolved "https://registry.yarnpkg.com/@types/cookie/-/cookie-0.6.0.tgz#eac397f28bf1d6ae0ae081363eca2f425bedf0d5"
|
||||
integrity sha512-4Kh9a6B2bQciAhf7FSuMRRkUWecJgJu9nPnx3yzpsfXX/c50REIqpHY4C82bXP90qrLtXtkDxTZosYO3UpOwlA==
|
||||
|
||||
"@types/cpu-features@^0.0.3":
|
||||
version "0.0.3"
|
||||
resolved "https://registry.yarnpkg.com/@types/cpu-features/-/cpu-features-0.0.3.tgz#a2bec076eb5dc95e0a6c23d1f8d389be4109b309"
|
||||
integrity sha512-W/Ep+LDZoxMbCcH7LHRB3RN+TY4gbHl3u4uRq4XsxOh1gnpf5Lkwy5xWTBKSaJYQuMLW2XPAmRWA5Ucsy2EGVQ==
|
||||
|
||||
"@types/datastore-level@^3.0.0":
|
||||
version "3.0.0"
|
||||
resolved "https://registry.npmjs.org/@types/datastore-level/-/datastore-level-3.0.0.tgz"
|
||||
@@ -5383,14 +5396,6 @@ cosmiconfig@^8.2.0:
|
||||
parse-json "^5.2.0"
|
||||
path-type "^4.0.0"
|
||||
|
||||
cpu-features@^0.0.10:
|
||||
version "0.0.10"
|
||||
resolved "https://registry.yarnpkg.com/cpu-features/-/cpu-features-0.0.10.tgz#9aae536db2710c7254d7ed67cb3cbc7d29ad79c5"
|
||||
integrity sha512-9IkYqtX3YHPCzoVg1Py+o9057a3i0fp7S530UWokCSaFVTc7CwXPRiOjRjBQQ18ZCNafx78YfnG+HALxtVmOGA==
|
||||
dependencies:
|
||||
buildcheck "~0.0.6"
|
||||
nan "^2.19.0"
|
||||
|
||||
cpu-features@~0.0.4:
|
||||
version "0.0.8"
|
||||
resolved "https://registry.yarnpkg.com/cpu-features/-/cpu-features-0.0.8.tgz#a2d464b023b8ad09004c8cdca23b33f192f63546"
|
||||
|
||||
Reference in New Issue
Block a user