@exodus/ethereum-lib 5.8.0 → 6.0.0-alpha.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/package.json CHANGED
@@ -1,55 +1,49 @@
1
1
  {
2
2
  "name": "@exodus/ethereum-lib",
3
- "version": "5.8.0",
4
- "description": "Ethereum utils, such as for cryptography, address encoding/decoding, transaction building, etc.",
5
- "type": "module",
3
+ "version": "6.0.0-alpha.0",
4
+ "description": "Ethereum Library",
6
5
  "main": "src/index.js",
7
6
  "files": [
8
7
  "src",
9
- "CHANGELOG.md",
10
8
  "!src/**/__tests__"
11
9
  ],
12
10
  "author": "Exodus Movement, Inc.",
13
11
  "license": "UNLICENSED",
14
- "homepage": "https://github.com/ExodusMovement/assets/tree/master/ethereum/ethereum-lib",
12
+ "homepage": "https://github.com/ExodusMovement/assets/tree/main/ethereum",
15
13
  "publishConfig": {
16
14
  "access": "restricted"
17
15
  },
18
16
  "scripts": {
19
- "test": "run -T exodus-test --jest",
20
- "lint": "run -T eslintc .",
17
+ "test": "run -T jest",
18
+ "lint": "run -T eslint src",
21
19
  "lint:fix": "yarn lint --fix"
22
20
  },
23
21
  "dependencies": {
24
- "@exodus/basic-utils": "^3.0.1",
25
- "@exodus/currency": "^6.0.1",
26
- "@exodus/ethereumjs": "^1.2.0",
27
- "@exodus/key-utils": "^3.7.0",
28
- "@exodus/models": "^12.0.1",
22
+ "@exodus/asset-lib": "^4.1.0",
23
+ "@exodus/basic-utils": "^0.7.0",
24
+ "@exodus/currency": "^2.3.2",
25
+ "@exodus/ethereum-meta": "^1.5.1",
26
+ "@exodus/ethereumjs-common": "^2.4.0-exodus.6",
27
+ "@exodus/ethereumjs-tx": "^3.3.0-exodus.7",
28
+ "@exodus/ethereumjs-util": "^7.1.0-exodus.7",
29
+ "@exodus/key-utils": "^3.1.0",
30
+ "@exodus/models": "^11.0.0",
29
31
  "@exodus/solidity-contract": "^1.1.3",
30
32
  "@metamask/eth-sig-util": "^4.0.1",
31
33
  "base-x": "^3.0.2",
34
+ "ethjs-util": "0.1.6",
32
35
  "lodash": "^4.17.15",
33
36
  "minimalistic-assert": "^1.0.1",
34
37
  "ms": "^2.1.1",
35
- "reselect": "^3.0.1"
38
+ "reselect": "~3.0.1"
36
39
  },
37
40
  "devDependencies": {
38
- "@exodus/assets": "^11.0.0",
39
- "@exodus/bitcoin-meta": "^2.0.0",
40
- "@exodus/bsc-meta": "^2.0.0",
41
- "@exodus/crypto": "^1.0.0-rc.13",
42
- "@exodus/ethereum-meta": "^2.0.0",
43
- "@exodus/ethereumclassic-meta": "^2.0.0",
44
- "@exodus/fantommainnet-meta": "^2.0.0",
45
- "@exodus/matic-meta": "^2.0.0"
46
- },
47
- "bugs": {
48
- "url": "https://github.com/ExodusMovement/assets/issues?q=is%3Aissue+is%3Aopen+label%3Aethereum-lib"
49
- },
50
- "repository": {
51
- "type": "git",
52
- "url": "git+https://github.com/ExodusMovement/assets.git"
53
- },
54
- "gitHead": "e533b61cf7895212101c3be53f90463e13e91f36"
41
+ "@exodus/assets": "^9.1.1",
42
+ "@exodus/bitcoin-meta": "^1.0.2",
43
+ "@exodus/bsc-meta": "^1.2.2",
44
+ "@exodus/elliptic": "^6.5.4-precomputed",
45
+ "@exodus/ethereumclassic-meta": "^1.0.3",
46
+ "@exodus/fantommainnet-meta": "^1.1.2",
47
+ "@exodus/matic-meta": "^1.3.0"
48
+ }
55
49
  }
package/src/abi/index.js CHANGED
@@ -1,23 +1,23 @@
1
- import ant from './ant.js'
2
- import cdai from './cdai.js'
3
- import dai from './dai.js'
4
- import ensRegistry from './ens-registry.js'
5
- import ensResolver from './ens-resolver.js'
6
- import erc721 from './erc721.js'
7
- import ethStakingAccounting from './eth-staking-accounting.js'
8
- import ethStakingPool from './eth-staking-pool.js'
9
- import fantomSfc from './fantom-sfc.js'
10
- import gnt from './gnt.js'
11
- import erc20BytesParams from './ierc20-bytes-params.js'
12
- import erc20 from './ierc20-extended.js'
1
+ import ant from './ant'
2
+ import cdai from './cdai'
3
+ import dai from './dai'
4
+ import erc20 from './ierc20-extended'
5
+ import erc20BytesParams from './ierc20-bytes-params'
6
+ import erc721 from './erc721'
7
+ import ethStakingAccounting from './eth-staking-accounting'
8
+ import ethStakingPool from './eth-staking-pool'
9
+ import gnt from './gnt'
13
10
  import kyberv2 from './kyberv2.js'
14
- import loomv2Swap from './loomv2-swap.js'
15
- import matic from './matic.js'
16
- import maticStakingManager from './matic-staking-manager.js'
17
- import maticValidatorShare from './matic-validator-share.js'
18
- import optimismGasOracle from './optimism-gas-oracle.js'
19
- import repv2 from './repv2.js'
20
- import scdMcdMigration from './scd-mcd-migration.js'
11
+ import loomv2Swap from './loomv2-swap'
12
+ import repv2 from './repv2'
13
+ import scdMcdMigration from './scd-mcd-migration'
14
+ import maticValidatorShare from './matic-validator-share'
15
+ import maticStakingManager from './matic-staking-manager'
16
+ import matic from './matic'
17
+ import fantomSfc from './fantom-sfc'
18
+ import ensRegistry from './ens-registry'
19
+ import ensResolver from './ens-resolver'
20
+ import optimismGasOracle from './optimism-gas-oracle'
21
21
 
22
22
  const index = {
23
23
  ant,
@@ -1,6 +1,6 @@
1
1
  import { AccountState } from '@exodus/models'
2
2
 
3
- import { parseLegacyBalances } from './parse-legacy-balances.js'
3
+ import { parseLegacyBalances } from './parse-legacy-balances'
4
4
 
5
5
  // `assets` are only needed for chains that may need legacy parsing and staking support
6
6
  export default function createEthereumLikeAccountState({ asset, extraData = {}, assets = {} }) {
@@ -1,7 +1,5 @@
1
1
  import { isNumberUnit } from '@exodus/currency'
2
- import lodash from 'lodash'
3
-
4
- const { isNumber, isString } = lodash
2
+ import { isNumber, isString } from 'lodash'
5
3
 
6
4
  function parseBalance({ asset, balance }) {
7
5
  const currency = asset.currency
@@ -11,7 +9,7 @@ function parseBalance({ asset, balance }) {
11
9
  }
12
10
 
13
11
  throw new Error(
14
- `Balance '${balance.toDefaultString({ unit: true })}' is not of currency ${currency.toDefaultString({ unit: true })}`
12
+ `Balance '${balance.toDefaultString()}' is not of currency ${currency.toString()}`
15
13
  )
16
14
  }
17
15
 
@@ -0,0 +1,29 @@
1
+ import { get } from 'lodash'
2
+
3
+ // @deprecated to be removed. Use balances!
4
+ export const getEthereumBalances = ({ asset, liquidBalance, accountState }) => {
5
+ // asset = ethereum or ethereumgoerli or ethereumholesky
6
+ const delegatedBalance = get(
7
+ accountState,
8
+ ['staking', asset.name, 'delegatedBalance'],
9
+ asset.currency.ZERO
10
+ )
11
+ const undelegatedBalance = get(
12
+ accountState,
13
+ ['staking', asset.name, 'unclaimedUndelegatedBalance'],
14
+ asset.currency.ZERO
15
+ )
16
+ const rewardsReceived = get(
17
+ accountState,
18
+ ['staking', asset.name, 'totalRewardsReceived'],
19
+ asset.currency.ZERO
20
+ )
21
+ const totalBalance = liquidBalance
22
+ .add(delegatedBalance)
23
+ .add(undelegatedBalance)
24
+ .add(rewardsReceived)
25
+ return {
26
+ balance: totalBalance,
27
+ liquidBalance: liquidBalance.add(rewardsReceived),
28
+ }
29
+ }
@@ -0,0 +1,3 @@
1
+ // @deprecated to be removed. Use balances!
2
+ export * from './ethereum-balance'
3
+ export * from './polygon-balance'
@@ -0,0 +1,23 @@
1
+ import { get } from 'lodash'
2
+ import assets from '@exodus/ethereum-meta'
3
+
4
+ const polygon = assets.find(({ name: tokenName }) => tokenName === 'polygon')
5
+
6
+ // @deprecated to be removed. Use balances!
7
+ export const getPolygonBalances = ({ liquidBalance, accountState }) => {
8
+ const delegatedBalance = get(
9
+ accountState,
10
+ 'staking.polygon.delegatedBalance',
11
+ polygon.currency.ZERO
12
+ )
13
+ const undelegatedBalance = get(
14
+ accountState,
15
+ 'staking.polygon.unclaimedUndelegatedBalance',
16
+ polygon.currency.ZERO
17
+ )
18
+ const totalBalance = liquidBalance.add(delegatedBalance).add(undelegatedBalance)
19
+ return {
20
+ balance: totalBalance,
21
+ liquidBalance,
22
+ }
23
+ }
package/src/constants.js CHANGED
@@ -1,152 +1,4 @@
1
- import { mapValues } from '@exodus/basic-utils'
2
-
3
- /* @deprecated */
4
- const CHAIN_DATA = {
5
- ethereum: {
6
- chainId: 1,
7
- serverUrl: 'https://geth.a.exodus.io/wallet/v1/',
8
- confirmationsNumber: 30,
9
- },
10
- ethereumclassic: {
11
- chainId: 61,
12
- serverUrl: 'https://getc.a.exodus.io/wallet/v1/',
13
- confirmationsNumber: 5000,
14
- },
15
- ethereumgoerli: {
16
- chainId: 5,
17
- serverUrl: 'https://geth-goerli-testnet-d.a.exodus.io/wallet/v1/',
18
- confirmationsNumber: 30,
19
- },
20
- ethereumholesky: {
21
- chainId: 17_000,
22
- serverUrl: 'https://geth-holesky-testnet-d.a.exodus.io/wallet/v1/',
23
- confirmationsNumber: 30,
24
- },
25
- ethereumsepolia: {
26
- chainId: 11_155_111,
27
- serverUrl: 'https://geth-sepolia-testnet-d.a.exodus.io/wallet/v1/',
28
- confirmationsNumber: 30,
29
- },
30
- bsc: {
31
- chainId: 56,
32
- serverUrl: 'https://bsc-clarity.a.exodus.io/',
33
- confirmationsNumber: 15,
34
- monitorType: 'clarity',
35
- tokenType: 'BSC_BEP20',
36
- },
37
- matic: {
38
- chainId: 137,
39
- serverUrl: 'https://polygon-clarity.a.exodus.io/',
40
- monitorType: 'clarity',
41
- confirmationsNumber: 50,
42
- },
43
- avalanchec: {
44
- chainId: 43_114,
45
- serverUrl: 'https://avax-c.a.exodus.io/wallet/v1/',
46
- confirmationsNumber: 30,
47
- tokenType: 'AVAX_ERC20',
48
- },
49
- fantommainnet: {
50
- chainId: 250,
51
- serverUrl: 'https://fantom.a.exodus.io/wallet/v1/',
52
- confirmationsNumber: 3,
53
- },
54
- harmonymainnet: {
55
- chainId: 1_666_600_000,
56
- serverUrl: 'https://harmony.a.exodus.io/wallet/v1/',
57
- confirmationsNumber: 6,
58
- },
59
- ethereumarbnova: {
60
- chainId: 42_170,
61
- serverUrl: 'https://nova.arbitrum.io/rpc',
62
- confirmationsNumber: 3,
63
- monitorType: 'no-history',
64
- },
65
- ethereumarbone: {
66
- chainId: 42_161,
67
- serverUrl: 'https://arbitrum-one-clarity.a.exodus.io',
68
- confirmationsNumber: 3,
69
- monitorType: 'clarity',
70
- },
71
- optimism: {
72
- chainId: 10,
73
- serverUrl: 'https://optimism-clarity.a.exodus.io',
74
- confirmationsNumber: 3,
75
- monitorType: 'clarity',
76
- tokenType: 'OPT_ERC20',
77
- },
78
- rootstock: {
79
- chainId: 30,
80
- serverUrl: 'https://rsk.a.exodus.io',
81
- confirmationsNumber: 3,
82
- monitorType: 'no-history',
83
- },
84
- flare: {
85
- chainId: 14,
86
- serverUrl: 'https://flare-nn.a.exodus.io/ext/C/rpc',
87
- confirmationsNumber: 30,
88
- monitorType: 'no-history',
89
- },
90
- aurora: {
91
- chainId: 1_313_161_554,
92
- serverUrl: 'https://aurora.a.exodus.io',
93
- confirmationsNumber: 3,
94
- monitorType: 'no-history',
95
- },
96
- basemainnet: {
97
- chainId: 8453,
98
- serverUrl: 'https://base-qn.a.exodus.io',
99
- confirmationsNumber: 30,
100
- monitorType: 'no-history',
101
- },
102
- cronos: {
103
- chainId: 25,
104
- serverUrl: 'https://cronos.a.exodus.io',
105
- confirmationsNumber: 6,
106
- monitorType: 'no-history',
107
- },
108
- mantle: {
109
- chainId: 5000,
110
- serverUrl: 'https://mantle-qn.a.exodus.io',
111
- confirmationsNumber: 30,
112
- monitorType: 'no-history',
113
- },
114
- mantlesepolia: {
115
- chainId: 5003,
116
- serverUrl: 'https://mantle-sepolia-qn.a.exodus.io',
117
- confirmationsNumber: 30,
118
- monitorType: 'no-history',
119
- },
120
- ethereumarbonesepolia: {
121
- chainId: 421_614,
122
- serverUrl: 'https://arbitrum-sepolia-qn.a.exodus.io',
123
- confirmationsNumber: 3,
124
- monitorType: 'no-history',
125
- },
126
- }
127
-
128
- /* @deprecated */
129
- export const DEFAULT_SERVER_URLS = mapValues(CHAIN_DATA, ({ serverUrl }) => serverUrl)
130
- /* @deprecated */
131
- export const ETHEREUM_LIKE_MONITOR_TYPES = mapValues(
132
- CHAIN_DATA,
133
- ({ monitorType }) => monitorType || 'magnifier'
134
- )
135
- /* @deprecated */
136
- export const CHAIN_IDS = mapValues(CHAIN_DATA, ({ chainId }) => chainId)
137
-
138
1
  export const MIN_GASPRICE = 1e9 // 1 gwei
139
2
  export const DEFAULT_FEE_MONITOR_INTERVAL = '1m'
140
- /* @deprecated */
141
- export const CONFIRMATIONS_NUMBER = mapValues(
142
- CHAIN_DATA,
143
- ({ confirmationsNumber }) => confirmationsNumber
144
- )
145
- /* @deprecated */
146
- export const ETHEREUM_LIKE_ASSETS = Object.keys(CHAIN_DATA)
147
3
 
148
4
  export const BUMP_RATE = 1.2
149
- /* @deprecated */
150
- export const ETHEREUM_LIKE_NO_HISTORY_ASSET_NAMES = Object.keys(CHAIN_DATA).filter(
151
- (key) => CHAIN_DATA[key].monitorType === 'no-history'
152
- )
@@ -1,14 +1,14 @@
1
- import { bufferToHex, toBuffer } from '@exodus/ethereumjs/util'
1
+ import ethUtil from '@exodus/ethereumjs-util'
2
2
 
3
3
  // TODO: obsolete, remove this
4
4
  // TODO: migrate to using solidity-contract
5
5
  export default function createContract(addresses, currency) {
6
6
  // First 4 bytes of Keccak256('transfer(address,uint256)')
7
- // const TRANSFER_METHOD_ID = bufferToHex(sha3('transfer(address,uint256)').slice(0, 4))
7
+ // const TRANSFER_METHOD_ID = ethUtil.bufferToHex(ethUtil.sha3('transfer(address,uint256)').slice(0, 4))
8
8
  const TRANSFER_METHOD_ID = '0xa9059cbb'
9
9
 
10
10
  // Keccak256('Transfer(address,address,uint256)')
11
- // const TRANSFER_EVENT_ID = bufferToHex(sha3('Transfer(address,address,uint256)'))
11
+ // const TRANSFER_EVENT_ID = ethUtil.bufferToHex(ethUtil.sha3('Transfer(address,address,uint256)'))
12
12
  const TRANSFER_EVENT_ID = '0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef'
13
13
 
14
14
  const transfer = {
@@ -17,33 +17,33 @@ export default function createContract(addresses, currency) {
17
17
 
18
18
  build(to, bufAmount) {
19
19
  return Buffer.concat([
20
- toBuffer(TRANSFER_METHOD_ID),
21
- Buffer.alloc(12),
22
- toBuffer(to),
23
- Buffer.alloc(32 - bufAmount.length),
20
+ ethUtil.toBuffer(TRANSFER_METHOD_ID),
21
+ ethUtil.zeros(12),
22
+ ethUtil.toBuffer(to),
23
+ ethUtil.zeros(32 - bufAmount.length),
24
24
  bufAmount,
25
25
  ])
26
26
  },
27
27
 
28
28
  test(data) {
29
- return bufferToHex(data.slice(0, 4)) === TRANSFER_METHOD_ID
29
+ return ethUtil.bufferToHex(data.slice(0, 4)) === TRANSFER_METHOD_ID
30
30
  },
31
31
 
32
32
  parse(data) {
33
33
  if (!transfer.test(data)) throw new Error('It is not transfer data')
34
34
 
35
35
  return {
36
- to: bufferToHex(data.slice(16, 36)),
37
- amount: currency.baseUnit(bufferToHex(data.slice(36, 68))),
36
+ to: ethUtil.bufferToHex(data.slice(16, 36)),
37
+ amount: currency.baseUnit(ethUtil.bufferToHex(data.slice(36, 68))),
38
38
  }
39
39
  },
40
40
  }
41
41
 
42
- // bufferToHex(sha3('approve(address,uint256)').slice(0, 4))
42
+ // ethUtil.bufferToHex(ethUtil.sha3('approve(address,uint256)').slice(0, 4))
43
43
  const APPROVE_METHOD_ID = '0x095ea7b3'
44
44
 
45
45
  // TODO: not verified:
46
- // bufferToHex(sha3('Approval(address,address,uint256)'))
46
+ // ethUtil.bufferToHex(ethUtil.sha3('Approval(address,address,uint256)'))
47
47
  const APPROVE_EVENT_ID = '0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925'
48
48
 
49
49
  const approve = {
@@ -52,24 +52,24 @@ export default function createContract(addresses, currency) {
52
52
 
53
53
  build(address, bufAmount) {
54
54
  return Buffer.concat([
55
- toBuffer(APPROVE_METHOD_ID),
56
- Buffer.alloc(12),
57
- toBuffer(address),
58
- Buffer.alloc(32 - bufAmount.length),
55
+ ethUtil.toBuffer(APPROVE_METHOD_ID),
56
+ ethUtil.zeros(12),
57
+ ethUtil.toBuffer(address),
58
+ ethUtil.zeros(32 - bufAmount.length),
59
59
  bufAmount,
60
60
  ])
61
61
  },
62
62
 
63
63
  test(data) {
64
- return bufferToHex(data.slice(0, 4)) === APPROVE_METHOD_ID
64
+ return ethUtil.bufferToHex(data.slice(0, 4)) === APPROVE_METHOD_ID
65
65
  },
66
66
 
67
67
  parse(data) {
68
68
  if (!approve.test(data)) throw new Error('It is not approve data')
69
69
 
70
70
  return {
71
- address: bufferToHex(data.slice(16, 36)),
72
- amount: currency.baseUnit(bufferToHex(data.slice(36, 68))),
71
+ address: ethUtil.bufferToHex(data.slice(16, 36)),
72
+ amount: currency.baseUnit(ethUtil.bufferToHex(data.slice(36, 68))),
73
73
  }
74
74
  },
75
75
  }
@@ -1,6 +1,5 @@
1
1
  import SolidityContract from '@exodus/solidity-contract'
2
-
3
- import ABI from '../abi/index.js'
2
+ import ABI from '../abi'
4
3
 
5
4
  export default function createContract(address, contractName) {
6
5
  // keep switch logic in anticipation of support for ERC721
package/src/encode.js CHANGED
@@ -1,10 +1,4 @@
1
- import {
2
- isValidChecksumAddress,
3
- isValidPrivate as _isValidPrivate,
4
- privateToAddress,
5
- publicToAddress,
6
- toChecksumAddress,
7
- } from '@exodus/ethereumjs/util'
1
+ import * as etherUtil from '@exodus/ethereumjs-util'
8
2
  import assert from 'minimalistic-assert'
9
3
 
10
4
  export const validateFactory = ({ chainId, useEip1191ChainIdChecksum }) => {
@@ -21,8 +15,8 @@ export const validateFactory = ({ chainId, useEip1191ChainIdChecksum }) => {
21
15
  if (!hasChecksum(address)) return true
22
16
 
23
17
  return (
24
- (useEip1191ChainIdChecksum && isValidChecksumAddress(address, chainId)) ||
25
- isValidChecksumAddress(address)
18
+ (useEip1191ChainIdChecksum && etherUtil.isValidChecksumAddress(address, chainId)) ||
19
+ etherUtil.isValidChecksumAddress(address)
26
20
  )
27
21
  }
28
22
  }
@@ -41,9 +35,9 @@ export const encodePublicFactory = ({ chainId, useEip1191ChainIdChecksum }) => {
41
35
  'chainId is required when useEip1191ChainIdChecksum is true'
42
36
  )
43
37
  return (compressedPubKey) => {
44
- const hash160bits = publicToAddress(compressedPubKey, true)
38
+ const hash160bits = etherUtil.publicToAddress(compressedPubKey, true)
45
39
 
46
- const basicAddress = toChecksumAddress(
40
+ const basicAddress = etherUtil.toChecksumAddress(
47
41
  '0x' + hash160bits.toString('hex'),
48
42
  useEip1191ChainIdChecksum ? chainId : undefined
49
43
  )
@@ -52,7 +46,7 @@ export const encodePublicFactory = ({ chainId, useEip1191ChainIdChecksum }) => {
52
46
  }
53
47
 
54
48
  export function isValidPrivate(privateKey) {
55
- return privateKey.length === 32 && _isValidPrivate(privateKey)
49
+ return !(privateKey.length !== 32 || !etherUtil.isValidPrivate(privateKey))
56
50
  }
57
51
 
58
52
  export const encodePublicFromPrivateFactory = ({ chainId, useEip1191ChainIdChecksum }) => {
@@ -61,8 +55,8 @@ export const encodePublicFromPrivateFactory = ({ chainId, useEip1191ChainIdCheck
61
55
  'chainId is required when useEip1191ChainIdChecksum is true'
62
56
  )
63
57
  return (privateKey) => {
64
- return toChecksumAddress(
65
- '0x' + privateToAddress(privateKey).toString('hex'),
58
+ return etherUtil.toChecksumAddress(
59
+ '0x' + etherUtil.privateToAddress(privateKey).toString('hex'),
66
60
  useEip1191ChainIdChecksum ? chainId : undefined
67
61
  )
68
62
  }
package/src/index.js CHANGED
@@ -1,12 +1,13 @@
1
- export * from './encode.js'
2
- export * from './unsigned-tx/index.js'
3
- export * from './utils/index.js'
4
- export * from './constants.js'
5
- export * from './selectors/index.js'
6
- export { signMessage, signMessageWithSigner } from './sign-message.js'
7
- export { default as createGetKeyIdentifier } from './key-identifier.js'
8
- export { default as createEthereumLikeAccountState } from './account-state/index.js'
1
+ export * from './balances'
2
+ export * from './encode'
3
+ export * from './unsigned-tx'
4
+ export * from './utils'
5
+ export * from './constants'
6
+ export * from './selectors'
7
+ export { signMessage, signMessageWithSigner } from './sign-message'
8
+ export { default as createGetKeyIdentifier } from './key-identifier'
9
+ export { default as createEthereumLikeAccountState } from './account-state'
9
10
 
10
- export { default as createContract } from './create-contract/index.js'
11
- export { default as ABI } from './abi/index.js'
12
- export { ethStakeAccountState } from './account-state/staking-data.js'
11
+ export { default as createContract } from './create-contract'
12
+ export { default as ABI } from './abi'
13
+ export { ethStakeAccountState } from './account-state/staking-data'
@@ -1,5 +1,5 @@
1
- import { createGetKeyIdentifier, unhardenDerivationIndex } from '@exodus/key-utils'
2
1
  import assert from 'minimalistic-assert'
2
+ import { createGetKeyIdentifier, unhardenDerivationIndex } from '@exodus/key-utils'
3
3
 
4
4
  const createEthereumGetKeyIdentifier =
5
5
  ({ bip44, assetName, keyType = 'secp256k1', allowMetaMaskCompat = false } = {}) =>
@@ -1,8 +1,7 @@
1
- import ms from 'ms'
2
1
  import { createSelector } from 'reselect'
3
-
4
- import { BUMP_RATE } from '../constants.js'
5
- import { isEthereumLike } from '../utils/index.js'
2
+ import ms from 'ms'
3
+ import { isEthereumLike } from '../utils'
4
+ import { BUMP_RATE } from '../constants'
6
5
 
7
6
  const MINUTE = ms('1m')
8
7
  const BumpType = {
@@ -3,6 +3,6 @@ export {
3
3
  calculateBumpedGasPrice,
4
4
  getPendingNonExchangeTxs,
5
5
  getAssetPendingNonExchangeTxs,
6
- } from './get-can-accelerate-tx-factory.js'
6
+ } from './get-can-accelerate-tx-factory'
7
7
 
8
- export { default as getIsEnoughBalanceToAccelerateSelectorFactory } from './get-is-enough-balance-to-accelerate-factory.js'
8
+ export { default as getIsEnoughBalanceToAccelerateSelectorFactory } from './get-is-enough-balance-to-accelerate-factory'
@@ -1,14 +1,14 @@
1
- import { hashPersonalMessage } from '@exodus/ethereumjs/util'
1
+ import assert from 'minimalistic-assert'
2
2
  import {
3
- personalSign,
4
- signTypedData,
5
3
  SignTypedDataVersion,
6
- TypedDataUtils,
7
4
  typedSignatureHash,
5
+ TypedDataUtils,
6
+ personalSign,
7
+ signTypedData,
8
+ concatSig,
8
9
  } from '@metamask/eth-sig-util'
9
- import assert from 'minimalistic-assert'
10
-
11
- import { normalizeRecoveryParam } from './utils/ecdsa.js'
10
+ import { hashPersonalMessage, toBuffer } from '@exodus/ethereumjs-util'
11
+ import { normalizeRecoveryParam } from './utils/ecdsa'
12
12
 
13
13
  function hex0xStringToBuffer(hex) {
14
14
  // Remove the 0x
@@ -55,11 +55,20 @@ export const signMessage = async ({ privateKey, message }) => {
55
55
  }
56
56
  }
57
57
 
58
+ /**
59
+ * @typedef {import('bn.js').BN} BN
60
+ * @typedef {{r: BN, s: BN, recoverParam: number}} Signature
61
+ * @typedef {{
62
+ * sign: ({ data: Buffer, ecOptions?: { canonical?: boolean }, enc?: string }) => Promise<Signature | Buffer>
63
+ * getPublicKey: () => Promise<Buffer>
64
+ * }} Signer
65
+ */
66
+
58
67
  /**
59
68
  * @param {object} params
60
69
  * @param {{rawMessage: Buffer, EIP712Message: any}} params.message
61
- * @param {object} signer
62
- * @returns {Promise<string>}
70
+ * @param {Signer} signer
71
+ * @return {Promise<string>}
63
72
  */
64
73
  export async function signMessageWithSigner({ message, signer }) {
65
74
  const { rawMessage, EIP712Message } = message
@@ -69,14 +78,20 @@ export async function signMessageWithSigner({ message, signer }) {
69
78
  ? getEIP712MessageHash(EIP712Message)
70
79
  : hashPersonalMessage(rawMessage)
71
80
 
72
- const { signature, recovery } = await signer.sign({
81
+ const sig = await signer.sign({
73
82
  data: msgHash,
74
- enc: 'sig,rec',
83
+ ecOptions: { canonical: true },
84
+ enc: 'raw',
75
85
  signatureType: 'ecdsa',
76
86
  })
77
87
 
78
- const recoveryNormalized = normalizeRecoveryParam(recovery, { includeBase: true })
79
- return Buffer.concat([signature, new Uint8Array([recoveryNormalized])])
88
+ return hex0xStringToBuffer(
89
+ concatSig(
90
+ toBuffer(normalizeRecoveryParam(sig.recoveryParam, { includeBase: true })),
91
+ sig.r.toBuffer(),
92
+ sig.s.toBuffer()
93
+ )
94
+ )
80
95
  }
81
96
 
82
97
  function getEIP712MessageHash(message) {
@@ -1,5 +1,5 @@
1
- import createUnsignedTxFactory from './create-unsigned-tx.js'
2
- import signUnsignedTx from './sign-unsigned-tx.js'
1
+ import createUnsignedTxFactory from './create-unsigned-tx'
2
+ import signUnsignedTx from './sign-unsigned-tx'
3
3
 
4
4
  export default function createAndSignTxFactory({ chainId }) {
5
5
  return (input, privateKey) => {
@@ -1,5 +1,5 @@
1
- import { Common, Hardfork } from '@exodus/ethereumjs/common'
2
- import { FeeMarketEIP1559Transaction, Transaction } from '@exodus/ethereumjs/tx'
1
+ import { Transaction, FeeMarketEIP1559Transaction } from '@exodus/ethereumjs-tx'
2
+ import Common, { Hardfork } from '@exodus/ethereumjs-common'
3
3
 
4
4
  export default function createEthereumJsTx(unsignedTx) {
5
5
  const {
@@ -1,7 +1,8 @@
1
- import { intToBuffer, toBuffer } from '@exodus/ethereumjs/util'
2
- import assert from 'minimalistic-assert'
1
+ import { toBuffer } from '@exodus/ethereumjs-util'
2
+ import { intToBuffer } from 'ethjs-util'
3
3
 
4
- import { currency2buffer, isToken } from '../utils/index.js'
4
+ import { isToken, currency2buffer } from '../utils'
5
+ import assert from 'minimalistic-assert'
5
6
 
6
7
  export default function createUnsignedTxFactory({ chainId }) {
7
8
  assert(typeof chainId === 'number', 'chainId is required')
@@ -1,6 +1,6 @@
1
- export { default as createUnsignedTxFactory } from './create-unsigned-tx.js'
2
- export { default as parseUnsignedTx } from './parse-unsigned-tx.js'
3
- export { default as signUnsignedTx, signUnsignedTxWithSigner } from './sign-unsigned-tx.js'
4
- export { default as createAndSignTxFactory } from './create-and-sign-tx.js'
5
- export { default as createEthereumJsTx } from './create-ethereumjs-tx.js'
6
- export { signHardwareFactory } from './sign-hardware.js'
1
+ export { default as createUnsignedTxFactory } from './create-unsigned-tx'
2
+ export { default as parseUnsignedTx } from './parse-unsigned-tx'
3
+ export { default as signUnsignedTx, signUnsignedTxWithSigner } from './sign-unsigned-tx'
4
+ export { default as createAndSignTxFactory } from './create-and-sign-tx'
5
+ export { default as createEthereumJsTx } from './create-ethereumjs-tx'
6
+ export { signHardwareFactory } from './sign-hardware'
@@ -1,13 +1,12 @@
1
- import { bufferToInt } from '@exodus/ethereumjs/util'
2
-
3
- import { buffer2currency, isToken } from '../utils/index.js'
1
+ import * as ethUtil from '@exodus/ethereumjs-util'
2
+ import { isToken, buffer2currency } from '../utils'
4
3
 
5
4
  export default function parseUnsignedTx(asset, unsignedTx) {
6
5
  const { txData } = unsignedTx
7
6
  const _isToken = isToken(asset)
8
7
  const baseAsset = asset.baseAsset
9
8
  const gasPrice = buffer2currency({ asset: baseAsset, value: txData.gasPrice })
10
- const gasLimit = bufferToInt(txData.gasLimit)
9
+ const gasLimit = ethUtil.bufferToInt(txData.gasLimit)
11
10
 
12
11
  let { to, data, value } = txData
13
12
  let amount
@@ -16,7 +15,7 @@ export default function parseUnsignedTx(asset, unsignedTx) {
16
15
  const { method, values } = asset.contract.decodeInput(data)
17
16
  if (method === 'transfer' || method === 'approve') {
18
17
  to = values[0]
19
- amount = asset.currency.baseUnit(values[1])
18
+ amount = asset.currency.baseUnit(values[1]).toDefault()
20
19
  } else {
21
20
  to = values[0]
22
21
  amount = asset.currency.ZERO
@@ -1,6 +1,5 @@
1
1
  import assert from 'minimalistic-assert'
2
-
3
- import createEthereumJsTx from './create-ethereumjs-tx.js'
2
+ import createEthereumJsTx from './create-ethereumjs-tx'
4
3
 
5
4
  export const signHardwareFactory =
6
5
  ({ baseAssetName }) =>
@@ -1,4 +1,4 @@
1
- import createEthereumJsTx from './create-ethereumjs-tx.js'
1
+ import createEthereumJsTx from './create-ethereumjs-tx'
2
2
 
3
3
  function prepareRawTx(signedTx) {
4
4
  // serialize and get txId
@@ -11,12 +11,14 @@ export async function signUnsignedTxWithSigner(unsignedTx, signer) {
11
11
  const tx = createEthereumJsTx(unsignedTx)
12
12
 
13
13
  const ethSigner = async (data) => {
14
- const { signature, recovery } = await signer.sign({
15
- data,
16
- enc: 'sig,rec',
17
- signatureType: 'ecdsa',
18
- })
19
- return { signature, recid: recovery }
14
+ // temporarily support both function and object
15
+ const sig = await (typeof signer === 'function'
16
+ ? signer({ data, ecOptions: { canonical: true }, enc: 'raw', signatureType: 'ecdsa' })
17
+ : signer.sign({ data, ecOptions: { canonical: true }, enc: 'raw', signatureType: 'ecdsa' }))
18
+ const signature = new Uint8Array(64)
19
+ signature.set(sig.r.toArrayLike(Uint8Array, 'be', 32), 0)
20
+ signature.set(sig.s.toArrayLike(Uint8Array, 'be', 32), 32)
21
+ return { signature, recid: sig.recoveryParam }
20
22
  }
21
23
 
22
24
  const signedTx = await tx.signWithSigner(ethSigner)
@@ -6,10 +6,5 @@ export default function ({ fee, balance, multiplier = defaultMultiplier }) {
6
6
  if (typeof multiplier !== 'number' || multiplier < 1) multiplier = defaultMultiplier
7
7
  if (balance.gt(fee)) return balance.unitType.ZERO
8
8
 
9
- return fee
10
- .mul(multiplier)
11
- .sub(balance)
12
- .toDefault() // ensure correct unit before `toFixed`
13
- .toFixed(4, 'ceil')
14
- .toDefaultString({ unit: true })
9
+ return fee.mul(multiplier).sub(balance).toDefault().toFixed(4, 'ceil').toString()
15
10
  }
@@ -1,11 +1,9 @@
1
- import { FeeMarketEIP1559Transaction, Transaction } from '@exodus/ethereumjs/tx'
2
- import { padToEven, toBuffer } from '@exodus/ethereumjs/util'
3
1
  import baseX from 'base-x'
2
+ import * as ethUtil from '@exodus/ethereumjs-util'
3
+ import { FeeMarketEIP1559Transaction, Transaction } from '@exodus/ethereumjs-tx'
4
+ import { uniq } from 'lodash'
4
5
 
5
- // eslint-disable-next-line @exodus/import/no-deprecated
6
- import { ETHEREUM_LIKE_NO_HISTORY_ASSET_NAMES } from '../constants.js'
7
-
8
- export { default as calculateExtraEth } from './calculate-extra-eth.js'
6
+ export { default as calculateExtraEth } from './calculate-extra-eth'
9
7
 
10
8
  const base10 = baseX('0123456789')
11
9
  const base16 = baseX('0123456789abcdef')
@@ -61,7 +59,7 @@ export const isEthereumLikeByName = (assetName) => {
61
59
  }
62
60
 
63
61
  export function buffer2currency({ asset, value }) {
64
- return asset.currency.baseUnit(base10.encode(value))
62
+ return asset.currency.baseUnit(base10.encode(value)).toDefault()
65
63
  }
66
64
 
67
65
  export function currency2buffer(value) {
@@ -75,7 +73,7 @@ export function currency2buffer(value) {
75
73
  throw new RangeError(`${value.toBaseString()} can not be converted to Buffer`)
76
74
  }
77
75
 
78
- return Buffer.from(padToEven(hexValue), 'hex')
76
+ return Buffer.from(ethUtil.padToEven(hexValue), 'hex')
79
77
  }
80
78
 
81
79
  export function normalizeTxId(txId) {
@@ -92,7 +90,7 @@ const TRANSACTION_TYPE = 2
92
90
  const TRANSACTION_TYPE_BUFFER = Buffer.from(TRANSACTION_TYPE.toString(16).padStart(2, '0'), 'hex')
93
91
 
94
92
  export function deserialize(hex) {
95
- const buf = toBuffer(hex)
93
+ const buf = ethUtil.toBuffer(hex)
96
94
  return buf.slice(0, 1).equals(TRANSACTION_TYPE_BUFFER)
97
95
  ? FeeMarketEIP1559Transaction.fromSerializedTx(buf)
98
96
  : Transaction.fromSerializedTx(buf)
@@ -160,8 +158,7 @@ export const isRpcBalanceAsset = (asset) =>
160
158
  'steth',
161
159
  'weth',
162
160
  ...customTokensWithRpcBalance,
163
- // eslint-disable-next-line @exodus/import/no-deprecated
164
- ].includes(asset.name) || ETHEREUM_LIKE_NO_HISTORY_ASSET_NAMES.includes(asset.baseAsset.name)
161
+ ].includes(asset.name)
165
162
 
166
163
  export const getAssetAddresses = (asset) => {
167
164
  // It seems to be two schemas of assets. The original and the transformed by the client.
@@ -172,5 +169,5 @@ export const getAssetAddresses = (asset) => {
172
169
  ...(asset.addresses?.previous || []), // asset in wallets:
173
170
  ...(asset.contract?.previous || []), // asset in @exodus/assets-base:
174
171
  ]
175
- return [...new Set(addresses.filter((a) => a && typeof a === 'string'))]
172
+ return uniq(addresses.filter((a) => a && typeof a === 'string'))
176
173
  }
package/CHANGELOG.md DELETED
@@ -1,239 +0,0 @@
1
- # Change Log
2
-
3
- All notable changes to this project will be documented in this file.
4
- See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
5
-
6
- ## [5.8.0](https://github.com/ExodusMovement/assets/compare/@exodus/ethereum-lib@5.7.0...@exodus/ethereum-lib@5.8.0) (2024-12-09)
7
-
8
-
9
- ### Features
10
-
11
-
12
- * feat: migrate ethereum arbnova to be indexless (#4642)
13
-
14
-
15
-
16
- ## [5.7.0](https://github.com/ExodusMovement/assets/compare/@exodus/ethereum-lib@5.6.0...@exodus/ethereum-lib@5.7.0) (2024-10-29)
17
-
18
-
19
- ### Features
20
-
21
- * introduce exodus/ethereumjs ([#4339](https://github.com/ExodusMovement/assets/issues/4339)) ([e81d577](https://github.com/ExodusMovement/assets/commit/e81d5771c4956a22cfcf434a999310bbb5be81a3))
22
- * load more imports from ethereumjs/util ([#4379](https://github.com/ExodusMovement/assets/issues/4379)) ([dead85c](https://github.com/ExodusMovement/assets/commit/dead85cfb55223c344af506d8d7ca7cf7eeb516c))
23
-
24
-
25
- ### Bug Fixes
26
-
27
- * remove stray direct dependencies ([#4176](https://github.com/ExodusMovement/assets/issues/4176)) ([c4f93fa](https://github.com/ExodusMovement/assets/commit/c4f93fad5a930b40d326d7add1093b2d4f243f2a))
28
-
29
-
30
-
31
- ## [5.6.0](https://github.com/ExodusMovement/assets/compare/@exodus/ethereum-lib@5.5.0...@exodus/ethereum-lib@5.6.0) (2024-10-04)
32
-
33
-
34
- ### Features
35
-
36
- * **ethereum-lib:** use 'sig,rec' keychain enc ([#4155](https://github.com/ExodusMovement/assets/issues/4155)) ([d928541](https://github.com/ExodusMovement/assets/commit/d92854184bd26380192a224564b6dca924504975))
37
-
38
-
39
-
40
- ## [5.5.0](https://github.com/ExodusMovement/assets/compare/@exodus/ethereum-lib@5.4.0...@exodus/ethereum-lib@5.5.0) (2024-09-13)
41
-
42
-
43
- ### Features
44
-
45
- * use clarity polygon monitor ([#3113](https://github.com/ExodusMovement/assets/issues/3113)) ([89ad2b2](https://github.com/ExodusMovement/assets/commit/89ad2b29d29ba3f0d1454e7c21132659a3bf833d))
46
-
47
-
48
-
49
- ## [5.4.0](https://github.com/ExodusMovement/assets/compare/@exodus/ethereum-lib@5.3.0...@exodus/ethereum-lib@5.4.0) (2024-09-11)
50
-
51
-
52
- ### Features
53
-
54
- * switch ethereum to ESM ([#3374](https://github.com/ExodusMovement/assets/issues/3374)) ([d3a86c3](https://github.com/ExodusMovement/assets/commit/d3a86c3202754a0e6ab988d454d3e006ec11d9e4))
55
-
56
-
57
- ### Bug Fixes
58
-
59
- * lint for EVM assets ([#2969](https://github.com/ExodusMovement/assets/issues/2969)) ([16ca272](https://github.com/ExodusMovement/assets/commit/16ca272524ab1530800ca84f1df045293c08a3aa))
60
-
61
-
62
-
63
- ## [5.3.0](https://github.com/ExodusMovement/assets/compare/@exodus/ethereum-lib@5.2.1...@exodus/ethereum-lib@5.3.0) (2024-06-23)
64
-
65
-
66
- ### ⚠ BREAKING CHANGES
67
-
68
- * remove assetType from ethereum-lib (#2415)
69
-
70
- ### Bug Fixes
71
-
72
- * remove assetType from ethereum-lib ([#2415](https://github.com/ExodusMovement/assets/issues/2415)) ([98c2c01](https://github.com/ExodusMovement/assets/commit/98c2c018aa6328b21035afee848f431b349ab6ae))
73
-
74
-
75
-
76
- ## [5.2.1](https://github.com/ExodusMovement/assets/compare/@exodus/ethereum-lib@5.2.0...@exodus/ethereum-lib@5.2.1) (2024-06-10)
77
-
78
- **Note:** Version bump only for package @exodus/ethereum-lib
79
-
80
-
81
-
82
-
83
-
84
- ## [5.2.0](https://github.com/ExodusMovement/assets/compare/@exodus/ethereum-lib@5.1.1...@exodus/ethereum-lib@5.2.0) (2024-05-23)
85
-
86
-
87
- ### Features
88
-
89
- * add arbone sepolia ([#2359](https://github.com/ExodusMovement/assets/issues/2359)) ([3056882](https://github.com/ExodusMovement/assets/commit/3056882cad08722fdad14ffdb2149208af469cdf))
90
- * Mantle Sepolia support ([#2355](https://github.com/ExodusMovement/assets/issues/2355)) ([fff6710](https://github.com/ExodusMovement/assets/commit/fff6710a76cbac3f218a018090c210e03882439a))
91
-
92
-
93
-
94
- ## [5.1.1](https://github.com/ExodusMovement/assets/compare/@exodus/ethereum-lib@5.1.0...@exodus/ethereum-lib@5.1.1) (2024-05-21)
95
-
96
-
97
- ### Bug Fixes
98
-
99
- * remove unused ethereum-lib prod deps ([#2339](https://github.com/ExodusMovement/assets/issues/2339)) ([3f02d06](https://github.com/ExodusMovement/assets/commit/3f02d06f34881bdbec8f7de9fbb2dd52d0e20547))
100
-
101
-
102
-
103
- ## [5.1.0](https://github.com/ExodusMovement/assets/compare/@exodus/ethereum-lib@5.0.1...@exodus/ethereum-lib@5.1.0) (2024-05-20)
104
-
105
-
106
- ### Features
107
-
108
- * add Mantle EVM ([#2320](https://github.com/ExodusMovement/assets/issues/2320)) ([14ca748](https://github.com/ExodusMovement/assets/commit/14ca7486703bf4b1a16fa6af522e82a9e1309156))
109
-
110
-
111
-
112
- ## [5.0.1](https://github.com/ExodusMovement/assets/compare/@exodus/ethereum-lib@5.0.0...@exodus/ethereum-lib@5.0.1) (2024-05-20)
113
-
114
-
115
- ### Bug Fixes
116
-
117
- * gracefully handle different recovery param notations ([#2326](https://github.com/ExodusMovement/assets/issues/2326)) ([e7d0fbf](https://github.com/ExodusMovement/assets/commit/e7d0fbf389ace17b36e8792116df33b98fb872de))
118
-
119
-
120
-
121
- ## [5.0.0](https://github.com/ExodusMovement/assets/compare/@exodus/ethereum-lib@4.9.0...@exodus/ethereum-lib@5.0.0) (2024-05-17)
122
-
123
-
124
- ### ⚠ BREAKING CHANGES
125
-
126
- * evm chain data to be factory params (#2115)
127
- * chain id param in create and sign tx (#2282)
128
- * moved fee data to each EVM plugin (#2233)
129
- * evm useEip1191ChainIdChecksum param (#2110)
130
- * clean up evms fee data monitors (#2230)
131
-
132
- ### Features
133
-
134
- * demote USDC.e tokens ([#2300](https://github.com/ExodusMovement/assets/issues/2300)) ([17a51b3](https://github.com/ExodusMovement/assets/commit/17a51b3b2d42e70f55d41e8eb581e89cba19daed))
135
- * evm chain data to be factory params ([#2115](https://github.com/ExodusMovement/assets/issues/2115)) ([a2aeec1](https://github.com/ExodusMovement/assets/commit/a2aeec1b4da177b1e1bb85f92e93115fc97d5377))
136
-
137
-
138
- ### Code Refactoring
139
-
140
- * chain id param in create and sign tx ([#2282](https://github.com/ExodusMovement/assets/issues/2282)) ([4d915ac](https://github.com/ExodusMovement/assets/commit/4d915ac60e49ebe9d4e36d2fcecf7c17777f13b9))
141
- * clean up evms fee data monitors ([#2230](https://github.com/ExodusMovement/assets/issues/2230)) ([4e7a18f](https://github.com/ExodusMovement/assets/commit/4e7a18f799e0800c01e07ca83ddaf6778ada23ce))
142
- * evm useEip1191ChainIdChecksum param ([#2110](https://github.com/ExodusMovement/assets/issues/2110)) ([2169686](https://github.com/ExodusMovement/assets/commit/2169686cb4c11bb8f0691196b25002b6cf462e1e))
143
- * moved fee data to each EVM plugin ([#2233](https://github.com/ExodusMovement/assets/issues/2233)) ([ec066c0](https://github.com/ExodusMovement/assets/commit/ec066c076bc36a4c7c05810e83cdd47a7a25384b))
144
-
145
-
146
-
147
- ## [4.9.0](https://github.com/ExodusMovement/assets/compare/@exodus/ethereum-lib@4.8.0...@exodus/ethereum-lib@4.9.0) (2024-05-10)
148
-
149
-
150
- ### Features
151
-
152
- * pass `signatureType` to external signer for ethereum likes ([#2245](https://github.com/ExodusMovement/assets/issues/2245)) ([690593e](https://github.com/ExodusMovement/assets/commit/690593e3a17d8465a10d3b3b0f669742d60f7b15))
153
-
154
-
155
- ### Bug Fixes
156
-
157
- * enable Base eip1559 ([#2210](https://github.com/ExodusMovement/assets/issues/2210)) ([8b7e807](https://github.com/ExodusMovement/assets/commit/8b7e807907e961aae47d3beb50cd69502e5a04e2))
158
-
159
-
160
-
161
- ## [4.8.1](https://github.com/ExodusMovement/assets/compare/@exodus/ethereum-lib@4.8.0...@exodus/ethereum-lib@4.8.1) (2024-05-04)
162
-
163
-
164
- ### Bug Fixes
165
-
166
- * enable Base eip1559 ([#2210](https://github.com/ExodusMovement/assets/issues/2210)) ([8b7e807](https://github.com/ExodusMovement/assets/commit/8b7e807907e961aae47d3beb50cd69502e5a04e2))
167
-
168
-
169
-
170
- ## [4.8.0](https://github.com/ExodusMovement/assets/compare/@exodus/ethereum-lib@4.7.0...@exodus/ethereum-lib@4.8.0) (2024-05-02)
171
-
172
-
173
- ### Features
174
-
175
- * export signMessageWithSigner from index ([#2162](https://github.com/ExodusMovement/assets/issues/2162)) ([5849688](https://github.com/ExodusMovement/assets/commit/5849688c64761dbfe00c3d47f0654dd23e1e9167))
176
-
177
-
178
-
179
- ## [4.7.0](https://github.com/ExodusMovement/assets/compare/@exodus/ethereum-lib@4.6.0...@exodus/ethereum-lib@4.7.0) (2024-04-22)
180
-
181
-
182
- ### Features
183
-
184
- * allowXPUB in ethereum key-identifier ([#2136](https://github.com/ExodusMovement/assets/issues/2136)) ([308181c](https://github.com/ExodusMovement/assets/commit/308181cf602e433aa2ae1944663a01fc6c524b1a))
185
-
186
-
187
-
188
- ## [4.6.0](https://github.com/ExodusMovement/assets/compare/@exodus/ethereum-lib@4.5.0...@exodus/ethereum-lib@4.6.0) (2024-04-17)
189
-
190
-
191
- ### Features
192
-
193
- * **ethereum:** add `fromAddress` in `txMeta` ([#2106](https://github.com/ExodusMovement/assets/issues/2106)) ([451753e](https://github.com/ExodusMovement/assets/commit/451753ea85625c6ef4e17dcde8ed47186fe92a3e))
194
- * expose signMessage & signHardware ([#2103](https://github.com/ExodusMovement/assets/issues/2103)) ([60ea167](https://github.com/ExodusMovement/assets/commit/60ea167283e2e4b82a69530ba156c56dead8812c))
195
- * support signing messages with external signer ([#2105](https://github.com/ExodusMovement/assets/issues/2105)) ([88669f6](https://github.com/ExodusMovement/assets/commit/88669f6608b72eda2d16397ce808684ec07407e0))
196
-
197
-
198
-
199
- ## [4.5.0](https://github.com/ExodusMovement/assets/compare/@exodus/ethereum-lib@4.4.0...@exodus/ethereum-lib@4.5.0) (2024-04-11)
200
-
201
-
202
- ### Features
203
-
204
- * **ethereum:** add signMessage ([#1974](https://github.com/ExodusMovement/assets/issues/1974)) ([63c20f4](https://github.com/ExodusMovement/assets/commit/63c20f44b2348860687af01d81e27b5868c1a21a))
205
- * new eth balances (EVM 1) ([#2013](https://github.com/ExodusMovement/assets/issues/2013)) ([5fa2375](https://github.com/ExodusMovement/assets/commit/5fa2375caccf957d2f10c76f279aa1fdc7597df1))
206
-
207
-
208
- ### Bug Fixes
209
-
210
- * increase default Base gasPrice ([#2034](https://github.com/ExodusMovement/assets/issues/2034)) ([141960f](https://github.com/ExodusMovement/assets/commit/141960f2ec41d78720587e4e02f5b71bb48ddf0a))
211
-
212
-
213
-
214
- ## [4.4.0](https://github.com/ExodusMovement/assets/compare/@exodus/ethereum-lib@4.3.0...@exodus/ethereum-lib@4.4.0) (2024-03-22)
215
-
216
-
217
- ### Features
218
-
219
- * **ETH:** add Sepolia testnet ([#1855](https://github.com/ExodusMovement/assets/issues/1855)) ([a2f7c07](https://github.com/ExodusMovement/assets/commit/a2f7c07a1068c8ee0c3646f4eda3b133266f518f))
220
-
221
-
222
- ### Bug Fixes
223
-
224
- * ethereum Sepolia yarn ([#1872](https://github.com/ExodusMovement/assets/issues/1872)) ([96831f7](https://github.com/ExodusMovement/assets/commit/96831f747df3c5f13d08f20bce0050c99849fcfe))
225
-
226
-
227
-
228
- # [4.3.0](https://github.com/ExodusMovement/assets/compare/@exodus/ethereum-lib@4.2.7...@exodus/ethereum-lib@4.3.0) (2024-03-18)
229
-
230
-
231
- ### Features
232
-
233
- * add support for external signer for ETH ([#1607](https://github.com/ExodusMovement/assets/issues/1607)) ([0323765](https://github.com/ExodusMovement/assets/commit/032376510205417cbbfe3ac0ea14ef203aa3823c))
234
- * **ethereum:** ethereum tokens cleanup - part 2 ([#1573](https://github.com/ExodusMovement/assets/issues/1573)) ([85b5a10](https://github.com/ExodusMovement/assets/commit/85b5a10e958ba883dd9fbbfc521909a27ea05a12))
235
-
236
-
237
- ### Reverts
238
-
239
- * Revert "Publish" ([adb8015](https://github.com/ExodusMovement/assets/commit/adb8015efd51a4fa36ad0c86c28cb2d94c52a578))
package/README.md DELETED
@@ -1,3 +0,0 @@
1
- # @exodus/ethereum-lib
2
-
3
- Ethereum utils, such as for cryptography, address encoding/decoding, transaction building, etc. See [Asset Packages](../../docs/asset-packages.md) for more detail on this package's role.