From e3866f126a27b475867ccab49329d78450ceee6e Mon Sep 17 00:00:00 2001 From: Aaron DeRuvo Date: Thu, 21 Sep 2023 16:33:12 +0200 Subject: [PATCH 1/8] WIP ensure no dependencies are sneaky --- packages/dev-utils/package.json | 1 + packages/sdk/connect/package.json | 11 ++++--- packages/sdk/phone-utils/package.json | 3 +- packages/sdk/utils/package.json | 3 ++ packages/sdk/utils/src/istanbul.ts | 2 +- packages/sdk/wallets/wallet-base/package.json | 4 ++- .../wallets/wallet-base/src/signing-utils.ts | 17 +++++----- .../sdk/wallets/wallet-hsm-azure/package.json | 1 + packages/sdk/wallets/wallet-hsm/package.json | 1 + .../sdk/wallets/wallet-ledger/package.json | 6 ++++ .../sdk/wallets/wallet-remote/package.json | 4 ++- packages/typescript/tslint.json | 5 ++- yarn.lock | 33 +++++++++++++++++++ 13 files changed, 73 insertions(+), 18 deletions(-) diff --git a/packages/dev-utils/package.json b/packages/dev-utils/package.json index b82e287000c..360bf9326cb 100644 --- a/packages/dev-utils/package.json +++ b/packages/dev-utils/package.json @@ -16,6 +16,7 @@ "lint": "tslint -c tslint.json --project ." }, "dependencies": { + "ganache": "npm:@celo/ganache@7.8.0-unofficial.0", "bignumber.js": "^9.0.0", "web3": "1.10.0", "web3-core-helpers": "1.10.0", diff --git a/packages/sdk/connect/package.json b/packages/sdk/connect/package.json index a304779dc10..0cacc2c31c0 100644 --- a/packages/sdk/connect/package.json +++ b/packages/sdk/connect/package.json @@ -22,21 +22,22 @@ "prepublishOnly": "yarn build" }, "dependencies": { + "@ethereumjs/util": "8.0.5", "@types/debug": "^4.1.5", "@types/utf8": "^2.1.6", "@celo/base": "5.0.4", "@celo/utils": "5.0.4", "bignumber.js": "^9.0.0", "debug": "^4.1.1", - "utf8": "3.0.0" - }, - "devDependencies": { - "web3": "1.10.0", + "utf8": "3.0.0", "web3-core": "1.10.0", "web3-eth": "1.10.0", - "web3-eth-abi": "1.10.0", "web3-eth-contract": "1.10.0" }, + "devDependencies": { + "web3": "1.10.0", + "web3-eth-abi": "1.10.0" + }, "peerDependencies": { "web3": "1.10.0" }, diff --git a/packages/sdk/phone-utils/package.json b/packages/sdk/phone-utils/package.json index 36863858643..26998ad6382 100644 --- a/packages/sdk/phone-utils/package.json +++ b/packages/sdk/phone-utils/package.json @@ -30,7 +30,8 @@ "country-data": "^0.0.31", "fp-ts": "2.1.1", "google-libphonenumber": "^3.2.27", - "io-ts": "2.0.1" + "io-ts": "2.0.1", + "web3-utils": "^1.10.0" }, "devDependencies": { "@celo/typescript": "0.0.1" diff --git a/packages/sdk/utils/package.json b/packages/sdk/utils/package.json index 1038975a6da..de9c3e6dcd7 100644 --- a/packages/sdk/utils/package.json +++ b/packages/sdk/utils/package.json @@ -24,13 +24,16 @@ "dependencies": { "@celo/base": "5.0.4", "@ethereumjs/util": "8.0.5", + "@ethereumjs/rlp": "^5.0.0", "@types/bn.js": "^5.1.0", "@types/elliptic": "^6.4.9", "@types/node": "^18.7.16", "bignumber.js": "^9.0.0", "elliptic": "^6.5.4", "ethereum-cryptography": "1.2.0", + "bn.js": "4.11.9", "io-ts": "2.0.1", + "fp-ts": "2.1.1", "web3-eth-abi": "1.10.0", "web3-utils": "1.10.0" }, diff --git a/packages/sdk/utils/src/istanbul.ts b/packages/sdk/utils/src/istanbul.ts index 4ee6bcb080e..4611550d71f 100644 --- a/packages/sdk/utils/src/istanbul.ts +++ b/packages/sdk/utils/src/istanbul.ts @@ -1,6 +1,6 @@ +import { RLP as rlp } from '@ethereumjs/rlp' import { bufferToHex, toChecksumAddress } from '@ethereumjs/util' import BigNumber from 'bignumber.js' -import * as rlp from 'rlp' import { Address } from './address' // This file contains utilities that help with istanbul-specific block information. diff --git a/packages/sdk/wallets/wallet-base/package.json b/packages/sdk/wallets/wallet-base/package.json index 5d7498db42c..34e905d7140 100644 --- a/packages/sdk/wallets/wallet-base/package.json +++ b/packages/sdk/wallets/wallet-base/package.json @@ -29,12 +29,14 @@ "@celo/base": "5.0.4", "@celo/utils": "5.0.4", "@ethereumjs/util": "8.0.5", + "@ethereumjs/rlp": "^5.0.0", "ethereum-cryptography": "^2.1.2", "@types/debug": "^4.1.5", "bignumber.js": "^9.0.0", "web3-eth-accounts": "1.10.0", "debug": "^4.1.1", - "eth-lib": "^0.2.8" + "eth-lib": "^0.2.8", + "web3": "1.10.0" }, "engines": { "node": ">=8.14.2" diff --git a/packages/sdk/wallets/wallet-base/src/signing-utils.ts b/packages/sdk/wallets/wallet-base/src/signing-utils.ts index f0a6b874886..edafbe5c14a 100644 --- a/packages/sdk/wallets/wallet-base/src/signing-utils.ts +++ b/packages/sdk/wallets/wallet-base/src/signing-utils.ts @@ -15,6 +15,7 @@ import { } from '@celo/connect/lib/utils/formatter' import { EIP712TypedData, generateTypedDataHash } from '@celo/utils/lib/sign-typed-data-utils' import { parseSignatureWithoutPrefix } from '@celo/utils/lib/signatureUtils' +import { RLP } from '@ethereumjs/rlp' import { Address, bufferToHex, @@ -27,7 +28,7 @@ import { } from '@ethereumjs/util' import debugFactory from 'debug' // @ts-ignore-next-line eth-lib types not found -import { account as Account, bytes as Bytes, hash as Hash, RLP } from 'eth-lib' +import { account as Account, bytes as Bytes, hash as Hash } from 'eth-lib' import { keccak256 } from 'ethereum-cryptography/keccak' import { hexToBytes } from 'ethereum-cryptography/utils.js' import Web3 from 'web3' // TODO try to do this without web3 direct @@ -128,12 +129,11 @@ export function rlpEncodedTx(tx: CeloTx): RLPEncodedTx { transaction.maxFeePerGas = stringNumberOrBNToHex(tx.maxFeePerGas) transaction.maxPriorityFeePerGas = stringNumberOrBNToHex(tx.maxPriorityFeePerGas) - let rlpEncode: Hex if (isCIP42(tx)) { // There shall be a typed transaction with the code 0x7c that has the following format: // 0x7c || rlp([chain_id, nonce, max_priority_fee_per_gas, max_fee_per_gas, gas_limit, feecurrency, gatewayFeeRecipient, gatewayfee, destination, amount, data, access_list, signature_y_parity, signature_r, signature_s]). // This will be in addition to the type 0x02 transaction as specified in EIP-1559. - rlpEncode = RLP.encode([ + const rlpEncode = RLP.encode([ stringNumberToHex(transaction.chainId), stringNumberToHex(transaction.nonce), transaction.maxPriorityFeePerGas || '0x', @@ -147,11 +147,11 @@ export function rlpEncodedTx(tx: CeloTx): RLPEncodedTx { transaction.data || '0x', transaction.accessList || [], ]) - return { transaction, rlpEncode: concatHex(['0x7c', rlpEncode]), type: 'cip42' } + return { transaction, rlpEncode: concatHex(['0x7c', rlpEncode.toString()]), type: 'cip42' } } else if (isEIP1559(tx)) { // https://eips.ethereum.org/EIPS/eip-1559 // 0x02 || rlp([chain_id, nonce, max_priority_fee_per_gas, max_fee_per_gas, gas_limit, destination, amount, data, access_list, signature_y_parity, signature_r, signature_s]). - rlpEncode = RLP.encode([ + const rlpEncode = RLP.encode([ stringNumberToHex(transaction.chainId), stringNumberToHex(transaction.nonce), transaction.maxPriorityFeePerGas || '0x', @@ -162,11 +162,11 @@ export function rlpEncodedTx(tx: CeloTx): RLPEncodedTx { transaction.data || '0x', transaction.accessList || [], ]) - return { transaction, rlpEncode: concatHex(['0x02', rlpEncode]), type: 'eip1559' } + return { transaction, rlpEncode: concatHex(['0x02', rlpEncode.toString()]), type: 'eip1559' } } else { // This order should match the order in Geth. // https://github.com/celo-org/celo-blockchain/blob/027dba2e4584936cc5a8e8993e4e27d28d5247b8/core/types/transaction.go#L65 - rlpEncode = RLP.encode([ + const rlpEncode = RLP.encode([ stringNumberToHex(transaction.nonce), transaction.gasPrice, transaction.gas, @@ -180,7 +180,8 @@ export function rlpEncodedTx(tx: CeloTx): RLPEncodedTx { '0x', '0x', ]) - return { transaction, rlpEncode, type: 'celo-legacy' } + + return { transaction, rlpEncode: rlpEncode.toString() as Hex, type: 'celo-legacy' } } } diff --git a/packages/sdk/wallets/wallet-hsm-azure/package.json b/packages/sdk/wallets/wallet-hsm-azure/package.json index dd123b3130f..ad6452a83fa 100644 --- a/packages/sdk/wallets/wallet-hsm-azure/package.json +++ b/packages/sdk/wallets/wallet-hsm-azure/package.json @@ -25,6 +25,7 @@ "@azure/identity": "^1.1.0", "@azure/keyvault-keys": "^4.1.0", "@azure/keyvault-secrets": "^4.1.0", + "@celo/base": "5.0.4", "@celo/utils": "5.0.4", "@celo/wallet-base": "5.0.4", "@celo/wallet-remote": "5.0.4", diff --git a/packages/sdk/wallets/wallet-hsm/package.json b/packages/sdk/wallets/wallet-hsm/package.json index 8e8620f32f9..922f42d6ac5 100644 --- a/packages/sdk/wallets/wallet-hsm/package.json +++ b/packages/sdk/wallets/wallet-hsm/package.json @@ -29,6 +29,7 @@ "eth-lib": "^0.2.8", "@ethereumjs/util": "8.0.5", "asn1js": "^2.0.26", + "bignumber.js": "^9.0.0", "elliptic": "^6.5.4", "secp256k1": "^4.0.0" }, diff --git a/packages/sdk/wallets/wallet-ledger/package.json b/packages/sdk/wallets/wallet-ledger/package.json index 2aa0f413d26..d077a1ddea2 100644 --- a/packages/sdk/wallets/wallet-ledger/package.json +++ b/packages/sdk/wallets/wallet-ledger/package.json @@ -22,17 +22,23 @@ "prepublishOnly": "yarn build" }, "dependencies": { + "@celo/base": "5.0.4", "@celo/utils": "5.0.4", "@celo/wallet-base": "5.0.4", "@celo/wallet-remote": "5.0.4", "@celo/connect": "5.0.4", "@ethereumjs/util": "8.0.5", "@ledgerhq/hw-app-eth": "~5.11.0", + "@ledgerhq/errors": "^5.50.0", "@ledgerhq/hw-transport": "~5.11.0", "debug": "^4.1.1", "eth-lib": "^0.2.8", "ethereum-cryptography": "1.2.0" }, + "devDependencies": { + "@ledgerhq/hw-transport-node-hid": "^6.27.4", + "web3": "1.10.0" + }, "engines": { "node": ">=8.14.2" } diff --git a/packages/sdk/wallets/wallet-remote/package.json b/packages/sdk/wallets/wallet-remote/package.json index 46e3427f3e6..28c534546c0 100644 --- a/packages/sdk/wallets/wallet-remote/package.json +++ b/packages/sdk/wallets/wallet-remote/package.json @@ -29,7 +29,9 @@ "@types/debug": "^4.1.5", "eth-lib": "^0.2.8" }, - "devDependencies": {}, + "devDependencies": { + "web3": "1.10.0" + }, "engines": { "node": ">=8.14.2" } diff --git a/packages/typescript/tslint.json b/packages/typescript/tslint.json index 1a0d6aaf4cc..27167350239 100644 --- a/packages/typescript/tslint.json +++ b/packages/typescript/tslint.json @@ -11,7 +11,10 @@ "no-reference": true, "no-duplicate-super": true, "member-access": false, - "no-implicit-dependencies": false, + "no-implicit-dependencies": [ + true, + "dev" + ], "interface-name": false, "no-submodule-imports": false, "object-literal-sort-keys": false, diff --git a/yarn.lock b/yarn.lock index dbba727f93c..b11e6c253cb 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1267,6 +1267,11 @@ resolved "https://registry.npmjs.org/@ethereumjs/rlp/-/rlp-4.0.1.tgz" integrity sha512-tqsQiBQDQdmPWE1xkkBq4rlSW5QZpLOUJ5RJh2/9fug+q9tnUhuZoVLk7s0scUIKTOzEtR72DFBXI4WiZcMpvw== +"@ethereumjs/rlp@^5.0.0": + version "5.0.0" + resolved "https://registry.yarnpkg.com/@ethereumjs/rlp/-/rlp-5.0.0.tgz#dd81b32b2237bc32fb1b54534f8ff246a6c89d9b" + integrity sha512-WuS1l7GJmB0n0HsXLozCoEFc9IwYgf3l0gCkKVYgR67puVF1O4OpEaN0hWmm1c+iHUHFCKt1hJrvy5toLg+6ag== + "@ethereumjs/statemanager@1.0.4": version "1.0.4" resolved "https://registry.npmjs.org/@ethereumjs/statemanager/-/statemanager-1.0.4.tgz" @@ -1336,6 +1341,15 @@ "@ethereumjs/rlp" "^4.0.1" ethereum-cryptography "^1.1.2" +"@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== + dependencies: + "@ethereumjs/rlp" "^4.0.1" + ethereum-cryptography "^2.0.0" + micro-ftch "^0.3.1" + "@ethereumjs/vm@npm:@celo/ethereumjs-vm@6.4.1-unofficial.0": version "6.4.1-unofficial.0" resolved "https://registry.npmjs.org/@celo/ethereumjs-vm/-/ethereumjs-vm-6.4.1-unofficial.0.tgz" @@ -18758,6 +18772,11 @@ methods@^1.1.2, methods@~1.1.2: resolved "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz" integrity sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w== +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@^2.3.11, micromatch@^2.3.7: version "2.3.11" resolved "https://registry.npmjs.org/micromatch/-/micromatch-2.3.11.tgz" @@ -27721,6 +27740,20 @@ web3-utils@1.8.2: randombytes "^2.1.0" utf8 "3.0.0" +web3-utils@^1.10.0: + version "1.10.2" + resolved "https://registry.yarnpkg.com/web3-utils/-/web3-utils-1.10.2.tgz#361103d28a94d5e2a87ba15d776a62c33303eb44" + integrity sha512-TdApdzdse5YR+5GCX/b/vQnhhbj1KSAtfrDtRW7YS0kcWp1gkJsN62gw6GzCaNTeXookB7UrLtmDUuMv65qgow== + dependencies: + "@ethereumjs/util" "^8.1.0" + bn.js "^5.2.1" + ethereum-bloom-filters "^1.0.6" + ethereum-cryptography "^2.1.2" + ethjs-unit "0.1.6" + number-to-bn "1.7.0" + randombytes "^2.1.0" + utf8 "3.0.0" + web3-utils@^4.0.5: version "4.0.5" resolved "https://registry.yarnpkg.com/web3-utils/-/web3-utils-4.0.5.tgz#598d0ebbe1463c56ac1e838103a728a0a6bfdad7" From 89101be271953ca6c7e32c57dfa31bcfe6b08eab Mon Sep 17 00:00:00 2001 From: Aaron DeRuvo Date: Thu, 21 Sep 2023 18:50:35 +0200 Subject: [PATCH 2/8] check deps except for protocol and celotool --- packages/celotool/tslint.json | 6 ++++++ packages/env-tests/package.json | 3 +++ .../phone-number-privacy/combiner/package.json | 5 +++++ .../phone-number-privacy/combiner/tslint.json | 8 +++++++- .../phone-number-privacy/common/package.json | 3 +++ .../phone-number-privacy/monitor/package.json | 2 ++ .../phone-number-privacy/signer/package.json | 7 +++++++ .../phone-number-privacy/signer/tslint.json | 3 ++- packages/protocol/tslint.json | 1 + packages/sdk/contractkit/package.json | 1 + .../sdk/contractkit/src/wrappers/Accounts.ts | 2 +- packages/sdk/explorer/package.json | 1 + packages/sdk/governance/package.json | 1 + .../wallets/wallet-base/src/signing-utils.ts | 17 ++++++++--------- .../sdk/wallets/wallet-hsm-aws/package.json | 1 + .../sdk/wallets/wallet-hsm-gcp/package.json | 1 + packages/sdk/wallets/wallet-hsm/package.json | 3 +++ packages/sdk/wallets/wallet-rpc/package.json | 6 +++++- .../sdk/wallets/wallet-rpc/src/rpc-signer.ts | 2 +- 19 files changed, 59 insertions(+), 14 deletions(-) diff --git a/packages/celotool/tslint.json b/packages/celotool/tslint.json index b1e6a53d435..93b2037a260 100644 --- a/packages/celotool/tslint.json +++ b/packages/celotool/tslint.json @@ -4,6 +4,12 @@ "exclude": ["**/__mocks__/**", "**/lcov-report/**"] }, "rules": { + "no-implicit-dependencies": [ + true, + [ + "src" + ] + ], "no-relative-imports": false, "max-classes-per-file": [true, 2], "no-global-arrow-functions": false, diff --git a/packages/env-tests/package.json b/packages/env-tests/package.json index 98bd1346f1d..732839e6f99 100644 --- a/packages/env-tests/package.json +++ b/packages/env-tests/package.json @@ -12,9 +12,11 @@ "@celo/identity": "5.0.4", "@celo/phone-utils": "5.0.4", "@celo/cryptographic-utils": "5.0.4", + "bignumber.js": "^9.0.0", "bunyan": "1.8.12", "bunyan-gke-stackdriver": "0.1.2", "bunyan-debug-stream": "2.0.0", + "dotenv": "8.2.0", "jest": "^29.0.2", "moment": "^2.29.0", @@ -31,6 +33,7 @@ "staging-test": "CELO_ENV=staging CELO_PROVIDER=https://staging-forno.celo-networks-dev.org jest --runInBand" }, "devDependencies": { + "@jest/globals": "^29.5.0", "typescript": "4.4.3" } } \ No newline at end of file diff --git a/packages/phone-number-privacy/combiner/package.json b/packages/phone-number-privacy/combiner/package.json index b9401eaa9a7..47e7b4d68a6 100644 --- a/packages/phone-number-privacy/combiner/package.json +++ b/packages/phone-number-privacy/combiner/package.json @@ -36,16 +36,21 @@ "@celo/poprf": "^0.1.9", "@types/bunyan": "^1.8.8", "@opentelemetry/api": "^1.4.1", + "@opentelemetry/resources": "1.17.0", + "@opentelemetry/instrumentation": "^0.41.2", "@opentelemetry/auto-instrumentations-node": "^0.38.0", "@opentelemetry/exporter-jaeger": "^1.15.2", "@opentelemetry/propagator-ot-trace": "^0.27.0", "@opentelemetry/sdk-metrics": "^1.15.2", "@opentelemetry/sdk-node": "^0.41.2", "@opentelemetry/sdk-trace-web": "^1.15.2", + "@opentelemetry/sdk-trace-node": "1.15.2", "@opentelemetry/sdk-trace-base": "^1.17.0", "@opentelemetry/semantic-conventions": "^1.15.2", "blind-threshold-bls": "npm:@celo/blind-threshold-bls@1.0.0-beta", "dotenv": "^8.2.0", + "io-ts": "2.0.1", + "bunyan": "1.8.12", "express": "^4.17.1", "firebase-admin": "^11.10.1", "firebase-functions": "^4.4.1", diff --git a/packages/phone-number-privacy/combiner/tslint.json b/packages/phone-number-privacy/combiner/tslint.json index 5fc86ecb716..35e8972b590 100644 --- a/packages/phone-number-privacy/combiner/tslint.json +++ b/packages/phone-number-privacy/combiner/tslint.json @@ -1,7 +1,13 @@ { "extends": ["@celo/typescript/tslint.json"], "rules": { + "no-implicit-dependencies": [ + true, + [ + "node:assert" + ] + ], "no-global-arrow-functions": false, - "no-console": true + "no-console": true } } diff --git a/packages/phone-number-privacy/common/package.json b/packages/phone-number-privacy/common/package.json index 0474c2dc025..03fda8fa0a8 100644 --- a/packages/phone-number-privacy/common/package.json +++ b/packages/phone-number-privacy/common/package.json @@ -30,6 +30,9 @@ "dotenv": "^8.2.0", "elliptic": "^6.5.4", "io-ts": "2.0.1", + "fp-ts": "2.1.1", + "express": "^4.17.6", + "node-fetch": "^2.6.9", "is-base64": "^1.1.0", "@opentelemetry/api": "^1.4.1", "@opentelemetry/auto-instrumentations-node": "^0.38.0", diff --git a/packages/phone-number-privacy/monitor/package.json b/packages/phone-number-privacy/monitor/package.json index c2f329e7e54..a3e02aeeff1 100644 --- a/packages/phone-number-privacy/monitor/package.json +++ b/packages/phone-number-privacy/monitor/package.json @@ -22,6 +22,7 @@ "loadTest": "ts-node src/scripts/run-load-test.ts run" }, "dependencies": { + "@celo/base": "^5.0.4", "@celo/contractkit": "^5.0.4", "@celo/cryptographic-utils": "^5.0.4", "@celo/encrypted-backup": "^5.0.4", @@ -29,6 +30,7 @@ "@celo/wallet-local": "^5.0.4", "@celo/phone-number-privacy-common": "^3.0.3", "@celo/utils": "^5.0.4", + "yargs": "^14.0.0", "firebase-admin": "^9.12.0", "firebase-functions": "^3.15.7" }, diff --git a/packages/phone-number-privacy/signer/package.json b/packages/phone-number-privacy/signer/package.json index 34ff3f0e55c..7b047e81a4f 100644 --- a/packages/phone-number-privacy/signer/package.json +++ b/packages/phone-number-privacy/signer/package.json @@ -38,6 +38,8 @@ }, "dependencies": { "@celo/base": "^5.0.4", + "bunyan": "1.8.12", + "bignumber.js": "^9.0.0", "blind-threshold-bls": "npm:@celo/blind-threshold-bls@1.0.0-beta", "@celo/contractkit": "^5.0.4", "@celo/phone-number-privacy-common": "^3.0.3", @@ -48,9 +50,14 @@ "@opentelemetry/api": "^1.4.1", "@opentelemetry/auto-instrumentations-node": "^0.38.0", "@opentelemetry/propagator-ot-trace": "^0.27.0", + "@opentelemetry/resources": "1.17.0", + "@opentelemetry/instrumentation": "^0.41.2", + "@opentelemetry/exporter-jaeger": "^1.15.2", "@opentelemetry/sdk-metrics": "^1.15.1", "@opentelemetry/sdk-node": "^0.41.1", "@opentelemetry/semantic-conventions": "^1.15.1", + "@opentelemetry/sdk-trace-base": "^1.17.0", + "@opentelemetry/sdk-trace-node": "1.15.2", "@opentelemetry/sdk-trace-web": "^1.15.1", "@types/bunyan": "^1.8.8", "aws-sdk": "^2.705.0", diff --git a/packages/phone-number-privacy/signer/tslint.json b/packages/phone-number-privacy/signer/tslint.json index 5fc86ecb716..0902a7148cd 100644 --- a/packages/phone-number-privacy/signer/tslint.json +++ b/packages/phone-number-privacy/signer/tslint.json @@ -1,7 +1,8 @@ { "extends": ["@celo/typescript/tslint.json"], "rules": { + "no-implicit-dependencies": [true, ["node:http"]], "no-global-arrow-functions": false, - "no-console": true + "no-console": true } } diff --git a/packages/protocol/tslint.json b/packages/protocol/tslint.json index eab49bb0281..7fbfa850046 100644 --- a/packages/protocol/tslint.json +++ b/packages/protocol/tslint.json @@ -5,6 +5,7 @@ "exclude": ["types/contracts/*", "lib/**"] }, "rules": { + "no-implicit-dependencies": false, "no-global-arrow-functions": false, "no-floating-promises": true, "no-string-literal": false, diff --git a/packages/sdk/contractkit/package.json b/packages/sdk/contractkit/package.json index 8a447d3b783..9bacec7e9ff 100644 --- a/packages/sdk/contractkit/package.json +++ b/packages/sdk/contractkit/package.json @@ -52,6 +52,7 @@ "fetch-mock": "9.10.4", "ganache": "npm:@celo/ganache@7.8.0-unofficial.0", "jest": "^29.0.2", + "bn.js": "^5.1.0", "ts-node": "8.3.0", "typedoc": "^0.19.2", "typedoc-plugin-markdown": "^2.2.16", diff --git a/packages/sdk/contractkit/src/wrappers/Accounts.ts b/packages/sdk/contractkit/src/wrappers/Accounts.ts index ef3c447701f..1a5671982f1 100644 --- a/packages/sdk/contractkit/src/wrappers/Accounts.ts +++ b/packages/sdk/contractkit/src/wrappers/Accounts.ts @@ -8,7 +8,7 @@ import { } from '@celo/utils/lib/signatureUtils' import { soliditySha3 } from '@celo/utils/lib/solidity' import { authorizeSigner as buildAuthorizeSignerTypedData } from '@celo/utils/lib/typed-data-constructors' -import BN from 'bn.js' // just the types +import type BN from 'bn.js' // just the types import { Accounts } from '../generated/Accounts' import { newContractVersion } from '../versions' import { diff --git a/packages/sdk/explorer/package.json b/packages/sdk/explorer/package.json index 2fc8e91a901..eddbde15b9b 100644 --- a/packages/sdk/explorer/package.json +++ b/packages/sdk/explorer/package.json @@ -28,6 +28,7 @@ "@celo/utils": "5.0.4", "@types/debug": "^4.1.5", "cross-fetch": "3.0.6", + "bignumber.js": "9.0.0", "debug": "^4.1.1" }, "devDependencies": { diff --git a/packages/sdk/governance/package.json b/packages/sdk/governance/package.json index 1cd38b3740a..f1b116fad35 100644 --- a/packages/sdk/governance/package.json +++ b/packages/sdk/governance/package.json @@ -30,6 +30,7 @@ "@types/debug": "^4.1.5", "@types/inquirer": "^6.5.0", "debug": "^4.1.1", + "bignumber.js": "^9.0.0", "ethereum-cryptography": "1.2.0", "inquirer": "^7.0.5" }, diff --git a/packages/sdk/wallets/wallet-base/src/signing-utils.ts b/packages/sdk/wallets/wallet-base/src/signing-utils.ts index edafbe5c14a..f0a6b874886 100644 --- a/packages/sdk/wallets/wallet-base/src/signing-utils.ts +++ b/packages/sdk/wallets/wallet-base/src/signing-utils.ts @@ -15,7 +15,6 @@ import { } from '@celo/connect/lib/utils/formatter' import { EIP712TypedData, generateTypedDataHash } from '@celo/utils/lib/sign-typed-data-utils' import { parseSignatureWithoutPrefix } from '@celo/utils/lib/signatureUtils' -import { RLP } from '@ethereumjs/rlp' import { Address, bufferToHex, @@ -28,7 +27,7 @@ import { } from '@ethereumjs/util' import debugFactory from 'debug' // @ts-ignore-next-line eth-lib types not found -import { account as Account, bytes as Bytes, hash as Hash } from 'eth-lib' +import { account as Account, bytes as Bytes, hash as Hash, RLP } from 'eth-lib' import { keccak256 } from 'ethereum-cryptography/keccak' import { hexToBytes } from 'ethereum-cryptography/utils.js' import Web3 from 'web3' // TODO try to do this without web3 direct @@ -129,11 +128,12 @@ export function rlpEncodedTx(tx: CeloTx): RLPEncodedTx { transaction.maxFeePerGas = stringNumberOrBNToHex(tx.maxFeePerGas) transaction.maxPriorityFeePerGas = stringNumberOrBNToHex(tx.maxPriorityFeePerGas) + let rlpEncode: Hex if (isCIP42(tx)) { // There shall be a typed transaction with the code 0x7c that has the following format: // 0x7c || rlp([chain_id, nonce, max_priority_fee_per_gas, max_fee_per_gas, gas_limit, feecurrency, gatewayFeeRecipient, gatewayfee, destination, amount, data, access_list, signature_y_parity, signature_r, signature_s]). // This will be in addition to the type 0x02 transaction as specified in EIP-1559. - const rlpEncode = RLP.encode([ + rlpEncode = RLP.encode([ stringNumberToHex(transaction.chainId), stringNumberToHex(transaction.nonce), transaction.maxPriorityFeePerGas || '0x', @@ -147,11 +147,11 @@ export function rlpEncodedTx(tx: CeloTx): RLPEncodedTx { transaction.data || '0x', transaction.accessList || [], ]) - return { transaction, rlpEncode: concatHex(['0x7c', rlpEncode.toString()]), type: 'cip42' } + return { transaction, rlpEncode: concatHex(['0x7c', rlpEncode]), type: 'cip42' } } else if (isEIP1559(tx)) { // https://eips.ethereum.org/EIPS/eip-1559 // 0x02 || rlp([chain_id, nonce, max_priority_fee_per_gas, max_fee_per_gas, gas_limit, destination, amount, data, access_list, signature_y_parity, signature_r, signature_s]). - const rlpEncode = RLP.encode([ + rlpEncode = RLP.encode([ stringNumberToHex(transaction.chainId), stringNumberToHex(transaction.nonce), transaction.maxPriorityFeePerGas || '0x', @@ -162,11 +162,11 @@ export function rlpEncodedTx(tx: CeloTx): RLPEncodedTx { transaction.data || '0x', transaction.accessList || [], ]) - return { transaction, rlpEncode: concatHex(['0x02', rlpEncode.toString()]), type: 'eip1559' } + return { transaction, rlpEncode: concatHex(['0x02', rlpEncode]), type: 'eip1559' } } else { // This order should match the order in Geth. // https://github.com/celo-org/celo-blockchain/blob/027dba2e4584936cc5a8e8993e4e27d28d5247b8/core/types/transaction.go#L65 - const rlpEncode = RLP.encode([ + rlpEncode = RLP.encode([ stringNumberToHex(transaction.nonce), transaction.gasPrice, transaction.gas, @@ -180,8 +180,7 @@ export function rlpEncodedTx(tx: CeloTx): RLPEncodedTx { '0x', '0x', ]) - - return { transaction, rlpEncode: rlpEncode.toString() as Hex, type: 'celo-legacy' } + return { transaction, rlpEncode, type: 'celo-legacy' } } } diff --git a/packages/sdk/wallets/wallet-hsm-aws/package.json b/packages/sdk/wallets/wallet-hsm-aws/package.json index 6d77d8501fa..8c5dc8b9f36 100644 --- a/packages/sdk/wallets/wallet-hsm-aws/package.json +++ b/packages/sdk/wallets/wallet-hsm-aws/package.json @@ -38,6 +38,7 @@ "devDependencies": { "@celo/connect": "5.0.4", "elliptic": "^6.5.4", + "dotenv": "^8.2.0", "web3": "1.10.0" }, "engines": { diff --git a/packages/sdk/wallets/wallet-hsm-gcp/package.json b/packages/sdk/wallets/wallet-hsm-gcp/package.json index f8ca23cda0d..2cb1ea1eece 100644 --- a/packages/sdk/wallets/wallet-hsm-gcp/package.json +++ b/packages/sdk/wallets/wallet-hsm-gcp/package.json @@ -36,6 +36,7 @@ "devDependencies": { "@celo/connect": "5.0.4", "elliptic": "^6.5.4", + "dotenv": "^8.2.0", "web3": "1.10.0" }, "engines": { diff --git a/packages/sdk/wallets/wallet-hsm/package.json b/packages/sdk/wallets/wallet-hsm/package.json index 922f42d6ac5..f7a99450502 100644 --- a/packages/sdk/wallets/wallet-hsm/package.json +++ b/packages/sdk/wallets/wallet-hsm/package.json @@ -33,6 +33,9 @@ "elliptic": "^6.5.4", "secp256k1": "^4.0.0" }, + "devDependencies": { + "dotenv": "^8.2.0" + }, "engines": { "node": ">=8.14.2" } diff --git a/packages/sdk/wallets/wallet-rpc/package.json b/packages/sdk/wallets/wallet-rpc/package.json index b69d872ea26..8c6f5e2dc5c 100644 --- a/packages/sdk/wallets/wallet-rpc/package.json +++ b/packages/sdk/wallets/wallet-rpc/package.json @@ -22,6 +22,8 @@ "prepublishOnly": "yarn build" }, "dependencies": { + "@types/bn.js": "^5.1.0", + "@celo/base": "5.0.4", "@celo/connect": "5.0.4", "@celo/utils": "5.0.4", "@celo/wallet-base": "5.0.4", @@ -31,7 +33,9 @@ }, "devDependencies": { "@celo/dev-utils": "0.0.1", - "@celo/contractkit": "5.0.4" + "@celo/contractkit": "5.0.4", + "bn.js": "^5.1.0", + "web3": "1.10.1" }, "engines": { "node": ">=8.14.2" diff --git a/packages/sdk/wallets/wallet-rpc/src/rpc-signer.ts b/packages/sdk/wallets/wallet-rpc/src/rpc-signer.ts index 00fce4de197..d59a7cb965a 100644 --- a/packages/sdk/wallets/wallet-rpc/src/rpc-signer.ts +++ b/packages/sdk/wallets/wallet-rpc/src/rpc-signer.ts @@ -3,7 +3,7 @@ import { CeloTx, EncodedTransaction, RpcCaller, Signer } from '@celo/connect' import { EIP712TypedData } from '@celo/utils/lib/sign-typed-data-utils' import { decodeSig } from '@celo/wallet-base' import BigNumber from 'bignumber.js' -import BN from 'bn.js' +import type BN from 'bn.js' const INCORRECT_PASSWORD_ERROR = 'could not decrypt key with given password' const currentTimeInSeconds = () => Math.floor(Date.now() / 1000) From 678ec4d2c045a2d6fe04e5d8197db14cd80a91ca Mon Sep 17 00:00:00 2001 From: Aaron DeRuvo Date: Thu, 21 Sep 2023 18:51:23 +0200 Subject: [PATCH 3/8] and these --- packages/celotool/tslint.json | 2 +- packages/cli/package.json | 4 ++++ packages/sdk/encrypted-backup/package.json | 2 ++ 3 files changed, 7 insertions(+), 1 deletion(-) diff --git a/packages/celotool/tslint.json b/packages/celotool/tslint.json index 93b2037a260..ae0e82b60fb 100644 --- a/packages/celotool/tslint.json +++ b/packages/celotool/tslint.json @@ -5,7 +5,7 @@ }, "rules": { "no-implicit-dependencies": [ - true, + false, [ "src" ] diff --git a/packages/cli/package.json b/packages/cli/package.json index 2916d8f20c7..a0fc0b69aab 100644 --- a/packages/cli/package.json +++ b/packages/cli/package.json @@ -32,6 +32,8 @@ "test": "TZ=UTC jest --runInBand" }, "dependencies": { + "@celo/base": "^5.0.4", + "@celo/connect": "^5.0.4", "@celo/contractkit": "^5.0.4", "@celo/explorer": "^5.0.4", "@celo/governance": "^5.0.4", @@ -43,6 +45,8 @@ "@celo/wallet-ledger": "^5.0.4", "@celo/wallet-local": "^5.0.4", "@ledgerhq/hw-transport-node-hid": "^6.27.4", + "@oclif/parser": "^3.8.16", + "@oclif/errors": "^1.3.6", "@oclif/command": "^1.6.0", "@oclif/config": "^1.6.0", "@oclif/plugin-autocomplete": "^0.1.5", diff --git a/packages/sdk/encrypted-backup/package.json b/packages/sdk/encrypted-backup/package.json index 91d3b40d768..854c42cf104 100644 --- a/packages/sdk/encrypted-backup/package.json +++ b/packages/sdk/encrypted-backup/package.json @@ -25,8 +25,10 @@ "prepublishOnly": "yarn build" }, "dependencies": { + "@celo/connect": "5.0.4", "@celo/base": "5.0.4", "@celo/identity": "5.0.4", + "@celo/wallet-local": "5.0.4", "@celo/phone-number-privacy-common": "^3.0.3", "@celo/poprf": "^0.1.9", "@celo/utils": "5.0.4", From ee7db3b3a4e1ebea3cb96ca5ee840be8418ec04b Mon Sep 17 00:00:00 2001 From: Aaron DeRuvo Date: Thu, 21 Sep 2023 19:49:52 +0200 Subject: [PATCH 4/8] yarn --- packages/sdk/wallets/wallet-rpc/package.json | 2 +- yarn.lock | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/packages/sdk/wallets/wallet-rpc/package.json b/packages/sdk/wallets/wallet-rpc/package.json index 8c6f5e2dc5c..2a949f62270 100644 --- a/packages/sdk/wallets/wallet-rpc/package.json +++ b/packages/sdk/wallets/wallet-rpc/package.json @@ -35,7 +35,7 @@ "@celo/dev-utils": "0.0.1", "@celo/contractkit": "5.0.4", "bn.js": "^5.1.0", - "web3": "1.10.1" + "web3": "1.10.0" }, "engines": { "node": ">=8.14.2" diff --git a/yarn.lock b/yarn.lock index b11e6c253cb..5192ca6bf95 100644 --- a/yarn.lock +++ b/yarn.lock @@ -8608,7 +8608,7 @@ bn.js@^4.0.0, bn.js@^4.1.0, bn.js@^4.11.0, bn.js@^4.11.6, bn.js@^4.11.8, bn.js@^ resolved "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz" integrity sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA== -bn.js@^5.0.0, bn.js@^5.1.1, bn.js@^5.1.2, bn.js@^5.1.3, bn.js@^5.2.0, bn.js@^5.2.1: +bn.js@^5.0.0, bn.js@^5.1.0, bn.js@^5.1.1, bn.js@^5.1.2, bn.js@^5.1.3, bn.js@^5.2.0, bn.js@^5.2.1: version "5.2.1" resolved "https://registry.npmjs.org/bn.js/-/bn.js-5.2.1.tgz" integrity sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ== @@ -12748,7 +12748,7 @@ export-files@^2.0.1: dependencies: lazy-cache "^1.0.3" -express@^4.14.0, express@^4.16.4, express@^4.17.1: +express@^4.14.0, express@^4.16.4, express@^4.17.1, express@^4.17.6: version "4.18.2" resolved "https://registry.npmjs.org/express/-/express-4.18.2.tgz" integrity sha512-5/PsL6iGPdfQ/lKM1UuielYgv3BUoJfz1aUwU9vHZ+J7gyvwdQXFEBIEIaxeGf0GIcreATNyBExtalisDbuMqQ== From c5f8ab02325e84d26af2a59eae1dd5f165b05c11 Mon Sep 17 00:00:00 2001 From: Aaron DeRuvo Date: Thu, 21 Sep 2023 20:02:35 +0200 Subject: [PATCH 5/8] true graph --- dependency-graph.json | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/dependency-graph.json b/dependency-graph.json index 0e826914ea7..09cb3ad8123 100644 --- a/dependency-graph.json +++ b/dependency-graph.json @@ -19,6 +19,8 @@ "@celo/celocli": { "location": "packages/cli", "dependencies": [ + "@celo/base", + "@celo/connect", "@celo/contractkit", "@celo/cryptographic-utils", "@celo/dev-utils", @@ -96,6 +98,7 @@ "@celo/phone-number-privacy-monitor": { "location": "packages/phone-number-privacy/monitor", "dependencies": [ + "@celo/base", "@celo/contractkit", "@celo/cryptographic-utils", "@celo/encrypted-backup", @@ -152,10 +155,12 @@ "location": "packages/sdk/encrypted-backup", "dependencies": [ "@celo/base", + "@celo/connect", "@celo/dev-utils", "@celo/identity", "@celo/phone-number-privacy-common", - "@celo/utils" + "@celo/utils", + "@celo/wallet-local" ] }, "@celo/explorer": { @@ -246,6 +251,7 @@ "@celo/wallet-hsm-azure": { "location": "packages/sdk/wallets/wallet-hsm-azure", "dependencies": [ + "@celo/base", "@celo/connect", "@celo/utils", "@celo/wallet-base", @@ -272,6 +278,7 @@ "@celo/wallet-ledger": { "location": "packages/sdk/wallets/wallet-ledger", "dependencies": [ + "@celo/base", "@celo/connect", "@celo/utils", "@celo/wallet-base", @@ -297,6 +304,7 @@ "@celo/wallet-rpc": { "location": "packages/sdk/wallets/wallet-rpc", "dependencies": [ + "@celo/base", "@celo/connect", "@celo/contractkit", "@celo/dev-utils", From 0afae555f1ddc837906f5927b71df68df2336bd6 Mon Sep 17 00:00:00 2001 From: Aaron DeRuvo Date: Fri, 22 Sep 2023 08:36:44 +0200 Subject: [PATCH 6/8] dont use base package --- packages/phone-number-privacy/combiner/package.json | 1 - packages/phone-number-privacy/signer/src/tracing.ts | 5 ++--- 2 files changed, 2 insertions(+), 4 deletions(-) diff --git a/packages/phone-number-privacy/combiner/package.json b/packages/phone-number-privacy/combiner/package.json index 47e7b4d68a6..9eac240bea0 100644 --- a/packages/phone-number-privacy/combiner/package.json +++ b/packages/phone-number-privacy/combiner/package.json @@ -45,7 +45,6 @@ "@opentelemetry/sdk-node": "^0.41.2", "@opentelemetry/sdk-trace-web": "^1.15.2", "@opentelemetry/sdk-trace-node": "1.15.2", - "@opentelemetry/sdk-trace-base": "^1.17.0", "@opentelemetry/semantic-conventions": "^1.15.2", "blind-threshold-bls": "npm:@celo/blind-threshold-bls@1.0.0-beta", "dotenv": "^8.2.0", diff --git a/packages/phone-number-privacy/signer/src/tracing.ts b/packages/phone-number-privacy/signer/src/tracing.ts index 0d75525c9a7..6bdcd64d327 100644 --- a/packages/phone-number-privacy/signer/src/tracing.ts +++ b/packages/phone-number-privacy/signer/src/tracing.ts @@ -9,8 +9,7 @@ import { getNodeAutoInstrumentations } from '@opentelemetry/auto-instrumentation import { JaegerExporter } from '@opentelemetry/exporter-jaeger' import { registerInstrumentations } from '@opentelemetry/instrumentation' import { Resource } from '@opentelemetry/resources' -import { BatchSpanProcessor } from '@opentelemetry/sdk-trace-base' -import { NodeTracerProvider } from '@opentelemetry/sdk-trace-node' +import { BatchSpanProcessor, NodeTracerProvider } from '@opentelemetry/sdk-trace-node' /* Some instrumentations included in auto-instrumentations-node: - https://www.npmjs.com/package/@opentelemetry/sdk-trace-web @@ -67,7 +66,7 @@ const resource = Resource.default().merge( new Resource({ [SemanticResourceAttributes.SERVICE_NAME]: process.env.TRACING_SERVICE_NAME, // 'testing-signer-tracing', - [SemanticResourceAttributes.SERVICE_VERSION]: '0.1.0', + [SemanticResourceAttributes.SERVICE_VERSION]: '0.1.0', // should be the same as package.json version? }) ) From 282316262ab0f8b4ee1be357f44cd99142068dde Mon Sep 17 00:00:00 2001 From: Aaron DeRuvo Date: Fri, 22 Sep 2023 12:13:47 +0200 Subject: [PATCH 7/8] fix my mistakes --- packages/phone-number-privacy/combiner/package.json | 1 + packages/sdk/utils/package.json | 2 +- packages/sdk/utils/src/istanbul.ts | 2 +- 3 files changed, 3 insertions(+), 2 deletions(-) diff --git a/packages/phone-number-privacy/combiner/package.json b/packages/phone-number-privacy/combiner/package.json index 9eac240bea0..47e7b4d68a6 100644 --- a/packages/phone-number-privacy/combiner/package.json +++ b/packages/phone-number-privacy/combiner/package.json @@ -45,6 +45,7 @@ "@opentelemetry/sdk-node": "^0.41.2", "@opentelemetry/sdk-trace-web": "^1.15.2", "@opentelemetry/sdk-trace-node": "1.15.2", + "@opentelemetry/sdk-trace-base": "^1.17.0", "@opentelemetry/semantic-conventions": "^1.15.2", "blind-threshold-bls": "npm:@celo/blind-threshold-bls@1.0.0-beta", "dotenv": "^8.2.0", diff --git a/packages/sdk/utils/package.json b/packages/sdk/utils/package.json index de9c3e6dcd7..a4fd8b5a58b 100644 --- a/packages/sdk/utils/package.json +++ b/packages/sdk/utils/package.json @@ -24,7 +24,7 @@ "dependencies": { "@celo/base": "5.0.4", "@ethereumjs/util": "8.0.5", - "@ethereumjs/rlp": "^5.0.0", + "rlp": "^2.2.4", "@types/bn.js": "^5.1.0", "@types/elliptic": "^6.4.9", "@types/node": "^18.7.16", diff --git a/packages/sdk/utils/src/istanbul.ts b/packages/sdk/utils/src/istanbul.ts index 4611550d71f..6134716872c 100644 --- a/packages/sdk/utils/src/istanbul.ts +++ b/packages/sdk/utils/src/istanbul.ts @@ -1,4 +1,4 @@ -import { RLP as rlp } from '@ethereumjs/rlp' +import * as rlp from 'rlp' import { bufferToHex, toChecksumAddress } from '@ethereumjs/util' import BigNumber from 'bignumber.js' import { Address } from './address' From 4ecf276a4cfff55079c91ef198e81eb5ddd21f8b Mon Sep 17 00:00:00 2001 From: Aaron DeRuvo Date: Fri, 22 Sep 2023 12:36:27 +0200 Subject: [PATCH 8/8] import order --- packages/sdk/utils/src/istanbul.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/sdk/utils/src/istanbul.ts b/packages/sdk/utils/src/istanbul.ts index 6134716872c..4ee6bcb080e 100644 --- a/packages/sdk/utils/src/istanbul.ts +++ b/packages/sdk/utils/src/istanbul.ts @@ -1,6 +1,6 @@ -import * as rlp from 'rlp' import { bufferToHex, toChecksumAddress } from '@ethereumjs/util' import BigNumber from 'bignumber.js' +import * as rlp from 'rlp' import { Address } from './address' // This file contains utilities that help with istanbul-specific block information.