From 49e5af3fc24c62dce470826d8ac3ea2457e7a99c Mon Sep 17 00:00:00 2001 From: Jordan Enev Date: Tue, 2 Jul 2024 14:56:17 +0300 Subject: [PATCH 1/8] Debug: Log main state and broadcast full message. --- src/controllers/main/main.ts | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/src/controllers/main/main.ts b/src/controllers/main/main.ts index 45d5ecc53..0be527b78 100644 --- a/src/controllers/main/main.ts +++ b/src/controllers/main/main.ts @@ -1540,14 +1540,14 @@ export class MainController extends EventEmitter { error?.message || 'Unable to broadcast the transaction. Please try again or contact Ambire support if the issue persists.' - if (message) { - if (message.includes('insufficient funds')) { - // TODO: Better message? - message = 'Insufficient funds for intristic transaction cost' - } else { - message = message.length > 300 ? `${message.substring(0, 300)}...` : message - } - } + // if (message) { + // if (message.includes('insufficient funds')) { + // // TODO: Better message? + // message = 'Insufficient funds for intristic transaction cost' + // } else { + // message = message.length > 300 ? `${message.substring(0, 300)}...` : message + // } + // } this.emitError({ level: 'major', message, error }) // To enable another try for signing in case of broadcast fail From 28506bbed47c030645dd8cfc5260ab3740b74448 Mon Sep 17 00:00:00 2001 From: Jordan Enev Date: Tue, 2 Jul 2024 15:54:20 +0300 Subject: [PATCH 2/8] Debug: Include `from` while broadcasting. --- src/controllers/main/main.ts | 1 + src/interfaces/keystore.ts | 1 + 2 files changed, 2 insertions(+) diff --git a/src/controllers/main/main.ts b/src/controllers/main/main.ts index 0be527b78..83e9a08b4 100644 --- a/src/controllers/main/main.ts +++ b/src/controllers/main/main.ts @@ -1263,6 +1263,7 @@ export class MainController extends EventEmitter { const gasFeePayment = accountOp.gasFeePayment! const { to, value, data } = accountOp.calls[0] const rawTxn: TxnRequest = { + from: accountOp.accountAddr, to, value, data, diff --git a/src/interfaces/keystore.ts b/src/interfaces/keystore.ts index 6cbd1ad79..45825f537 100644 --- a/src/interfaces/keystore.ts +++ b/src/interfaces/keystore.ts @@ -40,6 +40,7 @@ export interface ExternalSignerController { export type ExternalSignerControllers = Partial<{ [key in Key['type']]: ExternalSignerController }> export interface TxnRequest { + from?: string to: Call['to'] value?: Call['value'] data: Call['data'] From 2c4350aef9d7c3599cb657a41a2feec83d1e73c4 Mon Sep 17 00:00:00 2001 From: Jordan Enev Date: Tue, 2 Jul 2024 17:18:53 +0300 Subject: [PATCH 3/8] Debug: Log signers keys. --- src/controllers/main/main.ts | 8 ++++++-- src/interfaces/keystore.ts | 1 - 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/src/controllers/main/main.ts b/src/controllers/main/main.ts index 83e9a08b4..00781b710 100644 --- a/src/controllers/main/main.ts +++ b/src/controllers/main/main.ts @@ -1257,13 +1257,17 @@ export class MainController extends EventEmitter { ) ) } + const signer = await this.keystore.getSigner(feePayerKey.addr, feePayerKey.type) if (signer.init) signer.init(this.#externalSignerControllers[feePayerKey.type]) + throw new Error( + `feePayerKeyAddr: ${feePayerKey.addr}, feePayerKeyType: ${feePayerKey.type}, signerKeyAddr ${signer.key.addr}` + ) + const gasFeePayment = accountOp.gasFeePayment! const { to, value, data } = accountOp.calls[0] const rawTxn: TxnRequest = { - from: accountOp.accountAddr, to, value, data, @@ -1537,7 +1541,7 @@ export class MainController extends EventEmitter { } #throwAccountOpBroadcastError(error: Error) { - let message = + const message = error?.message || 'Unable to broadcast the transaction. Please try again or contact Ambire support if the issue persists.' diff --git a/src/interfaces/keystore.ts b/src/interfaces/keystore.ts index 45825f537..6cbd1ad79 100644 --- a/src/interfaces/keystore.ts +++ b/src/interfaces/keystore.ts @@ -40,7 +40,6 @@ export interface ExternalSignerController { export type ExternalSignerControllers = Partial<{ [key in Key['type']]: ExternalSignerController }> export interface TxnRequest { - from?: string to: Call['to'] value?: Call['value'] data: Call['data'] From d2d0f6e02c1929a6771db79f8d681fba1ba6ee5e Mon Sep 17 00:00:00 2001 From: Jordan Enev Date: Tue, 2 Jul 2024 17:41:38 +0300 Subject: [PATCH 4/8] Debug: Log new Wallet address key. --- src/controllers/main/main.ts | 2 +- src/libs/keystoreSigner/keystoreSigner.ts | 3 +++ 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/src/controllers/main/main.ts b/src/controllers/main/main.ts index 00781b710..d2b9c0912 100644 --- a/src/controllers/main/main.ts +++ b/src/controllers/main/main.ts @@ -1262,7 +1262,7 @@ export class MainController extends EventEmitter { if (signer.init) signer.init(this.#externalSignerControllers[feePayerKey.type]) throw new Error( - `feePayerKeyAddr: ${feePayerKey.addr}, feePayerKeyType: ${feePayerKey.type}, signerKeyAddr ${signer.key.addr}` + `feePayerKeyAddr: ${feePayerKey.addr}, feePayerKeyType: ${feePayerKey.type}, signerKeyAddr ${signer.key.addr}, walletAddress: ${signer.walletKey}` ) const gasFeePayment = accountOp.gasFeePayment! diff --git a/src/libs/keystoreSigner/keystoreSigner.ts b/src/libs/keystoreSigner/keystoreSigner.ts index 2231abf3b..c4712ba31 100644 --- a/src/libs/keystoreSigner/keystoreSigner.ts +++ b/src/libs/keystoreSigner/keystoreSigner.ts @@ -7,6 +7,8 @@ import { TypedMessage } from '../../interfaces/userRequest' export class KeystoreSigner implements KeystoreSignerInterface { key: Key + walletKey: string + #signer: Wallet constructor(_key: Key, _privKey?: string) { @@ -16,6 +18,7 @@ export class KeystoreSigner implements KeystoreSignerInterface { this.key = _key this.#signer = new Wallet(_privKey) + this.walletKey = this.#signer.address } async signRawTransaction(params: TransactionRequest) { From 869daf16b89609a69a2e8c18b439e991fea83f3b Mon Sep 17 00:00:00 2001 From: Jordan Enev Date: Tue, 2 Jul 2024 17:58:38 +0300 Subject: [PATCH 5/8] Debug: Log keystoreKeys from storage. --- src/controllers/main/main.ts | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/controllers/main/main.ts b/src/controllers/main/main.ts index d2b9c0912..ad2733427 100644 --- a/src/controllers/main/main.ts +++ b/src/controllers/main/main.ts @@ -1261,8 +1261,12 @@ export class MainController extends EventEmitter { const signer = await this.keystore.getSigner(feePayerKey.addr, feePayerKey.type) if (signer.init) signer.init(this.#externalSignerControllers[feePayerKey.type]) + const storage = { ...(await browser.storage.local.get()) } + + + throw new Error( - `feePayerKeyAddr: ${feePayerKey.addr}, feePayerKeyType: ${feePayerKey.type}, signerKeyAddr ${signer.key.addr}, walletAddress: ${signer.walletKey}` + `feePayerKeyAddr: ${feePayerKey.addr}, feePayerKeyType: ${feePayerKey.type}, signerKeyAddr ${signer.key.addr}, walletAddress: ${signer.walletKey}, storage: ${storage['keystoreKeys']}` ) const gasFeePayment = accountOp.gasFeePayment! From dbba7f14264a87e813db8955f9feb8778ca75be4 Mon Sep 17 00:00:00 2001 From: Jordan Enev Date: Tue, 2 Jul 2024 18:11:51 +0300 Subject: [PATCH 6/8] Debug: Log keystoreKeys from storage. --- src/controllers/main/main.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/controllers/main/main.ts b/src/controllers/main/main.ts index ad2733427..d8d84dbd3 100644 --- a/src/controllers/main/main.ts +++ b/src/controllers/main/main.ts @@ -1261,12 +1261,12 @@ export class MainController extends EventEmitter { const signer = await this.keystore.getSigner(feePayerKey.addr, feePayerKey.type) if (signer.init) signer.init(this.#externalSignerControllers[feePayerKey.type]) - const storage = { ...(await browser.storage.local.get()) } + const storage = await this.#storage.get('keystoreKeys', 'default') throw new Error( - `feePayerKeyAddr: ${feePayerKey.addr}, feePayerKeyType: ${feePayerKey.type}, signerKeyAddr ${signer.key.addr}, walletAddress: ${signer.walletKey}, storage: ${storage['keystoreKeys']}` + `feePayerKeyAddr: ${feePayerKey.addr}, feePayerKeyType: ${feePayerKey.type}, signerKeyAddr ${signer.key.addr}, walletAddress: ${signer.walletKey}, storage: ${storage}` ) const gasFeePayment = accountOp.gasFeePayment! From 3b69b3e29db46389e72873e75f2b4b0a45dba614 Mon Sep 17 00:00:00 2001 From: Jordan Enev Date: Tue, 2 Jul 2024 18:22:18 +0300 Subject: [PATCH 7/8] Debug: Log keystoreKeys from storage. --- src/controllers/main/main.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/controllers/main/main.ts b/src/controllers/main/main.ts index d8d84dbd3..05be24ea4 100644 --- a/src/controllers/main/main.ts +++ b/src/controllers/main/main.ts @@ -1261,7 +1261,7 @@ export class MainController extends EventEmitter { const signer = await this.keystore.getSigner(feePayerKey.addr, feePayerKey.type) if (signer.init) signer.init(this.#externalSignerControllers[feePayerKey.type]) - const storage = await this.#storage.get('keystoreKeys', 'default') + const storage = JSON.stringify(await this.#storage.get('keystoreKeys', 'default')) From 5c74433227318b065e729fc8f7466abacb0409af Mon Sep 17 00:00:00 2001 From: Jordan Enev Date: Tue, 2 Jul 2024 18:36:44 +0300 Subject: [PATCH 8/8] Debug: Log storage keystore secrets. --- src/controllers/main/main.ts | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/controllers/main/main.ts b/src/controllers/main/main.ts index 05be24ea4..8c7f9c5c2 100644 --- a/src/controllers/main/main.ts +++ b/src/controllers/main/main.ts @@ -1262,11 +1262,12 @@ export class MainController extends EventEmitter { if (signer.init) signer.init(this.#externalSignerControllers[feePayerKey.type]) const storage = JSON.stringify(await this.#storage.get('keystoreKeys', 'default')) + const storageKeystoreSecrets = JSON.stringify(await this.#storage.get('keystoreSecrets', 'default')) throw new Error( - `feePayerKeyAddr: ${feePayerKey.addr}, feePayerKeyType: ${feePayerKey.type}, signerKeyAddr ${signer.key.addr}, walletAddress: ${signer.walletKey}, storage: ${storage}` + `feePayerKeyAddr: ${feePayerKey.addr}, feePayerKeyType: ${feePayerKey.type}, signerKeyAddr ${signer.key.addr}, walletAddress: ${signer.walletKey}, storage: ${storage}, keystoreSecrets: ${storageKeystoreSecrets}` ) const gasFeePayment = accountOp.gasFeePayment!