From eb4c5fdc5065767b3bbdd9ecbc694eb66ba63364 Mon Sep 17 00:00:00 2001 From: Igor Artamonov Date: Thu, 25 Apr 2024 22:07:08 +0100 Subject: [PATCH] solution: use Sepolia testnet in development (#1380) --- package.json | 6 ++- packages/core/package.json | 2 +- packages/core/src/blockchains/blockchains.ts | 48 +++++++++-------- packages/core/src/blockchains/coinTicker.ts | 4 +- packages/core/src/blockchains/index.ts | 1 + .../core/src/blockchains/tokens/registry.ts | 2 +- packages/core/src/index.ts | 1 + .../create-tx/CreateErc20ApproveTx.spec.ts | 28 +++++----- packages/desktop/src/main/utils/api-modes.ts | 2 +- .../desktop/src/main/utils/update-tokens.ts | 3 +- packages/desktop/src/renderer/store/store.ts | 3 +- packages/electron-app/package.json | 4 +- .../electron-app/src/application/Settings.ts | 5 +- packages/persistent-state/native/Cargo.lock | 2 +- .../persistent-state/native/src/commons.rs | 2 + packages/persistent-state/package.json | 2 +- .../src/__tests__/txhistory.spec.ts | 2 +- packages/react-app/package.json | 2 +- .../react-app/src/common/ToField/ToField.tsx | 2 +- .../TxHistory/List/Transaction.tsx | 4 +- .../react-app/stories/ContactForm/index.tsx | 2 +- packages/services/package.json | 6 +-- .../services/src/services/AllowanceService.ts | 21 +++++--- .../src/services/TransactionService.ts | 2 +- packages/store/package.json | 2 +- packages/store/src/accounts/selectors.ts | 2 +- .../store/src/address-book/reducer.spec.ts | 12 ++--- packages/store/src/application/reducer.ts | 5 +- packages/store/src/txhistory/reducer.ts | 3 +- .../BlockchainAssetAvatar.tsx | 4 +- .../BlockchainAvatar/BlockchainAvatar.tsx | 2 +- .../BlockchainAvatar/BlockchainIcon.tsx | 4 +- packages/ui/stories/CoinAvatar/index.tsx | 2 +- yarn.lock | 54 +++++++++---------- 34 files changed, 133 insertions(+), 113 deletions(-) diff --git a/package.json b/package.json index 38245bf82..47245a46a 100644 --- a/package.json +++ b/package.json @@ -29,7 +29,9 @@ "packages/*" ], "resolutions": { - "@emeraldpay/api": "https://artifacts.emerald.cash/builds/emerald-api-js/a4a88f2e/emeraldpay-api-v0.4.4-dev.tgz", - "@emeraldpay/api-node": "https://artifacts.emerald.cash/builds/emerald-api-js/a4a88f2e/emeraldpay-api-node-v0.4.4-dev.tgz" + "@emeraldpay/api": "https://artifacts.emerald.cash/builds/emerald-api-js/a35b8b1c/emeraldpay-api-v0.5.0-dev.tgz", + "@emeraldpay/api-node": "https://artifacts.emerald.cash/builds/emerald-api-js/a35b8b1c/emeraldpay-api-node-v0.5.0-dev.tgz", + "@emeraldpay/emerald-vault-core": "https://artifacts.emerald.cash/builds/vault-node/1ffb2ac8/emeraldpay-emerald-vault-core-v0.13.0-dev.tgz", + "@emeraldpay/emerald-vault-native": "https://artifacts.emerald.cash/builds/vault-node/1ffb2ac8/emeraldpay-emerald-vault-native-v0.13.0-dev.tgz" } } diff --git a/packages/core/package.json b/packages/core/package.json index 01da550f8..8ea07ae34 100644 --- a/packages/core/package.json +++ b/packages/core/package.json @@ -15,7 +15,7 @@ "dependencies": { "@emeraldpay/bigamount": "^0.4.2", "@emeraldpay/bigamount-crypto": "^0.4.2", - "@emeraldpay/emerald-vault-core": "^0.12.0", + "@emeraldpay/emerald-vault-core": "^0.13.0-dev", "@ethereumjs/common": "^3.1.2", "@ethereumjs/tx": "^4.1.2", "@ethersproject/abi": "^5.7.0", diff --git a/packages/core/src/blockchains/blockchains.ts b/packages/core/src/blockchains/blockchains.ts index c5f22c349..3b284aaf5 100644 --- a/packages/core/src/blockchains/blockchains.ts +++ b/packages/core/src/blockchains/blockchains.ts @@ -14,7 +14,7 @@ export enum BlockchainCode { ETC = 'etc', ETH = 'eth', // Testnet - Goerli = 'goerli', + Sepolia = 'sepolia', TestBTC = 'testbtc', // Other Unknown = 'unknown', @@ -44,17 +44,17 @@ export const Blockchains: Record = { ), 'Ethereum Classic', ), - [BlockchainCode.Goerli]: new Ethereum( + [BlockchainCode.Sepolia]: new Ethereum( new EthereumParams( - BlockchainCode.Goerli, + BlockchainCode.Sepolia, Coin.ETHER, - CoinTicker.ETG, - 5, + CoinTicker.SEPOLIA, + 11155111, HDPath.default().forCoin(BlockchainCode.ETH).forAccount(160720), 100, true, ), - 'Goerli Testnet', + 'Sepolia Testnet', ), [BlockchainCode.BTC]: new Bitcoin({ chainId: 0, @@ -80,7 +80,7 @@ const allCodes = [ BlockchainCode.BTC, BlockchainCode.ETC, BlockchainCode.ETH, - BlockchainCode.Goerli, + BlockchainCode.Sepolia, BlockchainCode.TestBTC, ]; @@ -109,6 +109,10 @@ export function ethereumByChainId(id?: number): IBlockchain | undefined { return allChains.find((chain) => chain.params.chainId === id); } +export function isBlockchainId(id: number): boolean { + return id == 1 || id == 100 || id == 101 || id == 10003 || id == 10009; +} + export function blockchainIdToCode(id: number): BlockchainCode { switch (id) { case 1: @@ -119,8 +123,8 @@ export function blockchainIdToCode(id: number): BlockchainCode { return BlockchainCode.ETC; case 10003: return BlockchainCode.TestBTC; - case 10005: - return BlockchainCode.Goerli; + case 10009: + return BlockchainCode.Sepolia; default: throw new Error(`Unsupported blockchain id: ${id}`); } @@ -140,29 +144,29 @@ export function blockchainCodeToId(code: BlockchainCode): number { return 101; case BlockchainCode.TestBTC: return 10003; - case BlockchainCode.Goerli: - return 10005; + case BlockchainCode.Sepolia: + return 10009; default: throw new Error(`Unsupported blockchain: ${code}`); } } export function isEthereum(code: BlockchainCode): boolean { - return code === BlockchainCode.ETH || code === BlockchainCode.ETC || code === BlockchainCode.Goerli; + return code === BlockchainCode.ETH || code === BlockchainCode.ETC || code === BlockchainCode.Sepolia; } export function isBitcoin(code: BlockchainCode): boolean { return code == BlockchainCode.BTC || code == BlockchainCode.TestBTC; } -export const WEIS_GOERLI = new Units([ - new Unit(0, 'Goerli Wei', 'WeiG'), - new Unit(3, 'Goerli Kwei', 'KWeiG'), - new Unit(6, 'Goerli Mwei', 'MWeiG'), - new Unit(9, 'Goerli Gwei', 'GWeiG'), - new Unit(12, 'Goerli Microether', 'μETG'), - new Unit(15, 'Goerli Milliether', 'mETG'), - new Unit(18, 'Goerli Ether', 'ETG'), +export const WEIS_SEPOLIA = new Units([ + new Unit(0, 'Sepolia Wei', 'WeiS'), + new Unit(3, 'Sepolia Kwei', 'KWeiS'), + new Unit(6, 'Sepolia Mwei', 'MWeiS'), + new Unit(9, 'Sepolia Gwei', 'GWeiS'), + new Unit(12, 'Sepolia Microether', 'μETS'), + new Unit(15, 'Sepolia Milliether', 'mETS'), + new Unit(18, 'Sepolia Ether', 'ETS'), ]); export const SATOSHIS_TEST = new Units([ @@ -181,8 +185,8 @@ export function amountFactory(code: BlockchainCode): CreateAmount { return WeiEtc.factory(); case BlockchainCode.ETH: return Wei.factory(); - case BlockchainCode.Goerli: - return (value) => new WeiAny(value, WEIS_GOERLI); + case BlockchainCode.Sepolia: + return (value) => new WeiAny(value, WEIS_SEPOLIA); case BlockchainCode.TestBTC: return (value) => new SatoshiAny(value, SATOSHIS_TEST); default: diff --git a/packages/core/src/blockchains/coinTicker.ts b/packages/core/src/blockchains/coinTicker.ts index c8ddaabe8..374b1a310 100644 --- a/packages/core/src/blockchains/coinTicker.ts +++ b/packages/core/src/blockchains/coinTicker.ts @@ -4,8 +4,8 @@ export enum CoinTicker { ETC = 'ETC', ETH = 'ETH', // Testnet - ETG = 'ETG', + SEPOLIA = 'SEPOLIA', TESTBTC = 'TESTBTC', } -export type CoinTickerCode = 'BTC' | 'ETC' | 'ETH' | 'ETG' | 'TESTBTC'; +export type CoinTickerCode = 'BTC' | 'ETC' | 'ETH' | 'TESTBTC' | 'SEPOLIA'; diff --git a/packages/core/src/blockchains/index.ts b/packages/core/src/blockchains/index.ts index 6521a34f1..bd06de9b1 100644 --- a/packages/core/src/blockchains/index.ts +++ b/packages/core/src/blockchains/index.ts @@ -12,6 +12,7 @@ export { ethereumByChainId, isBitcoin, isEthereum, + isBlockchainId, ledgerByBlockchain, } from './blockchains'; export { Coin, CoinCode } from './coin'; diff --git a/packages/core/src/blockchains/tokens/registry.ts b/packages/core/src/blockchains/tokens/registry.ts index 8e6444483..4a68be480 100644 --- a/packages/core/src/blockchains/tokens/registry.ts +++ b/packages/core/src/blockchains/tokens/registry.ts @@ -7,7 +7,7 @@ const TOKEN_TYPES = ['ERC20', 'ERC721', 'ERC1155'] as const; const WRAPPED_TOKENS: Readonly>> = { [BlockchainCode.ETH]: '0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2', [BlockchainCode.ETC]: '0x1953cab0E5bFa6D4a9BaD6E05fD46C1CC6527a5a', - [BlockchainCode.Goerli]: '0xB4FBF271143F4FBf7B91A5ded31805e42b2208d6', + [BlockchainCode.Sepolia]: '0xc31e8a1087bf1460b9926274de4a03b0dd44a6da', }; export interface TokenData { diff --git a/packages/core/src/index.ts b/packages/core/src/index.ts index c2f46efac..ad8af7073 100644 --- a/packages/core/src/index.ts +++ b/packages/core/src/index.ts @@ -44,6 +44,7 @@ export { ethereumByChainId, isBitcoin, isEthereum, + isBlockchainId, isStructuredMessage, isToken, isWrappedToken, diff --git a/packages/core/src/transaction/workflow/create-tx/CreateErc20ApproveTx.spec.ts b/packages/core/src/transaction/workflow/create-tx/CreateErc20ApproveTx.spec.ts index cd03c94b3..9d280d580 100644 --- a/packages/core/src/transaction/workflow/create-tx/CreateErc20ApproveTx.spec.ts +++ b/packages/core/src/transaction/workflow/create-tx/CreateErc20ApproveTx.spec.ts @@ -7,15 +7,15 @@ import { ApproveTarget, CreateErc20ApproveTx } from './CreateErc20ApproveTx'; describe('CreateErc20ApproveTx', () => { const wethTokenData: TokenData = { name: 'Wrapped Ether', - blockchain: 10005, - address: '0xB4FBF271143F4FBf7B91A5ded31805e42b2208d6', - symbol: 'WETG', + blockchain: 10009, + address: '0xc31e8a1087bf1460b9926274de4a03b0dd44a6da', + symbol: 'WSEPOLIA', decimals: 18, type: 'ERC20', }; const weenusTokenData: TokenData = { name: 'Weenus', - blockchain: 10005, + blockchain: 10009, address: '0xaFF4481D10270F50f203E0763e2597776068CBc5', symbol: 'WEENUS', decimals: 18, @@ -25,15 +25,15 @@ describe('CreateErc20ApproveTx', () => { const tokenRegistry = new TokenRegistry([wethTokenData, weenusTokenData]); - const wethToken = tokenRegistry.byAddress(BlockchainCode.Goerli, '0xB4FBF271143F4FBf7B91A5ded31805e42b2208d6'); - const weenusToken = tokenRegistry.byAddress(BlockchainCode.Goerli, '0xaFF4481D10270F50f203E0763e2597776068CBc5'); + const wethToken = tokenRegistry.byAddress(BlockchainCode.Sepolia, '0xc31e8a1087bf1460b9926274de4a03b0dd44a6da'); + const weenusToken = tokenRegistry.byAddress(BlockchainCode.Sepolia, '0xaFF4481D10270F50f203E0763e2597776068CBc5'); test('should create legacy approve tx', () => { const tx = new CreateErc20ApproveTx( { amount: wethToken.getAmount(0), asset: wethToken.address, - blockchain: BlockchainCode.Goerli, + blockchain: BlockchainCode.Sepolia, meta: { type: TxMetaType.ERC20_APPROVE }, target: ApproveTarget.MANUAL, type: EthereumTransactionType.LEGACY, @@ -52,7 +52,7 @@ describe('CreateErc20ApproveTx', () => { { amount: wethToken.getAmount(0), asset: wethToken.address, - blockchain: BlockchainCode.Goerli, + blockchain: BlockchainCode.Sepolia, meta: { type: TxMetaType.ERC20_APPROVE }, target: ApproveTarget.MANUAL, type: EthereumTransactionType.EIP1559, @@ -74,7 +74,7 @@ describe('CreateErc20ApproveTx', () => { { amount: wethToken.getAmount(0), asset: wethToken.address, - blockchain: BlockchainCode.Goerli, + blockchain: BlockchainCode.Sepolia, meta: { type: TxMetaType.ERC20_APPROVE }, target: ApproveTarget.MAX_AVAILABLE, totalTokenBalance: amount, @@ -89,7 +89,7 @@ describe('CreateErc20ApproveTx', () => { { amount: wethToken.getAmount(0), asset: wethToken.address, - blockchain: BlockchainCode.Goerli, + blockchain: BlockchainCode.Sepolia, meta: { type: TxMetaType.ERC20_APPROVE }, target: ApproveTarget.INFINITE, type: EthereumTransactionType.EIP1559, @@ -107,7 +107,7 @@ describe('CreateErc20ApproveTx', () => { { amount: wethToken.getAmount(0), asset: wethToken.address, - blockchain: BlockchainCode.Goerli, + blockchain: BlockchainCode.Sepolia, meta: { type: TxMetaType.ERC20_APPROVE }, target: ApproveTarget.MANUAL, totalTokenBalance: amount, @@ -136,7 +136,7 @@ describe('CreateErc20ApproveTx', () => { { amount, asset: wethToken.address, - blockchain: BlockchainCode.Goerli, + blockchain: BlockchainCode.Sepolia, meta: { type: TxMetaType.ERC20_APPROVE }, target: ApproveTarget.MANUAL, totalTokenBalance: amount, @@ -159,7 +159,7 @@ describe('CreateErc20ApproveTx', () => { { amount: wethToken.getAmount(0), asset: wethToken.address, - blockchain: BlockchainCode.Goerli, + blockchain: BlockchainCode.Sepolia, meta: { type: TxMetaType.ERC20_APPROVE }, target: ApproveTarget.MANUAL, type: EthereumTransactionType.EIP1559, @@ -185,7 +185,7 @@ describe('CreateErc20ApproveTx', () => { approveBy: '0xe62c6f33a58d7f49e6b782aab931450e53d01f12', allowFor: '0x3f54eb67fea225d0a21263f1a7cb456e342cb1e8', asset: wethToken.address, - blockchain: BlockchainCode.Goerli, + blockchain: BlockchainCode.Sepolia, meta: { type: TxMetaType.ERC20_APPROVE }, target: ApproveTarget.MANUAL, type: EthereumTransactionType.EIP1559, diff --git a/packages/desktop/src/main/utils/api-modes.ts b/packages/desktop/src/main/utils/api-modes.ts index b15d68322..0811b12ae 100644 --- a/packages/desktop/src/main/utils/api-modes.ts +++ b/packages/desktop/src/main/utils/api-modes.ts @@ -2,7 +2,7 @@ import { ApiMode } from '@emeraldwallet/electron-app'; export const DevelopmentMode: ApiMode = { id: 'development', - chains: ['ETH', 'ETC', 'BTC', 'GOERLI', 'TESTBTC'], + chains: ['ETH', 'ETC', 'BTC', 'SEPOLIA', 'TESTBTC'], }; export const ProductionMode: ApiMode = { diff --git a/packages/desktop/src/main/utils/update-tokens.ts b/packages/desktop/src/main/utils/update-tokens.ts index 3d1e96651..2ea7451bd 100644 --- a/packages/desktop/src/main/utils/update-tokens.ts +++ b/packages/desktop/src/main/utils/update-tokens.ts @@ -1,6 +1,7 @@ import { Logger, TokenData } from '@emeraldwallet/core'; import fetch from 'node-fetch'; import { tokens as defaults } from '../../../defaults.json'; +import {isBlockchainId} from "@emeraldwallet/core"; type Updated = { changed: boolean; tokens: TokenData[] }; @@ -16,7 +17,7 @@ export default async function (appVersion: string, stored: TokenData[]): Promise if (response.status === 200) { try { - const tokens = (await response.json()) as TokenData[]; + const tokens = ((await response.json()) as TokenData[]).filter((token) => isBlockchainId(token.blockchain)); const addresses = stored.map(({ address }) => address.toLowerCase()); diff --git a/packages/desktop/src/renderer/store/store.ts b/packages/desktop/src/renderer/store/store.ts index 13ae87c30..104931910 100644 --- a/packages/desktop/src/renderer/store/store.ts +++ b/packages/desktop/src/renderer/store/store.ts @@ -25,6 +25,7 @@ import updateOptions from '../../main/utils/update-options'; import updateTokens from '../../main/utils/update-tokens'; import { initAllowancesState } from './cache/allowances'; import { initBalancesState } from './cache/balances'; +import {isBlockchainId} from "@emeraldwallet/core"; Logger.setInstance(ElectronLogger); @@ -185,7 +186,7 @@ export function startStore(): void { const { options = {}, tokens = [] } = store.getState().application; checkOptionsUpdates(versions.appVersion, options); - checkTokensUpdates(versions.appVersion, tokens); + checkTokensUpdates(versions.appVersion, tokens.filter((token) => isBlockchainId(token.blockchain))); }); checkWalletUpdates(versions.appVersion); diff --git a/packages/electron-app/package.json b/packages/electron-app/package.json index 933347d02..a4b1ed6ea 100644 --- a/packages/electron-app/package.json +++ b/packages/electron-app/package.json @@ -14,8 +14,8 @@ "compile": "tsc -b" }, "dependencies": { - "@emeraldpay/emerald-vault-core": "^0.12.0", - "@emeraldpay/emerald-vault-native": "^0.12.0", + "@emeraldpay/emerald-vault-core": "^0.13.0-dev", + "@emeraldpay/emerald-vault-native": "^0.13.0-dev", "@emeraldwallet/core": "2.11.0-dev", "@emeraldwallet/persistent-state": "2.11.0-dev", "@emeraldwallet/services": "2.11.0-dev", diff --git a/packages/electron-app/src/application/Settings.ts b/packages/electron-app/src/application/Settings.ts index 44e00ea1d..f1894b0ee 100644 --- a/packages/electron-app/src/application/Settings.ts +++ b/packages/electron-app/src/application/Settings.ts @@ -1,6 +1,7 @@ -import { SettingsManager, SettingsOptions, SettingsStore, TokenData } from '@emeraldwallet/core'; +import {blockchainIdToCode, SettingsManager, SettingsOptions, SettingsStore, TokenData} from '@emeraldwallet/core'; import ElectronStore from 'electron-store'; import { v4 as uuid } from 'uuid'; +import {isBlockchainId} from "@emeraldwallet/core"; const DEFAULTS: SettingsStore = { id: uuid(), @@ -33,7 +34,7 @@ export class Settings implements SettingsManager { } getTokens(): TokenData[] { - return this.settings.get('tokens'); + return this.settings.get('tokens').filter((token: TokenData) => isBlockchainId(token.blockchain)); } setLastCursor(timestamp: number): Settings { diff --git a/packages/persistent-state/native/Cargo.lock b/packages/persistent-state/native/Cargo.lock index 5054b4348..c5ec32d79 100644 --- a/packages/persistent-state/native/Cargo.lock +++ b/packages/persistent-state/native/Cargo.lock @@ -527,7 +527,7 @@ dependencies = [ [[package]] name = "emerald-wallet-state" version = "0.2.1" -source = "git+https://github.com/emeraldpay/emerald-wallet-state?branch=master#525a40faac87c7ee75bed19ae0f6094ff85d5c96" +source = "git+https://github.com/emeraldpay/emerald-wallet-state?branch=master#0f650bb0951864c999b12940604a43906b9333f8" dependencies = [ "bitcoin", "chrono", diff --git a/packages/persistent-state/native/src/commons.rs b/packages/persistent-state/native/src/commons.rs index b56dae96f..009d57b89 100644 --- a/packages/persistent-state/native/src/commons.rs +++ b/packages/persistent-state/native/src/commons.rs @@ -25,6 +25,7 @@ pub fn blockchain_from_code>(code: S) -> Result Ok(101), "testbtc" => Ok(10003), "goerli" => Ok(10005), + "sepolia" => Ok(10009), _ => Err(StateManagerError::InvalidValue("Invalid blockchain code".to_string())) } } @@ -36,6 +37,7 @@ pub fn blockchain_to_code(id: u32) -> Result { 101 => Ok("etc".to_string()), 10003 => Ok("testbtc".to_string()), 10005 => Ok("goerli".to_string()), + 10009 => Ok("sepolia".to_string()), _ => Err(StateManagerError::InvalidValue("Invalid blockchain id".to_string())) } } diff --git a/packages/persistent-state/package.json b/packages/persistent-state/package.json index 0f077afff..001cb483e 100644 --- a/packages/persistent-state/package.json +++ b/packages/persistent-state/package.json @@ -13,7 +13,7 @@ "test:coverage": "jest --coverage" }, "dependencies": { - "@emeraldpay/emerald-vault-core": "^0.12.0", + "@emeraldpay/emerald-vault-core": "^0.13.0-dev", "@emeraldpay/neon-frame": "^0.1.1", "@emeraldwallet/core": "2.11.0-dev" }, diff --git a/packages/persistent-state/src/__tests__/txhistory.spec.ts b/packages/persistent-state/src/__tests__/txhistory.spec.ts index 30a89a378..a487ef502 100644 --- a/packages/persistent-state/src/__tests__/txhistory.spec.ts +++ b/packages/persistent-state/src/__tests__/txhistory.spec.ts @@ -398,7 +398,7 @@ describe('Tx History', () => { height: 4910978, timestamp: new Date('2021-06-04T14:14:23.000Z'), }, - blockchain: 10005, + blockchain: 10009, changes: [ { asset: 'ETH', diff --git a/packages/react-app/package.json b/packages/react-app/package.json index aadee317f..f257a28b3 100644 --- a/packages/react-app/package.json +++ b/packages/react-app/package.json @@ -20,7 +20,7 @@ "@electron/remote": "^2.0.9", "@emeraldpay/bigamount": "^0.4.2", "@emeraldpay/bigamount-crypto": "^0.4.2", - "@emeraldpay/emerald-vault-core": "^0.12.0", + "@emeraldpay/emerald-vault-core": "^0.13.0-dev", "@emeraldwallet/core": "2.11.0-dev", "@emeraldwallet/store": "2.11.0-dev", "@emeraldwallet/ui": "2.11.0-dev", diff --git a/packages/react-app/src/common/ToField/ToField.tsx b/packages/react-app/src/common/ToField/ToField.tsx index 444612a83..068af8184 100644 --- a/packages/react-app/src/common/ToField/ToField.tsx +++ b/packages/react-app/src/common/ToField/ToField.tsx @@ -65,7 +65,7 @@ class ToField extends React.Component { const to = value.trim(); - if (blockchain === BlockchainCode.ETH || blockchain === BlockchainCode.Goerli) { + if (blockchain === BlockchainCode.ETH || blockchain === BlockchainCode.Sepolia) { if (/\.eth$/.test(to)) { onChange(undefined); diff --git a/packages/react-app/src/transactions/TxHistory/List/Transaction.tsx b/packages/react-app/src/transactions/TxHistory/List/Transaction.tsx index acd644b61..ffdda6380 100644 --- a/packages/react-app/src/transactions/TxHistory/List/Transaction.tsx +++ b/packages/react-app/src/transactions/TxHistory/List/Transaction.tsx @@ -48,7 +48,7 @@ const CONFIRMATIONS: Record = { [BlockchainCode.BTC]: 3, [BlockchainCode.TestBTC]: 3, [BlockchainCode.ETH]: 12, - [BlockchainCode.Goerli]: 12, + [BlockchainCode.Sepolia]: 12, [BlockchainCode.ETC]: 48, } as const; @@ -57,7 +57,7 @@ const CONFIRMED: Record = { [BlockchainCode.BTC]: 6 * 24, [BlockchainCode.TestBTC]: 6 * 24, [BlockchainCode.ETH]: 4 * 60 * 24, - [BlockchainCode.Goerli]: 4 * 60 * 24, + [BlockchainCode.Sepolia]: 4 * 60 * 24, [BlockchainCode.ETC]: 4 * 60 * 24, } as const; diff --git a/packages/react-app/stories/ContactForm/index.tsx b/packages/react-app/stories/ContactForm/index.tsx index 93a7729e1..a0679c1ff 100644 --- a/packages/react-app/stories/ContactForm/index.tsx +++ b/packages/react-app/stories/ContactForm/index.tsx @@ -21,7 +21,7 @@ storiesOf('ContactForm', module) address: '0x0', type: 'plain', }, - blockchain: 10005, + blockchain: 10009, label: 'Test', }} title="Edit Contact" diff --git a/packages/services/package.json b/packages/services/package.json index 7c692a6b6..1db19d7f1 100644 --- a/packages/services/package.json +++ b/packages/services/package.json @@ -13,11 +13,11 @@ "test:coverage": "jest --coverage" }, "dependencies": { - "@emeraldpay/api": "^0.4.3", - "@emeraldpay/api-node": "^0.4.3", + "@emeraldpay/api": "^0.5.0-dev", + "@emeraldpay/api-node": "^0.5.0-dev", "@emeraldpay/bigamount": "^0.4.2", "@emeraldpay/bigamount-crypto": "^0.4.2", - "@emeraldpay/emerald-vault-core": "^0.12.0", + "@emeraldpay/emerald-vault-core": "^0.13.0-dev", "@emeraldwallet/core": "2.11.0-dev", "@grpc/grpc-js": "^1.8.14", "ethers": "^6.3.0", diff --git a/packages/services/src/services/AllowanceService.ts b/packages/services/src/services/AllowanceService.ts index 96540de72..0b9c46dc2 100644 --- a/packages/services/src/services/AllowanceService.ts +++ b/packages/services/src/services/AllowanceService.ts @@ -17,6 +17,7 @@ import { IpcMain, WebContents } from 'electron'; import { EmeraldApiAccess } from '../emerald-client/ApiAccess'; import { BalanceService } from './balance/BalanceService'; import { Service } from './ServiceManager'; +import {isBlockchainId} from "@emeraldwallet/core"; interface Subscription { address: string; @@ -66,8 +67,8 @@ export class AllowanceService implements Service { this.tokenRegistry = new TokenRegistry(this.tokens); ipcMain.handle(IpcCommands.ALLOWANCE_SET_TOKENS, (event, tokens) => { - this.tokens = tokens; - this.tokenRegistry = new TokenRegistry(tokens); + this.tokens = tokens.filter((token: TokenData) => isBlockchainId(token.blockchain)); + this.tokenRegistry = new TokenRegistry(this.tokens); this.stop(); this.start(); @@ -136,12 +137,16 @@ export class AllowanceService implements Service { }) .finally(() => { if (!failed) { - this.persistentState.allowances.remove(extractWalletId(entryId), blockchain, timestamp).then(() => - this.webContents.send(IpcCommands.STORE_DISPATCH, { - type: 'WALLET/ALLOWANCE/REMOVE_ALLOWANCE', - payload: { address, blockchain, timestamp }, - }), - ); + this.persistentState.allowances.remove(extractWalletId(entryId), blockchain, timestamp) + .then(() => + this.webContents.send(IpcCommands.STORE_DISPATCH, { + type: 'WALLET/ALLOWANCE/REMOVE_ALLOWANCE', + payload: { address, blockchain, timestamp }, + }), + ) + .catch((error) => + log.warn(`Error while removing allowances for ${address} on ${blockchain} blockchain`, error) + ); } }); diff --git a/packages/services/src/services/TransactionService.ts b/packages/services/src/services/TransactionService.ts index b28c75a72..698087b2a 100644 --- a/packages/services/src/services/TransactionService.ts +++ b/packages/services/src/services/TransactionService.ts @@ -230,7 +230,7 @@ export class TransactionService implements Service { confirmation = { block: { blockId, height, timestamp }, - blockPos: tx.txIndexInBlock ?? 0, + blockPos: 0, //TODO actual position confirmTimestamp: tx.block.timestamp ?? now, }; } diff --git a/packages/store/package.json b/packages/store/package.json index 9d77ba380..0505a47d4 100644 --- a/packages/store/package.json +++ b/packages/store/package.json @@ -16,7 +16,7 @@ "dependencies": { "@emeraldpay/bigamount": "^0.4.2", "@emeraldpay/bigamount-crypto": "^0.4.2", - "@emeraldpay/emerald-vault-core": "^0.12.0", + "@emeraldpay/emerald-vault-core": "^0.13.0-dev", "@emeraldwallet/core": "2.11.0-dev", "bignumber.js": "8.0.2", "color-hash": "^2.0.2", diff --git a/packages/store/src/accounts/selectors.ts b/packages/store/src/accounts/selectors.ts index 39ebc42b4..81f501b5d 100644 --- a/packages/store/src/accounts/selectors.ts +++ b/packages/store/src/accounts/selectors.ts @@ -89,7 +89,7 @@ export function getWalletBalances( return isAvailable && !excludeAddresses[blockchainIdToCode(blockchain)]?.has(address.value); }) as EthereumEntry[]; - [BlockchainCode.ETH, BlockchainCode.ETC, BlockchainCode.Goerli].forEach((blockchain) => { + [BlockchainCode.ETH, BlockchainCode.ETC, BlockchainCode.Sepolia].forEach((blockchain) => { const zero = zeroAmountFor(blockchain); const blockchainAccounts = ethereumAccounts.filter( diff --git a/packages/store/src/address-book/reducer.spec.ts b/packages/store/src/address-book/reducer.spec.ts index 474d437cd..5a4eb226f 100644 --- a/packages/store/src/address-book/reducer.spec.ts +++ b/packages/store/src/address-book/reducer.spec.ts @@ -9,25 +9,25 @@ describe('address book reducer', () => { const contacts: PersistentState.AddressbookItem[] = [ { address: { type: 'plain', address: '0x1' }, - blockchain: blockchainCodeToId(BlockchainCode.Goerli), + blockchain: blockchainCodeToId(BlockchainCode.Sepolia), createTimestamp, }, { address: { type: 'plain', address: '0x2' }, - blockchain: blockchainCodeToId(BlockchainCode.Goerli), + blockchain: blockchainCodeToId(BlockchainCode.Sepolia), createTimestamp, }, ]; - expect(reducer(undefined, setAddressBook(BlockchainCode.Goerli, contacts))).toEqual({ + expect(reducer(undefined, setAddressBook(BlockchainCode.Sepolia, contacts))).toEqual({ contacts: { - [BlockchainCode.Goerli]: [ + [BlockchainCode.Sepolia]: [ { address: { type: 'plain', address: '0x1', }, - blockchain: blockchainCodeToId(BlockchainCode.Goerli), + blockchain: blockchainCodeToId(BlockchainCode.Sepolia), createTimestamp, }, { @@ -35,7 +35,7 @@ describe('address book reducer', () => { type: 'plain', address: '0x2', }, - blockchain: blockchainCodeToId(BlockchainCode.Goerli), + blockchain: blockchainCodeToId(BlockchainCode.Sepolia), createTimestamp, }, ], diff --git a/packages/store/src/application/reducer.ts b/packages/store/src/application/reducer.ts index e0457de67..0b0b021e9 100644 --- a/packages/store/src/application/reducer.ts +++ b/packages/store/src/application/reducer.ts @@ -11,6 +11,7 @@ import { TermsAction, TokensAction, } from './types'; +import {isBlockchainId} from "@emeraldwallet/core"; export const INITIAL_STATE: ApplicationState = { configured: false, @@ -32,7 +33,7 @@ function onConfig(state: ApplicationState, { payload: { options, terms, tokens } configured: true, options: options ?? state.options, terms: terms ?? state.terms, - tokens: tokens ?? state.tokens, + tokens: tokens?.filter((token) => isBlockchainId(token.blockchain)) ?? state.tokens, }; } @@ -76,7 +77,7 @@ function onTerms(state: ApplicationState, action: TermsAction): ApplicationState function onTokens(state: ApplicationState, action: TokensAction): ApplicationState { return { ...state, - tokens: action.payload, + tokens: action.payload.filter((token) => isBlockchainId(token.blockchain)), }; } diff --git a/packages/store/src/txhistory/reducer.ts b/packages/store/src/txhistory/reducer.ts index 657182b38..9f40c19e2 100644 --- a/packages/store/src/txhistory/reducer.ts +++ b/packages/store/src/txhistory/reducer.ts @@ -10,6 +10,7 @@ import { UpdateStoredTxAction, UpdateTxTokensAction, } from './types'; +import {isBlockchainId} from "@emeraldwallet/core"; const INITIAL_STATE: HistoryState = { lastTxId: null, @@ -40,7 +41,7 @@ function onUpdateStoreTransaction( { meta, tokens, transaction, walletId }: UpdateStoredTxAction, ): HistoryState { if (state.walletId === walletId) { - const tokenRegistry = new TokenRegistry(tokens); + const tokenRegistry = new TokenRegistry(tokens.filter((token) => isBlockchainId(token.blockchain))); const storedTransaction = new StoredTransaction(tokenRegistry, transaction, meta); const storedTransactions = [...state.transactions]; diff --git a/packages/ui/src/components/common/BlockchainAvatar/BlockchainAssetAvatar.tsx b/packages/ui/src/components/common/BlockchainAvatar/BlockchainAssetAvatar.tsx index 0ad7c606d..c60d87cc6 100644 --- a/packages/ui/src/components/common/BlockchainAvatar/BlockchainAssetAvatar.tsx +++ b/packages/ui/src/components/common/BlockchainAvatar/BlockchainAssetAvatar.tsx @@ -23,8 +23,8 @@ const BlockchainAssetAvatar: React.FC = ({ asset, ...props }) => { blockchain = BlockchainCode.ETH; break; // Testnet - case 'ETG': - blockchain = BlockchainCode.Goerli; + case 'SEPOLIA': + blockchain = BlockchainCode.Sepolia; break; case 'TESTBTC': blockchain = BlockchainCode.TestBTC; diff --git a/packages/ui/src/components/common/BlockchainAvatar/BlockchainAvatar.tsx b/packages/ui/src/components/common/BlockchainAvatar/BlockchainAvatar.tsx index 1b7745a0f..eb40d0bfd 100644 --- a/packages/ui/src/components/common/BlockchainAvatar/BlockchainAvatar.tsx +++ b/packages/ui/src/components/common/BlockchainAvatar/BlockchainAvatar.tsx @@ -19,7 +19,7 @@ const useStyle = makeStyles((theme: Theme) => ethBlockchain: { backgroundColor: '#627eea', }, - goerliBlockchain: { + sepoliaBlockchain: { backgroundColor: '#4a4f55', }, testbtcBlockchain: { diff --git a/packages/ui/src/components/common/BlockchainAvatar/BlockchainIcon.tsx b/packages/ui/src/components/common/BlockchainAvatar/BlockchainIcon.tsx index d73b917f8..04219da23 100644 --- a/packages/ui/src/components/common/BlockchainAvatar/BlockchainIcon.tsx +++ b/packages/ui/src/components/common/BlockchainAvatar/BlockchainIcon.tsx @@ -43,8 +43,8 @@ const BlockchainIcon: React.FC = ({ blockchain, size }) => { case BlockchainCode.ETH: return ; // Testnet - case BlockchainCode.Goerli: - return Goerli; + case BlockchainCode.Sepolia: + return Sepolia; case BlockchainCode.TestBTC: return TBTC; // Other diff --git a/packages/ui/stories/CoinAvatar/index.tsx b/packages/ui/stories/CoinAvatar/index.tsx index d1393951c..6f916fc59 100644 --- a/packages/ui/stories/CoinAvatar/index.tsx +++ b/packages/ui/stories/CoinAvatar/index.tsx @@ -8,7 +8,7 @@ storiesOf('BlockchainAvatar', module).add('default', () => ( - + )); diff --git a/yarn.lock b/yarn.lock index 1cb19dd41..3c75f006a 100644 --- a/yarn.lock +++ b/yarn.lock @@ -3704,25 +3704,25 @@ __metadata: languageName: node linkType: hard -"@emeraldpay/api-node@https://artifacts.emerald.cash/builds/emerald-api-js/a4a88f2e/emeraldpay-api-node-v0.4.4-dev.tgz": - version: 0.4.4-dev - resolution: "@emeraldpay/api-node@https://artifacts.emerald.cash/builds/emerald-api-js/a4a88f2e/emeraldpay-api-node-v0.4.4-dev.tgz" +"@emeraldpay/api-node@https://artifacts.emerald.cash/builds/emerald-api-js/a35b8b1c/emeraldpay-api-node-v0.5.0-dev.tgz": + version: 0.5.0-dev + resolution: "@emeraldpay/api-node@https://artifacts.emerald.cash/builds/emerald-api-js/a35b8b1c/emeraldpay-api-node-v0.5.0-dev.tgz" dependencies: - "@emeraldpay/api": 0.4.4-dev + "@emeraldpay/api": 0.5.0-dev "@grpc/grpc-js": ^1.9.0 google-protobuf: ^3.21.2 protobufjs: ^7.2.4 - checksum: fd6114ca308dd050c292a8a537889bb3c60e2ac624ba9393dd6d4761afd708a64e53c95d7e09a39b2d451b9dc338f79c5ee87afea3df6d4859fd1a5300890df9 + checksum: 010a02bf4fbc345422d2f805db01dbb9d2a55ba79bec879cdb899ef5ce0c652b162c04d43ffa0f4bb4d2600951e61fcc421ce503b3a7f4c78af29be85c2f8d59 languageName: node linkType: hard -"@emeraldpay/api@https://artifacts.emerald.cash/builds/emerald-api-js/a4a88f2e/emeraldpay-api-v0.4.4-dev.tgz": - version: 0.4.4-dev - resolution: "@emeraldpay/api@https://artifacts.emerald.cash/builds/emerald-api-js/a4a88f2e/emeraldpay-api-v0.4.4-dev.tgz" +"@emeraldpay/api@https://artifacts.emerald.cash/builds/emerald-api-js/a35b8b1c/emeraldpay-api-v0.5.0-dev.tgz": + version: 0.5.0-dev + resolution: "@emeraldpay/api@https://artifacts.emerald.cash/builds/emerald-api-js/a35b8b1c/emeraldpay-api-v0.5.0-dev.tgz" dependencies: google-protobuf: ^3.21.2 protobufjs: ^7.2.4 - checksum: fc06c21a4349cb4d235c2859224643705aeb2b28d6ef93adfa40c143e8df7ec7a9d0f5d261c75c51b88cd73716b4083c408410504b5c3a2b4318162383ca0d99 + checksum: e64bb489db275574238be582d39bf9b6ba29b01a4b6400b162ea04e9cc1ab606baf410da5bbc9fe2ffc34131a5efb53a6ca826a8da3da7868fb9fc74687765c6 languageName: node linkType: hard @@ -3745,20 +3745,20 @@ __metadata: languageName: node linkType: hard -"@emeraldpay/emerald-vault-core@npm:0.12.0, @emeraldpay/emerald-vault-core@npm:^0.12.0": - version: 0.12.0 - resolution: "@emeraldpay/emerald-vault-core@npm:0.12.0" - checksum: c1f3ed8a9d2057411413587ded75c16d6ea83091a9dad413ef002be4eb250de0cbba3826be3e8f7b24141409d494c8d93b675a4dd3607c00a67f3355b52e2925 +"@emeraldpay/emerald-vault-core@https://artifacts.emerald.cash/builds/vault-node/1ffb2ac8/emeraldpay-emerald-vault-core-v0.13.0-dev.tgz": + version: 0.13.0-dev + resolution: "@emeraldpay/emerald-vault-core@https://artifacts.emerald.cash/builds/vault-node/1ffb2ac8/emeraldpay-emerald-vault-core-v0.13.0-dev.tgz" + checksum: 07b471f4ba20ffbf2a50f8a37f33f27c48c9b466eef2d373434c1590f6692e926c9169728319f5c18394d6fb8c8421a210a7d401f7a1e8d7d8a62c126c66266c languageName: node linkType: hard -"@emeraldpay/emerald-vault-native@npm:^0.12.0": - version: 0.12.0 - resolution: "@emeraldpay/emerald-vault-native@npm:0.12.0" +"@emeraldpay/emerald-vault-native@https://artifacts.emerald.cash/builds/vault-node/1ffb2ac8/emeraldpay-emerald-vault-native-v0.13.0-dev.tgz": + version: 0.13.0-dev + resolution: "@emeraldpay/emerald-vault-native@https://artifacts.emerald.cash/builds/vault-node/1ffb2ac8/emeraldpay-emerald-vault-native-v0.13.0-dev.tgz" dependencies: - "@emeraldpay/emerald-vault-core": 0.12.0 + "@emeraldpay/emerald-vault-core": 0.13.0-dev "@emeraldpay/neon-frame": 0.1.1 - checksum: 0238cf440bf831528c164817ec8e7c720ee9b2e49cd3db57a7476a4c3910ddc779da6209850f78820f2aa39998462c807212d9894833254aeb06f43a2aa62e6f + checksum: 948278e4c3f6c456225a55c7c2e2dc3f4a710cf710a7c423e164c1bd0f78cecb0961fd9da44ff888b1ba9e2ff8ec4cbe956f406c4952e73e09de5861a54152fa languageName: node linkType: hard @@ -3786,7 +3786,7 @@ __metadata: dependencies: "@emeraldpay/bigamount": ^0.4.2 "@emeraldpay/bigamount-crypto": ^0.4.2 - "@emeraldpay/emerald-vault-core": ^0.12.0 + "@emeraldpay/emerald-vault-core": ^0.13.0-dev "@ethereumjs/common": ^3.1.2 "@ethereumjs/tx": ^4.1.2 "@ethersproject/abi": ^5.7.0 @@ -3852,8 +3852,8 @@ __metadata: version: 0.0.0-use.local resolution: "@emeraldwallet/electron-app@workspace:packages/electron-app" dependencies: - "@emeraldpay/emerald-vault-core": ^0.12.0 - "@emeraldpay/emerald-vault-native": ^0.12.0 + "@emeraldpay/emerald-vault-core": ^0.13.0-dev + "@emeraldpay/emerald-vault-native": ^0.13.0-dev "@emeraldwallet/core": 2.11.0-dev "@emeraldwallet/persistent-state": 2.11.0-dev "@emeraldwallet/services": 2.11.0-dev @@ -3876,7 +3876,7 @@ __metadata: version: 0.0.0-use.local resolution: "@emeraldwallet/persistent-state@workspace:packages/persistent-state" dependencies: - "@emeraldpay/emerald-vault-core": ^0.12.0 + "@emeraldpay/emerald-vault-core": ^0.13.0-dev "@emeraldpay/neon-frame": ^0.1.1 "@emeraldwallet/core": 2.11.0-dev cargo-cp-artifact: ^0.1.8 @@ -3897,7 +3897,7 @@ __metadata: "@electron/remote": ^2.0.9 "@emeraldpay/bigamount": ^0.4.2 "@emeraldpay/bigamount-crypto": ^0.4.2 - "@emeraldpay/emerald-vault-core": ^0.12.0 + "@emeraldpay/emerald-vault-core": ^0.13.0-dev "@emeraldwallet/core": 2.11.0-dev "@emeraldwallet/store": 2.11.0-dev "@emeraldwallet/ui": 2.11.0-dev @@ -3968,11 +3968,11 @@ __metadata: version: 0.0.0-use.local resolution: "@emeraldwallet/services@workspace:packages/services" dependencies: - "@emeraldpay/api": ^0.4.3 - "@emeraldpay/api-node": ^0.4.3 + "@emeraldpay/api": ^0.5.0-dev + "@emeraldpay/api-node": ^0.5.0-dev "@emeraldpay/bigamount": ^0.4.2 "@emeraldpay/bigamount-crypto": ^0.4.2 - "@emeraldpay/emerald-vault-core": ^0.12.0 + "@emeraldpay/emerald-vault-core": ^0.13.0-dev "@emeraldwallet/core": 2.11.0-dev "@grpc/grpc-js": ^1.8.14 "@types/jest": ^29.5.3 @@ -3994,7 +3994,7 @@ __metadata: dependencies: "@emeraldpay/bigamount": ^0.4.2 "@emeraldpay/bigamount-crypto": ^0.4.2 - "@emeraldpay/emerald-vault-core": ^0.12.0 + "@emeraldpay/emerald-vault-core": ^0.13.0-dev "@emeraldwallet/core": 2.11.0-dev "@types/color-hash": ^1.0.2 "@types/jest": ^29.5.3