diff --git a/apps/extension/package.json b/apps/extension/package.json index ef65745b..5b937c16 100644 --- a/apps/extension/package.json +++ b/apps/extension/package.json @@ -18,21 +18,21 @@ "@bufbuild/protobuf": "^1.x", "@connectrpc/connect": "^1.x", "@connectrpc/connect-web": "^1.x", - "@penumbra-labs/registry": "^12.1.0", - "@penumbra-zone/bech32m": "11.0.0", + "@penumbra-labs/registry": "^12.1.1", + "@penumbra-zone/bech32m": "12.0.0", "@penumbra-zone/client": "22.0.0", - "@penumbra-zone/crypto-web": "33.0.0", - "@penumbra-zone/getters": "21.0.0", + "@penumbra-zone/crypto-web": "34.0.0", + "@penumbra-zone/getters": "22.0.0", "@penumbra-zone/keys": "4.2.1", - "@penumbra-zone/perspective": "44.0.0", - "@penumbra-zone/protobuf": "7.0.0", + "@penumbra-zone/perspective": "45.0.0", + "@penumbra-zone/protobuf": "7.1.0", "@penumbra-zone/query": "workspace:*", - "@penumbra-zone/services": "49.0.0", - "@penumbra-zone/storage": "44.0.0", + "@penumbra-zone/services": "50.0.0", + "@penumbra-zone/storage": "45.0.0", "@penumbra-zone/transport-chrome": "8.0.1", "@penumbra-zone/transport-dom": "7.5.0", - "@penumbra-zone/types": "27.1.0", - "@penumbra-zone/wasm": "37.1.0", + "@penumbra-zone/types": "28.0.0", + "@penumbra-zone/wasm": "38.0.0", "@radix-ui/react-icons": "^1.3.2", "@repo/context": "workspace:*", "@repo/ui": "workspace:*", diff --git a/packages/context/package.json b/packages/context/package.json index 477c4053..d2a4d754 100644 --- a/packages/context/package.json +++ b/packages/context/package.json @@ -17,20 +17,20 @@ }, "peerDependencies": { "@bufbuild/protobuf": "^1.x", - "@penumbra-labs/registry": "^12.1.0", - "@penumbra-zone/bech32m": "11.0.0", - "@penumbra-zone/crypto-web": "33.0.0", - "@penumbra-zone/getters": "21.0.0", + "@penumbra-labs/registry": "^12.1.1", + "@penumbra-zone/bech32m": "12.0.0", + "@penumbra-zone/crypto-web": "34.0.0", + "@penumbra-zone/getters": "22.0.0", "@penumbra-zone/keys": "4.2.1", - "@penumbra-zone/perspective": "44.0.0", - "@penumbra-zone/protobuf": "7.0.0", + "@penumbra-zone/perspective": "45.0.0", + "@penumbra-zone/protobuf": "7.1.0", "@penumbra-zone/query": "workspace:*", - "@penumbra-zone/services": "49.0.0", - "@penumbra-zone/storage": "44.0.0", + "@penumbra-zone/services": "50.0.0", + "@penumbra-zone/storage": "45.0.0", "@penumbra-zone/transport-chrome": "8.0.1", "@penumbra-zone/transport-dom": "7.5.0", - "@penumbra-zone/types": "27.1.0", - "@penumbra-zone/wasm": "37.1.0", + "@penumbra-zone/types": "28.0.0", + "@penumbra-zone/wasm": "38.0.0", "exponential-backoff": "^3.1.1" } } diff --git a/packages/noble/package.json b/packages/noble/package.json index d5ba8b7d..7a442d62 100644 --- a/packages/noble/package.json +++ b/packages/noble/package.json @@ -17,8 +17,8 @@ }, "dependencies": { "@cosmjs/stargate": "^0.32.4", - "@penumbra-zone/bech32m": "11.0.0", - "@penumbra-zone/protobuf": "7.0.0", - "@penumbra-zone/wasm": "37.1.0" + "@penumbra-zone/bech32m": "12.0.0", + "@penumbra-zone/protobuf": "7.1.0", + "@penumbra-zone/wasm": "38.0.0" } } diff --git a/packages/query/package.json b/packages/query/package.json index 0f41fb29..2a5033d0 100644 --- a/packages/query/package.json +++ b/packages/query/package.json @@ -26,12 +26,12 @@ "@bufbuild/protobuf": "^1.x", "@connectrpc/connect": "^1.x", "@connectrpc/connect-web": "^1.x", - "@penumbra-zone/bech32m": "11.0.0", - "@penumbra-zone/crypto-web": "33.0.0", - "@penumbra-zone/getters": "21.0.0", - "@penumbra-zone/protobuf": "7.0.0", - "@penumbra-zone/types": "27.1.0", - "@penumbra-zone/wasm": "37.1.0", + "@penumbra-zone/bech32m": "12.0.0", + "@penumbra-zone/crypto-web": "34.0.0", + "@penumbra-zone/getters": "22.0.0", + "@penumbra-zone/protobuf": "7.1.0", + "@penumbra-zone/types": "28.0.0", + "@penumbra-zone/wasm": "38.0.0", "exponential-backoff": "^3.1.1" }, "engine": { diff --git a/packages/query/src/block-processor.ts b/packages/query/src/block-processor.ts index c30fa511..e006ad9e 100644 --- a/packages/query/src/block-processor.ts +++ b/packages/query/src/block-processor.ts @@ -31,7 +31,7 @@ import { processActionDutchAuctionEnd } from './helpers/process-action-dutch-auc import { processActionDutchAuctionSchedule } from './helpers/process-action-dutch-auction-schedule'; import { processActionDutchAuctionWithdraw } from './helpers/process-action-dutch-auction-withdraw'; import { RootQuerier } from './root-querier'; -import { IdentityKey } from '@penumbra-zone/protobuf/penumbra/core/keys/v1/keys_pb'; +import { AddressIndex, IdentityKey } from '@penumbra-zone/protobuf/penumbra/core/keys/v1/keys_pb'; import { getDelegationTokenMetadata } from '@penumbra-zone/wasm/stake'; import { toPlainMessage } from '@bufbuild/protobuf'; import { getAssetIdFromGasPrices } from '@penumbra-zone/getters/compact-block'; @@ -309,7 +309,7 @@ export class BlockProcessor implements BlockProcessorInterface { // if a new record involves a state commitment, scan all block tx if (spentNullifiers.size || recordsByCommitment.size) { - // this is a network query + // compact block doesn't store transactions data, this query request it by rpc call const blockTx = await this.querier.app.txsByHeight(compactBlock.height); // Filter down to transactions & note records in block relevant to user @@ -494,7 +494,7 @@ export class BlockProcessor implements BlockProcessorInterface { // Nullifier is published in network when a note is spent or swap is claimed. private async resolveNullifiers(nullifiers: Nullifier[], height: bigint) { - const spentNullifiers = new Set(); + const spentNullifiers = new Map(); const readOperations = []; const writeOperations = []; @@ -518,8 +518,6 @@ export class BlockProcessor implements BlockProcessorInterface { continue; } - spentNullifiers.add(nullifier); - if (record instanceof SpendableNoteRecord) { record.heightSpent = height; const writePromise = this.indexedDb.saveSpendableNote({ @@ -535,6 +533,8 @@ export class BlockProcessor implements BlockProcessorInterface { }); writeOperations.push(writePromise); } + + spentNullifiers.set(nullifier, record); } // Await all writes in parallel @@ -548,9 +548,12 @@ export class BlockProcessor implements BlockProcessorInterface { * such as metadata, liquidity positions, etc. */ private async processTransactions(txs: RelevantTx[]) { - for (const { data } of txs) { + for (const { data, subaccount } of txs) { for (const { action } of data.body?.actions ?? []) { - await Promise.all([this.identifyAuctionNfts(action), this.identifyLpNftPositions(action)]); + await Promise.all([ + this.identifyAuctionNfts(action), + this.identifyLpNftPositions(action, subaccount), + ]); } } } @@ -582,7 +585,7 @@ export class BlockProcessor implements BlockProcessorInterface { * - generate all possible position state metadata * - update idb */ - private async identifyLpNftPositions(action: Action['action']) { + private async identifyLpNftPositions(action: Action['action'], subaccount?: AddressIndex) { if (action.case === 'positionOpen' && action.value.position) { for (const state of POSITION_STATES) { const metadata = getLpNftMetadata(computePositionId(action.value.position), state); @@ -597,12 +600,14 @@ export class BlockProcessor implements BlockProcessorInterface { await this.indexedDb.addPosition( computePositionId(action.value.position), action.value.position, + subaccount, ); } if (action.case === 'positionClose' && action.value.positionId) { await this.indexedDb.updatePosition( action.value.positionId, new PositionState({ state: PositionState_PositionStateEnum.CLOSED }), + subaccount, ); } if (action.case === 'positionWithdraw' && action.value.positionId) { @@ -618,7 +623,7 @@ export class BlockProcessor implements BlockProcessorInterface { penumbraAssetId: getAssetId(metadata), }); - await this.indexedDb.updatePosition(action.value.positionId, positionState); + await this.indexedDb.updatePosition(action.value.positionId, positionState, subaccount); } } diff --git a/packages/query/src/helpers/identify-txs.test.ts b/packages/query/src/helpers/identify-txs.test.ts index 9e6e9c1e..47732285 100644 --- a/packages/query/src/helpers/identify-txs.test.ts +++ b/packages/query/src/helpers/identify-txs.test.ts @@ -31,7 +31,7 @@ import { IbcRelay, } from '@penumbra-zone/protobuf/penumbra/core/component/ibc/v1/ibc_pb'; import { addressFromBech32m } from '@penumbra-zone/bech32m/penumbra'; -import { Address } from '@penumbra-zone/protobuf/penumbra/core/keys/v1/keys_pb'; +import { Address, AddressIndex } from '@penumbra-zone/protobuf/penumbra/core/keys/v1/keys_pb'; import { Packet } from '@penumbra-zone/protobuf/ibc/core/channel/v1/channel_pb'; import { MsgAcknowledgement, @@ -214,10 +214,12 @@ describe('getNullifiersFromActions', () => { }); describe('identifyTransactions', () => { + const MAIN_ACCOUNT = new AddressIndex({ account: 0 }); + test('returns empty arrays when no relevant transactions are found', async () => { const tx = new Transaction(); const blockTx = [tx]; - const spentNullifiers = new Set(); + const spentNullifiers = new Map(); const commitmentRecords = new Map(); const result = await identifyTransactions( @@ -231,8 +233,8 @@ describe('identifyTransactions', () => { expect(result.recoveredSourceRecords).toEqual([]); }); - test('identifies relevant transactions and recovers sources', async () => { - // Transaction 1: Matching nullifier + test('identifies relevant transactions by nullifiers', async () => { + // Relevant nullifier const nullifier = new Nullifier({ inner: new Uint8Array([1, 2, 3]) }); const tx1 = new Transaction({ body: new TransactionBody({ @@ -251,19 +253,16 @@ describe('identifyTransactions', () => { }), }); - // Transaction 2: Matching commitment - const commitment = new StateCommitment({ inner: new Uint8Array([4, 5, 6]) }); + // Irrelevant nullifier const tx2 = new Transaction({ body: new TransactionBody({ actions: [ new Action({ action: { - case: 'output', - value: new Output({ - body: new OutputBody({ - notePayload: { - noteCommitment: commitment, - }, + case: 'spend', + value: new Spend({ + body: new SpendBody({ + nullifier: new Nullifier({ inner: new Uint8Array([4, 5, 6]) }), }), }), }, @@ -272,8 +271,35 @@ describe('identifyTransactions', () => { }), }); - // Transaction 3: Irrelevant commitment - const tx3 = new Transaction({ + const spendableNoteRecord = new SpendableNoteRecord({ + addressIndex: MAIN_ACCOUNT, + source: BLANK_TX_SOURCE, + }); + + const spentNullifiers = new Map([ + [nullifier, spendableNoteRecord], + ]); + const commitmentRecords = new Map(); + + const result = await identifyTransactions( + spentNullifiers, + commitmentRecords, + [ + tx1, // relevant + tx2, // irrelevant + ], + () => false, + ); + + expect(result.relevantTxs.length).toBe(1); + expect(result.relevantTxs[0]?.data.equals(tx1)).toBeTruthy(); + expect(result.relevantTxs[0]?.subaccount?.equals(MAIN_ACCOUNT)).toBeTruthy(); + }); + + test('identifies relevant transactions by commitments and recovers sources', async () => { + // Matching commitment + const commitment = new StateCommitment({ inner: new Uint8Array([4, 5, 6]) }); + const tx1 = new Transaction({ body: new TransactionBody({ actions: [ new Action({ @@ -282,7 +308,7 @@ describe('identifyTransactions', () => { value: new Output({ body: new OutputBody({ notePayload: { - noteCommitment: new StateCommitment({ inner: new Uint8Array([7, 8, 9]) }), + noteCommitment: commitment, }, }), }), @@ -292,16 +318,18 @@ describe('identifyTransactions', () => { }), }); - // Transaction 4: Irrelevant nullifier - const tx4 = new Transaction({ + // Irrelevant commitment + const tx2 = new Transaction({ body: new TransactionBody({ actions: [ new Action({ action: { - case: 'spend', - value: new Spend({ - body: new SpendBody({ - nullifier: new Nullifier({ inner: new Uint8Array([4, 5, 6]) }), + case: 'output', + value: new Output({ + body: new OutputBody({ + notePayload: { + noteCommitment: new StateCommitment({ inner: new Uint8Array([7, 8, 9]) }), + }, }), }), }, @@ -310,9 +338,8 @@ describe('identifyTransactions', () => { }), }); - const spentNullifiers = new Set([nullifier]); - const spendableNoteRecord = new SpendableNoteRecord({ + addressIndex: MAIN_ACCOUNT, source: BLANK_TX_SOURCE, }); @@ -320,6 +347,7 @@ describe('identifyTransactions', () => { [commitment, spendableNoteRecord], // Expecting match [new StateCommitment({ inner: new Uint8Array([1, 6, 9]) }), new SpendableNoteRecord()], // not expecting match ]); + const spentNullifiers = new Map(); const spentNullifiersBeforeSize = spentNullifiers.size; const commitmentRecordsBeforeSize = commitmentRecords.size; @@ -328,15 +356,15 @@ describe('identifyTransactions', () => { commitmentRecords, [ tx1, // relevant - tx2, // relevant - tx3, // not - tx4, // not + tx2, // not ], () => false, ); - expect(result.relevantTxs.length).toBe(2); + expect(result.relevantTxs.length).toBe(1); expect(result.recoveredSourceRecords.length).toBe(1); + expect(result.relevantTxs[0]?.data.equals(tx1)).toBeTruthy(); + expect(result.relevantTxs[0]?.subaccount?.equals(MAIN_ACCOUNT)).toBeTruthy(); // Source was recovered expect(result.recoveredSourceRecords[0]!.source?.equals(BLANK_TX_SOURCE)).toEqual(false); @@ -351,6 +379,8 @@ describe('identifyTransactions', () => { 'penumbra1e8k5cyds484dxvapeamwveh5khqv4jsvyvaf5wwxaaccgfghm229qw03pcar3ryy8smptevstycch0qk3uu0rgkvtjpxy3cu3rjd0agawqtlz6erev28a6sg69u7cxy0t02nd4'; const unknownAddr = 'penumbracompat1147mfall0zr6am5r45qkwht7xqqrdsp50czde7empv7yq2nk3z8yyfh9k9520ddgswkmzar22vhz9dwtuem7uxw0qytfpv7lk3q9dp8ccaw2fn5c838rfackazmgf3ahhwqq0da'; + const isControlledByAddress = (addr: Address) => + addr.equals(new Address(addressFromBech32m(knownAddr))); test('identifies relevant MsgRecvPacket', async () => { const txA = new Transaction({ @@ -364,11 +394,14 @@ describe('identifyTransactions', () => { }, }); const blockTx = [txA, txB]; - const spentNullifiers = new Set(); + const spentNullifiers = new Map(); const commitmentRecords = new Map(); - const result = await identifyTransactions(spentNullifiers, commitmentRecords, blockTx, addr => - addr.equals(new Address(addressFromBech32m(knownAddr))), + const result = await identifyTransactions( + spentNullifiers, + commitmentRecords, + blockTx, + isControlledByAddress, ); expect(result.relevantTxs.length).toBe(1); @@ -388,11 +421,14 @@ describe('identifyTransactions', () => { }, }); const blockTx = [txA, txB]; - const spentNullifiers = new Set(); + const spentNullifiers = new Map(); const commitmentRecords = new Map(); - const result = await identifyTransactions(spentNullifiers, commitmentRecords, blockTx, addr => - addr.equals(new Address(addressFromBech32m(knownAddr))), + const result = await identifyTransactions( + spentNullifiers, + commitmentRecords, + blockTx, + isControlledByAddress, ); expect(result.relevantTxs.length).toBe(1); @@ -412,11 +448,14 @@ describe('identifyTransactions', () => { }, }); const blockTx = [txA, txB]; - const spentNullifiers = new Set(); + const spentNullifiers = new Map(); const commitmentRecords = new Map(); - const result = await identifyTransactions(spentNullifiers, commitmentRecords, blockTx, addr => - addr.equals(new Address(addressFromBech32m(knownAddr))), + const result = await identifyTransactions( + spentNullifiers, + commitmentRecords, + blockTx, + isControlledByAddress, ); expect(result.relevantTxs.length).toBe(1); @@ -435,11 +474,14 @@ describe('identifyTransactions', () => { }, }); const blockTx = [tx]; - const spentNullifiers = new Set(); + const spentNullifiers = new Map(); const commitmentRecords = new Map(); - const result = await identifyTransactions(spentNullifiers, commitmentRecords, blockTx, addr => - addr.equals(new Address(addressFromBech32m(knownAddr))), + const result = await identifyTransactions( + spentNullifiers, + commitmentRecords, + blockTx, + isControlledByAddress, ); expect(result.relevantTxs.length).toBe(0); @@ -473,11 +515,14 @@ describe('identifyTransactions', () => { }, }); const blockTx = [tx]; - const spentNullifiers = new Set(); + const spentNullifiers = new Map(); const commitmentRecords = new Map(); - const result = await identifyTransactions(spentNullifiers, commitmentRecords, blockTx, addr => - addr.equals(new Address(addressFromBech32m(knownAddr))), + const result = await identifyTransactions( + spentNullifiers, + commitmentRecords, + blockTx, + isControlledByAddress, ); expect(result.relevantTxs.length).toBe(0); diff --git a/packages/query/src/helpers/identify-txs.ts b/packages/query/src/helpers/identify-txs.ts index 4caff3b2..4adb602f 100644 --- a/packages/query/src/helpers/identify-txs.ts +++ b/packages/query/src/helpers/identify-txs.ts @@ -16,6 +16,7 @@ import { FungibleTokenPacketData } from '@penumbra-zone/protobuf/penumbra/core/c import { ViewServerInterface } from '@penumbra-zone/types/servers'; import { parseIntoAddr } from '@penumbra-zone/types/address'; import { Packet } from '@penumbra-zone/protobuf/ibc/core/channel/v1/channel_pb'; +import { AddressIndex } from '@penumbra-zone/protobuf/penumbra/core/keys/v1/keys_pb'; export const BLANK_TX_SOURCE = new CommitmentSource({ source: { case: 'transaction', value: { id: new Uint8Array() } }, @@ -23,6 +24,7 @@ export const BLANK_TX_SOURCE = new CommitmentSource({ /** * Identifies if a tx has a relay action of which the receiver is the user. + * * In terms of minting notes in the shielded pool, three IBC actions are relevant: * - MsgRecvPacket (containing an ICS20 inbound transfer) * - MsgAcknowledgement (containing an error acknowledgement, thus triggering a refund on our end) @@ -31,47 +33,49 @@ export const BLANK_TX_SOURCE = new CommitmentSource({ const hasRelevantIbcRelay = ( tx: Transaction, isControlledAddr: ViewServerInterface['isControlledAddress'], -) => { - return tx.body?.actions.some(action => { - if (action.action.case !== 'ibcRelayAction') { - return false; - } - - const rawAction = action.action.value.rawAction; - if (!rawAction) { - return false; - } - - if (rawAction.is(MsgRecvPacket.typeName)) { - const recvPacket = new MsgRecvPacket(); - rawAction.unpackTo(recvPacket); - if (!recvPacket.packet) { +): boolean => { + return ( + tx.body?.actions.some(action => { + if (action.action.case !== 'ibcRelayAction') { return false; } - return isControlledByUser(recvPacket.packet, isControlledAddr, 'receiver'); - } - if (rawAction.is(MsgAcknowledgement.typeName)) { - const ackPacket = new MsgAcknowledgement(); - rawAction.unpackTo(ackPacket); - if (!ackPacket.packet) { + const rawAction = action.action.value.rawAction; + if (!rawAction) { return false; } - return isControlledByUser(ackPacket.packet, isControlledAddr, 'sender'); - } - if (rawAction.is(MsgTimeout.typeName)) { - const timeout = new MsgTimeout(); - rawAction.unpackTo(timeout); - if (!timeout.packet) { - return false; + if (rawAction.is(MsgRecvPacket.typeName)) { + const recvPacket = new MsgRecvPacket(); + rawAction.unpackTo(recvPacket); + if (!recvPacket.packet) { + return false; + } + return isControlledByUser(recvPacket.packet, isControlledAddr, 'receiver'); } - return isControlledByUser(timeout.packet, isControlledAddr, 'sender'); - } - // Not a potentially relevant ibc relay action - return false; - }); + if (rawAction.is(MsgAcknowledgement.typeName)) { + const ackPacket = new MsgAcknowledgement(); + rawAction.unpackTo(ackPacket); + if (!ackPacket.packet) { + return false; + } + return isControlledByUser(ackPacket.packet, isControlledAddr, 'sender'); + } + + if (rawAction.is(MsgTimeout.typeName)) { + const timeout = new MsgTimeout(); + rawAction.unpackTo(timeout); + if (!timeout.packet) { + return false; + } + return isControlledByUser(timeout.packet, isControlledAddr, 'sender'); + } + + // Not a potentially relevant ibc relay action + return false; + }) ?? false + ); }; // Determines if the packet data points to the user as the receiver @@ -139,6 +143,7 @@ export const getNullifiersFromActions = (tx: Transaction): Nullifier[] => { export interface RelevantTx { id: TransactionId; data: Transaction; + subaccount?: AddressIndex; } type RecoveredSourceRecords = (SpendableNoteRecord | SwapRecord)[]; @@ -147,28 +152,52 @@ const generateTxId = async (tx: Transaction): Promise => { return new TransactionId({ inner: await sha256Hash(tx.toBinary()) }); }; +const isSpendableNoteRecord = ( + note: SpendableNoteRecord | SwapRecord, +): note is SpendableNoteRecord => { + return note.getType().typeName === SpendableNoteRecord.typeName; +}; +const getAddressIndexFromNote = ( + note: SpendableNoteRecord | SwapRecord, +): AddressIndex | undefined => { + if (isSpendableNoteRecord(note)) { + return note.addressIndex; + } + return undefined; +}; + +/** + * Takes a transaction and compares its actions to previously-found nullifiers and state commitments, + * which point to SpendableNoteRecords and SwapRecords. If matches, creates txId and tries to get a subaccount. + */ const searchRelevant = async ( tx: Transaction, - spentNullifiers: Set, + spentNullifiers: Map, commitmentRecords: Map, isControlledAddr: ViewServerInterface['isControlledAddress'], ): Promise< { relevantTx: RelevantTx; recoveredSourceRecords: RecoveredSourceRecords } | undefined > => { let txId: TransactionId | undefined; // If set, that means this tx is relevant and should be returned to the caller + let subaccount: AddressIndex | undefined; const recoveredSourceRecords: RecoveredSourceRecords = []; + // matches spend/swapClaim transaction actions with nullifiers const txNullifiers = getNullifiersFromActions(tx); - for (const spentNullifier of spentNullifiers) { - if (txNullifiers.some(txNullifier => spentNullifier.equals(txNullifier))) { + for (const [spentNullifier, spendableNoteRecord] of spentNullifiers) { + const nullifier = txNullifiers.find(txNullifier => spentNullifier.equals(txNullifier)); + if (nullifier) { txId ??= await generateTxId(tx); + subaccount = getAddressIndexFromNote(spendableNoteRecord); } } + // matches output/swap/swapClaim transaction actions with commitments const txCommitments = getCommitmentsFromActions(tx); for (const [stateCommitment, spendableNoteRecord] of commitmentRecords) { if (txCommitments.some(txCommitment => stateCommitment.equals(txCommitment))) { txId ??= await generateTxId(tx); + subaccount = getAddressIndexFromNote(spendableNoteRecord); // Blank sources can be recovered by associating them with the transaction if (BLANK_TX_SOURCE.equals(spendableNoteRecord.source)) { @@ -181,13 +210,14 @@ const searchRelevant = async ( } } + // finds if either source or destination of an IBC relay action is controlled by the user if (hasRelevantIbcRelay(tx, isControlledAddr)) { txId ??= await generateTxId(tx); } if (txId) { return { - relevantTx: { id: txId, data: tx }, + relevantTx: { id: txId, data: tx, subaccount }, recoveredSourceRecords, }; } @@ -195,10 +225,12 @@ const searchRelevant = async ( return undefined; }; -// identify transactions that involve a new record by comparing nullifiers and state commitments -// also returns records with recovered sources +/** + * Identifies transactions relevant to a user by comparing nullifiers and state commitments. + * Also returns records with recovered sources. + */ export const identifyTransactions = async ( - spentNullifiers: Set, + spentNullifiers: Map, commitmentRecords: Map, blockTx: Transaction[], isControlledAddr: ViewServerInterface['isControlledAddress'], diff --git a/packages/ui/package.json b/packages/ui/package.json index e0456b32..0de72f27 100644 --- a/packages/ui/package.json +++ b/packages/ui/package.json @@ -29,13 +29,13 @@ "dependencies": { "@emotion/react": "^11.14.0", "@emotion/styled": "^11.14.0", - "@penumbra-labs/registry": "^12.1.0", - "@penumbra-zone/bech32m": "11.0.0", - "@penumbra-zone/getters": "21.0.0", - "@penumbra-zone/perspective": "44.0.0", - "@penumbra-zone/protobuf": "7.0.0", - "@penumbra-zone/types": "27.1.0", - "@penumbra-zone/wasm": "37.1.0", + "@penumbra-labs/registry": "^12.1.1", + "@penumbra-zone/bech32m": "12.0.0", + "@penumbra-zone/getters": "22.0.0", + "@penumbra-zone/perspective": "45.0.0", + "@penumbra-zone/protobuf": "7.1.0", + "@penumbra-zone/types": "28.0.0", + "@penumbra-zone/wasm": "38.0.0", "@radix-ui/react-avatar": "^1.1.2", "@radix-ui/react-checkbox": "^1.1.3", "@radix-ui/react-dialog": "1.1.1", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 5a55cf55..5602bdb1 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -87,38 +87,38 @@ importers: specifier: ^1.x version: 1.4.0(@bufbuild/protobuf@1.10.0)(@connectrpc/connect@1.4.0(@bufbuild/protobuf@1.10.0)) '@penumbra-labs/registry': - specifier: ^12.1.0 - version: 12.1.0 + specifier: ^12.1.1 + version: 12.1.1 '@penumbra-zone/bech32m': - specifier: 11.0.0 - version: 11.0.0(@penumbra-zone/protobuf@7.0.0(@bufbuild/protobuf@1.10.0)) + specifier: 12.0.0 + version: 12.0.0(@penumbra-zone/protobuf@7.1.0(@bufbuild/protobuf@1.10.0)) '@penumbra-zone/client': specifier: 22.0.0 - version: 22.0.0(@bufbuild/protobuf@1.10.0)(@connectrpc/connect@1.4.0(@bufbuild/protobuf@1.10.0))(@penumbra-zone/protobuf@7.0.0(@bufbuild/protobuf@1.10.0))(@penumbra-zone/transport-dom@7.5.0) + version: 22.0.0(@bufbuild/protobuf@1.10.0)(@connectrpc/connect@1.4.0(@bufbuild/protobuf@1.10.0))(@penumbra-zone/protobuf@7.1.0(@bufbuild/protobuf@1.10.0))(@penumbra-zone/transport-dom@7.5.0) '@penumbra-zone/crypto-web': - specifier: 33.0.0 - version: 33.0.0(@penumbra-zone/types@27.1.0(@bufbuild/protobuf@1.10.0)(@penumbra-zone/bech32m@11.0.0(@penumbra-zone/protobuf@7.0.0(@bufbuild/protobuf@1.10.0)))(@penumbra-zone/getters@21.0.0(@bufbuild/protobuf@1.10.0)(@penumbra-zone/bech32m@11.0.0(@penumbra-zone/protobuf@7.0.0(@bufbuild/protobuf@1.10.0)))(@penumbra-zone/protobuf@7.0.0(@bufbuild/protobuf@1.10.0)))(@penumbra-zone/protobuf@7.0.0(@bufbuild/protobuf@1.10.0))) + specifier: 34.0.0 + version: 34.0.0(@penumbra-zone/types@28.0.0(@bufbuild/protobuf@1.10.0)(@penumbra-zone/bech32m@12.0.0(@penumbra-zone/protobuf@7.1.0(@bufbuild/protobuf@1.10.0)))(@penumbra-zone/getters@22.0.0(@bufbuild/protobuf@1.10.0)(@penumbra-zone/bech32m@12.0.0(@penumbra-zone/protobuf@7.1.0(@bufbuild/protobuf@1.10.0)))(@penumbra-zone/protobuf@7.1.0(@bufbuild/protobuf@1.10.0)))(@penumbra-zone/protobuf@7.1.0(@bufbuild/protobuf@1.10.0))) '@penumbra-zone/getters': - specifier: 21.0.0 - version: 21.0.0(@bufbuild/protobuf@1.10.0)(@penumbra-zone/bech32m@11.0.0(@penumbra-zone/protobuf@7.0.0(@bufbuild/protobuf@1.10.0)))(@penumbra-zone/protobuf@7.0.0(@bufbuild/protobuf@1.10.0)) + specifier: 22.0.0 + version: 22.0.0(@bufbuild/protobuf@1.10.0)(@penumbra-zone/bech32m@12.0.0(@penumbra-zone/protobuf@7.1.0(@bufbuild/protobuf@1.10.0)))(@penumbra-zone/protobuf@7.1.0(@bufbuild/protobuf@1.10.0)) '@penumbra-zone/keys': specifier: 4.2.1 version: 4.2.1 '@penumbra-zone/perspective': - specifier: 44.0.0 - version: 44.0.0(@bufbuild/protobuf@1.10.0)(@penumbra-zone/bech32m@11.0.0(@penumbra-zone/protobuf@7.0.0(@bufbuild/protobuf@1.10.0)))(@penumbra-zone/getters@21.0.0(@bufbuild/protobuf@1.10.0)(@penumbra-zone/bech32m@11.0.0(@penumbra-zone/protobuf@7.0.0(@bufbuild/protobuf@1.10.0)))(@penumbra-zone/protobuf@7.0.0(@bufbuild/protobuf@1.10.0)))(@penumbra-zone/protobuf@7.0.0(@bufbuild/protobuf@1.10.0))(@penumbra-zone/wasm@37.1.0(@bufbuild/protobuf@1.10.0)(@penumbra-zone/bech32m@11.0.0(@penumbra-zone/protobuf@7.0.0(@bufbuild/protobuf@1.10.0)))(@penumbra-zone/protobuf@7.0.0(@bufbuild/protobuf@1.10.0))(@penumbra-zone/types@27.1.0(@bufbuild/protobuf@1.10.0)(@penumbra-zone/bech32m@11.0.0(@penumbra-zone/protobuf@7.0.0(@bufbuild/protobuf@1.10.0)))(@penumbra-zone/getters@21.0.0(@bufbuild/protobuf@1.10.0)(@penumbra-zone/bech32m@11.0.0(@penumbra-zone/protobuf@7.0.0(@bufbuild/protobuf@1.10.0)))(@penumbra-zone/protobuf@7.0.0(@bufbuild/protobuf@1.10.0)))(@penumbra-zone/protobuf@7.0.0(@bufbuild/protobuf@1.10.0)))) + specifier: 45.0.0 + version: 45.0.0(@bufbuild/protobuf@1.10.0)(@penumbra-zone/bech32m@12.0.0(@penumbra-zone/protobuf@7.1.0(@bufbuild/protobuf@1.10.0)))(@penumbra-zone/getters@22.0.0(@bufbuild/protobuf@1.10.0)(@penumbra-zone/bech32m@12.0.0(@penumbra-zone/protobuf@7.1.0(@bufbuild/protobuf@1.10.0)))(@penumbra-zone/protobuf@7.1.0(@bufbuild/protobuf@1.10.0)))(@penumbra-zone/protobuf@7.1.0(@bufbuild/protobuf@1.10.0))(@penumbra-zone/wasm@38.0.0(@bufbuild/protobuf@1.10.0)(@penumbra-zone/bech32m@12.0.0(@penumbra-zone/protobuf@7.1.0(@bufbuild/protobuf@1.10.0)))(@penumbra-zone/protobuf@7.1.0(@bufbuild/protobuf@1.10.0))(@penumbra-zone/types@28.0.0(@bufbuild/protobuf@1.10.0)(@penumbra-zone/bech32m@12.0.0(@penumbra-zone/protobuf@7.1.0(@bufbuild/protobuf@1.10.0)))(@penumbra-zone/getters@22.0.0(@bufbuild/protobuf@1.10.0)(@penumbra-zone/bech32m@12.0.0(@penumbra-zone/protobuf@7.1.0(@bufbuild/protobuf@1.10.0)))(@penumbra-zone/protobuf@7.1.0(@bufbuild/protobuf@1.10.0)))(@penumbra-zone/protobuf@7.1.0(@bufbuild/protobuf@1.10.0)))) '@penumbra-zone/protobuf': - specifier: 7.0.0 - version: 7.0.0(@bufbuild/protobuf@1.10.0) + specifier: 7.1.0 + version: 7.1.0(@bufbuild/protobuf@1.10.0) '@penumbra-zone/query': specifier: workspace:* version: link:../../packages/query '@penumbra-zone/services': - specifier: 49.0.0 - version: 49.0.0(l7py2ksgkyybqzdou5jhjlpgh4) + specifier: 50.0.0 + version: 50.0.0(lza7qckvh64shmlmpshsx6biha) '@penumbra-zone/storage': - specifier: 44.0.0 - version: 44.0.0(gnh36gjrbemlheeqdxogu4sxba) + specifier: 45.0.0 + version: 45.0.0(awl26aycocmjpf6gi6bixzjtoy) '@penumbra-zone/transport-chrome': specifier: 8.0.1 version: 8.0.1(@bufbuild/protobuf@1.10.0)(@connectrpc/connect@1.4.0(@bufbuild/protobuf@1.10.0))(@penumbra-zone/transport-dom@7.5.0) @@ -126,11 +126,11 @@ importers: specifier: 7.5.0 version: 7.5.0 '@penumbra-zone/types': - specifier: 27.1.0 - version: 27.1.0(@bufbuild/protobuf@1.10.0)(@penumbra-zone/bech32m@11.0.0(@penumbra-zone/protobuf@7.0.0(@bufbuild/protobuf@1.10.0)))(@penumbra-zone/getters@21.0.0(@bufbuild/protobuf@1.10.0)(@penumbra-zone/bech32m@11.0.0(@penumbra-zone/protobuf@7.0.0(@bufbuild/protobuf@1.10.0)))(@penumbra-zone/protobuf@7.0.0(@bufbuild/protobuf@1.10.0)))(@penumbra-zone/protobuf@7.0.0(@bufbuild/protobuf@1.10.0)) + specifier: 28.0.0 + version: 28.0.0(@bufbuild/protobuf@1.10.0)(@penumbra-zone/bech32m@12.0.0(@penumbra-zone/protobuf@7.1.0(@bufbuild/protobuf@1.10.0)))(@penumbra-zone/getters@22.0.0(@bufbuild/protobuf@1.10.0)(@penumbra-zone/bech32m@12.0.0(@penumbra-zone/protobuf@7.1.0(@bufbuild/protobuf@1.10.0)))(@penumbra-zone/protobuf@7.1.0(@bufbuild/protobuf@1.10.0)))(@penumbra-zone/protobuf@7.1.0(@bufbuild/protobuf@1.10.0)) '@penumbra-zone/wasm': - specifier: 37.1.0 - version: 37.1.0(@bufbuild/protobuf@1.10.0)(@penumbra-zone/bech32m@11.0.0(@penumbra-zone/protobuf@7.0.0(@bufbuild/protobuf@1.10.0)))(@penumbra-zone/protobuf@7.0.0(@bufbuild/protobuf@1.10.0))(@penumbra-zone/types@27.1.0(@bufbuild/protobuf@1.10.0)(@penumbra-zone/bech32m@11.0.0(@penumbra-zone/protobuf@7.0.0(@bufbuild/protobuf@1.10.0)))(@penumbra-zone/getters@21.0.0(@bufbuild/protobuf@1.10.0)(@penumbra-zone/bech32m@11.0.0(@penumbra-zone/protobuf@7.0.0(@bufbuild/protobuf@1.10.0)))(@penumbra-zone/protobuf@7.0.0(@bufbuild/protobuf@1.10.0)))(@penumbra-zone/protobuf@7.0.0(@bufbuild/protobuf@1.10.0))) + specifier: 38.0.0 + version: 38.0.0(@bufbuild/protobuf@1.10.0)(@penumbra-zone/bech32m@12.0.0(@penumbra-zone/protobuf@7.1.0(@bufbuild/protobuf@1.10.0)))(@penumbra-zone/protobuf@7.1.0(@bufbuild/protobuf@1.10.0))(@penumbra-zone/types@28.0.0(@bufbuild/protobuf@1.10.0)(@penumbra-zone/bech32m@12.0.0(@penumbra-zone/protobuf@7.1.0(@bufbuild/protobuf@1.10.0)))(@penumbra-zone/getters@22.0.0(@bufbuild/protobuf@1.10.0)(@penumbra-zone/bech32m@12.0.0(@penumbra-zone/protobuf@7.1.0(@bufbuild/protobuf@1.10.0)))(@penumbra-zone/protobuf@7.1.0(@bufbuild/protobuf@1.10.0)))(@penumbra-zone/protobuf@7.1.0(@bufbuild/protobuf@1.10.0))) '@radix-ui/react-icons': specifier: ^1.3.2 version: 1.3.2(react@18.3.1) @@ -256,35 +256,35 @@ importers: specifier: ^1.x version: 1.10.0 '@penumbra-labs/registry': - specifier: ^12.1.0 - version: 12.1.0 + specifier: ^12.1.1 + version: 12.1.1 '@penumbra-zone/bech32m': - specifier: 11.0.0 - version: 11.0.0(@penumbra-zone/protobuf@7.0.0(@bufbuild/protobuf@1.10.0)) + specifier: 12.0.0 + version: 12.0.0(@penumbra-zone/protobuf@7.1.0(@bufbuild/protobuf@1.10.0)) '@penumbra-zone/crypto-web': - specifier: 33.0.0 - version: 33.0.0(@penumbra-zone/types@27.1.0(@bufbuild/protobuf@1.10.0)(@penumbra-zone/bech32m@11.0.0(@penumbra-zone/protobuf@7.0.0(@bufbuild/protobuf@1.10.0)))(@penumbra-zone/getters@21.0.0(@bufbuild/protobuf@1.10.0)(@penumbra-zone/bech32m@11.0.0(@penumbra-zone/protobuf@7.0.0(@bufbuild/protobuf@1.10.0)))(@penumbra-zone/protobuf@7.0.0(@bufbuild/protobuf@1.10.0)))(@penumbra-zone/protobuf@7.0.0(@bufbuild/protobuf@1.10.0))) + specifier: 34.0.0 + version: 34.0.0(@penumbra-zone/types@28.0.0(@bufbuild/protobuf@1.10.0)(@penumbra-zone/bech32m@12.0.0(@penumbra-zone/protobuf@7.1.0(@bufbuild/protobuf@1.10.0)))(@penumbra-zone/getters@22.0.0(@bufbuild/protobuf@1.10.0)(@penumbra-zone/bech32m@12.0.0(@penumbra-zone/protobuf@7.1.0(@bufbuild/protobuf@1.10.0)))(@penumbra-zone/protobuf@7.1.0(@bufbuild/protobuf@1.10.0)))(@penumbra-zone/protobuf@7.1.0(@bufbuild/protobuf@1.10.0))) '@penumbra-zone/getters': - specifier: 21.0.0 - version: 21.0.0(@bufbuild/protobuf@1.10.0)(@penumbra-zone/bech32m@11.0.0(@penumbra-zone/protobuf@7.0.0(@bufbuild/protobuf@1.10.0)))(@penumbra-zone/protobuf@7.0.0(@bufbuild/protobuf@1.10.0)) + specifier: 22.0.0 + version: 22.0.0(@bufbuild/protobuf@1.10.0)(@penumbra-zone/bech32m@12.0.0(@penumbra-zone/protobuf@7.1.0(@bufbuild/protobuf@1.10.0)))(@penumbra-zone/protobuf@7.1.0(@bufbuild/protobuf@1.10.0)) '@penumbra-zone/keys': specifier: 4.2.1 version: 4.2.1 '@penumbra-zone/perspective': - specifier: 44.0.0 - version: 44.0.0(@bufbuild/protobuf@1.10.0)(@penumbra-zone/bech32m@11.0.0(@penumbra-zone/protobuf@7.0.0(@bufbuild/protobuf@1.10.0)))(@penumbra-zone/getters@21.0.0(@bufbuild/protobuf@1.10.0)(@penumbra-zone/bech32m@11.0.0(@penumbra-zone/protobuf@7.0.0(@bufbuild/protobuf@1.10.0)))(@penumbra-zone/protobuf@7.0.0(@bufbuild/protobuf@1.10.0)))(@penumbra-zone/protobuf@7.0.0(@bufbuild/protobuf@1.10.0))(@penumbra-zone/wasm@37.1.0(@bufbuild/protobuf@1.10.0)(@penumbra-zone/bech32m@11.0.0(@penumbra-zone/protobuf@7.0.0(@bufbuild/protobuf@1.10.0)))(@penumbra-zone/protobuf@7.0.0(@bufbuild/protobuf@1.10.0))(@penumbra-zone/types@27.1.0(@bufbuild/protobuf@1.10.0)(@penumbra-zone/bech32m@11.0.0(@penumbra-zone/protobuf@7.0.0(@bufbuild/protobuf@1.10.0)))(@penumbra-zone/getters@21.0.0(@bufbuild/protobuf@1.10.0)(@penumbra-zone/bech32m@11.0.0(@penumbra-zone/protobuf@7.0.0(@bufbuild/protobuf@1.10.0)))(@penumbra-zone/protobuf@7.0.0(@bufbuild/protobuf@1.10.0)))(@penumbra-zone/protobuf@7.0.0(@bufbuild/protobuf@1.10.0)))) + specifier: 45.0.0 + version: 45.0.0(@bufbuild/protobuf@1.10.0)(@penumbra-zone/bech32m@12.0.0(@penumbra-zone/protobuf@7.1.0(@bufbuild/protobuf@1.10.0)))(@penumbra-zone/getters@22.0.0(@bufbuild/protobuf@1.10.0)(@penumbra-zone/bech32m@12.0.0(@penumbra-zone/protobuf@7.1.0(@bufbuild/protobuf@1.10.0)))(@penumbra-zone/protobuf@7.1.0(@bufbuild/protobuf@1.10.0)))(@penumbra-zone/protobuf@7.1.0(@bufbuild/protobuf@1.10.0))(@penumbra-zone/wasm@38.0.0(@bufbuild/protobuf@1.10.0)(@penumbra-zone/bech32m@12.0.0(@penumbra-zone/protobuf@7.1.0(@bufbuild/protobuf@1.10.0)))(@penumbra-zone/protobuf@7.1.0(@bufbuild/protobuf@1.10.0))(@penumbra-zone/types@28.0.0(@bufbuild/protobuf@1.10.0)(@penumbra-zone/bech32m@12.0.0(@penumbra-zone/protobuf@7.1.0(@bufbuild/protobuf@1.10.0)))(@penumbra-zone/getters@22.0.0(@bufbuild/protobuf@1.10.0)(@penumbra-zone/bech32m@12.0.0(@penumbra-zone/protobuf@7.1.0(@bufbuild/protobuf@1.10.0)))(@penumbra-zone/protobuf@7.1.0(@bufbuild/protobuf@1.10.0)))(@penumbra-zone/protobuf@7.1.0(@bufbuild/protobuf@1.10.0)))) '@penumbra-zone/protobuf': - specifier: 7.0.0 - version: 7.0.0(@bufbuild/protobuf@1.10.0) + specifier: 7.1.0 + version: 7.1.0(@bufbuild/protobuf@1.10.0) '@penumbra-zone/query': specifier: workspace:* version: link:../query '@penumbra-zone/services': - specifier: 49.0.0 - version: 49.0.0(l7py2ksgkyybqzdou5jhjlpgh4) + specifier: 50.0.0 + version: 50.0.0(lza7qckvh64shmlmpshsx6biha) '@penumbra-zone/storage': - specifier: 44.0.0 - version: 44.0.0(gnh36gjrbemlheeqdxogu4sxba) + specifier: 45.0.0 + version: 45.0.0(awl26aycocmjpf6gi6bixzjtoy) '@penumbra-zone/transport-chrome': specifier: 8.0.1 version: 8.0.1(@bufbuild/protobuf@1.10.0)(@connectrpc/connect@1.4.0(@bufbuild/protobuf@1.10.0))(@penumbra-zone/transport-dom@7.5.0) @@ -292,11 +292,11 @@ importers: specifier: 7.5.0 version: 7.5.0 '@penumbra-zone/types': - specifier: 27.1.0 - version: 27.1.0(@bufbuild/protobuf@1.10.0)(@penumbra-zone/bech32m@11.0.0(@penumbra-zone/protobuf@7.0.0(@bufbuild/protobuf@1.10.0)))(@penumbra-zone/getters@21.0.0(@bufbuild/protobuf@1.10.0)(@penumbra-zone/bech32m@11.0.0(@penumbra-zone/protobuf@7.0.0(@bufbuild/protobuf@1.10.0)))(@penumbra-zone/protobuf@7.0.0(@bufbuild/protobuf@1.10.0)))(@penumbra-zone/protobuf@7.0.0(@bufbuild/protobuf@1.10.0)) + specifier: 28.0.0 + version: 28.0.0(@bufbuild/protobuf@1.10.0)(@penumbra-zone/bech32m@12.0.0(@penumbra-zone/protobuf@7.1.0(@bufbuild/protobuf@1.10.0)))(@penumbra-zone/getters@22.0.0(@bufbuild/protobuf@1.10.0)(@penumbra-zone/bech32m@12.0.0(@penumbra-zone/protobuf@7.1.0(@bufbuild/protobuf@1.10.0)))(@penumbra-zone/protobuf@7.1.0(@bufbuild/protobuf@1.10.0)))(@penumbra-zone/protobuf@7.1.0(@bufbuild/protobuf@1.10.0)) '@penumbra-zone/wasm': - specifier: 37.1.0 - version: 37.1.0(@bufbuild/protobuf@1.10.0)(@penumbra-zone/bech32m@11.0.0(@penumbra-zone/protobuf@7.0.0(@bufbuild/protobuf@1.10.0)))(@penumbra-zone/protobuf@7.0.0(@bufbuild/protobuf@1.10.0))(@penumbra-zone/types@27.1.0(@bufbuild/protobuf@1.10.0)(@penumbra-zone/bech32m@11.0.0(@penumbra-zone/protobuf@7.0.0(@bufbuild/protobuf@1.10.0)))(@penumbra-zone/getters@21.0.0(@bufbuild/protobuf@1.10.0)(@penumbra-zone/bech32m@11.0.0(@penumbra-zone/protobuf@7.0.0(@bufbuild/protobuf@1.10.0)))(@penumbra-zone/protobuf@7.0.0(@bufbuild/protobuf@1.10.0)))(@penumbra-zone/protobuf@7.0.0(@bufbuild/protobuf@1.10.0))) + specifier: 38.0.0 + version: 38.0.0(@bufbuild/protobuf@1.10.0)(@penumbra-zone/bech32m@12.0.0(@penumbra-zone/protobuf@7.1.0(@bufbuild/protobuf@1.10.0)))(@penumbra-zone/protobuf@7.1.0(@bufbuild/protobuf@1.10.0))(@penumbra-zone/types@28.0.0(@bufbuild/protobuf@1.10.0)(@penumbra-zone/bech32m@12.0.0(@penumbra-zone/protobuf@7.1.0(@bufbuild/protobuf@1.10.0)))(@penumbra-zone/getters@22.0.0(@bufbuild/protobuf@1.10.0)(@penumbra-zone/bech32m@12.0.0(@penumbra-zone/protobuf@7.1.0(@bufbuild/protobuf@1.10.0)))(@penumbra-zone/protobuf@7.1.0(@bufbuild/protobuf@1.10.0)))(@penumbra-zone/protobuf@7.1.0(@bufbuild/protobuf@1.10.0))) exponential-backoff: specifier: ^3.1.1 version: 3.1.1 @@ -307,14 +307,14 @@ importers: specifier: ^0.32.4 version: 0.32.4 '@penumbra-zone/bech32m': - specifier: 11.0.0 - version: 11.0.0(@penumbra-zone/protobuf@7.0.0(@bufbuild/protobuf@1.10.0)) + specifier: 12.0.0 + version: 12.0.0(@penumbra-zone/protobuf@7.1.0(@bufbuild/protobuf@1.10.0)) '@penumbra-zone/protobuf': - specifier: 7.0.0 - version: 7.0.0(@bufbuild/protobuf@1.10.0) + specifier: 7.1.0 + version: 7.1.0(@bufbuild/protobuf@1.10.0) '@penumbra-zone/wasm': - specifier: 37.1.0 - version: 37.1.0(@bufbuild/protobuf@1.10.0)(@penumbra-zone/bech32m@11.0.0(@penumbra-zone/protobuf@7.0.0(@bufbuild/protobuf@1.10.0)))(@penumbra-zone/protobuf@7.0.0(@bufbuild/protobuf@1.10.0))(@penumbra-zone/types@27.1.0(@bufbuild/protobuf@1.10.0)(@penumbra-zone/bech32m@11.0.0(@penumbra-zone/protobuf@7.0.0(@bufbuild/protobuf@1.10.0)))(@penumbra-zone/getters@21.0.0(@bufbuild/protobuf@1.10.0)(@penumbra-zone/bech32m@11.0.0(@penumbra-zone/protobuf@7.0.0(@bufbuild/protobuf@1.10.0)))(@penumbra-zone/protobuf@7.0.0(@bufbuild/protobuf@1.10.0)))(@penumbra-zone/protobuf@7.0.0(@bufbuild/protobuf@1.10.0))) + specifier: 38.0.0 + version: 38.0.0(@bufbuild/protobuf@1.10.0)(@penumbra-zone/bech32m@12.0.0(@penumbra-zone/protobuf@7.1.0(@bufbuild/protobuf@1.10.0)))(@penumbra-zone/protobuf@7.1.0(@bufbuild/protobuf@1.10.0))(@penumbra-zone/types@28.0.0(@bufbuild/protobuf@1.10.0)(@penumbra-zone/bech32m@12.0.0(@penumbra-zone/protobuf@7.1.0(@bufbuild/protobuf@1.10.0)))(@penumbra-zone/getters@22.0.0(@bufbuild/protobuf@1.10.0)(@penumbra-zone/bech32m@12.0.0(@penumbra-zone/protobuf@7.1.0(@bufbuild/protobuf@1.10.0)))(@penumbra-zone/protobuf@7.1.0(@bufbuild/protobuf@1.10.0)))(@penumbra-zone/protobuf@7.1.0(@bufbuild/protobuf@1.10.0))) packages/query: dependencies: @@ -328,23 +328,23 @@ importers: specifier: ^1.x version: 1.4.0(@bufbuild/protobuf@1.10.0)(@connectrpc/connect@1.4.0(@bufbuild/protobuf@1.10.0)) '@penumbra-zone/bech32m': - specifier: 11.0.0 - version: 11.0.0(@penumbra-zone/protobuf@7.0.0(@bufbuild/protobuf@1.10.0)) + specifier: 12.0.0 + version: 12.0.0(@penumbra-zone/protobuf@7.1.0(@bufbuild/protobuf@1.10.0)) '@penumbra-zone/crypto-web': - specifier: 33.0.0 - version: 33.0.0(@penumbra-zone/types@27.1.0(@bufbuild/protobuf@1.10.0)(@penumbra-zone/bech32m@11.0.0(@penumbra-zone/protobuf@7.0.0(@bufbuild/protobuf@1.10.0)))(@penumbra-zone/getters@21.0.0(@bufbuild/protobuf@1.10.0)(@penumbra-zone/bech32m@11.0.0(@penumbra-zone/protobuf@7.0.0(@bufbuild/protobuf@1.10.0)))(@penumbra-zone/protobuf@7.0.0(@bufbuild/protobuf@1.10.0)))(@penumbra-zone/protobuf@7.0.0(@bufbuild/protobuf@1.10.0))) + specifier: 34.0.0 + version: 34.0.0(@penumbra-zone/types@28.0.0(@bufbuild/protobuf@1.10.0)(@penumbra-zone/bech32m@12.0.0(@penumbra-zone/protobuf@7.1.0(@bufbuild/protobuf@1.10.0)))(@penumbra-zone/getters@22.0.0(@bufbuild/protobuf@1.10.0)(@penumbra-zone/bech32m@12.0.0(@penumbra-zone/protobuf@7.1.0(@bufbuild/protobuf@1.10.0)))(@penumbra-zone/protobuf@7.1.0(@bufbuild/protobuf@1.10.0)))(@penumbra-zone/protobuf@7.1.0(@bufbuild/protobuf@1.10.0))) '@penumbra-zone/getters': - specifier: 21.0.0 - version: 21.0.0(@bufbuild/protobuf@1.10.0)(@penumbra-zone/bech32m@11.0.0(@penumbra-zone/protobuf@7.0.0(@bufbuild/protobuf@1.10.0)))(@penumbra-zone/protobuf@7.0.0(@bufbuild/protobuf@1.10.0)) + specifier: 22.0.0 + version: 22.0.0(@bufbuild/protobuf@1.10.0)(@penumbra-zone/bech32m@12.0.0(@penumbra-zone/protobuf@7.1.0(@bufbuild/protobuf@1.10.0)))(@penumbra-zone/protobuf@7.1.0(@bufbuild/protobuf@1.10.0)) '@penumbra-zone/protobuf': - specifier: 7.0.0 - version: 7.0.0(@bufbuild/protobuf@1.10.0) + specifier: 7.1.0 + version: 7.1.0(@bufbuild/protobuf@1.10.0) '@penumbra-zone/types': - specifier: 27.1.0 - version: 27.1.0(@bufbuild/protobuf@1.10.0)(@penumbra-zone/bech32m@11.0.0(@penumbra-zone/protobuf@7.0.0(@bufbuild/protobuf@1.10.0)))(@penumbra-zone/getters@21.0.0(@bufbuild/protobuf@1.10.0)(@penumbra-zone/bech32m@11.0.0(@penumbra-zone/protobuf@7.0.0(@bufbuild/protobuf@1.10.0)))(@penumbra-zone/protobuf@7.0.0(@bufbuild/protobuf@1.10.0)))(@penumbra-zone/protobuf@7.0.0(@bufbuild/protobuf@1.10.0)) + specifier: 28.0.0 + version: 28.0.0(@bufbuild/protobuf@1.10.0)(@penumbra-zone/bech32m@12.0.0(@penumbra-zone/protobuf@7.1.0(@bufbuild/protobuf@1.10.0)))(@penumbra-zone/getters@22.0.0(@bufbuild/protobuf@1.10.0)(@penumbra-zone/bech32m@12.0.0(@penumbra-zone/protobuf@7.1.0(@bufbuild/protobuf@1.10.0)))(@penumbra-zone/protobuf@7.1.0(@bufbuild/protobuf@1.10.0)))(@penumbra-zone/protobuf@7.1.0(@bufbuild/protobuf@1.10.0)) '@penumbra-zone/wasm': - specifier: 37.1.0 - version: 37.1.0(@bufbuild/protobuf@1.10.0)(@penumbra-zone/bech32m@11.0.0(@penumbra-zone/protobuf@7.0.0(@bufbuild/protobuf@1.10.0)))(@penumbra-zone/protobuf@7.0.0(@bufbuild/protobuf@1.10.0))(@penumbra-zone/types@27.1.0(@bufbuild/protobuf@1.10.0)(@penumbra-zone/bech32m@11.0.0(@penumbra-zone/protobuf@7.0.0(@bufbuild/protobuf@1.10.0)))(@penumbra-zone/getters@21.0.0(@bufbuild/protobuf@1.10.0)(@penumbra-zone/bech32m@11.0.0(@penumbra-zone/protobuf@7.0.0(@bufbuild/protobuf@1.10.0)))(@penumbra-zone/protobuf@7.0.0(@bufbuild/protobuf@1.10.0)))(@penumbra-zone/protobuf@7.0.0(@bufbuild/protobuf@1.10.0))) + specifier: 38.0.0 + version: 38.0.0(@bufbuild/protobuf@1.10.0)(@penumbra-zone/bech32m@12.0.0(@penumbra-zone/protobuf@7.1.0(@bufbuild/protobuf@1.10.0)))(@penumbra-zone/protobuf@7.1.0(@bufbuild/protobuf@1.10.0))(@penumbra-zone/types@28.0.0(@bufbuild/protobuf@1.10.0)(@penumbra-zone/bech32m@12.0.0(@penumbra-zone/protobuf@7.1.0(@bufbuild/protobuf@1.10.0)))(@penumbra-zone/getters@22.0.0(@bufbuild/protobuf@1.10.0)(@penumbra-zone/bech32m@12.0.0(@penumbra-zone/protobuf@7.1.0(@bufbuild/protobuf@1.10.0)))(@penumbra-zone/protobuf@7.1.0(@bufbuild/protobuf@1.10.0)))(@penumbra-zone/protobuf@7.1.0(@bufbuild/protobuf@1.10.0))) exponential-backoff: specifier: ^3.1.1 version: 3.1.1 @@ -369,26 +369,26 @@ importers: specifier: ^11.14.0 version: 11.14.0(@emotion/react@11.14.0(@types/react@18.3.18)(react@18.3.1))(@types/react@18.3.18)(react@18.3.1) '@penumbra-labs/registry': - specifier: ^12.1.0 - version: 12.1.0 + specifier: ^12.1.1 + version: 12.1.1 '@penumbra-zone/bech32m': - specifier: 11.0.0 - version: 11.0.0(@penumbra-zone/protobuf@7.0.0(@bufbuild/protobuf@1.10.0)) + specifier: 12.0.0 + version: 12.0.0(@penumbra-zone/protobuf@7.1.0(@bufbuild/protobuf@1.10.0)) '@penumbra-zone/getters': - specifier: 21.0.0 - version: 21.0.0(@bufbuild/protobuf@1.10.0)(@penumbra-zone/bech32m@11.0.0(@penumbra-zone/protobuf@7.0.0(@bufbuild/protobuf@1.10.0)))(@penumbra-zone/protobuf@7.0.0(@bufbuild/protobuf@1.10.0)) + specifier: 22.0.0 + version: 22.0.0(@bufbuild/protobuf@1.10.0)(@penumbra-zone/bech32m@12.0.0(@penumbra-zone/protobuf@7.1.0(@bufbuild/protobuf@1.10.0)))(@penumbra-zone/protobuf@7.1.0(@bufbuild/protobuf@1.10.0)) '@penumbra-zone/perspective': - specifier: 44.0.0 - version: 44.0.0(@bufbuild/protobuf@1.10.0)(@penumbra-zone/bech32m@11.0.0(@penumbra-zone/protobuf@7.0.0(@bufbuild/protobuf@1.10.0)))(@penumbra-zone/getters@21.0.0(@bufbuild/protobuf@1.10.0)(@penumbra-zone/bech32m@11.0.0(@penumbra-zone/protobuf@7.0.0(@bufbuild/protobuf@1.10.0)))(@penumbra-zone/protobuf@7.0.0(@bufbuild/protobuf@1.10.0)))(@penumbra-zone/protobuf@7.0.0(@bufbuild/protobuf@1.10.0))(@penumbra-zone/wasm@37.1.0(@bufbuild/protobuf@1.10.0)(@penumbra-zone/bech32m@11.0.0(@penumbra-zone/protobuf@7.0.0(@bufbuild/protobuf@1.10.0)))(@penumbra-zone/protobuf@7.0.0(@bufbuild/protobuf@1.10.0))(@penumbra-zone/types@27.1.0(@bufbuild/protobuf@1.10.0)(@penumbra-zone/bech32m@11.0.0(@penumbra-zone/protobuf@7.0.0(@bufbuild/protobuf@1.10.0)))(@penumbra-zone/getters@21.0.0(@bufbuild/protobuf@1.10.0)(@penumbra-zone/bech32m@11.0.0(@penumbra-zone/protobuf@7.0.0(@bufbuild/protobuf@1.10.0)))(@penumbra-zone/protobuf@7.0.0(@bufbuild/protobuf@1.10.0)))(@penumbra-zone/protobuf@7.0.0(@bufbuild/protobuf@1.10.0)))) + specifier: 45.0.0 + version: 45.0.0(@bufbuild/protobuf@1.10.0)(@penumbra-zone/bech32m@12.0.0(@penumbra-zone/protobuf@7.1.0(@bufbuild/protobuf@1.10.0)))(@penumbra-zone/getters@22.0.0(@bufbuild/protobuf@1.10.0)(@penumbra-zone/bech32m@12.0.0(@penumbra-zone/protobuf@7.1.0(@bufbuild/protobuf@1.10.0)))(@penumbra-zone/protobuf@7.1.0(@bufbuild/protobuf@1.10.0)))(@penumbra-zone/protobuf@7.1.0(@bufbuild/protobuf@1.10.0))(@penumbra-zone/wasm@38.0.0(@bufbuild/protobuf@1.10.0)(@penumbra-zone/bech32m@12.0.0(@penumbra-zone/protobuf@7.1.0(@bufbuild/protobuf@1.10.0)))(@penumbra-zone/protobuf@7.1.0(@bufbuild/protobuf@1.10.0))(@penumbra-zone/types@28.0.0(@bufbuild/protobuf@1.10.0)(@penumbra-zone/bech32m@12.0.0(@penumbra-zone/protobuf@7.1.0(@bufbuild/protobuf@1.10.0)))(@penumbra-zone/getters@22.0.0(@bufbuild/protobuf@1.10.0)(@penumbra-zone/bech32m@12.0.0(@penumbra-zone/protobuf@7.1.0(@bufbuild/protobuf@1.10.0)))(@penumbra-zone/protobuf@7.1.0(@bufbuild/protobuf@1.10.0)))(@penumbra-zone/protobuf@7.1.0(@bufbuild/protobuf@1.10.0)))) '@penumbra-zone/protobuf': - specifier: 7.0.0 - version: 7.0.0(@bufbuild/protobuf@1.10.0) + specifier: 7.1.0 + version: 7.1.0(@bufbuild/protobuf@1.10.0) '@penumbra-zone/types': - specifier: 27.1.0 - version: 27.1.0(@bufbuild/protobuf@1.10.0)(@penumbra-zone/bech32m@11.0.0(@penumbra-zone/protobuf@7.0.0(@bufbuild/protobuf@1.10.0)))(@penumbra-zone/getters@21.0.0(@bufbuild/protobuf@1.10.0)(@penumbra-zone/bech32m@11.0.0(@penumbra-zone/protobuf@7.0.0(@bufbuild/protobuf@1.10.0)))(@penumbra-zone/protobuf@7.0.0(@bufbuild/protobuf@1.10.0)))(@penumbra-zone/protobuf@7.0.0(@bufbuild/protobuf@1.10.0)) + specifier: 28.0.0 + version: 28.0.0(@bufbuild/protobuf@1.10.0)(@penumbra-zone/bech32m@12.0.0(@penumbra-zone/protobuf@7.1.0(@bufbuild/protobuf@1.10.0)))(@penumbra-zone/getters@22.0.0(@bufbuild/protobuf@1.10.0)(@penumbra-zone/bech32m@12.0.0(@penumbra-zone/protobuf@7.1.0(@bufbuild/protobuf@1.10.0)))(@penumbra-zone/protobuf@7.1.0(@bufbuild/protobuf@1.10.0)))(@penumbra-zone/protobuf@7.1.0(@bufbuild/protobuf@1.10.0)) '@penumbra-zone/wasm': - specifier: 37.1.0 - version: 37.1.0(@bufbuild/protobuf@1.10.0)(@penumbra-zone/bech32m@11.0.0(@penumbra-zone/protobuf@7.0.0(@bufbuild/protobuf@1.10.0)))(@penumbra-zone/protobuf@7.0.0(@bufbuild/protobuf@1.10.0))(@penumbra-zone/types@27.1.0(@bufbuild/protobuf@1.10.0)(@penumbra-zone/bech32m@11.0.0(@penumbra-zone/protobuf@7.0.0(@bufbuild/protobuf@1.10.0)))(@penumbra-zone/getters@21.0.0(@bufbuild/protobuf@1.10.0)(@penumbra-zone/bech32m@11.0.0(@penumbra-zone/protobuf@7.0.0(@bufbuild/protobuf@1.10.0)))(@penumbra-zone/protobuf@7.0.0(@bufbuild/protobuf@1.10.0)))(@penumbra-zone/protobuf@7.0.0(@bufbuild/protobuf@1.10.0))) + specifier: 38.0.0 + version: 38.0.0(@bufbuild/protobuf@1.10.0)(@penumbra-zone/bech32m@12.0.0(@penumbra-zone/protobuf@7.1.0(@bufbuild/protobuf@1.10.0)))(@penumbra-zone/protobuf@7.1.0(@bufbuild/protobuf@1.10.0))(@penumbra-zone/types@28.0.0(@bufbuild/protobuf@1.10.0)(@penumbra-zone/bech32m@12.0.0(@penumbra-zone/protobuf@7.1.0(@bufbuild/protobuf@1.10.0)))(@penumbra-zone/getters@22.0.0(@bufbuild/protobuf@1.10.0)(@penumbra-zone/bech32m@12.0.0(@penumbra-zone/protobuf@7.1.0(@bufbuild/protobuf@1.10.0)))(@penumbra-zone/protobuf@7.1.0(@bufbuild/protobuf@1.10.0)))(@penumbra-zone/protobuf@7.1.0(@bufbuild/protobuf@1.10.0))) '@radix-ui/react-avatar': specifier: ^1.1.2 version: 1.1.2(@types/react-dom@18.3.5(@types/react@18.3.18))(@types/react@18.3.18)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) @@ -1639,13 +1639,13 @@ packages: '@open-draft/until@2.1.0': resolution: {integrity: sha512-U69T3ItWHvLwGg5eJ0n3I62nWuE6ilHlmz7zM0npLBRvPRd7e6NYmg54vvRtP5mZG7kZqZCFVdsTWo7BPtBujg==} - '@penumbra-labs/registry@12.1.0': - resolution: {integrity: sha512-hBzCCJ9bykaJ86fW3J9IRjVIXuxGEsidTIhYwuLYEKpYkAhfHe3J4M5LR6gVU5XoqIx39QfeYf9j0cFIwHZlQQ==} + '@penumbra-labs/registry@12.1.1': + resolution: {integrity: sha512-8Ei802G1UtJZlSzv0NOYUU26HpDbbGpb5+tlc9F0FQ1OR6O/UqnVxoYDgkN6p9aPD5ea/8I85Atc3Y91Qy329w==} - '@penumbra-zone/bech32m@11.0.0': - resolution: {integrity: sha512-GXBawCDEaEMMYSo8WIbpM0l8NbJC9gZMHS5ttDPNH1SC7LfMGzjvZeMHvNulNV3cLZJSrmxxTIbg78QKWNsldw==} + '@penumbra-zone/bech32m@12.0.0': + resolution: {integrity: sha512-yAvyKvaJ47TDZvXKQ6crphCseF+iFWnN4Z6J11DFjwtCK5aL45n48c3F9okdxEbA+zzUR4iBSGIAYoKJU6doWg==} peerDependencies: - '@penumbra-zone/protobuf': 7.0.0 + '@penumbra-zone/protobuf': 7.1.0 '@penumbra-zone/client@22.0.0': resolution: {integrity: sha512-rEQDiFptmAmm6ZK7Zo73IyWZWNQoTANCfXUk1hfStsNprm0LcvUN68e/0f2iS3W60NHCh7bNDKfoS9811t7XHQ==} @@ -1658,60 +1658,60 @@ packages: '@penumbra-zone/configs@1.1.0': resolution: {integrity: sha512-NssgBu3c1YfQALkTNHC3Y+vAJ+HqSAsTJPLKWftPS6KCOLmPvcncI23nIBZrSYoLh3W06aFV/Ab26UAp2hRMiA==} - '@penumbra-zone/crypto-web@33.0.0': - resolution: {integrity: sha512-jUzH7F9z3K6lBQnUeLSEpdSh8dDCxXsR08TLf+QUvd6fCFKE62afO7zQ3FHRWhv+y06cXySGO68Exmy62iX/Rg==} + '@penumbra-zone/crypto-web@34.0.0': + resolution: {integrity: sha512-7Lv0VuuG8LuRnDqLDimLCKIq4AgAosb9d6pTavzSIdaDqigwLd/6AZLTqKfoIk3e5RKn/msBVukqzGsnr/KKeg==} peerDependencies: - '@penumbra-zone/types': 27.1.0 + '@penumbra-zone/types': 28.0.0 - '@penumbra-zone/getters@21.0.0': - resolution: {integrity: sha512-4I8eKe4b37qLuZrU72zhvqEvYsKHbtejWALijcuYiH7Udkkkzbr+hwjTgvin9cp251aM+8GRpjWgo4NReKMvQQ==} + '@penumbra-zone/getters@22.0.0': + resolution: {integrity: sha512-QipOdaNP0P3YVqq3Qc8JWJntbWUSDFkSaQOrkcHTAGRygkPzaOP99EA4JXUySZ6CjdGO7mnxv6DAuqc8dhBz6A==} peerDependencies: '@bufbuild/protobuf': ^1.10.0 - '@penumbra-zone/bech32m': 11.0.0 - '@penumbra-zone/protobuf': 7.0.0 + '@penumbra-zone/bech32m': 12.0.0 + '@penumbra-zone/protobuf': 7.1.0 '@penumbra-zone/keys@4.2.1': resolution: {integrity: sha512-1K+/8bh53Kse4u/I1afUQuRrTnZhLLA6JWIV+mFiXX8An2J2CGIVDjp1mSJkUSzFjFDUzUX052kvYHCtZYK3QA==} hasBin: true - '@penumbra-zone/perspective@44.0.0': - resolution: {integrity: sha512-wqYWt2rQCEgx8Ktp6MK4zJuXNXoU/79G84HZaMaM6uZ2f+KnoT72EDI/r6Bz4tzplSGcg0cONXK2nCkiQRm5Jw==} + '@penumbra-zone/perspective@45.0.0': + resolution: {integrity: sha512-R2XTk/XeQn8UJWP0bPcEpKp5o0gPIfjhi/OjeGUjoX6Yx3NrgaN2QSsPzui0j9F/c96StVhQbkvhvw7/RsKIZA==} peerDependencies: '@bufbuild/protobuf': ^1.10.0 - '@penumbra-zone/bech32m': 11.0.0 - '@penumbra-zone/getters': 21.0.0 - '@penumbra-zone/protobuf': 7.0.0 - '@penumbra-zone/wasm': 37.1.0 + '@penumbra-zone/bech32m': 12.0.0 + '@penumbra-zone/getters': 22.0.0 + '@penumbra-zone/protobuf': 7.1.0 + '@penumbra-zone/wasm': 38.0.0 - '@penumbra-zone/protobuf@7.0.0': - resolution: {integrity: sha512-QDLjFjQ5Y1m71AIfDUKqHTEIBBabd+pQsFPJPMEakG5rJ9p2GycSr6yrg/93UgzuShWfeVLR4nwOZdaEA3SPig==} + '@penumbra-zone/protobuf@7.1.0': + resolution: {integrity: sha512-pjqghT4MICesZDQhF0O3UAYQka7uj1rSzINh0S1pEE8d7jevy7/HiM9o+jMYfzySfOLyV0qEhbcV8ttHWxOdMQ==} peerDependencies: '@bufbuild/protobuf': ^1.10.0 - '@penumbra-zone/services@49.0.0': - resolution: {integrity: sha512-HzoDeHbK7Zr4IGx+2UMtlljMzVT8A4Zz8OITObT+9HswsbXrgWM7fSwKZQVH4kYxm73f2jIJllvq9zdMVGfKmg==} + '@penumbra-zone/services@50.0.0': + resolution: {integrity: sha512-W2xifVf8j1KIRmOwBY3wBEoByPUaC61p+lhU0c1M6GzzMDX9aW/ekJ8lf4PayagOOi6180qSR/02rhEsO6+m1A==} peerDependencies: '@bufbuild/protobuf': ^1.10.0 '@connectrpc/connect': ^1.4.0 - '@penumbra-zone/bech32m': 11.0.0 - '@penumbra-zone/crypto-web': 33.0.0 - '@penumbra-zone/getters': 21.0.0 - '@penumbra-zone/protobuf': 7.0.0 - '@penumbra-zone/storage': 44.0.0 + '@penumbra-zone/bech32m': 12.0.0 + '@penumbra-zone/crypto-web': 34.0.0 + '@penumbra-zone/getters': 22.0.0 + '@penumbra-zone/protobuf': 7.1.0 + '@penumbra-zone/storage': 45.0.0 '@penumbra-zone/transport-dom': 7.5.0 - '@penumbra-zone/types': 27.1.0 - '@penumbra-zone/wasm': 37.1.0 + '@penumbra-zone/types': 28.0.0 + '@penumbra-zone/wasm': 38.0.0 - '@penumbra-zone/storage@44.0.0': - resolution: {integrity: sha512-LAcYm6Dc7EQBmMn37AEqJ3B2wpDLSQ3UBbBCPqNoS8EA7Em8sh7lTZ10vAZmW7vhj2daxy/iGwctsKwvXwb5Gw==} + '@penumbra-zone/storage@45.0.0': + resolution: {integrity: sha512-yWaWakJ4uBZX+uJCfBsTGg6cbRgXAc5n8LmcfabPMNEsLYypqiEe1WGgSUt9H2rRrdRAsfgynbGxzunN/JKyxA==} peerDependencies: '@bufbuild/protobuf': ^1.10.0 '@penumbra-labs/registry': ^12.0.0 - '@penumbra-zone/bech32m': 11.0.0 - '@penumbra-zone/getters': 21.0.0 - '@penumbra-zone/protobuf': 7.0.0 - '@penumbra-zone/types': 27.1.0 - '@penumbra-zone/wasm': 37.1.0 + '@penumbra-zone/bech32m': 12.0.0 + '@penumbra-zone/getters': 22.0.0 + '@penumbra-zone/protobuf': 7.1.0 + '@penumbra-zone/types': 28.0.0 + '@penumbra-zone/wasm': 38.0.0 '@penumbra-zone/transport-chrome@8.0.1': resolution: {integrity: sha512-Bk5/6N60hkeDwtx/ebP5u5DgZWNdRh6FQHgOXNP93FJjg4oobNOkjdoH0Gdqevj+sawGnyXFCyC6WeHB6D2LTA==} @@ -1723,21 +1723,21 @@ packages: '@penumbra-zone/transport-dom@7.5.0': resolution: {integrity: sha512-8xFIEDeXODl18AITfiIrJJoE8Y6y/+apO+BhrqCmXP+yqGo8LBzcW3iWDQkOc6Go2c1MGJT97B25r079Km1kuA==} - '@penumbra-zone/types@27.1.0': - resolution: {integrity: sha512-3bYZ0kE7K/X++Lo+l854Y3WaDhBdVOOki1D4JnJZTVTf5U2DbFimuULTKij7p5hUno2797+DPIlog6x0GFdlXA==} + '@penumbra-zone/types@28.0.0': + resolution: {integrity: sha512-FWgI/rmdbVnvuTbGXZKesHHS/yHJEYHUybVaaHDuXiJwEZRQUq9BRAx5qFfm5wUo8P1z7Mv+2RV7PpKRQN2YQw==} peerDependencies: '@bufbuild/protobuf': ^1.10.0 - '@penumbra-zone/bech32m': 11.0.0 - '@penumbra-zone/getters': 21.0.0 - '@penumbra-zone/protobuf': 7.0.0 + '@penumbra-zone/bech32m': 12.0.0 + '@penumbra-zone/getters': 22.0.0 + '@penumbra-zone/protobuf': 7.1.0 - '@penumbra-zone/wasm@37.1.0': - resolution: {integrity: sha512-s4qPLhrS+ji1sub0hjRTxqRwKZhyyrzbzVbtwcmlvynCRM/cvzF7gB+DRIiHXfEEcQv0Yzd04kFS5BUFAFPfpA==} + '@penumbra-zone/wasm@38.0.0': + resolution: {integrity: sha512-CN75HHk0h8gAhS27X5mwPhMHDmx4NCwrAXe4yGHUk73TdLdIcecmzG8C9CG4mhzTniMTjjhY3j0if7/Db5oKow==} peerDependencies: '@bufbuild/protobuf': ^1.10.0 - '@penumbra-zone/bech32m': 11.0.0 - '@penumbra-zone/protobuf': 7.0.0 - '@penumbra-zone/types': 27.1.0 + '@penumbra-zone/bech32m': 12.0.0 + '@penumbra-zone/protobuf': 7.1.0 + '@penumbra-zone/types': 28.0.0 '@pkgjs/parseargs@0.11.0': resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==} @@ -9426,18 +9426,18 @@ snapshots: '@open-draft/until@2.1.0': {} - '@penumbra-labs/registry@12.1.0': {} + '@penumbra-labs/registry@12.1.1': {} - '@penumbra-zone/bech32m@11.0.0(@penumbra-zone/protobuf@7.0.0(@bufbuild/protobuf@1.10.0))': + '@penumbra-zone/bech32m@12.0.0(@penumbra-zone/protobuf@7.1.0(@bufbuild/protobuf@1.10.0))': dependencies: - '@penumbra-zone/protobuf': 7.0.0(@bufbuild/protobuf@1.10.0) + '@penumbra-zone/protobuf': 7.1.0(@bufbuild/protobuf@1.10.0) bech32: 2.0.0 - '@penumbra-zone/client@22.0.0(@bufbuild/protobuf@1.10.0)(@connectrpc/connect@1.4.0(@bufbuild/protobuf@1.10.0))(@penumbra-zone/protobuf@7.0.0(@bufbuild/protobuf@1.10.0))(@penumbra-zone/transport-dom@7.5.0)': + '@penumbra-zone/client@22.0.0(@bufbuild/protobuf@1.10.0)(@connectrpc/connect@1.4.0(@bufbuild/protobuf@1.10.0))(@penumbra-zone/protobuf@7.1.0(@bufbuild/protobuf@1.10.0))(@penumbra-zone/transport-dom@7.5.0)': dependencies: '@bufbuild/protobuf': 1.10.0 '@connectrpc/connect': 1.4.0(@bufbuild/protobuf@1.10.0) - '@penumbra-zone/protobuf': 7.0.0(@bufbuild/protobuf@1.10.0) + '@penumbra-zone/protobuf': 7.1.0(@bufbuild/protobuf@1.10.0) '@penumbra-zone/transport-dom': 7.5.0 '@penumbra-zone/configs@1.1.0(@types/eslint@9.6.1)(@typescript-eslint/parser@8.16.0(eslint@9.17.0(jiti@1.21.6))(typescript@5.5.4))(jiti@1.21.6)(prettier@3.4.2)(tailwindcss@3.4.17(ts-node@10.9.2(@swc/core@1.7.28)(@types/node@22.10.2)(typescript@5.5.4)))(typescript@5.5.4)(vitest@1.6.0(@types/node@22.10.2)(@vitest/browser@2.1.8)(jsdom@25.0.1)(terser@5.34.1))': @@ -9470,54 +9470,54 @@ snapshots: - typescript - vitest - '@penumbra-zone/crypto-web@33.0.0(@penumbra-zone/types@27.1.0(@bufbuild/protobuf@1.10.0)(@penumbra-zone/bech32m@11.0.0(@penumbra-zone/protobuf@7.0.0(@bufbuild/protobuf@1.10.0)))(@penumbra-zone/getters@21.0.0(@bufbuild/protobuf@1.10.0)(@penumbra-zone/bech32m@11.0.0(@penumbra-zone/protobuf@7.0.0(@bufbuild/protobuf@1.10.0)))(@penumbra-zone/protobuf@7.0.0(@bufbuild/protobuf@1.10.0)))(@penumbra-zone/protobuf@7.0.0(@bufbuild/protobuf@1.10.0)))': + '@penumbra-zone/crypto-web@34.0.0(@penumbra-zone/types@28.0.0(@bufbuild/protobuf@1.10.0)(@penumbra-zone/bech32m@12.0.0(@penumbra-zone/protobuf@7.1.0(@bufbuild/protobuf@1.10.0)))(@penumbra-zone/getters@22.0.0(@bufbuild/protobuf@1.10.0)(@penumbra-zone/bech32m@12.0.0(@penumbra-zone/protobuf@7.1.0(@bufbuild/protobuf@1.10.0)))(@penumbra-zone/protobuf@7.1.0(@bufbuild/protobuf@1.10.0)))(@penumbra-zone/protobuf@7.1.0(@bufbuild/protobuf@1.10.0)))': dependencies: - '@penumbra-zone/types': 27.1.0(@bufbuild/protobuf@1.10.0)(@penumbra-zone/bech32m@11.0.0(@penumbra-zone/protobuf@7.0.0(@bufbuild/protobuf@1.10.0)))(@penumbra-zone/getters@21.0.0(@bufbuild/protobuf@1.10.0)(@penumbra-zone/bech32m@11.0.0(@penumbra-zone/protobuf@7.0.0(@bufbuild/protobuf@1.10.0)))(@penumbra-zone/protobuf@7.0.0(@bufbuild/protobuf@1.10.0)))(@penumbra-zone/protobuf@7.0.0(@bufbuild/protobuf@1.10.0)) + '@penumbra-zone/types': 28.0.0(@bufbuild/protobuf@1.10.0)(@penumbra-zone/bech32m@12.0.0(@penumbra-zone/protobuf@7.1.0(@bufbuild/protobuf@1.10.0)))(@penumbra-zone/getters@22.0.0(@bufbuild/protobuf@1.10.0)(@penumbra-zone/bech32m@12.0.0(@penumbra-zone/protobuf@7.1.0(@bufbuild/protobuf@1.10.0)))(@penumbra-zone/protobuf@7.1.0(@bufbuild/protobuf@1.10.0)))(@penumbra-zone/protobuf@7.1.0(@bufbuild/protobuf@1.10.0)) bip39: 3.1.0 crypto-js: 4.2.0 - '@penumbra-zone/getters@21.0.0(@bufbuild/protobuf@1.10.0)(@penumbra-zone/bech32m@11.0.0(@penumbra-zone/protobuf@7.0.0(@bufbuild/protobuf@1.10.0)))(@penumbra-zone/protobuf@7.0.0(@bufbuild/protobuf@1.10.0))': + '@penumbra-zone/getters@22.0.0(@bufbuild/protobuf@1.10.0)(@penumbra-zone/bech32m@12.0.0(@penumbra-zone/protobuf@7.1.0(@bufbuild/protobuf@1.10.0)))(@penumbra-zone/protobuf@7.1.0(@bufbuild/protobuf@1.10.0))': dependencies: '@bufbuild/protobuf': 1.10.0 - '@penumbra-zone/bech32m': 11.0.0(@penumbra-zone/protobuf@7.0.0(@bufbuild/protobuf@1.10.0)) - '@penumbra-zone/protobuf': 7.0.0(@bufbuild/protobuf@1.10.0) + '@penumbra-zone/bech32m': 12.0.0(@penumbra-zone/protobuf@7.1.0(@bufbuild/protobuf@1.10.0)) + '@penumbra-zone/protobuf': 7.1.0(@bufbuild/protobuf@1.10.0) '@penumbra-zone/keys@4.2.1': {} - '@penumbra-zone/perspective@44.0.0(@bufbuild/protobuf@1.10.0)(@penumbra-zone/bech32m@11.0.0(@penumbra-zone/protobuf@7.0.0(@bufbuild/protobuf@1.10.0)))(@penumbra-zone/getters@21.0.0(@bufbuild/protobuf@1.10.0)(@penumbra-zone/bech32m@11.0.0(@penumbra-zone/protobuf@7.0.0(@bufbuild/protobuf@1.10.0)))(@penumbra-zone/protobuf@7.0.0(@bufbuild/protobuf@1.10.0)))(@penumbra-zone/protobuf@7.0.0(@bufbuild/protobuf@1.10.0))(@penumbra-zone/wasm@37.1.0(@bufbuild/protobuf@1.10.0)(@penumbra-zone/bech32m@11.0.0(@penumbra-zone/protobuf@7.0.0(@bufbuild/protobuf@1.10.0)))(@penumbra-zone/protobuf@7.0.0(@bufbuild/protobuf@1.10.0))(@penumbra-zone/types@27.1.0(@bufbuild/protobuf@1.10.0)(@penumbra-zone/bech32m@11.0.0(@penumbra-zone/protobuf@7.0.0(@bufbuild/protobuf@1.10.0)))(@penumbra-zone/getters@21.0.0(@bufbuild/protobuf@1.10.0)(@penumbra-zone/bech32m@11.0.0(@penumbra-zone/protobuf@7.0.0(@bufbuild/protobuf@1.10.0)))(@penumbra-zone/protobuf@7.0.0(@bufbuild/protobuf@1.10.0)))(@penumbra-zone/protobuf@7.0.0(@bufbuild/protobuf@1.10.0))))': + '@penumbra-zone/perspective@45.0.0(@bufbuild/protobuf@1.10.0)(@penumbra-zone/bech32m@12.0.0(@penumbra-zone/protobuf@7.1.0(@bufbuild/protobuf@1.10.0)))(@penumbra-zone/getters@22.0.0(@bufbuild/protobuf@1.10.0)(@penumbra-zone/bech32m@12.0.0(@penumbra-zone/protobuf@7.1.0(@bufbuild/protobuf@1.10.0)))(@penumbra-zone/protobuf@7.1.0(@bufbuild/protobuf@1.10.0)))(@penumbra-zone/protobuf@7.1.0(@bufbuild/protobuf@1.10.0))(@penumbra-zone/wasm@38.0.0(@bufbuild/protobuf@1.10.0)(@penumbra-zone/bech32m@12.0.0(@penumbra-zone/protobuf@7.1.0(@bufbuild/protobuf@1.10.0)))(@penumbra-zone/protobuf@7.1.0(@bufbuild/protobuf@1.10.0))(@penumbra-zone/types@28.0.0(@bufbuild/protobuf@1.10.0)(@penumbra-zone/bech32m@12.0.0(@penumbra-zone/protobuf@7.1.0(@bufbuild/protobuf@1.10.0)))(@penumbra-zone/getters@22.0.0(@bufbuild/protobuf@1.10.0)(@penumbra-zone/bech32m@12.0.0(@penumbra-zone/protobuf@7.1.0(@bufbuild/protobuf@1.10.0)))(@penumbra-zone/protobuf@7.1.0(@bufbuild/protobuf@1.10.0)))(@penumbra-zone/protobuf@7.1.0(@bufbuild/protobuf@1.10.0))))': dependencies: '@bufbuild/protobuf': 1.10.0 - '@penumbra-zone/bech32m': 11.0.0(@penumbra-zone/protobuf@7.0.0(@bufbuild/protobuf@1.10.0)) - '@penumbra-zone/getters': 21.0.0(@bufbuild/protobuf@1.10.0)(@penumbra-zone/bech32m@11.0.0(@penumbra-zone/protobuf@7.0.0(@bufbuild/protobuf@1.10.0)))(@penumbra-zone/protobuf@7.0.0(@bufbuild/protobuf@1.10.0)) - '@penumbra-zone/protobuf': 7.0.0(@bufbuild/protobuf@1.10.0) - '@penumbra-zone/wasm': 37.1.0(@bufbuild/protobuf@1.10.0)(@penumbra-zone/bech32m@11.0.0(@penumbra-zone/protobuf@7.0.0(@bufbuild/protobuf@1.10.0)))(@penumbra-zone/protobuf@7.0.0(@bufbuild/protobuf@1.10.0))(@penumbra-zone/types@27.1.0(@bufbuild/protobuf@1.10.0)(@penumbra-zone/bech32m@11.0.0(@penumbra-zone/protobuf@7.0.0(@bufbuild/protobuf@1.10.0)))(@penumbra-zone/getters@21.0.0(@bufbuild/protobuf@1.10.0)(@penumbra-zone/bech32m@11.0.0(@penumbra-zone/protobuf@7.0.0(@bufbuild/protobuf@1.10.0)))(@penumbra-zone/protobuf@7.0.0(@bufbuild/protobuf@1.10.0)))(@penumbra-zone/protobuf@7.0.0(@bufbuild/protobuf@1.10.0))) + '@penumbra-zone/bech32m': 12.0.0(@penumbra-zone/protobuf@7.1.0(@bufbuild/protobuf@1.10.0)) + '@penumbra-zone/getters': 22.0.0(@bufbuild/protobuf@1.10.0)(@penumbra-zone/bech32m@12.0.0(@penumbra-zone/protobuf@7.1.0(@bufbuild/protobuf@1.10.0)))(@penumbra-zone/protobuf@7.1.0(@bufbuild/protobuf@1.10.0)) + '@penumbra-zone/protobuf': 7.1.0(@bufbuild/protobuf@1.10.0) + '@penumbra-zone/wasm': 38.0.0(@bufbuild/protobuf@1.10.0)(@penumbra-zone/bech32m@12.0.0(@penumbra-zone/protobuf@7.1.0(@bufbuild/protobuf@1.10.0)))(@penumbra-zone/protobuf@7.1.0(@bufbuild/protobuf@1.10.0))(@penumbra-zone/types@28.0.0(@bufbuild/protobuf@1.10.0)(@penumbra-zone/bech32m@12.0.0(@penumbra-zone/protobuf@7.1.0(@bufbuild/protobuf@1.10.0)))(@penumbra-zone/getters@22.0.0(@bufbuild/protobuf@1.10.0)(@penumbra-zone/bech32m@12.0.0(@penumbra-zone/protobuf@7.1.0(@bufbuild/protobuf@1.10.0)))(@penumbra-zone/protobuf@7.1.0(@bufbuild/protobuf@1.10.0)))(@penumbra-zone/protobuf@7.1.0(@bufbuild/protobuf@1.10.0))) - '@penumbra-zone/protobuf@7.0.0(@bufbuild/protobuf@1.10.0)': + '@penumbra-zone/protobuf@7.1.0(@bufbuild/protobuf@1.10.0)': dependencies: '@bufbuild/protobuf': 1.10.0 - '@penumbra-zone/services@49.0.0(l7py2ksgkyybqzdou5jhjlpgh4)': + '@penumbra-zone/services@50.0.0(lza7qckvh64shmlmpshsx6biha)': dependencies: '@bufbuild/protobuf': 1.10.0 '@connectrpc/connect': 1.4.0(@bufbuild/protobuf@1.10.0) - '@penumbra-zone/bech32m': 11.0.0(@penumbra-zone/protobuf@7.0.0(@bufbuild/protobuf@1.10.0)) - '@penumbra-zone/crypto-web': 33.0.0(@penumbra-zone/types@27.1.0(@bufbuild/protobuf@1.10.0)(@penumbra-zone/bech32m@11.0.0(@penumbra-zone/protobuf@7.0.0(@bufbuild/protobuf@1.10.0)))(@penumbra-zone/getters@21.0.0(@bufbuild/protobuf@1.10.0)(@penumbra-zone/bech32m@11.0.0(@penumbra-zone/protobuf@7.0.0(@bufbuild/protobuf@1.10.0)))(@penumbra-zone/protobuf@7.0.0(@bufbuild/protobuf@1.10.0)))(@penumbra-zone/protobuf@7.0.0(@bufbuild/protobuf@1.10.0))) - '@penumbra-zone/getters': 21.0.0(@bufbuild/protobuf@1.10.0)(@penumbra-zone/bech32m@11.0.0(@penumbra-zone/protobuf@7.0.0(@bufbuild/protobuf@1.10.0)))(@penumbra-zone/protobuf@7.0.0(@bufbuild/protobuf@1.10.0)) - '@penumbra-zone/protobuf': 7.0.0(@bufbuild/protobuf@1.10.0) - '@penumbra-zone/storage': 44.0.0(gnh36gjrbemlheeqdxogu4sxba) + '@penumbra-zone/bech32m': 12.0.0(@penumbra-zone/protobuf@7.1.0(@bufbuild/protobuf@1.10.0)) + '@penumbra-zone/crypto-web': 34.0.0(@penumbra-zone/types@28.0.0(@bufbuild/protobuf@1.10.0)(@penumbra-zone/bech32m@12.0.0(@penumbra-zone/protobuf@7.1.0(@bufbuild/protobuf@1.10.0)))(@penumbra-zone/getters@22.0.0(@bufbuild/protobuf@1.10.0)(@penumbra-zone/bech32m@12.0.0(@penumbra-zone/protobuf@7.1.0(@bufbuild/protobuf@1.10.0)))(@penumbra-zone/protobuf@7.1.0(@bufbuild/protobuf@1.10.0)))(@penumbra-zone/protobuf@7.1.0(@bufbuild/protobuf@1.10.0))) + '@penumbra-zone/getters': 22.0.0(@bufbuild/protobuf@1.10.0)(@penumbra-zone/bech32m@12.0.0(@penumbra-zone/protobuf@7.1.0(@bufbuild/protobuf@1.10.0)))(@penumbra-zone/protobuf@7.1.0(@bufbuild/protobuf@1.10.0)) + '@penumbra-zone/protobuf': 7.1.0(@bufbuild/protobuf@1.10.0) + '@penumbra-zone/storage': 45.0.0(awl26aycocmjpf6gi6bixzjtoy) '@penumbra-zone/transport-dom': 7.5.0 - '@penumbra-zone/types': 27.1.0(@bufbuild/protobuf@1.10.0)(@penumbra-zone/bech32m@11.0.0(@penumbra-zone/protobuf@7.0.0(@bufbuild/protobuf@1.10.0)))(@penumbra-zone/getters@21.0.0(@bufbuild/protobuf@1.10.0)(@penumbra-zone/bech32m@11.0.0(@penumbra-zone/protobuf@7.0.0(@bufbuild/protobuf@1.10.0)))(@penumbra-zone/protobuf@7.0.0(@bufbuild/protobuf@1.10.0)))(@penumbra-zone/protobuf@7.0.0(@bufbuild/protobuf@1.10.0)) - '@penumbra-zone/wasm': 37.1.0(@bufbuild/protobuf@1.10.0)(@penumbra-zone/bech32m@11.0.0(@penumbra-zone/protobuf@7.0.0(@bufbuild/protobuf@1.10.0)))(@penumbra-zone/protobuf@7.0.0(@bufbuild/protobuf@1.10.0))(@penumbra-zone/types@27.1.0(@bufbuild/protobuf@1.10.0)(@penumbra-zone/bech32m@11.0.0(@penumbra-zone/protobuf@7.0.0(@bufbuild/protobuf@1.10.0)))(@penumbra-zone/getters@21.0.0(@bufbuild/protobuf@1.10.0)(@penumbra-zone/bech32m@11.0.0(@penumbra-zone/protobuf@7.0.0(@bufbuild/protobuf@1.10.0)))(@penumbra-zone/protobuf@7.0.0(@bufbuild/protobuf@1.10.0)))(@penumbra-zone/protobuf@7.0.0(@bufbuild/protobuf@1.10.0))) + '@penumbra-zone/types': 28.0.0(@bufbuild/protobuf@1.10.0)(@penumbra-zone/bech32m@12.0.0(@penumbra-zone/protobuf@7.1.0(@bufbuild/protobuf@1.10.0)))(@penumbra-zone/getters@22.0.0(@bufbuild/protobuf@1.10.0)(@penumbra-zone/bech32m@12.0.0(@penumbra-zone/protobuf@7.1.0(@bufbuild/protobuf@1.10.0)))(@penumbra-zone/protobuf@7.1.0(@bufbuild/protobuf@1.10.0)))(@penumbra-zone/protobuf@7.1.0(@bufbuild/protobuf@1.10.0)) + '@penumbra-zone/wasm': 38.0.0(@bufbuild/protobuf@1.10.0)(@penumbra-zone/bech32m@12.0.0(@penumbra-zone/protobuf@7.1.0(@bufbuild/protobuf@1.10.0)))(@penumbra-zone/protobuf@7.1.0(@bufbuild/protobuf@1.10.0))(@penumbra-zone/types@28.0.0(@bufbuild/protobuf@1.10.0)(@penumbra-zone/bech32m@12.0.0(@penumbra-zone/protobuf@7.1.0(@bufbuild/protobuf@1.10.0)))(@penumbra-zone/getters@22.0.0(@bufbuild/protobuf@1.10.0)(@penumbra-zone/bech32m@12.0.0(@penumbra-zone/protobuf@7.1.0(@bufbuild/protobuf@1.10.0)))(@penumbra-zone/protobuf@7.1.0(@bufbuild/protobuf@1.10.0)))(@penumbra-zone/protobuf@7.1.0(@bufbuild/protobuf@1.10.0))) - '@penumbra-zone/storage@44.0.0(gnh36gjrbemlheeqdxogu4sxba)': + '@penumbra-zone/storage@45.0.0(awl26aycocmjpf6gi6bixzjtoy)': dependencies: '@bufbuild/protobuf': 1.10.0 - '@penumbra-labs/registry': 12.1.0 - '@penumbra-zone/bech32m': 11.0.0(@penumbra-zone/protobuf@7.0.0(@bufbuild/protobuf@1.10.0)) - '@penumbra-zone/getters': 21.0.0(@bufbuild/protobuf@1.10.0)(@penumbra-zone/bech32m@11.0.0(@penumbra-zone/protobuf@7.0.0(@bufbuild/protobuf@1.10.0)))(@penumbra-zone/protobuf@7.0.0(@bufbuild/protobuf@1.10.0)) - '@penumbra-zone/protobuf': 7.0.0(@bufbuild/protobuf@1.10.0) - '@penumbra-zone/types': 27.1.0(@bufbuild/protobuf@1.10.0)(@penumbra-zone/bech32m@11.0.0(@penumbra-zone/protobuf@7.0.0(@bufbuild/protobuf@1.10.0)))(@penumbra-zone/getters@21.0.0(@bufbuild/protobuf@1.10.0)(@penumbra-zone/bech32m@11.0.0(@penumbra-zone/protobuf@7.0.0(@bufbuild/protobuf@1.10.0)))(@penumbra-zone/protobuf@7.0.0(@bufbuild/protobuf@1.10.0)))(@penumbra-zone/protobuf@7.0.0(@bufbuild/protobuf@1.10.0)) - '@penumbra-zone/wasm': 37.1.0(@bufbuild/protobuf@1.10.0)(@penumbra-zone/bech32m@11.0.0(@penumbra-zone/protobuf@7.0.0(@bufbuild/protobuf@1.10.0)))(@penumbra-zone/protobuf@7.0.0(@bufbuild/protobuf@1.10.0))(@penumbra-zone/types@27.1.0(@bufbuild/protobuf@1.10.0)(@penumbra-zone/bech32m@11.0.0(@penumbra-zone/protobuf@7.0.0(@bufbuild/protobuf@1.10.0)))(@penumbra-zone/getters@21.0.0(@bufbuild/protobuf@1.10.0)(@penumbra-zone/bech32m@11.0.0(@penumbra-zone/protobuf@7.0.0(@bufbuild/protobuf@1.10.0)))(@penumbra-zone/protobuf@7.0.0(@bufbuild/protobuf@1.10.0)))(@penumbra-zone/protobuf@7.0.0(@bufbuild/protobuf@1.10.0))) + '@penumbra-labs/registry': 12.1.1 + '@penumbra-zone/bech32m': 12.0.0(@penumbra-zone/protobuf@7.1.0(@bufbuild/protobuf@1.10.0)) + '@penumbra-zone/getters': 22.0.0(@bufbuild/protobuf@1.10.0)(@penumbra-zone/bech32m@12.0.0(@penumbra-zone/protobuf@7.1.0(@bufbuild/protobuf@1.10.0)))(@penumbra-zone/protobuf@7.1.0(@bufbuild/protobuf@1.10.0)) + '@penumbra-zone/protobuf': 7.1.0(@bufbuild/protobuf@1.10.0) + '@penumbra-zone/types': 28.0.0(@bufbuild/protobuf@1.10.0)(@penumbra-zone/bech32m@12.0.0(@penumbra-zone/protobuf@7.1.0(@bufbuild/protobuf@1.10.0)))(@penumbra-zone/getters@22.0.0(@bufbuild/protobuf@1.10.0)(@penumbra-zone/bech32m@12.0.0(@penumbra-zone/protobuf@7.1.0(@bufbuild/protobuf@1.10.0)))(@penumbra-zone/protobuf@7.1.0(@bufbuild/protobuf@1.10.0)))(@penumbra-zone/protobuf@7.1.0(@bufbuild/protobuf@1.10.0)) + '@penumbra-zone/wasm': 38.0.0(@bufbuild/protobuf@1.10.0)(@penumbra-zone/bech32m@12.0.0(@penumbra-zone/protobuf@7.1.0(@bufbuild/protobuf@1.10.0)))(@penumbra-zone/protobuf@7.1.0(@bufbuild/protobuf@1.10.0))(@penumbra-zone/types@28.0.0(@bufbuild/protobuf@1.10.0)(@penumbra-zone/bech32m@12.0.0(@penumbra-zone/protobuf@7.1.0(@bufbuild/protobuf@1.10.0)))(@penumbra-zone/getters@22.0.0(@bufbuild/protobuf@1.10.0)(@penumbra-zone/bech32m@12.0.0(@penumbra-zone/protobuf@7.1.0(@bufbuild/protobuf@1.10.0)))(@penumbra-zone/protobuf@7.1.0(@bufbuild/protobuf@1.10.0)))(@penumbra-zone/protobuf@7.1.0(@bufbuild/protobuf@1.10.0))) idb: 8.0.0 '@penumbra-zone/transport-chrome@8.0.1(@bufbuild/protobuf@1.10.0)(@connectrpc/connect@1.4.0(@bufbuild/protobuf@1.10.0))(@penumbra-zone/transport-dom@7.5.0)': @@ -9531,24 +9531,24 @@ snapshots: '@bufbuild/protobuf': 1.10.0 '@connectrpc/connect': 1.4.0(@bufbuild/protobuf@1.10.0) - '@penumbra-zone/types@27.1.0(@bufbuild/protobuf@1.10.0)(@penumbra-zone/bech32m@11.0.0(@penumbra-zone/protobuf@7.0.0(@bufbuild/protobuf@1.10.0)))(@penumbra-zone/getters@21.0.0(@bufbuild/protobuf@1.10.0)(@penumbra-zone/bech32m@11.0.0(@penumbra-zone/protobuf@7.0.0(@bufbuild/protobuf@1.10.0)))(@penumbra-zone/protobuf@7.0.0(@bufbuild/protobuf@1.10.0)))(@penumbra-zone/protobuf@7.0.0(@bufbuild/protobuf@1.10.0))': + '@penumbra-zone/types@28.0.0(@bufbuild/protobuf@1.10.0)(@penumbra-zone/bech32m@12.0.0(@penumbra-zone/protobuf@7.1.0(@bufbuild/protobuf@1.10.0)))(@penumbra-zone/getters@22.0.0(@bufbuild/protobuf@1.10.0)(@penumbra-zone/bech32m@12.0.0(@penumbra-zone/protobuf@7.1.0(@bufbuild/protobuf@1.10.0)))(@penumbra-zone/protobuf@7.1.0(@bufbuild/protobuf@1.10.0)))(@penumbra-zone/protobuf@7.1.0(@bufbuild/protobuf@1.10.0))': dependencies: '@bufbuild/protobuf': 1.10.0 - '@penumbra-zone/bech32m': 11.0.0(@penumbra-zone/protobuf@7.0.0(@bufbuild/protobuf@1.10.0)) - '@penumbra-zone/getters': 21.0.0(@bufbuild/protobuf@1.10.0)(@penumbra-zone/bech32m@11.0.0(@penumbra-zone/protobuf@7.0.0(@bufbuild/protobuf@1.10.0)))(@penumbra-zone/protobuf@7.0.0(@bufbuild/protobuf@1.10.0)) - '@penumbra-zone/protobuf': 7.0.0(@bufbuild/protobuf@1.10.0) + '@penumbra-zone/bech32m': 12.0.0(@penumbra-zone/protobuf@7.1.0(@bufbuild/protobuf@1.10.0)) + '@penumbra-zone/getters': 22.0.0(@bufbuild/protobuf@1.10.0)(@penumbra-zone/bech32m@12.0.0(@penumbra-zone/protobuf@7.1.0(@bufbuild/protobuf@1.10.0)))(@penumbra-zone/protobuf@7.1.0(@bufbuild/protobuf@1.10.0)) + '@penumbra-zone/protobuf': 7.1.0(@bufbuild/protobuf@1.10.0) bignumber.js: 9.1.2 decimal.js: 10.4.3 idb: 8.0.0 lodash: 4.17.21 zod: 3.23.8 - '@penumbra-zone/wasm@37.1.0(@bufbuild/protobuf@1.10.0)(@penumbra-zone/bech32m@11.0.0(@penumbra-zone/protobuf@7.0.0(@bufbuild/protobuf@1.10.0)))(@penumbra-zone/protobuf@7.0.0(@bufbuild/protobuf@1.10.0))(@penumbra-zone/types@27.1.0(@bufbuild/protobuf@1.10.0)(@penumbra-zone/bech32m@11.0.0(@penumbra-zone/protobuf@7.0.0(@bufbuild/protobuf@1.10.0)))(@penumbra-zone/getters@21.0.0(@bufbuild/protobuf@1.10.0)(@penumbra-zone/bech32m@11.0.0(@penumbra-zone/protobuf@7.0.0(@bufbuild/protobuf@1.10.0)))(@penumbra-zone/protobuf@7.0.0(@bufbuild/protobuf@1.10.0)))(@penumbra-zone/protobuf@7.0.0(@bufbuild/protobuf@1.10.0)))': + '@penumbra-zone/wasm@38.0.0(@bufbuild/protobuf@1.10.0)(@penumbra-zone/bech32m@12.0.0(@penumbra-zone/protobuf@7.1.0(@bufbuild/protobuf@1.10.0)))(@penumbra-zone/protobuf@7.1.0(@bufbuild/protobuf@1.10.0))(@penumbra-zone/types@28.0.0(@bufbuild/protobuf@1.10.0)(@penumbra-zone/bech32m@12.0.0(@penumbra-zone/protobuf@7.1.0(@bufbuild/protobuf@1.10.0)))(@penumbra-zone/getters@22.0.0(@bufbuild/protobuf@1.10.0)(@penumbra-zone/bech32m@12.0.0(@penumbra-zone/protobuf@7.1.0(@bufbuild/protobuf@1.10.0)))(@penumbra-zone/protobuf@7.1.0(@bufbuild/protobuf@1.10.0)))(@penumbra-zone/protobuf@7.1.0(@bufbuild/protobuf@1.10.0)))': dependencies: '@bufbuild/protobuf': 1.10.0 - '@penumbra-zone/bech32m': 11.0.0(@penumbra-zone/protobuf@7.0.0(@bufbuild/protobuf@1.10.0)) - '@penumbra-zone/protobuf': 7.0.0(@bufbuild/protobuf@1.10.0) - '@penumbra-zone/types': 27.1.0(@bufbuild/protobuf@1.10.0)(@penumbra-zone/bech32m@11.0.0(@penumbra-zone/protobuf@7.0.0(@bufbuild/protobuf@1.10.0)))(@penumbra-zone/getters@21.0.0(@bufbuild/protobuf@1.10.0)(@penumbra-zone/bech32m@11.0.0(@penumbra-zone/protobuf@7.0.0(@bufbuild/protobuf@1.10.0)))(@penumbra-zone/protobuf@7.0.0(@bufbuild/protobuf@1.10.0)))(@penumbra-zone/protobuf@7.0.0(@bufbuild/protobuf@1.10.0)) + '@penumbra-zone/bech32m': 12.0.0(@penumbra-zone/protobuf@7.1.0(@bufbuild/protobuf@1.10.0)) + '@penumbra-zone/protobuf': 7.1.0(@bufbuild/protobuf@1.10.0) + '@penumbra-zone/types': 28.0.0(@bufbuild/protobuf@1.10.0)(@penumbra-zone/bech32m@12.0.0(@penumbra-zone/protobuf@7.1.0(@bufbuild/protobuf@1.10.0)))(@penumbra-zone/getters@22.0.0(@bufbuild/protobuf@1.10.0)(@penumbra-zone/bech32m@12.0.0(@penumbra-zone/protobuf@7.1.0(@bufbuild/protobuf@1.10.0)))(@penumbra-zone/protobuf@7.1.0(@bufbuild/protobuf@1.10.0)))(@penumbra-zone/protobuf@7.1.0(@bufbuild/protobuf@1.10.0)) optionalDependencies: '@penumbra-zone/keys': 4.2.1