From d03492d09f38ebcf002ecebd2d4d92a7d663b2f0 Mon Sep 17 00:00:00 2001 From: SDargarh Date: Thu, 15 Feb 2024 13:28:42 +0530 Subject: [PATCH] Updated sign transaction to use ethereumjs-tx module --- CHANGELOG.md | 7 +- package-lock.json | 214 +++++++--------------------------------------- package.json | 5 +- src/index.js | 15 ++-- 4 files changed, 45 insertions(+), 196 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index adc657e..1ee76c2 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -20,4 +20,9 @@ ##### Updated 'main' path and Updated signTransaction Method. - Updated 'main' path to "src/index.js" . -- Removed signTransaction() dependency from getFees(). \ No newline at end of file +- Removed signTransaction() dependency from getFees(). + +### 1.0.1 (2024-02-15) + +- Updated sign transaction to use ethereumjs-tx module. +- Removed unused dependencies. \ No newline at end of file diff --git a/package-lock.json b/package-lock.json index f0171b6..46c114b 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,16 +1,14 @@ { "name": "@getsafle/vault-polygon-zkevm-controller", - "version": "1.0.0", + "version": "1.0.1", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "@getsafle/vault-polygon-zkevm-controller", - "version": "1.0.0", + "version": "1.0.1", "license": "MIT", "dependencies": { - "@ethereumjs/common": "^4.1.0", - "@ethereumjs/tx": "^5.1.0", "axios": "^1.6.2", "bip39": "^3.0.4", "browser-passworder": "^2.0.3", @@ -18,6 +16,7 @@ "eth-hd-keyring": "^3.6.0", "eth-sig-util": "^3.0.1", "eth-simple-keyring": "^4.2.0", + "ethereumjs-tx": "^1.3.7", "ethereumjs-util": "^7.1.0", "hdkey": "^2.0.1", "loglevel": "^1.7.1", @@ -716,109 +715,6 @@ "node": "^10.12.0 || >=12.0.0" } }, - "node_modules/@ethereumjs/common": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/@ethereumjs/common/-/common-4.1.0.tgz", - "integrity": "sha512-XWdQvUjlQHVwh4uGEPFKHpsic69GOsMXEhlHrggS5ju/+2zAmmlz6B25TkCCymeElC9DUp13tH5Tc25Iuvtlcg==", - "dependencies": { - "@ethereumjs/util": "^9.0.1", - "crc": "^4.3.2" - } - }, - "node_modules/@ethereumjs/common/node_modules/@ethereumjs/rlp": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/@ethereumjs/rlp/-/rlp-5.0.1.tgz", - "integrity": "sha512-Ab/Hfzz+T9Zl+65Nkg+9xAmwKPLicsnQ4NW49pgvJp9ovefuic95cgOS9CbPc9izIEgsqm1UitV0uNveCvud9w==", - "bin": { - "rlp": "bin/rlp.cjs" - }, - "engines": { - "node": ">=18" - } - }, - "node_modules/@ethereumjs/common/node_modules/@ethereumjs/util": { - "version": "9.0.1", - "resolved": "https://registry.npmjs.org/@ethereumjs/util/-/util-9.0.1.tgz", - "integrity": "sha512-NdFFEzCc3H1sYkNnnySwLg6owdQMhjUc2jfuDyx8Xv162WSluCnnSKouKOSG3njGNEyy2I9NmF8zTRDwuqpZWA==", - "dependencies": { - "@ethereumjs/rlp": "^5.0.1", - "ethereum-cryptography": "^2.1.2" - }, - "engines": { - "node": ">=18" - }, - "peerDependencies": { - "c-kzg": "^2.1.2" - }, - "peerDependenciesMeta": { - "c-kzg": { - "optional": true - } - } - }, - "node_modules/@ethereumjs/common/node_modules/@noble/hashes": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.3.1.tgz", - "integrity": "sha512-EbqwksQwz9xDRGfDST86whPBgM65E0OH/pCgqW0GBVzO22bNE+NuIbeTb714+IfSjU3aRk47EUvXIb5bTsenKA==", - "engines": { - "node": ">= 16" - }, - "funding": { - "url": "https://paulmillr.com/funding/" - } - }, - "node_modules/@ethereumjs/common/node_modules/buffer": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", - "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "optional": true, - "peer": true, - "dependencies": { - "base64-js": "^1.3.1", - "ieee754": "^1.2.1" - } - }, - "node_modules/@ethereumjs/common/node_modules/crc": { - "version": "4.3.2", - "resolved": "https://registry.npmjs.org/crc/-/crc-4.3.2.tgz", - "integrity": "sha512-uGDHf4KLLh2zsHa8D8hIQ1H/HtFQhyHrc0uhHBcoKGol/Xnb+MPYfUMw7cvON6ze/GUESTudKayDcJC5HnJv1A==", - "engines": { - "node": ">=12" - }, - "peerDependencies": { - "buffer": ">=6.0.3" - }, - "peerDependenciesMeta": { - "buffer": { - "optional": true - } - } - }, - "node_modules/@ethereumjs/common/node_modules/ethereum-cryptography": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ethereum-cryptography/-/ethereum-cryptography-2.1.2.tgz", - "integrity": "sha512-Z5Ba0T0ImZ8fqXrJbpHcbpAvIswRte2wGNR/KePnu8GbbvgJ47lMxT/ZZPG6i9Jaht4azPDop4HaM00J0J59ug==", - "dependencies": { - "@noble/curves": "1.1.0", - "@noble/hashes": "1.3.1", - "@scure/bip32": "1.3.1", - "@scure/bip39": "1.2.1" - } - }, "node_modules/@ethereumjs/rlp": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/@ethereumjs/rlp/-/rlp-4.0.1.tgz", @@ -830,81 +726,6 @@ "node": ">=14" } }, - "node_modules/@ethereumjs/tx": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/@ethereumjs/tx/-/tx-5.1.0.tgz", - "integrity": "sha512-VUhw2+4yXArJZRWhPjmZFrN4WUjUo0qUZUszVpW2KzsGlqCFf67kwJcH9Rca5eS0CRHjr2qHJLpvYOjNuaXVdA==", - "dependencies": { - "@ethereumjs/common": "^4.1.0", - "@ethereumjs/rlp": "^5.0.1", - "@ethereumjs/util": "^9.0.1", - "ethereum-cryptography": "^2.1.2" - }, - "engines": { - "node": ">=18" - }, - "peerDependencies": { - "c-kzg": "^2.1.2" - }, - "peerDependenciesMeta": { - "c-kzg": { - "optional": true - } - } - }, - "node_modules/@ethereumjs/tx/node_modules/@ethereumjs/rlp": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/@ethereumjs/rlp/-/rlp-5.0.1.tgz", - "integrity": "sha512-Ab/Hfzz+T9Zl+65Nkg+9xAmwKPLicsnQ4NW49pgvJp9ovefuic95cgOS9CbPc9izIEgsqm1UitV0uNveCvud9w==", - "bin": { - "rlp": "bin/rlp.cjs" - }, - "engines": { - "node": ">=18" - } - }, - "node_modules/@ethereumjs/tx/node_modules/@ethereumjs/util": { - "version": "9.0.1", - "resolved": "https://registry.npmjs.org/@ethereumjs/util/-/util-9.0.1.tgz", - "integrity": "sha512-NdFFEzCc3H1sYkNnnySwLg6owdQMhjUc2jfuDyx8Xv162WSluCnnSKouKOSG3njGNEyy2I9NmF8zTRDwuqpZWA==", - "dependencies": { - "@ethereumjs/rlp": "^5.0.1", - "ethereum-cryptography": "^2.1.2" - }, - "engines": { - "node": ">=18" - }, - "peerDependencies": { - "c-kzg": "^2.1.2" - }, - "peerDependenciesMeta": { - "c-kzg": { - "optional": true - } - } - }, - "node_modules/@ethereumjs/tx/node_modules/@noble/hashes": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.3.1.tgz", - "integrity": "sha512-EbqwksQwz9xDRGfDST86whPBgM65E0OH/pCgqW0GBVzO22bNE+NuIbeTb714+IfSjU3aRk47EUvXIb5bTsenKA==", - "engines": { - "node": ">= 16" - }, - "funding": { - "url": "https://paulmillr.com/funding/" - } - }, - "node_modules/@ethereumjs/tx/node_modules/ethereum-cryptography": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ethereum-cryptography/-/ethereum-cryptography-2.1.2.tgz", - "integrity": "sha512-Z5Ba0T0ImZ8fqXrJbpHcbpAvIswRte2wGNR/KePnu8GbbvgJ47lMxT/ZZPG6i9Jaht4azPDop4HaM00J0J59ug==", - "dependencies": { - "@noble/curves": "1.1.0", - "@noble/hashes": "1.3.1", - "@scure/bip32": "1.3.1", - "@scure/bip39": "1.2.1" - } - }, "node_modules/@ethereumjs/util": { "version": "8.1.0", "resolved": "https://registry.npmjs.org/@ethereumjs/util/-/util-8.1.0.tgz", @@ -3584,6 +3405,11 @@ "js-sha3": "^0.8.0" } }, + "node_modules/ethereum-common": { + "version": "0.0.18", + "resolved": "https://registry.npmjs.org/ethereum-common/-/ethereum-common-0.0.18.tgz", + "integrity": "sha512-EoltVQTRNg2Uy4o84qpa2aXymXDJhxm7eos/ACOg0DG4baAbMjhbdAEsx9GeE8sC3XCxnYvrrzZDH8D8MtA2iQ==" + }, "node_modules/ethereum-cryptography": { "version": "0.1.3", "resolved": "https://registry.npmjs.org/ethereum-cryptography/-/ethereum-cryptography-0.1.3.tgz", @@ -3637,6 +3463,30 @@ "rlp": "^2.2.3" } }, + "node_modules/ethereumjs-tx": { + "version": "1.3.7", + "resolved": "https://registry.npmjs.org/ethereumjs-tx/-/ethereumjs-tx-1.3.7.tgz", + "integrity": "sha512-wvLMxzt1RPhAQ9Yi3/HKZTn0FZYpnsmQdbKYfUUpi4j1SEIcbkd9tndVjcPrufY3V7j2IebOpC00Zp2P/Ay2kA==", + "deprecated": "New package name format for new versions: @ethereumjs/tx. Please update.", + "dependencies": { + "ethereum-common": "^0.0.18", + "ethereumjs-util": "^5.0.0" + } + }, + "node_modules/ethereumjs-tx/node_modules/ethereumjs-util": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/ethereumjs-util/-/ethereumjs-util-5.2.1.tgz", + "integrity": "sha512-v3kT+7zdyCm1HIqWlLNrHGqHGLpGYIhjeHxQjnDXjLT2FyGJDsd3LWMYUo7pAFRrk86CR3nUJfhC81CCoJNNGQ==", + "dependencies": { + "bn.js": "^4.11.0", + "create-hash": "^1.1.2", + "elliptic": "^6.5.2", + "ethereum-cryptography": "^0.1.3", + "ethjs-util": "^0.1.3", + "rlp": "^2.0.0", + "safe-buffer": "^5.1.1" + } + }, "node_modules/ethereumjs-util": { "version": "7.1.5", "resolved": "https://registry.npmjs.org/ethereumjs-util/-/ethereumjs-util-7.1.5.tgz", diff --git a/package.json b/package.json index 91e02dc..1b77ec1 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@getsafle/vault-polygon-zkevm-controller", - "version": "1.0.0", + "version": "1.0.1", "description": "Polygon zkEVM controller for Safle Vault", "main": "src/index.js", "scripts": { @@ -45,8 +45,6 @@ "nyc": "^15.0.0" }, "dependencies": { - "@ethereumjs/common": "^4.1.0", - "@ethereumjs/tx": "^5.1.0", "axios": "^1.6.2", "bip39": "^3.0.4", "browser-passworder": "^2.0.3", @@ -54,6 +52,7 @@ "eth-hd-keyring": "^3.6.0", "eth-sig-util": "^3.0.1", "eth-simple-keyring": "^4.2.0", + "ethereumjs-tx": "^1.3.7", "ethereumjs-util": "^7.1.0", "hdkey": "^2.0.1", "loglevel": "^1.7.1", diff --git a/src/index.js b/src/index.js index a06d4a6..7355d33 100644 --- a/src/index.js +++ b/src/index.js @@ -11,8 +11,7 @@ const { normalize: normalizeAddress } = require('eth-sig-util') const SimpleKeyring = require('eth-simple-keyring') const HdKeyring = require('eth-hd-keyring') -const { LegacyTransaction } = require('@ethereumjs/tx') -const { Common, Hardfork } = require('@ethereumjs/common') +const Tx = require('ethereumjs-tx'); const { bufferToHex } = require('ethereumjs-util') const axios = require('axios') @@ -264,17 +263,13 @@ class KeyringController extends EventEmitter { async signTransaction(rawTx, privateKey) { - const pkey = Buffer.from(privateKey, 'hex'); - - const chainId = rawTx.chainId; - - const common = Common.custom({ chainId: chainId }, { hardfork: Hardfork.Istanbul }) + const tx = new Tx(rawTx); - const tx = LegacyTransaction.fromTxData(rawTx, { common }) + const pkey = Buffer.from(privateKey, 'hex'); - const signedTransaction = tx.sign(pkey); + tx.sign(pkey); - const signedTx = bufferToHex(signedTransaction.serialize()); + const signedTx = `0x${tx.serialize().toString('hex')}`; return signedTx }