-
Notifications
You must be signed in to change notification settings - Fork 62
refactor: remove indirect KeyAgent dependency on ObservableWallet #1009
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
16e77c6 to
9aae528
Compare
Standard DiffPostThis PR would generate the following Previewdiff -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 |
There was a problem hiding this 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 🚀
tomislavhoracek
left a comment
There was a problem hiding this 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
6d254d4 to
8dcfbc4
Compare
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
Context
KeyAgentdepends onInputResolver, which is implemented by a util that depends onObservableWallet. SinceObservableWalletdepends onKeyAgent, it makes it a circular dependency. It was worked around by having LazyWalletUtil andsetupWalletutils.KeyAgentandPersonalWallet, making it 2 sources of truth that have to be synchronized.LW-9090
Proposed Solution
KeyAgent->InputResolverdependency with an extraTxContextargument forsignTransactionmethod, as well as remove the obsolete utils.PersonalWallet, makingKeyAgentmostly stateless and establishing single source of truth.Important Changes Introduced
AsyncKeyAgentis no longer required and should be removed.PersonalWalletinto a newAddressTrackercomponentStubKeyAgentas it was only used in tests where specific addresses are requiredKeyAgentBaseclass to utilizeBip32Accountfor 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:
KeyAgent.knownAddressesSerializableKeyAgentData.knownAddresesAsyncKeyAgent.knownAddresses$LazyWalletUtilandsetupWalletutilsKeyAgentdependency onInputResolverwith props passed to sign methodAddressManagerintoBip32Account: addresses are now stored only by the walletChecklist
yarn build && yarn test:build:verify && yarn lint && yarn test