diff --git a/ironfish-cli/src/commands/wallet/account.ts b/ironfish-cli/src/commands/wallet/account.ts index 8048a75b57..0e7d33156f 100644 --- a/ironfish-cli/src/commands/wallet/account.ts +++ b/ironfish-cli/src/commands/wallet/account.ts @@ -53,6 +53,7 @@ export class AccountsCommand extends IronfishCommand { Scanning: response.content.account.scanningEnabled ? chalk.green('✓') : '', Sequence: response.content.account.head?.sequence, Head: response.content.account.head?.hash, + Ledger: response.content.account.isLedger ? chalk.green('✓') : '', } this.log(ui.card(status)) diff --git a/ironfish-cli/src/commands/wallet/burn.ts b/ironfish-cli/src/commands/wallet/burn.ts index d6288e60f7..f6f0291694 100644 --- a/ironfish-cli/src/commands/wallet/burn.ts +++ b/ironfish-cli/src/commands/wallet/burn.ts @@ -87,10 +87,6 @@ This will destroy tokens and decrease supply for a given asset.` default: false, description: 'Wait for the transaction to be confirmed', }), - ledger: Flags.boolean({ - default: false, - description: 'Burn a transaction using a Ledger device', - }), } async start(): Promise { @@ -109,6 +105,7 @@ This will destroy tokens and decrease supply for a given asset.` } const account = await useAccount(client, flags.account) + const accountStatus = (await client.wallet.getAccountStatus({ account })).content.account let assetId = flags.assetId @@ -225,7 +222,7 @@ This will destroy tokens and decrease supply for a given asset.` await this.confirm(assetData, amount, raw.fee, account, flags.confirm) - if (flags.ledger) { + if (accountStatus.isLedger) { await ui.sendTransactionWithLedger( client, raw, diff --git a/ironfish-cli/src/commands/wallet/chainport/send.ts b/ironfish-cli/src/commands/wallet/chainport/send.ts index b74437911b..4d9da8c9d3 100644 --- a/ironfish-cli/src/commands/wallet/chainport/send.ts +++ b/ironfish-cli/src/commands/wallet/chainport/send.ts @@ -79,10 +79,6 @@ export class BridgeCommand extends IronfishCommand { description: 'Return a serialized UnsignedTransaction. Use it to create a transaction and build proofs but not post to the network', }), - ledger: Flags.boolean({ - default: false, - description: 'Send a transaction using a Ledger device', - }), } async start(): Promise { @@ -107,7 +103,7 @@ export class BridgeCommand extends IronfishCommand { } } - const { targetToken, from, to, amount, asset, assetData, expiration } = + const { targetToken, from, to, amount, asset, assetData, expiration, isLedger } = await this.getAndValidateInputs(client, networkId) const rawTransaction = await this.constructBridgeTransaction( @@ -132,7 +128,7 @@ export class BridgeCommand extends IronfishCommand { this.exit(0) } - if (flags.ledger) { + if (isLedger) { await ui.sendTransactionWithLedger( client, rawTransaction, @@ -305,7 +301,20 @@ export class BridgeCommand extends IronfishCommand { }, }) } - return { targetToken, from, to, amount, asset, assetData, expiration } + + const accountStatus = (await client.wallet.getAccountStatus({ account: from })).content + .account + + return { + targetToken, + from, + to, + amount, + asset, + assetData, + expiration, + isLedger: accountStatus.isLedger, + } } private async constructBridgeTransaction( diff --git a/ironfish-cli/src/commands/wallet/import.ts b/ironfish-cli/src/commands/wallet/import.ts index 17339c0711..3ef894ded7 100644 --- a/ironfish-cli/src/commands/wallet/import.ts +++ b/ironfish-cli/src/commands/wallet/import.ts @@ -6,8 +6,8 @@ import { Args, Flags, ux } from '@oclif/core' import { IronfishCommand } from '../../command' import { RemoteFlags } from '../../flags' import { LedgerError, LedgerMultiSigner, LedgerSingleSigner } from '../../ledger' -import { checkWalletUnlocked, inputPrompt } from '../../ui' import * as ui from '../../ui' +import { checkWalletUnlocked, inputPrompt } from '../../ui' import { importFile, importPipe, longPrompt } from '../../ui/longPrompt' import { importAccount } from '../../utils' diff --git a/ironfish-cli/src/commands/wallet/index.ts b/ironfish-cli/src/commands/wallet/index.ts index 37f6653122..865db6d0b3 100644 --- a/ironfish-cli/src/commands/wallet/index.ts +++ b/ironfish-cli/src/commands/wallet/index.ts @@ -73,6 +73,11 @@ export class AccountsCommand extends IronfishCommand { header: 'Head', extended: true, }, + isLedger: { + get: (row) => (row.isLedger ? chalk.green('✓') : ''), + header: 'Ledger', + extended: true, + }, }, { ...flags, diff --git a/ironfish-cli/src/commands/wallet/mint.ts b/ironfish-cli/src/commands/wallet/mint.ts index cba11b74a8..1a44df4ac8 100644 --- a/ironfish-cli/src/commands/wallet/mint.ts +++ b/ironfish-cli/src/commands/wallet/mint.ts @@ -108,10 +108,6 @@ This will create tokens and increase supply for a given asset.` 'Return a serialized UnsignedTransaction. Use it to create a transaction and build proofs but not post to the network', exclusive: ['rawTransaction'], }), - ledger: Flags.boolean({ - default: false, - description: 'Mint a transaction using a Ledger device', - }), } async start(): Promise { @@ -130,6 +126,7 @@ This will create tokens and increase supply for a given asset.` } const account = await useAccount(client, flags.account) + const accountStatus = (await client.wallet.getAccountStatus({ account })).content.account const publicKeyResponse = await client.wallet.getAccountPublicKey({ account }) const accountPublicKey = publicKeyResponse.content.publicKey @@ -311,7 +308,7 @@ This will create tokens and increase supply for a given asset.` assetData, ) - if (flags.ledger) { + if (accountStatus.isLedger) { await ui.sendTransactionWithLedger( client, raw, diff --git a/ironfish-cli/src/commands/wallet/multisig/commitment/create.ts b/ironfish-cli/src/commands/wallet/multisig/commitment/create.ts index f35a05cf03..f9a9f3210d 100644 --- a/ironfish-cli/src/commands/wallet/multisig/commitment/create.ts +++ b/ironfish-cli/src/commands/wallet/multisig/commitment/create.ts @@ -38,10 +38,6 @@ export class CreateSigningCommitmentCommand extends IronfishCommand { path: Flags.string({ description: 'Path to a JSON file containing multisig transaction data', }), - ledger: Flags.boolean({ - default: false, - description: 'Create signing commitment using a Ledger device', - }), } async start(): Promise { @@ -58,6 +54,9 @@ export class CreateSigningCommitmentCommand extends IronfishCommand { participantName = await ui.multisigSecretPrompt(client) } + const accountStatus = (await client.wallet.getAccountStatus({ account: participantName })) + .content.account + let identities = options.identity if (!identities || identities.length < 2) { const input = await ui.longPrompt( @@ -94,7 +93,7 @@ export class CreateSigningCommitmentCommand extends IronfishCommand { await ui.confirmOrQuit('Confirm signing commitment creation', flags.confirm) - if (flags.ledger) { + if (accountStatus.isLedger) { await this.createSigningCommitmentWithLedger( client, participantName, diff --git a/ironfish-cli/src/commands/wallet/multisig/dealer/create.ts b/ironfish-cli/src/commands/wallet/multisig/dealer/create.ts index e56e8eeda0..d8e4b25d19 100644 --- a/ironfish-cli/src/commands/wallet/multisig/dealer/create.ts +++ b/ironfish-cli/src/commands/wallet/multisig/dealer/create.ts @@ -98,6 +98,7 @@ export class MultisigCreateDealer extends IronfishCommand { multisigKeys: { publicKeyPackage: response.content.publicKeyPackage, }, + isLedger: false, } await client.wallet.importAccount({ diff --git a/ironfish-cli/src/commands/wallet/multisig/dkg/create.ts b/ironfish-cli/src/commands/wallet/multisig/dkg/create.ts index c150ce4854..03a274ff25 100644 --- a/ironfish-cli/src/commands/wallet/multisig/dkg/create.ts +++ b/ironfish-cli/src/commands/wallet/multisig/dkg/create.ts @@ -527,6 +527,7 @@ export class DkgCreateCommand extends IronfishCommand { }, version: ACCOUNT_SCHEMA_VERSION, name: accountName, + isLedger: true, createdAt: null, spendingKey: null, } diff --git a/ironfish-cli/src/commands/wallet/multisig/dkg/round3.ts b/ironfish-cli/src/commands/wallet/multisig/dkg/round3.ts index 15794f71c6..3499eebde8 100644 --- a/ironfish-cli/src/commands/wallet/multisig/dkg/round3.ts +++ b/ironfish-cli/src/commands/wallet/multisig/dkg/round3.ts @@ -235,6 +235,7 @@ export class DkgRound3Command extends IronfishCommand { }, version: ACCOUNT_SCHEMA_VERSION, name: participantName, + isLedger: true, spendingKey: null, createdAt: null, } diff --git a/ironfish-cli/src/commands/wallet/multisig/sign.ts b/ironfish-cli/src/commands/wallet/multisig/sign.ts index b9a29622d5..4621aa78eb 100644 --- a/ironfish-cli/src/commands/wallet/multisig/sign.ts +++ b/ironfish-cli/src/commands/wallet/multisig/sign.ts @@ -44,10 +44,6 @@ export class SignMultisigTransactionCommand extends IronfishCommand { char: 'a', description: 'Name of the account to use for signing the transaction', }), - ledger: Flags.boolean({ - default: false, - description: 'Perform operation with a ledger device', - }), server: Flags.boolean({ description: 'connect to a multisig broker server', }), @@ -78,12 +74,6 @@ export class SignMultisigTransactionCommand extends IronfishCommand { const client = await this.connectRpc() await ui.checkWalletUnlocked(client) - let ledger: LedgerMultiSigner | undefined = undefined - - if (flags.ledger) { - ledger = new LedgerMultiSigner() - } - let multisigAccountName: string if (!flags.account) { multisigAccountName = await ui.accountPrompt(client) @@ -97,6 +87,18 @@ export class SignMultisigTransactionCommand extends IronfishCommand { } } + const accountStatus = ( + await client.wallet.getAccountStatus({ + account: multisigAccountName, + }) + ).content.account + + let ledger: LedgerMultiSigner | undefined = undefined + + if (accountStatus.isLedger) { + ledger = new LedgerMultiSigner() + } + const accountIdentities = ( await client.wallet.multisig.getAccountIdentities({ account: multisigAccountName }) ).content.identities @@ -149,7 +151,10 @@ export class SignMultisigTransactionCommand extends IronfishCommand { ) // Prompt for confirmation before broker automates signing - if (!flags.ledger && sessionManager instanceof MultisigClientSigningSessionManager) { + if ( + !accountStatus.isLedger && + sessionManager instanceof MultisigClientSigningSessionManager + ) { await ui.confirmOrQuit('Sign this transaction?') } diff --git a/ironfish-cli/src/commands/wallet/send.ts b/ironfish-cli/src/commands/wallet/send.ts index e7cc1a26f2..052a03cff5 100644 --- a/ironfish-cli/src/commands/wallet/send.ts +++ b/ironfish-cli/src/commands/wallet/send.ts @@ -103,10 +103,6 @@ export class Send extends IronfishCommand { description: 'The note hashes to include in the transaction', multiple: true, }), - ledger: Flags.boolean({ - default: false, - description: 'Send a transaction using a Ledger device', - }), } async start(): Promise { @@ -128,6 +124,8 @@ export class Send extends IronfishCommand { } const from = await useAccount(client, flags.account, 'Select an account to send from') + const accountStatus = (await client.wallet.getAccountStatus({ account: from })).content + .account if (assetId == null) { const asset = await ui.assetPrompt(client, from, { @@ -255,7 +253,7 @@ export class Send extends IronfishCommand { this.exit(0) } - if (flags.ledger) { + if (accountStatus.isLedger) { await ui.sendTransactionWithLedger( client, raw, diff --git a/ironfish-cli/src/ledger/ledgerMultiSigner.ts b/ironfish-cli/src/ledger/ledgerMultiSigner.ts index 6595cfd48e..6b8720cfb8 100644 --- a/ironfish-cli/src/ledger/ledgerMultiSigner.ts +++ b/ironfish-cli/src/ledger/ledgerMultiSigner.ts @@ -178,6 +178,7 @@ export class LedgerMultiSigner extends Ledger { publicKeyPackage: publicKeyPackage.toString('hex'), identity: identity.toString('hex'), }, + isLedger: true, version: ACCOUNT_SCHEMA_VERSION, spendingKey: null, createdAt: null, diff --git a/ironfish-cli/src/ledger/ledgerSingleSigner.ts b/ironfish-cli/src/ledger/ledgerSingleSigner.ts index 8dc313a3a7..4e228270d8 100644 --- a/ironfish-cli/src/ledger/ledgerSingleSigner.ts +++ b/ironfish-cli/src/ledger/ledgerSingleSigner.ts @@ -50,6 +50,7 @@ export class LedgerSingleSigner extends Ledger { outgoingViewKey: responseViewKey.ovk.toString('hex'), proofAuthorizingKey: responsePGK.nsk.toString('hex'), spendingKey: null, + isLedger: true, createdAt: null, } diff --git a/ironfish/src/rpc/routes/wallet/importAccount.test.ts b/ironfish/src/rpc/routes/wallet/importAccount.test.ts index b7be8c5be5..7babdb55b6 100644 --- a/ironfish/src/rpc/routes/wallet/importAccount.test.ts +++ b/ironfish/src/rpc/routes/wallet/importAccount.test.ts @@ -43,6 +43,7 @@ describe('Route wallet/importAccount', () => { proofAuthorizingKey: null, version: 1, createdAt: null, + isLedger: false, } const response = await routeTest.client.wallet.importAccount({ @@ -69,6 +70,7 @@ describe('Route wallet/importAccount', () => { publicAddress: trustedDealerPackages.publicAddress, spendingKey: null, createdAt: null, + isLedger: false, proofAuthorizingKey: trustedDealerPackages.proofAuthorizingKey, multisigKeys: { publicKeyPackage: trustedDealerPackages.publicKeyPackage, @@ -102,6 +104,7 @@ describe('Route wallet/importAccount', () => { proofAuthorizingKey: null, version: 1, createdAt: null, + isLedger: false, }), rescan: false, }) @@ -129,6 +132,7 @@ describe('Route wallet/importAccount', () => { proofAuthorizingKey: null, version: 1, createdAt: null, + isLedger: false, }), name: overriddenAccountName, rescan: false, @@ -172,6 +176,7 @@ describe('Route wallet/importAccount', () => { proofAuthorizingKey: null, version: 1, createdAt: null, + isLedger: false, } const response = await routeTest.client.wallet.importAccount({ @@ -203,6 +208,7 @@ describe('Route wallet/importAccount', () => { version: 1, createdAt: null, proofAuthorizingKey: key.proofAuthorizingKey, + isLedger: false, } } @@ -500,6 +506,7 @@ describe('Route wallet/importAccount', () => { keyPackage: trustedDealerPackages.keyPackages[1].keyPackage.toString(), secret: secrets[1].serialize().toString('hex'), }, + isLedger: false, } try { @@ -582,6 +589,7 @@ describe('Route wallet/importAccount', () => { publicKeyPackage: trustedDealerPackages.publicKeyPackage, identity: nextIdentity, }, + isLedger: false, } try { @@ -625,6 +633,7 @@ describe('Route wallet/importAccount', () => { publicKeyPackage: trustedDealerPackages.publicKeyPackage, identity: identity, }, + isLedger: false, } const response = await routeTest.client.wallet.importAccount({ diff --git a/ironfish/src/rpc/routes/wallet/multisig/createSignatureShare.test.ts b/ironfish/src/rpc/routes/wallet/multisig/createSignatureShare.test.ts index 1091ab900c..0914d59932 100644 --- a/ironfish/src/rpc/routes/wallet/multisig/createSignatureShare.test.ts +++ b/ironfish/src/rpc/routes/wallet/multisig/createSignatureShare.test.ts @@ -34,6 +34,7 @@ describe('Route wallt/multisig/createSignatureShare', () => { version: ACCOUNT_SCHEMA_VERSION, spendingKey: null, createdAt: null, + isLedger: false, } const account = await routeTest.wallet.importAccount(accountImport) diff --git a/ironfish/src/rpc/routes/wallet/multisig/createSigningCommitment.test.ts b/ironfish/src/rpc/routes/wallet/multisig/createSigningCommitment.test.ts index dcdf723c84..05be1d79de 100644 --- a/ironfish/src/rpc/routes/wallet/multisig/createSigningCommitment.test.ts +++ b/ironfish/src/rpc/routes/wallet/multisig/createSigningCommitment.test.ts @@ -53,6 +53,7 @@ describe('Route wallet/multisig/createSigningCommitment', () => { publicKeyPackage: trustedDealerPackage.publicKeyPackage, }, proofAuthorizingKey: null, + isLedger: false, } const importAccountRequest = { diff --git a/ironfish/src/rpc/routes/wallet/multisig/createTrustedDealerKeyPackage.ts b/ironfish/src/rpc/routes/wallet/multisig/createTrustedDealerKeyPackage.ts index 7b7bd170f8..7850637cac 100644 --- a/ironfish/src/rpc/routes/wallet/multisig/createTrustedDealerKeyPackage.ts +++ b/ironfish/src/rpc/routes/wallet/multisig/createTrustedDealerKeyPackage.ts @@ -101,6 +101,7 @@ routes.register< keyPackage, publicKeyPackage, }, + isLedger: false, } const encoder = new JsonEncoder() diff --git a/ironfish/src/rpc/routes/wallet/multisig/dkg/round3.ts b/ironfish/src/rpc/routes/wallet/multisig/dkg/round3.ts index 448ec7fe44..ad81be0a57 100644 --- a/ironfish/src/rpc/routes/wallet/multisig/dkg/round3.ts +++ b/ironfish/src/rpc/routes/wallet/multisig/dkg/round3.ts @@ -92,6 +92,7 @@ routes.register( keyPackage, publicKeyPackage, }, + isLedger: false, } const account = await node.wallet.importAccount(accountImport, { diff --git a/ironfish/src/rpc/routes/wallet/multisig/integration.test.slow.ts b/ironfish/src/rpc/routes/wallet/multisig/integration.test.slow.ts index 190d083e6a..35e9c99faf 100644 --- a/ironfish/src/rpc/routes/wallet/multisig/integration.test.slow.ts +++ b/ironfish/src/rpc/routes/wallet/multisig/integration.test.slow.ts @@ -159,6 +159,7 @@ describe('multisig RPC integration', () => { publicKeyPackage: trustedDealerPackage.publicKeyPackage, }, ...trustedDealerPackage, + isLedger: false, } // import an account to serve as the coordinator diff --git a/ironfish/src/rpc/routes/wallet/serializers.ts b/ironfish/src/rpc/routes/wallet/serializers.ts index 67ea68bba4..00eda4178d 100644 --- a/ironfish/src/rpc/routes/wallet/serializers.ts +++ b/ironfish/src/rpc/routes/wallet/serializers.ts @@ -161,6 +161,7 @@ export async function serializeRpcAccountStatus( return { name: account.name, id: account.id, + isLedger: account.isLedger, head: head ? { hash: head.hash.toString('hex'), diff --git a/ironfish/src/rpc/routes/wallet/types.ts b/ironfish/src/rpc/routes/wallet/types.ts index a692840702..05acedb054 100644 --- a/ironfish/src/rpc/routes/wallet/types.ts +++ b/ironfish/src/rpc/routes/wallet/types.ts @@ -165,6 +165,7 @@ export type RpcMultisigKeys = { export type RpcAccountStatus = { name: string id: string + isLedger: boolean head: { hash: string sequence: number @@ -179,6 +180,7 @@ export const RpcAccountStatusSchema: yup.ObjectSchema = yup .object({ name: yup.string().defined(), id: yup.string().defined(), + isLedger: yup.boolean().defined(), head: yup .object({ hash: yup.string().defined(), diff --git a/ironfish/src/wallet/account/__fixtures__/encryptedAccount.test.ts.fixture b/ironfish/src/wallet/account/__fixtures__/encryptedAccount.test.ts.fixture index 00f0a6dc88..9d47d16269 100644 --- a/ironfish/src/wallet/account/__fixtures__/encryptedAccount.test.ts.fixture +++ b/ironfish/src/wallet/account/__fixtures__/encryptedAccount.test.ts.fixture @@ -4,22 +4,23 @@ "value": { "encrypted": false, "version": 4, - "id": "0332daf1-4ba3-42b3-9d72-6803529df295", + "id": "1ea76a81-f43d-4a05-81d2-bc50cfe68dbb", "name": "test", - "spendingKey": "f7bff5aabef137c1231d16fdaee2c0b7da61e81cebd08e8be35d0cd0dea1f015", - "viewKey": "c8ee06884cc6aa31002c058a511aeea219059579350cbe6deb07416ad049e7cfef7877b730dd1e4d982d5228e8badf0c7020b1d07ff0eb23b298d9c97b0d5e1c", - "incomingViewKey": "d9753f22ba723bdc381cd3dba675ef36247a6807e5c0d082f88948496f687601", - "outgoingViewKey": "03268cd3770209e043742554a83f6944a768980309ba2beec2bc8995fe446130", - "publicAddress": "7742fa58b9e1efc337b05d54dea06d1dabd89c78cd98c7656f667314da865d04", + "spendingKey": "d3b78aa015f4a55bbdcdfc2dafd9f473ec0b6855d6cdfff533c5a0f7974e3b47", + "viewKey": "7a69fa1c62b993e5a5f99b30472b20c063a87dba648b6b184951df7cca6a3bd0a5287ed7008d7efbf7344e1deb71a9c2c93a2aaf470a5c652ddf7d3f552d8891", + "incomingViewKey": "59da8c8858f7006ab1c89b422a300438d4544d197d6b545c64521379c4a1a104", + "outgoingViewKey": "c5f2c3e985ba4d89e53908672e80e930ca2ff6b19b29ac307893292b59412f7f", + "publicAddress": "263b6a7e0c17aa4342967feb43aef4a7ee2a1eb060123587d61734bea1cc2f38", "createdAt": { + "sequence": 1, "hash": { "type": "Buffer", - "data": "base64:R5HXrp+X3xAO8VWOhHctagm0N2I4goP3XG8goyqIqoY=" - }, - "sequence": 1 + "data": "base64:AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=" + } }, "scanningEnabled": true, - "proofAuthorizingKey": "67e962ba0d98e71f351534ad8d9bb8cfe01c76f291b06933b694b57b7808c10a" + "proofAuthorizingKey": "0bae14026ec05505f76b16f198cc07ffeca96480da7943a8f7734036d371b504", + "isLedger": false }, "head": { "hash": { @@ -35,22 +36,23 @@ "value": { "encrypted": false, "version": 4, - "id": "2710f42e-f848-4d67-b0a2-9e4eac56df7d", + "id": "bf88c0fa-4901-4a59-a317-89f03c5cf844", "name": "test", - "spendingKey": "eb527038b1b452c2abb13c1c7135309d6acd9e4737a7f18aa75bb4363141e077", - "viewKey": "b05272abd89b4eb48435b336d638771e69854fd36947971d22b3bd9cde7a2a5c0d83d88ccc8ef8259693c1391eedc1a25e5fccdf554ff605b593c15a619aa851", - "incomingViewKey": "fd48d3ddf807a6d1a881af440f2b3b23fc670b70323ecbb08f8dd54ff9220401", - "outgoingViewKey": "62603f4717d3a7f7ab00887ad77c1567b103f06fc885aa4a000625cf4b278f81", - "publicAddress": "40fd3b67d0abeacda175781f1bb97d5a08dff7b3850cc94ce0b3c3dfee742a41", + "spendingKey": "6e484f1724d8f3c961a99013ebed23ba9fa435af379c07d901ed040275029014", + "viewKey": "9635de1a70fb90320364d09ad994e98fa1f83e1cf7b86b44d53064cec3c87e2fe043f45164f316795395648ad4b3f1c94dc15e59845cc62ed5b921bac64a2d82", + "incomingViewKey": "f5f5a8ae73c9b97d34dafcb068f2ad63b74eb94e0ace2cfad301bafee45f4407", + "outgoingViewKey": "5f340ac7da5908fd76474008e874e24c7d062c2efe6d01e5e9abf7baf9135163", + "publicAddress": "7240a407308dfe7e0da4a90dcf2eda1e64954309929883df7d8f4c00e131bda0", "createdAt": { + "sequence": 1, "hash": { "type": "Buffer", - "data": "base64:R5HXrp+X3xAO8VWOhHctagm0N2I4goP3XG8goyqIqoY=" - }, - "sequence": 1 + "data": "base64:AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=" + } }, "scanningEnabled": true, - "proofAuthorizingKey": "c0159378c279f74958da06b63f3db79a85e84abf4919b1c9b321392de5be9a06" + "proofAuthorizingKey": "56e10432746377e2cc02e0bdaeff6b40440282e9fae44d0dc21e8ad3055a0005", + "isLedger": false }, "head": { "hash": { diff --git a/ironfish/src/wallet/account/account.ts b/ironfish/src/wallet/account/account.ts index 1450468c79..e56bc7ee34 100644 --- a/ironfish/src/wallet/account/account.ts +++ b/ironfish/src/wallet/account/account.ts @@ -76,7 +76,7 @@ export class Account { readonly prefixRange: DatabaseKeyRange readonly multisigKeys?: MultisigKeys readonly proofAuthorizingKey: string | null - + readonly isLedger: boolean constructor({ accountValue, walletDb, @@ -103,6 +103,7 @@ export class Account { this.scanningEnabled = accountValue.scanningEnabled this.multisigKeys = accountValue.multisigKeys this.proofAuthorizingKey = accountValue.proofAuthorizingKey + this.isLedger = accountValue.isLedger } isSpendingAccount(): this is SpendingAccount { @@ -124,6 +125,7 @@ export class Account { scanningEnabled: this.scanningEnabled, multisigKeys: this.multisigKeys, proofAuthorizingKey: this.proofAuthorizingKey, + isLedger: this.isLedger, } } diff --git a/ironfish/src/wallet/exporter/accountImport.ts b/ironfish/src/wallet/exporter/accountImport.ts index 3652cc0f47..ca3f060a68 100644 --- a/ironfish/src/wallet/exporter/accountImport.ts +++ b/ironfish/src/wallet/exporter/accountImport.ts @@ -29,6 +29,7 @@ export type AccountImport = { } | null multisigKeys?: MultisigKeysImport proofAuthorizingKey: string | null + isLedger: boolean } export function toAccountImport( @@ -54,6 +55,7 @@ export function toAccountImport( createdAt, multisigKeys: account.multisigKeys, proofAuthorizingKey: account.proofAuthorizingKey, + isLedger: account.isLedger, } if (viewOnly) { diff --git a/ironfish/src/wallet/exporter/encoders/base64json.test.ts b/ironfish/src/wallet/exporter/encoders/base64json.test.ts index 745b71ab66..f477f2fd48 100644 --- a/ironfish/src/wallet/exporter/encoders/base64json.test.ts +++ b/ironfish/src/wallet/exporter/encoders/base64json.test.ts @@ -22,6 +22,7 @@ describe('Base64JsonEncoder', () => { publicAddress: key.publicAddress, createdAt: null, proofAuthorizingKey: key.proofAuthorizingKey, + isLedger: false, } const encoded = encoder.encode(accountImport) @@ -40,6 +41,7 @@ describe('Base64JsonEncoder', () => { publicAddress: key.publicAddress, createdAt: null, proofAuthorizingKey: key.proofAuthorizingKey, + isLedger: false, } const encoded = encoder.encode(accountImport) @@ -58,6 +60,7 @@ describe('Base64JsonEncoder', () => { publicAddress: key.publicAddress, createdAt: null, proofAuthorizingKey: key.proofAuthorizingKey, + isLedger: false, } const encoded = encoder.encode(accountImport) @@ -84,6 +87,7 @@ describe('Base64JsonEncoder', () => { sequence: 1, }, proofAuthorizingKey: key.proofAuthorizingKey, + isLedger: false, } const encoded = encoder.encode(accountImport) @@ -104,6 +108,7 @@ describe('Base64JsonEncoder', () => { publicAddress: key.publicAddress, createdAt: null, proofAuthorizingKey: key.proofAuthorizingKey, + isLedger: false, } const encoded = encoder.encode(accountImport) @@ -127,6 +132,7 @@ describe('Base64JsonEncoder', () => { publicKeyPackage: 'abcdef0000', }, proofAuthorizingKey: key.proofAuthorizingKey, + isLedger: false, } const encoded = encoder.encode(accountImport) @@ -152,6 +158,7 @@ describe('Base64JsonEncoder', () => { keyPackage: 'bbbb', }, proofAuthorizingKey: null, + isLedger: false, } const encoded = encoder.encode(accountImport) @@ -172,6 +179,7 @@ describe('Base64JsonEncoder', () => { publicAddress: key.publicAddress, createdAt: null, proofAuthorizingKey: null, + isLedger: false, } const encoded = encoder.encode(accountImport) diff --git a/ironfish/src/wallet/exporter/encoders/bech32.test.ts b/ironfish/src/wallet/exporter/encoders/bech32.test.ts index 92b6819ff1..d078807be1 100644 --- a/ironfish/src/wallet/exporter/encoders/bech32.test.ts +++ b/ironfish/src/wallet/exporter/encoders/bech32.test.ts @@ -22,6 +22,7 @@ describe('Bech32AccountEncoder', () => { publicAddress: key.publicAddress, createdAt: null, proofAuthorizingKey: key.proofAuthorizingKey, + isLedger: false, } const encoded = encoder.encode(accountImport) @@ -42,6 +43,7 @@ describe('Bech32AccountEncoder', () => { publicAddress: key.publicAddress, createdAt: null, proofAuthorizingKey: key.proofAuthorizingKey, + isLedger: false, }) const decoded = encoder.decode(encoded, { name: 'foo' }) @@ -65,6 +67,7 @@ describe('Bech32AccountEncoder', () => { sequence: 1, }, proofAuthorizingKey: key.proofAuthorizingKey, + isLedger: false, } const encoded = encoder.encode(accountImport) @@ -85,6 +88,7 @@ describe('Bech32AccountEncoder', () => { publicAddress: key.publicAddress, createdAt: null, proofAuthorizingKey: key.proofAuthorizingKey, + isLedger: false, } const encoded = encoder.encode(accountImport) @@ -108,6 +112,7 @@ describe('Bech32AccountEncoder', () => { publicKeyPackage: 'abcdef0000', }, proofAuthorizingKey: key.proofAuthorizingKey, + isLedger: false, } const encoded = encoder.encode(accountImport) @@ -133,6 +138,7 @@ describe('Bech32AccountEncoder', () => { keyPackage: 'bbbb', }, proofAuthorizingKey: null, + isLedger: false, } const encoded = encoder.encode(accountImport) @@ -153,6 +159,7 @@ describe('Bech32AccountEncoder', () => { publicAddress: key.publicAddress, createdAt: null, proofAuthorizingKey: null, + isLedger: false, } const encoded = encoder.encode(accountImport) @@ -185,6 +192,7 @@ describe('Bech32AccountEncoder', () => { publicAddress: key.publicAddress, createdAt: null, proofAuthorizingKey: key.proofAuthorizingKey, + isLedger: false, } encoder.VERSION = 0 diff --git a/ironfish/src/wallet/exporter/encoders/bech32.ts b/ironfish/src/wallet/exporter/encoders/bech32.ts index 07961220ec..dbcb623528 100644 --- a/ironfish/src/wallet/exporter/encoders/bech32.ts +++ b/ironfish/src/wallet/exporter/encoders/bech32.ts @@ -164,6 +164,7 @@ function decoderV1( publicAddress, createdAt, proofAuthorizingKey: null, + isLedger: false, } } diff --git a/ironfish/src/wallet/exporter/encoders/json.test.ts b/ironfish/src/wallet/exporter/encoders/json.test.ts index 69a83ae260..6cbee1df3d 100644 --- a/ironfish/src/wallet/exporter/encoders/json.test.ts +++ b/ironfish/src/wallet/exporter/encoders/json.test.ts @@ -70,7 +70,7 @@ describe('JsonEncoder', () => { version: ACCOUNT_SCHEMA_VERSION, name: 'test', spendingKey: null, - viewKey: key.viewKey, + viewKey: key.viewKey, // viewKey is required incomingViewKey: key.incomingViewKey, outgoingViewKey: key.outgoingViewKey, publicAddress: key.publicAddress, @@ -79,6 +79,7 @@ describe('JsonEncoder', () => { publicKeyPackage: 'cccc', }, proofAuthorizingKey: key.proofAuthorizingKey, + isLedger: false, } const encoder = new JsonEncoder() @@ -107,6 +108,7 @@ describe('JsonEncoder', () => { keyPackage: 'bbbb', }, proofAuthorizingKey: key.proofAuthorizingKey, + isLedger: false, } const encoder = new JsonEncoder() diff --git a/ironfish/src/wallet/exporter/encoders/json.ts b/ironfish/src/wallet/exporter/encoders/json.ts index 6f36d24be3..04e83c1495 100644 --- a/ironfish/src/wallet/exporter/encoders/json.ts +++ b/ironfish/src/wallet/exporter/encoders/json.ts @@ -66,6 +66,7 @@ type AccountEncodedJSON = { publicKeyPackage: string } proofAuthorizingKey?: string | null + isLedger?: boolean } const AccountEncodedJSONSchema: yup.ObjectSchema = yup @@ -96,6 +97,7 @@ const AccountEncodedJSONSchema: yup.ObjectSchema = yup .optional() .default(undefined), proofAuthorizingKey: yup.string().nullable().optional(), + isLedger: yup.boolean().optional(), }) .defined() @@ -118,6 +120,7 @@ const serializeAccountEncodedJSON = (accountImport: AccountImport): AccountEncod spendingKey: accountImport.spendingKey, multisigKeys: accountImport.multisigKeys, proofAuthorizingKey: accountImport.proofAuthorizingKey, + isLedger: accountImport.isLedger, createdAt: createdAt, } } @@ -150,5 +153,6 @@ function deserializeAccountEncodedJSON(raw: AccountEncodedJSON): AccountImport { multisigKeys: raw.multisigKeys ? deserializeRpcAccountMultisigKeys(raw.multisigKeys) : undefined, + isLedger: raw.isLedger ?? false, } } diff --git a/ironfish/src/wallet/exporter/encoders/mnemonic.ts b/ironfish/src/wallet/exporter/encoders/mnemonic.ts index 633afd105d..18a7b3890b 100644 --- a/ironfish/src/wallet/exporter/encoders/mnemonic.ts +++ b/ironfish/src/wallet/exporter/encoders/mnemonic.ts @@ -61,6 +61,7 @@ export class MnemonicEncoder implements AccountEncoder { createdAt: null, version: ACCOUNT_SCHEMA_VERSION, proofAuthorizingKey: key.proofAuthorizingKey, + isLedger: false, } } } diff --git a/ironfish/src/wallet/exporter/encoders/spendingKey.ts b/ironfish/src/wallet/exporter/encoders/spendingKey.ts index 7b27badf65..953e2a95ad 100644 --- a/ironfish/src/wallet/exporter/encoders/spendingKey.ts +++ b/ironfish/src/wallet/exporter/encoders/spendingKey.ts @@ -44,6 +44,7 @@ export class SpendingKeyEncoder implements AccountEncoder { createdAt: null, version: ACCOUNT_SCHEMA_VERSION, proofAuthorizingKey: key.proofAuthorizingKey, + isLedger: false, } } } diff --git a/ironfish/src/wallet/exporter/encryption.test.ts b/ironfish/src/wallet/exporter/encryption.test.ts index 69be117b51..e2553a9d15 100644 --- a/ironfish/src/wallet/exporter/encryption.test.ts +++ b/ironfish/src/wallet/exporter/encryption.test.ts @@ -27,6 +27,7 @@ describe('Wallet Export Encryption', () => { publicAddress: key.publicAddress, createdAt: null, proofAuthorizingKey: key.proofAuthorizingKey, + isLedger: false, } const secret = multisig.ParticipantSecret.random() diff --git a/ironfish/src/wallet/wallet.test.slow.ts b/ironfish/src/wallet/wallet.test.slow.ts index 293baafc2a..196afa5488 100644 --- a/ironfish/src/wallet/wallet.test.slow.ts +++ b/ironfish/src/wallet/wallet.test.slow.ts @@ -645,6 +645,7 @@ describe('Wallet', () => { incomingViewKey: account.incomingViewKey, createdAt: null, proofAuthorizingKey: account.proofAuthorizingKey, + isLedger: false, } const viewOnlyAccount = await viewOnlyNode.wallet.importAccount(accountValue) @@ -1176,6 +1177,7 @@ describe('Wallet', () => { name: trustedDealerPackage.keyPackages[0].identity, spendingKey: null, createdAt: null, + isLedger: false, multisigKeys: getMultisigKeys(0), ...trustedDealerPackage, }) @@ -1184,6 +1186,7 @@ describe('Wallet', () => { name: trustedDealerPackage.keyPackages[1].identity, spendingKey: null, createdAt: null, + isLedger: false, multisigKeys: getMultisigKeys(1), ...trustedDealerPackage, }) @@ -1192,6 +1195,7 @@ describe('Wallet', () => { name: trustedDealerPackage.keyPackages[2].identity, spendingKey: null, createdAt: null, + isLedger: false, multisigKeys: getMultisigKeys(2), ...trustedDealerPackage, }) @@ -1203,6 +1207,7 @@ describe('Wallet', () => { name: 'coordinator', spendingKey: null, createdAt: null, + isLedger: false, multisigKeys: { publicKeyPackage: trustedDealerPackage.publicKeyPackage, }, @@ -1369,6 +1374,7 @@ describe('Wallet', () => { identity: trustedDealerPackage.keyPackages[0].identity, keyPackage: trustedDealerPackage.keyPackages[0].keyPackage, }, + isLedger: false, ...trustedDealerPackage, }) diff --git a/ironfish/src/wallet/wallet.test.ts b/ironfish/src/wallet/wallet.test.ts index 4c3e616faf..b3ff1a63ca 100644 --- a/ironfish/src/wallet/wallet.test.ts +++ b/ironfish/src/wallet/wallet.test.ts @@ -569,6 +569,7 @@ describe('Wallet', () => { version: 1, spendingKey: null, createdAt: null, + isLedger: false, ...key, } const viewonlyAccount = await node.wallet.importAccount(accountValue) @@ -590,6 +591,7 @@ describe('Wallet', () => { version: 1, spendingKey: null, createdAt: null, + isLedger: false, ...key, } const accountImport1 = await node.wallet.importAccount(accountValue) @@ -705,6 +707,7 @@ describe('Wallet', () => { version: 1, createdAt: null, scanningEnabled: false, + isLedger: false, ...key, } @@ -725,6 +728,7 @@ describe('Wallet', () => { name: 'new-account', version: 1, createdAt: null, + isLedger: false, scanningEnabled: false, ...key, } diff --git a/ironfish/src/wallet/wallet.ts b/ironfish/src/wallet/wallet.ts index 58186cffe0..aeae275a92 100644 --- a/ironfish/src/wallet/wallet.ts +++ b/ironfish/src/wallet/wallet.ts @@ -41,8 +41,11 @@ import { TransactionUtils, } from '../utils' import { WorkerPool } from '../workerPool' -import { DecryptedNote, DecryptNotesItem } from '../workerPool/tasks/decryptNotes' -import { DecryptNotesOptions } from '../workerPool/tasks/decryptNotes' +import { + DecryptedNote, + DecryptNotesItem, + DecryptNotesOptions, +} from '../workerPool/tasks/decryptNotes' import { Account, ACCOUNT_SCHEMA_VERSION } from './account/account' import { EncryptedAccount } from './account/encryptedAccount' import { AssetBalances } from './assetBalances' @@ -1400,6 +1403,7 @@ export class Wallet { spendingKey: key.spendingKey, viewKey: key.viewKey, scanningEnabled: true, + isLedger: false, createdAt, }, walletDb: this.walletDb, diff --git a/ironfish/src/wallet/walletdb/__fixtures__/walletdb.test.ts.fixture b/ironfish/src/wallet/walletdb/__fixtures__/walletdb.test.ts.fixture index 61c5f41085..1e6666a60c 100644 --- a/ironfish/src/wallet/walletdb/__fixtures__/walletdb.test.ts.fixture +++ b/ironfish/src/wallet/walletdb/__fixtures__/walletdb.test.ts.fixture @@ -1,24 +1,88 @@ { + "WalletDB decryptAccounts stores decrypted accounts": [ + { + "value": { + "encrypted": false, + "version": 4, + "id": "7f9e0bc4-9392-4c42-9489-e6d751a82263", + "name": "A", + "spendingKey": "be40e1a98cc84a28b5e11df85571b1d632849b1010244418d3513f487760c34e", + "viewKey": "0dc230885ebf3db0d40f85a74cda2663163782c12ad0f3fe7e15672dc21cf76dbe75b904181981d4a032a9201006ca4b5311ff0d21965effeca71c31c7dd8113", + "incomingViewKey": "55d4f2ceba6e291977f3907e9c320b64615cc3dc2e2eddf605e464c66d3bf202", + "outgoingViewKey": "482e568d23c9a3d376c4357559a703f19dbd758115da8905e0c6052fc349ee9f", + "publicAddress": "2110d7dd80edd78790766e95324e13cf6178acc54c48187849fc6aa0b3f15119", + "createdAt": { + "sequence": 1, + "hash": { + "type": "Buffer", + "data": "base64:AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=" + } + }, + "scanningEnabled": true, + "proofAuthorizingKey": "171f86363aac54be87f8aceae06fc36f2a5e0477c599630d46b6850cb34d8409", + "isLedger": false + }, + "head": { + "hash": { + "type": "Buffer", + "data": "base64:R5HXrp+X3xAO8VWOhHctagm0N2I4goP3XG8goyqIqoY=" + }, + "sequence": 1 + } + }, + { + "value": { + "encrypted": false, + "version": 4, + "id": "6e62d995-3eb5-41c0-afe3-46450fc5c944", + "name": "B", + "spendingKey": "c5833ff0ef486bf87de989763d7cb0752893ea1013100f849c6e83b44c947ef6", + "viewKey": "751a8f744c12c4614b0df0004541e7fe8cad52d2437195632987df0ae0605b65105630a6e6bc8c77d0c79b3c8c76aace21c1a65d4a01d5179328b7408d675b0d", + "incomingViewKey": "086c9b19a49c410abd8b886f2b76391b60552fc7b8fb876a08a4e6cc6770fc03", + "outgoingViewKey": "04560ad40a82b00b6bda1799acc99a3290370c5b60a2327e142e47a6e8a68999", + "publicAddress": "37f9efce6a70a51dab672ffae12808f128a6324b8073b74bb10fcce2bd109a90", + "createdAt": { + "sequence": 1, + "hash": { + "type": "Buffer", + "data": "base64:AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=" + } + }, + "scanningEnabled": true, + "proofAuthorizingKey": "f8f6e8d31090239643f326fc990eafa57c19baa4eba44280e1d8de92e6befe00", + "isLedger": false + }, + "head": { + "hash": { + "type": "Buffer", + "data": "base64:R5HXrp+X3xAO8VWOhHctagm0N2I4goP3XG8goyqIqoY=" + }, + "sequence": 1 + } + } + ], "WalletDB loadNoteHashesInSequenceRange loads note hashes in the provided range": [ { "value": { + "encrypted": false, "version": 4, - "id": "0be218f0-129d-4e5f-84e1-0578764d935c", + "id": "ccc6dfe2-a2a9-432d-929d-202230d9a916", "name": "test", - "spendingKey": "f5033964fc93e7d46a87cde562567e2ed7747a7e37b10697f8cbef391e0366b4", - "viewKey": "e0e3ba3baf3de784a3c59edb21dbc1964a5d34cad0d667b29e8a6435ef28ac6d4c0da2110adefcd8ae1e48d858792ae9ce054f6bcbc9e8e91a50213fbc87db8b", - "incomingViewKey": "02152b6c75c952e8f3d23339230e60a1101dc51370dd4e1e74197d4d82418703", - "outgoingViewKey": "38d0b71890263f7ae873c834a86cfd8c7debb856d5558eaa17b048dfea52c1dc", - "publicAddress": "df5dd91c46403560964dcc1c4d9462932775bb61dbc469285e2abad6e299f858", + "spendingKey": "f6c734f3188d4cb5096447b49343b93c27f4e3b024cf8c14e02600ee0d388909", + "viewKey": "4c2f1659e6903ec0eaee7f810cd1d1e7d44c803a2bbeec8f78c548cdeb59dba18ab8e5132aa6af51a20c7540e8ab891c348e6b6f01f4d4c7dcc2c8344d3c7e82", + "incomingViewKey": "21c82bdef6336fec3230213f97102e1bffc4ef73395fb53a5eec41e3cf742e07", + "outgoingViewKey": "6e8174b338937cdd3e7783af1a0a36a357a46c31ee30785461c357c1d10b1f36", + "publicAddress": "f21d1ecd730d8bc309741286941d7f9372e7edcbb6057a0ba580069d9e727c9d", "createdAt": { + "sequence": 1, "hash": { "type": "Buffer", - "data": "base64:R5HXrp+X3xAO8VWOhHctagm0N2I4goP3XG8goyqIqoY=" - }, - "sequence": 1 + "data": "base64:AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=" + } }, "scanningEnabled": true, - "proofAuthorizingKey": "e4e4b4eafb4c59c6a5990207e3785a6e13af15ab51f4eb73e48a5869c89f910c" + "proofAuthorizingKey": "202001caab7df1c6f7fee89b4982ca3fc5ffddfabcea070044118bf0d52ac803", + "isLedger": false }, "head": { "hash": { @@ -32,23 +96,25 @@ "WalletDB loadUnspentNotesByValue notes should be returned in order of value": [ { "value": { + "encrypted": false, "version": 4, - "id": "b08f0f76-1cd7-45df-9527-fbefb2e686d5", + "id": "5e32eff6-e071-42e4-9515-7c57fad56fd3", "name": "test", - "spendingKey": "e243d6e5d5e081a34b58202e9a2ef23b5ffe28da1cc4be418480471826fbdefa", - "viewKey": "945e3a763a7c7c24b0d94d6da0323326d31885783c63cbbd8d933d0bdfb222f3d80b504dff558a7f1b5efcabe2f2b2b0c3c66cc5bdaa7ce4d1f8eb71cb120b5e", - "incomingViewKey": "90e6732e87e81ce93ddf3981136c010f09ed962509239febb941ba1d40080000", - "outgoingViewKey": "1423d36d9daaa4598a4cdb76fefd6d37822ab0f62a8b58115c37a1aef55d9e3b", - "publicAddress": "457db891b144364f68100eed5936b4f24cb28ca9f2baadf625f0232551ce639e", + "spendingKey": "c0427ebb91b9ec86722b29db17a6a4e958185d1f85d90e906d7ff7fdd0615734", + "viewKey": "be9ab549a619631e4149cf968735bff567ad56add1f04b3c7ba7c95922bd83a0d1bb131e5914bc39b584679b5fbac605916140a6360155fb7b0d302a52d0b80c", + "incomingViewKey": "911a629e722d469675aa4a5e318ca83138337f09cd430b994eae540c9c115407", + "outgoingViewKey": "8b728c3e55c459213435076b4e00f2a6e9d2b4e9b9ce16b9d3f149c19c942caf", + "publicAddress": "567b7e26281c2699e5499514ed1494aa303397c1088a8ef77ef57dd1d60baa42", "createdAt": { + "sequence": 1, "hash": { "type": "Buffer", - "data": "base64:R5HXrp+X3xAO8VWOhHctagm0N2I4goP3XG8goyqIqoY=" - }, - "sequence": 1 + "data": "base64:AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=" + } }, "scanningEnabled": true, - "proofAuthorizingKey": "94e1e10ead951d7051e8deed9070f4067976153f2a8b6e39dff7a59865f1fe0b" + "proofAuthorizingKey": "74d5cda767e69cecb12d81e1cb8070811698a78138462081713f04fe380f3807", + "isLedger": false }, "head": { "hash": { @@ -64,15 +130,15 @@ "previousBlockHash": "4791D7AE9F97DF100EF1558E84772D6A09B43762388283F75C6F20A32A88AA86", "noteCommitment": { "type": "Buffer", - "data": "base64:AGN/n7vdSA0cqTGHGylB36I4qggOVd4iamngw/ulexY=" + "data": "base64:ggKUUs/HvdAnUGbMd8JNWb9jufCDFWMHN/LghH1eT1Y=" }, "transactionCommitment": { "type": "Buffer", - "data": "base64:gluzRSYoPPJ/86DkUz9zQ/RSUtdUBfV1Llt8qidYaNI=" + "data": "base64:+dWXsdyIf2r7tfZXs18cQ9dC4z7RmMVdoBgUutG3ycc=" }, "target": "9282972777491357380673661573939192202192629606981189395159182914949423", "randomness": "0", - "timestamp": 1717538193860, + "timestamp": 1733981047291, "graffiti": "0000000000000000000000000000000000000000000000000000000000000000", "noteSize": 4, "work": "0" @@ -80,29 +146,29 @@ "transactions": [ { "type": "Buffer", - "data": "base64:AQAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGzKiP////8AAAAAcDrdke/Lktu7h7+wC0NkL3vAlI+dvqf1HlHu3cvILhqRt4tyjHuAtkYQIAgSgkzYfxPOIP01jYWrWJJ9TsnrrumRAYGcaYH1eFY+gVjIHFyDEuzqh2+e0dB8wPjRVxAnyWYao8hIUN9YDezLerZC8FkgC3CdQWhgF5E2Ywcw9XAX6flGlQpPtL5KOfw3uwL4X5jReUibA02H+MFFUnTbM1b9kjWc6luXmevFZiuZZgukdwOi0a2B9yA0wHGGXx00JvVMGj2AsUfUdRmaepcOE7aSQZDKeSoEnc8KnQgtfmlYxRYxmTQVjKF/cYXTMcLlZqVq4j78f/D2gC5jn5q2Re61qquxxPnucfNgIIoZsxTdlgektNC4EHZkOebxDx4gbN05HxxZdOfHsibgIuzyvtkg2kF7OSfjtGz8HTBnttHY5y/6nR7iWTLjNxD+jRFU1+w67YIVB9iVwuGYNC1bTm2VTWB/Y5zYt5nFlVqpT1NxwdR3OLiJk8M/WKvTrjVS9QttIUNYksjqjwOX7gzondNS4eglFsgwmA61k21lr7mSnWzNqPANgD6/OXjnJysrTt4ncaa4+mda/TelZJ1zzM3pvNumX2g9vBWEOt12wQpLAXOveRdMYUlyb24gRmlzaCBub3RlIGVuY3J5cHRpb24gbWluZXIga2V5MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw/RLaJYwtarGpEibZkqy3tTYtAqWdYztrzeU3aXy7oeuNHxGZ2LNuBQVqlhP2/di79g5SWb2R8lvpexAtiLaPBA==" + "data": "base64:AQAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGzKiP////8AAAAA32fvgekY29t7z7nydNg81JAL7XGhV2iui1AtAHuSXNqIf80pecIODMCogRU4QfbnSqYUFOp/QO/jcNNJy942WLugd3mKabNODiiPs7lnbTSqaXzCW0ehVI4ujEDI0omhi0PHwqQtyflSwcSCMxBDJ5Yic8Xx/aec+sbjZAkkkV4WYCwNG529RAMkRw19r9PCCxoHSN1OY67pnX5LER7aB7rqW/yrYo+XCaKkBIkzo7aLfpBt3GwTynKsWwXHFot/aVOkqZhvjIXHv+NyzpIPB8uvBJs/iGxo9ruugi6MewW/WDby3jQQYcDGT8Gl0uUYuxBtACBglKbPJMY3QEvGz3qbzDVrtoa6YVIGMzbEwfwD+lqrkswVMSIUlrqVaBUQB66jVkn3orWPCPNmSu4TmBzc1q0HKteZu5LGV+knCBDwhi8N7ujvutgV4OOnv/gIw5HvuRXAdQyDYKBxdq5eDXlk3FCh3bSiYHtbKVFQk0lf+KPJaYgCajwQ5HQqEJpy/aWI3Vlzm8ZLYoWmhIOPgqw+drInHd1GivcHOAuqCmkBK7INL+ipioyO6ygQyHt69PJob+/IJuvDJ7Al8UTf3jbJhAxb/htIdEe+jvv2+KxVhwwp4AdYB0lyb24gRmlzaCBub3RlIGVuY3J5cHRpb24gbWluZXIga2V5MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwDAz5R3YNhA1h86Pdm+O9yXzGfTu4gXabmxgFy6GCxeqKL2nCYslOJACZJhac6A8rXfCPjURvN31HXovSF+45DA==" } ] }, { "type": "Buffer", - "data": "base64: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" + "data": "base64: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" }, { "header": { "sequence": 3, - "previousBlockHash": "61BE541335494559A59BE9A95190832A60EF5C621DDCE281CA898BF572B14FAC", + "previousBlockHash": "AAACBD285728B7EB0F95C9C714168ABCEE7B12CD0539CFBAEE3A8ED99DE060E3", "noteCommitment": { "type": "Buffer", - "data": "base64:KYgy0rpMqCLVS+hbylAmqe85nBNlRxKGCoUkRU89Clo=" + "data": "base64:JvmpR8FdfKDs8/La/0U8lY6zIPm91+mwkMT80i7SsXM=" }, "transactionCommitment": { "type": "Buffer", - "data": "base64:vUy9C9374DVEaJ2r/pgi4qoTwrZogxbHil0Dc4gWYBk=" + "data": "base64:rzPi4dtuOd6t4+DmQ6TzVaMeZ/cgicXCIcY6Qd3MpEw=" }, - "target": "9264879167265393346079759017366666868294504436375261565844152486318817", + "target": "9255858786337818395603165512831024101510453493377417362192396248796027", "randomness": "0", - "timestamp": 1717538210880, + "timestamp": 1733981048595, "graffiti": "0000000000000000000000000000000000000000000000000000000000000000", "noteSize": 7, "work": "0" @@ -110,33 +176,33 @@ "transactions": [ { "type": "Buffer", - "data": "base64:AQAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGzKiP////8AAAAATXyUc18zgTHsFlrQvf4T1ry8Rl2BElerFEiWKzvBlJGuR09ToHG0NpaTOsZqMenJt3X6wXO5ScUb265PGWevY5AATXnCMhdovuDmZc9VoA6vRymBdxFc1Vzn1jDeiid9BZgp6EUnpswGd3alEp3dxSH6lBKWeoj9yzb316F4yUIKQqsIM6L4x3gWptyB86NOVePG6Ba5b/xx0VbRD+GZYarZ8RiAK8A8x27y+ViFgqSm92GVkHzeonGok+X3gDXVksGxFIKkqU64oC1a7fe37RzhQ9KdNIqFthFQlQFsbS6hTnB2WRJhLSCxrj1DDM0nnb3Yr9tWVb2kTyOd+tvTxiOJVf2XHthNFsFxuFDZAZpT0O3Ek1AVWTOvewd8ogpjPR1JWj1DEmd5epVu+Esdo1ULjHim0UDdSJk9UwXpcMIXGoEH3/i/mWmPQK7ElfUjhhreUbemM1KUGQvLXP1k509U5upyuTWDPa0wtn8vvkhkQ1ZOG4UJAYJ8wu5xHYJe4QupfC5HGtjt5+nRAWhiooskZ+onFyIURHw1RNTXDzq1xawA00KkbCBMEVeLFKmyHuEbTWUGuepH8lG7aL6wmn1DpQqzyzwvZ5Q2RQZ9MNsJCUPX08/CtUlyb24gRmlzaCBub3RlIGVuY3J5cHRpb24gbWluZXIga2V5MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw7RSyp3ZlB6YOVtipbB7AscRcni0r5Ap9h8dK1FMYHG2+Tfm/8LjVSKhweNpYzyh3ZNpEDgMZb2AUjKGaQmbgCg==" + "data": "base64:AQAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGzKiP////8AAAAA5bDmJjpFf44iIAyNLfTOsXDOCjk+zUfljPP9XH7jwt+lh69xOYexNxSJClCeMu0Q1NCssjbwrudEr7zillPo6pfY0Xk1B37kfZryYzVFifivycCA5sD19TD6dGH69jzNH5Ps8XD4an2OIkOc/ZfeerOd96TgfO2EvXue6WPInq0ZkNFqO1WknVfqJNovyToOid9qen3vVf+6umd4EyTOKIAXx7xMvIPzNpmkOkAq1ZKs7bGV5QHJUBd/HeUamSEFDa/x9AVF7IjWW6UBs38aIhd8NHB0qbdFSrnJTWRGB99MVXdXxoWpMTkZestMvJokmrnzR1fx2IRPcUD4kqyyLGvs7CYvb++FT8F8TjGaNOlappEzxGZF97HKItsbOGM0uRaXlWT0CFduvTpDZc9KXiZnE/QwoaIrd/9OQY+Sj1bgzdWjjlVB2JYsZB6zfDvPHru8QUlGbwaGbXvt4AupqqI0qZjXZv1sqlQJZ5XqNi8EqhWwJ7WWEe7CubLBX/XlL3l/LZH/wlot+isWMipb4RiYadIAN0BSdqRpE/8J//P7Ot+Ts8x0MODcKaVXmR1+CY/TBqUZuHcY5+ISzBxIsDIkvRDg3UKuLHPnmIBe0rs9NazzWJqp+klyb24gRmlzaCBub3RlIGVuY3J5cHRpb24gbWluZXIga2V5MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwHa2Fv82oPvbQ0UJUC4pffk3qF1R0joj2HztpV7Cs3u1PBx52bjusOvNK191JB6uaPy+BSGDXxB+qOAle7H6nBw==" }, { "type": "Buffer", - "data": "base64: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" + "data": "base64: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" } ] }, { "type": "Buffer", - "data": "base64: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" + "data": "base64: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" }, { "header": { "sequence": 4, - "previousBlockHash": "C9E0BFB48D4E4A321EFD41638DE20A70C8B24D53FB5E2193FB76FDC4D7C35F3D", + "previousBlockHash": "98AF976E08D09FE6F53A075D7E004B7BE37B949CBEF345418A2F8C9A5217C470", "noteCommitment": { "type": "Buffer", - "data": "base64:lQTJfxmqFYTbR6FbVdZlPpqsdLMY1XQ3xukV+PFS618=" + "data": "base64:FW1Xh2guHmOC/FG7cYbp/CvThXFL6W3fOPzugP8POw4=" }, "transactionCommitment": { "type": "Buffer", - "data": "base64:lD64752QvRju01yacWShfsElTd7m9J8S/eH1Xvisc0E=" + "data": "base64:b7AgCeGcdyN+pIAUlr0oNXFOcv5W0M8Rd2obKNGatMQ=" }, - "target": "9242316838154714456240146243610585159502316297651713580306101543756989", + "target": "9228823284279306817296266184515742822248210830185427859262273659833347", "randomness": "0", - "timestamp": 1717538223674, + "timestamp": 1733981049903, "graffiti": "0000000000000000000000000000000000000000000000000000000000000000", "noteSize": 10, "work": "0" @@ -144,11 +210,11 @@ "transactions": [ { "type": "Buffer", - "data": "base64:AQAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGzKiP////8AAAAAfhhmvy2K50FTorMtzdaL0Sk0nYXGuKbeB3XYsseBrzCB4/eepPXIG4UY/gOfaE/IriUF8jM/kOiUu1MbHKgxNIArDiXCgfTgxmbLDdIV5PiCyaGQVmoRMPLP5yZ2xewmQZp9cYrcGZBHDNVpwYZTL5QddX5Me6c+TImBqEhTReoRAKf18t8Y7p5DC5EQZ7Q3CbVXTlIt5Sr4GiMJKTLKyBNR8D8GJa6tWt/hYPbnCjqO8oDdN39mJCDOQ5HIG95y/EtihLHQYN0IWP/GADHpKcMcVCHaYS3M0scw52a8Uwdi3Z0ZgEsYSXbccJIdbEhftM/epMFh8OF4MdrUx3el7CeDx/kgQuf49nkkiaHUu2Kr6X1NSQz1rGKgly83PlEBQP+y3IqQuikKFhibUdxXei/oG7MHAPi3c3/kgjxe3UqdXKmJMJs4aAPCh4tA1Wm6v/GzrT8PWiKbVUoQvnzTkwpLJsRCt3CjFd7AlEPzpK8pUJnTTi0Ktd04jgk/JrMJaL6rBxal238iW84ELCf1wy2PSkCZiks/kc/x1tiKsaoQtWWKy3iVg6BSA1DO1ZVBr8fTgKio7X5ekJSMXWsSJvaRDmC/M1XLF5s/9nTWlMHBH2bzPOASK0lyb24gRmlzaCBub3RlIGVuY3J5cHRpb24gbWluZXIga2V5MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwInQYpjqYA51YACLX8PVcbdvexfPTRvDQLy+jszOG278rK1WNBKx8s63DsYqyXiOwtBov23fnEu0lv4z7kSTRDQ==" + "data": "base64:AQAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGzKiP////8AAAAA0MI54hnd3JHY4/U5ojIy/gj5HXi75ubHwncmrkzlcAqKQa9xZOnHnAwf8Or3AvRXSaT/9SRyceJqtGBblHtY6EHWan0DRJKq2ogi68pYVIyN1Lcg3CF7+kHNjWv7wLifI+LDkey5bZ7q0KUxEUbDcLYPSrBwmxnsXgBHudbqP6MGtd+EXOEsy0hle7FQoFDZVzCmlSkeS+Q2D5cfYMRK89D4quXNovBJbhNVyG+voVCO4SYxEXZy4XZQk+0vvfQVFmVBuuTg8Pkux495Vsus5qaCeLbatt3ty4uYoJ+USy34a87xkN9YetME9gXyupeYwkDiJ0HJT5BbR9A/Qjf6E1qwxJFaF/y3X4lRwNcy6Y5mIPH8l0vAJP91UZkzGeZEGkaFnQOe8/EMHJxzyLGBuw9nwS5JjlG1mCbCWtDrhFzwdyeSgds3LTgw0GLqf5/34dpDRmNCoz2sRdckW5dWKx7vVWWCbmFc4x4mR+FGaRZS+6v88TFJaHr3I92LzUDTO+nA7QpfrixnYldrsgIFZtFhCYpYQAJZ/xnWJgi1QWHLKOUK2+zWGVDQeVMO/o+55y0Aslh1pGx3czU05rA64CA/FQRFJRj1RBeZJ3jFDnr7S7PbEvh+eklyb24gRmlzaCBub3RlIGVuY3J5cHRpb24gbWluZXIga2V5MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwvLtZ3NQZpHcHoz/2pwZ8VKbYywbTTGDwm8WffkXpho5wsSIELCwGE96n/wxK1j5I2gO4ZAjJvNK/UqokjJnCCg==" }, { "type": "Buffer", - "data": "base64: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" + "data": "base64:AQEAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMeB69onhBOVl5Dt7PlqXHj4DUUxiprvxMjLhOgbr+wqDjpwc0oYyRy0inNGo61YiFsV7x0TA64n+2sJJ/4SxZCx16H0y0wURBXzB1TNGqwiDUPnf03Z6l9X6AeLUBmBv1C2ZR9V26Y6168CEcGPRbo1FZ9NGTPj0BEF37TPLLSESmsaGnQ2Sy2tVW3DEECUrpsPcWpWQ8ni7itFEuscHUbmKcxH12sOs158apM4iqxay/XY3ysOdrwEgqKNH4uUb340GieyFYXSDGV0L5ZTJl5+uBTSHy19UB+Mq0HeDaY+G4hu16u+U/VrXsbr6OW+/FN9U1d3BP/tUrsqVfPAEJyb5qUfBXXyg7PPy2v9FPJWOsyD5vdfpsJDE/NIu0rFzBwAAAAKnp3RhqP6A9NjSCqd0mHpWOvV8Y68IaYAjl1CjO4an3r4xSLZnowtdoGbWzMvrokLPbjDaKdcWPJTWFZSxBu8uqz8VvuK8ZVUKFawiiIXNIie7hDt3uDTj3sVWWoU2A5NTIH7VCzjaMQ4yRKNEJ6ouyA7r0DLH9ZA2CAkgjFkL5Gvk5zQBBK52gWsCp7LF4KaH4Z+sh3OQ/PI0uJEX2Rl+9Eg8Nn6DuBgofDgIpNI0t4kTCXxSq5iLcXec5eezkwI78HCK/UvXQ/Qo5NdZokdlN5yQf2JNierJAiIrBYuUcweYHAfy1fT7dn8Y9SGTa5BoJYO78wRCDwr3pn2Bf9VuU5rJZcJYaRTpPNMvCB1MVL8d9y4wpz7ZFc0SCb30T/9A2jmCV1Vnqmhe1p9PU7fGSRNrP0X9HkHLgNUf8ssCPDdJbmRRwVb8QVohqXZYswIm7rilipL7dK/yewcoJFnnwk89Gi8PEypQpd61MdJKlEd1nxZVNlkqdr0kgm75Gzu5LNvOwp5quzVRD9MQLwwplFxvN3pwnN7tbEtbWvTIK1bAgOHBbHZUdWYvOkLKTnCceNk8JAMIN9Ds2Exs6+IGDnzrfX530F8ufR2zZAOEeRz7a9oGKx0yMAbjc8kCkGDF4N35xq6KduRf/Jkk9xIyyiy4T73FlXfELIhEpuiL+47XTn6DburBxqsF7pUZWRgVIO9pWNu5A0lePUl6hWswLb5ga/DXHSIbeDfxoYOIxIFA1qHUndteeSy0nQhU6vq87vUPW4M21G1QYb2KTMU3yHfSvaGf0xgFJbdYc6bfMt1NjZ9u67C2VWjMrAmrywgEHie/J+gIEIamySaRdybE25IoHKym0icssDpCPot9iA9RGN0d7TSo2tQYAFvbwBssMGOFwTACoMRAxTtZ+EnbgPkiE3Bk7n59KsbTq9G6O7HEq2eo5KEIeDW7tAjTYAy3QYE/2u7Tg/xL0VLN7/et/yc6esquR1KzJvXnuupDGMXoERsWK3aCe6DOL1oylkmQOCNa3nUWOIquStk5erVuI+YEZYZRf6ABFv/Ulszrvc03q9HJx38B+LsWLzg7Aj0FWH0RBWWuTF4mx3IM0397p4lV/TGKF+zgSc58VlXOwdH/LIizhG08x30xlQOFj8lkcN9xRzIrV0au+7SJV2g+ImNZu197JPwYWOmKZFRGl9+iz7Z9ZJ3oqX+l6/ulUOOjsz/n2DkzHDcF6sACy8Cz/hPTKnWgV82uEuNdEifflHqhIdDFH8oeYZzn7l6CZ5AHFmos1jmOaT7SG+63zBkh/p3m/txHzehpwvwjCB4aycewgk2aDuRIjs9osVdXWj0qRakR6tGfPt5GGNISutdIp59hqLNiygktY3n0DibL2uMVuZrPi/HsmZP4F5MFZfpUFoMfwr2SWOhsuPa+wCZGy+Y1LaH7kDDAWLc/gcJGNz1YAgefl57r5nI2aaphtFsUHlldzg9wpFuvzSaN/FvCHXlngnWCecYhW7SyFZ/naEKeYhP3YDlyQS6HcrH7TIlQS+HvGstSJO3QxlfC16RwrjcxeN31VzDXp9N7bn+kUMz5JlwWfeVAR0ed/S+qCw==" } ] } @@ -156,23 +222,25 @@ "WalletDB loadUnspentNotesByValue keys should be stored in order": [ { "value": { + "encrypted": false, "version": 4, - "id": "667fc2b8-b34f-43bf-9d99-20753891184c", + "id": "86f4780b-c542-49d9-8532-0f2538d3148a", "name": "test", - "spendingKey": "7df5ba1f20af22b8f5c1f545dffbaa368ccbf44ceafa7684191c2dea5228a2ca", - "viewKey": "e43e8e441887fc722420d21e786f1a632dac3d006dbb9c9552d88fbf334867aa0e0ca61135d0237d9a25d048915d9c2c24324b6a4fd7d779b54059cdb7847e49", - "incomingViewKey": "23e6ea2ada518eaed70e03d028bec701bc33bc918aea9d962de6904721131202", - "outgoingViewKey": "574db11c63e2a88637257b08be27e5b6c33db6d2c029d289bb4d893a0d34d5ea", - "publicAddress": "da34efa7725c6a6ed32648ed14ab77640e8acebcf521a6908c5f0bd59cc3a3c5", + "spendingKey": "a078947275f6004698da20effe656a60fea06ecd955eec1204af08f2d4224ce0", + "viewKey": "e7b40ae018c0d8489783d6af631530598516d4266315012b29080d1a8cf343516f8ca01d570a0e60b63b4ff7fba0dea26a79ba4cb0555837bab6122564916fea", + "incomingViewKey": "aa41dee161837b9f16d2615572fb33dfde056625e7276c4d83cef683e8d2ce07", + "outgoingViewKey": "c8c2459dc7115355b91a6aac66559e4c0912d5d16e3aa4759d94e685ec110d56", + "publicAddress": "0731ba92a71457d7dac78007cc9e1c36ec386b97fb2733eedfdcb1d23c477160", "createdAt": { + "sequence": 1, "hash": { "type": "Buffer", - "data": "base64:R5HXrp+X3xAO8VWOhHctagm0N2I4goP3XG8goyqIqoY=" - }, - "sequence": 1 + "data": "base64:AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=" + } }, "scanningEnabled": true, - "proofAuthorizingKey": "73cb58bad461cda2df4ced7844eac7fa0b7a1875dd3c4c38b41328ff82716801" + "proofAuthorizingKey": "24b3ae032bca0966a1427944094fb225cf60bd7945872672100cebfdad707c0c", + "isLedger": false }, "head": { "hash": { @@ -186,23 +254,25 @@ "WalletDB loadUnspentNotesByValue deleting and saving unspent note hashes note also does the same with valueToNoteHash": [ { "value": { + "encrypted": false, "version": 4, - "id": "4cc04e68-9c51-468a-aa22-8cf3080be900", + "id": "8b176efd-a161-4633-b2a8-a0bc476c4d2c", "name": "test", - "spendingKey": "3602d90f0c83dfcc2297387e444e151936de5c2aafcd615e1f1388b7998a96ff", - "viewKey": "329a5276af40f1bcc414c1526b2b9369dc46b693101a14eb372152cebe24aaa9f5b461c1782a5827402cd5448a9ba783e05f350bc3e65fa2eabdf5242a5ff78e", - "incomingViewKey": "4e6fb05d3acc82f974a2cf04c0f51379efeaf9e1c9aa590f38386ec2a2446a04", - "outgoingViewKey": "57cd20ca9df88429f5533e5ad0e450c8c9b72e2be960977ce8bbe9e671ebc149", - "publicAddress": "b782216d4ae965d886f30f8f6c54b76424ad5e4c86f26e87b0f02dce6c5b9fd5", + "spendingKey": "9ac432f0abc4f6ed52c40c473c1cd59a0b39eb021baff51172f0d9589f6122b4", + "viewKey": "d28dd28f6ee30c2f6d6c9bf3aec5d02f06d0bb2594a5fcd85765a86eabb4719b5d733d871267c366003f62f7335153e5efb64b34b0b3661b729bf55afb93220c", + "incomingViewKey": "5a46d7dc56a8af212168053424b071eeb2ce934543ccf1ec8799fcaf342ca906", + "outgoingViewKey": "b6729a59747d1b7e628f37d7d07cc4612f605449c1f0d6dbc9f93874f68b0c8d", + "publicAddress": "1f22354e1ba06209c2c9b8259648192470c21e34b8d30fe98995cdaadac7725b", "createdAt": { + "sequence": 1, "hash": { "type": "Buffer", - "data": "base64:R5HXrp+X3xAO8VWOhHctagm0N2I4goP3XG8goyqIqoY=" - }, - "sequence": 1 + "data": "base64:AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=" + } }, "scanningEnabled": true, - "proofAuthorizingKey": "5800f73d9f7fcd6345abbd1d7643d79cf2f016f1446be7dfab32f5c3631d120d" + "proofAuthorizingKey": "297d76d45058d09c38d795a00fe3fb4ca3092228ec1628357d1625f5cb3d9500", + "isLedger": false }, "head": { "hash": { @@ -218,15 +288,15 @@ "previousBlockHash": "4791D7AE9F97DF100EF1558E84772D6A09B43762388283F75C6F20A32A88AA86", "noteCommitment": { "type": "Buffer", - "data": "base64:NNDhtKtDWjNIrJIEm0R2cct2q1VbWYpsEIXrQhaWTxI=" + "data": "base64:gkqK1nVb998PIxTXWxgiWk4clyNUwMOHTsKV9Cs3cA8=" }, "transactionCommitment": { "type": "Buffer", - "data": "base64:ZfTzcHifJ+G/jzpj37HHUr8Up0NgV7m+gxSVbxETpnQ=" + "data": "base64:GctSZzyyHbIPDweXeBwecK1z9q0f6u6AAMzgJb5CoXg=" }, "target": "9282972777491357380673661573939192202192629606981189395159182914949423", "randomness": "0", - "timestamp": 1717538228473, + "timestamp": 1733981050428, "graffiti": "0000000000000000000000000000000000000000000000000000000000000000", "noteSize": 4, "work": "0" @@ -234,7 +304,7 @@ "transactions": [ { "type": "Buffer", - "data": "base64:AQAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGzKiP////8AAAAAnqH/igXiab+EWTPmhKLM9nqijo7UEKX51avuUprmRGqOsnuSYc72ElVGGbMCUMvfIkPfcjOLxP6+W9Q1k6e2dHB3VomTC+goSzhMwLs7FWCqAljLX1F1ElJQHzIXE9P2iOej5QOQZlCCjrj1kpKzy3jq1ds1wLW4jDxsZUKbilYDBdUV6tArB1psKs5JFdkC0aj1eOmie56yXkie4WBi1Dr7coGa1v6XpMkwa8+oEguZp/Zu3JJZ1SSj5ex0ZmoVOvp1HomGGfrfePnuDyofRLTbq68bLavL1FDFpBiiDYOhLIzRatpW7UaMskKI+6el0Kih73mxTtB8GkDtnOD1cIFIeughoW5iGudylvZRF7bQlvsRVUdw4MHr6i0XgghJHS4MsRnD2YW/+dZk6HA2HufrjknXLuTqWyo7mt4fg4jpaxmlx8Wzj2u6hlgFYPN0S/6CyofPUlWdaV3rODZO8e6qTwv7zoaOqSz4ZRCB/1QQPCzTMcMudH4NgLFG4HhEAvvgVZ7vcUuxcBAWOEXaQjqs5xYcm+G4LFeHNhieututjvFoFxVvllIjVTgUrovsie6TW9LIQWT/9s+uH10ovXaYh0hLq3Yb//WhaSw7ZzSK6PKgwJHN30lyb24gRmlzaCBub3RlIGVuY3J5cHRpb24gbWluZXIga2V5MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwIWcZdQOGJJroC+rmMqDfe19DFOMVKfo2MfB7BahoWgVTIeNyIjrc7zPM13YImRI/LriCYmpF+JJXFpBiDCXeBw==" + "data": "base64:AQAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGzKiP////8AAAAAWvkAgec8Eu1C9kWyo8VVrb5TXiwq3zltl+8b3NbLnrGsO57wF2LN1Ck59fcZsUORwKTq1Hz1XgnbsQXCA1JceClgk1TFDAEeCduPAMAKCj+xTbSZK02jUKWb8lTjp6YIg/5SySk3jI9vk8QkkHl3yy6S9H8f+cfx3HSCuFwPIyMJNk+G8XWkznklF9sffVKdq3RlGwFTO52+uiJ/tgkfURQBr641NGj6VtR6C30Neu2G6zNMp/A3wSh9a8fbC0CimXEYSTTWr6oHbKhcCjzlbSo1Movl6ifoemtRqKGbVN/4U4GiDkF00drJl6cjzCZssBr5JXrbUj7dGt0Iy+t+0pcnImgooB/oAsat03U3MrR7gU1LONKfHvi3NSz2wLM4J6LIKsZV3VHNoZOovikXJT/8Oey5JVhL0TpJYaFaipGV4fQhWfpohZvVG3e7yVnQlWvXLLh+liiPId9+8rlpbbmqTxMjMow/54If1Zw459fQwS/CnPHI7c73nN/qjW+O0ftQapbkQxnBAUrAGV3EhNTgi+zSdGRL3nF/kLMSVP/CAZxH3Y8876jAEsn670XpsQpzC7VzO2cqeKfyRwBUoUlu+Gn7nbH8kMMIMSOvQMuOdSEWejoPW0lyb24gRmlzaCBub3RlIGVuY3J5cHRpb24gbWluZXIga2V5MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw0/YIjQViUoId6asYTNNuibLsPrs9u6sbWsXZWF+tgwVuYD+UCxPnVJjKVuWPxMl6Y5+UUNJVHGqx0IGiomVDDA==" } ] } @@ -242,23 +312,25 @@ "WalletDB loadTransactionHashesInSequenceRange loads transaction hashes in the provided range": [ { "value": { + "encrypted": false, "version": 4, - "id": "515d9273-1e3a-4880-a922-be2bd4241229", + "id": "ec5bb227-90ea-40e2-bdf3-87dcec30efa8", "name": "test", - "spendingKey": "6c4fb8dc2c041937bae0fc817030d6e9e0b4a8f02c9151ae8dd5511ca26b16a9", - "viewKey": "2093f97bd22b37426d5f808c36d78161004550e074ea1641efd4c9695b10bbbfbfea14712da9f9f4b80a6929507e9fdc2d985f3cdf9be8740805c04b712fc2e4", - "incomingViewKey": "51bf8c3e84b8bf6f72eaeb09ca0be2bb42921cb00fc0390bf0c456d944b85107", - "outgoingViewKey": "6ad0420aec2b010fe2b51e81066b8d1f2a000f05473078bd5a15a049957e6515", - "publicAddress": "2350bbe227a6e95ad0c3278a904edffb4ddd19d55de726f2ce7d006919c7119b", + "spendingKey": "98bec32eed2f87b0be370e518affded625e6cb4499fad342f4c9b523230f0038", + "viewKey": "7599f53f0cb76711067f2a929f740860601fbb65782e9bcf46981935eab90f83391812d83743efeb3798585c23e75c2174e9b4d627819064ca64d84613490c2d", + "incomingViewKey": "d34b11ffa22ee3d26334a46f175e384850a0134b6728c53dafd6fcbfd1808f02", + "outgoingViewKey": "c18fc7126e06a6a4b7453c29d98ab4503d9c4d2ff08736987235db8b49036642", + "publicAddress": "d345f4168fe16bd335b7584515ee478da5818961960da90d29c1d2011a54d937", "createdAt": { + "sequence": 1, "hash": { "type": "Buffer", - "data": "base64:R5HXrp+X3xAO8VWOhHctagm0N2I4goP3XG8goyqIqoY=" - }, - "sequence": 1 + "data": "base64:AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=" + } }, "scanningEnabled": true, - "proofAuthorizingKey": "42a94128143fcdce8442a099799bba187c9dfc2c0962af609e8aeb19403d5100" + "proofAuthorizingKey": "fbc560f921ea6fca2de309b10b06815d6258d3ad5f9787aeb11a24ffdcb40c06", + "isLedger": false }, "head": { "hash": { @@ -272,23 +344,25 @@ "WalletDB loadExpiredTransactionHashes loads transaction hashes with expiration sequences in the expired range": [ { "value": { + "encrypted": false, "version": 4, - "id": "e13f6431-424e-4c6d-8e79-2b48b0461da2", + "id": "5c37199f-5d77-4f96-88ce-3934781fd248", "name": "test", - "spendingKey": "beabf66d1e93cc111591ddbc10402c24452c8d5b0629a0226adeea0de7c6c5c4", - "viewKey": "c4c9f7dc2cf0ca1e8733189c920c3898cfccf11f17109fe586dc807927e9f84772fd4f6dd59a38b1818d6855dc708a7178097a92e103345615f3796cabccc797", - "incomingViewKey": "e3f7355e2d6d0b35c6367d1032add10fd78bed6212c1b6efe4331a06246ab201", - "outgoingViewKey": "80db0061643c7a8e1f656a6f157f48bcb12f1dc2cd3c29cc358302d302e2d410", - "publicAddress": "865862686f68cf5a4babc8b53f548d37a9d5eb1946cae93e44f0f3fb9c6ca927", + "spendingKey": "9881bdf6f7f32ccf7c70087195d2d88b0ede9b2570853e4c730c99ad53ef77f4", + "viewKey": "c702d76582e6e2ace54ec649536f9b48fbef4453c06627d865292ef9461a0ce808c5ce566a9d0611a11023d5652319e77f65ed88b924c958c64358d359c58f61", + "incomingViewKey": "4436b7468df401d229bf8d099ee50e0216aec35c74933cbd3890b14ff6169905", + "outgoingViewKey": "a2feb8bd82732fc412e7585ff9da19f8aa6263fb07915352040779ba0b88ef9f", + "publicAddress": "04c99a2d8f3263294e25d92d338b7cabaca011bebb99e8709a81ffbbebaf42e3", "createdAt": { + "sequence": 1, "hash": { "type": "Buffer", - "data": "base64:R5HXrp+X3xAO8VWOhHctagm0N2I4goP3XG8goyqIqoY=" - }, - "sequence": 1 + "data": "base64:AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=" + } }, "scanningEnabled": true, - "proofAuthorizingKey": "86ac2b151d79d7d83b6cc2f1b2a23fc431671bc4a6884592daab2999cb735705" + "proofAuthorizingKey": "dcd3c8c17dea9bf926498e320fd998f5bf784db83f963527d34997da4843a605", + "isLedger": false }, "head": { "hash": { @@ -302,23 +376,25 @@ "WalletDB loadPendingTransactionHashes loads transaction hashes with expiration sequences outside the expired range": [ { "value": { + "encrypted": false, "version": 4, - "id": "bdbccde3-e0b2-421a-8be8-a517acd15cd5", + "id": "cc7b1b11-ff32-4844-99fb-b0ba871bf8a8", "name": "test", - "spendingKey": "fc5aa7a6de8d4df54d7269fbc75c3184d0a73e132e08512bac1a0d1e9cb1afc3", - "viewKey": "ee4f1ed93cbb62839e93c2a08b9ba3c561fa2a03a9ea4fc7f2c9777fa302af021b62e249ae07a745124d41c225886d3287ad5b1f222ee9a76ca3b9402e6106c0", - "incomingViewKey": "01f037b454b53e2785519f636a150a2397b25ae65778431756375b99212ce900", - "outgoingViewKey": "0fc5f6ede6992cf840243ed44fa7366ed96bbb65812ec3d71598fadacecbffb6", - "publicAddress": "03f1411728bdb4635921158c3ef2d1044faf03d3e4febc649f6aca2af027b42a", + "spendingKey": "214993d50c0d41f605ef4e6c85bf31fea73fd8c834d99f4eb8c0e381fb3127d4", + "viewKey": "a551dcb079b25609ef0a683c48ac55f6be0860fad90008ee8a713250a23e64eb7690ce6d6cd4aa075a1af912d9b3b62a44271bb2fd49395502280733f5fae5cc", + "incomingViewKey": "2b64eff9a31ef08ae89eb9a75e86a8199870b99c59ef51f57a579f0acae41b00", + "outgoingViewKey": "df7d85150a421ad657a0b66ea891b8b307029f2c8a3652b8ec03d34e5a3401a4", + "publicAddress": "e347b4f488e054a956f6eec31d47147bf040c0efd8cfe0befda0860a7bc29c9a", "createdAt": { + "sequence": 1, "hash": { "type": "Buffer", - "data": "base64:R5HXrp+X3xAO8VWOhHctagm0N2I4goP3XG8goyqIqoY=" - }, - "sequence": 1 + "data": "base64:AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=" + } }, "scanningEnabled": true, - "proofAuthorizingKey": "49c4a4f3d49222a918fa42d07c33f66c994fd1f41ad1a15835f3271231df5304" + "proofAuthorizingKey": "7ffc0b3fa08fc61321b1d489352668fa8b5db2c89edb9dee16d4de89a3b65408", + "isLedger": false }, "head": { "hash": { @@ -332,23 +408,25 @@ "WalletDB loadDecryptedNotes loads decrypted notes greater than or equal to a given key": [ { "value": { + "encrypted": false, "version": 4, - "id": "a496dc01-b357-4bd8-8273-4fe7d69c944d", + "id": "ebf3eb22-e724-4a62-a810-9a58f87207eb", "name": "test", - "spendingKey": "2386f9d0f6222a04dfe133aa04fd590a197d3f79c4dcf26df6fc9a5bf3314255", - "viewKey": "f49774c0aa08b3324a0cf4afdca39b2112da0f053a34197beed3f731c074eccea933f46f4c56e513018afe60438a04c64c11f0dad664c1cabeb27e600a9cf0d8", - "incomingViewKey": "37ac46d0e499ba4b90e46fc18e6311b4b4c61f0e05bd4347296d9517a5723806", - "outgoingViewKey": "b7bea33267e82c89d78d0e8385cea9ab57f849a5489c15c1c97ce49d91abf1b3", - "publicAddress": "733e08a1817fcb6c13054c7e4aa21cefbe4e5548c3562dfd07b9dce196fdfc6f", + "spendingKey": "5738747183ae171f8a5360bef7af468273a955441fec0527ef8289f651a49851", + "viewKey": "d726228f644f1eeaf7e7f09da3ae5c90038aea012fc068a6f62283ee039af8e66655b02c6b4664def858658e0ceabfd2b495e193acfce0622639e7a43dc5f6c9", + "incomingViewKey": "57042a61d5cd999e86bba57208532bbaa17207b40516b89a8eb3ffc2c696bc00", + "outgoingViewKey": "db9ad9e0c1a212d0963336a9d4d36ec45bad04697cd70941a707a94b9ba1fd3f", + "publicAddress": "308d96ff3567817c33553bc37ed04d2fbc865376e3b94edfb1d4149ee3dcf82f", "createdAt": { + "sequence": 1, "hash": { "type": "Buffer", - "data": "base64:R5HXrp+X3xAO8VWOhHctagm0N2I4goP3XG8goyqIqoY=" - }, - "sequence": 1 + "data": "base64:AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=" + } }, "scanningEnabled": true, - "proofAuthorizingKey": "ceeb1acc8c69f360af3728e2dd2ccf9dcc347163b3f0bfe95adaed2845055809" + "proofAuthorizingKey": "00c9a4141230347d2b7ef6e67ff64953bbc0838330620c2af138ab10afa91d0b", + "isLedger": false }, "head": { "hash": { @@ -364,15 +442,15 @@ "previousBlockHash": "4791D7AE9F97DF100EF1558E84772D6A09B43762388283F75C6F20A32A88AA86", "noteCommitment": { "type": "Buffer", - "data": "base64:6CxE9xvKC/8+yGPTUsgy4bD2vzvpKVm4TFAXW2MSIw4=" + "data": "base64:cLA3SqUgA39sbjnEYcabRfJcvazkn2s52zvpD2Ujbxo=" }, "transactionCommitment": { "type": "Buffer", - "data": "base64:LRtRInTOGGf3yOISipmxn/2vxom7HP/CQMP649QXkOw=" + "data": "base64:QkDsjb6VME7ISIsN20E+KqUO0sjtuMu0LsKljHkh6MM=" }, "target": "9282972777491357380673661573939192202192629606981189395159182914949423", "randomness": "0", - "timestamp": 1717538232286, + "timestamp": 1733981051375, "graffiti": "0000000000000000000000000000000000000000000000000000000000000000", "noteSize": 4, "work": "0" @@ -380,25 +458,25 @@ "transactions": [ { "type": "Buffer", - "data": "base64:AQAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGzKiP////8AAAAADx5wQ3bt6jXCNmvCLWd8VSdhGYdm474jJBzj5jk+cGeMudvwYf32sTDLFwIaB70lgKpuhRsE90Wl2LGnuCmvIg2Hsh32R9buEgOXcdeEmdOuWed8zs1t8S5QMxxx4HwOSO4Jrf10XVhnFhzp5z5j3BL/U/xKh00mU58Q2EBDsdoYkP4p6741ZwZHFN2xOQRgb5tbHBA1kGv3xpoi5Kk2PitGSgzBcOZq3HdcFmCxPzS4sGTLWeN2iYYBMthdcdGUuJ9Z+PSIYYvprVsKItvn/vN+rwgHTPN9nNoG9MWy93eL1Mz4irHAg2W86wVtbzcC0nSZ1Sdu2rWHUFDzCFj2JHK2Sf+ZFkNp8KStomPkmaPT600UcykZO0qg2G51RgBvV1bq1C80qp5wrsjje4KZfJQfR2ciRg0k9tXULGuxK0+lBHGmX+sZ4tTUyRDtu1ouIwh1MGzOb9LTNxl0wF5DfgfBf0nJuKrqtbpA3za6Y1UB9RNGUH5yEG9m1DYYdxk2tq83hHt0HiiVd1OB182OOQwQmyJqmiJp0lVdVENKRxTgVreT9vrbCNjj4FvvsbNCs9d2EMnpyTH9V8ZFxJScwyWV7Ta8fdR3MSMP66EuUkgqCww0RpvZjUlyb24gRmlzaCBub3RlIGVuY3J5cHRpb24gbWluZXIga2V5MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwpkR7rbywpaPyhUt3Cwk+32lYJt8f/uxChVwSQq22mIRhCwgvLG+KmWkZt//S1N4zV7z7QRmBcp91Tu9lCEPbBA==" + "data": "base64:AQAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGzKiP////8AAAAA4lJ/lxtF4gP1Y0wQfdk6/ESw4FsuwudaaAvpVjRhSgCXnPTN8VhRshv0b25X2FMYKy+BXLhOmH1XM+sKBKyU9pxedgMwoZBVT7wa/ovqWLCyGpWz6UQncf5as/C1ddruEryvceKmAwAfasGdlg6lXoeDrRlK3kGIm6h9/7zZ/GAYxFwS2YIifAqG3AploXxq+XaM0UjDWbfoDajlgdBk+ctsopLXG5RDe/+SzrFOPvKCwd+Fd1h7HFUvna3SUBzI02XfhrMkUpdekkx0FsVAdhxoXAbGH+W380//NKkJVmMOiPPibXCJCvMfq0RJIiJJhxcG3hZ2kKT0k/3A4a/vFR25dJGbkfZC/x2KACBe5pdgc7cRradpJj3XP3gcKrlF+Va3JtGVQY7+swJ/BLJhujuaKBx4GdjSWHIRUWA8FEF8d5QrcsPdxfoOmOPTSqkBj2N9I5jtWFMy5NpsDGGUSRHST99B9JKihJAtmyMKSqYHNDWkkgspjHGzvvnDuk7jAaYC45c6rXeOif3AYYwNw4XLAQzdnPxLnSoWHVyoLNnJRvyCDEI62KtT4UVOa4AdT6hmFi4zzSkYkrS0mpB0/w6EfR2jGcFALkasbtpXfFTJJo19VH5GyElyb24gRmlzaCBub3RlIGVuY3J5cHRpb24gbWluZXIga2V5MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwNz+FRI5POnsCD9zhsEvAED7sq1TMziSAmVGns9oxYxDI2vozGCFfNiQNw427qEUaC/1c0wxUZk5SPUB6eOdqBQ==" } ] }, { "header": { "sequence": 3, - "previousBlockHash": "33165A7022DC49D79E56B10EBC48E4266AD66FFF5BAD58521CFD9A78557AD5D9", + "previousBlockHash": "4075823826E044EE74C9EC043D01E55BBFE4B760EAC7D4754C90D52118508450", "noteCommitment": { "type": "Buffer", - "data": "base64:Im6uiGlO+6Pg2FX4BCfKc6w5ym+SvS8IYs9FacfbGTo=" + "data": "base64:V2pL0roPJZI9mEnQ/3g3r2MPiEq9BpQIk4aTeY7cjC4=" }, "transactionCommitment": { "type": "Buffer", - "data": "base64:ZoQIIxT1wdDzc4e/wYBb6TWZiDez9hAaly+WPZWOuZA=" + "data": "base64:cpCbVJsCMJujfqDQWVZR/B3lw7vl6gAsu36CWofW+e8=" }, "target": "9255858786337818395603165512831024101510453493377417362192396248796027", "randomness": "0", - "timestamp": 1717538233749, + "timestamp": 1733981051703, "graffiti": "0000000000000000000000000000000000000000000000000000000000000000", "noteSize": 5, "work": "0" @@ -406,25 +484,25 @@ "transactions": [ { "type": "Buffer", - "data": "base64:AQAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGzKiP////8AAAAAPgAzeCpvG971dN9J5c5DAbsDZWOWZZ//AHT4wCMh5mWqiQQxRwj6ThAKOJDQ1uJTWH8f7Eh9/T23l+IE32Giz8nzrTbEJt9yH1h7SPL2rzGOZpGgcrrU8LUvcoLaxvrTz/0J1RXLO3xL+kFFNd3kjlwunoojNRCAYuzpoZEByegX9j0/HxzGIEtdQNTn7VoccMjtiznUBQksIXgTCJ+KAG2ONqyggyurfjrATPhaDpq4CBGosg4KCCltJH+LsxTOX/bh/c2z8lQ+x9wnDqLrJ1xFXcEFa1SCKhOqRU3OqBPuLCTC59QMJFzMLCzKarIMq/Hwosl2paR0lP/u/69ozMbYQy9Z4MTQ75dEwsLiT8aVXN9ArVOjmMqOOjB++IAaPThGqQkP8BO/FM1CIissNzld+mw1hSbaQphZd7pyH+R/MbFR01pZPYc97zLglnbGc9ZHvYnpnKKFz7hH1+fMCQBXaTyrcW5iuOPHBh8qdmty79XetCJmAj43sg3RKwTYq8KMZXaXohuPoJ0ghtQPuXBK4m0lhY26PCzhxRZ8m+AsvLlkszISPs/TvT7FM6oyLsjNVSqfXZEATKRC1ksEM6dY20xnY1mwkbgTfHQ2Vs8JV4jA5a4DOklyb24gRmlzaCBub3RlIGVuY3J5cHRpb24gbWluZXIga2V5MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwcgCBvdNmMdRWL8EumX/yK6XE9FaYReKryvCrSgAusLjUnyUbQIpOEunrAEjnh6YkpOU4strZ9GWy5PFFaLaFBg==" + "data": "base64:AQAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGzKiP////8AAAAALP7nUWbtq5mkU8PJagtvBEFW7WhN5W4BD+D537ZA7FiBkBPpkCiHNxlJuc9ZO/a+ghNLhHx6TZiRyMeI25KvbEo7l7vHSho+4EhdW1cH+6Klj/B28lcMyZFfE5gyf0QysEi8S8o0M6D9lq2ImFNReGvD+3FeYaqZoB8e7x+w/AMQ4M/XOccP7zsEk/cEllrPb1aA6+HWJWV5xNdbICn+tT6OPFgyU0YtGScLliIvGE+VWivXzDXSa/LJxALpt7D7LGJooTlnpZUUrumI42ZzFozzFgcOD4TNPwVPBqbxwS1iEwX4zgNpWYzz9g73HN1M3di+YrEj77jPYu+G2EVLETamk6Prian5YqCTu2QlKOQ0zw1s7AjF8Xn8oGp95SlvQ6RfD1GWYJ/Gd9RdQvuW29gXkf0gj5yFCz7t1sXReuZdieorAnPJDAKjx8mDMLa/4lDgYrMBQh720KpmebpQ1tjnJ4oYT/v7lAt/3xd8BrOYL6lcnKGGIjn9JraiHEASD444NoBn/sVwJnhrU6y4wDK2hlV0dw2BnjGxO12TJ9BK07Nu6j7IUSniE204kMdQq4N9ktbUTUXRyUBZlEXHHJRFR1TAEZWmmrE1eQoFf6FvUM4yGFU/u0lyb24gRmlzaCBub3RlIGVuY3J5cHRpb24gbWluZXIga2V5MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwH+OP87ZiBtuYolcP/OM7ei1zmzRDuiZeo4b/OlJniSdKh7yIBw5oxGmTK05lletyCcwH3ZsqvYFzvMSfqkhZBg==" } ] }, { "header": { "sequence": 4, - "previousBlockHash": "768179BF62C4DBE74BEA3105786B89A4B40C99901160ABA05CBE1BA7E11EAC72", + "previousBlockHash": "3902C4DEED8CE0779B9593881313EA415C6045689E393C7FF48F89BF99E1286D", "noteCommitment": { "type": "Buffer", - "data": "base64:CF9iFqU5jwpMvS+KdS3XaESlaSZGWCLmckbOES8HAV8=" + "data": "base64:HRNdN/zFU4gTok/53UxIdDrerhyPQdQ/S5RNIeA0i2w=" }, "transactionCommitment": { "type": "Buffer", - "data": "base64:7VYUvuwCewpw7jJimtDajKdrwh3LyfG0D5DVMQxxpbg=" + "data": "base64:c7DLU9hpewxVQssiXSBU1Kh0klbobna168GKIp5niyU=" }, "target": "9228823284279306817296266184515742822248210830185427859262273659833347", "randomness": "0", - "timestamp": 1717538235224, + "timestamp": 1733981051967, "graffiti": "0000000000000000000000000000000000000000000000000000000000000000", "noteSize": 6, "work": "0" @@ -432,25 +510,25 @@ "transactions": [ { "type": "Buffer", - "data": "base64:AQAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGzKiP////8AAAAAzKH3q6cs13Vb6U8jmagoNxj4NzRJcWHumT7XeGfXYKasiSONLTEATpsrd6WFHRkYivxXGwDWON11BFrQUvnRorv6kilAEYaT6NELYqVMlqGEb19euRcI3RVVhsV9dE6B3x9TEwXXK4CSnXTbqc00PwfyWjsAVAs7sSeD8lpf3sEXPwjl8maBwVTLa9ofkX2devcXuhOnvFVUiDK6Qbg0iIUb+6KTsfa+ahSOXx7Pk5Cy/c+/c3UcUDrsUwoTk0ps7YcrdQRwOc7imlQ9mf8i9SfcJqiBQ4PtcMzoMNjcpw5qSlyCn6Mmxy8xxoqtKm43Am+ySu3D0JW4N9P8UskE11Ecj0qbnEhCHYdh+tNmsu3/iCzIlO3siOGy3g4FrJhXU1527zPP7Km+AR0UmKQJQBD8JORPo1YttQHsMjVe8dNPloJ4C3gVj59pA+9KSrhNyPdyg+QrsNLdrGb/LRMFrET9vOl/cRtIrjnRHGH5HhkIfYvxuoukCQ9+Xncs4gqv0GsxcPio8S0RiZ0/Qx/eGgEhH34xo3z4u/M+KTOQL5ABtBoI4WHjk6NSAz/5DB5tVPLo11E9ncizK4pRKS2/UD02bM9uYaMybzGb0AjVqP/nRAgIlhEZp0lyb24gRmlzaCBub3RlIGVuY3J5cHRpb24gbWluZXIga2V5MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwUYZyK5JxKjOG6mG1493XwBk6D97vexxJBp+wS0xL69Js8QticvxmGoirveOLzNQJIJM8eAu39vAb8kc5UJNnDA==" + "data": "base64:AQAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGzKiP////8AAAAACFw1grwcgXwttgBqravFTPDQmkoZ6KbxktS3k6RzWyCPeEiARl+/wt+GnK4xM6bU+9i/doXc75u5d1zVPGdSRaGdf+/iFG45iQADyneDCX+OPAtABJA2SkGkBYiUWahA2e1dkWrpT0u0gGNYaWBl1g9JEbDqT5WdN1oT3MVFttMGMvW2EZysg6EWcALEC2wfOhHfsLmEGWqoH99uDoWaIc5fO1n7BYYq7iH9jcu5bseub5QtvpZAvZyTZhQksmjkzhGmlFApH697nWkxAviDdRHlLLbc4eiYPh45kYq2ODfOMwoWvacYIO7SzR5ck8iEcwYHv3B3u21tCPQ68Ru3ao9R/iTfoCizz3U5ReXAYmWC4KizvIlsbYDYb6XRHy9hSq70UFY2YYG1UPYRjz2TiaiVChWkUyE9HODVdHWTGziT0yPg6WB5ntKjyZjMYMkyDoYrBpzoAXQOD+Ql9h4vh8n4mEX4QwE5V/2mCxjwbvKNdaWw/OXYq2PKnTPKSb50pfh/WEbP4+kZ2aeK0GEbRo7n9Gd0F8rBF5U2os/Zug5OvqhLBLzwKB4khDbE0L2ayr9micnipNckC6zC0oBufMShpj80K8haC7KEfA74K8pv4EXoora5sElyb24gRmlzaCBub3RlIGVuY3J5cHRpb24gbWluZXIga2V5MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwSX5V7xmgtx5FcWzjz7idmGU+OR1m47o92dIsAyWJ6GJm8UaF6r/u4umHDb84v5SFKNaiSNHnuNE/dW0nr018Dg==" } ] }, { "header": { "sequence": 5, - "previousBlockHash": "47DCB21B27BD51E82C7ECDD4DEDAEF855F8796A578F7CE06CCE315351B264478", + "previousBlockHash": "07FACA27DCC4267E307CFA58381D394D77D72670CF94F7167A93282C6B5F76D1", "noteCommitment": { "type": "Buffer", - "data": "base64:vcclZKJ77CAx5Ade/any4o6NZnr6gvxqyk5x5qJbqnI=" + "data": "base64:B3l1fXEos1cWQB0raaT/dyQ4mrYEFjP1anvFXb/D4RY=" }, "transactionCommitment": { "type": "Buffer", - "data": "base64:Hp/Y+ZUJpTi2E1ZmRr1ZKBAOe5niWDBmlgSI9PV3Vjc=" + "data": "base64:p8VsDyOvmCKSBlvZS3UNoWxxAuu/7b+1M7EjRIC0hVU=" }, "target": "9201866281654531936596795386791503876274441021197252859723586932895305", "randomness": "0", - "timestamp": 1717538236636, + "timestamp": 1733981052226, "graffiti": "0000000000000000000000000000000000000000000000000000000000000000", "noteSize": 7, "work": "0" @@ -458,7 +536,7 @@ "transactions": [ { "type": "Buffer", - "data": "base64:AQAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGzKiP////8AAAAAZvUOTp67Q8uT9rouixTClTysHqPXI9JZ7ft9OMZtgSyymubbOYrJl48+WbYeG7bUTkpbd6CUJpDcrBAIATFovd1Zq8tZnSVDWspCJNHt0WiEy+NDQR5claYWof3YHE63QeEuzDT2UnGy5WtA98EzOqIkge2bpPmPanigMcwyGM8YDE4ybN8K1R9wP3RVFcyF/R3iz8HR4HPJgiKCJ5osHixTieMC4WbT3q4o/I4+TRq0THeyb3w6Tvi1mLOgV6pYZYLhX9XrWOXfeSduMGuLogN62CB5xyS22PgqWGaa9D1bsqIBdEP0xp6cpaO4xskX/TKaUrgnRmhCg7QzdppF7zptQzAJb3VtVwm+FUJRVqBxrEUst4SJByUQSq2HO6thkKql69fhES0sdpZxY5KyitCL6DVK25n+rt2OrsbdkSVELKsFkGcvO6q6MqXaZgEwi5M65RKoUMNIcYwdeYQsGLLboP1Hq7ELsixigVqK52BssjeAUKqprO6oUzFFRZH83DOSMaRKrLf8HonRofE0oynQNfb1z8V6VW+xhEMNiZ2EWxTarqUY3wOZSiUmqo01dhC3u8dLn+B4LAe1OcjA6LpjVcBsQl1OTVM6fasu4VIfRpQD5kfA20lyb24gRmlzaCBub3RlIGVuY3J5cHRpb24gbWluZXIga2V5MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwvpH8HhDvJLx4Ag/G03f2WThDDYIXCyjdBjFl/nBhJgFo9ZwlEJDEEpBSwD4dngc3EqIDnpfasjOG+k5adE5yBQ==" + "data": "base64:AQAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGzKiP////8AAAAAVXdFND/dXr5ixnF7p/ZSdY69KrLsh8jRrVCBLABIRCiXH0oUELyjZTZAhYPXB6wCCnpLYNO7UETsyqH3qUSdO94ojtQZjOQ4Pn02vvLSK/iSHMHjcrkIluxEE9dskbzGTYaBe0OlfGTq7fbGlsFMcgWXi7BZdMSQmzYEzjx6lHYXU5H9MFuCxID7eg8RUR2hYDPOft78MtjleYNmzoHWH/OUQf6dcyxvAu1c2XGMviulyth0EwYdQOMkCkAk4b7LIRLJy02AarlinM0aZ78SMPSQAiA9bXjytCvT/cQtbJ5b0bZfVhVsntvdwwAteJk73fGhR0dmoUaZIGb/PXxQKTleXLbzqJD3fIOBzFpIEHlroHrdqq43unv2hvnhFf9w4wYS1eTftU5fECwJH53ogApZgnoJN54bTm6Q5G5vvFLnUPdIw+4npYvYos2erlmRgUqGMY6B0pTmw0O8yHvE4zMK3tgjOolYhLDvx6lwWIuGf5gdLerhRmra+jl1/mp1W397FrknNG7svhCcHgfCqgW4yxM92XcNdB+TF2vrj4bqsUejMoekce1+cS7QGuIgUuMMJA6WFcpw6zwQ0tqk0MzWv9bnH+GsQx7d75oCbaJKKo6og6eex0lyb24gRmlzaCBub3RlIGVuY3J5cHRpb24gbWluZXIga2V5MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwnuRS8CmMOW/RKdEeyM2upQDCcHKQrrf/w1HI5mZLg0ydMdjm5YptElAkq3nLYp+NU8zPVwuVwjOnWp7JSv4BDA==" } ] } @@ -466,23 +544,25 @@ "WalletDB loadDecryptedNotes loads decrypted notes less than a given key": [ { "value": { + "encrypted": false, "version": 4, - "id": "53b08b79-580c-40af-80ff-e9704b263b6b", + "id": "08e4119e-1b0a-4157-82ca-dad1257b1bf6", "name": "test", - "spendingKey": "95612b053a876b3e146230560b620ec4d5e238cf083dddd76828c57f73b3e336", - "viewKey": "f49dd267942ca21934f08e92a51d1af0e8dbc6d6e73f1325bc5913535c9ff28a5fc4fe1cfb77b324800806e2401f864f79e9401d6e506f9093a6948d18a8743c", - "incomingViewKey": "a178913949a1ba9eb230948bcba5ee81e3300443ae8b8f57290f3592dc0aa703", - "outgoingViewKey": "6cc6b324db922e5e7feeb2de7b785a1e883a6282f232101578da354b74ccc32d", - "publicAddress": "a9a915c9c3969b6da27f23ba75b8e60a79ac8265c75b39784d6c8120fd3411e8", + "spendingKey": "e1ccbda33e4ae7f25c346c61de5b9faa9c99c4084c59f0c5c601ed2d2469789a", + "viewKey": "f35e84b643d453f9f6c56e91d659ec97444269bd604e4305d6860765fea4a30811d84c33e2a6411e378ff0e5bc2148ee58b572a2dbfb1ce79660054c85a4f602", + "incomingViewKey": "c8411e7084129efb1d58948f49adf2779cff72ed2417dd8c0fca5e33230c1a04", + "outgoingViewKey": "773e5a498a1a106dec774448c8349377034dd2af746a6423b3dfdd2d5decab12", + "publicAddress": "0ae81254e104d4689ea8489b74c1dac6192c9a15009a52d79eca66c2c748e009", "createdAt": { + "sequence": 1, "hash": { "type": "Buffer", - "data": "base64:R5HXrp+X3xAO8VWOhHctagm0N2I4goP3XG8goyqIqoY=" - }, - "sequence": 1 + "data": "base64:AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=" + } }, "scanningEnabled": true, - "proofAuthorizingKey": "363eb2503a6d05f3049ccc448b5696b786ccd617fc9076f7160a3e3fde0c2f0d" + "proofAuthorizingKey": "c6a3bc510c64cb33447ff4be9633a7ca4ef6004b2dfcd82b1618436f88456909", + "isLedger": false }, "head": { "hash": { @@ -498,15 +578,15 @@ "previousBlockHash": "4791D7AE9F97DF100EF1558E84772D6A09B43762388283F75C6F20A32A88AA86", "noteCommitment": { "type": "Buffer", - "data": "base64:OIzQ2qTMqcGqNO76yAhu3QD8m9xTfUTPO5n4bx28VRA=" + "data": "base64:uLQY4ZsAjKh5PMbTJU+AJE7Lc7HmG+xT0lyCPMsRZSg=" }, "transactionCommitment": { "type": "Buffer", - "data": "base64:Fuv3X6b8NNU3AaWPs0GwnCP6YccJj4yy4kUVvoSCu+M=" + "data": "base64:f8VLvfJY5a26dSAsI6HNA4DccjNqKIshsC+Gck4Giic=" }, "target": "9282972777491357380673661573939192202192629606981189395159182914949423", "randomness": "0", - "timestamp": 1717538239548, + "timestamp": 1733981052717, "graffiti": "0000000000000000000000000000000000000000000000000000000000000000", "noteSize": 4, "work": "0" @@ -514,25 +594,25 @@ "transactions": [ { "type": "Buffer", - "data": "base64:AQAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGzKiP////8AAAAApgKCGCzbp8NjXX+1PXQzVPuaIvAQOtraW4fjJceLpqaVBHHtt6UctTtuBaiOBQMadO/vUl7jkuEPnIp/7a9D1fj9bZDdY39D2+vbHEP8MfqoH3GSexdXPt8Nu4eROMCQhyJvjAFyEmAtvge/x6gIir/9F1sV1718XLtokozUp4gW4FTvaMkff7Oqb1A+s7lvkPMjDHa7abFVlBbJQKW52Bp/obo7yohPnblEYskg6OaTs6wlmBnyLc5yOeFkLJ3GTzo74ifbxMH3pDC+9+ZNOZVyBjAZf/RD2E7vKSRVYuq5GaUoP28R5yy8gHutElJGdf8NtKy6tpaU1cN1ArHE1sxPHFdOruHobkQ31pmaAWTE2OHmzPuHKUMxmjw91slXXSmRoc++UvL5noGAjLfxtWWDTDkrDjRgLNoCUgxrK1xNQM6K6vHoGJYnuYCXd7uKlgS6uYFF+tpd2ewf4VpOu5YqmpT/AZUpVYTQ0gXMQseKb8ZZ95RYOO4i7Xz6iO+JSsTBh3gOCabChU1I952EpgEEcYdT+6McoY3fXmXjBZhoFThQnU79eUqaICH6l0HNyO2pVTiunqCw0z5PhK57A6+bglCmTEcjYRx5UkVvviT3uPzNXKWZPklyb24gRmlzaCBub3RlIGVuY3J5cHRpb24gbWluZXIga2V5MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwA/N2PcqNkknDaZTIinEZw7zrzcA7ENSGLvs6NVdzMQOJPNxpxdEGbuDrT+fwauJYLWG0ZuGGcItLbsOzOvWRBA==" + "data": "base64:AQAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGzKiP////8AAAAAG5NJoysxvz29AnXFOGP648qwTJzi71Zmep6riPVj6TiJjmbaMMQOSyy8uyNhuEFYLg15bwZXQhNF1GPsfAeMn8eGuClTgyf6XbAqDEi2JfyH5T2vbOnajI2nny/nbiVX+qOxpmeWjxS2BaguMybiC1fQX6UBjSsa5z2ovD+Pc+kSDF7xYS4231QQtuCyaDn2d8tIo1IaAduhxCWL+AHrx0Mco6fntbuH/sgis4P/GTGF7FWDFj6Z0IZ2z6RvR7E0PlCGoGi+1hAwka9skweT/jlBqj8rhu27wtaEVEuN5ujUdgCQ0vYKpohtiw8H7Ucr4a/Gss0OSh2cC6N/Iks2wt1mZNqkwRKgR6D6y46ekjaWx8RCfVlwBhewz6ofrwpH17WFS2JgfWuo9uNAOCYtv5zNrFHZYyAOFvZ5g0l649rbyjbdPVWMbL552ORURdk9/yMcu40IPMOr4x4J0H2QyR7DrSL/Gi8f6zB2DwlKVItZFkqkVuvd9W+A9NuNZjo5UT5x4JfxCTqkG1ghrDDrpH/vfco87v+c8S0PzNjIpvbfCF4NxmMx8qEvD1RFaedQHCzr4lTC/G3kQKi1+AsForEZmn6wX8i2gdujCCVeppjr/WOpPJi/iUlyb24gRmlzaCBub3RlIGVuY3J5cHRpb24gbWluZXIga2V5MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwhcxNIBXCGldlCzQ+rbBET+Wq3Syk0yx0yzjF0zJlcJ257Xq+F2oBjdeZOLfzeB34E4Jsxr4J0jLRGrSKJQcsDg==" } ] }, { "header": { "sequence": 3, - "previousBlockHash": "3AD0FAC4C86604C6E2E5AAB0CFA5368E2CFC4EA5BB75770C40387BC204AB5A4F", + "previousBlockHash": "A4D2B5A6C2615D8939A584D3703F68360C2DABB143662629B9077E12319DBFE7", "noteCommitment": { "type": "Buffer", - "data": "base64:UJzcPhE6n6psN4HyHpPOcFzPBtBHHEPxHfIgG1GNBFc=" + "data": "base64:4WR67vVvjchA7TOP35DSmelhunryLzkzrlRBbFiW4k0=" }, "transactionCommitment": { "type": "Buffer", - "data": "base64:dquyMYaCacQLWIU3EW6SwrKBK6IzkJtgDNQp9EjXdMw=" + "data": "base64:oT8M7a+OHwDML0DwRA7h/bC/fYyYdrPKRVhuP7HjA9c=" }, "target": "9255858786337818395603165512831024101510453493377417362192396248796027", "randomness": "0", - "timestamp": 1717538241285, + "timestamp": 1733981052973, "graffiti": "0000000000000000000000000000000000000000000000000000000000000000", "noteSize": 5, "work": "0" @@ -540,25 +620,25 @@ "transactions": [ { "type": "Buffer", - "data": "base64:AQAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGzKiP////8AAAAA7yZWx73uhu2tn4jgUH8COxz9wvH+/KCTysC2egTjSBWAmvXxTVT2XhxC8CvegpME7qCitbmkc+Wq7a4Z8c634oYPsW6StC5H4b5UX1qO1RSB9dhOAT9+J2MG8Q7LRS3UxoNBJBBHqEcC0qo3JzYTrrErVbQ0dsnvmfTXYB2cdTkUsRdceQZwKE3K7s5gVruDv773g7FOQmRUw6XMoCHoLUIBQJMJWWgJfm/kfbiK5NGy583OP3qTHHJEsQUoVOt4vZodHXVfzRC7zILJ8UlHZMW+/F5qxHuZKBpsHlmEoTF9CXFcRYXUCU+sFDmkKsqRFPAK4iTCjVaZpBPa//AW70f8P4lFLyGx1aQP6a3K8WYN2zqjOFKzqvooAn4hyF4iVnTymf+hK2vpnFM+cZs78DNnJqe2rrINqc1D0W7+vzlTVZO8hkFl3ReLBa9bY5La8pkAqAm1zLOez7d2b4uWyxlYyDLaGc8Hj8gl1346PloKDgzYHMuix4ZbMin16MOO6jn9U1rC43T+x1YCtXKZLifCMB8BTLS/XgLwp1D/Kc83P3CPYYZjtJMe2Y72MWVk/8bwUfKpwgH2TJSTVNSPwDfiuq7aSggBWON9jhAOmqCRe0Q7ddt7RUlyb24gRmlzaCBub3RlIGVuY3J5cHRpb24gbWluZXIga2V5MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw2Wy3PumMzXTRd+7vNbiTgZTH6jX9olVeiawy7MTmWLdK6xR8nOePPR7zhSlyMkBnTjMl7p301khAG8DfKl61Cg==" + "data": "base64:AQAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGzKiP////8AAAAAXnJVmalApR0dEW2eFDw+8RWJNQGVHUXM/ELEXE69ph+rg5l5ZnoHy+9fd8pxiuNoxRrfGOCoWQY/IkAT6f/D1mAYN2+btpW4vYsibVWZb1WqiI2h4SEG7PLfo2vZy6Z7qU6iaR1BJcF2m4O2uMDt+oqzmRfs9uevh/UCUSqp980ZCXAOu/FZjIyHSownv9WXPc72sv0mw7ZwY6gEJOZeyC9TYh4aEGCyo8LP5dwKcSyVbM5c1JjuDFxLMWN0Cp9yvmekVZmUfhUr2Theb+JXvuTuyGY63yCasrrdtyooGz7U3+l8O79Qn+xku8gGL6DEsEi+HWZaxskCK7Mjvy3RGkOUm0ZgHOx4a4Wa8atOg59vCp9TamCG/NHbJT9MW/Nbl65+XZKtWwVIb6+fpqVQDvip13Ga+tCxjiuaX1q+hUwqOHi0poJtJGDVOcl5L6B7rnHfibv2t0v3ZjUqoPhH1aq4bVzL/jpH2fN4zMlfQImoEPNHihrECU/mfMLtHqA+cZU1Y5XK3TKNntgctQ/HTFe+JMahvdm0KqR3ukT6AXwkeSgn2tnEjE4EYCnFBSOj3w7FP/PI21XvpFwnTdp8+G5U5lT390LLwoWUqsHpSmwuNYU5bxZ/tUlyb24gRmlzaCBub3RlIGVuY3J5cHRpb24gbWluZXIga2V5MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw1VWSJ/Fepbr/go165esyXlk2SmU1LU4L40BSHfyDLZyRdnJaTdjzbmBZbMURLb5w8EO15fFWUyeZkkArUy87BQ==" } ] }, { "header": { "sequence": 4, - "previousBlockHash": "907DC3B818691446AEF865AFC49102C503437D4AA16C08777EF23FC5C306433E", + "previousBlockHash": "BF648A8174FD8C2AC5BD28AFC2A82CE5D197DDDAC7A40E9A6CC04C2E85C18AA9", "noteCommitment": { "type": "Buffer", - "data": "base64:OhF1uwW4XsI2fJqSJLXYdfr/7FGQhbyJLDJC/3T9jDc=" + "data": "base64:ajsSgmiUXYYjk/taNyKd2ReMQUifTal4aEu7Zx49FWY=" }, "transactionCommitment": { "type": "Buffer", - "data": "base64:KaNPYkFWaHJaUdBpM1pkcfZPspxn+7kiz/c/5ltCrRc=" + "data": "base64:qY60+0rpqDjWlKNQScyPv9OOdq+bTgENsyVZx0Bmzhk=" }, "target": "9228823284279306817296266184515742822248210830185427859262273659833347", "randomness": "0", - "timestamp": 1717538243080, + "timestamp": 1733981053230, "graffiti": "0000000000000000000000000000000000000000000000000000000000000000", "noteSize": 6, "work": "0" @@ -566,25 +646,25 @@ "transactions": [ { "type": "Buffer", - "data": "base64:AQAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGzKiP////8AAAAAxa/kbWdDOoNL+W7K02GBsCvCZpzlwrFkx8VJONv4Qh+F3P9ktv2DTiRSlx9ygc5UazE7iI+sfOJsTV2Ht0AvlJpRIQ1+CqaNxVRT7FyOMD6sZY+t62pupqsfc63oNvqKeughvBiRgqEaWF3fatOMWo6hx4Z45o1kVBZspfNuUBQTr3T4nX/jSEwdvDUTB+ksn4h9zJECF7XIN7NnDb4s32iSt+BcHytOZxAe+3ueKbyQZvQZHhmpAEmVNYsOcjC6maJf0Mi8pgECpV/ovT3kqgztgGDfpwtFJ91ZYW4JUf3FUEakSRtmy5GNh48v7OWSpAGZo6xHPgf7nCbme4vPW5jW4r8ul4cy9qwL4CTcqUv8hNrMiOp+A4WA4QXtYRlzRqj4Qgjh3Zf+f3UK5KpWgcwybkR/jspWJJ6njW9xQctSnK+55FN2RtyB7/b/zgWO2qDwqk2gqc4UqtD9u185WABSwrzMZe4z7hbZyuoq0eetZgEEUyGzqL54YfCB26Jdghh6wuMgEaXxjjpX5QyyMe7JQgZISimhgvAaxznPVM49saIRsKCBLvjr3loLUpQQszGAHlU4LUn4jHudwhZ98vtnHLDYWc9qNlw6K0UBLtmElXb9mhX6iUlyb24gRmlzaCBub3RlIGVuY3J5cHRpb24gbWluZXIga2V5MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwVJGqG9gSVPbz17HMNt6iZk0GKBz2WmiAlyylTFa6s7Nqkuh1rbsenaNB38j6YpPVUR5L4T6epgBXlVnaDgxRBQ==" + "data": "base64:AQAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGzKiP////8AAAAAKybItZcTPjvpa/Fmc8NoqMOu08Wx7NTgblhiIqaBquyimdrCdtokbi0NiuhJeT0T2QeJX2C6SUdFOzTGDneOH65YtCfPwVW+kJCpmTy77eqxaEdIZJ35aufn1GYL/j283PLgtC9ZmU198z+aVSQu7N85gSI834ygZIoWeed0RPQHzkyL/f6D9S4xiMD2Umv1ES/eBn9c79KkcgelI7HoVs3V3HXPSEJfNnrpZxcn7J2DcQ4x1Hatyg5K7i2jX1tnkllGdu3iSBkgz3CDt/BQTidyNFQLOLAwMwKfkceZE+5v1kYmnswzoo5gzmQ5yHk7jY//hTC39/c/rNRgs9UJY8KUA6j7VPkvPPaOvYqOnaJ1ljD9xMD4LJ/oTTJrdGMBh3nmKa4X/oAdz7VkNDXEb2+uspiaGyCnJn9z3/z7ENPWmdpQ9UGetatAH+FHq0WEhjg9ynq4uxM7UhW1cncfiAZcSfPUeIFbotlmALYtE5PN5QTgH/wy0r04MJ7us5ZgKklNbDBlR/9nGxqkYC0kVZ4ynv97kN7523SPtcx1D8AEmj/C6cBzP1bJVGWdhTL/FMCrovZL/ZvnyH5NyLpJ8J+IflBM2xn8gbt2mTwbauamMJV5QmJqvklyb24gRmlzaCBub3RlIGVuY3J5cHRpb24gbWluZXIga2V5MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwU/XI5LFRUJs2fPx4ZkgACCaCtoqtbfQEutUb1Opvyg/M9rK/XbtUOZSXUYMErU7u5xWjS4IfA5UkozIxbBF3DA==" } ] }, { "header": { "sequence": 5, - "previousBlockHash": "78A46173A8E8A3E1F862392337D0A28A4AE066F1663770DCEF9EF2956F86174F", + "previousBlockHash": "B029566D7C56F5972E05DCCE5148E70EEA8E8BF025EA28EA0B44BD35A59272D6", "noteCommitment": { "type": "Buffer", - "data": "base64:lKi7wMZTC97xqH7jJjnIixjdvj6erNdH+yNdyQ/88yg=" + "data": "base64:t3nctmPxq3FBoOolcLhZOWothGqtG0RHAmF830q1MEE=" }, "transactionCommitment": { "type": "Buffer", - "data": "base64:dz2Km22U0V85OXmzXWwN3J5qLP8yFNqbLirLfO6W1Rg=" + "data": "base64:KKhW1Hd9pa95mt7t/XRW0Q9dh2AifpJz5KpLSF99pis=" }, "target": "9201866281654531936596795386791503876274441021197252859723586932895305", "randomness": "0", - "timestamp": 1717538245491, + "timestamp": 1733981053492, "graffiti": "0000000000000000000000000000000000000000000000000000000000000000", "noteSize": 7, "work": "0" @@ -592,31 +672,97 @@ "transactions": [ { "type": "Buffer", - "data": "base64:AQAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGzKiP////8AAAAAzJrkBVhyYklF79qa7dcpCcfHYob0llsmyrr1nGt6b8uB6eVTF5xmbIb19iXaXrz/FboExnoBwU1VNvzpkikHm5YF7GSOhdQcMnqdC+FTMaquXrHJEzOhAzT1+H9ChFsTMAnjULKiFSeiVMGI/cOUhB+hfQt/tHaE1x+svoAmJXgYcVVGzhk0vUENVtGBmiEgEeL2bQX5/w60Oqv02QGfpGZxAlG24Q12y86lQKS6swWOmngzUsUfRawooD6di7CaPNwQWjlnGunpSF7Hc+YMY3/J5PBOIN4ShsZRCOVA43ygnhscP/iwDZO1F+vFcY8UjodVwTDfhx7KOrLn2LvF8CcJildQfFQ2IDGpL/Wb2+GL0kTet0Tu4ctbpbrfLRhytI9Ap+fWhQJ8Qt5iOEHnBYV++5bvxCn4BET32vHBp6u2gzQ14/wTa09E/LhQlVPJl+3BWbUs5pFvqbaoVqjtJu4YYMyf//PQX8BG9ccRj9h7fbXCRvxfCHEO+xjLOAfsCDCbnnXb9JiUqS5DK/kmzX7lS2KOGrIyEPcl3mjuR0Z8cnzTyao36MHppa21A8mu3hV++wV2mimYmhNZtIkTlU0shan383Ue+Qnr6ERv6PU58Mtuqmvf9Ulyb24gRmlzaCBub3RlIGVuY3J5cHRpb24gbWluZXIga2V5MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwptFVUAEDnHkHMO9jlthE5LMPvtPpcg8P0EujjgfEuTxzljH5F5oHtrD/CgjhMDjQhKo0MDLkOU/nYVohklx5CQ==" + "data": "base64:AQAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGzKiP////8AAAAASKw53wNnqUEuEHFm9el4eZjwm3nsqqH+OzTKcXchKRSJPxiXuwiMed7NTUznl+JoFdinubblSH9ETZwmy+ZdSgxuCztMy0B6mIvEy9hpayisRt6Mm9dmDK1oHTsERmgQXbujsaVnj2eA5Rql0lr91E2sUiNBQTdPXYSKo7qOg+8ED3uej0qOzH2jh1d2NbU7+TNzQyKasi1LaYnHsbKWebLu18DOOsQqp2xnk8ew2DiBBCJ4/YDYs/2+Gs41Ci1tZ7oc9HBsa1WzkJvfKQWk9nRwAHEhNWtNKOLtFk3sCNklHFlB+CwfppqLOqwIgM+j2v018bRxrmElpVhLRLsVYNzoZFao9uNCBkQMIwUG/+Hh1vMLcRXmUpusxMN5aR08W3tCQ5PI5ZRY2zzFvihYkwTyY74RYYqTxJRS9GgZhq6VB6kYU/7fRCS2CO44CYzznrh9HNrqu+tpt8yu/2Il2gFS2E6H7bIb5vcLmAPMw3eS1vKV1Ld83mfrltrK1TLB6aMpRLVXB3ios5tKCA+l+zfK/PGz9yD9w/ypOl2UKfYLxIsXFYQfc7ugtLJL/Pe7G5qeLKHEqzKFVLw9twpic7TtKXYXA+C8fZP0rAXiF5Nidcbvkf3c2klyb24gRmlzaCBub3RlIGVuY3J5cHRpb24gbWluZXIga2V5MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwEGY43/ZWycrN0FVlUq+Uyqu2zaSbf3257eInyssTKcSa3PlO4X7BgoHpRrcRKfb4WHsdybdOVcKHKS6ik5apAw==" } ] } ], + "WalletDB loadNoteHash loads the hash of a note given its nullifier": [ + { + "value": { + "encrypted": false, + "version": 4, + "id": "94339452-169d-45ef-9bf7-3cdbc86f7b53", + "name": "test", + "spendingKey": "7f3ee34e929702f26f103ff8070e3a92cf36893fd4c43b3ccc4bc4a2c6e6e710", + "viewKey": "195085af5325502b608cd2d3c29cb8e8941379e27311c484dc2581154a1b900c1d14e5e2870ec02d6c2066d8576b69ca052e345153bac0bf5a83f833b12bd188", + "incomingViewKey": "4c80e5e8342f9fc630c1d6380456f04069b0a85cce84bb74761afb57930fd201", + "outgoingViewKey": "84d58accf2b8bfd88de1c818c905c7d34c63a0020f260e0d2cb33616acaa55c2", + "publicAddress": "ab3732b0f70e504b8ea4ae4a6dda843fab3d29c55ebd50f18066199ab6bbec21", + "createdAt": { + "sequence": 1, + "hash": { + "type": "Buffer", + "data": "base64:AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=" + } + }, + "scanningEnabled": true, + "proofAuthorizingKey": "c4064de4d6f75004c843533635c1846a97e1a62a5f2d19e4aebd7ac8c2ac5c07", + "isLedger": false + }, + "head": { + "hash": { + "type": "Buffer", + "data": "base64:R5HXrp+X3xAO8VWOhHctagm0N2I4goP3XG8goyqIqoY=" + }, + "sequence": 1 + } + } + ], + "WalletDB loadNoteHash avoids hitting the database if the nullifier is known to be not present": [ + { + "value": { + "encrypted": false, + "version": 4, + "id": "74f90190-7342-456b-98fa-b260179290b5", + "name": "test", + "spendingKey": "3d38895de3403507e0898abecec203237dd6ac8d40d4439602cdfd2da7946988", + "viewKey": "d4d9eebb473899cd732b0d3dee9cde055c824bd903b8f043292f31b2ec82c41077c8a88182e573d1cd00746f4cb464aed215815d151d0e927b0c916ac4d5afde", + "incomingViewKey": "36e8b2ad865223d6d1e298af6dc43941bec14c0a222e168a55b536cb57fa6102", + "outgoingViewKey": "cd11683dbe990364a098df88c8bfb272f915c652acab576bd26663e2e6a3e652", + "publicAddress": "a44babfe786ea124dfec814d5a52b55c07d672730eb77fae80747151ffd9c5bf", + "createdAt": { + "sequence": 1, + "hash": { + "type": "Buffer", + "data": "base64:AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=" + } + }, + "scanningEnabled": true, + "proofAuthorizingKey": "3823f852d4ce5ad67ad36789eac62b443b8394d8f68c626eaf0d3e5e01f6b40c", + "isLedger": false + }, + "head": { + "hash": { + "type": "Buffer", + "data": "base64:R5HXrp+X3xAO8VWOhHctagm0N2I4goP3XG8goyqIqoY=" + }, + "sequence": 1 + } + } + ], "WalletDB loadTransactions loads transactions within a given key range": [ { "value": { + "encrypted": false, "version": 4, - "id": "9ae5e497-933a-4977-a15c-49c2f68501b4", + "id": "fcedbe45-755f-4b2c-92e7-ecb511d42047", "name": "test", - "spendingKey": "642c3cf06ed7d0d0f85eb2f6ecafb78b61dfdc5ffd85d127f0bc3cf7a6ac6cd6", - "viewKey": "09987512e7a3c140c5fa8c849f8d7e7b18b3e3646d98f19bbd25bbbeb0aa26a0c5b20be3ce2ab0c93a7e9ce0b6c806729e7bf858d927b4a40dc26e2b59926908", - "incomingViewKey": "c62534d44edc5239875e160fc2d4fd6a8f6e843c1114e49ce20675b089552900", - "outgoingViewKey": "3ca324b9bcffcbb6be6ce16bd658075828d17ebd04af239beaf7abd3e9e38f09", - "publicAddress": "5f8b3902b7d4fb1e3673fbc7263a391bea92b8967924075ce36b08a57c461b4b", + "spendingKey": "1d5f1b6e6ed6a64b53cc389a64da04060bb71b8a4c59d76e002be68e18c6c06f", + "viewKey": "677c537d3b9a842d8e7baf9dafd28f0efe5bbad8f33f12e764f53a584114be033f0bdcec07eaa27576550cb18d50636f6dd02c4d566413005bb37c3564032d36", + "incomingViewKey": "b77ca1a8b7c8428eb8f17ab5cabd618f55dfd81dbc20777a4f5f9418848c0205", + "outgoingViewKey": "ab45256cfda97b4e70253646305f153f8e60822b89d641537e3f05fc2274d426", + "publicAddress": "6ae0217b241f8dc89914715c925c4e25f2cc7fe3c17ad90f00df368a22dbf5e8", "createdAt": { + "sequence": 1, "hash": { "type": "Buffer", - "data": "base64:R5HXrp+X3xAO8VWOhHctagm0N2I4goP3XG8goyqIqoY=" - }, - "sequence": 1 + "data": "base64:AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=" + } }, "scanningEnabled": true, - "proofAuthorizingKey": "b0211a2643adac73b56c076fcba022fc675b90fcbc9e8f9ef527ca384b3ede0d" + "proofAuthorizingKey": "013e7d4c889dcc58ba9341c556d65735efb2b18bd950e70055cea9f737c9e001", + "isLedger": false }, "head": { "hash": { @@ -632,15 +778,15 @@ "previousBlockHash": "4791D7AE9F97DF100EF1558E84772D6A09B43762388283F75C6F20A32A88AA86", "noteCommitment": { "type": "Buffer", - "data": "base64:y23aS4MudM2gRv5ck5TNjY0ZQ8FCvwjUKiT+Bg+e7Go=" + "data": "base64:xc86TToeU+nzrwc4zkgFTsisGtpTSvVKoGaiB4R/x04=" }, "transactionCommitment": { "type": "Buffer", - "data": "base64:lg++eZlQpGg2cuUSfr4CAavGH9uT2+S/GlFIld0EGiU=" + "data": "base64:Q0IUBkO+XTZkUWwy9rp4gh9RgkYoaMIWxcM0zKtqP94=" }, "target": "9282972777491357380673661573939192202192629606981189395159182914949423", "randomness": "0", - "timestamp": 1717538248845, + "timestamp": 1733981054441, "graffiti": "0000000000000000000000000000000000000000000000000000000000000000", "noteSize": 4, "work": "0" @@ -648,25 +794,25 @@ "transactions": [ { "type": "Buffer", - "data": "base64:AQAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGzKiP////8AAAAASS+9d1gQOlu2axP3BkXoDYlHORcNmvrpfmeAb7WezJCIoR05wqMVteFfAbiMwVTI/viU22ZyOKIFT5xnGlM2jRJfVBWrlTTbJGAJ5jFAXR2RYO8Jqv3lrSW+xUSYfjg6di9RAIHDXEVsRhH4J3xYgq1s4Q6fqJN5zto+EVWGbA4RU4HO3oKj9DKNHHJ+jAARi8ggFwDA93YqYFzeQ+rKvTArhqqZxPD0HOQsqWEsw6iHY5ES8YGbom0yzW4q99IyV89UH2cERtKN0CJWpBiVqVBE6sJob8awPXpNqdkEPOrJRZiW3K+gHCrPyJ8uZTKt9kQC2gEtr5Lm9l57DRS/3GNO+v6kgBKTmGhWDZ9IiOv+fad84J1ecOo34xNPtI0nPD8gA+ahBu50YM5jfRyY54/nMPU/zJPVYvpsbtD1rwaETU/BZD2/Nx8IXFe7044x+MYgKMln4PrfF/kgFX5rFkoYNv2ib1gl8Gm3eT0Q92P6qHj5ke3oS9+/QZcU3tVUyzXRPg2KqNpsCPZ7VdlEKjIcL+9NlHooL4Ojyz9G7Q1/Ii4iWV+Ch4b6aeQkjTAmlqRWdMK7/bK+3ecuUiwQXmQacivcFAlituTnDwQc001wA0+vDGU/pUlyb24gRmlzaCBub3RlIGVuY3J5cHRpb24gbWluZXIga2V5MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw+CGP9qp0lIE7UyKjAjkjQ9E+rJjyH+vUN0vLnL/WqA0inG+L7TJglLyWukxNz2E68GObBJVrPn+LDHv5UZbgDQ==" + "data": "base64:AQAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGzKiP////8AAAAAeNUr8wcPkRqlQCSjUp/xm+38dkXDhPV5a9BwOOu+AEqFZ1QpAy9dL4F9mkAyObi9bqhw44d0iywxroBYFySYqMDEM2jC3fyoaV93j2ZIAymitrVPWW4AZFITPfvYFk+JU1eLKufIRyMcPCufYWqGWkqF5OVUFfywXSJaZ8h4TywCu1sWgR/bM6eZYFHoqBWpRDWSq0vw036xwUGQkttv3VxZN8PeDqpxC7kGgAKCzGCyHtVTBIRcg+20bHp99HV66/k7izVp6Nx5HO8vMbvqC1WenEX7s2taLdpWHNGvNFuYzCr8lpChWGy45gdTHIzo1XfkLo/jma36AEOiCx6VVVtYrSdAk5Qb0bdkqoyMWxgQKr2bYlRK8hrvXMZfsTM9lJnYZXKOWJqYn+Cro1k6gdwTQ7kXX/vRPh+myRKEL4XxR7mE8NvKhleCLD3YPMDLQHK7NhWJr/n2icby6ewmm4BOr7csCk8W8UbxOR3HjCUCa/AcHInFgqQbKdZAlVtmTL37zYmpRzxE4ffW60OTNb28lELkpcUuKNBURwoLEO48JC+2OZLMqpLfVsi4MnzAflir1smBXqVahgpEYsxq1YklxgmLa+J0QsJukk8zk1cVyzQh2aF7+Elyb24gRmlzaCBub3RlIGVuY3J5cHRpb24gbWluZXIga2V5MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwSjRCLAJ84CToYJ7+SkT6ZwmqObXGUKWe59Cq0DI7iwQDCutDdZJiUqFZHY4aqmlfxKOviv+/OQxTxvwV90iaAw==" } ] }, { "header": { "sequence": 3, - "previousBlockHash": "569B18B5A9665F78CBDAB8E8034B6335482E8C44143239D860BEC37E1725D66F", + "previousBlockHash": "D7AC6832F0EA2B2A546B03BF236CB77E201D800DBF9F42600287CD9B6712E59E", "noteCommitment": { "type": "Buffer", - "data": "base64:h/T4R0TX8a+8dXW/6MmU9ON2jHNvC0ekaVD+QbXC2kk=" + "data": "base64:7sYZwjOOULR1AavOOzHHzxOg/CFBIDEAKm23KkJjJCo=" }, "transactionCommitment": { "type": "Buffer", - "data": "base64:a/DYOQScfOT5NaNOTT8lojK6j/dLSKDjkzQnUFK8v4c=" + "data": "base64:EILXhyWoN6z1dBAKkbd+/koyYqMa9wXfuV6e6aJt1/g=" }, "target": "9255858786337818395603165512831024101510453493377417362192396248796027", "randomness": "0", - "timestamp": 1717538251237, + "timestamp": 1733981054690, "graffiti": "0000000000000000000000000000000000000000000000000000000000000000", "noteSize": 5, "work": "0" @@ -674,25 +820,25 @@ "transactions": [ { "type": "Buffer", - "data": "base64:AQAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGzKiP////8AAAAAt8bfa+6E8qxm69juScCfKdZemXoX3BL15si0slhMUCiEjnWTg6B2QsrzpEYrVNkTxfOFUrBIrNGbxbPe4cnUDaMKZ5hGWc+qjgajOrWwCWa53yC0yFT8sfq5FmTBFITX/Jrfn9wcPVvclVFvk0I6RwNMDcEjFujHUkBpAlAu0PsHkSiqzoulIRPPGYB/8Fx38UC1oUsuwx3nBXYiRoVPprbcWqH8ViIpj0e5yXvxD9KwvC3AmhA7cecRiXPA8myFoTA7gZR7Zrc9WoFgghElbxerkko8pr2CPBIUpDTubzU8jwyfKlJlQR5/50tVBaMeF/hRLNQ4ZqQApClNTXig8JOi6ulDTW1HRvn+VM+rEiJOPz+pTdahMtva7GUtZ2Ys0owvmEILMJdL125xXV6iVjaJJFyECbGhGmTZpsNRzzLT7uIhWM8bIv8ONPb1rrzxWTUN2FqVXCBtwF9RyMbIX9qV00IBfIDbxy0A1YNBeuag5b8ScmWFn3fmgxHqK7W1rKjg3vRfCiqBXqKSZrJ9Ebq+atCI5WkrVShXThJsJjNy6oyIQqXiuDlDZe78sf0Jnp+9gpAwQ6Pq7UkFfCUn2wc84/IBTklKrUDk33BcZ2G9Vs9WDRTmnklyb24gRmlzaCBub3RlIGVuY3J5cHRpb24gbWluZXIga2V5MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwUJfKl7ttvcHkClZ3M2O/iDBOz+d7FN4YcpIfg6S02AiUCouJQVUu9Y/A3+eH/ThD/+LvMwEk7AIzqNGHvJ1GDQ==" + "data": "base64:AQAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGzKiP////8AAAAA6peurX5iHlIaUfsx4CGQnqoCaWpaJIrV84Qn/Mgd7eWMoFr9IeBIZKXf/lTHxbytQGkCukxXX7nJ0ykmryo9tty20setpdLcXXgF1dnWMW+Xs8t2zE8NvM/1ueVlmAUjn223LfSFToLBHwFzHlV4dP3JRr4Rxm2rrlIqd2zEZW0PYOWkMzFNHZf2BMSxS0K/AQGVQgbrjgo/GVCkUUp9Mb30KA3Lue+VsIIp0+MNjAGmSrHRDVdt6K1eXamZmvgW4V0wdyJMLVoRAvRb6IGSCi55SDiyHyLALxOYvOPYXwSpucsMYQFX56NdIm6ad2nexJAqgvuI1Yvsu9LCLu2F3rNwoxq6r7iowT5G1spHfsU3f0ruD23FOLq0wibl370Ilf/kiTuFy23dFdmp9vCqISQbgmar4NB65GPqv57qC+EaiTmvyXl9VGNH+cBfd++SkhZFNY/WlFzrHKP+y64TH6FHRguo3wqLMVfHiGN3v5G1ZUqYm8jAHnQjZSe20w3iFuFqWeXuwzu4yxFXLZtJZBKpfwjwZ/1YyOihIh4lTbys4Ed3jMBsCKk/12KtVtEC/1DzyMFbmVesGtZWglQ9XsMGuymWci9tzEJr4N6rlxB0MGlcLWA1C0lyb24gRmlzaCBub3RlIGVuY3J5cHRpb24gbWluZXIga2V5MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw4nMtyJ0nSusi/55tNfVq2HVQ+oWvakzApMunYZ4C2B39p4Jjrx7UD8Sn9IU1H2kBDA4eDFd9s4ZZwuX53xPtBQ==" } ] }, { "header": { "sequence": 4, - "previousBlockHash": "2E12085CF0C387CB21E90C82570DB8C704385FCD5E2DB7EC2F493AAC041F0ABB", + "previousBlockHash": "77F1AFDA20165E64FAE5CB03192157760676648DA25F7A0AF3ED872251B223A0", "noteCommitment": { "type": "Buffer", - "data": "base64:TevSU1yu7iKtRwlmo4CxldWNWlY6jQ7yzAumJtnTFiU=" + "data": "base64:Sk1ayU2VZF5nNpvtFY/bzCt9A3w8Yuw4mNWXNL9sglg=" }, "transactionCommitment": { "type": "Buffer", - "data": "base64:IPGa8a6l65tY9pNEKh4/QyfXzg7Xqcbj2lPKtv4hHLc=" + "data": "base64:X7DXDrm/BhgzSsVuAacyCFJrdTel0xFGfX0xaKjadV8=" }, "target": "9228823284279306817296266184515742822248210830185427859262273659833347", "randomness": "0", - "timestamp": 1717538253824, + "timestamp": 1733981054946, "graffiti": "0000000000000000000000000000000000000000000000000000000000000000", "noteSize": 6, "work": "0" @@ -700,25 +846,25 @@ "transactions": [ { "type": "Buffer", - "data": "base64:AQAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGzKiP////8AAAAAW3gTuUr8NDGbTz5PP0KAyMx5wgsIi36ChMaDtEbuw9aECeJUpCvdto/GoNgculyfHd757ZxMZ6Qrl690xKl909pfrXYXeDQFaKeyWp0GEF6rx0snyhF4xRW5nPVjFPqqLu6zxNoqAI1j4GLX08CuDWaGX/XuVQdbiFB0H14GijEUOnS7vcFs6knVxQs+cCQWmZnsDlTOZAzTQfx7+WBA5TfV8uDKJVCdNloCXt6wrBmtsq/wV5+7ewHbbCUChT4GIqSsW52INZEydWz7AKK8x1PXRw4KbDzpzJDsSvKA5MFnHI0whMqzXzVydbveHVohSHIN3L5BsC6dZHEdiwloje14k9pmEwQwGEdG7bafOhVTmWsWsJV4LnS3yMk5Ih8e+nTr0ybjP5Kr7bTAzB7100ZCspBiqMgbjz3ro4UwRYfAckzFQGsqN6SyJKWw8fQ8I2P04dTMhfbWvFRr6ZWeE8xzag0mVLnO6AddHu9kOKVbpSik+Ln7dReppOdg0Fsig0v6O6qzLYK6k8O3eON2gYTflg3qtVXJuEgnr533R2ICaZodxXGsoXJm792igEZcPJMh5I/h65Vy3pxrEobbIqy/LPZkt9D+KpnlnAMSvtuGJJnwgvouU0lyb24gRmlzaCBub3RlIGVuY3J5cHRpb24gbWluZXIga2V5MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwNHiILSMvUi/GiS+349FsIGgeSmogjIB1KmnnMcS+uYwSfsJSLxTc2FEuTWzocyEzCSC16FZ3ltTDo09TTpRSAg==" + "data": "base64:AQAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGzKiP////8AAAAAMppZi65smfQ2HzxlePArgeVWdoUnFcTTbKqy85ZPhwm2CqLOlSe/rV7H6U7Sv6b41Pti4SiJo+6Inej2sy/ZP2eumTns4WugB1qCoUgHgVmu/Pq2OIonuGWK/H2ICQiez4uXWXukJ2Es25arXsj5NGT+LHfWOZshxtyApjHJDpgVIgZ6S4LgtCeTK/cXShehzIM2h1NadxltpgO8vNICGAQ/191ztm34MiBCjWH4Bh2TjJ8Qw2HtSOYL/Kvo5rL/wbCW3Cw2XbwQzBL7nCUToRWxjEgKv9HqKozy2I8zy0/DXfxhFSnnJTPNkcYxBKVTno0uewCpSwd2IaKdXZIA4GpLieJ0mNBcXJtyX4FS2tOqjKTB06YNnoSPRfxN99YGhseBBJBF9zB66B6SrwTkXM9NkWolA0WJ80bQ/LbbHV2bRC359O9FTpVe5bBhMngAQBjOFVQfgmr6IlJGEJBF4RArv0/JRMoAzEcxSh7xErnxIZyYef+a7HQrK0Jkgj16d9Hq0xuCEGEs5V3HaSohh+gS2VnW7agTGnwDZQlg1U1dlqulJLVoSZLWoIVf5ScjhrtyS+BDN4uLwCXRIWctsQHIRIiW5BESR62bY132HREHJigBup5jbklyb24gRmlzaCBub3RlIGVuY3J5cHRpb24gbWluZXIga2V5MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAworS+yNXQtpyBB155/X3ZNRh+KNnWKEZfjwlM/TjccGrEYdVYJlvv7yQStythgj2cEq/aYv8P+qaWsQZpi4C0DQ==" } ] }, { "header": { "sequence": 5, - "previousBlockHash": "DB013A8E07EB921518C75D6006E8B49E2EEF20CE5AEF1181F2FFD446E04737A9", + "previousBlockHash": "3BEFABE85701BA570E9DBEBFC9C51B9A1737D0423167FB40F91B95C61B1948DD", "noteCommitment": { "type": "Buffer", - "data": "base64:LqBjOkiKf4Ghe0dXpFZ+ggQaKdTxbMlxU6mxhqsnDzg=" + "data": "base64:lmbrph3nVM7bgsv7asMXDyDAmFc+hA4KggiCvsuBshI=" }, "transactionCommitment": { "type": "Buffer", - "data": "base64:99kakdU13z91qHBFXT+/kwEiLYRGL3LlnSY57P8afUY=" + "data": "base64:JMXIUIk7DjwE4VlsxGqcBuQY//Y7Z6k7LB3nQf31JN4=" }, "target": "9201866281654531936596795386791503876274441021197252859723586932895305", "randomness": "0", - "timestamp": 1717538256225, + "timestamp": 1733981055197, "graffiti": "0000000000000000000000000000000000000000000000000000000000000000", "noteSize": 7, "work": "0" @@ -726,92 +872,33 @@ "transactions": [ { "type": "Buffer", - "data": "base64:AQAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGzKiP////8AAAAAX0cvkC0QJArfMihmYFPkXrknaKsy1A21V77H9MvIwk6pFIe++L/aKp1bo45jo+3eaM51+ak7dM7OMI0JpgcpU0oBPjo89Ro0gVAc4j7lD4iAcv0+zIonl/66L4+H/tQvmOVlHy6FGnq4qT4MBVXSh2a+4J4iw0Ybe/0vZYw3qD4KcfjwBsbPHOamGefY4vy29xeYM68p6NigxQ429eBCByF3L5KvPrqpg0GdExy+PgaLfxG76/tGRw9JnlAvesqHAnvkt136J3KtrV1gpMfgJA4g9Ml51af1sLDXFfW3JMetSHdoMsZ6CMImbQJ/CGrO3t67jZaJz+4IIqD1QdnEaSUutejHeCbZ55IiqwIfH6zhMt6HBpmaz7pBnzPjfDotRV1gM5OaAEbRbXALWGmxLusAkiWYH4QzxT32F/UqOqt2d8sf/P37yk2nTJFjvAG/G4nvYzZ5PeXNKrRHdJCQdm6MNGm55Lzd9FmC2atmwc/UUpey03CzLEaVfncyvvvuc7/tzGDq1lazvVAWJN1ZC6oraoZi46rDP/sF6IpRSga/ALqvBUUNyeqIaQziyNsdONBWIcYAx/tDUzex5+Wl/d0A9zGXTDCSlmGgF5q43/CYn67m/igjuElyb24gRmlzaCBub3RlIGVuY3J5cHRpb24gbWluZXIga2V5MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwoiwwZNIj7SyfeVhwHJP6EIFBqyoPYE61JDjf6wHORLpRFr7vaa0j/PLSGYnOAaoomGFNuAt9Np7U12JM+gLJBA==" + "data": "base64:AQAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGzKiP////8AAAAA27hBrTdd5PD87p/vd/u9z0KFQy7Y4nX/OVWyU955eOS4Wazf1SaQF7x6y66ilxyKEakX4V1nFc8nNpjocJWGPrOrRTtrSD3B8Z8CrMScBCKk/Br+/nunLaNMigyKv+oItq4Nk066AQ2muzlakPewj0NSYs1glnI4I8kw3vL9n8sZCAYUJwa9qlGG83DuPOzhmGcTM2PBwnXwY0571JH/y2xSOsPia2K4eRAvDmjoHK2IDiA36JQdNfp6K1Q/0SRqwQuexYwY/AgdN9n5zSc6mRrczW1RxoQFy+Ui70/uOIQaReZtkZpA0Yul7Ksiyf14Dzvu90sEPWF/W/4fRAGmSxaZg1S4EnDRdJn1KdP089FhxjP8n9YxN4BaD+s71sg0K3UjSp3aFt5IeFmAxKNrP+bzXygRGrS/592Ogkh7cc8uVh0KZKYnw1qzLHw90Su2lkvAR7H539Y9NOCNFGi2FfBkkb7MET/F/vm+BqV+iWtWd/acXs3mY3ixKsPkBXwawk6aphv6oem6NAXkEZKVxbtMVmf2pfBuhROUvosiZHxFu5AXPdldmozl6FaxERqvpRmLsJFPzXYP892brxgcRGNQYJTXQm5I3osgCXU1o4+JCs4g5BC+T0lyb24gRmlzaCBub3RlIGVuY3J5cHRpb24gbWluZXIga2V5MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwVN5/mqc68UTanRXeS93uGd2/hJrkd2edmdcLB9uzwaxMlQVJj7TqgqUsuYChRw//1R1nNGtiP+GEnE8QAPoKAg==" } ] } ], - "WalletDB loadNoteHash loads the hash of a note given its nullifier": [ - { - "value": { - "version": 4, - "id": "16812363-20b7-4d3b-a5f1-d63f9c500e9e", - "name": "test", - "spendingKey": "42c4d417d5a6da2900cbfc8a32bfbedd8c96e1848dc4a22ec6b9386fd30d7f36", - "viewKey": "d220f7afded99beec10b955b4cd9e193f59a9b0cc3a6f0d5d284f606a442cbc52f1fdbfe00b35666fde4b01bddfb5179988d1b521ee318ebe4e7914e0aa080b7", - "incomingViewKey": "ff5905b8bd1238d6e7b48082ec38caa20b3481e4a3cd0ddcbdf4d071b347a406", - "outgoingViewKey": "805590598f08f2f6c3994315b8da4d0810049f010b33c46b5928487357f86250", - "publicAddress": "0a26afc3a56a3cbccd3eae6784885776df78f406235edcbd622feef724329220", - "createdAt": { - "hash": { - "type": "Buffer", - "data": "base64:R5HXrp+X3xAO8VWOhHctagm0N2I4goP3XG8goyqIqoY=" - }, - "sequence": 1 - }, - "scanningEnabled": true, - "proofAuthorizingKey": "6a7b7fecfdb8b21f5521e323d7867fd556bdfaffc93679527f099e0118014d0d" - }, - "head": { - "hash": { - "type": "Buffer", - "data": "base64:R5HXrp+X3xAO8VWOhHctagm0N2I4goP3XG8goyqIqoY=" - }, - "sequence": 1 - } - } - ], - "WalletDB loadNoteHash avoids hitting the database if the nullifier is known to be not present": [ - { - "value": { - "version": 4, - "id": "de2f768a-27d8-42b1-b23f-50423f469bbb", - "name": "test", - "spendingKey": "c3c9ba31682cab87d2388ad28e3c8a8e1141e802ab69beb1d2024dab7371d95c", - "viewKey": "38bfce8064573739fbe71f220bd1b055d85fa928bb12cab6ea6cec39228524c49011b98abac356d07ce11a9073d5257935459935c704f49189de32f7450cf7d4", - "incomingViewKey": "9ae8ad607e7429180f9c9b5c00c405945d0ece39ebc0bfb7298b7635ce2d9e06", - "outgoingViewKey": "d682f910ae6d4d1f55de2def975d4db0f66f9289fbdb503cd4a12672fdd03063", - "publicAddress": "89380c90a6c6829f7302e919932fa1b8f50c38c92f30f7313f4ce425062ebecc", - "createdAt": { - "hash": { - "type": "Buffer", - "data": "base64:R5HXrp+X3xAO8VWOhHctagm0N2I4goP3XG8goyqIqoY=" - }, - "sequence": 1 - }, - "scanningEnabled": true, - "proofAuthorizingKey": "fd03d976919b66a79480321fb7a04076897c7feb5180df93089d78e39503b90a" - }, - "head": { - "hash": { - "type": "Buffer", - "data": "base64:R5HXrp+X3xAO8VWOhHctagm0N2I4goP3XG8goyqIqoY=" - }, - "sequence": 1 - } - } - ], "WalletDB encryptAccounts stores encrypted accounts": [ { "value": { "encrypted": false, "version": 4, - "id": "91edb394-fe0a-4ff9-a94b-cbcffc199b76", + "id": "8e606d18-0531-4646-a958-d882b25ecb68", "name": "A", - "spendingKey": "aef3a7e8ea8329f61ae3c54b77f02f4fc94f4dd790f3bfd3d6e745e7d68021df", - "viewKey": "8e1605538c7f0d39a292d825e699c04e93d4e883172bea8ce5cf57e6be35062e745fcba8e06b0370e963ebccb2356eed25e886209cdb4b6c6c9bc1a66652ea57", - "incomingViewKey": "3e7270177fa64cd30835284663ceccb12f800e87e3d465aee824f20a93297306", - "outgoingViewKey": "3b07da84fde489af3af658b20573426a6cd5331eb1d827a5edbf52f5aaeb9d22", - "publicAddress": "13aca6bed0937635aebecc987377729edf63d3ed9576c863d9aa7318a714d7ea", + "spendingKey": "9632ad6f36fcada4125832a2c66dc226e04b44a7b3ff0017f9b4ba16823c83bf", + "viewKey": "c76eea8208cd8dc1ae0b3916e314d7faf488f2ecd1141fd72e47a4ff059f64af62cf36620c8c0d3520603faa4f0425f044df244c7d182c6437d7c52463df37a8", + "incomingViewKey": "8a98dd78020fdef29327f75ca7a68027805d76c500f8d4857bc1263deeac2105", + "outgoingViewKey": "ef011ae35ee81b1565bc449bd7b0f8d777a44c5ccb53d20a875d6fdad2e8992b", + "publicAddress": "eb6b48cf9bbd68e9e29a307544af8d18a62429b0ef0b1429b46ceb878a65ce6b", "createdAt": { + "sequence": 1, "hash": { "type": "Buffer", - "data": "base64:R5HXrp+X3xAO8VWOhHctagm0N2I4goP3XG8goyqIqoY=" - }, - "sequence": 1 + "data": "base64:AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=" + } }, "scanningEnabled": true, - "proofAuthorizingKey": "e1b8fa4e84363090d49bee08224f8d516410650dfc6aca1e9f3fef4d1358b708" + "proofAuthorizingKey": "f4569cbcc6353baaf09d11db68c8fca26eb865c319d78265237718da5cfc4e03", + "isLedger": false }, "head": { "hash": { @@ -825,82 +912,23 @@ "value": { "encrypted": false, "version": 4, - "id": "57c75b9c-bdb4-4705-8dc7-40847528b5bb", + "id": "16566c89-a4d9-4ff0-956c-b614b224768a", "name": "B", - "spendingKey": "4377f6743472240a7adba679e5872d58b1e17695662bb384e15984b9ed7eb3ae", - "viewKey": "364d9514508d06da950874cde5cfc1fe2e4d90cd064901e4a73c0f98f82c112fb463fe0a898e3d1976a9c3c7a4e0966d41f75e9a2cbb8767ec05f36b480b80d7", - "incomingViewKey": "4d31ebeefb51dda40f1e9a844321d065794fff7788c675a76699bd6d0a63a402", - "outgoingViewKey": "8b8d94bae8d743938e7940eec2cb3489772a422f3032a3742e8b107dc7bb34ac", - "publicAddress": "61b5033c291a7221a2a35adf7ef2885f5ee3b71ad43e32a6e67be17b3e8d376e", + "spendingKey": "f21cfca6b138a26c7a41a1dc6d29b6a8cfaf3a5a9741a05355a69720753ca93a", + "viewKey": "e667ff6432c08a8f1b2aa77f27dc320cfad2058b860082da855168d324824c0ebfae6d6dbb3dd9f3d0e8f68e2045bb21639072ef65500476ae3de88e4dececa1", + "incomingViewKey": "cfeddd824a51ac5f64a475b38fd7ae598b09fb634cdc20fa68c4f33e5feaec05", + "outgoingViewKey": "99e6488b947108b36c7bf82b6280ecd27de0baee2ef6ff726e15d678582af73b", + "publicAddress": "515828dc27eb4efe7763a72c70b5734b9c9444d6e6f7148548cb5e9bf872cf37", "createdAt": { + "sequence": 1, "hash": { "type": "Buffer", - "data": "base64:R5HXrp+X3xAO8VWOhHctagm0N2I4goP3XG8goyqIqoY=" - }, - "sequence": 1 + "data": "base64:AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=" + } }, "scanningEnabled": true, - "proofAuthorizingKey": "308703a8a801c918d4fe6168fba0ca7a4a53aadb2c6d7988031f8f9eb33cec08" - }, - "head": { - "hash": { - "type": "Buffer", - "data": "base64:R5HXrp+X3xAO8VWOhHctagm0N2I4goP3XG8goyqIqoY=" - }, - "sequence": 1 - } - } - ], - "WalletDB decryptAccounts stores decrypted accounts": [ - { - "value": { - "encrypted": false, - "version": 4, - "id": "99b2f779-24b3-4280-9373-60e754b91c65", - "name": "A", - "spendingKey": "147de6b6b6054328b5409f59e38de933bbdae76d3b6b0bf42dd89b90906a19aa", - "viewKey": "37f35e558e47decd960a65e30ff310c8dc1e726a321dca21532d412c929b4e43a9a645aed8934724bde1fd8f6d1814341efb0e2f7e2edaf821ff7e0a08eee8aa", - "incomingViewKey": "48f5ae1959a4fd4117825fbf6791700c975bc93cc4423c47a77ea96362d1e904", - "outgoingViewKey": "dec94d98c3ec4a4991b7344abd6ccc24bd8857b7605dee2a97fb76d594d9a629", - "publicAddress": "fd02b46d7addd5c6f58ff6d04e560c9be3de64c5361601bb850a94ce8585f5c0", - "createdAt": { - "hash": { - "type": "Buffer", - "data": "base64:R5HXrp+X3xAO8VWOhHctagm0N2I4goP3XG8goyqIqoY=" - }, - "sequence": 1 - }, - "scanningEnabled": true, - "proofAuthorizingKey": "9f90335923ded9f0bf8fff2c9a494f5e13c9ff781db239d009e2927f1ee80908" - }, - "head": { - "hash": { - "type": "Buffer", - "data": "base64:R5HXrp+X3xAO8VWOhHctagm0N2I4goP3XG8goyqIqoY=" - }, - "sequence": 1 - } - }, - { - "value": { - "encrypted": false, - "version": 4, - "id": "16a2badd-c7a6-4bf3-ab5b-3fe79901df20", - "name": "B", - "spendingKey": "5ba5b547ce1009727b66d6e8b1d25815f88611fe04f7b30ae5b447b52b8e7910", - "viewKey": "b7646fefef3547c784a145487683400f238b2d2a97fc22fd4d45a9df1fa3e7a9c4b72f8757cc5aabb5ff8c7ea947833a6ec2368ad0cd5014bd33806c272ea993", - "incomingViewKey": "6e051e304f17ebd4a35d0b35ca9eb39a77009d0d0a92a423be4be3cf341f3d00", - "outgoingViewKey": "07cbedcdb1226d283378f2d48d173384fbd3c39abf10ce796b9bed8543b85407", - "publicAddress": "71fb617acf602a2da55fd4857978a29416903bbd240ab52886097d569b85d41b", - "createdAt": { - "hash": { - "type": "Buffer", - "data": "base64:R5HXrp+X3xAO8VWOhHctagm0N2I4goP3XG8goyqIqoY=" - }, - "sequence": 1 - }, - "scanningEnabled": true, - "proofAuthorizingKey": "e425c3f41ed47adb266a210760489cf8c5dc1981fa306ae55a3e3e8283aa0907" + "proofAuthorizingKey": "eda7750f91440474b145fbd041a069c5a81849f5e4baec19ae1de5e451bd860c", + "isLedger": false }, "head": { "hash": { @@ -916,22 +944,23 @@ "value": { "encrypted": false, "version": 4, - "id": "5c0154e9-e7ba-4516-bf89-c94a6a8ee396", + "id": "9f909a72-6f82-4511-9550-6c142fbb2e88", "name": "A", - "spendingKey": "7a64a08fd618327398f612f00d9c53939630e19c0176826585704ed0c4e5cb87", - "viewKey": "a75051978830c2361fd2fe1275a06c5ad8ab266d9da1d608d1ccb639e92f3068f1e99b7037b83498b1250265eb2d695724e646d51f732ffeac5b36a77f982a3f", - "incomingViewKey": "5284789b53acfa30f00e81d28fc1308e7e99e2ef854d514fe6d763f81bb9b007", - "outgoingViewKey": "21bc65190cc9ad6e2c7a32d101246e2caef87a8e323d56868196e8799564d24f", - "publicAddress": "23df85a64f5a2fe410cac9be7b3426e96ce014657d82d9aefb9a92bb063ee08a", + "spendingKey": "b48681d2e2d78ede4716e60f1b57526fd91ee4c4020f1df91c7e78a4aee7b17a", + "viewKey": "8bd4b78499e770da1ed206e8200b72eecb5068421516d8f25b882f5f62d32aef7a2d2e9195f6e39a2dc5a652e3d1096e54f4a07c641e5f686ffcbe46cb8db038", + "incomingViewKey": "ec0b045148b56b1365fe3856f186f2810e4ca4f3a440dfcdfa67fa0c5e4eb201", + "outgoingViewKey": "c4246798c2348d62f7a40a7d741c3a8d232aca26230883ecf6553b7e4d526f9c", + "publicAddress": "8054ecf06d7b81c1311a042ded42e29ee797efb19dfb97f4f1707d99a98aaeed", "createdAt": { + "sequence": 1, "hash": { "type": "Buffer", - "data": "base64:R5HXrp+X3xAO8VWOhHctagm0N2I4goP3XG8goyqIqoY=" - }, - "sequence": 1 + "data": "base64:AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=" + } }, "scanningEnabled": true, - "proofAuthorizingKey": "74fb92bf84c0c871fb9b20b8ec3b7528fc88382a84e72d0506d29cb6ac484b08" + "proofAuthorizingKey": "08716c6c92013d5506c1714f7970e9dc23c138afb4528c1668f0151d851bd805", + "isLedger": false }, "head": { "hash": { @@ -945,22 +974,23 @@ "value": { "encrypted": false, "version": 4, - "id": "595ea740-96ea-43e4-8d13-a4f864f08244", + "id": "9365e1ac-8558-471a-bd98-5f95e067b269", "name": "B", - "spendingKey": "8bc528f23c04739f2083d2367d6b81ba9ca2cc41d2d920dd4c417197ac3bf289", - "viewKey": "cc3c5859bc104fd104cdcfef85ffa9ff5984ea0d2b7aa4843afa0c3268166f05d51eef5f16b081b8dd252c72bf93a4446efa9f0cd6514610d9b18a215874850b", - "incomingViewKey": "a899c9f5d96de698af6ac81831c5470f839baca8d8faf76fa2c8f60b831e3502", - "outgoingViewKey": "d0a6fc11f89cfc40c72699cded70137ce8da9b2236cada30a5ce922627ae12fb", - "publicAddress": "03eb191ec40f5153bae739c162f56a80abc2e819f08b7ff2ee160d64aec24373", + "spendingKey": "740f3aadfb1a28631458590cb6676747f41fd0191a36a5d6c27e25863fad36e0", + "viewKey": "ca452c82c1cb8495a8f2f1166119f64850a9ab3e8237d327efa0b851020fba9d5a832bf672e57a5ff09e1b04668925a8db58fb9fae383fd3af7f9348eddf89ac", + "incomingViewKey": "902cafc4c0c7bcbe9c8de766aecf1f648255a91341c37f93a278bbec22b2f103", + "outgoingViewKey": "10bd7a5818731cb2ae9280e390530b924809d8b114e5f9a37865f2d11da70c26", + "publicAddress": "b55c84f446855a7a210ca2dfd6253a191cb3a0c90fb84b57c5a9a19fab97fca4", "createdAt": { + "sequence": 1, "hash": { "type": "Buffer", - "data": "base64:R5HXrp+X3xAO8VWOhHctagm0N2I4goP3XG8goyqIqoY=" - }, - "sequence": 1 + "data": "base64:AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=" + } }, "scanningEnabled": true, - "proofAuthorizingKey": "1a628719c1704b0553ffcf8daab62507c2e5829d878b07b6f1573b7023d4110a" + "proofAuthorizingKey": "f8b33a85b221881348558dd01f7959f9475e39ad9651b246b313e71521903c0e", + "isLedger": false }, "head": { "hash": { @@ -976,22 +1006,23 @@ "value": { "encrypted": false, "version": 4, - "id": "229d12aa-8d18-46ed-b831-555627e043ac", + "id": "1704dd03-7f96-4804-8750-bf699bc9afb3", "name": "A", - "spendingKey": "e16e752d0198841c210e2d1ef2fdc42b161224b3b44eab19a5518d9e63ab10aa", - "viewKey": "305b0e13928e722e726e31c381806a07b3d0adee97e8e3d148d5f2da1f0294c8f3d5596e76850c9c3973f0e22aec31227c027d2e1f04a8caf3215a9d6c138ac9", - "incomingViewKey": "faf451a104a6075d0537f23a38ad93717c5514218397c73e67636bbf6791bf01", - "outgoingViewKey": "01f147f4ee1bef6eb1ff55763e9d3a7412c00431061012448c1ceecbe4871dc9", - "publicAddress": "5e01cf3ca471a4e5d29257922317b276d186ad8b3d43305cbb02a63e19c847b9", + "spendingKey": "386d811c277430419a7e2c823787fb42f9e4a19ce8e381c04871863027e977e2", + "viewKey": "b8e0f60effce051feee5855db311e7c90bcd2cd657838e5648ac0efcffc31343f992d4a14c0c0b71d738f6a81b9cae1c410c04495c5e8152117aa6103f6e2abd", + "incomingViewKey": "7d63dfcc66c73348aeb11e95a973723b31657c16ebf990d4df9d3751bf1eae03", + "outgoingViewKey": "4e2951dfcc9cce26c90c23bcb6f51fea078d08753ac880f7b6743a4730c34af9", + "publicAddress": "419f7d698e12dcf8e7761d2f3564674b499c0898ac8f93a061c3c1b104930013", "createdAt": { + "sequence": 1, "hash": { "type": "Buffer", - "data": "base64:R5HXrp+X3xAO8VWOhHctagm0N2I4goP3XG8goyqIqoY=" - }, - "sequence": 1 + "data": "base64:AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=" + } }, "scanningEnabled": true, - "proofAuthorizingKey": "0824b8fc93da369f7674a5cf710eb034d5044e3376bf814ad752ab4ab4f9fb07" + "proofAuthorizingKey": "e111cc62582aaa2a5eeaf7a9dc9db4706d4fef4fd3b05456452185d5a75fdd04", + "isLedger": false }, "head": { "hash": { @@ -1005,22 +1036,23 @@ "value": { "encrypted": false, "version": 4, - "id": "8134c360-6ffa-4c16-8386-e7fdab2c4a5f", + "id": "2aee6bbd-5364-4ebe-a0f7-b1de28f69ea0", "name": "B", - "spendingKey": "8b334ca948cc0d19c59c81b0865e123a124d852af92377f9cbd201abbc32ebfc", - "viewKey": "f293872da5f4a248af69c5fe96bfebf919b790376115caa660f90666e007f59e8c8ea059b1375a052a9e9ff7a2af1ecb027ccb894347965cca37cd4f7614506b", - "incomingViewKey": "f06b6de5dbf9bed1684973f121e6f774e81fec44dd1327a295c8e958544daf01", - "outgoingViewKey": "e0d88e8a0c02c101edf2bbd8bf1a0bd3cca2a71e66f031b8bd9f7dd6283accf0", - "publicAddress": "d74d09e7c105e1ef3e70b0db656eebb60b29e2a4d100ffad6f290e8d90ccca6b", + "spendingKey": "c1984740a1ef24bdb31655a2b6dcd3baf1bd01b84ea5cda26f8cf415e60803cd", + "viewKey": "0d9fb34d7b977c7c23692e76a445e62a261fa6da7c88006de63d5e77c4d420117a0b52b1bff6b093048a73ead6d87007dba0ca0fa5aaee9f64416fb3b067d5eb", + "incomingViewKey": "8bad3b16669cb32e81d641ba0833b23cd237b4ac3b48b175e146890dfb614f03", + "outgoingViewKey": "7857a8976939357da4fba7ce536b671c9f790e9c0c22dc7afa1096415f05c06a", + "publicAddress": "ca89845fbe5f48708bf19d1218f75bc224915b7f10432ceb7723dcaef521bf48", "createdAt": { + "sequence": 1, "hash": { "type": "Buffer", - "data": "base64:R5HXrp+X3xAO8VWOhHctagm0N2I4goP3XG8goyqIqoY=" - }, - "sequence": 1 + "data": "base64:AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=" + } }, "scanningEnabled": true, - "proofAuthorizingKey": "fee1d439c9f7a64889fd0d31adf161ace728b6c8337e161c449284be1db27905" + "proofAuthorizingKey": "275604ead7e15629c1795586b0d981b8523e04fde31e4ce7167b879d849ea803", + "isLedger": false }, "head": { "hash": { @@ -1036,22 +1068,23 @@ "value": { "encrypted": false, "version": 4, - "id": "f0f8c027-812e-46ab-bb88-11892712457c", + "id": "39ae29a1-d97d-41ef-9435-a9bd7c18d591", "name": "A", - "spendingKey": "e34de31cc4cdf650009b4a37a2c26cd1b31dfbbb8017c41efc6b9bce9ae78b62", - "viewKey": "808ce2bb31b0e4979d72171f7610306eb0bc42295870b7e22e9d4a02fc962cd30930c62109d9c2c64b9b0b7c98203cf80c4c590a0110053bd7ef6923cce56e3b", - "incomingViewKey": "394630d0342fca3fee576fcf403a1bd1ed7c0bf10ee6647bc0af61840ad22703", - "outgoingViewKey": "22168293332c8f42e02946c0d175a068e1f3d991f44f7317759c9117e0713b2c", - "publicAddress": "144f29e12d30a6dcedf479f9ffec2cabd61453ff32896b67981d5809a8ae775a", + "spendingKey": "6ed82e90499c34f938ac23a7a57fd7a7899ffa96c23e3c6b7016cfce1c355f2a", + "viewKey": "fa7242907aa0c1710c0d933dc8dda50daec3c2ea599972d2ac2484b8adcf54ee6550ca298f512e4dc61cadcaada9992858cb69ef89450ee6ddba51f46159f61c", + "incomingViewKey": "7e5dfbdb7ce914fd62ee2db12cf1f017acec44c0825d126ba0f24d7a40ff1e03", + "outgoingViewKey": "7157ca7b1e867e8f0642b24961d3538c917054ea1b3868fbbebfb3ce3033b3e7", + "publicAddress": "00bac7686f73fab0daf5a44f499be5fc41940b5e56032d93cdd3ae42cb8c8c0a", "createdAt": { + "sequence": 1, "hash": { "type": "Buffer", - "data": "base64:R5HXrp+X3xAO8VWOhHctagm0N2I4goP3XG8goyqIqoY=" - }, - "sequence": 1 + "data": "base64:AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=" + } }, "scanningEnabled": true, - "proofAuthorizingKey": "66850d6e24b4fd25e4775bb01eeab1707acc66e886bd53f04507002237cabc03" + "proofAuthorizingKey": "7fd1bf5985c233c9531d213093935238e62e93f8e2ee22d137d5fe6077a3d206", + "isLedger": false }, "head": { "hash": { @@ -1065,22 +1098,23 @@ "value": { "encrypted": false, "version": 4, - "id": "33e7a4ed-7f1d-49de-821a-4ed8ebcd093f", + "id": "a941e46d-d578-44bb-b87e-e54264cf93bb", "name": "B", - "spendingKey": "838f322feccdaa86677853da85c8be7d38e795448d78c73d272d340a62959337", - "viewKey": "c9e2a9a4837b6ccc00d7a70e84633820f46eceb841f7e152ad4733fd9742cde6774ec12c2b567ced6f122de3af446f5f766648702c8398801dce070d5ac85915", - "incomingViewKey": "3c355d3246e9b3af43865d2db052443c1f1ccecd26883d1b1f269fea7c95a307", - "outgoingViewKey": "3a2246d964b5b1686caf09b25d1db4cdbd66e24cebd230f37765fb3037560e15", - "publicAddress": "799ec271f7543e1759e369eb4c212d75e26ab33ac3af290b5f851213490ee614", + "spendingKey": "c64679d30b4fc343fc9f2ca00cf262ea766f19e450b4bf4c777bc519204414e4", + "viewKey": "40828eaac984f13a619ad45a0e8233ee95105a8a1681f32890cb1700919553cb1e8fcd89ff8a42534fa52a3ebf54db6d80460248b2ad8f7fcfb553c8a23cc351", + "incomingViewKey": "516e61b5ecdf084867196d46d96a4ab68f27107c76e1566b3dc4abef893d8405", + "outgoingViewKey": "1c898d3bc2459d89f1f001a0c0c5ce6817310c5c973bfd2f551661cbc73ac2cd", + "publicAddress": "2e971ae95ae9c1cd98741f134b3bd25483b81f0b937c0aa99a3e9eb4c7521309", "createdAt": { + "sequence": 1, "hash": { "type": "Buffer", - "data": "base64:R5HXrp+X3xAO8VWOhHctagm0N2I4goP3XG8goyqIqoY=" - }, - "sequence": 1 + "data": "base64:AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=" + } }, "scanningEnabled": true, - "proofAuthorizingKey": "412d70322e874e012a1f18362ed086fa33fb8748dff6e995efefbab03dbf1b01" + "proofAuthorizingKey": "f0b2e184a88a7393abde40026033dcd6716e3f21893e470caddf12e4e51cdf02", + "isLedger": false }, "head": { "hash": { @@ -1096,22 +1130,23 @@ "value": { "encrypted": false, "version": 4, - "id": "4717c1a9-11de-4a78-a141-900fbbcd5c34", + "id": "9e83598e-d5dd-4da8-a9f5-971185a6f4fd", "name": "A", - "spendingKey": "c99f23c963691038d013f3adf47c067f5ad4b9b194f8049d3da13ba98c790d21", - "viewKey": "b37fe1ab65dac89e23291c18b35317f49bda3a4c158091ce09404b9ec94acbad903b1e4fec2b762e2582e59b72162f9cd804c3c7a3d2ac7408cebf4cd1919ef3", - "incomingViewKey": "aba98116d77d35b7b771961817f15d07342729abebca928a181aa2b4beacf206", - "outgoingViewKey": "6c7e7c4348ebf61d3a04499d84507a2f2ba537f84023a6e8d00d73f8f15d28cd", - "publicAddress": "a8308b45f22ae0728c0430678379a42341ae5e81c818cf254b3e172bec00a54e", + "spendingKey": "7cf96062b85bd5d782c3edc54b16125c9c5d2ec5f78e1d1316fb0243f78b9477", + "viewKey": "e2604cf03ee2d3dbe570d2a3fbda038f9deb2c03edd8025d14bfbfece85c0d8c6601b24876386b47ddf437c7d21fd21ff3074f1e8a6f1197998ff5358f3fb091", + "incomingViewKey": "41183810216f4cf7979c1805c8510fc933b436429807a605068f6125cf65b607", + "outgoingViewKey": "38495aeb7886ee07d15b688af1e8baf57dbdfa72efa33b32987cc78be3455cbf", + "publicAddress": "5aed43260768308dc47649b372141aae0dbfe7ad92db2aba2e7a79c077259472", "createdAt": { + "sequence": 1, "hash": { "type": "Buffer", - "data": "base64:R5HXrp+X3xAO8VWOhHctagm0N2I4goP3XG8goyqIqoY=" - }, - "sequence": 1 + "data": "base64:AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=" + } }, "scanningEnabled": true, - "proofAuthorizingKey": "b1658d9eacebc094b30771b0cf5d92d81fd6bc58177e9c5ed1318f118f033803" + "proofAuthorizingKey": "156a352ca51e2a4cf864505506be1a8ce4ea920d9b1cf10415bf4df137474104", + "isLedger": false }, "head": { "hash": { @@ -1125,22 +1160,23 @@ "value": { "encrypted": false, "version": 4, - "id": "c430f181-3159-46ed-973b-2ba03312ed7b", + "id": "d8764c34-6c2d-4f31-aa2d-9e4cdb3d58eb", "name": "B", - "spendingKey": "3807adc2ce8d897ad83e6c7994d7c5923099cacc75caa1ab1987c8af642f1391", - "viewKey": "528130aa8a609ba4db35c550a1dcaa6e01318afb3df057947ab687aa26a0162e57cd3117540268fd45e5c13e7bb34194518e3c14e2e8fcb37184bb82bca9be21", - "incomingViewKey": "24f27fb4587f7ecdffa77c96477ecf7edf83a199da93bb00d59073a0fb826c01", - "outgoingViewKey": "6e9da7937ef4ba894e6c8c3213b5ec9a7464e4bd6ea0d99bc11bc3219528267d", - "publicAddress": "75bc4e93b08a721faf6385945182f6b78fda93e3a34546e6cc079d5d1afbebf3", + "spendingKey": "4ac6c712ee773d8ac4b263f5c0bbbfb67b153e232cbb3e4f28637424e19643bf", + "viewKey": "347782f40d9d3f60886d74c7e131b65dfb805bb449c4f9e4aee6a259341977550e7a96750ec924a1a6c0ed16d9e1f9c8a4ac31e096ce2c3a251c2696d29cb1e0", + "incomingViewKey": "1d69d8f0beb9e36bc38b3d1350d31e3e4cf64d1775ab179b7662d8bbbe7d4c01", + "outgoingViewKey": "4512beb8a7df1f847c89020b2b88d817b1050078f79479f0710b1bcee605d19f", + "publicAddress": "de980c1a7345697c5f8122c63f7cfd6d2449ad727fb489d39cb16106b8ae3140", "createdAt": { + "sequence": 1, "hash": { "type": "Buffer", - "data": "base64:R5HXrp+X3xAO8VWOhHctagm0N2I4goP3XG8goyqIqoY=" - }, - "sequence": 1 + "data": "base64:AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=" + } }, "scanningEnabled": true, - "proofAuthorizingKey": "b9d1122eb1f6c6c87c6a15c3d887dd20ea3debc3bad45e0c4ef62e7c530c4200" + "proofAuthorizingKey": "2645ac1c833370f064abd10cce86eca378c388c59f16a00c1f502379b3101e02", + "isLedger": false }, "head": { "hash": { @@ -1156,22 +1192,23 @@ "value": { "encrypted": false, "version": 4, - "id": "1326265d-45b5-4646-8bf1-4434c896bcd1", + "id": "975a6fce-0893-4e08-8668-e6c1723e2264", "name": "A", - "spendingKey": "d71768604bc37a2cd7b48e194b58c43bee3aeb398d11b9a0ef998ef759a6e08b", - "viewKey": "9a1e4d1d5ea401cb0454e95b4681ddd6acef636f3b406f8664f9d2bcccaa979d0495d1e8372407cbb4505a7167232f1d3436d5723bff554f911d96df1d0e2821", - "incomingViewKey": "64b66b4a68d8eaba6b7bfbd55d59abe794f598750b0dc9f136d2558502c64303", - "outgoingViewKey": "5d40218d1b4da92ec42c0538380b682c179d44fbd25ef999566539dac1d70d4f", - "publicAddress": "204b3270b44e987ba022b5b8eda7f41ebf55eb19ce61b7723a031bec9ed5bfcf", + "spendingKey": "fefd3b124c45ac9c5c1355ef2de42c1a49843ca3ef7bdb53edf3800e71da3a2f", + "viewKey": "ecfa55f3e447e8cdddc9784ab3a0c917dd4ed79b815a318bb33d6bb14d1ed12c00387435efc225e272aa84a979907d3442d817d130c87769947b941fc6512e2d", + "incomingViewKey": "17d38602aea3941fbf22176123c875623093367d26b30ef1b470e6133786a101", + "outgoingViewKey": "a66b7e1593b5946991aaefdbaf6ae9749558cd4d6ebc7aa71401951e6a7aebda", + "publicAddress": "c84bd0568894f75538d7d749e7bd72240d19343bbbdcd9100ac25e2ca6d588ab", "createdAt": { + "sequence": 1, "hash": { "type": "Buffer", - "data": "base64:R5HXrp+X3xAO8VWOhHctagm0N2I4goP3XG8goyqIqoY=" - }, - "sequence": 1 + "data": "base64:AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=" + } }, "scanningEnabled": true, - "proofAuthorizingKey": "4ebcb8cbb3bb735f9421ea40538f24ada921c9736889e2a3384ddd3707c0ad05" + "proofAuthorizingKey": "0bbd2ade3bb67326ffc60f620bf0df03aab60622a034957e9bc41378531e280c", + "isLedger": false }, "head": { "hash": { @@ -1187,22 +1224,23 @@ "value": { "encrypted": false, "version": 4, - "id": "0327e33a-b3f8-44de-9e31-f62c0b957ff9", + "id": "adfdd375-2594-4400-a0ed-9b3b04bba1ac", "name": "A", - "spendingKey": "4073e1efc8ca5779108f7e54033aec1d612a8423f0a2e3a4536af6a2223b08fd", - "viewKey": "e26e4085b6c0301b1cd8f0e9115e7eea63de80848b09476f304f002ba7365f5c0ab80794346f4b2185256543a5da0b9223824df459b1ccff8b03cf6ca6e4e5ac", - "incomingViewKey": "6f2ac227d5d4a5704839f4fccea70f2f37016c046e68c60d5234eebfc6eaf903", - "outgoingViewKey": "2b0364b99c1971d8a5cff5333c29b7c5b5b2164d20c6171944009bbb7cae038b", - "publicAddress": "614991cb72e5b0997f1311835aa8f15b723c234a819cf36b09121284a36c6909", + "spendingKey": "2af9be5f2a0d4a599cbdccb095ab95180ab66c49bdbd093719ad27e09d16fb2d", + "viewKey": "dad3a44504a1c8251b106edb5aed297974b2cb1365859dd3174fd87ab8f4d48c7c0d1b7ceae7d6469611bcfe228a58a1c556dc122c56d8b15f59b3ed61832060", + "incomingViewKey": "1a7cbb037e2980d6efff9b823c02a2fd4c07403df05cedbf7d52975e06324000", + "outgoingViewKey": "d897819df8ce73aeff75fcb6fd93c132b74a07a86172e8215f92de8459d9f183", + "publicAddress": "9f9b2dc7ccf96768967bf62f02f314566b496c2f6187f35f2721d3cc3663afe4", "createdAt": { + "sequence": 1, "hash": { "type": "Buffer", - "data": "base64:R5HXrp+X3xAO8VWOhHctagm0N2I4goP3XG8goyqIqoY=" - }, - "sequence": 1 + "data": "base64:AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=" + } }, "scanningEnabled": true, - "proofAuthorizingKey": "1197fb366b1e4db881d28adb2aeac1546cb969cc0c2515c9efebfe995bc9a705" + "proofAuthorizingKey": "cb958e6decf25d3fa234fb11cd7e574884185f97bb97c9ca9177dd8708b2cb00", + "isLedger": false }, "head": { "hash": { @@ -1218,115 +1256,23 @@ "value": { "encrypted": false, "version": 4, - "id": "2d4ff08d-b895-427f-b08e-7daf670f26a9", - "name": "A", - "spendingKey": "a6977d360e93d4210c8101eee39aa84d291b615f6dbdeb7d463901e4d4604b2b", - "viewKey": "49f2ae0a4f8efb153fdaedf92067f60829ad6c3fe946a08ca54594fd145d63894997083e2e9f20780bff1bf36237d0bf6ab2b0683de8756abe89b18cced457e9", - "incomingViewKey": "cf24a9f69b4179bc336abf6827f493f64d970ddf91b2d121e7af94eedb1dfd07", - "outgoingViewKey": "2e7cd9c8c91e729c1c8f0597838bd34a2292daa3989e3194e12a131e962066ea", - "publicAddress": "9c4afe0900874d1c94955a21eb1bab1fb6e3ae310f79f407423341eaa8ea1467", - "createdAt": { - "hash": { - "type": "Buffer", - "data": "base64:R5HXrp+X3xAO8VWOhHctagm0N2I4goP3XG8goyqIqoY=" - }, - "sequence": 1 - }, - "scanningEnabled": true, - "proofAuthorizingKey": "216a960dfcc50b928b8d56cb3eb1e4aa536df07ba9d440dbb21c237e95c1cf02" - }, - "head": { - "hash": { - "type": "Buffer", - "data": "base64:R5HXrp+X3xAO8VWOhHctagm0N2I4goP3XG8goyqIqoY=" - }, - "sequence": 1 - } - } - ], - "WalletDB canDecryptAccounts throws an error if the accounts are decrypted": [ - { - "value": { - "encrypted": false, - "version": 4, - "id": "acbb2960-da97-4cf8-b66a-8bf01ddaeb67", - "name": "A", - "spendingKey": "86635081a46875b009ad5f525a3b41e66c5ffca00f2ae97864ab4d398398dc7e", - "viewKey": "483f046c9e044e9110f371b6b4b09925d77077fc9df3f5d6510fe9da4e11ce473e9c198a40335c0687a744a49cc4a7c096c32bee370caf7562a3a3c59c6cdf73", - "incomingViewKey": "0d9d2bf42ea2d2f1d656533b9fe6d9797eb646a02f4effe3dcda3bc9d955ed03", - "outgoingViewKey": "f824913fcd864447bfedbcce962ef8e3309623f518b00cd67252267fb0bb3edd", - "publicAddress": "4f0198b74577e1a81fc23aff6f180e386eeabb38c3e5376f526908488a6b1833", - "createdAt": { - "hash": { - "type": "Buffer", - "data": "base64:R5HXrp+X3xAO8VWOhHctagm0N2I4goP3XG8goyqIqoY=" - }, - "sequence": 1 - }, - "scanningEnabled": true, - "proofAuthorizingKey": "ee9140e033b9336689556554006fd016153d6bc3bbbeee736fe4a527e66c6a04" - }, - "head": { - "hash": { - "type": "Buffer", - "data": "base64:R5HXrp+X3xAO8VWOhHctagm0N2I4goP3XG8goyqIqoY=" - }, - "sequence": 1 - } - } - ], - "WalletDB canDecryptAccounts returns false if the passphrase is invalid": [ - { - "value": { - "encrypted": false, - "version": 4, - "id": "6bef8a6e-d6e2-4448-bf24-21662211354d", - "name": "A", - "spendingKey": "ec168ca1316b3bf7cf0cdf0a3adecf9b7972e6ae156a729f2719ac4e157c6da4", - "viewKey": "0ce8d5f8a3c8b2073178f59a3870db54332f93b8ae0d20c773c8128021c6a93771bff1b891392e16feed8ded0f9ca05af870526f4326f6249def2675604653ae", - "incomingViewKey": "81ef82de4bd28b919f710e8782feb30d394d94137eb5a031e4c4f5d003afa404", - "outgoingViewKey": "aaea23ee6e02849596138db4623b59a2303d271c5279e7d0a834804e5a13ae97", - "publicAddress": "686d8506997e2a6ceb5a0b8311e8d4e6d9a273e151168cb0241adbf6df46f75c", - "createdAt": { - "hash": { - "type": "Buffer", - "data": "base64:R5HXrp+X3xAO8VWOhHctagm0N2I4goP3XG8goyqIqoY=" - }, - "sequence": 1 - }, - "scanningEnabled": true, - "proofAuthorizingKey": "a84451b5708e3349f33c6a9c77e3260409534e9c54f327968a464edff4a00408" - }, - "head": { - "hash": { - "type": "Buffer", - "data": "base64:R5HXrp+X3xAO8VWOhHctagm0N2I4goP3XG8goyqIqoY=" - }, - "sequence": 1 - } - } - ], - "WalletDB canDecryptAccounts returns true if the passphrase is valid": [ - { - "value": { - "encrypted": false, - "version": 4, - "id": "29a6dffb-eb57-418d-b748-2cb6b1544350", + "id": "88572dd7-7dbc-4527-9ea1-b383f28e24ec", "name": "A", - "spendingKey": "6d9175f29df2be3f8c7df0187e0b2197b31001209c22813b289e86894d054564", - "viewKey": "bbefff5ef688ac872511b1e3560dfd81af1d316b34ea177152edc2f31531bf9e50e0df53ab8f0bfde8e6b0f3cd85566cddb745c418fb8f13a10ad8f293b0e36d", - "incomingViewKey": "5d5a144161b657eea271b8d6242b9ba674938adaf10805d159cdf88bf7c18906", - "outgoingViewKey": "89e3e88af3d337bb79ac160c0358261e282bcafdc9fc6473b5cc676107f80b6d", - "publicAddress": "af2ba2cdf2fae3074d30e363e9027fa8bb36ec932cd233fd246d2a623691e612", + "spendingKey": "98e5337317bb2db6febd1265abc8b0c3882d18e7cd641f344b25521f2b4f1b47", + "viewKey": "b662951a2b19a87751e8f00a683972fd5051e69e591e55db2ce454417d04541a1436ae9578c513c612a5674959e84a01fa6d3f15652e83ce5c79b15859674b1b", + "incomingViewKey": "6e631ce27837c594ee8ec478b13254876412d24003f28747a3d0fb0372473904", + "outgoingViewKey": "35eb418818d4d54437f0561e744ee19939442f8a05f19fa54818b1b1aff0ac6f", + "publicAddress": "c239abc3c8a416332685483a4f5f9dc3716e11ad8a2a75cbd5e43dcd0435324f", "createdAt": { + "sequence": 1, "hash": { "type": "Buffer", - "data": "base64:R5HXrp+X3xAO8VWOhHctagm0N2I4goP3XG8goyqIqoY=" - }, - "sequence": 1 + "data": "base64:AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=" + } }, "scanningEnabled": true, - "proofAuthorizingKey": "01dfdc97107f322332ad1300e236f9c377cbc7b5e0c9ed327b403bd6ceb08a03" + "proofAuthorizingKey": "d9d9a01ae71e4faf22cd1f8c5c051d9777f5041fef7e47fd2b68c9abe5b0da0b", + "isLedger": false }, "head": { "hash": { diff --git a/ironfish/src/wallet/walletdb/accountValue.test.ts b/ironfish/src/wallet/walletdb/accountValue.test.ts index ee716a96b5..c5581f9ee2 100644 --- a/ironfish/src/wallet/walletdb/accountValue.test.ts +++ b/ironfish/src/wallet/walletdb/accountValue.test.ts @@ -30,6 +30,7 @@ describe('AccountValueEncoding', () => { }, scanningEnabled: true, proofAuthorizingKey: key.proofAuthorizingKey, + isLedger: false, } const buffer = encoder.serialize(value) const deserializedValue = encoder.deserialize(buffer) @@ -59,6 +60,7 @@ describe('AccountValueEncoding', () => { keyPackage: 'beef', }, proofAuthorizingKey: key.proofAuthorizingKey, + isLedger: false, } const buffer = encoder.serialize(value) const deserializedValue = encoder.deserialize(buffer) @@ -87,6 +89,7 @@ describe('AccountValueEncoding', () => { keyPackage: 'beef', }, proofAuthorizingKey: key.proofAuthorizingKey, + isLedger: true, } const passphrase = 'foobarbaz' diff --git a/ironfish/src/wallet/walletdb/accountValue.ts b/ironfish/src/wallet/walletdb/accountValue.ts index 50dc2be1ca..c00971abc6 100644 --- a/ironfish/src/wallet/walletdb/accountValue.ts +++ b/ironfish/src/wallet/walletdb/accountValue.ts @@ -20,6 +20,7 @@ export type EncryptedAccountValue = { export type DecryptedAccountValue = { encrypted: false + isLedger: boolean version: number id: string name: string @@ -66,6 +67,7 @@ export class AccountValueEncoding implements IDatabaseEncoding { flags |= Number(!!value.proofAuthorizingKey) << 3 flags |= Number(!!value.scanningEnabled) << 4 flags |= Number(!!value.encrypted) << 5 + flags |= Number(!!value.isLedger) << 6 bw.writeU8(flags) bw.writeU16(value.version) @@ -137,6 +139,7 @@ export class AccountValueEncoding implements IDatabaseEncoding { const hasMultisigKeys = flags & (1 << 2) const hasProofAuthorizingKey = flags & (1 << 3) const scanningEnabled = Boolean(flags & (1 << 4)) + const isLedger = Boolean(flags & (1 << 6)) const id = reader.readVarString('utf8') const name = reader.readVarString('utf8') const spendingKey = hasSpendingKey ? reader.readBytes(KEY_LENGTH).toString('hex') : null @@ -176,6 +179,7 @@ export class AccountValueEncoding implements IDatabaseEncoding { scanningEnabled, multisigKeys, proofAuthorizingKey, + isLedger, } } diff --git a/ironfish/src/wallet/walletdb/walletdb.test.ts b/ironfish/src/wallet/walletdb/walletdb.test.ts index d24515d7e9..ff9cf354bb 100644 --- a/ironfish/src/wallet/walletdb/walletdb.test.ts +++ b/ironfish/src/wallet/walletdb/walletdb.test.ts @@ -638,6 +638,7 @@ describe('WalletDB', () => { version: 1, createdAt: null, scanningEnabled: false, + isLedger: false, ...key, } const account = new Account({ accountValue, walletDb }) @@ -657,6 +658,7 @@ describe('WalletDB', () => { version: 1, createdAt: null, scanningEnabled: false, + isLedger: false, ...key, } const account = new Account({ accountValue, walletDb }) @@ -687,6 +689,7 @@ describe('WalletDB', () => { version: 1, createdAt: null, scanningEnabled: false, + isLedger: false, ...key, } const account = new Account({ accountValue, walletDb }) @@ -710,6 +713,7 @@ describe('WalletDB', () => { version: 1, createdAt: null, scanningEnabled: false, + isLedger: false, ...key, } const account = new Account({ accountValue, walletDb })