Skip to content

Conversation

@mkazlauskas
Copy link
Member

@mkazlauskas mkazlauskas commented Dec 5, 2023

Context

  1. KeyAgent depends on InputResolver, which is implemented by a util that depends on ObservableWallet. Since ObservableWallet depends on KeyAgent, it makes it a circular dependency. It was worked around by having LazyWalletUtil and setupWallet utils.
  2. Addresses are stored by both KeyAgent and PersonalWallet, making it 2 sources of truth that have to be synchronized.

LW-9090

Proposed Solution

  1. Replace the KeyAgent->InputResolver dependency with an extra TxContext argument for signTransaction method, as well as remove the obsolete utils.
  2. Consolidate address storage in PersonalWallet, making KeyAgent mostly stateless and establishing single source of truth.

Important Changes Introduced

  • remove createAsyncKeyAgent tests instead of refactoring them, because AsyncKeyAgent is no longer required and should be removed.
  • extract address discovery and storage from PersonalWallet into a new AddressTracker component
  • remove StubKeyAgent as it was only used in tests where specific addresses are required
  • refactor KeyAgentBase class to utilize Bip32Account for key and address derivations. This can be refactored further by removing those methods from KeyAgent and relying Bip32Account everywhere it's used instead.

BREAKING CHANGES:

  • remove KeyAgent.knownAddresses
  • remove SerializableKeyAgentData.knownAddreses
  • remove AsyncKeyAgent.knownAddresses$
  • remove LazyWalletUtil and setupWallet utils
  • replace KeyAgent dependency on InputResolver with props passed to sign method
  • re-purpose AddressManager into Bip32Account: addresses are now stored only by the wallet

Checklist

  • yarn build && yarn test:build:verify && yarn lint && yarn test
  • hw integration tests pass (not tested yet)
  • e2e tests pass
  • e2e web-extension tests pass (not tested yet)

@mkazlauskas mkazlauskas force-pushed the refactor/decouple-key-agent-from-wallet branch from 16e77c6 to 9aae528 Compare December 5, 2023 18:24
@github-actions
Copy link

github-actions bot commented Dec 5, 2023

Standard DiffPost

This PR would generate the following kubectl diff:

Preview
diff -u -N /tmp/LIVE-4244515420/apps.v1.Deployment.dev-preview.dev-preview-cardanojs-backend /tmp/MERGED-4095829703/apps.v1.Deployment.dev-preview.dev-preview-cardanojs-backend
--- /tmp/LIVE-4244515420/apps.v1.Deployment.dev-preview.dev-preview-cardanojs-backend	2023-12-06 13:15:15.291970161 +0000
+++ /tmp/MERGED-4095829703/apps.v1.Deployment.dev-preview.dev-preview-cardanojs-backend	2023-12-06 13:15:15.295970133 +0000
@@ -4,11 +4,11 @@
   annotations:
     deployment.kubernetes.io/revision: "80"
   creationTimestamp: "2023-08-11T18:16:12Z"
-  generation: 80
+  generation: 81
   labels:
     app: backend
     app.kubernetes.io/managed-by: std-kubectl
-    app.kubernetes.io/version: 2004f7c91f8742297063b1894bbfe8030d1c047a
+    app.kubernetes.io/version: 8109e410ecb9b851e3de4b42f0afcec7be2afebf
     network: preview
     release: dev-preview-cardanojs
   name: dev-preview-cardanojs-backend
@@ -89,7 +89,7 @@
           value: "false"
         - name: USE_KORA_LABS
           value: "true"
-        image: 926093910549.dkr.ecr.us-east-1.amazonaws.com/cardano-services:g3dck5cqx65lhzk9l73kfnd8m4wlx4yw
+        image: 926093910549.dkr.ecr.us-east-1.amazonaws.com/cardano-services:2c3lkps0sgxkz19pww1719qkf3ffh6iy
         imagePullPolicy: IfNotPresent
         livenessProbe:
           failureThreshold: 3
diff -u -N /tmp/LIVE-4244515420/apps.v1.Deployment.dev-preview.dev-preview-cardanojs-coingecko-proxy /tmp/MERGED-4095829703/apps.v1.Deployment.dev-preview.dev-preview-cardanojs-coingecko-proxy
--- /tmp/LIVE-4244515420/apps.v1.Deployment.dev-preview.dev-preview-cardanojs-coingecko-proxy	2023-12-06 13:15:15.591968017 +0000
+++ /tmp/MERGED-4095829703/apps.v1.Deployment.dev-preview.dev-preview-cardanojs-coingecko-proxy	2023-12-06 13:15:15.591968017 +0000
@@ -8,7 +8,7 @@
   labels:
     app: coingecko-proxy
     app.kubernetes.io/managed-by: std-kubectl
-    app.kubernetes.io/version: 2004f7c91f8742297063b1894bbfe8030d1c047a
+    app.kubernetes.io/version: 8109e410ecb9b851e3de4b42f0afcec7be2afebf
     network: preview
     release: dev-preview-cardanojs
   name: dev-preview-cardanojs-coingecko-proxy
diff -u -N /tmp/LIVE-4244515420/apps.v1.Deployment.dev-preview.dev-preview-cardanojs-handle-projector /tmp/MERGED-4095829703/apps.v1.Deployment.dev-preview.dev-preview-cardanojs-handle-projector
--- /tmp/LIVE-4244515420/apps.v1.Deployment.dev-preview.dev-preview-cardanojs-handle-projector	2023-12-06 13:15:15.891965916 +0000
+++ /tmp/MERGED-4095829703/apps.v1.Deployment.dev-preview.dev-preview-cardanojs-handle-projector	2023-12-06 13:15:15.891965916 +0000
@@ -4,11 +4,11 @@
   annotations:
     deployment.kubernetes.io/revision: "80"
   creationTimestamp: "2023-08-11T18:16:13Z"
-  generation: 80
+  generation: 81
   labels:
     app: handle-projector
     app.kubernetes.io/managed-by: std-kubectl
-    app.kubernetes.io/version: 2004f7c91f8742297063b1894bbfe8030d1c047a
+    app.kubernetes.io/version: 8109e410ecb9b851e3de4b42f0afcec7be2afebf
     network: preview
     release: dev-preview-cardanojs
   name: dev-preview-cardanojs-handle-projector
@@ -73,7 +73,7 @@
               name: handle-owner-user.dev-preview-dbsync-db.credentials.postgresql.acid.zalan.do
         - name: PROJECTION_NAMES
           value: handle
-        image: 926093910549.dkr.ecr.us-east-1.amazonaws.com/cardano-services:g3dck5cqx65lhzk9l73kfnd8m4wlx4yw
+        image: 926093910549.dkr.ecr.us-east-1.amazonaws.com/cardano-services:2c3lkps0sgxkz19pww1719qkf3ffh6iy
         imagePullPolicy: IfNotPresent
         livenessProbe:
           failureThreshold: 3
diff -u -N /tmp/LIVE-4244515420/apps.v1.Deployment.dev-preview.dev-preview-cardanojs-handle-provider /tmp/MERGED-4095829703/apps.v1.Deployment.dev-preview.dev-preview-cardanojs-handle-provider
--- /tmp/LIVE-4244515420/apps.v1.Deployment.dev-preview.dev-preview-cardanojs-handle-provider	2023-12-06 13:15:16.195963876 +0000
+++ /tmp/MERGED-4095829703/apps.v1.Deployment.dev-preview.dev-preview-cardanojs-handle-provider	2023-12-06 13:15:16.195963876 +0000
@@ -4,11 +4,11 @@
   annotations:
     deployment.kubernetes.io/revision: "47"
   creationTimestamp: "2023-08-11T18:16:13Z"
-  generation: 47
+  generation: 48
   labels:
     app: handle-provider
     app.kubernetes.io/managed-by: std-kubectl
-    app.kubernetes.io/version: 2004f7c91f8742297063b1894bbfe8030d1c047a
+    app.kubernetes.io/version: 8109e410ecb9b851e3de4b42f0afcec7be2afebf
     network: preview
     release: dev-preview-cardanojs
   name: dev-preview-cardanojs-handle-provider
@@ -81,7 +81,7 @@
           value: handle
         - name: USE_KORA_LABS
           value: "true"
-        image: 926093910549.dkr.ecr.us-east-1.amazonaws.com/cardano-services:g3dck5cqx65lhzk9l73kfnd8m4wlx4yw
+        image: 926093910549.dkr.ecr.us-east-1.amazonaws.com/cardano-services:2c3lkps0sgxkz19pww1719qkf3ffh6iy
         imagePullPolicy: IfNotPresent
         livenessProbe:
           failureThreshold: 3
diff -u -N /tmp/LIVE-4244515420/apps.v1.Deployment.dev-preview.dev-preview-cardanojs-pg-boss-worker /tmp/MERGED-4095829703/apps.v1.Deployment.dev-preview.dev-preview-cardanojs-pg-boss-worker
--- /tmp/LIVE-4244515420/apps.v1.Deployment.dev-preview.dev-preview-cardanojs-pg-boss-worker	2023-12-06 13:15:16.499961836 +0000
+++ /tmp/MERGED-4095829703/apps.v1.Deployment.dev-preview.dev-preview-cardanojs-pg-boss-worker	2023-12-06 13:15:16.499961836 +0000
@@ -4,11 +4,11 @@
   annotations:
     deployment.kubernetes.io/revision: "80"
   creationTimestamp: "2023-08-11T18:16:13Z"
-  generation: 80
+  generation: 81
   labels:
     app: pg-boss-worker
     app.kubernetes.io/managed-by: std-kubectl
-    app.kubernetes.io/version: 2004f7c91f8742297063b1894bbfe8030d1c047a
+    app.kubernetes.io/version: 8109e410ecb9b851e3de4b42f0afcec7be2afebf
     network: preview
     release: dev-preview-cardanojs
   name: dev-preview-cardanojs-pg-boss-worker
@@ -95,7 +95,7 @@
           value: pool-delist-schedule,pool-metadata,pool-metrics,pool-rewards
         - name: STAKE_POOL_PROVIDER_URL
           value: http://dev-preview-cardanojs-backend.dev-preview.svc.cluster.local
-        image: 926093910549.dkr.ecr.us-east-1.amazonaws.com/cardano-services:g3dck5cqx65lhzk9l73kfnd8m4wlx4yw
+        image: 926093910549.dkr.ecr.us-east-1.amazonaws.com/cardano-services:2c3lkps0sgxkz19pww1719qkf3ffh6iy
         imagePullPolicy: IfNotPresent
         livenessProbe:
           failureThreshold: 3
diff -u -N /tmp/LIVE-4244515420/apps.v1.Deployment.dev-preview.dev-preview-cardanojs-stake-pool-projector /tmp/MERGED-4095829703/apps.v1.Deployment.dev-preview.dev-preview-cardanojs-stake-pool-projector
--- /tmp/LIVE-4244515420/apps.v1.Deployment.dev-preview.dev-preview-cardanojs-stake-pool-projector	2023-12-06 13:15:16.803959796 +0000
+++ /tmp/MERGED-4095829703/apps.v1.Deployment.dev-preview.dev-preview-cardanojs-stake-pool-projector	2023-12-06 13:15:16.803959796 +0000
@@ -4,11 +4,11 @@
   annotations:
     deployment.kubernetes.io/revision: "80"
   creationTimestamp: "2023-08-11T18:16:13Z"
-  generation: 80
+  generation: 81
   labels:
     app: stake-pool-projector
     app.kubernetes.io/managed-by: std-kubectl
-    app.kubernetes.io/version: 2004f7c91f8742297063b1894bbfe8030d1c047a
+    app.kubernetes.io/version: 8109e410ecb9b851e3de4b42f0afcec7be2afebf
     network: preview
     release: dev-preview-cardanojs
   name: dev-preview-cardanojs-stake-pool-projector
@@ -73,7 +73,7 @@
               name: stakepool-owner-user.dev-preview-dbsync-db.credentials.postgresql.acid.zalan.do
         - name: PROJECTION_NAMES
           value: stake-pool,stake-pool-metadata-job,stake-pool-metrics-job,stake-pool-rewards-job
-        image: 926093910549.dkr.ecr.us-east-1.amazonaws.com/cardano-services:g3dck5cqx65lhzk9l73kfnd8m4wlx4yw
+        image: 926093910549.dkr.ecr.us-east-1.amazonaws.com/cardano-services:2c3lkps0sgxkz19pww1719qkf3ffh6iy
         imagePullPolicy: IfNotPresent
         livenessProbe:
           failureThreshold: 3
diff -u -N /tmp/LIVE-4244515420/apps.v1.Deployment.dev-preview.dev-preview-cardanojs-stake-pool-provider /tmp/MERGED-4095829703/apps.v1.Deployment.dev-preview.dev-preview-cardanojs-stake-pool-provider
--- /tmp/LIVE-4244515420/apps.v1.Deployment.dev-preview.dev-preview-cardanojs-stake-pool-provider	2023-12-06 13:15:17.111957728 +0000
+++ /tmp/MERGED-4095829703/apps.v1.Deployment.dev-preview.dev-preview-cardanojs-stake-pool-provider	2023-12-06 13:15:17.111957728 +0000
@@ -4,11 +4,11 @@
   annotations:
     deployment.kubernetes.io/revision: "77"
   creationTimestamp: "2023-08-11T18:16:13Z"
-  generation: 77
+  generation: 78
   labels:
     app: stake-pool-provider
     app.kubernetes.io/managed-by: std-kubectl
-    app.kubernetes.io/version: 2004f7c91f8742297063b1894bbfe8030d1c047a
+    app.kubernetes.io/version: 8109e410ecb9b851e3de4b42f0afcec7be2afebf
     network: preview
     release: dev-preview-cardanojs
   name: dev-preview-cardanojs-stake-pool-provider
@@ -83,7 +83,7 @@
           value: http://dev-preview-cardano-stack-metadata.dev-preview.svc.cluster.local
         - name: USE_TYPEORM_STAKE_POOL_PROVIDER
           value: "true"
-        image: 926093910549.dkr.ecr.us-east-1.amazonaws.com/cardano-services:g3dck5cqx65lhzk9l73kfnd8m4wlx4yw
+        image: 926093910549.dkr.ecr.us-east-1.amazonaws.com/cardano-services:2c3lkps0sgxkz19pww1719qkf3ffh6iy
         imagePullPolicy: IfNotPresent
         livenessProbe:
           failureThreshold: 3
diff -u -N /tmp/LIVE-4244515420/monitoring.coreos.com.v1.ServiceMonitor.dev-preview.lace-backend-monitor /tmp/MERGED-4095829703/monitoring.coreos.com.v1.ServiceMonitor.dev-preview.lace-backend-monitor
--- /tmp/LIVE-4244515420/monitoring.coreos.com.v1.ServiceMonitor.dev-preview.lace-backend-monitor	2023-12-06 13:15:17.407955740 +0000
+++ /tmp/MERGED-4095829703/monitoring.coreos.com.v1.ServiceMonitor.dev-preview.lace-backend-monitor	2023-12-06 13:15:17.407955740 +0000
@@ -5,7 +5,7 @@
   generation: 2
   labels:
     app.kubernetes.io/managed-by: std-kubectl
-    app.kubernetes.io/version: 2004f7c91f8742297063b1894bbfe8030d1c047a
+    app.kubernetes.io/version: 8109e410ecb9b851e3de4b42f0afcec7be2afebf
     instance: primary
   name: lace-backend-monitor
   namespace: dev-preview
diff -u -N /tmp/LIVE-4244515420/monitoring.coreos.com.v1.ServiceMonitor.dev-preview.lace-handle-provider-monitor /tmp/MERGED-4095829703/monitoring.coreos.com.v1.ServiceMonitor.dev-preview.lace-handle-provider-monitor
--- /tmp/LIVE-4244515420/monitoring.coreos.com.v1.ServiceMonitor.dev-preview.lace-handle-provider-monitor	2023-12-06 13:15:17.711953698 +0000
+++ /tmp/MERGED-4095829703/monitoring.coreos.com.v1.ServiceMonitor.dev-preview.lace-handle-provider-monitor	2023-12-06 13:15:17.711953698 +0000
@@ -5,7 +5,7 @@
   generation: 2
   labels:
     app.kubernetes.io/managed-by: std-kubectl
-    app.kubernetes.io/version: 2004f7c91f8742297063b1894bbfe8030d1c047a
+    app.kubernetes.io/version: 8109e410ecb9b851e3de4b42f0afcec7be2afebf
     instance: primary
   name: lace-handle-provider-monitor
   namespace: dev-preview
diff -u -N /tmp/LIVE-4244515420/monitoring.coreos.com.v1.ServiceMonitor.dev-preview.lace-stake-pool-provider-monitor /tmp/MERGED-4095829703/monitoring.coreos.com.v1.ServiceMonitor.dev-preview.lace-stake-pool-provider-monitor
--- /tmp/LIVE-4244515420/monitoring.coreos.com.v1.ServiceMonitor.dev-preview.lace-stake-pool-provider-monitor	2023-12-06 13:15:18.007951705 +0000
+++ /tmp/MERGED-4095829703/monitoring.coreos.com.v1.ServiceMonitor.dev-preview.lace-stake-pool-provider-monitor	2023-12-06 13:15:18.007951705 +0000
@@ -5,7 +5,7 @@
   generation: 2
   labels:
     app.kubernetes.io/managed-by: std-kubectl
-    app.kubernetes.io/version: 2004f7c91f8742297063b1894bbfe8030d1c047a
+    app.kubernetes.io/version: 8109e410ecb9b851e3de4b42f0afcec7be2afebf
     instance: primary
   name: lace-stake-pool-provider-monitor
   namespace: dev-preview
diff -u -N /tmp/LIVE-4244515420/networking.k8s.io.v1.Ingress.dev-preview.dev-preview-cardanojs-backend /tmp/MERGED-4095829703/networking.k8s.io.v1.Ingress.dev-preview.dev-preview-cardanojs-backend
--- /tmp/LIVE-4244515420/networking.k8s.io.v1.Ingress.dev-preview.dev-preview-cardanojs-backend	2023-12-06 13:15:18.315949638 +0000
+++ /tmp/MERGED-4095829703/networking.k8s.io.v1.Ingress.dev-preview.dev-preview-cardanojs-backend	2023-12-06 13:15:18.315949638 +0000
@@ -19,7 +19,7 @@
   labels:
     app: backend
     app.kubernetes.io/managed-by: std-kubectl
-    app.kubernetes.io/version: 2004f7c91f8742297063b1894bbfe8030d1c047a
+    app.kubernetes.io/version: 8109e410ecb9b851e3de4b42f0afcec7be2afebf
     network: preview
     release: dev-preview-cardanojs
   name: dev-preview-cardanojs-backend
diff -u -N /tmp/LIVE-4244515420/networking.k8s.io.v1.Ingress.dev-preview.dev-preview-cardanojs-coingecko-proxy /tmp/MERGED-4095829703/networking.k8s.io.v1.Ingress.dev-preview.dev-preview-cardanojs-coingecko-proxy
--- /tmp/LIVE-4244515420/networking.k8s.io.v1.Ingress.dev-preview.dev-preview-cardanojs-coingecko-proxy	2023-12-06 13:15:18.615947625 +0000
+++ /tmp/MERGED-4095829703/networking.k8s.io.v1.Ingress.dev-preview.dev-preview-cardanojs-coingecko-proxy	2023-12-06 13:15:18.615947625 +0000
@@ -16,7 +16,7 @@
   labels:
     app: coingecko-proxy
     app.kubernetes.io/managed-by: std-kubectl
-    app.kubernetes.io/version: 2004f7c91f8742297063b1894bbfe8030d1c047a
+    app.kubernetes.io/version: 8109e410ecb9b851e3de4b42f0afcec7be2afebf
     network: preview
     release: dev-preview-cardanojs
   name: dev-preview-cardanojs-coingecko-proxy
diff -u -N /tmp/LIVE-4244515420/v1.Service.dev-preview.dev-preview-cardanojs-backend /tmp/MERGED-4095829703/v1.Service.dev-preview.dev-preview-cardanojs-backend
--- /tmp/LIVE-4244515420/v1.Service.dev-preview.dev-preview-cardanojs-backend	2023-12-06 13:15:14.083978798 +0000
+++ /tmp/MERGED-4095829703/v1.Service.dev-preview.dev-preview-cardanojs-backend	2023-12-06 13:15:14.083978798 +0000
@@ -5,7 +5,7 @@
   labels:
     app: backend
     app.kubernetes.io/managed-by: std-kubectl
-    app.kubernetes.io/version: 2004f7c91f8742297063b1894bbfe8030d1c047a
+    app.kubernetes.io/version: 8109e410ecb9b851e3de4b42f0afcec7be2afebf
     network: preview
     release: dev-preview-cardanojs
   name: dev-preview-cardanojs-backend
diff -u -N /tmp/LIVE-4244515420/v1.Service.dev-preview.dev-preview-cardanojs-coingecko-proxy /tmp/MERGED-4095829703/v1.Service.dev-preview.dev-preview-cardanojs-coingecko-proxy
--- /tmp/LIVE-4244515420/v1.Service.dev-preview.dev-preview-cardanojs-coingecko-proxy	2023-12-06 13:15:14.379976682 +0000
+++ /tmp/MERGED-4095829703/v1.Service.dev-preview.dev-preview-cardanojs-coingecko-proxy	2023-12-06 13:15:14.379976682 +0000
@@ -5,7 +5,7 @@
   labels:
     app: coingecko-proxy
     app.kubernetes.io/managed-by: std-kubectl
-    app.kubernetes.io/version: 2004f7c91f8742297063b1894bbfe8030d1c047a
+    app.kubernetes.io/version: 8109e410ecb9b851e3de4b42f0afcec7be2afebf
     network: preview
     release: dev-preview-cardanojs
   name: dev-preview-cardanojs-coingecko-proxy
diff -u -N /tmp/LIVE-4244515420/v1.Service.dev-preview.dev-preview-cardanojs-handle-provider /tmp/MERGED-4095829703/v1.Service.dev-preview.dev-preview-cardanojs-handle-provider
--- /tmp/LIVE-4244515420/v1.Service.dev-preview.dev-preview-cardanojs-handle-provider	2023-12-06 13:15:14.679974538 +0000
+++ /tmp/MERGED-4095829703/v1.Service.dev-preview.dev-preview-cardanojs-handle-provider	2023-12-06 13:15:14.679974538 +0000
@@ -5,7 +5,7 @@
   labels:
     app: handle-provider
     app.kubernetes.io/managed-by: std-kubectl
-    app.kubernetes.io/version: 2004f7c91f8742297063b1894bbfe8030d1c047a
+    app.kubernetes.io/version: 8109e410ecb9b851e3de4b42f0afcec7be2afebf
     network: preview
     release: dev-preview-cardanojs
   name: dev-preview-cardanojs-handle-provider
diff -u -N /tmp/LIVE-4244515420/v1.Service.dev-preview.dev-preview-cardanojs-stake-pool-provider /tmp/MERGED-4095829703/v1.Service.dev-preview.dev-preview-cardanojs-stake-pool-provider
--- /tmp/LIVE-4244515420/v1.Service.dev-preview.dev-preview-cardanojs-stake-pool-provider	2023-12-06 13:15:14.971972449 +0000
+++ /tmp/MERGED-4095829703/v1.Service.dev-preview.dev-preview-cardanojs-stake-pool-provider	2023-12-06 13:15:14.971972449 +0000
@@ -5,7 +5,7 @@
   labels:
     app: stake-pool-provider
     app.kubernetes.io/managed-by: std-kubectl
-    app.kubernetes.io/version: 2004f7c91f8742297063b1894bbfe8030d1c047a
+    app.kubernetes.io/version: 8109e410ecb9b851e3de4b42f0afcec7be2afebf
     network: preview
     release: dev-preview-cardanojs
   name: dev-preview-cardanojs-stake-pool-provider

AngelCastilloB
AngelCastilloB previously approved these changes Dec 6, 2023
Copy link
Member

@AngelCastilloB AngelCastilloB left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I left a couple of nitpicks (feel free to ignore and resolve those), but the changes LGTM, I like this change a lot, this makes more sense and has better separation of concerns, awesome work @mkazlauskas 🚀

AngelCastilloB
AngelCastilloB previously approved these changes Dec 6, 2023
Copy link
Contributor

@tomislavhoracek tomislavhoracek left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@mkazlauskas AMAZING stuff 💪 💯

1. KeyAgent depends on InputResolver, which in is implemented by a util
that depends on ObservableWallet. Since ObservableWallet depends on
KeyAgent, it makes it a circular dependency. It was worked around by
having LazyWalletUtil and setupWallet utils. This commit replaces the
KeyAgent->InputResolver dependency with an extra TxContext argument for
signTransaction method, as well as removes the obsolete utils.

2. Addresses are stored by both KeyAgent and PersonalWallet.
This commit consolidates address storage in PersonalWallet,
making KeyAgent stateless and establishing single source of truth.

Notes:
- remove createAsyncKeyAgent tests instead of refactoring them,
because AsyncKeyAgent is no longer required and should be removed.
- extract address discovery and storage from PersonalWallet into
a new AddressTracker component

BREAKING CHANGE: remove KeyAgent.knownAddresses
- remove AsyncKeyAgent.knownAddresses$
- remove LazyWalletUtil and setupWallet utils
- replace KeyAgent dependency on InputResolver with props passed to sign method
- re-purpose AddressManager to Bip32Account: addresses are now stored only by the wallet
@mkazlauskas mkazlauskas force-pushed the refactor/decouple-key-agent-from-wallet branch from 6d254d4 to 8dcfbc4 Compare December 6, 2023 13:10
@mkazlauskas mkazlauskas merged commit abc81ef into master Dec 6, 2023
@mkazlauskas mkazlauskas deleted the refactor/decouple-key-agent-from-wallet branch December 6, 2023 16:09
mkazlauskas added a commit that referenced this pull request Dec 8, 2023
we consolidated address storage in the wallet in #1009
and there was no way to re-discover addresses,
since storage is managed by the wallet internally
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants