Skip to content

Commit c12e34b

Browse files
authored
feat: use web socket provider (#1469)
1 parent 8c22ff5 commit c12e34b

File tree

19 files changed

+391
-177
lines changed

19 files changed

+391
-177
lines changed

.github/shared/build/action.yml

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,22 @@ inputs:
3939
description: 'Url for sanchonet env'
4040
required: false
4141
default: 'https://dev-sanchonet.lw.iog.io'
42+
CARDANO_WS_SERVER_URL_MAINNET:
43+
description: 'WS url for mainnet env'
44+
required: false
45+
default: 'wss://dev-mainnet.lw.iog.io'
46+
CARDANO_WS_SERVER_URL_PREPROD:
47+
description: 'WS url for preprod env'
48+
required: false
49+
default: 'wss://dev-preprod.lw.iog.io'
50+
CARDANO_WS_SERVER_URL_PREVIEW:
51+
description: 'WS url for preview env'
52+
required: false
53+
default: 'wss://dev-preview.lw.iog.io'
54+
CARDANO_WS_SERVER_URL_SANCHONET:
55+
description: 'WS url for sanchonet env'
56+
required: false
57+
default: 'wss://dev-sanchonet.lw.iog.io'
4258
runs:
4359
using: 'composite'
4460
steps:
@@ -95,4 +111,8 @@ runs:
95111
CARDANO_SERVICES_URL_PREPROD: ${{ inputs.CARDANO_SERVICES_URL_PREPROD }}
96112
CARDANO_SERVICES_URL_PREVIEW: ${{ inputs.CARDANO_SERVICES_URL_PREVIEW }}
97113
CARDANO_SERVICES_URL_SANCHONET: ${{ inputs.CARDANO_SERVICES_URL_SANCHONET }}
114+
CARDANO_WS_SERVER_URL_MAINNET: ${{ inputs.CARDANO_WS_SERVER_URL_MAINNET }}
115+
CARDANO_WS_SERVER_URL_PREPROD: ${{ inputs.CARDANO_WS_SERVER_URL_PREPROD }}
116+
CARDANO_WS_SERVER_URL_PREVIEW: ${{ inputs.CARDANO_WS_SERVER_URL_PREVIEW }}
117+
CARDANO_WS_SERVER_URL_SANCHONET: ${{ inputs.CARDANO_WS_SERVER_URL_SANCHONET }}
98118
run: yarn browser build

.github/workflows/e2e-tests-linux-split.yml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -173,6 +173,9 @@ jobs:
173173
CARDANO_SERVICES_URL_MAINNET: 'https://${{ env.CARDANO_MAINNET_URL }}'
174174
CARDANO_SERVICES_URL_PREPROD: 'https://${{ env.CARDANO_PREPROD_URL }}'
175175
CARDANO_SERVICES_URL_PREVIEW: 'https://${{ env.CARDANO_PREVIEW_URL }}'
176+
CARDANO_WS_SERVER_URL_MAINNET: 'wss://${{ env.CARDANO_MAINNET_URL }}'
177+
CARDANO_WS_SERVER_URL_PREPROD: 'wss://${{ env.CARDANO_PREPROD_URL }}'
178+
CARDANO_WS_SERVER_URL_PREVIEW: 'wss://${{ env.CARDANO_PREVIEW_URL }}'
176179
GITHUB_TOKEN: ${{ secrets.GH_TOKEN }}
177180
LACE_EXTENSION_KEY: ${{ secrets.MANIFEST_PUBLIC_KEY }}
178181

apps/browser-extension-wallet/.env.defaults

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -67,6 +67,12 @@ CARDANO_SERVICES_URL_PREPROD=https://dev-preprod.lw.iog.io
6767
CARDANO_SERVICES_URL_PREVIEW=https://dev-preview.lw.iog.io
6868
CARDANO_SERVICES_URL_SANCHONET=https://dev-sanchonet.lw.iog.io
6969

70+
# Cardano WS Services
71+
CARDANO_WS_SERVER_URL_MAINNET=wss://dev-mainnet.lw.iog.io
72+
CARDANO_WS_SERVER_URL_PREPROD=wss://dev-preprod.lw.iog.io
73+
CARDANO_WS_SERVER_URL_PREVIEW=wss://dev-preview.lw.iog.io
74+
CARDANO_WS_SERVER_URL_SANCHONET=wss://dev-sanchonet.lw.iog.io
75+
7076
# Explorer URLs
7177
CEXPLORER_URL_MAINNET=https://cexplorer.io
7278
CEXPLORER_URL_PREVIEW=https://preview.cexplorer.io

apps/browser-extension-wallet/.env.developerpreview

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -67,6 +67,12 @@ CARDANO_SERVICES_URL_PREPROD=https://dev-preprod.lw.iog.io
6767
CARDANO_SERVICES_URL_PREVIEW=https://dev-preview.lw.iog.io
6868
CARDANO_SERVICES_URL_SANCHONET=https://dev-sanchonet.lw.iog.io
6969

70+
# Cardano WS Services
71+
CARDANO_WS_SERVER_URL_MAINNET=wss://dev-mainnet.lw.iog.io
72+
CARDANO_WS_SERVER_URL_PREPROD=wss://dev-preprod.lw.iog.io
73+
CARDANO_WS_SERVER_URL_PREVIEW=wss://dev-preview.lw.iog.io
74+
CARDANO_WS_SERVER_URL_SANCHONET=wss://dev-sanchonet.lw.iog.io
75+
7076
# Explorer URLs
7177
CEXPLORER_URL_MAINNET=https://cexplorer.io
7278
CEXPLORER_URL_PREVIEW=https://preview.cexplorer.io

apps/browser-extension-wallet/.env.example

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -65,6 +65,12 @@ CARDANO_SERVICES_URL_PREPROD=https://backend.live-preprod.eks.lw.iog.io
6565
CARDANO_SERVICES_URL_PREVIEW=https://backend.live-preview.eks.lw.iog.io
6666
CARDANO_SERVICES_URL_SANCHONET=https://dev-sanchonet.lw.iog.io
6767

68+
# Cardano WS Services
69+
CARDANO_WS_SERVER_URL_MAINNET=wss://dev-mainnet.lw.iog.io
70+
CARDANO_WS_SERVER_URL_PREPROD=wss://dev-preprod.lw.iog.io
71+
CARDANO_WS_SERVER_URL_PREVIEW=wss://dev-preview.lw.iog.io
72+
CARDANO_WS_SERVER_URL_SANCHONET=wss://dev-sanchonet.lw.iog.io
73+
6874
# Explorer URLs
6975
CEXPLORER_URL_MAINNET=https://cexplorer.io
7076
CEXPLORER_URL_PREVIEW=https://preview.cexplorer.io

apps/browser-extension-wallet/manifest.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@
1919
"permissions": ["webRequest", "storage", "tabs", "unlimitedStorage"],
2020
"host_permissions": ["<all_urls>"],
2121
"content_security_policy": {
22-
"extension_pages": "default-src 'self' $LOCALHOST_DEFAULT_SRC; frame-src https://connect.trezor.io/ https://www.youtube-nocookie.com; script-src 'self' 'wasm-unsafe-eval' $LOCALHOST_SCRIPT_SRC; font-src 'self' https://use.typekit.net; object-src 'self'; connect-src $CARDANO_SERVICES_URLS https://coingecko.live-mainnet.eks.lw.iog.io https://muesliswap.live-mainnet.eks.lw.iog.io $LOCALHOST_CONNECT_SRC $POSTHOG_HOST https://use.typekit.net data:; style-src * 'unsafe-inline'; img-src * data:;"
22+
"extension_pages": "default-src 'self' $LOCALHOST_DEFAULT_SRC; frame-src https://connect.trezor.io/ https://www.youtube-nocookie.com; script-src 'self' 'wasm-unsafe-eval' $LOCALHOST_SCRIPT_SRC; font-src 'self' https://use.typekit.net; object-src 'self'; connect-src $CARDANO_SERVICES_URLS $CARDANO_WS_SERVER_URLS https://coingecko.live-mainnet.eks.lw.iog.io https://muesliswap.live-mainnet.eks.lw.iog.io $LOCALHOST_CONNECT_SRC $POSTHOG_HOST https://use.typekit.net data:; style-src * 'unsafe-inline'; img-src * data:;"
2323
},
2424
"content_scripts": [
2525
{

apps/browser-extension-wallet/package.json

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -41,15 +41,15 @@
4141
},
4242
"dependencies": {
4343
"@ant-design/icons": "^4.7.0",
44-
"@cardano-sdk/cardano-services-client": "0.20.8",
45-
"@cardano-sdk/core": "0.39.3",
46-
"@cardano-sdk/dapp-connector": "0.12.36",
47-
"@cardano-sdk/input-selection": "0.13.19",
48-
"@cardano-sdk/tx-construction": "0.21.4",
44+
"@cardano-sdk/cardano-services-client": "0.21.4",
45+
"@cardano-sdk/core": "0.41.1",
46+
"@cardano-sdk/dapp-connector": "0.12.41",
47+
"@cardano-sdk/input-selection": "0.13.24",
48+
"@cardano-sdk/tx-construction": "0.21.9",
4949
"@cardano-sdk/util": "0.15.5",
50-
"@cardano-sdk/util-rxjs": "0.7.32",
51-
"@cardano-sdk/wallet": "0.44.3",
52-
"@cardano-sdk/web-extension": "0.34.2",
50+
"@cardano-sdk/util-rxjs": "0.7.37",
51+
"@cardano-sdk/wallet": "0.44.11",
52+
"@cardano-sdk/web-extension": "0.34.10",
5353
"@emurgo/cip14-js": "~3.0.1",
5454
"@input-output-hk/lace-ui-toolkit": "1.21.0",
5555
"@lace/cardano": "0.1.0",
@@ -97,7 +97,7 @@
9797
"zustand": "3.5.14"
9898
},
9999
"devDependencies": {
100-
"@cardano-sdk/hardware-ledger": "0.12.3",
100+
"@cardano-sdk/hardware-ledger": "0.12.9",
101101
"@emurgo/cardano-message-signing-asmjs": "1.0.1",
102102
"@openpgp/web-stream-tools": "0.0.11-patch-0",
103103
"@pdfme/common": "^4.0.2",

apps/browser-extension-wallet/src/lib/scripts/background/config.ts

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,11 @@
11
import axiosFetchAdapter from '@shiroyasha9/axios-fetch-adapter';
22
import { Wallet } from '@lace/cardano';
33
import { RemoteApiProperties, RemoteApiPropertyType } from '@cardano-sdk/web-extension';
4-
import { getBaseUrlForChain } from '@src/utils/chain';
4+
import { getBaseUrlForChain, getMagicForChain } from '@src/utils/chain';
55
import { BackgroundService, UserIdService as UserIdServiceInterface } from '../types';
66
import { getBackgroundStorage } from '@lib/scripts/background/storage';
7+
import { ExperimentName } from '@providers/ExperimentsProvider/types';
8+
import { logger } from '@lace/common';
79

810
export const backgroundServiceProperties: RemoteApiProperties<BackgroundService> = {
911
requestMessage$: RemoteApiPropertyType.HotObservable,
@@ -26,12 +28,16 @@ export const backgroundServiceProperties: RemoteApiProperties<BackgroundService>
2628

2729
export const getProviders = async (chainName: Wallet.ChainName): Promise<Wallet.WalletProvidersDependencies> => {
2830
const baseCardanoServicesUrl = getBaseUrlForChain(chainName);
29-
const { customSubmitTxUrl } = await getBackgroundStorage();
31+
const magic = getMagicForChain(chainName);
32+
const { customSubmitTxUrl, featureFlags } = await getBackgroundStorage();
33+
const useWebSocket = !!(featureFlags?.[magic]?.[ExperimentName.WEBSOCKET_API] ?? false);
3034

3135
return Wallet.createProviders({
3236
axiosAdapter: axiosFetchAdapter,
3337
baseUrl: baseCardanoServicesUrl,
34-
customSubmitTxUrl
38+
customSubmitTxUrl,
39+
logger,
40+
useWebSocket
3541
});
3642
};
3743

apps/browser-extension-wallet/src/providers/ExperimentsProvider/config.ts

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,8 @@ export const getDefaultFeatureFlags = (): FallbackConfiguration => ({
44
[ExperimentName.CREATE_PAPER_WALLET]: false,
55
[ExperimentName.RESTORE_PAPER_WALLET]: false,
66
[ExperimentName.USE_SWITCH_TO_NAMI_MODE]: false,
7-
[ExperimentName.SHARED_WALLETS]: false
7+
[ExperimentName.SHARED_WALLETS]: false,
8+
[ExperimentName.WEBSOCKET_API]: false
89
});
910

1011
export const experiments: ExperimentsConfig = {
@@ -23,5 +24,9 @@ export const experiments: ExperimentsConfig = {
2324
[ExperimentName.SHARED_WALLETS]: {
2425
value: false,
2526
default: false
27+
},
28+
[ExperimentName.WEBSOCKET_API]: {
29+
value: false,
30+
default: false
2631
}
2732
};

apps/browser-extension-wallet/src/providers/ExperimentsProvider/types.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,8 @@ export enum ExperimentName {
99
CREATE_PAPER_WALLET = 'create-paper-wallet',
1010
RESTORE_PAPER_WALLET = 'restore-paper-wallet',
1111
USE_SWITCH_TO_NAMI_MODE = 'use-switch-to-nami-mode',
12-
SHARED_WALLETS = 'shared-wallets'
12+
SHARED_WALLETS = 'shared-wallets',
13+
WEBSOCKET_API = 'websocket-api'
1314
}
1415

1516
interface FeatureFlag {

apps/browser-extension-wallet/src/providers/PostHogClientProvider/client/PostHogClient.ts

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,12 @@ import { ExperimentName } from '@providers/ExperimentsProvider/types';
2525
import { BehaviorSubject, distinctUntilChanged, Observable, Subscription } from 'rxjs';
2626
import { PostHogAction, PostHogProperties } from '@lace/common';
2727

28-
type FeatureFlag = 'create-paper-wallet' | 'restore-paper-wallet' | 'shared-wallets' | 'use-switch-to-nami-mode';
28+
type FeatureFlag =
29+
| 'create-paper-wallet'
30+
| 'restore-paper-wallet'
31+
| 'shared-wallets'
32+
| 'use-switch-to-nami-mode'
33+
| 'websocket-api';
2934

3035
type FeatureFlags = {
3136
[key in FeatureFlag]: boolean;

apps/browser-extension-wallet/src/utils/chain.ts

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,3 +23,28 @@ export const getBaseUrlForChain = (chainName: Wallet.ChainName): string => {
2323
if (!AVAILABLE_CHAINS.includes(chainName)) throw new Error('Chain not supported');
2424
return url;
2525
};
26+
27+
export const getMagicForChain = (chainName: Wallet.ChainName): number => {
28+
const { AVAILABLE_CHAINS } = config();
29+
let magic = 0;
30+
switch (chainName) {
31+
case 'Mainnet':
32+
magic = Wallet.Cardano.NetworkMagics.Mainnet;
33+
break;
34+
case 'Preprod':
35+
magic = Wallet.Cardano.NetworkMagics.Preprod;
36+
break;
37+
case 'Preview':
38+
magic = Wallet.Cardano.NetworkMagics.Preview;
39+
break;
40+
case 'Sanchonet':
41+
magic = Wallet.Cardano.NetworkMagics.Sanchonet;
42+
break;
43+
default:
44+
throw new Error('Incorrect chain supplied');
45+
}
46+
47+
if (!AVAILABLE_CHAINS.includes(chainName)) throw new Error('Chain not supported');
48+
49+
return magic;
50+
};

apps/browser-extension-wallet/webpack-utils.js

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,10 @@ const transformManifest = (content, mode) => {
1212
manifest.version = `${manifest.version}.${date.getMonth()}${date.getDate()}`;
1313
}
1414
manifest.content_security_policy.extension_pages = manifest.content_security_policy.extension_pages
15+
.replace(
16+
'$CARDANO_WS_SERVER_URLS',
17+
`${process.env.CARDANO_WS_SERVER_URL_MAINNET} ${process.env.CARDANO_WS_SERVER_URL_PREPROD} ${process.env.CARDANO_WS_SERVER_URL_PREVIEW} ${process.env.CARDANO_WS_SERVER_URL_SANCHONET}`
18+
)
1519
.replace(
1620
'$CARDANO_SERVICES_URLS',
1721
`${process.env.CARDANO_SERVICES_URL_MAINNET} ${process.env.CARDANO_SERVICES_URL_PREPROD} ${process.env.CARDANO_SERVICES_URL_PREVIEW} ${process.env.CARDANO_SERVICES_URL_SANCHONET}`

packages/cardano/package.json

Lines changed: 10 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -40,16 +40,16 @@
4040
"watch": "yarn build --watch"
4141
},
4242
"dependencies": {
43-
"@cardano-sdk/cardano-services-client": "0.20.8",
44-
"@cardano-sdk/core": "0.39.3",
43+
"@cardano-sdk/cardano-services-client": "0.21.4",
44+
"@cardano-sdk/core": "0.41.1",
4545
"@cardano-sdk/crypto": "0.1.30",
46-
"@cardano-sdk/hardware-ledger": "0.12.3",
47-
"@cardano-sdk/hardware-trezor": "0.6.3",
48-
"@cardano-sdk/key-management": "0.24.2",
49-
"@cardano-sdk/tx-construction": "0.21.4",
46+
"@cardano-sdk/hardware-ledger": "0.12.9",
47+
"@cardano-sdk/hardware-trezor": "0.6.8",
48+
"@cardano-sdk/key-management": "0.24.7",
49+
"@cardano-sdk/tx-construction": "0.21.9",
5050
"@cardano-sdk/util": "0.15.5",
51-
"@cardano-sdk/wallet": "0.44.3",
52-
"@cardano-sdk/web-extension": "0.34.2",
51+
"@cardano-sdk/wallet": "0.44.11",
52+
"@cardano-sdk/web-extension": "0.34.10",
5353
"@lace/common": "0.1.0",
5454
"@ledgerhq/devices": "^8.2.1",
5555
"@stablelib/chacha20poly1305": "1.0.1",
@@ -71,11 +71,12 @@
7171
"webextension-polyfill": "0.10.0"
7272
},
7373
"devDependencies": {
74-
"@cardano-sdk/util-dev": "0.22.10",
74+
"@cardano-sdk/util-dev": "0.23.6",
7575
"@emurgo/cardano-message-signing-browser": "1.0.1",
7676
"@types/webextension-polyfill": "0.10.0",
7777
"axios": "^1.7.4",
7878
"rollup-plugin-polyfill-node": "^0.8.0",
79+
"ts-log": "^2.2.7",
7980
"typescript": "^4.9.5"
8081
},
8182
"peerDependencies": {

packages/cardano/src/wallet/lib/providers.ts

Lines changed: 50 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
/* eslint-disable no-new */
22
import { WalletProvidersDependencies } from '@src/wallet';
33
import { AxiosAdapter } from 'axios';
4+
import { Logger } from 'ts-log';
45
import {
56
AssetProvider,
67
ChainHistoryProvider,
@@ -13,6 +14,7 @@ import {
1314
} from '@cardano-sdk/core';
1415

1516
import {
17+
CardanoWsClient,
1618
CreateHttpProviderConfig,
1719
assetInfoHttpProvider,
1820
chainHistoryHttpProvider,
@@ -56,26 +58,63 @@ export interface ProvidersConfig {
5658
axiosAdapter?: AxiosAdapter;
5759
baseUrl: string;
5860
customSubmitTxUrl?: string;
61+
logger?: Logger;
62+
useWebSocket?: boolean;
5963
}
6064

65+
/**
66+
* Only one instance must be alive.
67+
*
68+
* If a new one needs to be created (ex. on network change) the previous instance needs to be closed. */
69+
let wsProvider: CardanoWsClient;
70+
6171
export const createProviders = ({
6272
axiosAdapter,
6373
baseUrl,
64-
customSubmitTxUrl
74+
customSubmitTxUrl,
75+
logger,
76+
useWebSocket
6577
}: ProvidersConfig): WalletProvidersDependencies => {
66-
const httpProviderConfig: CreateHttpProviderConfig<Provider> = {
67-
baseUrl,
68-
logger: console,
69-
adapter: axiosAdapter
70-
};
78+
if (!logger) logger = console;
79+
80+
const httpProviderConfig: CreateHttpProviderConfig<Provider> = { baseUrl, logger, adapter: axiosAdapter };
81+
82+
const assetProvider = assetInfoHttpProvider(httpProviderConfig);
83+
const chainHistoryProvider = chainHistoryHttpProvider(httpProviderConfig);
84+
const rewardsProvider = rewardsHttpProvider(httpProviderConfig);
85+
const stakePoolProvider = stakePoolHttpProvider(httpProviderConfig);
86+
const txSubmitProvider = createTxSubmitProvider(httpProviderConfig, customSubmitTxUrl);
87+
88+
if (useWebSocket) {
89+
const url = new URL(baseUrl);
90+
91+
url.pathname = '/ws';
92+
url.protocol = url.protocol === 'https:' ? 'wss:' : 'ws:';
93+
94+
// On network change this logs an error line as follows but it is expected as long as this function is called twice
95+
// 'Async error from WebSocket client' 'not-connected'
96+
if (wsProvider) wsProvider.close().catch((error) => console.error(error, 'While closing wsProvider'));
97+
98+
wsProvider = new CardanoWsClient({ chainHistoryProvider, logger }, { url });
99+
100+
return {
101+
assetProvider,
102+
networkInfoProvider: wsProvider.networkInfoProvider,
103+
txSubmitProvider,
104+
stakePoolProvider,
105+
utxoProvider: wsProvider.utxoProvider,
106+
chainHistoryProvider: wsProvider.chainHistoryProvider,
107+
rewardsProvider
108+
};
109+
}
71110

72111
return {
73-
assetProvider: assetInfoHttpProvider(httpProviderConfig),
112+
assetProvider,
74113
networkInfoProvider: networkInfoHttpProvider(httpProviderConfig),
75-
txSubmitProvider: createTxSubmitProvider(httpProviderConfig, customSubmitTxUrl),
76-
stakePoolProvider: stakePoolHttpProvider(httpProviderConfig),
114+
txSubmitProvider,
115+
stakePoolProvider,
77116
utxoProvider: utxoHttpProvider(httpProviderConfig),
78-
chainHistoryProvider: chainHistoryHttpProvider(httpProviderConfig),
79-
rewardsProvider: rewardsHttpProvider(httpProviderConfig)
117+
chainHistoryProvider,
118+
rewardsProvider
80119
};
81120
};

packages/core/package.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -43,8 +43,8 @@
4343
},
4444
"dependencies": {
4545
"@ant-design/icons": "^4.7.0",
46-
"@cardano-sdk/wallet": "0.44.3",
47-
"@cardano-sdk/web-extension": "0.34.2",
46+
"@cardano-sdk/wallet": "0.44.11",
47+
"@cardano-sdk/web-extension": "0.34.10",
4848
"@input-output-hk/lace-ui-toolkit": "1.19.0",
4949
"@lace/cardano": "0.1.0",
5050
"@lace/common": "0.1.0",

packages/nami/package.json

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -57,10 +57,10 @@
5757
},
5858
"dependencies": {
5959
"@cardano-foundation/ledgerjs-hw-app-cardano": "^6.0.0",
60-
"@cardano-sdk/core": "0.39.3",
60+
"@cardano-sdk/core": "0.41.1",
6161
"@cardano-sdk/crypto": "0.1.30",
62-
"@cardano-sdk/tx-construction": "0.21.4",
63-
"@cardano-sdk/web-extension": "0.34.2",
62+
"@cardano-sdk/tx-construction": "0.21.9",
63+
"@cardano-sdk/web-extension": "0.34.10",
6464
"@chakra-ui/css-reset": "1.0.0",
6565
"@chakra-ui/icons": "1.0.13",
6666
"@chakra-ui/react": "1.6.4",

0 commit comments

Comments
 (0)