From 5c1219c58862959ba7f4d4cf57674ad61f10c32a Mon Sep 17 00:00:00 2001 From: Dan Connolly Date: Tue, 26 Nov 2024 13:39:26 -0600 Subject: [PATCH 01/20] fix(orchestration): harden result of reverseConnInfo non-hardened objects can't go in stores such as `connectionInfos`. --- packages/orchestration/src/exos/chain-hub.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/orchestration/src/exos/chain-hub.js b/packages/orchestration/src/exos/chain-hub.js index a782294256c..39cd3626d83 100644 --- a/packages/orchestration/src/exos/chain-hub.js +++ b/packages/orchestration/src/exos/chain-hub.js @@ -98,7 +98,7 @@ export const connectionKey = (chainId1, chainId2) => { */ const reverseConnInfo = connInfo => { const { transferChannel } = connInfo; - return { + return harden({ id: connInfo.counterparty.connection_id, client_id: connInfo.counterparty.client_id, counterparty: { @@ -113,7 +113,7 @@ const reverseConnInfo = connInfo => { portId: transferChannel.counterPartyPortId, counterPartyPortId: transferChannel.portId, }, - }; + }); }; /** From c5521e5290903474b76b7c311cc9a150923bf306 Mon Sep 17 00:00:00 2001 From: Dan Connolly Date: Tue, 26 Nov 2024 13:43:19 -0600 Subject: [PATCH 02/20] chore(orchestration): log keys of registered chains, assets, ... --- packages/orchestration/src/utils/chain-hub-helper.js | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/packages/orchestration/src/utils/chain-hub-helper.js b/packages/orchestration/src/utils/chain-hub-helper.js index be01c8b3ef7..9e75248c6e3 100644 --- a/packages/orchestration/src/utils/chain-hub-helper.js +++ b/packages/orchestration/src/utils/chain-hub-helper.js @@ -18,8 +18,8 @@ export const registerChainsAndAssets = ( chainInfo, assetInfo, ) => { + console.log('chainHub: registering chains', Object.keys(chainInfo || {})); if (!chainInfo) { - console.log('No chain info provided, returning early.'); return; } @@ -32,16 +32,17 @@ export const registerChainsAndAssets = ( const registeredPairs = new Set(); for (const [pChainId, connInfos] of Object.entries(conns)) { for (const [cChainId, connInfo] of Object.entries(connInfos)) { - const pair = [pChainId, cChainId].sort().join(''); + const pair = [pChainId, cChainId].sort().join('<->'); if (!registeredPairs.has(pair)) { chainHub.registerConnection(pChainId, cChainId, connInfo); registeredPairs.add(pair); } } } + console.log('chainHub: registered connections', [...registeredPairs].sort()); + console.log('chainHub: registering assets', Object.keys(assetInfo || {})); if (!assetInfo) { - console.log('No asset info provided, returning early.'); return; } for (const [denom, info] of Object.entries(assetInfo)) { From 8cb50189b2a3d30934af7a24ab7e2530b995a28f Mon Sep 17 00:00:00 2001 From: Dan Connolly Date: Fri, 22 Nov 2024 23:48:13 -0600 Subject: [PATCH 03/20] chore(fast-usdc): chainInfo, assetinfo in test/supports privateArgs - realistic USDC denom in test supports --- packages/fast-usdc/test/supports.ts | 61 ++++++++++++++++++++++++++--- 1 file changed, 56 insertions(+), 5 deletions(-) diff --git a/packages/fast-usdc/test/supports.ts b/packages/fast-usdc/test/supports.ts index e7977de6963..174a28ceed9 100644 --- a/packages/fast-usdc/test/supports.ts +++ b/packages/fast-usdc/test/supports.ts @@ -2,8 +2,16 @@ import { makeIssuerKit } from '@agoric/ertp'; import { VTRANSFER_IBC_EVENT } from '@agoric/internal/src/action-types.js'; import { makeFakeStorageKit } from '@agoric/internal/src/storage-test-utils.js'; import { eventLoopIteration } from '@agoric/internal/src/testing-utils.js'; +import { + denomHash, + type CosmosChainInfo, + type Denom, +} from '@agoric/orchestration'; import { registerKnownChains } from '@agoric/orchestration/src/chain-info.js'; -import { makeChainHub } from '@agoric/orchestration/src/exos/chain-hub.js'; +import { + makeChainHub, + type DenomDetail, +} from '@agoric/orchestration/src/exos/chain-hub.js'; import { prepareCosmosInterchainService } from '@agoric/orchestration/src/exos/cosmos-interchain-service.js'; import fetchedChainInfo from '@agoric/orchestration/src/fetched-chain-info.js'; import { setupFakeNetwork } from '@agoric/orchestration/test/network-fakes.js'; @@ -35,6 +43,36 @@ export { makeFakeTransferBridge, } from '@agoric/vats/tools/fake-bridge.js'; +const assetOn = ( + baseDenom: Denom, + baseName: string, + chainName?: string, + infoOf?: Record, + brandKey?: string, +): [string, DenomDetail & { brandKey?: string }] => { + if (!chainName) { + return [baseDenom, { baseName, chainName: baseName, baseDenom }]; + } + if (!infoOf) throw Error(`must provide infoOf`); + const issuerInfo = infoOf[baseName]; + const holdingInfo = infoOf[chainName]; + if (!holdingInfo) throw Error(`${chainName} missing`); + if (!holdingInfo.connections) + throw Error(`connections missing for ${chainName}`); + const { channelId } = + holdingInfo.connections[issuerInfo.chainId].transferChannel; + const denom = `ibc/${denomHash({ denom: baseDenom, channelId })}`; + return [denom, { baseName, chainName, baseDenom, brandKey }]; +}; + +export const [uusdcOnAgoric, agUSDCDetail] = assetOn( + 'uusdc', + 'noble', + 'agoric', + fetchedChainInfo, + 'USDC', +); + export const commonSetup = async (t: ExecutionContext) => { t.log('bootstrap vat dependencies'); // The common setup cannot support a durable zone because many of the fakes are not durable. @@ -52,7 +90,7 @@ export const commonSetup = async (t: ExecutionContext) => { onToBridge: obj => bankBridgeMessages.push(obj), }); await E(bankManager).addAsset( - 'ibc/usdconagoric', + uusdcOnAgoric, 'USDC', 'USD Circle Stablecoin', usdc.issuerKit, @@ -64,7 +102,7 @@ export const commonSetup = async (t: ExecutionContext) => { // TODO https://github.com/Agoric/agoric-sdk/issues/9966 await makeWellKnownSpaces(agoricNamesAdmin, t.log, ['vbankAsset']); await E(E(agoricNamesAdmin).lookupAdmin('vbankAsset')).update( - 'ibc/usdconagoric', + uusdcOnAgoric, /** @type {AssetInfo} */ harden({ brand: usdc.brand, issuer: usdc.issuer, @@ -157,6 +195,19 @@ export const commonSetup = async (t: ExecutionContext) => { vowTools, ); + const chainInfo = harden(() => { + const { agoric, osmosis, noble } = fetchedChainInfo; + return { agoric, osmosis, noble }; + })(); + + const assetInfo = harden( + Object.fromEntries([ + assetOn('uusdc', 'noble'), + [uusdcOnAgoric, agUSDCDetail], + assetOn('uusdc', 'noble', 'osmosis', fetchedChainInfo), + ]), + ); + return { bootstrap: { agoricNames, @@ -186,8 +237,8 @@ export const commonSetup = async (t: ExecutionContext) => { marshaller, timerService: timer, feeConfig: makeTestFeeConfig(usdc), - chainInfo: {}, - assetInfo: {}, + chainInfo, + assetInfo, }, facadeServices: { agoricNames, From 3807763c2422c8c9112e62b568e6904d2ec4eb10 Mon Sep 17 00:00:00 2001 From: Dan Connolly Date: Fri, 22 Nov 2024 23:49:55 -0600 Subject: [PATCH 04/20] style: lint / organize imports in settler.test --- packages/fast-usdc/test/exos/settler.test.ts | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/packages/fast-usdc/test/exos/settler.test.ts b/packages/fast-usdc/test/exos/settler.test.ts index 6ca8491db2f..d4c82a7652b 100644 --- a/packages/fast-usdc/test/exos/settler.test.ts +++ b/packages/fast-usdc/test/exos/settler.test.ts @@ -1,17 +1,17 @@ import { test as anyTest } from '@agoric/zoe/tools/prepare-test-env-ava.js'; import type { TestFn } from 'ava'; +import { eventLoopIteration } from '@agoric/internal/src/testing-utils.js'; import fetchedChainInfo from '@agoric/orchestration/src/fetched-chain-info.js'; import type { Zone } from '@agoric/zone'; -import { eventLoopIteration } from '@agoric/internal/src/testing-utils.js'; import { PendingTxStatus } from '../../src/constants.js'; import { prepareSettler } from '../../src/exos/settler.js'; import { prepareStatusManager } from '../../src/exos/status-manager.js'; -import { commonSetup } from '../supports.js'; -import { MockCctpTxEvidences, MockVTransferEvents } from '../fixtures.js'; import type { CctpTxEvidence } from '../../src/types.js'; -import { makeTestLogger, prepareMockOrchAccounts } from '../mocks.js'; import { makeFeeTools } from '../../src/utils/fees.js'; +import { MockCctpTxEvidences, MockVTransferEvents } from '../fixtures.js'; +import { makeTestLogger, prepareMockOrchAccounts } from '../mocks.js'; +import { commonSetup } from '../supports.js'; const mockZcf = (zone: Zone) => { const callLog = [] as any[]; From 61067a74c7d2fe410e13a048a00d64091ad5948a Mon Sep 17 00:00:00 2001 From: Dan Connolly Date: Fri, 22 Nov 2024 23:50:12 -0600 Subject: [PATCH 05/20] chore: settler: log on rejection --- packages/fast-usdc/src/exos/settler.js | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/packages/fast-usdc/src/exos/settler.js b/packages/fast-usdc/src/exos/settler.js index 9083a80b420..c7e509628e0 100644 --- a/packages/fast-usdc/src/exos/settler.js +++ b/packages/fast-usdc/src/exos/settler.js @@ -262,10 +262,11 @@ export const prepareSettler = ( statusManager.forwarded(txHash, sender, amount); }, /** - * @param {unknown} _result - * @param {SettlerTransferCtx} _ctx + * @param {unknown} reason + * @param {SettlerTransferCtx} ctx */ - onRejected(_result, _ctx) { + onRejected(reason, ctx) { + trace('transfer rejected!', reason, ctx); // const { txHash, sender, amount } = ctx; // TODO: statusManager.forwardFailed(txHash, sender, amount); }, From 661b05b9ad16a94b4bff6ba470018d50647b4498 Mon Sep 17 00:00:00 2001 From: Dan Connolly Date: Sun, 24 Nov 2024 21:08:58 -0600 Subject: [PATCH 06/20] chore: parameterize settler LogFn --- packages/fast-usdc/src/exos/settler.js | 30 +++++++++++++++++--------- 1 file changed, 20 insertions(+), 10 deletions(-) diff --git a/packages/fast-usdc/src/exos/settler.js b/packages/fast-usdc/src/exos/settler.js index c7e509628e0..355d35798f2 100644 --- a/packages/fast-usdc/src/exos/settler.js +++ b/packages/fast-usdc/src/exos/settler.js @@ -17,12 +17,10 @@ import { EvmHashShape } from '../type-guards.js'; * @import {Zone} from '@agoric/zone'; * @import {HostOf, HostInterface} from '@agoric/async-flow'; * @import {TargetRegistration} from '@agoric/vats/src/bridge-target.js'; - * @import {NobleAddress, LiquidityPoolKit, FeeConfig, EvmHash} from '../types.js'; + * @import {NobleAddress, LiquidityPoolKit, FeeConfig, EvmHash, LogFn} from '../types.js'; * @import {StatusManager} from './status-manager.js'; */ -const trace = makeTracer('Settler'); - /** * NOTE: not meant to be parsable. * @@ -42,10 +40,20 @@ const makeMintedEarlyKey = (addr, amount) => * @param {HostOf} caps.withdrawToSeat * @param {import('@agoric/vow').VowTools} caps.vowTools * @param {ChainHub} caps.chainHub + * @param {LogFn} [caps.log] */ export const prepareSettler = ( zone, - { statusManager, USDC, zcf, feeConfig, withdrawToSeat, vowTools, chainHub }, + { + chainHub, + feeConfig, + log = makeTracer('Settler', true), + statusManager, + USDC, + vowTools, + withdrawToSeat, + zcf, + }, ) => { assertAllDefined({ statusManager }); return zone.exoClassKit( @@ -89,6 +97,7 @@ export const prepareSettler = ( * }} config */ config => { + log('config', config); return { ...config, /** @type {HostInterface|undefined} */ @@ -111,11 +120,12 @@ export const prepareSettler = ( tap: { /** @param {VTransferIBCEvent} event */ async receiveUpcall(event) { + log('upcall event', event.packet.sequence, event.blockTime); const { sourceChannel, remoteDenom } = this.state; const { packet } = event; if (packet.source_channel !== sourceChannel) { const { source_channel: actual } = packet; - trace('unexpected channel', { actual, expected: sourceChannel }); + log('unexpected channel', { actual, expected: sourceChannel }); return; } @@ -129,7 +139,7 @@ export const prepareSettler = ( if (tx.denom !== remoteDenom) { const { denom: actual } = tx; - trace('unexpected denom', { actual, expected: remoteDenom }); + log('unexpected denom', { actual, expected: remoteDenom }); return; } @@ -148,7 +158,7 @@ export const prepareSettler = ( const { self } = this.facets; const found = statusManager.dequeueStatus(sender, amount); - trace('dequeued', found, 'for', sender, amount); + log('dequeued', found, 'for', sender, amount); switch (found?.status) { case PendingTxStatus.Advanced: return self.disburse(found.txHash, sender, amount); @@ -201,7 +211,7 @@ export const prepareSettler = ( const { zcfSeat: settlingSeat } = zcf.makeEmptySeatKit(); const { calculateSplit } = makeFeeTools(feeConfig); const split = calculateSplit(received); - trace('disbursing', split); + log('disbursing', split); // TODO: what if this throws? // arguably, it cannot. Even if deposits @@ -266,9 +276,9 @@ export const prepareSettler = ( * @param {SettlerTransferCtx} ctx */ onRejected(reason, ctx) { - trace('transfer rejected!', reason, ctx); + log('⚠️ transfer rejected!', reason, ctx); // const { txHash, sender, amount } = ctx; - // TODO: statusManager.forwardFailed(txHash, sender, amount); + // TODO(#10510): statusManager.forwardFailed(txHash, sender, amount); }, }, }, From c4546a27a943475cc6e3f8c469c0122fb10c184f Mon Sep 17 00:00:00 2001 From: Dan Connolly Date: Mon, 25 Nov 2024 19:31:12 -0600 Subject: [PATCH 07/20] chore: sync notifyAdvancingResult interface guard --- packages/fast-usdc/src/exos/settler.js | 2 ++ 1 file changed, 2 insertions(+) diff --git a/packages/fast-usdc/src/exos/settler.js b/packages/fast-usdc/src/exos/settler.js index 355d35798f2..8d6b5b8ad78 100644 --- a/packages/fast-usdc/src/exos/settler.js +++ b/packages/fast-usdc/src/exos/settler.js @@ -67,8 +67,10 @@ export const prepareSettler = ( }), notify: M.interface('SettlerNotifyI', { notifyAdvancingResult: M.call( + M.string(), M.string(), M.nat(), + M.string(), M.boolean(), ).returns(), }), From 3f0036b2d77fd476c19283ba985599bc69b59d9d Mon Sep 17 00:00:00 2001 From: Dan Connolly Date: Mon, 25 Nov 2024 20:25:51 -0600 Subject: [PATCH 08/20] chore: report fullAmount from settler to advanceOutcome --- packages/fast-usdc/src/exos/settler.js | 61 +++++++++++++++----------- 1 file changed, 36 insertions(+), 25 deletions(-) diff --git a/packages/fast-usdc/src/exos/settler.js b/packages/fast-usdc/src/exos/settler.js index 8d6b5b8ad78..ac74679cc06 100644 --- a/packages/fast-usdc/src/exos/settler.js +++ b/packages/fast-usdc/src/exos/settler.js @@ -11,7 +11,7 @@ import { EvmHashShape } from '../type-guards.js'; /** * @import {FungibleTokenPacketData} from '@agoric/cosmic-proto/ibc/applications/transfer/v2/packet.js'; - * @import {Denom, OrchestrationAccount, ChainHub} from '@agoric/orchestration'; + * @import {Denom, OrchestrationAccount, ChainHub, ChainAddress} from '@agoric/orchestration'; * @import {WithdrawToSeat} from '@agoric/orchestration/src/utils/zoe-tools' * @import {IBCChannelID, VTransferIBCEvent} from '@agoric/vats'; * @import {Zone} from '@agoric/zone'; @@ -67,10 +67,7 @@ export const prepareSettler = ( }), notify: M.interface('SettlerNotifyI', { notifyAdvancingResult: M.call( - M.string(), - M.string(), - M.nat(), - M.string(), + M.record(), // XXX fill in details TODO M.boolean(), ).returns(), }), @@ -179,25 +176,39 @@ export const prepareSettler = ( }, notify: { /** - * @param {EvmHash} txHash - * @param {NobleAddress} sender - * @param {NatValue} amount - * @param {string} EUD + * @param {object} ctx + * @param {EvmHash} ctx.txHash + * @param {NobleAddress} ctx.forwardingAddress + * @param {Amount<'nat'>} ctx.fullAmount + * @param {ChainAddress} ctx.destination * @param {boolean} success * @returns {void} */ - notifyAdvancingResult(txHash, sender, amount, EUD, success) { + notifyAdvancingResult( + { txHash, forwardingAddress, fullAmount, destination }, + success, + ) { const { mintedEarly } = this.state; - const key = makeMintedEarlyKey(sender, amount); + const { value: fullValue } = fullAmount; + const key = makeMintedEarlyKey(forwardingAddress, fullValue); if (mintedEarly.has(key)) { mintedEarly.delete(key); if (success) { - void this.facets.self.disburse(txHash, sender, amount); + void this.facets.self.disburse( + txHash, + forwardingAddress, + fullValue, + ); } else { - void this.facets.self.forward(txHash, sender, amount, EUD); + void this.facets.self.forward( + txHash, + forwardingAddress, + fullValue, + destination.value, + ); } } else { - statusManager.advanceOutcome(sender, amount, success); + statusManager.advanceOutcome(forwardingAddress, fullValue, success); } }, }, @@ -205,11 +216,11 @@ export const prepareSettler = ( /** * @param {EvmHash} txHash * @param {NobleAddress} sender - * @param {NatValue} amount + * @param {NatValue} fullValue */ - async disburse(txHash, sender, amount) { + async disburse(txHash, sender, fullValue) { const { repayer, settlementAccount } = this.state; - const received = AmountMath.make(USDC, amount); + const received = AmountMath.make(USDC, fullValue); const { zcfSeat: settlingSeat } = zcf.makeEmptySeatKit(); const { calculateSplit } = makeFeeTools(feeConfig); const split = calculateSplit(received); @@ -238,10 +249,10 @@ export const prepareSettler = ( /** * @param {EvmHash | undefined} txHash * @param {NobleAddress} sender - * @param {NatValue} amount + * @param {NatValue} fullValue * @param {string} EUD */ - forward(txHash, sender, amount, EUD) { + forward(txHash, sender, fullValue, EUD) { const { settlementAccount } = this.state; const dest = chainHub.makeChainAddress(EUD); @@ -249,12 +260,12 @@ export const prepareSettler = ( // TODO? statusManager.forwarding(txHash, sender, amount); const txfrV = E(settlementAccount).transfer( dest, - AmountMath.make(USDC, amount), + AmountMath.make(USDC, fullValue), ); void vowTools.watch(txfrV, this.facets.transferHandler, { txHash, sender, - amount, + fullValue, }); }, }, @@ -264,14 +275,14 @@ export const prepareSettler = ( * @param {SettlerTransferCtx} ctx * * @typedef {{ - * txHash: EvmHash; + * txHash: EvmHash | undefined; * sender: NobleAddress; - * amount: NatValue; + * fullValue: NatValue; * }} SettlerTransferCtx */ onFulfilled(_result, ctx) { - const { txHash, sender, amount } = ctx; - statusManager.forwarded(txHash, sender, amount); + const { txHash, sender, fullValue } = ctx; + statusManager.forwarded(txHash, sender, fullValue); }, /** * @param {unknown} reason From 32d362b220aa4260ccd62722a7f524a399ee1c0c Mon Sep 17 00:00:00 2001 From: Dan Connolly Date: Mon, 25 Nov 2024 20:27:20 -0600 Subject: [PATCH 09/20] chore: provide fullAmount from advancer to settler.notify... --- packages/fast-usdc/src/exos/advancer.js | 97 +++++++++++-------------- 1 file changed, 42 insertions(+), 55 deletions(-) diff --git a/packages/fast-usdc/src/exos/advancer.js b/packages/fast-usdc/src/exos/advancer.js index 902cc890283..f5a9f8afd09 100644 --- a/packages/fast-usdc/src/exos/advancer.js +++ b/packages/fast-usdc/src/exos/advancer.js @@ -1,6 +1,6 @@ -import { AmountMath, AmountShape } from '@agoric/ertp'; +import { AmountMath } from '@agoric/ertp'; import { assertAllDefined, makeTracer } from '@agoric/internal'; -import { ChainAddressShape } from '@agoric/orchestration'; +import { AnyNatAmountShape, ChainAddressShape } from '@agoric/orchestration'; import { pickFacet } from '@agoric/vat-data'; import { VowShape } from '@agoric/vow'; import { q } from '@endo/errors'; @@ -16,6 +16,7 @@ import { makeFeeTools } from '../utils/fees.js'; /** * @import {HostInterface} from '@agoric/async-flow'; + * @import {TypedPattern} from '@agoric/internal' * @import {NatAmount} from '@agoric/ertp'; * @import {ChainAddress, ChainHub, Denom, OrchestrationAccount} from '@agoric/orchestration'; * @import {ZoeTools} from '@agoric/orchestration/src/utils/zoe-tools.js'; @@ -39,47 +40,40 @@ import { makeFeeTools } from '../utils/fees.js'; * }} AdvancerKitPowers */ +/** @type {TypedPattern} */ +const AdvancerVowCtxShape = M.splitRecord( + { + fullAmount: AnyNatAmountShape, + advanceAmount: AnyNatAmountShape, + destination: ChainAddressShape, + forwardingAddress: M.string(), + txHash: EvmHashShape, + }, + { tmpSeat: M.remotable() }, +); + /** type guards internal to the AdvancerKit */ const AdvancerKitI = harden({ advancer: M.interface('AdvancerI', { handleTransactionEvent: M.callWhen(CctpTxEvidenceShape).returns(), }), depositHandler: M.interface('DepositHandlerI', { - onFulfilled: M.call(M.undefined(), { - amount: AmountShape, - destination: ChainAddressShape, - forwardingAddress: M.string(), - tmpSeat: M.remotable(), - txHash: EvmHashShape, - }).returns(VowShape), - onRejected: M.call(M.error(), { - amount: AmountShape, - destination: ChainAddressShape, - forwardingAddress: M.string(), - tmpSeat: M.remotable(), - txHash: EvmHashShape, - }).returns(), + onFulfilled: M.call(M.undefined(), AdvancerVowCtxShape).returns(VowShape), + onRejected: M.call(M.error(), AdvancerVowCtxShape).returns(), }), transferHandler: M.interface('TransferHandlerI', { // TODO confirm undefined, and not bigint (sequence) - onFulfilled: M.call(M.undefined(), { - amount: AmountShape, - destination: ChainAddressShape, - forwardingAddress: M.string(), - txHash: EvmHashShape, - }).returns(M.undefined()), - onRejected: M.call(M.error(), { - amount: AmountShape, - destination: ChainAddressShape, - forwardingAddress: M.string(), - txHash: EvmHashShape, - }).returns(M.undefined()), + onFulfilled: M.call(M.undefined(), AdvancerVowCtxShape).returns( + M.undefined(), + ), + onRejected: M.call(M.error(), AdvancerVowCtxShape).returns(M.undefined()), }), }); /** * @typedef {{ - * amount: NatAmount; + * fullAmount: NatAmount; + * advanceAmount: NatAmount; * destination: ChainAddress; * forwardingAddress: NobleAddress; * txHash: EvmHash; @@ -155,9 +149,9 @@ export const prepareAdvancerKit = ( // throws if the bech32 prefix is not found const destination = chainHub.makeChainAddress(EUD); - const requestedAmount = toAmount(evidence.tx.amount); + const fullAmount = toAmount(evidence.tx.amount); // throws if requested does not exceed fees - const advanceAmount = feeTools.calculateAdvance(requestedAmount); + const advanceAmount = feeTools.calculateAdvance(fullAmount); const { zcfSeat: tmpSeat } = zcf.makeEmptySeatKit(); const amountKWR = harden({ USDC: advanceAmount }); @@ -174,7 +168,8 @@ export const prepareAdvancerKit = ( amountKWR, ); void watch(depositV, this.facets.depositHandler, { - amount: advanceAmount, + fullAmount, + advanceAmount, destination, forwardingAddress: evidence.tx.forwardingAddress, tmpSeat, @@ -193,16 +188,15 @@ export const prepareAdvancerKit = ( */ onFulfilled(result, ctx) { const { poolAccount } = this.state; - const { amount, destination, forwardingAddress, txHash } = ctx; + const { destination, advanceAmount, ...detail } = ctx; const transferV = E(poolAccount).transfer(destination, { denom: usdc.denom, - value: amount.value, + value: advanceAmount.value, }); return watch(transferV, this.facets.transferHandler, { destination, - amount, - forwardingAddress, - txHash, + advanceAmount, + ...detail, }); }, /** @@ -222,23 +216,23 @@ export const prepareAdvancerKit = ( }, transferHandler: { /** - * @param {undefined} result TODO confirm this is not a bigint (sequence) + * @param {unknown} result TODO confirm this is not a bigint (sequence) * @param {AdvancerVowCtx} ctx */ onFulfilled(result, ctx) { const { notifyFacet } = this.state; - const { amount, destination, forwardingAddress, txHash } = ctx; + const { advanceAmount, destination, ...detail } = ctx; log( 'Advance transfer fulfilled', - q({ amount, destination, result }).toString(), - ); - notifyFacet.notifyAdvancingResult( - txHash, - forwardingAddress, - amount.value, - destination.value, - true, + q({ advanceAmount, destination, result }).toString(), ); + // During development, due to a bug, this call threw. + // The failure was silent (no diagnostics) due to: + // - #10576 Vows do not report unhandled rejections + // For now, the advancer kit relies on consistency between + // notifyFacet, statusManager, and callers of handleTransactionEvent(). + // TODO: revisit #10576 during #10510 + notifyFacet.notifyAdvancingResult({ destination, ...detail }, true); }, /** * @param {Error} error @@ -246,15 +240,8 @@ export const prepareAdvancerKit = ( */ onRejected(error, ctx) { const { notifyFacet } = this.state; - const { amount, destination, forwardingAddress, txHash } = ctx; log('Advance transfer rejected', q(error).toString()); - notifyFacet.notifyAdvancingResult( - txHash, - forwardingAddress, - amount.value, - destination.value, - false, - ); + notifyFacet.notifyAdvancingResult(ctx, false); }, }, }, From 3f5210d9f229931d2c1d6c8f42651ff18253cdf9 Mon Sep 17 00:00:00 2001 From: Dan Connolly Date: Tue, 26 Nov 2024 00:27:43 -0600 Subject: [PATCH 10/20] test: advancer: use fullAmount / advanceAmount (WIP) --- packages/fast-usdc/test/exos/advancer.test.ts | 39 ++++++++++++------- 1 file changed, 26 insertions(+), 13 deletions(-) diff --git a/packages/fast-usdc/test/exos/advancer.test.ts b/packages/fast-usdc/test/exos/advancer.test.ts index 14f1fe4b3ea..0921fb4838f 100644 --- a/packages/fast-usdc/test/exos/advancer.test.ts +++ b/packages/fast-usdc/test/exos/advancer.test.ts @@ -186,17 +186,22 @@ test('updates status to ADVANCING in happy path', async t => { t.deepEqual(inspectLogs(0), [ 'Advance transfer fulfilled', - '{"amount":{"brand":"[Alleged: USDC brand]","value":"[146999999n]"},"destination":{"chainId":"osmosis-1","encoding":"bech32","value":"osmo183dejcnmkka5dzcu9xw6mywq0p2m5peks28men"},"result":"[undefined]"}', + '{"advanceAmount":{"brand":"[Alleged: USDC brand]","value":"[146999999n]"},"destination":{"chainId":"osmosis-1","encoding":"bech32","value":"osmo183dejcnmkka5dzcu9xw6mywq0p2m5peks28men"},"result":"[undefined]"}', ]); // We expect to see an `Advanced` update, but that is now Settler's job. // but we can ensure it's called - t.deepEqual(inspectNotifyCalls(), [ + t.like(inspectNotifyCalls(), [ [ - mockEvidence.txHash, - mockEvidence.tx.forwardingAddress, - feeTools.calculateAdvance(usdc.make(mockEvidence.tx.amount)).value, - addressTools.getQueryParams(mockEvidence.aux.recipientAddress).EUD, + { + txHash: mockEvidence.txHash, + forwardingAddress: mockEvidence.tx.forwardingAddress, + fullAmount: usdc.make(mockEvidence.tx.amount), + destination: { + value: addressTools.getQueryParams(mockEvidence.aux.recipientAddress) + .EUD, + }, + }, true, // indicates transfer succeeded ], ]); @@ -305,13 +310,21 @@ test('calls notifyAdvancingResult (AdvancedFailed) on failed transfer', async t // We expect to see an `AdvancedFailed` update, but that is now Settler's job. // but we can ensure it's called - t.deepEqual(inspectNotifyCalls(), [ + t.like(inspectNotifyCalls(), [ [ - mockEvidence.txHash, - mockEvidence.tx.forwardingAddress, - feeTools.calculateAdvance(usdc.make(mockEvidence.tx.amount)).value, - addressTools.getQueryParams(mockEvidence.aux.recipientAddress).EUD, - false, // this indicates transfer succeeded + { + txHash: mockEvidence.txHash, + forwardingAddress: mockEvidence.tx.forwardingAddress, + fullAmount: usdc.make(mockEvidence.tx.amount), + advanceAmount: feeTools.calculateAdvance( + usdc.make(mockEvidence.tx.amount), + ), + destination: { + value: addressTools.getQueryParams(mockEvidence.aux.recipientAddress) + .EUD, + }, + }, + false, // this indicates transfer failed ], ]); }); @@ -364,7 +377,7 @@ test('will not advance same txHash:chainId evidence twice', async t => { t.deepEqual(inspectLogs(0), [ 'Advance transfer fulfilled', - '{"amount":{"brand":"[Alleged: USDC brand]","value":"[146999999n]"},"destination":{"chainId":"osmosis-1","encoding":"bech32","value":"osmo183dejcnmkka5dzcu9xw6mywq0p2m5peks28men"},"result":"[undefined]"}', + '{"advanceAmount":{"brand":"[Alleged: USDC brand]","value":"[146999999n]"},"destination":{"chainId":"osmosis-1","encoding":"bech32","value":"osmo183dejcnmkka5dzcu9xw6mywq0p2m5peks28men"},"result":"[undefined]"}', ]); // Second attempt From d9a9791f5ef364074c44f64f067c2ed65e2bf166 Mon Sep 17 00:00:00 2001 From: Dan Connolly Date: Fri, 22 Nov 2024 23:51:00 -0600 Subject: [PATCH 11/20] chore: real sourceChannel for settler --- packages/fast-usdc/src/fast-usdc.contract.js | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/packages/fast-usdc/src/fast-usdc.contract.js b/packages/fast-usdc/src/fast-usdc.contract.js index 0863dcdc210..d7f886cec7a 100644 --- a/packages/fast-usdc/src/fast-usdc.contract.js +++ b/packages/fast-usdc/src/fast-usdc.contract.js @@ -246,9 +246,12 @@ export const contract = async (zcf, privateArgs, zone, tools) => { vowTools.all([poolAccountV, settleAccountV]), ); + const [_agoric, _noble, agToNoble] = await vowTools.when( + chainHub.getChainsAndConnection('agoric', 'noble'), + ); const settlerKit = makeSettler({ repayer: poolKit.repayer, - sourceChannel: 'channel-1234', // TODO: fix this as soon as testing needs it', + sourceChannel: agToNoble.transferChannel.counterPartyChannelId, remoteDenom: 'uusdc', settlementAccount, }); From 4652d3201f1c803f2ea48a4fbccd464019443437 Mon Sep 17 00:00:00 2001 From: Dan Connolly Date: Fri, 22 Nov 2024 19:14:01 -0600 Subject: [PATCH 12/20] test(fast-usdc): contract flow tests 10 tests passed 1 known failure 2 tests skipped 7 tests todo Done in 3.43s. - [skip] LP borrow - TODO: move to exo test - [skip] LP repay - TODO: move to exo test - [todo] PERF: Target: settlement completes in a few minutes (after USDC is minted) - [todo] C21 - Contract MUST log / timestamp each step in the transaction flow - [todo] document metrics storage schema - [todo] get metrics from vstorage - [todo] C12 - Contract MUST only pay back the Pool only if they started the advance before USDC is minted - [todo] C18 - forward - MUST log and alert these incidents - [todo] fee levels MUST be visible to external parties - i.e., written to public storage - known failure: unknown transaction settler should Leave funds in SettlementAccount. - use oracle, customer in advance happy path - factor out makeOracleOperator - registerAsset() from the test jig doesn't work: brands in the contract are in a different "address space" - use realistic USDC denom - shared context for contract tests - customer sends before LPs deposit - racer tests - flatten makeLP - don't mix with pourPayment - derive publicFacet etc. from instance as client would - skip LP test that used test-only methods - prune outdated Oracle rights test --- .../fast-usdc/test/fast-usdc.contract.test.ts | 980 ++++++++++++------ 1 file changed, 678 insertions(+), 302 deletions(-) diff --git a/packages/fast-usdc/test/fast-usdc.contract.test.ts b/packages/fast-usdc/test/fast-usdc.contract.test.ts index e697b9118da..38e80e76e71 100644 --- a/packages/fast-usdc/test/fast-usdc.contract.test.ts +++ b/packages/fast-usdc/test/fast-usdc.contract.test.ts @@ -1,36 +1,48 @@ -import { test } from '@agoric/zoe/tools/prepare-test-env-ava.js'; -import type { ExecutionContext } from 'ava'; +import { test as anyTest } from '@agoric/zoe/tools/prepare-test-env-ava.js'; +import type { ExecutionContext, TestFn } from 'ava'; import { AmountMath } from '@agoric/ertp/src/amountMath.js'; +import { deeplyFulfilledObject } from '@agoric/internal'; import { eventLoopIteration, inspectMapStore, } from '@agoric/internal/src/testing-utils.js'; +import { + makePublishKit, + observeIteration, + subscribeEach, + type Subscriber, +} from '@agoric/notifier'; +import fetchedChainInfo from '@agoric/orchestration/src/fetched-chain-info.js'; +import { buildVTransferEvent } from '@agoric/orchestration/tools/ibc-mocks.js'; +import { heapVowE as VE } from '@agoric/vow/vat.js'; import { divideBy, multiplyBy, parseRatio, } from '@agoric/zoe/src/contractSupport/ratio.js'; +import type { Instance } from '@agoric/zoe/src/zoeService/utils.js'; import { setUpZoeForTest } from '@agoric/zoe/tools/setup-zoe.js'; import { E } from '@endo/far'; +import { matches, objectMap } from '@endo/patterns'; +import { makePromiseKit } from '@endo/promise-kit'; import path from 'path'; -import fetchedChainInfo from '@agoric/orchestration/src/fetched-chain-info.js'; -import { objectMap } from '@endo/patterns'; -import { deeplyFulfilledObject } from '@agoric/internal'; -import type { Subscriber } from '@agoric/notifier'; -import { MockCctpTxEvidences } from './fixtures.js'; -import { commonSetup } from './supports.js'; -import type { FastUsdcTerms } from '../src/fast-usdc.contract.js'; -import { makeFeeTools } from '../src/utils/fees.js'; -import type { PoolMetrics } from '../src/types.js'; +import type { OperatorKit } from '../src/exos/operator-kit.js'; +import type { FastUsdcSF } from '../src/fast-usdc.contract.js'; +import { PoolMetricsShape } from '../src/type-guards.js'; +import type { CctpTxEvidence, FeeConfig, PoolMetrics } from '../src/types.js'; import { addressTools } from '../src/utils/address.js'; +import { makeFeeTools } from '../src/utils/fees.js'; +import { MockCctpTxEvidences } from './fixtures.js'; +import { commonSetup, uusdcOnAgoric } from './supports.js'; const dirname = path.dirname(new URL(import.meta.url).pathname); const contractFile = `${dirname}/../src/fast-usdc.contract.js`; -type StartFn = typeof import('../src/fast-usdc.contract.js').start; -const { add, isGTE, subtract } = AmountMath; +const agToNoble = fetchedChainInfo.agoric.connections['noble-1']; + +const { add, isGTE, make, subtract, min } = AmountMath; const getInvitationProperties = async ( zoe: ZoeService, @@ -43,76 +55,184 @@ const getInvitationProperties = async ( type CommonSetup = Awaited>; const startContract = async ( - common: Pick, + common: Pick, + operatorQty = 1, ) => { const { brands: { usdc }, commonPrivateArgs, } = common; - const { zoe, bundleAndInstall } = await setUpZoeForTest({ - setJig: jig => { - jig.chainHub.registerChain('osmosis', fetchedChainInfo.osmosis); - jig.chainHub.registerChain('agoric', fetchedChainInfo.agoric); - // TODO #10445 register noble<>agoric and noble<>osmosis instead - // for PFM routing. also will need to call `registerAsset` - jig.chainHub.registerConnection( - fetchedChainInfo.agoric.chainId, - fetchedChainInfo.osmosis.chainId, - fetchedChainInfo.agoric.connections['osmosis-1'], - ); - }, - }); - const installation: Installation = + const { zoe, bundleAndInstall } = await setUpZoeForTest(); + const installation: Installation = await bundleAndInstall(contractFile); const startKit = await E(zoe).startInstance( installation, { USDC: usdc.issuer }, - { - usdcDenom: 'ibc/usdconagoric', - }, + { usdcDenom: uusdcOnAgoric }, commonPrivateArgs, ); - return { ...startKit, zoe }; + const terms = await E(zoe).getTerms(startKit.instance); + + const { subscriber: metricsSub } = E.get( + E.get(E(startKit.publicFacet).getPublicTopics()).poolMetrics, + ); + + const opInvs = await Promise.all( + [...Array(operatorQty).keys()].map(opIx => + E(startKit.creatorFacet).makeOperatorInvitation(`operator-${opIx}`), + ), + ); + + return { + ...startKit, + terms, + zoe, + metricsSub, + invitations: { operator: opInvs }, + }; }; -test('oracle operators have closely-held rights to submit evidence of CCTP transactions', async t => { +const makeTestContext = async (t: ExecutionContext) => { const common = await commonSetup(t); - const { creatorFacet, zoe } = await startContract(common); - const operatorId = 'operator-1'; + const startKit = await startContract(common, 2); + + const { transferBridge } = common.mocks; + const evm = makeEVM(); + + const { inspectBankBridge, inspectLocalBridge } = common.utils; + const snapshot = () => ({ + bank: inspectBankBridge().length, + local: inspectLocalBridge().length, + }); + const since = ix => ({ + bank: inspectBankBridge().slice(ix.bank), + local: inspectLocalBridge().slice(ix.local), + }); + + const sync = { + ocw: makePromiseKit>[]>(), + lp: makePromiseKit>>(), + }; + + const { brands, utils } = common; + const { bankManager } = common.bootstrap; + const receiveUSDCAt = async (addr: string, amount: NatValue) => { + const pmt = await utils.pourPayment(make(brands.usdc.brand, amount)); + const purse = E(E(bankManager).getBankForAddress(addr)).getPurse( + brands.usdc.brand, + ); + return E(purse).deposit(pmt); + }; + + const mint = async (e: CctpTxEvidence) => { + const settlerAddr = 'agoric1fakeLCAAddress1'; // TODO: get from contract + const rxd = await receiveUSDCAt(settlerAddr, e.tx.amount); + await VE(transferBridge).fromBridge( + buildVTransferEvent({ + receiver: e.aux.recipientAddress, + target: settlerAddr, + sourceChannel: agToNoble.transferChannel.counterPartyChannelId, + denom: 'uusdc', + amount: e.tx.amount, + sender: e.tx.forwardingAddress, + }), + ); + await eventLoopIteration(); // let settler do work + return rxd; + }; + + return { bridges: { snapshot, since }, common, evm, mint, startKit, sync }; +}; + +const test = anyTest as TestFn>>; +test.before(async t => (t.context = await makeTestContext(t))); + +test('baggage', async t => { + const { + brands: { usdc }, + commonPrivateArgs, + } = await commonSetup(t); + + let contractBaggage; + const setJig = ({ baggage }) => { + contractBaggage = baggage; + }; + + const { zoe, bundleAndInstall } = await setUpZoeForTest({ setJig }); + const installation: Installation = + await bundleAndInstall(contractFile); + + await E(zoe).startInstance( + installation, + { USDC: usdc.issuer }, + { usdcDenom: uusdcOnAgoric }, + commonPrivateArgs, + ); + + const tree = inspectMapStore(contractBaggage); + t.snapshot(tree, 'contract baggage after start'); +}); - const opInv = await E(creatorFacet).makeOperatorInvitation(operatorId); +const purseOf = + (issuer: Issuer, { pourPayment }) => + async (value: bigint) => { + const brand = await E(issuer).getBrand(); + const purse = E(issuer).makeEmptyPurse(); + const pmt = await pourPayment(make(brand, value)); + await E(purse).deposit(pmt); + return purse; + }; +const makeOracleOperator = async ( + opInv: Invitation, + txSubscriber: Subscriber, + zoe: ZoeService, + t: ExecutionContext, +) => { + let done = 0; + const failures = [] as any[]; t.like(await getInvitationProperties(zoe, opInv), { description: 'oracle operator invitation', }); + // operator only gets `.invitationMakers` + // but for testing, we need `.admin` too. UNTIL #????? const operatorKit = await E(E(zoe).offer(opInv)).getOfferResult(); - t.deepEqual(Object.keys(operatorKit), [ 'admin', 'invitationMakers', 'operator', ]); - - const e1 = MockCctpTxEvidences.AGORIC_NO_PARAMS(); - - { - const inv = await E(operatorKit.invitationMakers).SubmitEvidence(e1); - const res = await E(E(zoe).offer(inv)).getOfferResult(); - t.is(res, 'inert; nothing should be expected from this offer'); - } - - // what removeOperator will do - await E(operatorKit.admin).disable(); - - await t.throwsAsync(E(operatorKit.invitationMakers).SubmitEvidence(e1), { - message: 'submitEvidence for disabled operator', + const { invitationMakers } = operatorKit; + + return harden({ + watch: () => { + void observeIteration(subscribeEach(txSubscriber), { + updateState: tx => + // KLUDGE: tx wouldn't include aux. OCW looks it up + E.when( + E(invitationMakers).SubmitEvidence(tx), + inv => + E.when(E(E(zoe).offer(inv)).getOfferResult(), res => { + t.is(res, 'inert; nothing should be expected from this offer'); + done += 1; + }), + reason => { + failures.push(reason.message); + }, + ), + }); + }, + getDone: () => done, + getFailures: () => harden([...failures]), + // operator only gets .invitationMakers + getKit: () => operatorKit, }); -}); +}; const logAmt = amt => [ Number(amt.value), @@ -127,170 +247,94 @@ const scaleAmount = (frac: number, amount: Amount<'nat'>) => { return multiplyBy(amount, asRatio); }; -const makeLpTools = ( - t: ExecutionContext, - common: Pick, - { - zoe, - terms, - subscriber, - publicFacet, - }: { - zoe: ZoeService; - subscriber: ERef>; - publicFacet: StartedInstanceKit['publicFacet']; - terms: StandardTerms & FastUsdcTerms; - }, +const makeLP = async ( + name: string, + usdcPurse: ERef, + zoe: ZoeService, + instance: Instance, ) => { - const { - brands: { usdc }, - utils, - } = common; - const makeLP = (name, usdcPurse: ERef) => { - const sharePurse = E(terms.issuers.PoolShares).makeEmptyPurse(); - let deposited = AmountMath.makeEmpty(usdc.brand); - const me = harden({ - deposit: async (qty: bigint) => { - const { - value: { shareWorth }, - } = await E(subscriber).getUpdateSince(); - const give = { USDC: usdc.make(qty) }; - const proposal = harden({ - give, - want: { PoolShare: divideBy(give.USDC, shareWorth) }, - }); - t.log(name, 'deposits', ...logAmt(proposal.give.USDC)); - const toDeposit = await E(publicFacet).makeDepositInvitation(); - const payments = { USDC: await E(usdcPurse).withdraw(give.USDC) }; - const payout = await E(zoe) - .offer(toDeposit, proposal, payments) - .then(seat => E(seat).getPayout('PoolShare')) - .then(pmt => E(sharePurse).deposit(pmt)) - .then(a => a as Amount<'nat'>); - t.log(name, 'deposit payout', ...logAmt(payout)); - t.true(isGTE(payout, proposal.want.PoolShare)); - deposited = add(deposited, give.USDC); - }, - - withdraw: async (portion: number) => { - const myShares = await E(sharePurse) - .getCurrentAmount() - .then(a => a as Amount<'nat'>); - const give = { PoolShare: scaleAmount(portion, myShares) }; - const { - value: { shareWorth }, - } = await E(subscriber).getUpdateSince(); - const myUSDC = multiplyBy(myShares, shareWorth); - const myFees = subtract(myUSDC, deposited); - t.log(name, 'sees fees earned', ...logAmt(myFees)); - const proposal = harden({ - give, - want: { USDC: multiplyBy(give.PoolShare, shareWorth) }, - }); - const pct = portion * 100; - t.log(name, 'withdraws', pct, '%:', ...logAmt(proposal.give.PoolShare)); - const toWithdraw = await E(publicFacet).makeWithdrawInvitation(); - const usdcPmt = await E(sharePurse) - .withdraw(proposal.give.PoolShare) - .then(pmt => E(zoe).offer(toWithdraw, proposal, { PoolShare: pmt })) - .then(seat => E(seat).getPayout('USDC')); - const amt = await E(usdcPurse).deposit(usdcPmt); - t.log(name, 'withdraw payout', ...logAmt(amt)); - t.true(isGTE(amt, proposal.want.USDC)); - }, - }); - return me; - }; - const purseOf = (value: bigint) => - E(terms.issuers.USDC) - .makeEmptyPurse() - .then(async p => { - const pmt = await utils.pourPayment(usdc.make(value)); - await p.deposit(pmt); - return p; - }); - return { makeLP, purseOf }; -}; - -test('LP deposits, earns fees, withdraws', async t => { - const common = await commonSetup(t); - const { - commonPrivateArgs, - brands: { usdc }, - utils, - } = common; - - const { instance, creatorFacet, publicFacet, zoe } = - await startContract(common); - const terms = await E(zoe).getTerms(instance); - + const publicFacet = E(zoe).getPublicFacet(instance); const { subscriber } = E.get( E.get(E(publicFacet).getPublicTopics()).poolMetrics, ); + const terms = await E(zoe).getTerms(instance); + const { USDC } = terms.brands; + const sharePurse = E(terms.issuers.PoolShares).makeEmptyPurse(); + let investment = AmountMath.makeEmpty(USDC); + const me = harden({ + deposit: async (t: ExecutionContext, qty: bigint) => { + const { + value: { shareWorth }, + } = await E(subscriber).getUpdateSince(); + const give = { USDC: make(USDC, qty) }; + const proposal = harden({ + give, + want: { PoolShare: divideBy(give.USDC, shareWorth) }, + }); + t.log(name, 'deposits', ...logAmt(proposal.give.USDC)); + const toDeposit = await E(publicFacet).makeDepositInvitation(); + const payments = { USDC: await E(usdcPurse).withdraw(give.USDC) }; + const payout = await E(zoe) + .offer(toDeposit, proposal, payments) + .then(seat => E(seat).getPayout('PoolShare')) + .then(pmt => E(sharePurse).deposit(pmt)) + .then(a => a as Amount<'nat'>); + t.log(name, 'deposit payout', ...logAmt(payout)); + t.true(isGTE(payout, proposal.want.PoolShare)); + investment = add(investment, give.USDC); + }, - const { makeLP, purseOf } = makeLpTools(t, common, { - publicFacet, - subscriber, - terms, - zoe, + withdraw: async (t: ExecutionContext, portion: number) => { + const myShares = await E(sharePurse) + .getCurrentAmount() + .then(a => a as Amount<'nat'>); + const give = { PoolShare: scaleAmount(portion, myShares) }; + const { + value: { shareWorth }, + } = await E(subscriber).getUpdateSince(); + const myUSDC = multiplyBy(myShares, shareWorth); + const myFees = subtract(myUSDC, investment); + t.log(name, 'sees fees earned', ...logAmt(myFees)); + const proposal = harden({ + give, + want: { USDC: multiplyBy(give.PoolShare, shareWorth) }, + }); + const pct = portion * 100; + t.log(name, 'withdraws', pct, '%:', ...logAmt(proposal.give.PoolShare)); + const toWithdraw = await E(publicFacet).makeWithdrawInvitation(); + const usdcPmt = await E(sharePurse) + .withdraw(proposal.give.PoolShare) + .then(pmt => E(zoe).offer(toWithdraw, proposal, { PoolShare: pmt })) + .then(seat => E(seat).getPayout('USDC')); + const amt = await E(usdcPurse).deposit(usdcPmt); + t.log(name, 'withdraw payout', ...logAmt(amt)); + t.true(isGTE(amt, proposal.want.USDC)); + // min() in case things changed between checking metrics and withdrawing + investment = subtract(investment, min(amt, investment)); + return amt; + }, }); - const lps = { - alice: makeLP('Alice', purseOf(60n)), - bob: makeLP('Bob', purseOf(50n)), - }; - - await Promise.all([lps.alice.deposit(60n), lps.bob.deposit(40n)]); - - { - t.log('simulate borrow and repay so pool accrues fees'); - const feeTools = makeFeeTools(commonPrivateArgs.feeConfig); - const requestedAmount = usdc.make(50n); - const splits = feeTools.calculateSplit(requestedAmount); - - const amt = await E(creatorFacet).testBorrow({ USDC: splits.Principal }); - t.deepEqual( - amt.USDC, - splits.Principal, - 'testBorrow returns requested amount', - ); - const repayPayments = await deeplyFulfilledObject( - objectMap(splits, utils.pourPayment), - ); - const remaining = await E(creatorFacet).testRepay(splits, repayPayments); - for (const r of Object.values(remaining)) { - t.is(r.value, 0n, 'testRepay consumes all payments'); - } - } - await Promise.all([lps.alice.withdraw(0.2), lps.bob.withdraw(0.8)]); -}); + return me; +}; -test('LP borrow', async t => { +test.skip('LP borrow - TODO: move to exo test', async t => { const common = await commonSetup(t); const { brands: { usdc }, + utils, } = common; - const { instance, creatorFacet, publicFacet, zoe } = + const { instance, creatorFacet, zoe, metricsSub, terms } = await startContract(common); - const terms = await E(zoe).getTerms(instance); - const { subscriber } = E.get( - E.get(E(publicFacet).getPublicTopics()).poolMetrics, - ); - - const { makeLP, purseOf } = makeLpTools(t, common, { - publicFacet, - subscriber, - terms, - zoe, - }); + const usdcPurse = purseOf(terms.issuers.USDC, utils); const lps = { - alice: makeLP('Alice', purseOf(100n)), + alice: makeLP('Alice', usdcPurse(100n), zoe, instance), }; // seed pool with funds - await lps.alice.deposit(100n); + await E(lps.alice).deposit(t, 100n); - const { value } = await E(subscriber).getUpdateSince(); + const { value } = await E(metricsSub).getUpdateSince(); const { shareWorth, encumberedBalance } = value; const poolSeatAllocation = subtract( subtract(shareWorth.numerator, encumberedBalance), @@ -328,13 +372,13 @@ test('LP borrow', async t => { ); // LPs can still withdraw (contract did not shutdown) - await lps.alice.withdraw(0.5); + await E(lps.alice).withdraw(t, 0.5); const amt = await E(creatorFacet).testBorrow({ USDC: usdc.make(30n) }); t.deepEqual(amt, { USDC: usdc.make(30n) }, 'borrow succeeds'); await eventLoopIteration(); - t.like(await E(subscriber).getUpdateSince(), { + t.like(await E(metricsSub).getUpdateSince(), { value: { encumberedBalance: { value: 30n, @@ -349,7 +393,7 @@ test('LP borrow', async t => { }); }); -test('LP repay', async t => { +test.skip('LP repay - TODO: move to exo test', async t => { const common = await commonSetup(t); const { commonPrivateArgs, @@ -357,29 +401,18 @@ test('LP repay', async t => { utils, } = common; - const { instance, creatorFacet, publicFacet, zoe } = + const { instance, creatorFacet, zoe, metricsSub, terms } = await startContract(common); - const terms = await E(zoe).getTerms(instance); - - const { subscriber } = E.get( - E.get(E(publicFacet).getPublicTopics()).poolMetrics, - ); - const feeTools = makeFeeTools(commonPrivateArgs.feeConfig); - const { makeLP, purseOf } = makeLpTools(t, common, { - publicFacet, - subscriber, - terms, - zoe, - }); + const usdcPurse = purseOf(terms.issuers.USDC, utils); const lps = { - alice: makeLP('Alice', purseOf(100n)), + alice: makeLP('Alice', usdcPurse(100n), zoe, instance), }; // seed pool with funds - await lps.alice.deposit(100n); + await E(lps.alice).deposit(t, 100n); // borrow funds from pool to increase encumbered balance await E(creatorFacet).testBorrow({ USDC: usdc.make(50n) }); - + const feeTools = makeFeeTools(commonPrivateArgs.feeConfig); { t.log('cannot repay more than encumbered balance'); const repayAmounts = feeTools.calculateSplit(usdc.make(100n)); @@ -484,7 +517,7 @@ test('LP repay', async t => { } await eventLoopIteration(); - t.like(await E(subscriber).getUpdateSince(), { + t.like(await E(metricsSub).getUpdateSince(), { value: { encumberedBalance: { value: 0n, @@ -510,115 +543,458 @@ test('LP repay', async t => { }); // LPs can still withdraw (contract did not shutdown) - await lps.alice.withdraw(1); + await E(lps.alice).withdraw(t, 1); }); -test('baggage', async t => { - const { - brands: { usdc }, - commonPrivateArgs, - } = await commonSetup(t); - - let contractBaggage; - const setJig = ({ baggage }) => { - contractBaggage = baggage; +const makeEVM = (template = MockCctpTxEvidences.AGORIC_PLUS_OSMO()) => { + const [settleAddr] = template.aux.recipientAddress.split('?'); + let nonce = 0; + + const makeTx = (amount: bigint, recipientAddress: string): CctpTxEvidence => { + nonce += 1; + + const tx: CctpTxEvidence = harden({ + ...template, + txHash: `0x00000${nonce}`, + blockNumber: template.blockNumber + BigInt(nonce), + blockTimestamp: template.blockTimestamp + BigInt(nonce * 3), + tx: { ...template.tx, amount }, + // KLUDGE: CCTP doesn't know about aux; it would be added by OCW + aux: { ...template.aux, recipientAddress }, + }); + return tx; }; - const { zoe, bundleAndInstall } = await setUpZoeForTest({ setJig }); - const installation: Installation = - await bundleAndInstall(contractFile); + const txPub = makePublishKit(); - await E(zoe).startInstance( - installation, - { USDC: usdc.issuer }, - { - usdcDenom: 'ibc/usdconagoric', + return harden({ cctp: { makeTx }, txPub }); +}; + +const makeCustomer = ( + who: string, + cctp: ReturnType['cctp'], + txPublisher: Publisher, + feeConfig: FeeConfig, // TODO: get from vstorage (or at least: a subscriber) +) => { + const USDC = feeConfig.flat.brand; + const feeTools = makeFeeTools(feeConfig); + const sent = [] as CctpTxEvidence[]; + + // TODO: get settlerAddr from vstorage + const [settleAddr] = + MockCctpTxEvidences.AGORIC_PLUS_OSMO().aux.recipientAddress.split('?'); + + const me = harden({ + checkPoolAvailable: async ( + t: ExecutionContext, + want: NatValue, + metricsSub: ERef>, + ) => { + const { value: m } = await E(metricsSub).getUpdateSince(); + const { numerator: poolBalance } = m.shareWorth; // XXX awkward API? + const enough = poolBalance.value > want; + t.log(who, 'sees', poolBalance.value, enough ? '>' : 'NOT >', want); + return enough; }, - commonPrivateArgs, - ); + sendFast: async (t: ExecutionContext, amount: bigint, EUD: string) => { + const recipientAddress = `${settleAddr}?EUD=${EUD}`; + // KLUDGE: UI would ask noble for a forwardingAddress + // "cctp" here has some noble stuff mixed in. + const tx = cctp.makeTx(amount, recipientAddress); + t.log(who, 'signs CCTP for', amount, 'uusdc w/EUD:', EUD); + txPublisher.publish(tx); + sent.push(tx); + await eventLoopIteration(); + return tx; + }, + checkSent: ( + t: ExecutionContext, + { bank = [] as any[], local = [] as any[] } = {}, + forward?: unknown, + ) => { + const evidence = sent.shift(); + if (!evidence) throw t.fail('nothing sent'); + + // C3 - Contract MUST calculate AdvanceAmount by ... + // Mostly, see unit tests for calculateAdvance, calculateSplit + const toReceive = forward + ? { value: evidence.tx.amount } + : feeTools.calculateAdvance(AmountMath.make(USDC, evidence.tx.amount)); + + if (forward) { + t.log(who, 'waits for fallback / forward'); + t.deepEqual(bank, []); // no vbank GIVE / GRAB + } + + const { EUD } = addressTools.getQueryParams( + evidence.aux.recipientAddress, + ); - const tree = inspectMapStore(contractBaggage); - t.snapshot(tree, 'contract baggage after start'); -}); + const myMsg = local.find(lm => { + if (lm.type !== 'VLOCALCHAIN_EXECUTE_TX') return false; + const [ibcTransferMsg] = lm.messages; + return ( + ibcTransferMsg['@type'] === + '/ibc.applications.transfer.v1.MsgTransfer' && + ibcTransferMsg.receiver === EUD + ); + }); + if (!myMsg) { + if (forward) return; + throw t.fail(`no MsgTransfer to ${EUD}`); + } + const [ibcTransferMsg] = myMsg.messages; + // C4 - Contract MUST release funds to the end user destination address + // in response to invocation by the off-chain watcher that + // an acceptable Fast USDC Transaction has been initiated. + t.deepEqual( + ibcTransferMsg.token, + { amount: String(toReceive.value), denom: uusdcOnAgoric }, + 'C4', + ); -test('advancing happy path', async t => { - const common = await commonSetup(t); - const { - brands: { usdc }, - commonPrivateArgs, - utils: { inspectLocalBridge, inspectBankBridge, transmitTransferAck }, - } = common; + t.log(who, 'sees', ibcTransferMsg.token, 'sent to', EUD); + // TODO #10445 expect PFM memo + t.is(ibcTransferMsg.memo, '', 'TODO expecting PFM memo'); - const { instance, publicFacet, zoe } = await startContract(common); - const terms = await E(zoe).getTerms(instance); - const { subscriber } = E.get( - E.get(E(publicFacet).getPublicTopics()).poolMetrics, - ); - const feeTools = makeFeeTools(commonPrivateArgs.feeConfig); - const { makeLP, purseOf } = makeLpTools(t, common, { - publicFacet, - subscriber, - terms, - zoe, + // TODO #10445 expect routing through noble, not osmosis + t.is( + ibcTransferMsg.sourceChannel, + fetchedChainInfo.agoric.connections['osmosis-1'].transferChannel + .channelId, + 'TODO expecting routing through Noble', + ); + }, }); + return me; +}; - const evidence = await E(MockCctpTxEvidences.AGORIC_PLUS_OSMO)(); - - // seed pool with funds - const alice = makeLP('Alice', purseOf(evidence.tx.amount)); - await alice.deposit(evidence.tx.amount); - - // the invitation maker itself pushes the evidence - const inv = await E(publicFacet).makeTestPushInvitation(evidence); - const seat = await E(zoe).offer(inv); - t.is( - await E(seat).getOfferResult(), - 'inert; nothing should be expected from this offer', +test.serial('OCW operators redeem invitations and start watching', async t => { + const { + startKit: { zoe, invitations }, + evm: { txPub }, + sync, + } = t.context; + const operators = await Promise.all( + invitations.operator.map(async opInv => { + const op = makeOracleOperator(opInv, txPub.subscriber, zoe, t); + await E(op).watch(); + return op; + }), ); + sync.ocw.resolve(operators); +}); - // calculate advance net of fees - const expectedAdvance = feeTools.calculateAdvance( - usdc.make(evidence.tx.amount), - ); - t.log('Expecting to observe advance of', expectedAdvance); +// XXX: replace test.serial() with promise synchronization? + +test.serial('C25 - LPs can deposit USDC', async t => { + const { + startKit: { zoe, instance, metricsSub }, + common: { + utils, + brands: { usdc }, + }, + sync, + } = t.context; + const usdcPurse = purseOf(usdc.issuer, utils); + // C25 - MUST support multiple liquidity providers + const lp = { + lp50: makeLP('Logan', usdcPurse(50_000_000n), zoe, instance), + lp200: makeLP('Larry', usdcPurse(200_000_000n), zoe, instance), + }; - await eventLoopIteration(); // let Advancer do work + const { + value: { + shareWorth: { numerator: balance0 }, + }, + } = await E(metricsSub).getUpdateSince(); + + await Promise.all([ + E(lp.lp200).deposit(t, 200_000_000n), + E(lp.lp50).deposit(t, 50_000_000n), + ]); + + sync.lp.resolve(lp); + const { + value: { + shareWorth: { numerator: poolBalance }, + }, + } = await E(metricsSub).getUpdateSince(); + t.deepEqual(poolBalance, make(usdc.brand, 250_000_000n + balance0.value)); +}); - // advance sent from PoolSeat to PoolAccount +test.serial('STORY01: advancing happy path for 100 USDC', async t => { + const { + common: { + brands: { usdc }, + commonPrivateArgs: { feeConfig }, + utils: { inspectBankBridge, transmitTransferAck }, + }, + evm: { cctp, txPub }, + startKit: { metricsSub }, + bridges: { snapshot, since }, + mint, + } = t.context; + const cust1 = makeCustomer('Carl', cctp, txPub.publisher, feeConfig); + + const bridgePos = snapshot(); + const sent1 = await cust1.sendFast(t, 108_000_000n, 'osmo1234advanceHappy'); + await transmitTransferAck(); // ack IBC transfer for advance + // Nothing we can check here, unless we want to inspect calls to `trace`. + // `test/exos/advancer.test.ts` covers calls to `log: LogFn` with mocks. + // This is still helpful to call, so we can observe "Advance transfer + // fulfilled" in the test output. + + const { calculateAdvance, calculateSplit } = makeFeeTools(feeConfig); + const expectedAdvance = calculateAdvance(usdc.make(sent1.tx.amount)); + t.log('advancer sent to PoolAccount', expectedAdvance); t.deepEqual(inspectBankBridge().at(-1), { amount: String(expectedAdvance.value), - denom: 'ibc/usdconagoric', + denom: uusdcOnAgoric, recipient: 'agoric1fakeLCAAddress', type: 'VBANK_GIVE', }); - // ibc transfer sent over localChain bridge - const localBridgeMsg = inspectLocalBridge().at(-1); - const ibcTransferMsg = localBridgeMsg.messages[0]; - t.is(ibcTransferMsg['@type'], '/ibc.applications.transfer.v1.MsgTransfer'); + cust1.checkSent(t, since(bridgePos)); - const expectedReceiver = addressTools.getQueryParams( - evidence.aux.recipientAddress, - ).EUD; - t.is(ibcTransferMsg.receiver, expectedReceiver, 'sent to correct address'); - t.deepEqual(ibcTransferMsg.token, { - amount: String(expectedAdvance.value), - denom: 'ibc/usdconagoric', - }); + const emptyMetrics = { + encumberedBalance: usdc.makeEmpty(), + shareWorth: { + numerator: usdc.make(1n), + denominator: { value: 1n }, + }, + totalBorrows: usdc.makeEmpty(), + totalContractFees: usdc.makeEmpty(), + totalPoolFees: usdc.makeEmpty(), + totalRepays: usdc.makeEmpty(), + }; + const par250 = { + numerator: usdc.make(250_000_001n), + denominator: { value: 250_000_001n }, + }; - // TODO #10445 expect PFM memo - t.is(ibcTransferMsg.memo, '', 'TODO expecting PFM memo'); + t.like( + await E(metricsSub) + .getUpdateSince() + .then(r => r.value), + { + ...emptyMetrics, + encumberedBalance: expectedAdvance, + shareWorth: par250, + totalBorrows: expectedAdvance, + }, + 'metrics while advancing', + ); - // TODO #10445 expect routing through noble, not osmosis - t.is( - ibcTransferMsg.sourceChannel, - fetchedChainInfo.agoric.connections['osmosis-1'].transferChannel.channelId, - 'TODO expecting routing through Noble', + await mint(sent1); + + // C8 - "Contract MUST be able to initialize settlement process when Noble mints USDC." + // The metrics are a useful proxy, but the contract could lie. + // The real test of whether the contract turns minted funds into liquidity is + // the ability to advance the funds (in later tests). + const split = calculateSplit(usdc.make(sent1.tx.amount)); + t.like( + await E(metricsSub) + .getUpdateSince() + .then(r => r.value), + { + ...emptyMetrics, + shareWorth: { + ...par250, + numerator: add(par250.numerator, split.PoolFee), + }, + totalBorrows: { value: 105839999n }, + totalContractFees: { value: 432000n }, + totalPoolFees: { value: 1728001n }, + totalRepays: { value: 105839999n }, + }, + 'metrics after advancing', ); +}); + +// most likely in exo unit tests +test.todo( + 'C21 - Contract MUST log / timestamp each step in the transaction flow', +); + +test.serial('STORY03: see accounting metrics', async t => { + const { + common: { + brands: { usdc }, + }, + startKit: { metricsSub }, + } = t.context; + const { value: metrics } = await E(metricsSub).getUpdateSince(); + t.log(metrics); + t.true(matches(metrics, PoolMetricsShape)); +}); +test.todo('document metrics storage schema'); +test.todo('get metrics from vstorage'); + +test.serial('STORY05: LP collects fees on 100 USDC', async t => { + const { + sync, + common: { + brands: { usdc }, + }, + } = t.context; + + const lp = await sync.lp.promise; + const got = await E(lp.lp200).withdraw(t, 0.5); // redeem 1/2 my shares + + // C3 - Contract MUST calculate ... + // Mostly, see unit tests for calculateAdvance, calculateSplit + // TODO: add a feeTools unit test for the magic number below. + t.deepEqual(got, add(usdc.units(100), usdc.make(691_200n))); + + await E(lp.lp200).deposit(t, 100_000_000n); // put all but the fees back in +}); + +test.serial('With 250 available, 3 race to get ~100', async t => { + const { + bridges: { snapshot, since }, + evm: { cctp, txPub }, + common: { + commonPrivateArgs: { feeConfig }, + utils: { transmitTransferAck }, + }, + startKit: { metricsSub }, + mint, + } = t.context; + + const cust = { + racer1: makeCustomer('Racer1', cctp, txPub.publisher, feeConfig), + racer2: makeCustomer('Racer2', cctp, txPub.publisher, feeConfig), + racer3: makeCustomer('Racer3', cctp, txPub.publisher, feeConfig), + }; + + await cust.racer3.checkPoolAvailable(t, 125_000_000n, metricsSub); + + const bridgePos = snapshot(); + const [sent1, sent2, sent3] = await Promise.all([ + cust.racer1.sendFast(t, 110_000_000n, 'osmo1234a'), + cust.racer2.sendFast(t, 120_000_000n, 'osmo1234b'), + cust.racer3.sendFast(t, 125_000_000n, 'osmo1234c'), + ]); + cust.racer1.checkSent(t, since(bridgePos)); + cust.racer2.checkSent(t, since(bridgePos)); + // TODO/WIP: cust.racer3.checkSent(t, since(bridgePos), 'forward - LP depleted'); await transmitTransferAck(); - // Nothing we can check here, unless we want to inspect calls to `trace`. - // `test/exos/advancer.test.ts` covers calls to `log: LogFn` with mocks. - // This is still helpful to call, so we can observe "Advance transfer - // fulfilled" in the test output. + await transmitTransferAck(); + await transmitTransferAck(); + await Promise.all([mint(sent1), mint(sent2), mint(sent3)]); +}); + +test.serial('STORY05(cont): LPs withdraw all liquidity', async t => { + const { + sync, + common: { + brands: { usdc }, + }, + } = t.context; + + const lp = await sync.lp.promise; + const [a, b] = await Promise.all([ + E(lp.lp200).withdraw(t, 1), + E(lp.lp50).withdraw(t, 1), + ]); + t.log({ a, b, sum: add(a, b) }); + t.truthy(a); + t.truthy(b); }); + +test.serial('STORY09: insufficient liquidity: no FastUSDC option', async t => { + // STORY09 - As the Fast USDC end user, + // I should see the option to use Fast USDC unavailable + // on the UI (and unusable) if there are not funds in the + // MarketMaker’s account + const { + common: { + commonPrivateArgs: { feeConfig }, + }, + evm: { cctp, txPub }, + startKit: { metricsSub }, + } = t.context; + const early = makeCustomer('Unice', cctp, txPub.publisher, feeConfig); + const available = await early.checkPoolAvailable(t, 5_000_000n, metricsSub); + t.false(available); +}); + +test.serial('C20 - Contract MUST function with an empty pool', async t => { + const { + common: { + commonPrivateArgs: { feeConfig }, + utils: { transmitTransferAck }, + }, + evm: { cctp, txPub }, + startKit: { metricsSub }, + bridges: { snapshot, since }, + mint, + } = t.context; + const custEmpty = makeCustomer('Earl', cctp, txPub.publisher, feeConfig); + const bridgePos = snapshot(); + const sent = await custEmpty.sendFast(t, 150_000_000n, 'osmo123'); + const bridgeTraffic = since(bridgePos); + await mint(sent); + custEmpty.checkSent(t, bridgeTraffic, 'forward'); + t.log('No advancement, just settlement'); + await transmitTransferAck(); // ack IBC transfer for forward +}); + +// advancedEarly stuff +test.todo( + 'C12 - Contract MUST only pay back the Pool only if they started the advance before USDC is minted', +); + +test.todo('C18 - forward - MUST log and alert these incidents'); + +test.serial('Settlement for unknown transaction (operator down)', async t => { + const { + sync, + bridges: { snapshot, since }, + evm: { cctp, txPub }, + common: { + commonPrivateArgs: { feeConfig }, + utils: { transmitTransferAck }, + }, + mint, + } = t.context; + const operators = await sync.ocw.promise; + + const opDown = makeCustomer('Otto', cctp, txPub.publisher, feeConfig); + + // what removeOperator will do + await E(E.get(E(operators[1]).getKit()).admin).disable(); + const bridgePos = snapshot(); + const sent = await opDown.sendFast(t, 20_000_000n, 'osmo12345'); + await mint(sent); + const bridgeTraffic = since(bridgePos); + + t.like( + bridgeTraffic.bank, + [ + { + amount: '20000000', + sender: 'faucet', + type: 'VBANK_GRAB', + }, + { + amount: '20000000', + recipient: 'agoric1fakeLCAAddress1', + type: 'VBANK_GIVE', + }, + ], + '20 USDC arrive at the settlement account', + ); + t.deepEqual(bridgeTraffic.local, [], 'no IBC transfers'); + + await transmitTransferAck(); + t.deepEqual(await E(operators[1]).getFailures(), [ + 'submitEvidence for disabled operator', + ]); +}); + +test.todo( + 'fee levels MUST be visible to external parties - i.e., written to public storage', +); From 49bd809cf188e37467321d45a296721e4bffd81f Mon Sep 17 00:00:00 2001 From: Dan Connolly Date: Tue, 26 Nov 2024 15:01:17 -0600 Subject: [PATCH 13/20] chore: update snapshots for chainInfo --- .../snapshots/fast-usdc.contract.test.ts.md | 513 +++++++++++++++++- .../snapshots/fast-usdc.contract.test.ts.snap | Bin 2050 -> 5662 bytes 2 files changed, 510 insertions(+), 3 deletions(-) diff --git a/packages/fast-usdc/test/snapshots/fast-usdc.contract.test.ts.md b/packages/fast-usdc/test/snapshots/fast-usdc.contract.test.ts.md index ec82b58c800..42cfa097928 100644 --- a/packages/fast-usdc/test/snapshots/fast-usdc.contract.test.ts.md +++ b/packages/fast-usdc/test/snapshots/fast-usdc.contract.test.ts.md @@ -32,8 +32,12 @@ Generated by [AVA](https://avajs.dev). ChainHub_singleton: 'Alleged: ChainHub', bech32PrefixToChainName: { agoric: 'agoric', + noble: 'noble', + osmo: 'osmosis', + }, + brandDenom: { + 'Alleged: USDC brand': 'ibc/FE98AAD68F02F03565E9FA39A5E627946699B2B07115889ED812D8BA639576A9', }, - brandDenom: {}, chainInfos: { agoric: { bech32Prefix: 'agoric', @@ -45,9 +49,512 @@ Generated by [AVA](https://avajs.dev). }, ], }, + noble: { + bech32Prefix: 'noble', + chainId: 'noble-1', + icqEnabled: false, + }, + osmosis: { + bech32Prefix: 'osmo', + chainId: 'osmosis-1', + icqEnabled: true, + stakingTokens: [ + { + denom: 'uosmo', + }, + ], + }, + }, + connectionInfos: { + 'agoric-3_cosmoshub-4': { + client_id: '07-tendermint-6', + counterparty: { + client_id: '07-tendermint-927', + connection_id: 'connection-649', + }, + id: 'connection-8', + state: 3, + transferChannel: { + channelId: 'channel-5', + counterPartyChannelId: 'channel-405', + counterPartyPortId: 'transfer', + ordering: 0, + portId: 'transfer', + state: 3, + version: 'ics20-1', + }, + }, + 'agoric-3_noble-1': { + client_id: '07-tendermint-77', + counterparty: { + client_id: '07-tendermint-32', + connection_id: 'connection-40', + }, + id: 'connection-72', + state: 3, + transferChannel: { + channelId: 'channel-62', + counterPartyChannelId: 'channel-21', + counterPartyPortId: 'transfer', + ordering: 0, + portId: 'transfer', + state: 3, + version: 'ics20-1', + }, + }, + 'agoric-3_omniflixhub-1': { + client_id: '07-tendermint-73', + counterparty: { + client_id: '07-tendermint-47', + connection_id: 'connection-40', + }, + id: 'connection-67', + state: 3, + transferChannel: { + channelId: 'channel-58', + counterPartyChannelId: 'channel-30', + counterPartyPortId: 'transfer', + ordering: 0, + portId: 'transfer', + state: 3, + version: 'ics20-1', + }, + }, + 'agoric-3_osmosis-1': { + client_id: '07-tendermint-1', + counterparty: { + client_id: '07-tendermint-2109', + connection_id: 'connection-1649', + }, + id: 'connection-1', + state: 3, + transferChannel: { + channelId: 'channel-1', + counterPartyChannelId: 'channel-320', + counterPartyPortId: 'transfer', + ordering: 0, + portId: 'transfer', + state: 3, + version: 'ics20-1', + }, + }, + 'agoric-3_secret-4': { + client_id: '07-tendermint-17', + counterparty: { + client_id: '07-tendermint-111', + connection_id: 'connection-80', + }, + id: 'connection-17', + state: 3, + transferChannel: { + channelId: 'channel-10', + counterPartyChannelId: 'channel-51', + counterPartyPortId: 'transfer', + ordering: 0, + portId: 'transfer', + state: 3, + version: 'ics20-1', + }, + }, + 'agoric-3_stride-1': { + client_id: '07-tendermint-74', + counterparty: { + client_id: '07-tendermint-129', + connection_id: 'connection-118', + }, + id: 'connection-68', + state: 3, + transferChannel: { + channelId: 'channel-59', + counterPartyChannelId: 'channel-148', + counterPartyPortId: 'transfer', + ordering: 0, + portId: 'transfer', + state: 3, + version: 'ics20-1', + }, + }, + 'agoric-3_umee-1': { + client_id: '07-tendermint-18', + counterparty: { + client_id: '07-tendermint-152', + connection_id: 'connection-101', + }, + id: 'connection-18', + state: 3, + transferChannel: { + channelId: 'channel-11', + counterPartyChannelId: 'channel-42', + counterPartyPortId: 'transfer', + ordering: 0, + portId: 'transfer', + state: 3, + version: 'ics20-1', + }, + }, + 'celestia_osmosis-1': { + client_id: '07-tendermint-10', + counterparty: { + client_id: '07-tendermint-3012', + connection_id: 'connection-2503', + }, + id: 'connection-2', + state: 3, + transferChannel: { + channelId: 'channel-2', + counterPartyChannelId: 'channel-6994', + counterPartyPortId: 'transfer', + ordering: 0, + portId: 'transfer', + state: 3, + version: 'ics20-1', + }, + }, + 'cosmoshub-4_noble-1': { + client_id: '07-tendermint-1116', + counterparty: { + client_id: '07-tendermint-4', + connection_id: 'connection-12', + }, + id: 'connection-790', + state: 3, + transferChannel: { + channelId: 'channel-536', + counterPartyChannelId: 'channel-4', + counterPartyPortId: 'transfer', + ordering: 0, + portId: 'transfer', + state: 3, + version: 'ics20-1', + }, + }, + 'cosmoshub-4_osmosis-1': { + client_id: '07-tendermint-259', + counterparty: { + client_id: '07-tendermint-1', + connection_id: 'connection-1', + }, + id: 'connection-257', + state: 3, + transferChannel: { + channelId: 'channel-141', + counterPartyChannelId: 'channel-0', + counterPartyPortId: 'transfer', + ordering: 0, + portId: 'transfer', + state: 3, + version: 'ics20-1', + }, + }, + 'dydx-mainnet-1_noble-1': { + client_id: '07-tendermint-0', + counterparty: { + client_id: '07-tendermint-59', + connection_id: 'connection-57', + }, + id: 'connection-0', + state: 3, + transferChannel: { + channelId: 'channel-0', + counterPartyChannelId: 'channel-33', + counterPartyPortId: 'transfer', + ordering: 0, + portId: 'transfer', + state: 3, + version: 'ics20-1', + }, + }, + 'dydx-mainnet-1_osmosis-1': { + client_id: '07-tendermint-3', + counterparty: { + client_id: '07-tendermint-3009', + connection_id: 'connection-2500', + }, + id: 'connection-7', + state: 3, + transferChannel: { + channelId: 'channel-3', + counterPartyChannelId: 'channel-6787', + counterPartyPortId: 'transfer', + ordering: 0, + portId: 'transfer', + state: 3, + version: 'ics20-1', + }, + }, + 'juno-1_noble-1': { + client_id: '07-tendermint-334', + counterparty: { + client_id: '07-tendermint-3', + connection_id: 'connection-8', + }, + id: 'connection-322', + state: 3, + transferChannel: { + channelId: 'channel-224', + counterPartyChannelId: 'channel-3', + counterPartyPortId: 'transfer', + ordering: 0, + portId: 'transfer', + state: 3, + version: 'ics20-1', + }, + }, + 'juno-1_osmosis-1': { + client_id: '07-tendermint-0', + counterparty: { + client_id: '07-tendermint-1457', + connection_id: 'connection-1142', + }, + id: 'connection-0', + state: 3, + transferChannel: { + channelId: 'channel-0', + counterPartyChannelId: 'channel-42', + counterPartyPortId: 'transfer', + ordering: 0, + portId: 'transfer', + state: 3, + version: 'ics20-1', + }, + }, + 'neutron-1_noble-1': { + client_id: '07-tendermint-40', + counterparty: { + client_id: '07-tendermint-25', + connection_id: 'connection-34', + }, + id: 'connection-31', + state: 3, + transferChannel: { + channelId: 'channel-30', + counterPartyChannelId: 'channel-18', + counterPartyPortId: 'transfer', + ordering: 0, + portId: 'transfer', + state: 3, + version: 'ics20-1', + }, + }, + 'neutron-1_osmosis-1': { + client_id: '07-tendermint-19', + counterparty: { + client_id: '07-tendermint-2823', + connection_id: 'connection-2338', + }, + id: 'connection-18', + state: 3, + transferChannel: { + channelId: 'channel-10', + counterPartyChannelId: 'channel-874', + counterPartyPortId: 'transfer', + ordering: 0, + portId: 'transfer', + state: 3, + version: 'ics20-1', + }, + }, + 'noble-1_omniflixhub-1': { + client_id: '07-tendermint-68', + counterparty: { + client_id: '07-tendermint-51', + connection_id: 'connection-49', + }, + id: 'connection-65', + state: 3, + transferChannel: { + channelId: 'channel-44', + counterPartyChannelId: 'channel-38', + counterPartyPortId: 'transfer', + ordering: 0, + portId: 'transfer', + state: 3, + version: 'ics20-1', + }, + }, + 'noble-1_osmosis-1': { + client_id: '07-tendermint-0', + counterparty: { + client_id: '07-tendermint-2704', + connection_id: 'connection-2241', + }, + id: 'connection-2', + state: 3, + transferChannel: { + channelId: 'channel-1', + counterPartyChannelId: 'channel-750', + counterPartyPortId: 'transfer', + ordering: 0, + portId: 'transfer', + state: 3, + version: 'ics20-1', + }, + }, + 'noble-1_secret-4': { + client_id: '07-tendermint-24', + counterparty: { + client_id: '07-tendermint-170', + connection_id: 'connection-127', + }, + id: 'connection-33', + state: 3, + transferChannel: { + channelId: 'channel-17', + counterPartyChannelId: 'channel-88', + counterPartyPortId: 'transfer', + ordering: 0, + portId: 'transfer', + state: 3, + version: 'ics20-1', + }, + }, + 'noble-1_stargaze-1': { + client_id: '07-tendermint-16', + counterparty: { + client_id: '07-tendermint-287', + connection_id: 'connection-214', + }, + id: 'connection-25', + state: 3, + transferChannel: { + channelId: 'channel-11', + counterPartyChannelId: 'channel-204', + counterPartyPortId: 'transfer', + ordering: 0, + portId: 'transfer', + state: 3, + version: 'ics20-1', + }, + }, + 'noble-1_umee-1': { + client_id: '07-tendermint-73', + counterparty: { + client_id: '07-tendermint-248', + connection_id: 'connection-210', + }, + id: 'connection-74', + state: 3, + transferChannel: { + channelId: 'channel-51', + counterPartyChannelId: 'channel-120', + counterPartyPortId: 'transfer', + ordering: 0, + portId: 'transfer', + state: 3, + version: 'ics20-1', + }, + }, + 'omniflixhub-1_osmosis-1': { + client_id: '07-tendermint-8', + counterparty: { + client_id: '07-tendermint-1829', + connection_id: 'connection-1431', + }, + id: 'connection-8', + state: 3, + transferChannel: { + channelId: 'channel-1', + counterPartyChannelId: 'channel-199', + counterPartyPortId: 'transfer', + ordering: 0, + portId: 'transfer', + state: 3, + version: 'ics20-1', + }, + }, + 'osmosis-1_secret-4': { + client_id: '07-tendermint-1588', + counterparty: { + client_id: '07-tendermint-2', + connection_id: 'connection-1', + }, + id: 'connection-1244', + state: 3, + transferChannel: { + channelId: 'channel-88', + counterPartyChannelId: 'channel-1', + counterPartyPortId: 'transfer', + ordering: 0, + portId: 'transfer', + state: 3, + version: 'ics20-1', + }, + }, + 'osmosis-1_stargaze-1': { + client_id: '07-tendermint-1562', + counterparty: { + client_id: '07-tendermint-0', + connection_id: 'connection-0', + }, + id: 'connection-1223', + state: 3, + transferChannel: { + channelId: 'channel-75', + counterPartyChannelId: 'channel-0', + counterPartyPortId: 'transfer', + ordering: 0, + portId: 'transfer', + state: 3, + version: 'ics20-1', + }, + }, + 'osmosis-1_stride-1': { + client_id: '07-tendermint-2119', + counterparty: { + client_id: '07-tendermint-1', + connection_id: 'connection-2', + }, + id: 'connection-1657', + state: 3, + transferChannel: { + channelId: 'channel-326', + counterPartyChannelId: 'channel-5', + counterPartyPortId: 'transfer', + ordering: 0, + portId: 'transfer', + state: 3, + version: 'ics20-1', + }, + }, + 'osmosis-1_umee-1': { + client_id: '07-tendermint-1805', + counterparty: { + client_id: '07-tendermint-6', + connection_id: 'connection-0', + }, + id: 'connection-1410', + state: 3, + transferChannel: { + channelId: 'channel-184', + counterPartyChannelId: 'channel-0', + counterPartyPortId: 'transfer', + ordering: 0, + portId: 'transfer', + state: 3, + version: 'ics20-1', + }, + }, + }, + denom: { + 'ibc/498A0751C798A0D9A389AA3691123DADA57DAA4FE165D5C75894505B876BA6E4': { + baseDenom: 'uusdc', + baseName: 'noble', + brandKey: undefined, + chainName: 'osmosis', + }, + 'ibc/FE98AAD68F02F03565E9FA39A5E627946699B2B07115889ED812D8BA639576A9': { + baseDenom: 'uusdc', + baseName: 'noble', + brand: Object @Alleged: USDC brand {}, + brandKey: 'USDC', + chainName: 'agoric', + }, + uusdc: { + baseDenom: 'uusdc', + baseName: 'noble', + chainName: 'noble', + }, }, - connectionInfos: {}, - denom: {}, lookupChainInfo_kindHandle: 'Alleged: kind', lookupChainsAndConnection_kindHandle: 'Alleged: kind', lookupConnectionInfo_kindHandle: 'Alleged: kind', diff --git a/packages/fast-usdc/test/snapshots/fast-usdc.contract.test.ts.snap b/packages/fast-usdc/test/snapshots/fast-usdc.contract.test.ts.snap index 5e8c6efc2ee166cdb8debd759e505f5ff9a38a96..dcb9a05cb2547cce336ef8a28f82ece5c24e5a80 100644 GIT binary patch literal 5662 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 E01pQU2><{9 literal 2050 zcmV+d2>tg#RzVG!>_-m6#d)q6c(+i6-tZ#z%Dz+BU{SgT1}E!twH z!)eFa6|VEt3x+{m`time;z*$qG4lwQJL+#k7rX(=wf1ZN+pSZ=2k>M!8|J09IJE zEY@PigIZsva8x&$E^LF@Cr~UB@&o|_ah5uVTwk_C&l9~Ri8A^wHTkt})05O=vP5v# zrn;-zv18hfd!6gl=F~L>Utx!yELQS3z9MlHgstx~$F)76Cw^NJC-z0p>F;@=5eKw5 z@OT{fW*qo+9JrVOZY6-{62R>QkWT_1Oaj|UpqEr)5F3p_hUCAS1b&zV{+I;rO97iH zfTw`ZrGRgzfLBvMEDfxt6{@sKRev@Od@&9DDh-^^05k)9F9ZDP&i@Z&fhV%SkF!83 z2Q+iQr*pt_Ip9Y*;BPtLN*-9x1N(X4={)da9(XGc{5}t4rhp4miV0=agzSf>fW;}` z3sb;5Q^2JHpcjCz7l2m^z%L65#d}nW^xq4>zwW?4QUsnU0zWANr4sN+Nl|@o=sZs; zXP~}l?3sKqI8~D#$sUwtUKPI1cZ9!dRFai+!MT6Rj{r|ffTZDbjyTn@ zglKm=O9Ahsn{v0L?<{g-X=ucxOy>toBVL?NkR(Y9e>9%>sxSX$duTeJEoVp4x+*E`JaAFmU(r$s_8SEM4g!MI`a z*7kv;5a;{WEb6-GayNJuzd7heS0#${7GpfDU+_=DaSXc>Lt@Y5{*FE^Jw|k*%OYoE|Y5m2efO#I$0k-!g>Fy(5ZC{ zAb)?2##xSHOi$wkKRR+46T%=eo5!tw*| zNRoVq>TTu@gawe4dO>(S=O%OQ!~V>6ng(|vf+AEi=0}^{5wx1v8@AXp9rhS?_1(!& zPUEKNUFR;dIklWqoRk@F-5aiHIVTI!m!$n}*s^0v`1qv0Yk zy9OMn3!ERjfEIG_TQ%VOD#?YhBo|eZ_)lxVFKWQTj6!sGXuTUVz$aALrBIlh8Q^dR zczFi+w+g>6#JX|@c=U_{yML?~?+Z=mL`m0Ni*e@P58k5$B4H`o61J%;Ujt~7kY~;u zWw9)cd(zh=X<85Z(jp=Mlmx}#;@uFvU}}6|R-)|;dcX+#=C^Ii9qP>tC+%zfa$Y2a zON(Th!nXVCdy;QRlA^&n!ZBT+)R+H8)?^2M)%2&ixd_9HgltOB(>CkS!vWQ2B|)iY zy1Rx=d&9LNT+a3zrLA3R4;?HI9sHEOv*z_S!}z=*(U~A6oLlzQgP-#tmklrm-=b`X+O_mV4U!GDI+Do>8%pfvs;GH617OC_|Es zI-u2ol{(T=p~#Od6w?)QK4L8K#*RV0MyXXR&MI%aWp+fFCPE9E( z!KLzpI`EQuR_+R2e(%rC$*Id01AB_Eue=U1MPFE<9iNyT1m0B@*qD*V?@z<)J3oQ=Cp%U~95 gGV5R=_;p7c{3@o=9hcdf<5JuG4>(V4Mmie+0Fxi;;Q#;t From dcc6feb1a9234df55fc92c0d9f537d9c1b371850 Mon Sep 17 00:00:00 2001 From: Dan Connolly Date: Wed, 27 Nov 2024 10:55:24 -0600 Subject: [PATCH 14/20] chore: settler: don't forward without evidence --- packages/fast-usdc/src/exos/settler.js | 10 +++++---- packages/fast-usdc/test/exos/settler.test.ts | 23 +++++++++----------- 2 files changed, 16 insertions(+), 17 deletions(-) diff --git a/packages/fast-usdc/src/exos/settler.js b/packages/fast-usdc/src/exos/settler.js index ac74679cc06..72f1e1f9626 100644 --- a/packages/fast-usdc/src/exos/settler.js +++ b/packages/fast-usdc/src/exos/settler.js @@ -166,11 +166,13 @@ export const prepareSettler = ( this.state.mintedEarly.add(makeMintedEarlyKey(sender, amount)); return; - case undefined: case PendingTxStatus.Observed: case PendingTxStatus.AdvanceFailed: + return self.forward(found.txHash, sender, amount, EUD); + + case undefined: default: - return self.forward(found?.txHash, sender, amount, EUD); + log('⚠️ tap: no status for ', sender, amount); } }, }, @@ -247,7 +249,7 @@ export const prepareSettler = ( statusManager.disbursed(txHash); }, /** - * @param {EvmHash | undefined} txHash + * @param {EvmHash} txHash * @param {NobleAddress} sender * @param {NatValue} fullValue * @param {string} EUD @@ -275,7 +277,7 @@ export const prepareSettler = ( * @param {SettlerTransferCtx} ctx * * @typedef {{ - * txHash: EvmHash | undefined; + * txHash: EvmHash; * sender: NobleAddress; * fullValue: NatValue; * }} SettlerTransferCtx diff --git a/packages/fast-usdc/test/exos/settler.test.ts b/packages/fast-usdc/test/exos/settler.test.ts index d4c82a7652b..c970f55eaed 100644 --- a/packages/fast-usdc/test/exos/settler.test.ts +++ b/packages/fast-usdc/test/exos/settler.test.ts @@ -79,6 +79,7 @@ const makeTestContext = async t => { feeConfig: common.commonPrivateArgs.feeConfig, vowTools: common.bootstrap.vowTools, chainHub, + log, }); const defaultSettlerParams = harden({ @@ -307,7 +308,6 @@ test('Settlement for unknown transaction', async t => { peekCalls, inspectLogs, } = t.context; - const { usdc } = common.brands; const settler = makeSettler({ repayer, @@ -319,22 +319,19 @@ test('Settlement for unknown transaction', async t => { void settler.tap.receiveUpcall(MockVTransferEvents.AGORIC_PLUS_OSMO()); await eventLoopIteration(); - t.log('USDC was forwarded'); + t.log('Nothing was transferrred'); t.deepEqual(peekCalls(), []); - t.deepEqual(accounts.settlement.callLog, [ + t.deepEqual(accounts.settlement.callLog, []); + t.like(inspectLogs(), [ + ['config', { sourceChannel: 'channel-21' }], + ['upcall event'], + ['dequeued', undefined], [ - 'transfer', - { - chainId: 'osmosis-1', - encoding: 'bech32', - value: 'osmo183dejcnmkka5dzcu9xw6mywq0p2m5peks28men', - }, - usdc.units(150), + '⚠️ tap: no status for ', + 'noble1x0ydg69dh6fqvr27xjvp6maqmrldam6yfelqkd', + 150000000n, ], ]); - t.deepEqual(inspectLogs(0), [ - '⚠️ Forwarded minted amount 150000000 from account noble1x0ydg69dh6fqvr27xjvp6maqmrldam6yfelqkd before it was observed.', - ]); }); test.todo("StatusManager does not receive update when we can't settle"); From 08b2e13921514258de566c52aeda737a28ed44c7 Mon Sep 17 00:00:00 2001 From: samsiegart Date: Wed, 27 Nov 2024 11:17:39 -0800 Subject: [PATCH 15/20] feat(fast-usdc): publish feeConfig to vstorage --- .../boot/test/fast-usdc/fast-usdc.test.ts | 9 +++++++ .../fast-usdc/snapshots/fast-usdc.test.ts.md | 14 +++++++++++ .../snapshots/fast-usdc.test.ts.snap | Bin 806 -> 1010 bytes packages/fast-usdc/src/fast-usdc.contract.js | 22 ++++++++++++++---- 4 files changed, 41 insertions(+), 4 deletions(-) diff --git a/packages/boot/test/fast-usdc/fast-usdc.test.ts b/packages/boot/test/fast-usdc/fast-usdc.test.ts index c75205d5cb4..73d8b4e6baf 100644 --- a/packages/boot/test/fast-usdc/fast-usdc.test.ts +++ b/packages/boot/test/fast-usdc/fast-usdc.test.ts @@ -117,6 +117,15 @@ test.serial('writes feed policy to vstorage', async t => { await documentStorageSchema(t, storage, doc); }); +test.serial('writes fee config to vstorage', async t => { + const { storage } = t.context; + const doc = { + node: 'fastUsdc.feeConfig', + owner: 'the fee configuration for Fast USDC', + }; + await documentStorageSchema(t, storage, doc); +}); + test.serial('writes status updates to vstorage', async t => { const { walletFactoryDriver: wd, storage } = t.context; const wallet = await wd.provideSmartWallet( diff --git a/packages/boot/test/fast-usdc/snapshots/fast-usdc.test.ts.md b/packages/boot/test/fast-usdc/snapshots/fast-usdc.test.ts.md index fb98a2008c2..08400eda5f5 100644 --- a/packages/boot/test/fast-usdc/snapshots/fast-usdc.test.ts.md +++ b/packages/boot/test/fast-usdc/snapshots/fast-usdc.test.ts.md @@ -18,6 +18,20 @@ Generated by [AVA](https://avajs.dev). ], ] +## writes fee config to vstorage + +> Under "published", the "fastUsdc.feeConfig" node is delegated to the fee configuration for Fast USDC. +> The example below illustrates the schema of the data published there. +> +> See also board marshalling conventions (_to appear_). + + [ + [ + 'published.fastUsdc.feeConfig', + '{"blockHeight":"0","values":["{\\"body\\":\\"#{\\\\\\"contractRate\\\\\\":{\\\\\\"denominator\\\\\\":{\\\\\\"brand\\\\\\":\\\\\\"$0.Alleged: USDC brand\\\\\\",\\\\\\"value\\\\\\":\\\\\\"+10\\\\\\"},\\\\\\"numerator\\\\\\":{\\\\\\"brand\\\\\\":\\\\\\"$0\\\\\\",\\\\\\"value\\\\\\":\\\\\\"+2\\\\\\"}},\\\\\\"flat\\\\\\":{\\\\\\"brand\\\\\\":\\\\\\"$0\\\\\\",\\\\\\"value\\\\\\":\\\\\\"+10000\\\\\\"},\\\\\\"maxVariable\\\\\\":{\\\\\\"brand\\\\\\":\\\\\\"$0\\\\\\",\\\\\\"value\\\\\\":\\\\\\"+5000000\\\\\\"},\\\\\\"variableRate\\\\\\":{\\\\\\"denominator\\\\\\":{\\\\\\"brand\\\\\\":\\\\\\"$0\\\\\\",\\\\\\"value\\\\\\":\\\\\\"+100\\\\\\"},\\\\\\"numerator\\\\\\":{\\\\\\"brand\\\\\\":\\\\\\"$0\\\\\\",\\\\\\"value\\\\\\":\\\\\\"+1\\\\\\"}}}\\",\\"slots\\":[\\"board01029\\"]}"]}', + ], + ] + ## writes status updates to vstorage > Under "published", the "fastUsdc.status" node is delegated to the statuses of fast USDC transfers identified by their tx hashes. diff --git a/packages/boot/test/fast-usdc/snapshots/fast-usdc.test.ts.snap b/packages/boot/test/fast-usdc/snapshots/fast-usdc.test.ts.snap index 9282a421d07b53e46e7250e0c04444c0fb5ddd81..2a1d52ca9c2583ea874af629b23823841ca7e292 100644 GIT binary patch literal 1010 zcmVSuC=?)+H0$anj{ERA)sk0 zp>9;o?tJSVWjtfej8jLE4~Rbj2M(0~!H?m@fj__jgl5)pLI@5?D-|DhJ+t5U=IzXT zZ+|Rvp^AO;?F+En3Yfk3TyqPClmLuOl;Fi7v5FiRt27+}HuDh2%#7ubPK<66JHx@O%E|X{0@0zzmXA@u#3#>Uyk z2EuQlTeyMV!A*p(-Nd&i(_C;<0c)4k*j>YlwqyRKC%&l0cv0TCkBdEGR09K4=kJ0SV4Ifq+QGfN(6nb--df;0tGL5 zQOk}y5i0F#KcU8w-JPvXFU$7Y;|d7O=y)Q4o7$HV@g!%M^30@ z$=6M3Xs@m901zsSBDtcPkulY#qC#*vB88F%ApIeb51&~@=wt#^KfBvLHp=Z2qY!^+ zqt!lX{PxOx^4+C<^6vRQ+4Q{sVUuCwLYw4@9eUxsf0SijwO*W$s0BA3_*n*0jk%;& z>66J^Q_1|$T|NlgLm^-UY)~KY@^Q;u{F=++kD}1s=KhhKjzO=6{x_J|qtq~^p!V_z zQ5c4&xQyxS3DunD0xpl0gyG-O4i->X*vu7tU&+oz_0G+GNEo54%b}-E4pg%+3gdnj z?48PrU;ay0)GAyN6(<&(Y9EX~7?z>%|Hy+oi##xv+NmMa39A=h`R)AuR3l4Nq`f4Gd)=rP#%Hq# z-(4L=Uwpi?{piW|R*Iyk7781)ROIgMJDC0Pnl$;Q#;t literal 806 zcmV+>1KIpRRzVU|_VzjtM! ztvK?p-(yfg{$8U)?0v#?J8*LeBoSx3__80UTdvSg+3x9-ja{LFTg=xpAwvDk9-;XWy+<=cHkU<&+WEao$WN9S*OHa#f?GTHgAnIv-?Th`f7C(J3n`~V$WBod4YQQ&!Lg% zC_BG;)}x_9%0BS|j2bJEDo-V9obiCNNmC=Ap+Uzr8t(fVg({U;$4)gNw64`Y z=04EFgUMbS%l_803Mnr6yw*qy)b=G+S}%NXyoqj8;YEdWPHoxFnxN8izs-`v{?^t3 zBIVj!T3GHRopa|auC+2VDy%t1(>?;d`yyD%>l(Rxaj$;{%AE};KJc*cbWzK7^GjLz z>p!e?BLK(%;NexgbXs1Xt_yDv5}J{;d%OjJ4*>8jxeT4_r2CWr{6YXeUJ!P#WNi8g z#@2`KM@x~%g~;M4EwYFwgB>vxX~ac5%;O9TA=5OAzNrt+=ny|G(_~3$P&a^lk} node + * @param {ERef} marshaller + * @param {FeeConfig} feeConfig + */ +const publishFeeConfig = async (node, marshaller, feeConfig) => { + const feeNode = E(node).makeChildNode(FEE_NODE); + const value = await E(marshaller).toCapData(feeConfig); + return E(feeNode).setValue(JSON.stringify(value)); +}; + /** * @param {ZCF} zcf * @param {OrchestrationPowers & { @@ -80,14 +93,13 @@ export const contract = async (zcf, privateArgs, zone, tools) => { assert('USDC' in terms.brands, 'no USDC brand'); assert('usdcDenom' in terms, 'no usdcDenom'); - const { feeConfig, marshaller } = privateArgs; + const { feeConfig, marshaller, storageNode } = privateArgs; const { makeRecorderKit } = prepareRecorderKitMakers( zone.mapStore('vstorage'), marshaller, ); - const makeStatusNode = () => - E(privateArgs.storageNode).makeChildNode(STATUS_NODE); + const makeStatusNode = () => E(storageNode).makeChildNode(STATUS_NODE); const statusManager = prepareStatusManager(zone, makeStatusNode); const { USDC } = terms.brands; @@ -209,6 +221,8 @@ export const contract = async (zcf, privateArgs, zone, tools) => { // So we use zone.exoClassKit above to define the liquidity pool kind // and pass the shareMint into the maker / init function. + void publishFeeConfig(storageNode, marshaller, feeConfig); + const shareMint = await provideSingleton( zone.mapStore('mint'), 'PoolShare', From 07d12d489208735a8304866e3c59e9dc0cd19f13 Mon Sep 17 00:00:00 2001 From: Dan Connolly Date: Wed, 27 Nov 2024 15:08:09 -0600 Subject: [PATCH 16/20] feat: showValue option for documentStorageSchema --- packages/internal/src/storage-test-utils.js | 37 ++++++++++++++++----- 1 file changed, 28 insertions(+), 9 deletions(-) diff --git a/packages/internal/src/storage-test-utils.js b/packages/internal/src/storage-test-utils.js index f224c47ad93..143a6bbd444 100644 --- a/packages/internal/src/storage-test-utils.js +++ b/packages/internal/src/storage-test-utils.js @@ -7,6 +7,7 @@ import { makeTracer } from './debug.js'; import { isStreamCell, makeChainStorageRoot } from './lib-chainStorage.js'; import { bindAllMethods } from './method-tools.js'; import { eventLoopIteration } from './testing-utils.js'; +import { NonNullish } from './errors.js'; /** * @import {TotalMap} from './types.js'; @@ -250,30 +251,48 @@ export const makeMockChainStorageRoot = () => { * @param {import('ava').ExecutionContext} t * @param {MockChainStorageRoot | FakeStorageKit} storage * @param {({ note: string } | { node: string; owner: string }) & - * ({ pattern: string; replacement: string } | {})} opts + * ({ pattern: string; replacement: string } | {}) & { + * showValue?: (v: string) => unknown; + * }} opts */ export const documentStorageSchema = async (t, storage, opts) => { // chainStorage publication is unsynchronized await eventLoopIteration(); + const getLast = (/** @type {string} */ cell) => + JSON.parse(cell).values.at(-1) || assert.fail(); + const { showValue = s => s } = opts; + /** @type {(d: Map, k: string) => unknown} */ + const getBodyDefault = (d, k) => showValue(getLast(NonNullish(d.get(k)))); + const [keys, getBody] = 'keys' in storage ? [storage.keys(), (/** @type {string} */ k) => storage.getBody(k)] - : [storage.data.keys(), (/** @type {string} */ k) => storage.data.get(k)]; + : [ + storage.data.keys(), + (/** @type {string} */ k) => getBodyDefault(storage.data, k), + ]; const { pattern, replacement } = 'pattern' in opts ? opts : { pattern: 'mockChainStorageRoot.', replacement: 'published.' }; - const illustration = [...keys].sort().map( + + const pruned = [...keys] + .sort() + .filter( + 'node' in opts + ? key => + key + .replace(pattern, replacement) + .startsWith(`published.${opts.node}`) + : _entry => true, + ); + + const illustration = pruned.map( /** @type {(k: string) => [string, unknown]} */ key => [key.replace(pattern, replacement), getBody(key)], ); - const pruned = illustration.filter( - 'node' in opts - ? ([key, _]) => key.startsWith(`published.${opts.node}`) - : _entry => true, - ); const note = 'note' in opts @@ -283,5 +302,5 @@ export const documentStorageSchema = async (t, storage, opts) => { The example below illustrates the schema of the data published there. See also board marshalling conventions (_to appear_).`; - t.snapshot(pruned, note + boilerplate); + t.snapshot(illustration, note + boilerplate); }; From 4dc9720fafb515b03c6ceab665bdeec9684e14b6 Mon Sep 17 00:00:00 2001 From: Dan Connolly Date: Wed, 27 Nov 2024 15:10:01 -0600 Subject: [PATCH 17/20] chore: show parsed feedPolicy in storage snapshot --- packages/boot/test/fast-usdc/fast-usdc.test.ts | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/packages/boot/test/fast-usdc/fast-usdc.test.ts b/packages/boot/test/fast-usdc/fast-usdc.test.ts index 73d8b4e6baf..e13f95849e7 100644 --- a/packages/boot/test/fast-usdc/fast-usdc.test.ts +++ b/packages/boot/test/fast-usdc/fast-usdc.test.ts @@ -8,6 +8,7 @@ import { documentStorageSchema } from '@agoric/governance/tools/storageDoc.js'; import { Fail } from '@endo/errors'; import { unmarshalFromVstorage } from '@agoric/internal/src/marshal.js'; import { makeMarshal } from '@endo/marshal'; +import { defaultMarshaller } from '@agoric/internal/src/storage-test-utils.js'; import { makeWalletFactoryContext, type WalletFactoryTestContext, @@ -110,11 +111,12 @@ test.serial( test.serial('writes feed policy to vstorage', async t => { const { storage } = t.context; - const doc = { + const opts = { node: 'fastUsdc.feedPolicy', owner: 'the general and chain-specific policies for the Fast USDC feed', + showValue: JSON.parse, }; - await documentStorageSchema(t, storage, doc); + await documentStorageSchema(t, storage, opts); }); test.serial('writes fee config to vstorage', async t => { @@ -122,6 +124,7 @@ test.serial('writes fee config to vstorage', async t => { const doc = { node: 'fastUsdc.feeConfig', owner: 'the fee configuration for Fast USDC', + showValue: v => defaultMarshaller.fromCapData(JSON.parse(v)), }; await documentStorageSchema(t, storage, doc); }); From c252da2b16908a5d2d2e68772c7015197b6057f9 Mon Sep 17 00:00:00 2001 From: Dan Connolly Date: Wed, 27 Nov 2024 15:39:19 -0600 Subject: [PATCH 18/20] chore: regen snapshots with parsed feedPolicy etc. --- .../fast-usdc/snapshots/fast-usdc.test.ts.md | 48 ++++++++++++++++-- .../snapshots/fast-usdc.test.ts.snap | Bin 1010 -> 1242 bytes 2 files changed, 44 insertions(+), 4 deletions(-) diff --git a/packages/boot/test/fast-usdc/snapshots/fast-usdc.test.ts.md b/packages/boot/test/fast-usdc/snapshots/fast-usdc.test.ts.md index 08400eda5f5..f953f9ea514 100644 --- a/packages/boot/test/fast-usdc/snapshots/fast-usdc.test.ts.md +++ b/packages/boot/test/fast-usdc/snapshots/fast-usdc.test.ts.md @@ -14,7 +14,18 @@ Generated by [AVA](https://avajs.dev). [ [ 'published.fastUsdc.feedPolicy', - '{"blockHeight":"0","values":["{\\"chainPolicies\\":{\\"Arbitrum\\":{\\"cctpTokenMessengerAddress\\":\\"0x19330d10D9Cc8751218eaf51E8885D058642E08A\\",\\"chainId\\":42161,\\"confirmations\\":2,\\"nobleContractAddress\\":\\"0x19330d10D9Cc8751218eaf51E8885D058642E08A\\"}},\\"nobleAgoricChannelId\\":\\"channel-21\\",\\"nobleDomainId\\":4}"]}', + { + chainPolicies: { + Arbitrum: { + cctpTokenMessengerAddress: '0x19330d10D9Cc8751218eaf51E8885D058642E08A', + chainId: 42161, + confirmations: 2, + nobleContractAddress: '0x19330d10D9Cc8751218eaf51E8885D058642E08A', + }, + }, + nobleAgoricChannelId: 'channel-21', + nobleDomainId: 4, + }, ], ] @@ -28,7 +39,36 @@ Generated by [AVA](https://avajs.dev). [ [ 'published.fastUsdc.feeConfig', - '{"blockHeight":"0","values":["{\\"body\\":\\"#{\\\\\\"contractRate\\\\\\":{\\\\\\"denominator\\\\\\":{\\\\\\"brand\\\\\\":\\\\\\"$0.Alleged: USDC brand\\\\\\",\\\\\\"value\\\\\\":\\\\\\"+10\\\\\\"},\\\\\\"numerator\\\\\\":{\\\\\\"brand\\\\\\":\\\\\\"$0\\\\\\",\\\\\\"value\\\\\\":\\\\\\"+2\\\\\\"}},\\\\\\"flat\\\\\\":{\\\\\\"brand\\\\\\":\\\\\\"$0\\\\\\",\\\\\\"value\\\\\\":\\\\\\"+10000\\\\\\"},\\\\\\"maxVariable\\\\\\":{\\\\\\"brand\\\\\\":\\\\\\"$0\\\\\\",\\\\\\"value\\\\\\":\\\\\\"+5000000\\\\\\"},\\\\\\"variableRate\\\\\\":{\\\\\\"denominator\\\\\\":{\\\\\\"brand\\\\\\":\\\\\\"$0\\\\\\",\\\\\\"value\\\\\\":\\\\\\"+100\\\\\\"},\\\\\\"numerator\\\\\\":{\\\\\\"brand\\\\\\":\\\\\\"$0\\\\\\",\\\\\\"value\\\\\\":\\\\\\"+1\\\\\\"}}}\\",\\"slots\\":[\\"board01029\\"]}"]}', + { + contractRate: { + denominator: { + brand: Object @Alleged: USDC brand {}, + value: 10n, + }, + numerator: { + brand: Object @Alleged: USDC brand {}, + value: 2n, + }, + }, + flat: { + brand: Object @Alleged: USDC brand {}, + value: 10000n, + }, + maxVariable: { + brand: Object @Alleged: USDC brand {}, + value: 5000000n, + }, + variableRate: { + denominator: { + brand: Object @Alleged: USDC brand {}, + value: 100n, + }, + numerator: { + brand: Object @Alleged: USDC brand {}, + value: 1n, + }, + }, + }, ], ] @@ -42,10 +82,10 @@ Generated by [AVA](https://avajs.dev). [ [ 'published.fastUsdc.status.0xc81bc6105b60a234c7c50ac17816ebcd5561d366df8bf3be59ff387552761702', - '{"blockHeight":"0","values":["OBSERVED"]}', + 'OBSERVED', ], [ 'published.fastUsdc.status.0xd81bc6105b60a234c7c50ac17816ebcd5561d366df8bf3be59ff387552761799', - '{"blockHeight":"0","values":["OBSERVED"]}', + 'OBSERVED', ], ] diff --git a/packages/boot/test/fast-usdc/snapshots/fast-usdc.test.ts.snap b/packages/boot/test/fast-usdc/snapshots/fast-usdc.test.ts.snap index 2a1d52ca9c2583ea874af629b23823841ca7e292..9489b8bc7ff297097930bdd8547b32b0ecc731b5 100644 GIT binary patch literal 1242 zcmV<01SR`HRzVvF^1fmy?oVXwmQW5gok8ZsA zAO#8bV68p#oB6%*%x`=%3X&|`RBzuR9qWWTPh6F;CdDEm!CF}ohuchNY)k1(@;b#T zH|KIfVG~fgv0!|{n&u@G^kFDel($92Y+W~W&n>up5hV24TM3uqhW)`sRhA<`f70eff_LL7V7(pfphO)6N7gTEe4P8E(WWHx5;vQparFG z0pLdf_yYiD5a86odf=EjJ2NzAQ(>>)&T~!1x;12VqJ(Sn^ybjh$tLey;xgtz(uI6J z9B`{==>{yL{Tl+@M}WtQLtD^+GTOcc@Vo_ZzUW#Wacx@w*DQc{impdST<=-{pI87t z6kR7q3S^n{{AvvyR#2KX}gwCdsa8fIc(iPzoeZMPblOTRdr#xx*61 zj`go)w4ZVSPC5XqMcCv>2H^l)aR9CtU8nYVYacj=s+;8vm+Z5{fw3}#{pxU7+uQN7 zzB^=Q53szmAY-#Qw~{1OC-GcYeodH>`sdf)a`@@*EQhY_?6VslXlh%U)n+!qU<>>| z7QmCe1)wz7ZN=Ix(M`VJ62QAdOTcykpb7vl9<&H7BhhENz)3_s5NrDe0Nm~g_1-(7 zjP{BAGY0`~6ddgXm&cpCERXJ?7u-%*^MbJIxqeV}d1di*xD@&>551+DSEV2nzF+mk zVznxwS`aM;x$*uH~Ar3y!&c1YE{rsi%wTB=h{t=nw<-N)D+WY>2 z?cL?FPj7b}Nad{=4Zdr%SuC=?)+H0$anj{ERA)sk0 zp>9;o?tJSVWjtfej8jLE4~Rbj2M(0~!H?m@fj__jgl5)pLI@5?D-|DhJ+t5U=IzXT zZ+|Rvp^AO;?F+En3Yfk3TyqPClmLuOl;Fi7v5FiRt27+}HuDh2%#7ubPK<66JHx@O%E|X{0@0zzmXA@u#3#>Uyk z2EuQlTeyMV!A*p(-Nd&i(_C;<0c)4k*j>YlwqyRKC%&l0cv0TCkBdEGR09K4=kJ0SV4Ifq+QGfN(6nb--df;0tGL5 zQOk}y5i0F#KcU8w-JPvXFU$7Y;|d7O=y)Q4o7$HV@g!%M^30@ z$=6M3Xs@m901zsSBDtcPkulY#qC#*vB88F%ApIeb51&~@=wt#^KfBvLHp=Z2qY!^+ zqt!lX{PxOx^4+C<^6vRQ+4Q{sVUuCwLYw4@9eUxsf0SijwO*W$s0BA3_*n*0jk%;& z>66J^Q_1|$T|NlgLm^-UY)~KY@^Q;u{F=++kD}1s=KhhKjzO=6{x_J|qtq~^p!V_z zQ5c4&xQyxS3DunD0xpl0gyG-O4i->X*vu7tU&+oz_0G+GNEo54%b}-E4pg%+3gdnj z?48PrU;ay0)GAyN6(<&(Y9EX~7?z>%|Hy+oi##xv+NmMa39A=h`R)AuR3l4Nq`f4Gd)=rP#%Hq# z-(4L=Uwpi?{piW|R*Iyk7781)ROIgMJDC0Pnl$;Q#;t From 237994ea50e336c057d02b895b630ea70a247969 Mon Sep 17 00:00:00 2001 From: Dan Connolly Date: Wed, 27 Nov 2024 17:11:30 -0600 Subject: [PATCH 19/20] chore(boot): show parsed agoricNames chain info --- packages/boot/test/bootstrapTests/orchestration.test.ts | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/packages/boot/test/bootstrapTests/orchestration.test.ts b/packages/boot/test/bootstrapTests/orchestration.test.ts index a4f0f3dadfa..f18260cc417 100644 --- a/packages/boot/test/bootstrapTests/orchestration.test.ts +++ b/packages/boot/test/bootstrapTests/orchestration.test.ts @@ -1,7 +1,10 @@ import { test as anyTest } from '@agoric/zoe/tools/prepare-test-env-ava.js'; import { Fail } from '@endo/errors'; -import { documentStorageSchema } from '@agoric/internal/src/storage-test-utils.js'; +import { + defaultMarshaller, + documentStorageSchema, +} from '@agoric/internal/src/storage-test-utils.js'; import type { CosmosValidatorAddress } from '@agoric/orchestration'; import type { start as startStakeIca } from '@agoric/orchestration/src/examples/stake-ica.contract.js'; import type { Instance } from '@agoric/zoe/src/zoeService/utils.js'; @@ -52,6 +55,7 @@ test.serial('config', async t => { await documentStorageSchema(t, storage, { note: 'Chain info for Orchestration', node: 'agoricNames.chain', + showValue: v => defaultMarshaller.fromCapData(JSON.parse(v)), }); } @@ -73,6 +77,7 @@ test.serial('config', async t => { await documentStorageSchema(t, storage, { note: 'Chain connections for Orchestration', node: 'agoricNames.chainConnection', + showValue: v => defaultMarshaller.fromCapData(JSON.parse(v)), }); } { From fe1df439cd874664c37c5a5571408eabdbd406b0 Mon Sep 17 00:00:00 2001 From: Dan Connolly Date: Wed, 27 Nov 2024 17:12:13 -0600 Subject: [PATCH 20/20] chore(boot): update snapshots with parsed agoricNames chainInfo --- .../snapshots/orchestration.test.ts.md | 2076 ++++++++++++++++- .../snapshots/orchestration.test.ts.snap | Bin 6957 -> 14961 bytes 2 files changed, 1961 insertions(+), 115 deletions(-) diff --git a/packages/boot/test/bootstrapTests/snapshots/orchestration.test.ts.md b/packages/boot/test/bootstrapTests/snapshots/orchestration.test.ts.md index 06537dd7550..bcc520982e9 100644 --- a/packages/boot/test/bootstrapTests/snapshots/orchestration.test.ts.md +++ b/packages/boot/test/bootstrapTests/snapshots/orchestration.test.ts.md @@ -14,259 +14,1238 @@ Generated by [AVA](https://avajs.dev). [ [ 'published.agoricNames.chain.agoric', - '{"blockHeight":"0","values":["{\\"body\\":\\"{\\\\\\"bech32Prefix\\\\\\":\\\\\\"agoric\\\\\\",\\\\\\"chainId\\\\\\":\\\\\\"agoric-3\\\\\\",\\\\\\"icqEnabled\\\\\\":false,\\\\\\"stakingTokens\\\\\\":[{\\\\\\"denom\\\\\\":\\\\\\"ubld\\\\\\"}]}\\",\\"slots\\":[]}"]}', + { + bech32Prefix: 'agoric', + chainId: 'agoric-3', + icqEnabled: false, + stakingTokens: [ + { + denom: 'ubld', + }, + ], + }, ], [ 'published.agoricNames.chain.celestia', - '{"blockHeight":"0","values":["{\\"body\\":\\"{\\\\\\"bech32Prefix\\\\\\":\\\\\\"celestia\\\\\\",\\\\\\"chainId\\\\\\":\\\\\\"celestia\\\\\\",\\\\\\"icqEnabled\\\\\\":false,\\\\\\"stakingTokens\\\\\\":[{\\\\\\"denom\\\\\\":\\\\\\"utia\\\\\\"}]}\\",\\"slots\\":[]}"]}', + { + bech32Prefix: 'celestia', + chainId: 'celestia', + icqEnabled: false, + stakingTokens: [ + { + denom: 'utia', + }, + ], + }, ], [ 'published.agoricNames.chain.cosmoshub', - '{"blockHeight":"0","values":["{\\"body\\":\\"{\\\\\\"bech32Prefix\\\\\\":\\\\\\"cosmos\\\\\\",\\\\\\"chainId\\\\\\":\\\\\\"cosmoshub-4\\\\\\",\\\\\\"icqEnabled\\\\\\":false,\\\\\\"stakingTokens\\\\\\":[{\\\\\\"denom\\\\\\":\\\\\\"uatom\\\\\\"}]}\\",\\"slots\\":[]}"]}', + { + bech32Prefix: 'cosmos', + chainId: 'cosmoshub-4', + icqEnabled: false, + stakingTokens: [ + { + denom: 'uatom', + }, + ], + }, ], [ 'published.agoricNames.chain.dydx', - '{"blockHeight":"0","values":["{\\"body\\":\\"{\\\\\\"bech32Prefix\\\\\\":\\\\\\"dydx\\\\\\",\\\\\\"chainId\\\\\\":\\\\\\"dydx-mainnet-1\\\\\\",\\\\\\"icqEnabled\\\\\\":false,\\\\\\"stakingTokens\\\\\\":[{\\\\\\"denom\\\\\\":\\\\\\"adydx\\\\\\"}]}\\",\\"slots\\":[]}"]}', + { + bech32Prefix: 'dydx', + chainId: 'dydx-mainnet-1', + icqEnabled: false, + stakingTokens: [ + { + denom: 'adydx', + }, + ], + }, ], [ 'published.agoricNames.chain.juno', - '{"blockHeight":"0","values":["{\\"body\\":\\"{\\\\\\"bech32Prefix\\\\\\":\\\\\\"juno\\\\\\",\\\\\\"chainId\\\\\\":\\\\\\"juno-1\\\\\\",\\\\\\"icqEnabled\\\\\\":false,\\\\\\"stakingTokens\\\\\\":[{\\\\\\"denom\\\\\\":\\\\\\"ujuno\\\\\\"}]}\\",\\"slots\\":[]}"]}', + { + bech32Prefix: 'juno', + chainId: 'juno-1', + icqEnabled: false, + stakingTokens: [ + { + denom: 'ujuno', + }, + ], + }, ], [ 'published.agoricNames.chain.neutron', - '{"blockHeight":"0","values":["{\\"body\\":\\"{\\\\\\"bech32Prefix\\\\\\":\\\\\\"neutron\\\\\\",\\\\\\"chainId\\\\\\":\\\\\\"neutron-1\\\\\\",\\\\\\"icqEnabled\\\\\\":false,\\\\\\"stakingTokens\\\\\\":[{\\\\\\"denom\\\\\\":\\\\\\"untrn\\\\\\"}]}\\",\\"slots\\":[]}"]}', + { + bech32Prefix: 'neutron', + chainId: 'neutron-1', + icqEnabled: false, + stakingTokens: [ + { + denom: 'untrn', + }, + ], + }, ], [ 'published.agoricNames.chain.noble', - '{"blockHeight":"0","values":["{\\"body\\":\\"{\\\\\\"bech32Prefix\\\\\\":\\\\\\"noble\\\\\\",\\\\\\"chainId\\\\\\":\\\\\\"noble-1\\\\\\",\\\\\\"icqEnabled\\\\\\":false}\\",\\"slots\\":[]}"]}', + { + bech32Prefix: 'noble', + chainId: 'noble-1', + icqEnabled: false, + }, ], [ 'published.agoricNames.chain.omniflixhub', - '{"blockHeight":"0","values":["{\\"body\\":\\"{\\\\\\"bech32Prefix\\\\\\":\\\\\\"omniflix\\\\\\",\\\\\\"chainId\\\\\\":\\\\\\"omniflixhub-1\\\\\\",\\\\\\"icqEnabled\\\\\\":false,\\\\\\"stakingTokens\\\\\\":[{\\\\\\"denom\\\\\\":\\\\\\"uflix\\\\\\"}]}\\",\\"slots\\":[]}"]}', + { + bech32Prefix: 'omniflix', + chainId: 'omniflixhub-1', + icqEnabled: false, + stakingTokens: [ + { + denom: 'uflix', + }, + ], + }, ], [ 'published.agoricNames.chain.osmosis', - '{"blockHeight":"0","values":["{\\"body\\":\\"{\\\\\\"bech32Prefix\\\\\\":\\\\\\"osmo\\\\\\",\\\\\\"chainId\\\\\\":\\\\\\"osmosis-1\\\\\\",\\\\\\"icqEnabled\\\\\\":true,\\\\\\"stakingTokens\\\\\\":[{\\\\\\"denom\\\\\\":\\\\\\"uosmo\\\\\\"}]}\\",\\"slots\\":[]}"]}', + { + bech32Prefix: 'osmo', + chainId: 'osmosis-1', + icqEnabled: true, + stakingTokens: [ + { + denom: 'uosmo', + }, + ], + }, ], [ 'published.agoricNames.chain.secretnetwork', - '{"blockHeight":"0","values":["{\\"body\\":\\"{\\\\\\"bech32Prefix\\\\\\":\\\\\\"secret\\\\\\",\\\\\\"chainId\\\\\\":\\\\\\"secret-4\\\\\\",\\\\\\"icqEnabled\\\\\\":false,\\\\\\"stakingTokens\\\\\\":[{\\\\\\"denom\\\\\\":\\\\\\"uscrt\\\\\\"}]}\\",\\"slots\\":[]}"]}', + { + bech32Prefix: 'secret', + chainId: 'secret-4', + icqEnabled: false, + stakingTokens: [ + { + denom: 'uscrt', + }, + ], + }, ], [ 'published.agoricNames.chain.stargaze', - '{"blockHeight":"0","values":["{\\"body\\":\\"{\\\\\\"bech32Prefix\\\\\\":\\\\\\"stars\\\\\\",\\\\\\"chainId\\\\\\":\\\\\\"stargaze-1\\\\\\",\\\\\\"icqEnabled\\\\\\":false,\\\\\\"stakingTokens\\\\\\":[{\\\\\\"denom\\\\\\":\\\\\\"ustars\\\\\\"}]}\\",\\"slots\\":[]}"]}', + { + bech32Prefix: 'stars', + chainId: 'stargaze-1', + icqEnabled: false, + stakingTokens: [ + { + denom: 'ustars', + }, + ], + }, ], [ 'published.agoricNames.chain.stride', - '{"blockHeight":"0","values":["{\\"body\\":\\"{\\\\\\"bech32Prefix\\\\\\":\\\\\\"stride\\\\\\",\\\\\\"chainId\\\\\\":\\\\\\"stride-1\\\\\\",\\\\\\"icqEnabled\\\\\\":false,\\\\\\"stakingTokens\\\\\\":[{\\\\\\"denom\\\\\\":\\\\\\"ustrd\\\\\\"}]}\\",\\"slots\\":[]}"]}', + { + bech32Prefix: 'stride', + chainId: 'stride-1', + icqEnabled: false, + stakingTokens: [ + { + denom: 'ustrd', + }, + ], + }, ], [ 'published.agoricNames.chain.umee', - '{"blockHeight":"0","values":["{\\"body\\":\\"{\\\\\\"bech32Prefix\\\\\\":\\\\\\"umee\\\\\\",\\\\\\"chainId\\\\\\":\\\\\\"umee-1\\\\\\",\\\\\\"icqEnabled\\\\\\":false,\\\\\\"stakingTokens\\\\\\":[{\\\\\\"denom\\\\\\":\\\\\\"uumee\\\\\\"}]}\\",\\"slots\\":[]}"]}', + { + bech32Prefix: 'umee', + chainId: 'umee-1', + icqEnabled: false, + stakingTokens: [ + { + denom: 'uumee', + }, + ], + }, ], [ 'published.agoricNames.chainConnection.agoric-3_cosmoshub-4', - '{"blockHeight":"0","values":["{\\"body\\":\\"{\\\\\\"client_id\\\\\\":\\\\\\"07-tendermint-6\\\\\\",\\\\\\"counterparty\\\\\\":{\\\\\\"client_id\\\\\\":\\\\\\"07-tendermint-927\\\\\\",\\\\\\"connection_id\\\\\\":\\\\\\"connection-649\\\\\\"},\\\\\\"id\\\\\\":\\\\\\"connection-8\\\\\\",\\\\\\"state\\\\\\":3,\\\\\\"transferChannel\\\\\\":{\\\\\\"channelId\\\\\\":\\\\\\"channel-5\\\\\\",\\\\\\"counterPartyChannelId\\\\\\":\\\\\\"channel-405\\\\\\",\\\\\\"counterPartyPortId\\\\\\":\\\\\\"transfer\\\\\\",\\\\\\"ordering\\\\\\":0,\\\\\\"portId\\\\\\":\\\\\\"transfer\\\\\\",\\\\\\"state\\\\\\":3,\\\\\\"version\\\\\\":\\\\\\"ics20-1\\\\\\"}}\\",\\"slots\\":[]}"]}', + { + client_id: '07-tendermint-6', + counterparty: { + client_id: '07-tendermint-927', + connection_id: 'connection-649', + }, + id: 'connection-8', + state: 3, + transferChannel: { + channelId: 'channel-5', + counterPartyChannelId: 'channel-405', + counterPartyPortId: 'transfer', + ordering: 0, + portId: 'transfer', + state: 3, + version: 'ics20-1', + }, + }, ], [ 'published.agoricNames.chainConnection.agoric-3_noble-1', - '{"blockHeight":"0","values":["{\\"body\\":\\"{\\\\\\"client_id\\\\\\":\\\\\\"07-tendermint-77\\\\\\",\\\\\\"counterparty\\\\\\":{\\\\\\"client_id\\\\\\":\\\\\\"07-tendermint-32\\\\\\",\\\\\\"connection_id\\\\\\":\\\\\\"connection-40\\\\\\"},\\\\\\"id\\\\\\":\\\\\\"connection-72\\\\\\",\\\\\\"state\\\\\\":3,\\\\\\"transferChannel\\\\\\":{\\\\\\"channelId\\\\\\":\\\\\\"channel-62\\\\\\",\\\\\\"counterPartyChannelId\\\\\\":\\\\\\"channel-21\\\\\\",\\\\\\"counterPartyPortId\\\\\\":\\\\\\"transfer\\\\\\",\\\\\\"ordering\\\\\\":0,\\\\\\"portId\\\\\\":\\\\\\"transfer\\\\\\",\\\\\\"state\\\\\\":3,\\\\\\"version\\\\\\":\\\\\\"ics20-1\\\\\\"}}\\",\\"slots\\":[]}"]}', + { + client_id: '07-tendermint-77', + counterparty: { + client_id: '07-tendermint-32', + connection_id: 'connection-40', + }, + id: 'connection-72', + state: 3, + transferChannel: { + channelId: 'channel-62', + counterPartyChannelId: 'channel-21', + counterPartyPortId: 'transfer', + ordering: 0, + portId: 'transfer', + state: 3, + version: 'ics20-1', + }, + }, ], [ 'published.agoricNames.chainConnection.agoric-3_omniflixhub-1', - '{"blockHeight":"0","values":["{\\"body\\":\\"{\\\\\\"client_id\\\\\\":\\\\\\"07-tendermint-73\\\\\\",\\\\\\"counterparty\\\\\\":{\\\\\\"client_id\\\\\\":\\\\\\"07-tendermint-47\\\\\\",\\\\\\"connection_id\\\\\\":\\\\\\"connection-40\\\\\\"},\\\\\\"id\\\\\\":\\\\\\"connection-67\\\\\\",\\\\\\"state\\\\\\":3,\\\\\\"transferChannel\\\\\\":{\\\\\\"channelId\\\\\\":\\\\\\"channel-58\\\\\\",\\\\\\"counterPartyChannelId\\\\\\":\\\\\\"channel-30\\\\\\",\\\\\\"counterPartyPortId\\\\\\":\\\\\\"transfer\\\\\\",\\\\\\"ordering\\\\\\":0,\\\\\\"portId\\\\\\":\\\\\\"transfer\\\\\\",\\\\\\"state\\\\\\":3,\\\\\\"version\\\\\\":\\\\\\"ics20-1\\\\\\"}}\\",\\"slots\\":[]}"]}', + { + client_id: '07-tendermint-73', + counterparty: { + client_id: '07-tendermint-47', + connection_id: 'connection-40', + }, + id: 'connection-67', + state: 3, + transferChannel: { + channelId: 'channel-58', + counterPartyChannelId: 'channel-30', + counterPartyPortId: 'transfer', + ordering: 0, + portId: 'transfer', + state: 3, + version: 'ics20-1', + }, + }, ], [ 'published.agoricNames.chainConnection.agoric-3_osmosis-1', - '{"blockHeight":"0","values":["{\\"body\\":\\"{\\\\\\"client_id\\\\\\":\\\\\\"07-tendermint-1\\\\\\",\\\\\\"counterparty\\\\\\":{\\\\\\"client_id\\\\\\":\\\\\\"07-tendermint-2109\\\\\\",\\\\\\"connection_id\\\\\\":\\\\\\"connection-1649\\\\\\"},\\\\\\"id\\\\\\":\\\\\\"connection-1\\\\\\",\\\\\\"state\\\\\\":3,\\\\\\"transferChannel\\\\\\":{\\\\\\"channelId\\\\\\":\\\\\\"channel-1\\\\\\",\\\\\\"counterPartyChannelId\\\\\\":\\\\\\"channel-320\\\\\\",\\\\\\"counterPartyPortId\\\\\\":\\\\\\"transfer\\\\\\",\\\\\\"ordering\\\\\\":0,\\\\\\"portId\\\\\\":\\\\\\"transfer\\\\\\",\\\\\\"state\\\\\\":3,\\\\\\"version\\\\\\":\\\\\\"ics20-1\\\\\\"}}\\",\\"slots\\":[]}"]}', + { + client_id: '07-tendermint-1', + counterparty: { + client_id: '07-tendermint-2109', + connection_id: 'connection-1649', + }, + id: 'connection-1', + state: 3, + transferChannel: { + channelId: 'channel-1', + counterPartyChannelId: 'channel-320', + counterPartyPortId: 'transfer', + ordering: 0, + portId: 'transfer', + state: 3, + version: 'ics20-1', + }, + }, ], [ 'published.agoricNames.chainConnection.agoric-3_secret-4', - '{"blockHeight":"0","values":["{\\"body\\":\\"{\\\\\\"client_id\\\\\\":\\\\\\"07-tendermint-17\\\\\\",\\\\\\"counterparty\\\\\\":{\\\\\\"client_id\\\\\\":\\\\\\"07-tendermint-111\\\\\\",\\\\\\"connection_id\\\\\\":\\\\\\"connection-80\\\\\\"},\\\\\\"id\\\\\\":\\\\\\"connection-17\\\\\\",\\\\\\"state\\\\\\":3,\\\\\\"transferChannel\\\\\\":{\\\\\\"channelId\\\\\\":\\\\\\"channel-10\\\\\\",\\\\\\"counterPartyChannelId\\\\\\":\\\\\\"channel-51\\\\\\",\\\\\\"counterPartyPortId\\\\\\":\\\\\\"transfer\\\\\\",\\\\\\"ordering\\\\\\":0,\\\\\\"portId\\\\\\":\\\\\\"transfer\\\\\\",\\\\\\"state\\\\\\":3,\\\\\\"version\\\\\\":\\\\\\"ics20-1\\\\\\"}}\\",\\"slots\\":[]}"]}', + { + client_id: '07-tendermint-17', + counterparty: { + client_id: '07-tendermint-111', + connection_id: 'connection-80', + }, + id: 'connection-17', + state: 3, + transferChannel: { + channelId: 'channel-10', + counterPartyChannelId: 'channel-51', + counterPartyPortId: 'transfer', + ordering: 0, + portId: 'transfer', + state: 3, + version: 'ics20-1', + }, + }, ], [ 'published.agoricNames.chainConnection.agoric-3_stride-1', - '{"blockHeight":"0","values":["{\\"body\\":\\"{\\\\\\"client_id\\\\\\":\\\\\\"07-tendermint-74\\\\\\",\\\\\\"counterparty\\\\\\":{\\\\\\"client_id\\\\\\":\\\\\\"07-tendermint-129\\\\\\",\\\\\\"connection_id\\\\\\":\\\\\\"connection-118\\\\\\"},\\\\\\"id\\\\\\":\\\\\\"connection-68\\\\\\",\\\\\\"state\\\\\\":3,\\\\\\"transferChannel\\\\\\":{\\\\\\"channelId\\\\\\":\\\\\\"channel-59\\\\\\",\\\\\\"counterPartyChannelId\\\\\\":\\\\\\"channel-148\\\\\\",\\\\\\"counterPartyPortId\\\\\\":\\\\\\"transfer\\\\\\",\\\\\\"ordering\\\\\\":0,\\\\\\"portId\\\\\\":\\\\\\"transfer\\\\\\",\\\\\\"state\\\\\\":3,\\\\\\"version\\\\\\":\\\\\\"ics20-1\\\\\\"}}\\",\\"slots\\":[]}"]}', + { + client_id: '07-tendermint-74', + counterparty: { + client_id: '07-tendermint-129', + connection_id: 'connection-118', + }, + id: 'connection-68', + state: 3, + transferChannel: { + channelId: 'channel-59', + counterPartyChannelId: 'channel-148', + counterPartyPortId: 'transfer', + ordering: 0, + portId: 'transfer', + state: 3, + version: 'ics20-1', + }, + }, ], [ 'published.agoricNames.chainConnection.agoric-3_umee-1', - '{"blockHeight":"0","values":["{\\"body\\":\\"{\\\\\\"client_id\\\\\\":\\\\\\"07-tendermint-18\\\\\\",\\\\\\"counterparty\\\\\\":{\\\\\\"client_id\\\\\\":\\\\\\"07-tendermint-152\\\\\\",\\\\\\"connection_id\\\\\\":\\\\\\"connection-101\\\\\\"},\\\\\\"id\\\\\\":\\\\\\"connection-18\\\\\\",\\\\\\"state\\\\\\":3,\\\\\\"transferChannel\\\\\\":{\\\\\\"channelId\\\\\\":\\\\\\"channel-11\\\\\\",\\\\\\"counterPartyChannelId\\\\\\":\\\\\\"channel-42\\\\\\",\\\\\\"counterPartyPortId\\\\\\":\\\\\\"transfer\\\\\\",\\\\\\"ordering\\\\\\":0,\\\\\\"portId\\\\\\":\\\\\\"transfer\\\\\\",\\\\\\"state\\\\\\":3,\\\\\\"version\\\\\\":\\\\\\"ics20-1\\\\\\"}}\\",\\"slots\\":[]}"]}', + { + client_id: '07-tendermint-18', + counterparty: { + client_id: '07-tendermint-152', + connection_id: 'connection-101', + }, + id: 'connection-18', + state: 3, + transferChannel: { + channelId: 'channel-11', + counterPartyChannelId: 'channel-42', + counterPartyPortId: 'transfer', + ordering: 0, + portId: 'transfer', + state: 3, + version: 'ics20-1', + }, + }, ], [ 'published.agoricNames.chainConnection.celestia_neutron-1', - '{"blockHeight":"0","values":["{\\"body\\":\\"{\\\\\\"client_id\\\\\\":\\\\\\"07-tendermint-29\\\\\\",\\\\\\"counterparty\\\\\\":{\\\\\\"client_id\\\\\\":\\\\\\"07-tendermint-48\\\\\\",\\\\\\"connection_id\\\\\\":\\\\\\"connection-36\\\\\\"},\\\\\\"id\\\\\\":\\\\\\"connection-7\\\\\\",\\\\\\"state\\\\\\":3,\\\\\\"transferChannel\\\\\\":{\\\\\\"channelId\\\\\\":\\\\\\"channel-8\\\\\\",\\\\\\"counterPartyChannelId\\\\\\":\\\\\\"channel-35\\\\\\",\\\\\\"counterPartyPortId\\\\\\":\\\\\\"transfer\\\\\\",\\\\\\"ordering\\\\\\":0,\\\\\\"portId\\\\\\":\\\\\\"transfer\\\\\\",\\\\\\"state\\\\\\":3,\\\\\\"version\\\\\\":\\\\\\"ics20-1\\\\\\"}}\\",\\"slots\\":[]}"]}', + { + client_id: '07-tendermint-29', + counterparty: { + client_id: '07-tendermint-48', + connection_id: 'connection-36', + }, + id: 'connection-7', + state: 3, + transferChannel: { + channelId: 'channel-8', + counterPartyChannelId: 'channel-35', + counterPartyPortId: 'transfer', + ordering: 0, + portId: 'transfer', + state: 3, + version: 'ics20-1', + }, + }, ], [ 'published.agoricNames.chainConnection.celestia_osmosis-1', - '{"blockHeight":"0","values":["{\\"body\\":\\"{\\\\\\"client_id\\\\\\":\\\\\\"07-tendermint-10\\\\\\",\\\\\\"counterparty\\\\\\":{\\\\\\"client_id\\\\\\":\\\\\\"07-tendermint-3012\\\\\\",\\\\\\"connection_id\\\\\\":\\\\\\"connection-2503\\\\\\"},\\\\\\"id\\\\\\":\\\\\\"connection-2\\\\\\",\\\\\\"state\\\\\\":3,\\\\\\"transferChannel\\\\\\":{\\\\\\"channelId\\\\\\":\\\\\\"channel-2\\\\\\",\\\\\\"counterPartyChannelId\\\\\\":\\\\\\"channel-6994\\\\\\",\\\\\\"counterPartyPortId\\\\\\":\\\\\\"transfer\\\\\\",\\\\\\"ordering\\\\\\":0,\\\\\\"portId\\\\\\":\\\\\\"transfer\\\\\\",\\\\\\"state\\\\\\":3,\\\\\\"version\\\\\\":\\\\\\"ics20-1\\\\\\"}}\\",\\"slots\\":[]}"]}', + { + client_id: '07-tendermint-10', + counterparty: { + client_id: '07-tendermint-3012', + connection_id: 'connection-2503', + }, + id: 'connection-2', + state: 3, + transferChannel: { + channelId: 'channel-2', + counterPartyChannelId: 'channel-6994', + counterPartyPortId: 'transfer', + ordering: 0, + portId: 'transfer', + state: 3, + version: 'ics20-1', + }, + }, ], [ 'published.agoricNames.chainConnection.celestia_secret-4', - '{"blockHeight":"0","values":["{\\"body\\":\\"{\\\\\\"client_id\\\\\\":\\\\\\"07-tendermint-52\\\\\\",\\\\\\"counterparty\\\\\\":{\\\\\\"client_id\\\\\\":\\\\\\"07-tendermint-174\\\\\\",\\\\\\"connection_id\\\\\\":\\\\\\"connection-131\\\\\\"},\\\\\\"id\\\\\\":\\\\\\"connection-15\\\\\\",\\\\\\"state\\\\\\":3,\\\\\\"transferChannel\\\\\\":{\\\\\\"channelId\\\\\\":\\\\\\"channel-14\\\\\\",\\\\\\"counterPartyChannelId\\\\\\":\\\\\\"channel-91\\\\\\",\\\\\\"counterPartyPortId\\\\\\":\\\\\\"transfer\\\\\\",\\\\\\"ordering\\\\\\":0,\\\\\\"portId\\\\\\":\\\\\\"transfer\\\\\\",\\\\\\"state\\\\\\":3,\\\\\\"version\\\\\\":\\\\\\"ics20-1\\\\\\"}}\\",\\"slots\\":[]}"]}', + { + client_id: '07-tendermint-52', + counterparty: { + client_id: '07-tendermint-174', + connection_id: 'connection-131', + }, + id: 'connection-15', + state: 3, + transferChannel: { + channelId: 'channel-14', + counterPartyChannelId: 'channel-91', + counterPartyPortId: 'transfer', + ordering: 0, + portId: 'transfer', + state: 3, + version: 'ics20-1', + }, + }, ], [ 'published.agoricNames.chainConnection.celestia_stargaze-1', - '{"blockHeight":"0","values":["{\\"body\\":\\"{\\\\\\"client_id\\\\\\":\\\\\\"07-tendermint-86\\\\\\",\\\\\\"counterparty\\\\\\":{\\\\\\"client_id\\\\\\":\\\\\\"07-tendermint-359\\\\\\",\\\\\\"connection_id\\\\\\":\\\\\\"connection-296\\\\\\"},\\\\\\"id\\\\\\":\\\\\\"connection-56\\\\\\",\\\\\\"state\\\\\\":3,\\\\\\"transferChannel\\\\\\":{\\\\\\"channelId\\\\\\":\\\\\\"channel-33\\\\\\",\\\\\\"counterPartyChannelId\\\\\\":\\\\\\"channel-291\\\\\\",\\\\\\"counterPartyPortId\\\\\\":\\\\\\"transfer\\\\\\",\\\\\\"ordering\\\\\\":0,\\\\\\"portId\\\\\\":\\\\\\"transfer\\\\\\",\\\\\\"state\\\\\\":3,\\\\\\"version\\\\\\":\\\\\\"ics20-1\\\\\\"}}\\",\\"slots\\":[]}"]}', + { + client_id: '07-tendermint-86', + counterparty: { + client_id: '07-tendermint-359', + connection_id: 'connection-296', + }, + id: 'connection-56', + state: 3, + transferChannel: { + channelId: 'channel-33', + counterPartyChannelId: 'channel-291', + counterPartyPortId: 'transfer', + ordering: 0, + portId: 'transfer', + state: 3, + version: 'ics20-1', + }, + }, ], [ 'published.agoricNames.chainConnection.celestia_stride-1', - '{"blockHeight":"0","values":["{\\"body\\":\\"{\\\\\\"client_id\\\\\\":\\\\\\"07-tendermint-0\\\\\\",\\\\\\"counterparty\\\\\\":{\\\\\\"client_id\\\\\\":\\\\\\"07-tendermint-137\\\\\\",\\\\\\"connection_id\\\\\\":\\\\\\"connection-125\\\\\\"},\\\\\\"id\\\\\\":\\\\\\"connection-4\\\\\\",\\\\\\"state\\\\\\":3,\\\\\\"transferChannel\\\\\\":{\\\\\\"channelId\\\\\\":\\\\\\"channel-4\\\\\\",\\\\\\"counterPartyChannelId\\\\\\":\\\\\\"channel-162\\\\\\",\\\\\\"counterPartyPortId\\\\\\":\\\\\\"transfer\\\\\\",\\\\\\"ordering\\\\\\":0,\\\\\\"portId\\\\\\":\\\\\\"transfer\\\\\\",\\\\\\"state\\\\\\":3,\\\\\\"version\\\\\\":\\\\\\"ics20-1\\\\\\"}}\\",\\"slots\\":[]}"]}', + { + client_id: '07-tendermint-0', + counterparty: { + client_id: '07-tendermint-137', + connection_id: 'connection-125', + }, + id: 'connection-4', + state: 3, + transferChannel: { + channelId: 'channel-4', + counterPartyChannelId: 'channel-162', + counterPartyPortId: 'transfer', + ordering: 0, + portId: 'transfer', + state: 3, + version: 'ics20-1', + }, + }, ], [ 'published.agoricNames.chainConnection.cosmoshub-4_juno-1', - '{"blockHeight":"0","values":["{\\"body\\":\\"{\\\\\\"client_id\\\\\\":\\\\\\"07-tendermint-439\\\\\\",\\\\\\"counterparty\\\\\\":{\\\\\\"client_id\\\\\\":\\\\\\"07-tendermint-3\\\\\\",\\\\\\"connection_id\\\\\\":\\\\\\"connection-2\\\\\\"},\\\\\\"id\\\\\\":\\\\\\"connection-372\\\\\\",\\\\\\"state\\\\\\":3,\\\\\\"transferChannel\\\\\\":{\\\\\\"channelId\\\\\\":\\\\\\"channel-207\\\\\\",\\\\\\"counterPartyChannelId\\\\\\":\\\\\\"channel-1\\\\\\",\\\\\\"counterPartyPortId\\\\\\":\\\\\\"transfer\\\\\\",\\\\\\"ordering\\\\\\":0,\\\\\\"portId\\\\\\":\\\\\\"transfer\\\\\\",\\\\\\"state\\\\\\":3,\\\\\\"version\\\\\\":\\\\\\"ics20-1\\\\\\"}}\\",\\"slots\\":[]}"]}', + { + client_id: '07-tendermint-439', + counterparty: { + client_id: '07-tendermint-3', + connection_id: 'connection-2', + }, + id: 'connection-372', + state: 3, + transferChannel: { + channelId: 'channel-207', + counterPartyChannelId: 'channel-1', + counterPartyPortId: 'transfer', + ordering: 0, + portId: 'transfer', + state: 3, + version: 'ics20-1', + }, + }, ], [ 'published.agoricNames.chainConnection.cosmoshub-4_neutron-1', - '{"blockHeight":"0","values":["{\\"body\\":\\"{\\\\\\"client_id\\\\\\":\\\\\\"07-tendermint-1119\\\\\\",\\\\\\"counterparty\\\\\\":{\\\\\\"client_id\\\\\\":\\\\\\"07-tendermint-0\\\\\\",\\\\\\"connection_id\\\\\\":\\\\\\"connection-0\\\\\\"},\\\\\\"id\\\\\\":\\\\\\"connection-809\\\\\\",\\\\\\"state\\\\\\":3,\\\\\\"transferChannel\\\\\\":{\\\\\\"channelId\\\\\\":\\\\\\"channel-569\\\\\\",\\\\\\"counterPartyChannelId\\\\\\":\\\\\\"channel-1\\\\\\",\\\\\\"counterPartyPortId\\\\\\":\\\\\\"transfer\\\\\\",\\\\\\"ordering\\\\\\":0,\\\\\\"portId\\\\\\":\\\\\\"transfer\\\\\\",\\\\\\"state\\\\\\":3,\\\\\\"version\\\\\\":\\\\\\"ics20-1\\\\\\"}}\\",\\"slots\\":[]}"]}', + { + client_id: '07-tendermint-1119', + counterparty: { + client_id: '07-tendermint-0', + connection_id: 'connection-0', + }, + id: 'connection-809', + state: 3, + transferChannel: { + channelId: 'channel-569', + counterPartyChannelId: 'channel-1', + counterPartyPortId: 'transfer', + ordering: 0, + portId: 'transfer', + state: 3, + version: 'ics20-1', + }, + }, ], [ 'published.agoricNames.chainConnection.cosmoshub-4_noble-1', - '{"blockHeight":"0","values":["{\\"body\\":\\"{\\\\\\"client_id\\\\\\":\\\\\\"07-tendermint-1116\\\\\\",\\\\\\"counterparty\\\\\\":{\\\\\\"client_id\\\\\\":\\\\\\"07-tendermint-4\\\\\\",\\\\\\"connection_id\\\\\\":\\\\\\"connection-12\\\\\\"},\\\\\\"id\\\\\\":\\\\\\"connection-790\\\\\\",\\\\\\"state\\\\\\":3,\\\\\\"transferChannel\\\\\\":{\\\\\\"channelId\\\\\\":\\\\\\"channel-536\\\\\\",\\\\\\"counterPartyChannelId\\\\\\":\\\\\\"channel-4\\\\\\",\\\\\\"counterPartyPortId\\\\\\":\\\\\\"transfer\\\\\\",\\\\\\"ordering\\\\\\":0,\\\\\\"portId\\\\\\":\\\\\\"transfer\\\\\\",\\\\\\"state\\\\\\":3,\\\\\\"version\\\\\\":\\\\\\"ics20-1\\\\\\"}}\\",\\"slots\\":[]}"]}', + { + client_id: '07-tendermint-1116', + counterparty: { + client_id: '07-tendermint-4', + connection_id: 'connection-12', + }, + id: 'connection-790', + state: 3, + transferChannel: { + channelId: 'channel-536', + counterPartyChannelId: 'channel-4', + counterPartyPortId: 'transfer', + ordering: 0, + portId: 'transfer', + state: 3, + version: 'ics20-1', + }, + }, ], [ 'published.agoricNames.chainConnection.cosmoshub-4_omniflixhub-1', - '{"blockHeight":"0","values":["{\\"body\\":\\"{\\\\\\"client_id\\\\\\":\\\\\\"07-tendermint-656\\\\\\",\\\\\\"counterparty\\\\\\":{\\\\\\"client_id\\\\\\":\\\\\\"07-tendermint-23\\\\\\",\\\\\\"connection_id\\\\\\":\\\\\\"connection-19\\\\\\"},\\\\\\"id\\\\\\":\\\\\\"connection-501\\\\\\",\\\\\\"state\\\\\\":3,\\\\\\"transferChannel\\\\\\":{\\\\\\"channelId\\\\\\":\\\\\\"channel-306\\\\\\",\\\\\\"counterPartyChannelId\\\\\\":\\\\\\"channel-12\\\\\\",\\\\\\"counterPartyPortId\\\\\\":\\\\\\"transfer\\\\\\",\\\\\\"ordering\\\\\\":0,\\\\\\"portId\\\\\\":\\\\\\"transfer\\\\\\",\\\\\\"state\\\\\\":3,\\\\\\"version\\\\\\":\\\\\\"ics20-1\\\\\\"}}\\",\\"slots\\":[]}"]}', + { + client_id: '07-tendermint-656', + counterparty: { + client_id: '07-tendermint-23', + connection_id: 'connection-19', + }, + id: 'connection-501', + state: 3, + transferChannel: { + channelId: 'channel-306', + counterPartyChannelId: 'channel-12', + counterPartyPortId: 'transfer', + ordering: 0, + portId: 'transfer', + state: 3, + version: 'ics20-1', + }, + }, ], [ 'published.agoricNames.chainConnection.cosmoshub-4_osmosis-1', - '{"blockHeight":"0","values":["{\\"body\\":\\"{\\\\\\"client_id\\\\\\":\\\\\\"07-tendermint-259\\\\\\",\\\\\\"counterparty\\\\\\":{\\\\\\"client_id\\\\\\":\\\\\\"07-tendermint-1\\\\\\",\\\\\\"connection_id\\\\\\":\\\\\\"connection-1\\\\\\"},\\\\\\"id\\\\\\":\\\\\\"connection-257\\\\\\",\\\\\\"state\\\\\\":3,\\\\\\"transferChannel\\\\\\":{\\\\\\"channelId\\\\\\":\\\\\\"channel-141\\\\\\",\\\\\\"counterPartyChannelId\\\\\\":\\\\\\"channel-0\\\\\\",\\\\\\"counterPartyPortId\\\\\\":\\\\\\"transfer\\\\\\",\\\\\\"ordering\\\\\\":0,\\\\\\"portId\\\\\\":\\\\\\"transfer\\\\\\",\\\\\\"state\\\\\\":3,\\\\\\"version\\\\\\":\\\\\\"ics20-1\\\\\\"}}\\",\\"slots\\":[]}"]}', + { + client_id: '07-tendermint-259', + counterparty: { + client_id: '07-tendermint-1', + connection_id: 'connection-1', + }, + id: 'connection-257', + state: 3, + transferChannel: { + channelId: 'channel-141', + counterPartyChannelId: 'channel-0', + counterPartyPortId: 'transfer', + ordering: 0, + portId: 'transfer', + state: 3, + version: 'ics20-1', + }, + }, ], [ 'published.agoricNames.chainConnection.cosmoshub-4_secret-4', - '{"blockHeight":"0","values":["{\\"body\\":\\"{\\\\\\"client_id\\\\\\":\\\\\\"07-tendermint-492\\\\\\",\\\\\\"counterparty\\\\\\":{\\\\\\"client_id\\\\\\":\\\\\\"07-tendermint-1\\\\\\",\\\\\\"connection_id\\\\\\":\\\\\\"connection-0\\\\\\"},\\\\\\"id\\\\\\":\\\\\\"connection-401\\\\\\",\\\\\\"state\\\\\\":3,\\\\\\"transferChannel\\\\\\":{\\\\\\"channelId\\\\\\":\\\\\\"channel-235\\\\\\",\\\\\\"counterPartyChannelId\\\\\\":\\\\\\"channel-0\\\\\\",\\\\\\"counterPartyPortId\\\\\\":\\\\\\"transfer\\\\\\",\\\\\\"ordering\\\\\\":0,\\\\\\"portId\\\\\\":\\\\\\"transfer\\\\\\",\\\\\\"state\\\\\\":3,\\\\\\"version\\\\\\":\\\\\\"ics20-1\\\\\\"}}\\",\\"slots\\":[]}"]}', + { + client_id: '07-tendermint-492', + counterparty: { + client_id: '07-tendermint-1', + connection_id: 'connection-0', + }, + id: 'connection-401', + state: 3, + transferChannel: { + channelId: 'channel-235', + counterPartyChannelId: 'channel-0', + counterPartyPortId: 'transfer', + ordering: 0, + portId: 'transfer', + state: 3, + version: 'ics20-1', + }, + }, ], [ 'published.agoricNames.chainConnection.cosmoshub-4_stargaze-1', - '{"blockHeight":"0","values":["{\\"body\\":\\"{\\\\\\"client_id\\\\\\":\\\\\\"07-tendermint-1188\\\\\\",\\\\\\"counterparty\\\\\\":{\\\\\\"client_id\\\\\\":\\\\\\"07-tendermint-320\\\\\\",\\\\\\"connection_id\\\\\\":\\\\\\"connection-256\\\\\\"},\\\\\\"id\\\\\\":\\\\\\"connection-918\\\\\\",\\\\\\"state\\\\\\":3,\\\\\\"transferChannel\\\\\\":{\\\\\\"channelId\\\\\\":\\\\\\"channel-730\\\\\\",\\\\\\"counterPartyChannelId\\\\\\":\\\\\\"channel-239\\\\\\",\\\\\\"counterPartyPortId\\\\\\":\\\\\\"transfer\\\\\\",\\\\\\"ordering\\\\\\":0,\\\\\\"portId\\\\\\":\\\\\\"transfer\\\\\\",\\\\\\"state\\\\\\":3,\\\\\\"version\\\\\\":\\\\\\"ics20-1\\\\\\"}}\\",\\"slots\\":[]}"]}', + { + client_id: '07-tendermint-1188', + counterparty: { + client_id: '07-tendermint-320', + connection_id: 'connection-256', + }, + id: 'connection-918', + state: 3, + transferChannel: { + channelId: 'channel-730', + counterPartyChannelId: 'channel-239', + counterPartyPortId: 'transfer', + ordering: 0, + portId: 'transfer', + state: 3, + version: 'ics20-1', + }, + }, ], [ 'published.agoricNames.chainConnection.cosmoshub-4_stride-1', - '{"blockHeight":"0","values":["{\\"body\\":\\"{\\\\\\"client_id\\\\\\":\\\\\\"07-tendermint-913\\\\\\",\\\\\\"counterparty\\\\\\":{\\\\\\"client_id\\\\\\":\\\\\\"07-tendermint-0\\\\\\",\\\\\\"connection_id\\\\\\":\\\\\\"connection-0\\\\\\"},\\\\\\"id\\\\\\":\\\\\\"connection-635\\\\\\",\\\\\\"state\\\\\\":3,\\\\\\"transferChannel\\\\\\":{\\\\\\"channelId\\\\\\":\\\\\\"channel-391\\\\\\",\\\\\\"counterPartyChannelId\\\\\\":\\\\\\"channel-0\\\\\\",\\\\\\"counterPartyPortId\\\\\\":\\\\\\"transfer\\\\\\",\\\\\\"ordering\\\\\\":0,\\\\\\"portId\\\\\\":\\\\\\"transfer\\\\\\",\\\\\\"state\\\\\\":3,\\\\\\"version\\\\\\":\\\\\\"ics20-1\\\\\\"}}\\",\\"slots\\":[]}"]}', + { + client_id: '07-tendermint-913', + counterparty: { + client_id: '07-tendermint-0', + connection_id: 'connection-0', + }, + id: 'connection-635', + state: 3, + transferChannel: { + channelId: 'channel-391', + counterPartyChannelId: 'channel-0', + counterPartyPortId: 'transfer', + ordering: 0, + portId: 'transfer', + state: 3, + version: 'ics20-1', + }, + }, ], [ 'published.agoricNames.chainConnection.dydx-mainnet-1_neutron-1', - '{"blockHeight":"0","values":["{\\"body\\":\\"{\\\\\\"client_id\\\\\\":\\\\\\"07-tendermint-11\\\\\\",\\\\\\"counterparty\\\\\\":{\\\\\\"client_id\\\\\\":\\\\\\"07-tendermint-72\\\\\\",\\\\\\"connection_id\\\\\\":\\\\\\"connection-51\\\\\\"},\\\\\\"id\\\\\\":\\\\\\"connection-17\\\\\\",\\\\\\"state\\\\\\":3,\\\\\\"transferChannel\\\\\\":{\\\\\\"channelId\\\\\\":\\\\\\"channel-11\\\\\\",\\\\\\"counterPartyChannelId\\\\\\":\\\\\\"channel-48\\\\\\",\\\\\\"counterPartyPortId\\\\\\":\\\\\\"transfer\\\\\\",\\\\\\"ordering\\\\\\":0,\\\\\\"portId\\\\\\":\\\\\\"transfer\\\\\\",\\\\\\"state\\\\\\":3,\\\\\\"version\\\\\\":\\\\\\"ics20-1\\\\\\"}}\\",\\"slots\\":[]}"]}', + { + client_id: '07-tendermint-11', + counterparty: { + client_id: '07-tendermint-72', + connection_id: 'connection-51', + }, + id: 'connection-17', + state: 3, + transferChannel: { + channelId: 'channel-11', + counterPartyChannelId: 'channel-48', + counterPartyPortId: 'transfer', + ordering: 0, + portId: 'transfer', + state: 3, + version: 'ics20-1', + }, + }, ], [ 'published.agoricNames.chainConnection.dydx-mainnet-1_noble-1', - '{"blockHeight":"0","values":["{\\"body\\":\\"{\\\\\\"client_id\\\\\\":\\\\\\"07-tendermint-0\\\\\\",\\\\\\"counterparty\\\\\\":{\\\\\\"client_id\\\\\\":\\\\\\"07-tendermint-59\\\\\\",\\\\\\"connection_id\\\\\\":\\\\\\"connection-57\\\\\\"},\\\\\\"id\\\\\\":\\\\\\"connection-0\\\\\\",\\\\\\"state\\\\\\":3,\\\\\\"transferChannel\\\\\\":{\\\\\\"channelId\\\\\\":\\\\\\"channel-0\\\\\\",\\\\\\"counterPartyChannelId\\\\\\":\\\\\\"channel-33\\\\\\",\\\\\\"counterPartyPortId\\\\\\":\\\\\\"transfer\\\\\\",\\\\\\"ordering\\\\\\":0,\\\\\\"portId\\\\\\":\\\\\\"transfer\\\\\\",\\\\\\"state\\\\\\":3,\\\\\\"version\\\\\\":\\\\\\"ics20-1\\\\\\"}}\\",\\"slots\\":[]}"]}', + { + client_id: '07-tendermint-0', + counterparty: { + client_id: '07-tendermint-59', + connection_id: 'connection-57', + }, + id: 'connection-0', + state: 3, + transferChannel: { + channelId: 'channel-0', + counterPartyChannelId: 'channel-33', + counterPartyPortId: 'transfer', + ordering: 0, + portId: 'transfer', + state: 3, + version: 'ics20-1', + }, + }, ], [ 'published.agoricNames.chainConnection.dydx-mainnet-1_osmosis-1', - '{"blockHeight":"0","values":["{\\"body\\":\\"{\\\\\\"client_id\\\\\\":\\\\\\"07-tendermint-3\\\\\\",\\\\\\"counterparty\\\\\\":{\\\\\\"client_id\\\\\\":\\\\\\"07-tendermint-3009\\\\\\",\\\\\\"connection_id\\\\\\":\\\\\\"connection-2500\\\\\\"},\\\\\\"id\\\\\\":\\\\\\"connection-7\\\\\\",\\\\\\"state\\\\\\":3,\\\\\\"transferChannel\\\\\\":{\\\\\\"channelId\\\\\\":\\\\\\"channel-3\\\\\\",\\\\\\"counterPartyChannelId\\\\\\":\\\\\\"channel-6787\\\\\\",\\\\\\"counterPartyPortId\\\\\\":\\\\\\"transfer\\\\\\",\\\\\\"ordering\\\\\\":0,\\\\\\"portId\\\\\\":\\\\\\"transfer\\\\\\",\\\\\\"state\\\\\\":3,\\\\\\"version\\\\\\":\\\\\\"ics20-1\\\\\\"}}\\",\\"slots\\":[]}"]}', + { + client_id: '07-tendermint-3', + counterparty: { + client_id: '07-tendermint-3009', + connection_id: 'connection-2500', + }, + id: 'connection-7', + state: 3, + transferChannel: { + channelId: 'channel-3', + counterPartyChannelId: 'channel-6787', + counterPartyPortId: 'transfer', + ordering: 0, + portId: 'transfer', + state: 3, + version: 'ics20-1', + }, + }, ], [ 'published.agoricNames.chainConnection.dydx-mainnet-1_stride-1', - '{"blockHeight":"0","values":["{\\"body\\":\\"{\\\\\\"client_id\\\\\\":\\\\\\"07-tendermint-1\\\\\\",\\\\\\"counterparty\\\\\\":{\\\\\\"client_id\\\\\\":\\\\\\"07-tendermint-133\\\\\\",\\\\\\"connection_id\\\\\\":\\\\\\"connection-123\\\\\\"},\\\\\\"id\\\\\\":\\\\\\"connection-1\\\\\\",\\\\\\"state\\\\\\":3,\\\\\\"transferChannel\\\\\\":{\\\\\\"channelId\\\\\\":\\\\\\"channel-1\\\\\\",\\\\\\"counterPartyChannelId\\\\\\":\\\\\\"channel-160\\\\\\",\\\\\\"counterPartyPortId\\\\\\":\\\\\\"transfer\\\\\\",\\\\\\"ordering\\\\\\":0,\\\\\\"portId\\\\\\":\\\\\\"transfer\\\\\\",\\\\\\"state\\\\\\":3,\\\\\\"version\\\\\\":\\\\\\"ics20-1\\\\\\"}}\\",\\"slots\\":[]}"]}', + { + client_id: '07-tendermint-1', + counterparty: { + client_id: '07-tendermint-133', + connection_id: 'connection-123', + }, + id: 'connection-1', + state: 3, + transferChannel: { + channelId: 'channel-1', + counterPartyChannelId: 'channel-160', + counterPartyPortId: 'transfer', + ordering: 0, + portId: 'transfer', + state: 3, + version: 'ics20-1', + }, + }, ], [ 'published.agoricNames.chainConnection.dydx-mainnet-1_umee-1', - '{"blockHeight":"0","values":["{\\"body\\":\\"{\\\\\\"client_id\\\\\\":\\\\\\"07-tendermint-8\\\\\\",\\\\\\"counterparty\\\\\\":{\\\\\\"client_id\\\\\\":\\\\\\"07-tendermint-244\\\\\\",\\\\\\"connection_id\\\\\\":\\\\\\"connection-208\\\\\\"},\\\\\\"id\\\\\\":\\\\\\"connection-13\\\\\\",\\\\\\"state\\\\\\":3,\\\\\\"transferChannel\\\\\\":{\\\\\\"channelId\\\\\\":\\\\\\"channel-8\\\\\\",\\\\\\"counterPartyChannelId\\\\\\":\\\\\\"channel-118\\\\\\",\\\\\\"counterPartyPortId\\\\\\":\\\\\\"transfer\\\\\\",\\\\\\"ordering\\\\\\":0,\\\\\\"portId\\\\\\":\\\\\\"transfer\\\\\\",\\\\\\"state\\\\\\":3,\\\\\\"version\\\\\\":\\\\\\"ics20-1\\\\\\"}}\\",\\"slots\\":[]}"]}', + { + client_id: '07-tendermint-8', + counterparty: { + client_id: '07-tendermint-244', + connection_id: 'connection-208', + }, + id: 'connection-13', + state: 3, + transferChannel: { + channelId: 'channel-8', + counterPartyChannelId: 'channel-118', + counterPartyPortId: 'transfer', + ordering: 0, + portId: 'transfer', + state: 3, + version: 'ics20-1', + }, + }, ], [ 'published.agoricNames.chainConnection.juno-1_neutron-1', - '{"blockHeight":"0","values":["{\\"body\\":\\"{\\\\\\"client_id\\\\\\":\\\\\\"07-tendermint-557\\\\\\",\\\\\\"counterparty\\\\\\":{\\\\\\"client_id\\\\\\":\\\\\\"07-tendermint-97\\\\\\",\\\\\\"connection_id\\\\\\":\\\\\\"connection-71\\\\\\"},\\\\\\"id\\\\\\":\\\\\\"connection-524\\\\\\",\\\\\\"state\\\\\\":3,\\\\\\"transferChannel\\\\\\":{\\\\\\"channelId\\\\\\":\\\\\\"channel-548\\\\\\",\\\\\\"counterPartyChannelId\\\\\\":\\\\\\"channel-4328\\\\\\",\\\\\\"counterPartyPortId\\\\\\":\\\\\\"transfer\\\\\\",\\\\\\"ordering\\\\\\":0,\\\\\\"portId\\\\\\":\\\\\\"transfer\\\\\\",\\\\\\"state\\\\\\":3,\\\\\\"version\\\\\\":\\\\\\"ics20-1\\\\\\"}}\\",\\"slots\\":[]}"]}', + { + client_id: '07-tendermint-557', + counterparty: { + client_id: '07-tendermint-97', + connection_id: 'connection-71', + }, + id: 'connection-524', + state: 3, + transferChannel: { + channelId: 'channel-548', + counterPartyChannelId: 'channel-4328', + counterPartyPortId: 'transfer', + ordering: 0, + portId: 'transfer', + state: 3, + version: 'ics20-1', + }, + }, ], [ 'published.agoricNames.chainConnection.juno-1_noble-1', - '{"blockHeight":"0","values":["{\\"body\\":\\"{\\\\\\"client_id\\\\\\":\\\\\\"07-tendermint-334\\\\\\",\\\\\\"counterparty\\\\\\":{\\\\\\"client_id\\\\\\":\\\\\\"07-tendermint-3\\\\\\",\\\\\\"connection_id\\\\\\":\\\\\\"connection-8\\\\\\"},\\\\\\"id\\\\\\":\\\\\\"connection-322\\\\\\",\\\\\\"state\\\\\\":3,\\\\\\"transferChannel\\\\\\":{\\\\\\"channelId\\\\\\":\\\\\\"channel-224\\\\\\",\\\\\\"counterPartyChannelId\\\\\\":\\\\\\"channel-3\\\\\\",\\\\\\"counterPartyPortId\\\\\\":\\\\\\"transfer\\\\\\",\\\\\\"ordering\\\\\\":0,\\\\\\"portId\\\\\\":\\\\\\"transfer\\\\\\",\\\\\\"state\\\\\\":3,\\\\\\"version\\\\\\":\\\\\\"ics20-1\\\\\\"}}\\",\\"slots\\":[]}"]}', + { + client_id: '07-tendermint-334', + counterparty: { + client_id: '07-tendermint-3', + connection_id: 'connection-8', + }, + id: 'connection-322', + state: 3, + transferChannel: { + channelId: 'channel-224', + counterPartyChannelId: 'channel-3', + counterPartyPortId: 'transfer', + ordering: 0, + portId: 'transfer', + state: 3, + version: 'ics20-1', + }, + }, ], [ 'published.agoricNames.chainConnection.juno-1_osmosis-1', - '{"blockHeight":"0","values":["{\\"body\\":\\"{\\\\\\"client_id\\\\\\":\\\\\\"07-tendermint-0\\\\\\",\\\\\\"counterparty\\\\\\":{\\\\\\"client_id\\\\\\":\\\\\\"07-tendermint-1457\\\\\\",\\\\\\"connection_id\\\\\\":\\\\\\"connection-1142\\\\\\"},\\\\\\"id\\\\\\":\\\\\\"connection-0\\\\\\",\\\\\\"state\\\\\\":3,\\\\\\"transferChannel\\\\\\":{\\\\\\"channelId\\\\\\":\\\\\\"channel-0\\\\\\",\\\\\\"counterPartyChannelId\\\\\\":\\\\\\"channel-42\\\\\\",\\\\\\"counterPartyPortId\\\\\\":\\\\\\"transfer\\\\\\",\\\\\\"ordering\\\\\\":0,\\\\\\"portId\\\\\\":\\\\\\"transfer\\\\\\",\\\\\\"state\\\\\\":3,\\\\\\"version\\\\\\":\\\\\\"ics20-1\\\\\\"}}\\",\\"slots\\":[]}"]}', + { + client_id: '07-tendermint-0', + counterparty: { + client_id: '07-tendermint-1457', + connection_id: 'connection-1142', + }, + id: 'connection-0', + state: 3, + transferChannel: { + channelId: 'channel-0', + counterPartyChannelId: 'channel-42', + counterPartyPortId: 'transfer', + ordering: 0, + portId: 'transfer', + state: 3, + version: 'ics20-1', + }, + }, ], [ 'published.agoricNames.chainConnection.juno-1_secret-4', - '{"blockHeight":"0","values":["{\\"body\\":\\"{\\\\\\"client_id\\\\\\":\\\\\\"07-tendermint-108\\\\\\",\\\\\\"counterparty\\\\\\":{\\\\\\"client_id\\\\\\":\\\\\\"07-tendermint-23\\\\\\",\\\\\\"connection_id\\\\\\":\\\\\\"connection-9\\\\\\"},\\\\\\"id\\\\\\":\\\\\\"connection-68\\\\\\",\\\\\\"state\\\\\\":3,\\\\\\"transferChannel\\\\\\":{\\\\\\"channelId\\\\\\":\\\\\\"channel-48\\\\\\",\\\\\\"counterPartyChannelId\\\\\\":\\\\\\"channel-8\\\\\\",\\\\\\"counterPartyPortId\\\\\\":\\\\\\"transfer\\\\\\",\\\\\\"ordering\\\\\\":0,\\\\\\"portId\\\\\\":\\\\\\"transfer\\\\\\",\\\\\\"state\\\\\\":3,\\\\\\"version\\\\\\":\\\\\\"ics20-1\\\\\\"}}\\",\\"slots\\":[]}"]}', + { + client_id: '07-tendermint-108', + counterparty: { + client_id: '07-tendermint-23', + connection_id: 'connection-9', + }, + id: 'connection-68', + state: 3, + transferChannel: { + channelId: 'channel-48', + counterPartyChannelId: 'channel-8', + counterPartyPortId: 'transfer', + ordering: 0, + portId: 'transfer', + state: 3, + version: 'ics20-1', + }, + }, ], [ 'published.agoricNames.chainConnection.juno-1_stargaze-1', - '{"blockHeight":"0","values":["{\\"body\\":\\"{\\\\\\"client_id\\\\\\":\\\\\\"07-tendermint-44\\\\\\",\\\\\\"counterparty\\\\\\":{\\\\\\"client_id\\\\\\":\\\\\\"07-tendermint-13\\\\\\",\\\\\\"connection_id\\\\\\":\\\\\\"connection-11\\\\\\"},\\\\\\"id\\\\\\":\\\\\\"connection-30\\\\\\",\\\\\\"state\\\\\\":3,\\\\\\"transferChannel\\\\\\":{\\\\\\"channelId\\\\\\":\\\\\\"channel-20\\\\\\",\\\\\\"counterPartyChannelId\\\\\\":\\\\\\"channel-5\\\\\\",\\\\\\"counterPartyPortId\\\\\\":\\\\\\"transfer\\\\\\",\\\\\\"ordering\\\\\\":0,\\\\\\"portId\\\\\\":\\\\\\"transfer\\\\\\",\\\\\\"state\\\\\\":3,\\\\\\"version\\\\\\":\\\\\\"ics20-1\\\\\\"}}\\",\\"slots\\":[]}"]}', + { + client_id: '07-tendermint-44', + counterparty: { + client_id: '07-tendermint-13', + connection_id: 'connection-11', + }, + id: 'connection-30', + state: 3, + transferChannel: { + channelId: 'channel-20', + counterPartyChannelId: 'channel-5', + counterPartyPortId: 'transfer', + ordering: 0, + portId: 'transfer', + state: 3, + version: 'ics20-1', + }, + }, ], [ 'published.agoricNames.chainConnection.juno-1_stride-1', - '{"blockHeight":"0","values":["{\\"body\\":\\"{\\\\\\"client_id\\\\\\":\\\\\\"07-tendermint-263\\\\\\",\\\\\\"counterparty\\\\\\":{\\\\\\"client_id\\\\\\":\\\\\\"07-tendermint-31\\\\\\",\\\\\\"connection_id\\\\\\":\\\\\\"connection-19\\\\\\"},\\\\\\"id\\\\\\":\\\\\\"connection-205\\\\\\",\\\\\\"state\\\\\\":3,\\\\\\"transferChannel\\\\\\":{\\\\\\"channelId\\\\\\":\\\\\\"channel-139\\\\\\",\\\\\\"counterPartyChannelId\\\\\\":\\\\\\"channel-24\\\\\\",\\\\\\"counterPartyPortId\\\\\\":\\\\\\"transfer\\\\\\",\\\\\\"ordering\\\\\\":0,\\\\\\"portId\\\\\\":\\\\\\"transfer\\\\\\",\\\\\\"state\\\\\\":3,\\\\\\"version\\\\\\":\\\\\\"ics20-1\\\\\\"}}\\",\\"slots\\":[]}"]}', + { + client_id: '07-tendermint-263', + counterparty: { + client_id: '07-tendermint-31', + connection_id: 'connection-19', + }, + id: 'connection-205', + state: 3, + transferChannel: { + channelId: 'channel-139', + counterPartyChannelId: 'channel-24', + counterPartyPortId: 'transfer', + ordering: 0, + portId: 'transfer', + state: 3, + version: 'ics20-1', + }, + }, ], [ 'published.agoricNames.chainConnection.neutron-1_noble-1', - '{"blockHeight":"0","values":["{\\"body\\":\\"{\\\\\\"client_id\\\\\\":\\\\\\"07-tendermint-40\\\\\\",\\\\\\"counterparty\\\\\\":{\\\\\\"client_id\\\\\\":\\\\\\"07-tendermint-25\\\\\\",\\\\\\"connection_id\\\\\\":\\\\\\"connection-34\\\\\\"},\\\\\\"id\\\\\\":\\\\\\"connection-31\\\\\\",\\\\\\"state\\\\\\":3,\\\\\\"transferChannel\\\\\\":{\\\\\\"channelId\\\\\\":\\\\\\"channel-30\\\\\\",\\\\\\"counterPartyChannelId\\\\\\":\\\\\\"channel-18\\\\\\",\\\\\\"counterPartyPortId\\\\\\":\\\\\\"transfer\\\\\\",\\\\\\"ordering\\\\\\":0,\\\\\\"portId\\\\\\":\\\\\\"transfer\\\\\\",\\\\\\"state\\\\\\":3,\\\\\\"version\\\\\\":\\\\\\"ics20-1\\\\\\"}}\\",\\"slots\\":[]}"]}', + { + client_id: '07-tendermint-40', + counterparty: { + client_id: '07-tendermint-25', + connection_id: 'connection-34', + }, + id: 'connection-31', + state: 3, + transferChannel: { + channelId: 'channel-30', + counterPartyChannelId: 'channel-18', + counterPartyPortId: 'transfer', + ordering: 0, + portId: 'transfer', + state: 3, + version: 'ics20-1', + }, + }, ], [ 'published.agoricNames.chainConnection.neutron-1_osmosis-1', - '{"blockHeight":"0","values":["{\\"body\\":\\"{\\\\\\"client_id\\\\\\":\\\\\\"07-tendermint-19\\\\\\",\\\\\\"counterparty\\\\\\":{\\\\\\"client_id\\\\\\":\\\\\\"07-tendermint-2823\\\\\\",\\\\\\"connection_id\\\\\\":\\\\\\"connection-2338\\\\\\"},\\\\\\"id\\\\\\":\\\\\\"connection-18\\\\\\",\\\\\\"state\\\\\\":3,\\\\\\"transferChannel\\\\\\":{\\\\\\"channelId\\\\\\":\\\\\\"channel-10\\\\\\",\\\\\\"counterPartyChannelId\\\\\\":\\\\\\"channel-874\\\\\\",\\\\\\"counterPartyPortId\\\\\\":\\\\\\"transfer\\\\\\",\\\\\\"ordering\\\\\\":0,\\\\\\"portId\\\\\\":\\\\\\"transfer\\\\\\",\\\\\\"state\\\\\\":3,\\\\\\"version\\\\\\":\\\\\\"ics20-1\\\\\\"}}\\",\\"slots\\":[]}"]}', + { + client_id: '07-tendermint-19', + counterparty: { + client_id: '07-tendermint-2823', + connection_id: 'connection-2338', + }, + id: 'connection-18', + state: 3, + transferChannel: { + channelId: 'channel-10', + counterPartyChannelId: 'channel-874', + counterPartyPortId: 'transfer', + ordering: 0, + portId: 'transfer', + state: 3, + version: 'ics20-1', + }, + }, ], [ 'published.agoricNames.chainConnection.neutron-1_secret-4', - '{"blockHeight":"0","values":["{\\"body\\":\\"{\\\\\\"client_id\\\\\\":\\\\\\"07-tendermint-85\\\\\\",\\\\\\"counterparty\\\\\\":{\\\\\\"client_id\\\\\\":\\\\\\"07-tendermint-199\\\\\\",\\\\\\"connection_id\\\\\\":\\\\\\"connection-192\\\\\\"},\\\\\\"id\\\\\\":\\\\\\"connection-63\\\\\\",\\\\\\"state\\\\\\":3,\\\\\\"transferChannel\\\\\\":{\\\\\\"channelId\\\\\\":\\\\\\"channel-1551\\\\\\",\\\\\\"counterPartyChannelId\\\\\\":\\\\\\"channel-144\\\\\\",\\\\\\"counterPartyPortId\\\\\\":\\\\\\"transfer\\\\\\",\\\\\\"ordering\\\\\\":0,\\\\\\"portId\\\\\\":\\\\\\"transfer\\\\\\",\\\\\\"state\\\\\\":3,\\\\\\"version\\\\\\":\\\\\\"ics20-1\\\\\\"}}\\",\\"slots\\":[]}"]}', + { + client_id: '07-tendermint-85', + counterparty: { + client_id: '07-tendermint-199', + connection_id: 'connection-192', + }, + id: 'connection-63', + state: 3, + transferChannel: { + channelId: 'channel-1551', + counterPartyChannelId: 'channel-144', + counterPartyPortId: 'transfer', + ordering: 0, + portId: 'transfer', + state: 3, + version: 'ics20-1', + }, + }, ], [ 'published.agoricNames.chainConnection.neutron-1_stargaze-1', - '{"blockHeight":"0","values":["{\\"body\\":\\"{\\\\\\"client_id\\\\\\":\\\\\\"07-tendermint-31\\\\\\",\\\\\\"counterparty\\\\\\":{\\\\\\"client_id\\\\\\":\\\\\\"07-tendermint-283\\\\\\",\\\\\\"connection_id\\\\\\":\\\\\\"connection-211\\\\\\"},\\\\\\"id\\\\\\":\\\\\\"connection-23\\\\\\",\\\\\\"state\\\\\\":3,\\\\\\"transferChannel\\\\\\":{\\\\\\"channelId\\\\\\":\\\\\\"channel-18\\\\\\",\\\\\\"counterPartyChannelId\\\\\\":\\\\\\"channel-191\\\\\\",\\\\\\"counterPartyPortId\\\\\\":\\\\\\"transfer\\\\\\",\\\\\\"ordering\\\\\\":0,\\\\\\"portId\\\\\\":\\\\\\"transfer\\\\\\",\\\\\\"state\\\\\\":3,\\\\\\"version\\\\\\":\\\\\\"ics20-1\\\\\\"}}\\",\\"slots\\":[]}"]}', + { + client_id: '07-tendermint-31', + counterparty: { + client_id: '07-tendermint-283', + connection_id: 'connection-211', + }, + id: 'connection-23', + state: 3, + transferChannel: { + channelId: 'channel-18', + counterPartyChannelId: 'channel-191', + counterPartyPortId: 'transfer', + ordering: 0, + portId: 'transfer', + state: 3, + version: 'ics20-1', + }, + }, ], [ 'published.agoricNames.chainConnection.neutron-1_stride-1', - '{"blockHeight":"0","values":["{\\"body\\":\\"{\\\\\\"client_id\\\\\\":\\\\\\"07-tendermint-18\\\\\\",\\\\\\"counterparty\\\\\\":{\\\\\\"client_id\\\\\\":\\\\\\"07-tendermint-125\\\\\\",\\\\\\"connection_id\\\\\\":\\\\\\"connection-113\\\\\\"},\\\\\\"id\\\\\\":\\\\\\"connection-15\\\\\\",\\\\\\"state\\\\\\":3,\\\\\\"transferChannel\\\\\\":{\\\\\\"channelId\\\\\\":\\\\\\"channel-8\\\\\\",\\\\\\"counterPartyChannelId\\\\\\":\\\\\\"channel-123\\\\\\",\\\\\\"counterPartyPortId\\\\\\":\\\\\\"transfer\\\\\\",\\\\\\"ordering\\\\\\":0,\\\\\\"portId\\\\\\":\\\\\\"transfer\\\\\\",\\\\\\"state\\\\\\":3,\\\\\\"version\\\\\\":\\\\\\"ics20-1\\\\\\"}}\\",\\"slots\\":[]}"]}', + { + client_id: '07-tendermint-18', + counterparty: { + client_id: '07-tendermint-125', + connection_id: 'connection-113', + }, + id: 'connection-15', + state: 3, + transferChannel: { + channelId: 'channel-8', + counterPartyChannelId: 'channel-123', + counterPartyPortId: 'transfer', + ordering: 0, + portId: 'transfer', + state: 3, + version: 'ics20-1', + }, + }, ], [ 'published.agoricNames.chainConnection.noble-1_omniflixhub-1', - '{"blockHeight":"0","values":["{\\"body\\":\\"{\\\\\\"client_id\\\\\\":\\\\\\"07-tendermint-68\\\\\\",\\\\\\"counterparty\\\\\\":{\\\\\\"client_id\\\\\\":\\\\\\"07-tendermint-51\\\\\\",\\\\\\"connection_id\\\\\\":\\\\\\"connection-49\\\\\\"},\\\\\\"id\\\\\\":\\\\\\"connection-65\\\\\\",\\\\\\"state\\\\\\":3,\\\\\\"transferChannel\\\\\\":{\\\\\\"channelId\\\\\\":\\\\\\"channel-44\\\\\\",\\\\\\"counterPartyChannelId\\\\\\":\\\\\\"channel-38\\\\\\",\\\\\\"counterPartyPortId\\\\\\":\\\\\\"transfer\\\\\\",\\\\\\"ordering\\\\\\":0,\\\\\\"portId\\\\\\":\\\\\\"transfer\\\\\\",\\\\\\"state\\\\\\":3,\\\\\\"version\\\\\\":\\\\\\"ics20-1\\\\\\"}}\\",\\"slots\\":[]}"]}', + { + client_id: '07-tendermint-68', + counterparty: { + client_id: '07-tendermint-51', + connection_id: 'connection-49', + }, + id: 'connection-65', + state: 3, + transferChannel: { + channelId: 'channel-44', + counterPartyChannelId: 'channel-38', + counterPartyPortId: 'transfer', + ordering: 0, + portId: 'transfer', + state: 3, + version: 'ics20-1', + }, + }, ], [ 'published.agoricNames.chainConnection.noble-1_osmosis-1', - '{"blockHeight":"0","values":["{\\"body\\":\\"{\\\\\\"client_id\\\\\\":\\\\\\"07-tendermint-0\\\\\\",\\\\\\"counterparty\\\\\\":{\\\\\\"client_id\\\\\\":\\\\\\"07-tendermint-2704\\\\\\",\\\\\\"connection_id\\\\\\":\\\\\\"connection-2241\\\\\\"},\\\\\\"id\\\\\\":\\\\\\"connection-2\\\\\\",\\\\\\"state\\\\\\":3,\\\\\\"transferChannel\\\\\\":{\\\\\\"channelId\\\\\\":\\\\\\"channel-1\\\\\\",\\\\\\"counterPartyChannelId\\\\\\":\\\\\\"channel-750\\\\\\",\\\\\\"counterPartyPortId\\\\\\":\\\\\\"transfer\\\\\\",\\\\\\"ordering\\\\\\":0,\\\\\\"portId\\\\\\":\\\\\\"transfer\\\\\\",\\\\\\"state\\\\\\":3,\\\\\\"version\\\\\\":\\\\\\"ics20-1\\\\\\"}}\\",\\"slots\\":[]}"]}', + { + client_id: '07-tendermint-0', + counterparty: { + client_id: '07-tendermint-2704', + connection_id: 'connection-2241', + }, + id: 'connection-2', + state: 3, + transferChannel: { + channelId: 'channel-1', + counterPartyChannelId: 'channel-750', + counterPartyPortId: 'transfer', + ordering: 0, + portId: 'transfer', + state: 3, + version: 'ics20-1', + }, + }, ], [ 'published.agoricNames.chainConnection.noble-1_secret-4', - '{"blockHeight":"0","values":["{\\"body\\":\\"{\\\\\\"client_id\\\\\\":\\\\\\"07-tendermint-24\\\\\\",\\\\\\"counterparty\\\\\\":{\\\\\\"client_id\\\\\\":\\\\\\"07-tendermint-170\\\\\\",\\\\\\"connection_id\\\\\\":\\\\\\"connection-127\\\\\\"},\\\\\\"id\\\\\\":\\\\\\"connection-33\\\\\\",\\\\\\"state\\\\\\":3,\\\\\\"transferChannel\\\\\\":{\\\\\\"channelId\\\\\\":\\\\\\"channel-17\\\\\\",\\\\\\"counterPartyChannelId\\\\\\":\\\\\\"channel-88\\\\\\",\\\\\\"counterPartyPortId\\\\\\":\\\\\\"transfer\\\\\\",\\\\\\"ordering\\\\\\":0,\\\\\\"portId\\\\\\":\\\\\\"transfer\\\\\\",\\\\\\"state\\\\\\":3,\\\\\\"version\\\\\\":\\\\\\"ics20-1\\\\\\"}}\\",\\"slots\\":[]}"]}', + { + client_id: '07-tendermint-24', + counterparty: { + client_id: '07-tendermint-170', + connection_id: 'connection-127', + }, + id: 'connection-33', + state: 3, + transferChannel: { + channelId: 'channel-17', + counterPartyChannelId: 'channel-88', + counterPartyPortId: 'transfer', + ordering: 0, + portId: 'transfer', + state: 3, + version: 'ics20-1', + }, + }, ], [ 'published.agoricNames.chainConnection.noble-1_stargaze-1', - '{"blockHeight":"0","values":["{\\"body\\":\\"{\\\\\\"client_id\\\\\\":\\\\\\"07-tendermint-16\\\\\\",\\\\\\"counterparty\\\\\\":{\\\\\\"client_id\\\\\\":\\\\\\"07-tendermint-287\\\\\\",\\\\\\"connection_id\\\\\\":\\\\\\"connection-214\\\\\\"},\\\\\\"id\\\\\\":\\\\\\"connection-25\\\\\\",\\\\\\"state\\\\\\":3,\\\\\\"transferChannel\\\\\\":{\\\\\\"channelId\\\\\\":\\\\\\"channel-11\\\\\\",\\\\\\"counterPartyChannelId\\\\\\":\\\\\\"channel-204\\\\\\",\\\\\\"counterPartyPortId\\\\\\":\\\\\\"transfer\\\\\\",\\\\\\"ordering\\\\\\":0,\\\\\\"portId\\\\\\":\\\\\\"transfer\\\\\\",\\\\\\"state\\\\\\":3,\\\\\\"version\\\\\\":\\\\\\"ics20-1\\\\\\"}}\\",\\"slots\\":[]}"]}', + { + client_id: '07-tendermint-16', + counterparty: { + client_id: '07-tendermint-287', + connection_id: 'connection-214', + }, + id: 'connection-25', + state: 3, + transferChannel: { + channelId: 'channel-11', + counterPartyChannelId: 'channel-204', + counterPartyPortId: 'transfer', + ordering: 0, + portId: 'transfer', + state: 3, + version: 'ics20-1', + }, + }, ], [ 'published.agoricNames.chainConnection.noble-1_umee-1', - '{"blockHeight":"0","values":["{\\"body\\":\\"{\\\\\\"client_id\\\\\\":\\\\\\"07-tendermint-73\\\\\\",\\\\\\"counterparty\\\\\\":{\\\\\\"client_id\\\\\\":\\\\\\"07-tendermint-248\\\\\\",\\\\\\"connection_id\\\\\\":\\\\\\"connection-210\\\\\\"},\\\\\\"id\\\\\\":\\\\\\"connection-74\\\\\\",\\\\\\"state\\\\\\":3,\\\\\\"transferChannel\\\\\\":{\\\\\\"channelId\\\\\\":\\\\\\"channel-51\\\\\\",\\\\\\"counterPartyChannelId\\\\\\":\\\\\\"channel-120\\\\\\",\\\\\\"counterPartyPortId\\\\\\":\\\\\\"transfer\\\\\\",\\\\\\"ordering\\\\\\":0,\\\\\\"portId\\\\\\":\\\\\\"transfer\\\\\\",\\\\\\"state\\\\\\":3,\\\\\\"version\\\\\\":\\\\\\"ics20-1\\\\\\"}}\\",\\"slots\\":[]}"]}', + { + client_id: '07-tendermint-73', + counterparty: { + client_id: '07-tendermint-248', + connection_id: 'connection-210', + }, + id: 'connection-74', + state: 3, + transferChannel: { + channelId: 'channel-51', + counterPartyChannelId: 'channel-120', + counterPartyPortId: 'transfer', + ordering: 0, + portId: 'transfer', + state: 3, + version: 'ics20-1', + }, + }, ], [ 'published.agoricNames.chainConnection.omniflixhub-1_osmosis-1', - '{"blockHeight":"0","values":["{\\"body\\":\\"{\\\\\\"client_id\\\\\\":\\\\\\"07-tendermint-8\\\\\\",\\\\\\"counterparty\\\\\\":{\\\\\\"client_id\\\\\\":\\\\\\"07-tendermint-1829\\\\\\",\\\\\\"connection_id\\\\\\":\\\\\\"connection-1431\\\\\\"},\\\\\\"id\\\\\\":\\\\\\"connection-8\\\\\\",\\\\\\"state\\\\\\":3,\\\\\\"transferChannel\\\\\\":{\\\\\\"channelId\\\\\\":\\\\\\"channel-1\\\\\\",\\\\\\"counterPartyChannelId\\\\\\":\\\\\\"channel-199\\\\\\",\\\\\\"counterPartyPortId\\\\\\":\\\\\\"transfer\\\\\\",\\\\\\"ordering\\\\\\":0,\\\\\\"portId\\\\\\":\\\\\\"transfer\\\\\\",\\\\\\"state\\\\\\":3,\\\\\\"version\\\\\\":\\\\\\"ics20-1\\\\\\"}}\\",\\"slots\\":[]}"]}', + { + client_id: '07-tendermint-8', + counterparty: { + client_id: '07-tendermint-1829', + connection_id: 'connection-1431', + }, + id: 'connection-8', + state: 3, + transferChannel: { + channelId: 'channel-1', + counterPartyChannelId: 'channel-199', + counterPartyPortId: 'transfer', + ordering: 0, + portId: 'transfer', + state: 3, + version: 'ics20-1', + }, + }, ], [ 'published.agoricNames.chainConnection.osmosis-1_secret-4', - '{"blockHeight":"0","values":["{\\"body\\":\\"{\\\\\\"client_id\\\\\\":\\\\\\"07-tendermint-1588\\\\\\",\\\\\\"counterparty\\\\\\":{\\\\\\"client_id\\\\\\":\\\\\\"07-tendermint-2\\\\\\",\\\\\\"connection_id\\\\\\":\\\\\\"connection-1\\\\\\"},\\\\\\"id\\\\\\":\\\\\\"connection-1244\\\\\\",\\\\\\"state\\\\\\":3,\\\\\\"transferChannel\\\\\\":{\\\\\\"channelId\\\\\\":\\\\\\"channel-88\\\\\\",\\\\\\"counterPartyChannelId\\\\\\":\\\\\\"channel-1\\\\\\",\\\\\\"counterPartyPortId\\\\\\":\\\\\\"transfer\\\\\\",\\\\\\"ordering\\\\\\":0,\\\\\\"portId\\\\\\":\\\\\\"transfer\\\\\\",\\\\\\"state\\\\\\":3,\\\\\\"version\\\\\\":\\\\\\"ics20-1\\\\\\"}}\\",\\"slots\\":[]}"]}', + { + client_id: '07-tendermint-1588', + counterparty: { + client_id: '07-tendermint-2', + connection_id: 'connection-1', + }, + id: 'connection-1244', + state: 3, + transferChannel: { + channelId: 'channel-88', + counterPartyChannelId: 'channel-1', + counterPartyPortId: 'transfer', + ordering: 0, + portId: 'transfer', + state: 3, + version: 'ics20-1', + }, + }, ], [ 'published.agoricNames.chainConnection.osmosis-1_stargaze-1', - '{"blockHeight":"0","values":["{\\"body\\":\\"{\\\\\\"client_id\\\\\\":\\\\\\"07-tendermint-1562\\\\\\",\\\\\\"counterparty\\\\\\":{\\\\\\"client_id\\\\\\":\\\\\\"07-tendermint-0\\\\\\",\\\\\\"connection_id\\\\\\":\\\\\\"connection-0\\\\\\"},\\\\\\"id\\\\\\":\\\\\\"connection-1223\\\\\\",\\\\\\"state\\\\\\":3,\\\\\\"transferChannel\\\\\\":{\\\\\\"channelId\\\\\\":\\\\\\"channel-75\\\\\\",\\\\\\"counterPartyChannelId\\\\\\":\\\\\\"channel-0\\\\\\",\\\\\\"counterPartyPortId\\\\\\":\\\\\\"transfer\\\\\\",\\\\\\"ordering\\\\\\":0,\\\\\\"portId\\\\\\":\\\\\\"transfer\\\\\\",\\\\\\"state\\\\\\":3,\\\\\\"version\\\\\\":\\\\\\"ics20-1\\\\\\"}}\\",\\"slots\\":[]}"]}', + { + client_id: '07-tendermint-1562', + counterparty: { + client_id: '07-tendermint-0', + connection_id: 'connection-0', + }, + id: 'connection-1223', + state: 3, + transferChannel: { + channelId: 'channel-75', + counterPartyChannelId: 'channel-0', + counterPartyPortId: 'transfer', + ordering: 0, + portId: 'transfer', + state: 3, + version: 'ics20-1', + }, + }, ], [ 'published.agoricNames.chainConnection.osmosis-1_stride-1', - '{"blockHeight":"0","values":["{\\"body\\":\\"{\\\\\\"client_id\\\\\\":\\\\\\"07-tendermint-2119\\\\\\",\\\\\\"counterparty\\\\\\":{\\\\\\"client_id\\\\\\":\\\\\\"07-tendermint-1\\\\\\",\\\\\\"connection_id\\\\\\":\\\\\\"connection-2\\\\\\"},\\\\\\"id\\\\\\":\\\\\\"connection-1657\\\\\\",\\\\\\"state\\\\\\":3,\\\\\\"transferChannel\\\\\\":{\\\\\\"channelId\\\\\\":\\\\\\"channel-326\\\\\\",\\\\\\"counterPartyChannelId\\\\\\":\\\\\\"channel-5\\\\\\",\\\\\\"counterPartyPortId\\\\\\":\\\\\\"transfer\\\\\\",\\\\\\"ordering\\\\\\":0,\\\\\\"portId\\\\\\":\\\\\\"transfer\\\\\\",\\\\\\"state\\\\\\":3,\\\\\\"version\\\\\\":\\\\\\"ics20-1\\\\\\"}}\\",\\"slots\\":[]}"]}', + { + client_id: '07-tendermint-2119', + counterparty: { + client_id: '07-tendermint-1', + connection_id: 'connection-2', + }, + id: 'connection-1657', + state: 3, + transferChannel: { + channelId: 'channel-326', + counterPartyChannelId: 'channel-5', + counterPartyPortId: 'transfer', + ordering: 0, + portId: 'transfer', + state: 3, + version: 'ics20-1', + }, + }, ], [ 'published.agoricNames.chainConnection.osmosis-1_umee-1', - '{"blockHeight":"0","values":["{\\"body\\":\\"{\\\\\\"client_id\\\\\\":\\\\\\"07-tendermint-1805\\\\\\",\\\\\\"counterparty\\\\\\":{\\\\\\"client_id\\\\\\":\\\\\\"07-tendermint-6\\\\\\",\\\\\\"connection_id\\\\\\":\\\\\\"connection-0\\\\\\"},\\\\\\"id\\\\\\":\\\\\\"connection-1410\\\\\\",\\\\\\"state\\\\\\":3,\\\\\\"transferChannel\\\\\\":{\\\\\\"channelId\\\\\\":\\\\\\"channel-184\\\\\\",\\\\\\"counterPartyChannelId\\\\\\":\\\\\\"channel-0\\\\\\",\\\\\\"counterPartyPortId\\\\\\":\\\\\\"transfer\\\\\\",\\\\\\"ordering\\\\\\":0,\\\\\\"portId\\\\\\":\\\\\\"transfer\\\\\\",\\\\\\"state\\\\\\":3,\\\\\\"version\\\\\\":\\\\\\"ics20-1\\\\\\"}}\\",\\"slots\\":[]}"]}', + { + client_id: '07-tendermint-1805', + counterparty: { + client_id: '07-tendermint-6', + connection_id: 'connection-0', + }, + id: 'connection-1410', + state: 3, + transferChannel: { + channelId: 'channel-184', + counterPartyChannelId: 'channel-0', + counterPartyPortId: 'transfer', + ordering: 0, + portId: 'transfer', + state: 3, + version: 'ics20-1', + }, + }, ], [ 'published.agoricNames.chainConnection.secret-4_stargaze-1', - '{"blockHeight":"0","values":["{\\"body\\":\\"{\\\\\\"client_id\\\\\\":\\\\\\"07-tendermint-43\\\\\\",\\\\\\"counterparty\\\\\\":{\\\\\\"client_id\\\\\\":\\\\\\"07-tendermint-177\\\\\\",\\\\\\"connection_id\\\\\\":\\\\\\"connection-110\\\\\\"},\\\\\\"id\\\\\\":\\\\\\"connection-25\\\\\\",\\\\\\"state\\\\\\":3,\\\\\\"transferChannel\\\\\\":{\\\\\\"channelId\\\\\\":\\\\\\"channel-19\\\\\\",\\\\\\"counterPartyChannelId\\\\\\":\\\\\\"channel-48\\\\\\",\\\\\\"counterPartyPortId\\\\\\":\\\\\\"transfer\\\\\\",\\\\\\"ordering\\\\\\":0,\\\\\\"portId\\\\\\":\\\\\\"transfer\\\\\\",\\\\\\"state\\\\\\":3,\\\\\\"version\\\\\\":\\\\\\"ics20-1\\\\\\"}}\\",\\"slots\\":[]}"]}', + { + client_id: '07-tendermint-43', + counterparty: { + client_id: '07-tendermint-177', + connection_id: 'connection-110', + }, + id: 'connection-25', + state: 3, + transferChannel: { + channelId: 'channel-19', + counterPartyChannelId: 'channel-48', + counterPartyPortId: 'transfer', + ordering: 0, + portId: 'transfer', + state: 3, + version: 'ics20-1', + }, + }, ], [ 'published.agoricNames.chainConnection.secret-4_stride-1', - '{"blockHeight":"0","values":["{\\"body\\":\\"{\\\\\\"client_id\\\\\\":\\\\\\"07-tendermint-75\\\\\\",\\\\\\"counterparty\\\\\\":{\\\\\\"client_id\\\\\\":\\\\\\"07-tendermint-37\\\\\\",\\\\\\"connection_id\\\\\\":\\\\\\"connection-25\\\\\\"},\\\\\\"id\\\\\\":\\\\\\"connection-40\\\\\\",\\\\\\"state\\\\\\":3,\\\\\\"transferChannel\\\\\\":{\\\\\\"channelId\\\\\\":\\\\\\"channel-37\\\\\\",\\\\\\"counterPartyChannelId\\\\\\":\\\\\\"channel-40\\\\\\",\\\\\\"counterPartyPortId\\\\\\":\\\\\\"transfer\\\\\\",\\\\\\"ordering\\\\\\":0,\\\\\\"portId\\\\\\":\\\\\\"transfer\\\\\\",\\\\\\"state\\\\\\":3,\\\\\\"version\\\\\\":\\\\\\"ics20-1\\\\\\"}}\\",\\"slots\\":[]}"]}', + { + client_id: '07-tendermint-75', + counterparty: { + client_id: '07-tendermint-37', + connection_id: 'connection-25', + }, + id: 'connection-40', + state: 3, + transferChannel: { + channelId: 'channel-37', + counterPartyChannelId: 'channel-40', + counterPartyPortId: 'transfer', + ordering: 0, + portId: 'transfer', + state: 3, + version: 'ics20-1', + }, + }, ], [ 'published.agoricNames.chainConnection.secret-4_umee-1', - '{"blockHeight":"0","values":["{\\"body\\":\\"{\\\\\\"client_id\\\\\\":\\\\\\"07-tendermint-193\\\\\\",\\\\\\"counterparty\\\\\\":{\\\\\\"client_id\\\\\\":\\\\\\"07-tendermint-249\\\\\\",\\\\\\"connection_id\\\\\\":\\\\\\"connection-213\\\\\\"},\\\\\\"id\\\\\\":\\\\\\"connection-188\\\\\\",\\\\\\"state\\\\\\":3,\\\\\\"transferChannel\\\\\\":{\\\\\\"channelId\\\\\\":\\\\\\"channel-126\\\\\\",\\\\\\"counterPartyChannelId\\\\\\":\\\\\\"channel-123\\\\\\",\\\\\\"counterPartyPortId\\\\\\":\\\\\\"transfer\\\\\\",\\\\\\"ordering\\\\\\":0,\\\\\\"portId\\\\\\":\\\\\\"transfer\\\\\\",\\\\\\"state\\\\\\":3,\\\\\\"version\\\\\\":\\\\\\"ics20-1\\\\\\"}}\\",\\"slots\\":[]}"]}', + { + client_id: '07-tendermint-193', + counterparty: { + client_id: '07-tendermint-249', + connection_id: 'connection-213', + }, + id: 'connection-188', + state: 3, + transferChannel: { + channelId: 'channel-126', + counterPartyChannelId: 'channel-123', + counterPartyPortId: 'transfer', + ordering: 0, + portId: 'transfer', + state: 3, + version: 'ics20-1', + }, + }, ], [ 'published.agoricNames.chainConnection.stargaze-1_stride-1', - '{"blockHeight":"0","values":["{\\"body\\":\\"{\\\\\\"client_id\\\\\\":\\\\\\"07-tendermint-195\\\\\\",\\\\\\"counterparty\\\\\\":{\\\\\\"client_id\\\\\\":\\\\\\"07-tendermint-30\\\\\\",\\\\\\"connection_id\\\\\\":\\\\\\"connection-18\\\\\\"},\\\\\\"id\\\\\\":\\\\\\"connection-128\\\\\\",\\\\\\"state\\\\\\":3,\\\\\\"transferChannel\\\\\\":{\\\\\\"channelId\\\\\\":\\\\\\"channel-106\\\\\\",\\\\\\"counterPartyChannelId\\\\\\":\\\\\\"channel-19\\\\\\",\\\\\\"counterPartyPortId\\\\\\":\\\\\\"transfer\\\\\\",\\\\\\"ordering\\\\\\":0,\\\\\\"portId\\\\\\":\\\\\\"transfer\\\\\\",\\\\\\"state\\\\\\":3,\\\\\\"version\\\\\\":\\\\\\"ics20-1\\\\\\"}}\\",\\"slots\\":[]}"]}', + { + client_id: '07-tendermint-195', + counterparty: { + client_id: '07-tendermint-30', + connection_id: 'connection-18', + }, + id: 'connection-128', + state: 3, + transferChannel: { + channelId: 'channel-106', + counterPartyChannelId: 'channel-19', + counterPartyPortId: 'transfer', + ordering: 0, + portId: 'transfer', + state: 3, + version: 'ics20-1', + }, + }, ], [ 'published.agoricNames.chainConnection.stride-1_umee-1', - '{"blockHeight":"0","values":["{\\"body\\":\\"{\\\\\\"client_id\\\\\\":\\\\\\"07-tendermint-32\\\\\\",\\\\\\"counterparty\\\\\\":{\\\\\\"client_id\\\\\\":\\\\\\"07-tendermint-64\\\\\\",\\\\\\"connection_id\\\\\\":\\\\\\"connection-45\\\\\\"},\\\\\\"id\\\\\\":\\\\\\"connection-20\\\\\\",\\\\\\"state\\\\\\":3,\\\\\\"transferChannel\\\\\\":{\\\\\\"channelId\\\\\\":\\\\\\"channel-29\\\\\\",\\\\\\"counterPartyChannelId\\\\\\":\\\\\\"channel-34\\\\\\",\\\\\\"counterPartyPortId\\\\\\":\\\\\\"transfer\\\\\\",\\\\\\"ordering\\\\\\":0,\\\\\\"portId\\\\\\":\\\\\\"transfer\\\\\\",\\\\\\"state\\\\\\":3,\\\\\\"version\\\\\\":\\\\\\"ics20-1\\\\\\"}}\\",\\"slots\\":[]}"]}', + { + client_id: '07-tendermint-32', + counterparty: { + client_id: '07-tendermint-64', + connection_id: 'connection-45', + }, + id: 'connection-20', + state: 3, + transferChannel: { + channelId: 'channel-29', + counterPartyChannelId: 'channel-34', + counterPartyPortId: 'transfer', + ordering: 0, + portId: 'transfer', + state: 3, + version: 'ics20-1', + }, + }, ], ] @@ -278,206 +1257,1073 @@ Generated by [AVA](https://avajs.dev). [ [ 'published.agoricNames.chainConnection.agoric-3_cosmoshub-4', - '{"blockHeight":"0","values":["{\\"body\\":\\"{\\\\\\"client_id\\\\\\":\\\\\\"07-tendermint-6\\\\\\",\\\\\\"counterparty\\\\\\":{\\\\\\"client_id\\\\\\":\\\\\\"07-tendermint-927\\\\\\",\\\\\\"connection_id\\\\\\":\\\\\\"connection-649\\\\\\"},\\\\\\"id\\\\\\":\\\\\\"connection-8\\\\\\",\\\\\\"state\\\\\\":3,\\\\\\"transferChannel\\\\\\":{\\\\\\"channelId\\\\\\":\\\\\\"channel-5\\\\\\",\\\\\\"counterPartyChannelId\\\\\\":\\\\\\"channel-405\\\\\\",\\\\\\"counterPartyPortId\\\\\\":\\\\\\"transfer\\\\\\",\\\\\\"ordering\\\\\\":0,\\\\\\"portId\\\\\\":\\\\\\"transfer\\\\\\",\\\\\\"state\\\\\\":3,\\\\\\"version\\\\\\":\\\\\\"ics20-1\\\\\\"}}\\",\\"slots\\":[]}"]}', + { + client_id: '07-tendermint-6', + counterparty: { + client_id: '07-tendermint-927', + connection_id: 'connection-649', + }, + id: 'connection-8', + state: 3, + transferChannel: { + channelId: 'channel-5', + counterPartyChannelId: 'channel-405', + counterPartyPortId: 'transfer', + ordering: 0, + portId: 'transfer', + state: 3, + version: 'ics20-1', + }, + }, ], [ 'published.agoricNames.chainConnection.agoric-3_noble-1', - '{"blockHeight":"0","values":["{\\"body\\":\\"{\\\\\\"client_id\\\\\\":\\\\\\"07-tendermint-77\\\\\\",\\\\\\"counterparty\\\\\\":{\\\\\\"client_id\\\\\\":\\\\\\"07-tendermint-32\\\\\\",\\\\\\"connection_id\\\\\\":\\\\\\"connection-40\\\\\\"},\\\\\\"id\\\\\\":\\\\\\"connection-72\\\\\\",\\\\\\"state\\\\\\":3,\\\\\\"transferChannel\\\\\\":{\\\\\\"channelId\\\\\\":\\\\\\"channel-62\\\\\\",\\\\\\"counterPartyChannelId\\\\\\":\\\\\\"channel-21\\\\\\",\\\\\\"counterPartyPortId\\\\\\":\\\\\\"transfer\\\\\\",\\\\\\"ordering\\\\\\":0,\\\\\\"portId\\\\\\":\\\\\\"transfer\\\\\\",\\\\\\"state\\\\\\":3,\\\\\\"version\\\\\\":\\\\\\"ics20-1\\\\\\"}}\\",\\"slots\\":[]}"]}', + { + client_id: '07-tendermint-77', + counterparty: { + client_id: '07-tendermint-32', + connection_id: 'connection-40', + }, + id: 'connection-72', + state: 3, + transferChannel: { + channelId: 'channel-62', + counterPartyChannelId: 'channel-21', + counterPartyPortId: 'transfer', + ordering: 0, + portId: 'transfer', + state: 3, + version: 'ics20-1', + }, + }, ], [ 'published.agoricNames.chainConnection.agoric-3_omniflixhub-1', - '{"blockHeight":"0","values":["{\\"body\\":\\"{\\\\\\"client_id\\\\\\":\\\\\\"07-tendermint-73\\\\\\",\\\\\\"counterparty\\\\\\":{\\\\\\"client_id\\\\\\":\\\\\\"07-tendermint-47\\\\\\",\\\\\\"connection_id\\\\\\":\\\\\\"connection-40\\\\\\"},\\\\\\"id\\\\\\":\\\\\\"connection-67\\\\\\",\\\\\\"state\\\\\\":3,\\\\\\"transferChannel\\\\\\":{\\\\\\"channelId\\\\\\":\\\\\\"channel-58\\\\\\",\\\\\\"counterPartyChannelId\\\\\\":\\\\\\"channel-30\\\\\\",\\\\\\"counterPartyPortId\\\\\\":\\\\\\"transfer\\\\\\",\\\\\\"ordering\\\\\\":0,\\\\\\"portId\\\\\\":\\\\\\"transfer\\\\\\",\\\\\\"state\\\\\\":3,\\\\\\"version\\\\\\":\\\\\\"ics20-1\\\\\\"}}\\",\\"slots\\":[]}"]}', + { + client_id: '07-tendermint-73', + counterparty: { + client_id: '07-tendermint-47', + connection_id: 'connection-40', + }, + id: 'connection-67', + state: 3, + transferChannel: { + channelId: 'channel-58', + counterPartyChannelId: 'channel-30', + counterPartyPortId: 'transfer', + ordering: 0, + portId: 'transfer', + state: 3, + version: 'ics20-1', + }, + }, ], [ 'published.agoricNames.chainConnection.agoric-3_osmosis-1', - '{"blockHeight":"0","values":["{\\"body\\":\\"{\\\\\\"client_id\\\\\\":\\\\\\"07-tendermint-1\\\\\\",\\\\\\"counterparty\\\\\\":{\\\\\\"client_id\\\\\\":\\\\\\"07-tendermint-2109\\\\\\",\\\\\\"connection_id\\\\\\":\\\\\\"connection-1649\\\\\\"},\\\\\\"id\\\\\\":\\\\\\"connection-1\\\\\\",\\\\\\"state\\\\\\":3,\\\\\\"transferChannel\\\\\\":{\\\\\\"channelId\\\\\\":\\\\\\"channel-1\\\\\\",\\\\\\"counterPartyChannelId\\\\\\":\\\\\\"channel-320\\\\\\",\\\\\\"counterPartyPortId\\\\\\":\\\\\\"transfer\\\\\\",\\\\\\"ordering\\\\\\":0,\\\\\\"portId\\\\\\":\\\\\\"transfer\\\\\\",\\\\\\"state\\\\\\":3,\\\\\\"version\\\\\\":\\\\\\"ics20-1\\\\\\"}}\\",\\"slots\\":[]}"]}', + { + client_id: '07-tendermint-1', + counterparty: { + client_id: '07-tendermint-2109', + connection_id: 'connection-1649', + }, + id: 'connection-1', + state: 3, + transferChannel: { + channelId: 'channel-1', + counterPartyChannelId: 'channel-320', + counterPartyPortId: 'transfer', + ordering: 0, + portId: 'transfer', + state: 3, + version: 'ics20-1', + }, + }, ], [ 'published.agoricNames.chainConnection.agoric-3_secret-4', - '{"blockHeight":"0","values":["{\\"body\\":\\"{\\\\\\"client_id\\\\\\":\\\\\\"07-tendermint-17\\\\\\",\\\\\\"counterparty\\\\\\":{\\\\\\"client_id\\\\\\":\\\\\\"07-tendermint-111\\\\\\",\\\\\\"connection_id\\\\\\":\\\\\\"connection-80\\\\\\"},\\\\\\"id\\\\\\":\\\\\\"connection-17\\\\\\",\\\\\\"state\\\\\\":3,\\\\\\"transferChannel\\\\\\":{\\\\\\"channelId\\\\\\":\\\\\\"channel-10\\\\\\",\\\\\\"counterPartyChannelId\\\\\\":\\\\\\"channel-51\\\\\\",\\\\\\"counterPartyPortId\\\\\\":\\\\\\"transfer\\\\\\",\\\\\\"ordering\\\\\\":0,\\\\\\"portId\\\\\\":\\\\\\"transfer\\\\\\",\\\\\\"state\\\\\\":3,\\\\\\"version\\\\\\":\\\\\\"ics20-1\\\\\\"}}\\",\\"slots\\":[]}"]}', + { + client_id: '07-tendermint-17', + counterparty: { + client_id: '07-tendermint-111', + connection_id: 'connection-80', + }, + id: 'connection-17', + state: 3, + transferChannel: { + channelId: 'channel-10', + counterPartyChannelId: 'channel-51', + counterPartyPortId: 'transfer', + ordering: 0, + portId: 'transfer', + state: 3, + version: 'ics20-1', + }, + }, ], [ 'published.agoricNames.chainConnection.agoric-3_stride-1', - '{"blockHeight":"0","values":["{\\"body\\":\\"{\\\\\\"client_id\\\\\\":\\\\\\"07-tendermint-74\\\\\\",\\\\\\"counterparty\\\\\\":{\\\\\\"client_id\\\\\\":\\\\\\"07-tendermint-129\\\\\\",\\\\\\"connection_id\\\\\\":\\\\\\"connection-118\\\\\\"},\\\\\\"id\\\\\\":\\\\\\"connection-68\\\\\\",\\\\\\"state\\\\\\":3,\\\\\\"transferChannel\\\\\\":{\\\\\\"channelId\\\\\\":\\\\\\"channel-59\\\\\\",\\\\\\"counterPartyChannelId\\\\\\":\\\\\\"channel-148\\\\\\",\\\\\\"counterPartyPortId\\\\\\":\\\\\\"transfer\\\\\\",\\\\\\"ordering\\\\\\":0,\\\\\\"portId\\\\\\":\\\\\\"transfer\\\\\\",\\\\\\"state\\\\\\":3,\\\\\\"version\\\\\\":\\\\\\"ics20-1\\\\\\"}}\\",\\"slots\\":[]}"]}', + { + client_id: '07-tendermint-74', + counterparty: { + client_id: '07-tendermint-129', + connection_id: 'connection-118', + }, + id: 'connection-68', + state: 3, + transferChannel: { + channelId: 'channel-59', + counterPartyChannelId: 'channel-148', + counterPartyPortId: 'transfer', + ordering: 0, + portId: 'transfer', + state: 3, + version: 'ics20-1', + }, + }, ], [ 'published.agoricNames.chainConnection.agoric-3_umee-1', - '{"blockHeight":"0","values":["{\\"body\\":\\"{\\\\\\"client_id\\\\\\":\\\\\\"07-tendermint-18\\\\\\",\\\\\\"counterparty\\\\\\":{\\\\\\"client_id\\\\\\":\\\\\\"07-tendermint-152\\\\\\",\\\\\\"connection_id\\\\\\":\\\\\\"connection-101\\\\\\"},\\\\\\"id\\\\\\":\\\\\\"connection-18\\\\\\",\\\\\\"state\\\\\\":3,\\\\\\"transferChannel\\\\\\":{\\\\\\"channelId\\\\\\":\\\\\\"channel-11\\\\\\",\\\\\\"counterPartyChannelId\\\\\\":\\\\\\"channel-42\\\\\\",\\\\\\"counterPartyPortId\\\\\\":\\\\\\"transfer\\\\\\",\\\\\\"ordering\\\\\\":0,\\\\\\"portId\\\\\\":\\\\\\"transfer\\\\\\",\\\\\\"state\\\\\\":3,\\\\\\"version\\\\\\":\\\\\\"ics20-1\\\\\\"}}\\",\\"slots\\":[]}"]}', + { + client_id: '07-tendermint-18', + counterparty: { + client_id: '07-tendermint-152', + connection_id: 'connection-101', + }, + id: 'connection-18', + state: 3, + transferChannel: { + channelId: 'channel-11', + counterPartyChannelId: 'channel-42', + counterPartyPortId: 'transfer', + ordering: 0, + portId: 'transfer', + state: 3, + version: 'ics20-1', + }, + }, ], [ 'published.agoricNames.chainConnection.celestia_neutron-1', - '{"blockHeight":"0","values":["{\\"body\\":\\"{\\\\\\"client_id\\\\\\":\\\\\\"07-tendermint-29\\\\\\",\\\\\\"counterparty\\\\\\":{\\\\\\"client_id\\\\\\":\\\\\\"07-tendermint-48\\\\\\",\\\\\\"connection_id\\\\\\":\\\\\\"connection-36\\\\\\"},\\\\\\"id\\\\\\":\\\\\\"connection-7\\\\\\",\\\\\\"state\\\\\\":3,\\\\\\"transferChannel\\\\\\":{\\\\\\"channelId\\\\\\":\\\\\\"channel-8\\\\\\",\\\\\\"counterPartyChannelId\\\\\\":\\\\\\"channel-35\\\\\\",\\\\\\"counterPartyPortId\\\\\\":\\\\\\"transfer\\\\\\",\\\\\\"ordering\\\\\\":0,\\\\\\"portId\\\\\\":\\\\\\"transfer\\\\\\",\\\\\\"state\\\\\\":3,\\\\\\"version\\\\\\":\\\\\\"ics20-1\\\\\\"}}\\",\\"slots\\":[]}"]}', + { + client_id: '07-tendermint-29', + counterparty: { + client_id: '07-tendermint-48', + connection_id: 'connection-36', + }, + id: 'connection-7', + state: 3, + transferChannel: { + channelId: 'channel-8', + counterPartyChannelId: 'channel-35', + counterPartyPortId: 'transfer', + ordering: 0, + portId: 'transfer', + state: 3, + version: 'ics20-1', + }, + }, ], [ 'published.agoricNames.chainConnection.celestia_osmosis-1', - '{"blockHeight":"0","values":["{\\"body\\":\\"{\\\\\\"client_id\\\\\\":\\\\\\"07-tendermint-10\\\\\\",\\\\\\"counterparty\\\\\\":{\\\\\\"client_id\\\\\\":\\\\\\"07-tendermint-3012\\\\\\",\\\\\\"connection_id\\\\\\":\\\\\\"connection-2503\\\\\\"},\\\\\\"id\\\\\\":\\\\\\"connection-2\\\\\\",\\\\\\"state\\\\\\":3,\\\\\\"transferChannel\\\\\\":{\\\\\\"channelId\\\\\\":\\\\\\"channel-2\\\\\\",\\\\\\"counterPartyChannelId\\\\\\":\\\\\\"channel-6994\\\\\\",\\\\\\"counterPartyPortId\\\\\\":\\\\\\"transfer\\\\\\",\\\\\\"ordering\\\\\\":0,\\\\\\"portId\\\\\\":\\\\\\"transfer\\\\\\",\\\\\\"state\\\\\\":3,\\\\\\"version\\\\\\":\\\\\\"ics20-1\\\\\\"}}\\",\\"slots\\":[]}"]}', + { + client_id: '07-tendermint-10', + counterparty: { + client_id: '07-tendermint-3012', + connection_id: 'connection-2503', + }, + id: 'connection-2', + state: 3, + transferChannel: { + channelId: 'channel-2', + counterPartyChannelId: 'channel-6994', + counterPartyPortId: 'transfer', + ordering: 0, + portId: 'transfer', + state: 3, + version: 'ics20-1', + }, + }, ], [ 'published.agoricNames.chainConnection.celestia_secret-4', - '{"blockHeight":"0","values":["{\\"body\\":\\"{\\\\\\"client_id\\\\\\":\\\\\\"07-tendermint-52\\\\\\",\\\\\\"counterparty\\\\\\":{\\\\\\"client_id\\\\\\":\\\\\\"07-tendermint-174\\\\\\",\\\\\\"connection_id\\\\\\":\\\\\\"connection-131\\\\\\"},\\\\\\"id\\\\\\":\\\\\\"connection-15\\\\\\",\\\\\\"state\\\\\\":3,\\\\\\"transferChannel\\\\\\":{\\\\\\"channelId\\\\\\":\\\\\\"channel-14\\\\\\",\\\\\\"counterPartyChannelId\\\\\\":\\\\\\"channel-91\\\\\\",\\\\\\"counterPartyPortId\\\\\\":\\\\\\"transfer\\\\\\",\\\\\\"ordering\\\\\\":0,\\\\\\"portId\\\\\\":\\\\\\"transfer\\\\\\",\\\\\\"state\\\\\\":3,\\\\\\"version\\\\\\":\\\\\\"ics20-1\\\\\\"}}\\",\\"slots\\":[]}"]}', + { + client_id: '07-tendermint-52', + counterparty: { + client_id: '07-tendermint-174', + connection_id: 'connection-131', + }, + id: 'connection-15', + state: 3, + transferChannel: { + channelId: 'channel-14', + counterPartyChannelId: 'channel-91', + counterPartyPortId: 'transfer', + ordering: 0, + portId: 'transfer', + state: 3, + version: 'ics20-1', + }, + }, ], [ 'published.agoricNames.chainConnection.celestia_stargaze-1', - '{"blockHeight":"0","values":["{\\"body\\":\\"{\\\\\\"client_id\\\\\\":\\\\\\"07-tendermint-86\\\\\\",\\\\\\"counterparty\\\\\\":{\\\\\\"client_id\\\\\\":\\\\\\"07-tendermint-359\\\\\\",\\\\\\"connection_id\\\\\\":\\\\\\"connection-296\\\\\\"},\\\\\\"id\\\\\\":\\\\\\"connection-56\\\\\\",\\\\\\"state\\\\\\":3,\\\\\\"transferChannel\\\\\\":{\\\\\\"channelId\\\\\\":\\\\\\"channel-33\\\\\\",\\\\\\"counterPartyChannelId\\\\\\":\\\\\\"channel-291\\\\\\",\\\\\\"counterPartyPortId\\\\\\":\\\\\\"transfer\\\\\\",\\\\\\"ordering\\\\\\":0,\\\\\\"portId\\\\\\":\\\\\\"transfer\\\\\\",\\\\\\"state\\\\\\":3,\\\\\\"version\\\\\\":\\\\\\"ics20-1\\\\\\"}}\\",\\"slots\\":[]}"]}', + { + client_id: '07-tendermint-86', + counterparty: { + client_id: '07-tendermint-359', + connection_id: 'connection-296', + }, + id: 'connection-56', + state: 3, + transferChannel: { + channelId: 'channel-33', + counterPartyChannelId: 'channel-291', + counterPartyPortId: 'transfer', + ordering: 0, + portId: 'transfer', + state: 3, + version: 'ics20-1', + }, + }, ], [ 'published.agoricNames.chainConnection.celestia_stride-1', - '{"blockHeight":"0","values":["{\\"body\\":\\"{\\\\\\"client_id\\\\\\":\\\\\\"07-tendermint-0\\\\\\",\\\\\\"counterparty\\\\\\":{\\\\\\"client_id\\\\\\":\\\\\\"07-tendermint-137\\\\\\",\\\\\\"connection_id\\\\\\":\\\\\\"connection-125\\\\\\"},\\\\\\"id\\\\\\":\\\\\\"connection-4\\\\\\",\\\\\\"state\\\\\\":3,\\\\\\"transferChannel\\\\\\":{\\\\\\"channelId\\\\\\":\\\\\\"channel-4\\\\\\",\\\\\\"counterPartyChannelId\\\\\\":\\\\\\"channel-162\\\\\\",\\\\\\"counterPartyPortId\\\\\\":\\\\\\"transfer\\\\\\",\\\\\\"ordering\\\\\\":0,\\\\\\"portId\\\\\\":\\\\\\"transfer\\\\\\",\\\\\\"state\\\\\\":3,\\\\\\"version\\\\\\":\\\\\\"ics20-1\\\\\\"}}\\",\\"slots\\":[]}"]}', + { + client_id: '07-tendermint-0', + counterparty: { + client_id: '07-tendermint-137', + connection_id: 'connection-125', + }, + id: 'connection-4', + state: 3, + transferChannel: { + channelId: 'channel-4', + counterPartyChannelId: 'channel-162', + counterPartyPortId: 'transfer', + ordering: 0, + portId: 'transfer', + state: 3, + version: 'ics20-1', + }, + }, ], [ 'published.agoricNames.chainConnection.cosmoshub-4_juno-1', - '{"blockHeight":"0","values":["{\\"body\\":\\"{\\\\\\"client_id\\\\\\":\\\\\\"07-tendermint-439\\\\\\",\\\\\\"counterparty\\\\\\":{\\\\\\"client_id\\\\\\":\\\\\\"07-tendermint-3\\\\\\",\\\\\\"connection_id\\\\\\":\\\\\\"connection-2\\\\\\"},\\\\\\"id\\\\\\":\\\\\\"connection-372\\\\\\",\\\\\\"state\\\\\\":3,\\\\\\"transferChannel\\\\\\":{\\\\\\"channelId\\\\\\":\\\\\\"channel-207\\\\\\",\\\\\\"counterPartyChannelId\\\\\\":\\\\\\"channel-1\\\\\\",\\\\\\"counterPartyPortId\\\\\\":\\\\\\"transfer\\\\\\",\\\\\\"ordering\\\\\\":0,\\\\\\"portId\\\\\\":\\\\\\"transfer\\\\\\",\\\\\\"state\\\\\\":3,\\\\\\"version\\\\\\":\\\\\\"ics20-1\\\\\\"}}\\",\\"slots\\":[]}"]}', + { + client_id: '07-tendermint-439', + counterparty: { + client_id: '07-tendermint-3', + connection_id: 'connection-2', + }, + id: 'connection-372', + state: 3, + transferChannel: { + channelId: 'channel-207', + counterPartyChannelId: 'channel-1', + counterPartyPortId: 'transfer', + ordering: 0, + portId: 'transfer', + state: 3, + version: 'ics20-1', + }, + }, ], [ 'published.agoricNames.chainConnection.cosmoshub-4_neutron-1', - '{"blockHeight":"0","values":["{\\"body\\":\\"{\\\\\\"client_id\\\\\\":\\\\\\"07-tendermint-1119\\\\\\",\\\\\\"counterparty\\\\\\":{\\\\\\"client_id\\\\\\":\\\\\\"07-tendermint-0\\\\\\",\\\\\\"connection_id\\\\\\":\\\\\\"connection-0\\\\\\"},\\\\\\"id\\\\\\":\\\\\\"connection-809\\\\\\",\\\\\\"state\\\\\\":3,\\\\\\"transferChannel\\\\\\":{\\\\\\"channelId\\\\\\":\\\\\\"channel-569\\\\\\",\\\\\\"counterPartyChannelId\\\\\\":\\\\\\"channel-1\\\\\\",\\\\\\"counterPartyPortId\\\\\\":\\\\\\"transfer\\\\\\",\\\\\\"ordering\\\\\\":0,\\\\\\"portId\\\\\\":\\\\\\"transfer\\\\\\",\\\\\\"state\\\\\\":3,\\\\\\"version\\\\\\":\\\\\\"ics20-1\\\\\\"}}\\",\\"slots\\":[]}"]}', + { + client_id: '07-tendermint-1119', + counterparty: { + client_id: '07-tendermint-0', + connection_id: 'connection-0', + }, + id: 'connection-809', + state: 3, + transferChannel: { + channelId: 'channel-569', + counterPartyChannelId: 'channel-1', + counterPartyPortId: 'transfer', + ordering: 0, + portId: 'transfer', + state: 3, + version: 'ics20-1', + }, + }, ], [ 'published.agoricNames.chainConnection.cosmoshub-4_noble-1', - '{"blockHeight":"0","values":["{\\"body\\":\\"{\\\\\\"client_id\\\\\\":\\\\\\"07-tendermint-1116\\\\\\",\\\\\\"counterparty\\\\\\":{\\\\\\"client_id\\\\\\":\\\\\\"07-tendermint-4\\\\\\",\\\\\\"connection_id\\\\\\":\\\\\\"connection-12\\\\\\"},\\\\\\"id\\\\\\":\\\\\\"connection-790\\\\\\",\\\\\\"state\\\\\\":3,\\\\\\"transferChannel\\\\\\":{\\\\\\"channelId\\\\\\":\\\\\\"channel-536\\\\\\",\\\\\\"counterPartyChannelId\\\\\\":\\\\\\"channel-4\\\\\\",\\\\\\"counterPartyPortId\\\\\\":\\\\\\"transfer\\\\\\",\\\\\\"ordering\\\\\\":0,\\\\\\"portId\\\\\\":\\\\\\"transfer\\\\\\",\\\\\\"state\\\\\\":3,\\\\\\"version\\\\\\":\\\\\\"ics20-1\\\\\\"}}\\",\\"slots\\":[]}"]}', + { + client_id: '07-tendermint-1116', + counterparty: { + client_id: '07-tendermint-4', + connection_id: 'connection-12', + }, + id: 'connection-790', + state: 3, + transferChannel: { + channelId: 'channel-536', + counterPartyChannelId: 'channel-4', + counterPartyPortId: 'transfer', + ordering: 0, + portId: 'transfer', + state: 3, + version: 'ics20-1', + }, + }, ], [ 'published.agoricNames.chainConnection.cosmoshub-4_omniflixhub-1', - '{"blockHeight":"0","values":["{\\"body\\":\\"{\\\\\\"client_id\\\\\\":\\\\\\"07-tendermint-656\\\\\\",\\\\\\"counterparty\\\\\\":{\\\\\\"client_id\\\\\\":\\\\\\"07-tendermint-23\\\\\\",\\\\\\"connection_id\\\\\\":\\\\\\"connection-19\\\\\\"},\\\\\\"id\\\\\\":\\\\\\"connection-501\\\\\\",\\\\\\"state\\\\\\":3,\\\\\\"transferChannel\\\\\\":{\\\\\\"channelId\\\\\\":\\\\\\"channel-306\\\\\\",\\\\\\"counterPartyChannelId\\\\\\":\\\\\\"channel-12\\\\\\",\\\\\\"counterPartyPortId\\\\\\":\\\\\\"transfer\\\\\\",\\\\\\"ordering\\\\\\":0,\\\\\\"portId\\\\\\":\\\\\\"transfer\\\\\\",\\\\\\"state\\\\\\":3,\\\\\\"version\\\\\\":\\\\\\"ics20-1\\\\\\"}}\\",\\"slots\\":[]}"]}', + { + client_id: '07-tendermint-656', + counterparty: { + client_id: '07-tendermint-23', + connection_id: 'connection-19', + }, + id: 'connection-501', + state: 3, + transferChannel: { + channelId: 'channel-306', + counterPartyChannelId: 'channel-12', + counterPartyPortId: 'transfer', + ordering: 0, + portId: 'transfer', + state: 3, + version: 'ics20-1', + }, + }, ], [ 'published.agoricNames.chainConnection.cosmoshub-4_osmosis-1', - '{"blockHeight":"0","values":["{\\"body\\":\\"{\\\\\\"client_id\\\\\\":\\\\\\"07-tendermint-259\\\\\\",\\\\\\"counterparty\\\\\\":{\\\\\\"client_id\\\\\\":\\\\\\"07-tendermint-1\\\\\\",\\\\\\"connection_id\\\\\\":\\\\\\"connection-1\\\\\\"},\\\\\\"id\\\\\\":\\\\\\"connection-257\\\\\\",\\\\\\"state\\\\\\":3,\\\\\\"transferChannel\\\\\\":{\\\\\\"channelId\\\\\\":\\\\\\"channel-141\\\\\\",\\\\\\"counterPartyChannelId\\\\\\":\\\\\\"channel-0\\\\\\",\\\\\\"counterPartyPortId\\\\\\":\\\\\\"transfer\\\\\\",\\\\\\"ordering\\\\\\":0,\\\\\\"portId\\\\\\":\\\\\\"transfer\\\\\\",\\\\\\"state\\\\\\":3,\\\\\\"version\\\\\\":\\\\\\"ics20-1\\\\\\"}}\\",\\"slots\\":[]}"]}', + { + client_id: '07-tendermint-259', + counterparty: { + client_id: '07-tendermint-1', + connection_id: 'connection-1', + }, + id: 'connection-257', + state: 3, + transferChannel: { + channelId: 'channel-141', + counterPartyChannelId: 'channel-0', + counterPartyPortId: 'transfer', + ordering: 0, + portId: 'transfer', + state: 3, + version: 'ics20-1', + }, + }, ], [ 'published.agoricNames.chainConnection.cosmoshub-4_secret-4', - '{"blockHeight":"0","values":["{\\"body\\":\\"{\\\\\\"client_id\\\\\\":\\\\\\"07-tendermint-492\\\\\\",\\\\\\"counterparty\\\\\\":{\\\\\\"client_id\\\\\\":\\\\\\"07-tendermint-1\\\\\\",\\\\\\"connection_id\\\\\\":\\\\\\"connection-0\\\\\\"},\\\\\\"id\\\\\\":\\\\\\"connection-401\\\\\\",\\\\\\"state\\\\\\":3,\\\\\\"transferChannel\\\\\\":{\\\\\\"channelId\\\\\\":\\\\\\"channel-235\\\\\\",\\\\\\"counterPartyChannelId\\\\\\":\\\\\\"channel-0\\\\\\",\\\\\\"counterPartyPortId\\\\\\":\\\\\\"transfer\\\\\\",\\\\\\"ordering\\\\\\":0,\\\\\\"portId\\\\\\":\\\\\\"transfer\\\\\\",\\\\\\"state\\\\\\":3,\\\\\\"version\\\\\\":\\\\\\"ics20-1\\\\\\"}}\\",\\"slots\\":[]}"]}', + { + client_id: '07-tendermint-492', + counterparty: { + client_id: '07-tendermint-1', + connection_id: 'connection-0', + }, + id: 'connection-401', + state: 3, + transferChannel: { + channelId: 'channel-235', + counterPartyChannelId: 'channel-0', + counterPartyPortId: 'transfer', + ordering: 0, + portId: 'transfer', + state: 3, + version: 'ics20-1', + }, + }, ], [ 'published.agoricNames.chainConnection.cosmoshub-4_stargaze-1', - '{"blockHeight":"0","values":["{\\"body\\":\\"{\\\\\\"client_id\\\\\\":\\\\\\"07-tendermint-1188\\\\\\",\\\\\\"counterparty\\\\\\":{\\\\\\"client_id\\\\\\":\\\\\\"07-tendermint-320\\\\\\",\\\\\\"connection_id\\\\\\":\\\\\\"connection-256\\\\\\"},\\\\\\"id\\\\\\":\\\\\\"connection-918\\\\\\",\\\\\\"state\\\\\\":3,\\\\\\"transferChannel\\\\\\":{\\\\\\"channelId\\\\\\":\\\\\\"channel-730\\\\\\",\\\\\\"counterPartyChannelId\\\\\\":\\\\\\"channel-239\\\\\\",\\\\\\"counterPartyPortId\\\\\\":\\\\\\"transfer\\\\\\",\\\\\\"ordering\\\\\\":0,\\\\\\"portId\\\\\\":\\\\\\"transfer\\\\\\",\\\\\\"state\\\\\\":3,\\\\\\"version\\\\\\":\\\\\\"ics20-1\\\\\\"}}\\",\\"slots\\":[]}"]}', + { + client_id: '07-tendermint-1188', + counterparty: { + client_id: '07-tendermint-320', + connection_id: 'connection-256', + }, + id: 'connection-918', + state: 3, + transferChannel: { + channelId: 'channel-730', + counterPartyChannelId: 'channel-239', + counterPartyPortId: 'transfer', + ordering: 0, + portId: 'transfer', + state: 3, + version: 'ics20-1', + }, + }, ], [ 'published.agoricNames.chainConnection.cosmoshub-4_stride-1', - '{"blockHeight":"0","values":["{\\"body\\":\\"{\\\\\\"client_id\\\\\\":\\\\\\"07-tendermint-913\\\\\\",\\\\\\"counterparty\\\\\\":{\\\\\\"client_id\\\\\\":\\\\\\"07-tendermint-0\\\\\\",\\\\\\"connection_id\\\\\\":\\\\\\"connection-0\\\\\\"},\\\\\\"id\\\\\\":\\\\\\"connection-635\\\\\\",\\\\\\"state\\\\\\":3,\\\\\\"transferChannel\\\\\\":{\\\\\\"channelId\\\\\\":\\\\\\"channel-391\\\\\\",\\\\\\"counterPartyChannelId\\\\\\":\\\\\\"channel-0\\\\\\",\\\\\\"counterPartyPortId\\\\\\":\\\\\\"transfer\\\\\\",\\\\\\"ordering\\\\\\":0,\\\\\\"portId\\\\\\":\\\\\\"transfer\\\\\\",\\\\\\"state\\\\\\":3,\\\\\\"version\\\\\\":\\\\\\"ics20-1\\\\\\"}}\\",\\"slots\\":[]}"]}', + { + client_id: '07-tendermint-913', + counterparty: { + client_id: '07-tendermint-0', + connection_id: 'connection-0', + }, + id: 'connection-635', + state: 3, + transferChannel: { + channelId: 'channel-391', + counterPartyChannelId: 'channel-0', + counterPartyPortId: 'transfer', + ordering: 0, + portId: 'transfer', + state: 3, + version: 'ics20-1', + }, + }, ], [ 'published.agoricNames.chainConnection.dydx-mainnet-1_neutron-1', - '{"blockHeight":"0","values":["{\\"body\\":\\"{\\\\\\"client_id\\\\\\":\\\\\\"07-tendermint-11\\\\\\",\\\\\\"counterparty\\\\\\":{\\\\\\"client_id\\\\\\":\\\\\\"07-tendermint-72\\\\\\",\\\\\\"connection_id\\\\\\":\\\\\\"connection-51\\\\\\"},\\\\\\"id\\\\\\":\\\\\\"connection-17\\\\\\",\\\\\\"state\\\\\\":3,\\\\\\"transferChannel\\\\\\":{\\\\\\"channelId\\\\\\":\\\\\\"channel-11\\\\\\",\\\\\\"counterPartyChannelId\\\\\\":\\\\\\"channel-48\\\\\\",\\\\\\"counterPartyPortId\\\\\\":\\\\\\"transfer\\\\\\",\\\\\\"ordering\\\\\\":0,\\\\\\"portId\\\\\\":\\\\\\"transfer\\\\\\",\\\\\\"state\\\\\\":3,\\\\\\"version\\\\\\":\\\\\\"ics20-1\\\\\\"}}\\",\\"slots\\":[]}"]}', + { + client_id: '07-tendermint-11', + counterparty: { + client_id: '07-tendermint-72', + connection_id: 'connection-51', + }, + id: 'connection-17', + state: 3, + transferChannel: { + channelId: 'channel-11', + counterPartyChannelId: 'channel-48', + counterPartyPortId: 'transfer', + ordering: 0, + portId: 'transfer', + state: 3, + version: 'ics20-1', + }, + }, ], [ 'published.agoricNames.chainConnection.dydx-mainnet-1_noble-1', - '{"blockHeight":"0","values":["{\\"body\\":\\"{\\\\\\"client_id\\\\\\":\\\\\\"07-tendermint-0\\\\\\",\\\\\\"counterparty\\\\\\":{\\\\\\"client_id\\\\\\":\\\\\\"07-tendermint-59\\\\\\",\\\\\\"connection_id\\\\\\":\\\\\\"connection-57\\\\\\"},\\\\\\"id\\\\\\":\\\\\\"connection-0\\\\\\",\\\\\\"state\\\\\\":3,\\\\\\"transferChannel\\\\\\":{\\\\\\"channelId\\\\\\":\\\\\\"channel-0\\\\\\",\\\\\\"counterPartyChannelId\\\\\\":\\\\\\"channel-33\\\\\\",\\\\\\"counterPartyPortId\\\\\\":\\\\\\"transfer\\\\\\",\\\\\\"ordering\\\\\\":0,\\\\\\"portId\\\\\\":\\\\\\"transfer\\\\\\",\\\\\\"state\\\\\\":3,\\\\\\"version\\\\\\":\\\\\\"ics20-1\\\\\\"}}\\",\\"slots\\":[]}"]}', + { + client_id: '07-tendermint-0', + counterparty: { + client_id: '07-tendermint-59', + connection_id: 'connection-57', + }, + id: 'connection-0', + state: 3, + transferChannel: { + channelId: 'channel-0', + counterPartyChannelId: 'channel-33', + counterPartyPortId: 'transfer', + ordering: 0, + portId: 'transfer', + state: 3, + version: 'ics20-1', + }, + }, ], [ 'published.agoricNames.chainConnection.dydx-mainnet-1_osmosis-1', - '{"blockHeight":"0","values":["{\\"body\\":\\"{\\\\\\"client_id\\\\\\":\\\\\\"07-tendermint-3\\\\\\",\\\\\\"counterparty\\\\\\":{\\\\\\"client_id\\\\\\":\\\\\\"07-tendermint-3009\\\\\\",\\\\\\"connection_id\\\\\\":\\\\\\"connection-2500\\\\\\"},\\\\\\"id\\\\\\":\\\\\\"connection-7\\\\\\",\\\\\\"state\\\\\\":3,\\\\\\"transferChannel\\\\\\":{\\\\\\"channelId\\\\\\":\\\\\\"channel-3\\\\\\",\\\\\\"counterPartyChannelId\\\\\\":\\\\\\"channel-6787\\\\\\",\\\\\\"counterPartyPortId\\\\\\":\\\\\\"transfer\\\\\\",\\\\\\"ordering\\\\\\":0,\\\\\\"portId\\\\\\":\\\\\\"transfer\\\\\\",\\\\\\"state\\\\\\":3,\\\\\\"version\\\\\\":\\\\\\"ics20-1\\\\\\"}}\\",\\"slots\\":[]}"]}', + { + client_id: '07-tendermint-3', + counterparty: { + client_id: '07-tendermint-3009', + connection_id: 'connection-2500', + }, + id: 'connection-7', + state: 3, + transferChannel: { + channelId: 'channel-3', + counterPartyChannelId: 'channel-6787', + counterPartyPortId: 'transfer', + ordering: 0, + portId: 'transfer', + state: 3, + version: 'ics20-1', + }, + }, ], [ 'published.agoricNames.chainConnection.dydx-mainnet-1_stride-1', - '{"blockHeight":"0","values":["{\\"body\\":\\"{\\\\\\"client_id\\\\\\":\\\\\\"07-tendermint-1\\\\\\",\\\\\\"counterparty\\\\\\":{\\\\\\"client_id\\\\\\":\\\\\\"07-tendermint-133\\\\\\",\\\\\\"connection_id\\\\\\":\\\\\\"connection-123\\\\\\"},\\\\\\"id\\\\\\":\\\\\\"connection-1\\\\\\",\\\\\\"state\\\\\\":3,\\\\\\"transferChannel\\\\\\":{\\\\\\"channelId\\\\\\":\\\\\\"channel-1\\\\\\",\\\\\\"counterPartyChannelId\\\\\\":\\\\\\"channel-160\\\\\\",\\\\\\"counterPartyPortId\\\\\\":\\\\\\"transfer\\\\\\",\\\\\\"ordering\\\\\\":0,\\\\\\"portId\\\\\\":\\\\\\"transfer\\\\\\",\\\\\\"state\\\\\\":3,\\\\\\"version\\\\\\":\\\\\\"ics20-1\\\\\\"}}\\",\\"slots\\":[]}"]}', + { + client_id: '07-tendermint-1', + counterparty: { + client_id: '07-tendermint-133', + connection_id: 'connection-123', + }, + id: 'connection-1', + state: 3, + transferChannel: { + channelId: 'channel-1', + counterPartyChannelId: 'channel-160', + counterPartyPortId: 'transfer', + ordering: 0, + portId: 'transfer', + state: 3, + version: 'ics20-1', + }, + }, ], [ 'published.agoricNames.chainConnection.dydx-mainnet-1_umee-1', - '{"blockHeight":"0","values":["{\\"body\\":\\"{\\\\\\"client_id\\\\\\":\\\\\\"07-tendermint-8\\\\\\",\\\\\\"counterparty\\\\\\":{\\\\\\"client_id\\\\\\":\\\\\\"07-tendermint-244\\\\\\",\\\\\\"connection_id\\\\\\":\\\\\\"connection-208\\\\\\"},\\\\\\"id\\\\\\":\\\\\\"connection-13\\\\\\",\\\\\\"state\\\\\\":3,\\\\\\"transferChannel\\\\\\":{\\\\\\"channelId\\\\\\":\\\\\\"channel-8\\\\\\",\\\\\\"counterPartyChannelId\\\\\\":\\\\\\"channel-118\\\\\\",\\\\\\"counterPartyPortId\\\\\\":\\\\\\"transfer\\\\\\",\\\\\\"ordering\\\\\\":0,\\\\\\"portId\\\\\\":\\\\\\"transfer\\\\\\",\\\\\\"state\\\\\\":3,\\\\\\"version\\\\\\":\\\\\\"ics20-1\\\\\\"}}\\",\\"slots\\":[]}"]}', + { + client_id: '07-tendermint-8', + counterparty: { + client_id: '07-tendermint-244', + connection_id: 'connection-208', + }, + id: 'connection-13', + state: 3, + transferChannel: { + channelId: 'channel-8', + counterPartyChannelId: 'channel-118', + counterPartyPortId: 'transfer', + ordering: 0, + portId: 'transfer', + state: 3, + version: 'ics20-1', + }, + }, ], [ 'published.agoricNames.chainConnection.juno-1_neutron-1', - '{"blockHeight":"0","values":["{\\"body\\":\\"{\\\\\\"client_id\\\\\\":\\\\\\"07-tendermint-557\\\\\\",\\\\\\"counterparty\\\\\\":{\\\\\\"client_id\\\\\\":\\\\\\"07-tendermint-97\\\\\\",\\\\\\"connection_id\\\\\\":\\\\\\"connection-71\\\\\\"},\\\\\\"id\\\\\\":\\\\\\"connection-524\\\\\\",\\\\\\"state\\\\\\":3,\\\\\\"transferChannel\\\\\\":{\\\\\\"channelId\\\\\\":\\\\\\"channel-548\\\\\\",\\\\\\"counterPartyChannelId\\\\\\":\\\\\\"channel-4328\\\\\\",\\\\\\"counterPartyPortId\\\\\\":\\\\\\"transfer\\\\\\",\\\\\\"ordering\\\\\\":0,\\\\\\"portId\\\\\\":\\\\\\"transfer\\\\\\",\\\\\\"state\\\\\\":3,\\\\\\"version\\\\\\":\\\\\\"ics20-1\\\\\\"}}\\",\\"slots\\":[]}"]}', + { + client_id: '07-tendermint-557', + counterparty: { + client_id: '07-tendermint-97', + connection_id: 'connection-71', + }, + id: 'connection-524', + state: 3, + transferChannel: { + channelId: 'channel-548', + counterPartyChannelId: 'channel-4328', + counterPartyPortId: 'transfer', + ordering: 0, + portId: 'transfer', + state: 3, + version: 'ics20-1', + }, + }, ], [ 'published.agoricNames.chainConnection.juno-1_noble-1', - '{"blockHeight":"0","values":["{\\"body\\":\\"{\\\\\\"client_id\\\\\\":\\\\\\"07-tendermint-334\\\\\\",\\\\\\"counterparty\\\\\\":{\\\\\\"client_id\\\\\\":\\\\\\"07-tendermint-3\\\\\\",\\\\\\"connection_id\\\\\\":\\\\\\"connection-8\\\\\\"},\\\\\\"id\\\\\\":\\\\\\"connection-322\\\\\\",\\\\\\"state\\\\\\":3,\\\\\\"transferChannel\\\\\\":{\\\\\\"channelId\\\\\\":\\\\\\"channel-224\\\\\\",\\\\\\"counterPartyChannelId\\\\\\":\\\\\\"channel-3\\\\\\",\\\\\\"counterPartyPortId\\\\\\":\\\\\\"transfer\\\\\\",\\\\\\"ordering\\\\\\":0,\\\\\\"portId\\\\\\":\\\\\\"transfer\\\\\\",\\\\\\"state\\\\\\":3,\\\\\\"version\\\\\\":\\\\\\"ics20-1\\\\\\"}}\\",\\"slots\\":[]}"]}', + { + client_id: '07-tendermint-334', + counterparty: { + client_id: '07-tendermint-3', + connection_id: 'connection-8', + }, + id: 'connection-322', + state: 3, + transferChannel: { + channelId: 'channel-224', + counterPartyChannelId: 'channel-3', + counterPartyPortId: 'transfer', + ordering: 0, + portId: 'transfer', + state: 3, + version: 'ics20-1', + }, + }, ], [ 'published.agoricNames.chainConnection.juno-1_osmosis-1', - '{"blockHeight":"0","values":["{\\"body\\":\\"{\\\\\\"client_id\\\\\\":\\\\\\"07-tendermint-0\\\\\\",\\\\\\"counterparty\\\\\\":{\\\\\\"client_id\\\\\\":\\\\\\"07-tendermint-1457\\\\\\",\\\\\\"connection_id\\\\\\":\\\\\\"connection-1142\\\\\\"},\\\\\\"id\\\\\\":\\\\\\"connection-0\\\\\\",\\\\\\"state\\\\\\":3,\\\\\\"transferChannel\\\\\\":{\\\\\\"channelId\\\\\\":\\\\\\"channel-0\\\\\\",\\\\\\"counterPartyChannelId\\\\\\":\\\\\\"channel-42\\\\\\",\\\\\\"counterPartyPortId\\\\\\":\\\\\\"transfer\\\\\\",\\\\\\"ordering\\\\\\":0,\\\\\\"portId\\\\\\":\\\\\\"transfer\\\\\\",\\\\\\"state\\\\\\":3,\\\\\\"version\\\\\\":\\\\\\"ics20-1\\\\\\"}}\\",\\"slots\\":[]}"]}', + { + client_id: '07-tendermint-0', + counterparty: { + client_id: '07-tendermint-1457', + connection_id: 'connection-1142', + }, + id: 'connection-0', + state: 3, + transferChannel: { + channelId: 'channel-0', + counterPartyChannelId: 'channel-42', + counterPartyPortId: 'transfer', + ordering: 0, + portId: 'transfer', + state: 3, + version: 'ics20-1', + }, + }, ], [ 'published.agoricNames.chainConnection.juno-1_secret-4', - '{"blockHeight":"0","values":["{\\"body\\":\\"{\\\\\\"client_id\\\\\\":\\\\\\"07-tendermint-108\\\\\\",\\\\\\"counterparty\\\\\\":{\\\\\\"client_id\\\\\\":\\\\\\"07-tendermint-23\\\\\\",\\\\\\"connection_id\\\\\\":\\\\\\"connection-9\\\\\\"},\\\\\\"id\\\\\\":\\\\\\"connection-68\\\\\\",\\\\\\"state\\\\\\":3,\\\\\\"transferChannel\\\\\\":{\\\\\\"channelId\\\\\\":\\\\\\"channel-48\\\\\\",\\\\\\"counterPartyChannelId\\\\\\":\\\\\\"channel-8\\\\\\",\\\\\\"counterPartyPortId\\\\\\":\\\\\\"transfer\\\\\\",\\\\\\"ordering\\\\\\":0,\\\\\\"portId\\\\\\":\\\\\\"transfer\\\\\\",\\\\\\"state\\\\\\":3,\\\\\\"version\\\\\\":\\\\\\"ics20-1\\\\\\"}}\\",\\"slots\\":[]}"]}', + { + client_id: '07-tendermint-108', + counterparty: { + client_id: '07-tendermint-23', + connection_id: 'connection-9', + }, + id: 'connection-68', + state: 3, + transferChannel: { + channelId: 'channel-48', + counterPartyChannelId: 'channel-8', + counterPartyPortId: 'transfer', + ordering: 0, + portId: 'transfer', + state: 3, + version: 'ics20-1', + }, + }, ], [ 'published.agoricNames.chainConnection.juno-1_stargaze-1', - '{"blockHeight":"0","values":["{\\"body\\":\\"{\\\\\\"client_id\\\\\\":\\\\\\"07-tendermint-44\\\\\\",\\\\\\"counterparty\\\\\\":{\\\\\\"client_id\\\\\\":\\\\\\"07-tendermint-13\\\\\\",\\\\\\"connection_id\\\\\\":\\\\\\"connection-11\\\\\\"},\\\\\\"id\\\\\\":\\\\\\"connection-30\\\\\\",\\\\\\"state\\\\\\":3,\\\\\\"transferChannel\\\\\\":{\\\\\\"channelId\\\\\\":\\\\\\"channel-20\\\\\\",\\\\\\"counterPartyChannelId\\\\\\":\\\\\\"channel-5\\\\\\",\\\\\\"counterPartyPortId\\\\\\":\\\\\\"transfer\\\\\\",\\\\\\"ordering\\\\\\":0,\\\\\\"portId\\\\\\":\\\\\\"transfer\\\\\\",\\\\\\"state\\\\\\":3,\\\\\\"version\\\\\\":\\\\\\"ics20-1\\\\\\"}}\\",\\"slots\\":[]}"]}', + { + client_id: '07-tendermint-44', + counterparty: { + client_id: '07-tendermint-13', + connection_id: 'connection-11', + }, + id: 'connection-30', + state: 3, + transferChannel: { + channelId: 'channel-20', + counterPartyChannelId: 'channel-5', + counterPartyPortId: 'transfer', + ordering: 0, + portId: 'transfer', + state: 3, + version: 'ics20-1', + }, + }, ], [ 'published.agoricNames.chainConnection.juno-1_stride-1', - '{"blockHeight":"0","values":["{\\"body\\":\\"{\\\\\\"client_id\\\\\\":\\\\\\"07-tendermint-263\\\\\\",\\\\\\"counterparty\\\\\\":{\\\\\\"client_id\\\\\\":\\\\\\"07-tendermint-31\\\\\\",\\\\\\"connection_id\\\\\\":\\\\\\"connection-19\\\\\\"},\\\\\\"id\\\\\\":\\\\\\"connection-205\\\\\\",\\\\\\"state\\\\\\":3,\\\\\\"transferChannel\\\\\\":{\\\\\\"channelId\\\\\\":\\\\\\"channel-139\\\\\\",\\\\\\"counterPartyChannelId\\\\\\":\\\\\\"channel-24\\\\\\",\\\\\\"counterPartyPortId\\\\\\":\\\\\\"transfer\\\\\\",\\\\\\"ordering\\\\\\":0,\\\\\\"portId\\\\\\":\\\\\\"transfer\\\\\\",\\\\\\"state\\\\\\":3,\\\\\\"version\\\\\\":\\\\\\"ics20-1\\\\\\"}}\\",\\"slots\\":[]}"]}', + { + client_id: '07-tendermint-263', + counterparty: { + client_id: '07-tendermint-31', + connection_id: 'connection-19', + }, + id: 'connection-205', + state: 3, + transferChannel: { + channelId: 'channel-139', + counterPartyChannelId: 'channel-24', + counterPartyPortId: 'transfer', + ordering: 0, + portId: 'transfer', + state: 3, + version: 'ics20-1', + }, + }, ], [ 'published.agoricNames.chainConnection.neutron-1_noble-1', - '{"blockHeight":"0","values":["{\\"body\\":\\"{\\\\\\"client_id\\\\\\":\\\\\\"07-tendermint-40\\\\\\",\\\\\\"counterparty\\\\\\":{\\\\\\"client_id\\\\\\":\\\\\\"07-tendermint-25\\\\\\",\\\\\\"connection_id\\\\\\":\\\\\\"connection-34\\\\\\"},\\\\\\"id\\\\\\":\\\\\\"connection-31\\\\\\",\\\\\\"state\\\\\\":3,\\\\\\"transferChannel\\\\\\":{\\\\\\"channelId\\\\\\":\\\\\\"channel-30\\\\\\",\\\\\\"counterPartyChannelId\\\\\\":\\\\\\"channel-18\\\\\\",\\\\\\"counterPartyPortId\\\\\\":\\\\\\"transfer\\\\\\",\\\\\\"ordering\\\\\\":0,\\\\\\"portId\\\\\\":\\\\\\"transfer\\\\\\",\\\\\\"state\\\\\\":3,\\\\\\"version\\\\\\":\\\\\\"ics20-1\\\\\\"}}\\",\\"slots\\":[]}"]}', + { + client_id: '07-tendermint-40', + counterparty: { + client_id: '07-tendermint-25', + connection_id: 'connection-34', + }, + id: 'connection-31', + state: 3, + transferChannel: { + channelId: 'channel-30', + counterPartyChannelId: 'channel-18', + counterPartyPortId: 'transfer', + ordering: 0, + portId: 'transfer', + state: 3, + version: 'ics20-1', + }, + }, ], [ 'published.agoricNames.chainConnection.neutron-1_osmosis-1', - '{"blockHeight":"0","values":["{\\"body\\":\\"{\\\\\\"client_id\\\\\\":\\\\\\"07-tendermint-19\\\\\\",\\\\\\"counterparty\\\\\\":{\\\\\\"client_id\\\\\\":\\\\\\"07-tendermint-2823\\\\\\",\\\\\\"connection_id\\\\\\":\\\\\\"connection-2338\\\\\\"},\\\\\\"id\\\\\\":\\\\\\"connection-18\\\\\\",\\\\\\"state\\\\\\":3,\\\\\\"transferChannel\\\\\\":{\\\\\\"channelId\\\\\\":\\\\\\"channel-10\\\\\\",\\\\\\"counterPartyChannelId\\\\\\":\\\\\\"channel-874\\\\\\",\\\\\\"counterPartyPortId\\\\\\":\\\\\\"transfer\\\\\\",\\\\\\"ordering\\\\\\":0,\\\\\\"portId\\\\\\":\\\\\\"transfer\\\\\\",\\\\\\"state\\\\\\":3,\\\\\\"version\\\\\\":\\\\\\"ics20-1\\\\\\"}}\\",\\"slots\\":[]}"]}', + { + client_id: '07-tendermint-19', + counterparty: { + client_id: '07-tendermint-2823', + connection_id: 'connection-2338', + }, + id: 'connection-18', + state: 3, + transferChannel: { + channelId: 'channel-10', + counterPartyChannelId: 'channel-874', + counterPartyPortId: 'transfer', + ordering: 0, + portId: 'transfer', + state: 3, + version: 'ics20-1', + }, + }, ], [ 'published.agoricNames.chainConnection.neutron-1_secret-4', - '{"blockHeight":"0","values":["{\\"body\\":\\"{\\\\\\"client_id\\\\\\":\\\\\\"07-tendermint-85\\\\\\",\\\\\\"counterparty\\\\\\":{\\\\\\"client_id\\\\\\":\\\\\\"07-tendermint-199\\\\\\",\\\\\\"connection_id\\\\\\":\\\\\\"connection-192\\\\\\"},\\\\\\"id\\\\\\":\\\\\\"connection-63\\\\\\",\\\\\\"state\\\\\\":3,\\\\\\"transferChannel\\\\\\":{\\\\\\"channelId\\\\\\":\\\\\\"channel-1551\\\\\\",\\\\\\"counterPartyChannelId\\\\\\":\\\\\\"channel-144\\\\\\",\\\\\\"counterPartyPortId\\\\\\":\\\\\\"transfer\\\\\\",\\\\\\"ordering\\\\\\":0,\\\\\\"portId\\\\\\":\\\\\\"transfer\\\\\\",\\\\\\"state\\\\\\":3,\\\\\\"version\\\\\\":\\\\\\"ics20-1\\\\\\"}}\\",\\"slots\\":[]}"]}', + { + client_id: '07-tendermint-85', + counterparty: { + client_id: '07-tendermint-199', + connection_id: 'connection-192', + }, + id: 'connection-63', + state: 3, + transferChannel: { + channelId: 'channel-1551', + counterPartyChannelId: 'channel-144', + counterPartyPortId: 'transfer', + ordering: 0, + portId: 'transfer', + state: 3, + version: 'ics20-1', + }, + }, ], [ 'published.agoricNames.chainConnection.neutron-1_stargaze-1', - '{"blockHeight":"0","values":["{\\"body\\":\\"{\\\\\\"client_id\\\\\\":\\\\\\"07-tendermint-31\\\\\\",\\\\\\"counterparty\\\\\\":{\\\\\\"client_id\\\\\\":\\\\\\"07-tendermint-283\\\\\\",\\\\\\"connection_id\\\\\\":\\\\\\"connection-211\\\\\\"},\\\\\\"id\\\\\\":\\\\\\"connection-23\\\\\\",\\\\\\"state\\\\\\":3,\\\\\\"transferChannel\\\\\\":{\\\\\\"channelId\\\\\\":\\\\\\"channel-18\\\\\\",\\\\\\"counterPartyChannelId\\\\\\":\\\\\\"channel-191\\\\\\",\\\\\\"counterPartyPortId\\\\\\":\\\\\\"transfer\\\\\\",\\\\\\"ordering\\\\\\":0,\\\\\\"portId\\\\\\":\\\\\\"transfer\\\\\\",\\\\\\"state\\\\\\":3,\\\\\\"version\\\\\\":\\\\\\"ics20-1\\\\\\"}}\\",\\"slots\\":[]}"]}', + { + client_id: '07-tendermint-31', + counterparty: { + client_id: '07-tendermint-283', + connection_id: 'connection-211', + }, + id: 'connection-23', + state: 3, + transferChannel: { + channelId: 'channel-18', + counterPartyChannelId: 'channel-191', + counterPartyPortId: 'transfer', + ordering: 0, + portId: 'transfer', + state: 3, + version: 'ics20-1', + }, + }, ], [ 'published.agoricNames.chainConnection.neutron-1_stride-1', - '{"blockHeight":"0","values":["{\\"body\\":\\"{\\\\\\"client_id\\\\\\":\\\\\\"07-tendermint-18\\\\\\",\\\\\\"counterparty\\\\\\":{\\\\\\"client_id\\\\\\":\\\\\\"07-tendermint-125\\\\\\",\\\\\\"connection_id\\\\\\":\\\\\\"connection-113\\\\\\"},\\\\\\"id\\\\\\":\\\\\\"connection-15\\\\\\",\\\\\\"state\\\\\\":3,\\\\\\"transferChannel\\\\\\":{\\\\\\"channelId\\\\\\":\\\\\\"channel-8\\\\\\",\\\\\\"counterPartyChannelId\\\\\\":\\\\\\"channel-123\\\\\\",\\\\\\"counterPartyPortId\\\\\\":\\\\\\"transfer\\\\\\",\\\\\\"ordering\\\\\\":0,\\\\\\"portId\\\\\\":\\\\\\"transfer\\\\\\",\\\\\\"state\\\\\\":3,\\\\\\"version\\\\\\":\\\\\\"ics20-1\\\\\\"}}\\",\\"slots\\":[]}"]}', + { + client_id: '07-tendermint-18', + counterparty: { + client_id: '07-tendermint-125', + connection_id: 'connection-113', + }, + id: 'connection-15', + state: 3, + transferChannel: { + channelId: 'channel-8', + counterPartyChannelId: 'channel-123', + counterPartyPortId: 'transfer', + ordering: 0, + portId: 'transfer', + state: 3, + version: 'ics20-1', + }, + }, ], [ 'published.agoricNames.chainConnection.noble-1_omniflixhub-1', - '{"blockHeight":"0","values":["{\\"body\\":\\"{\\\\\\"client_id\\\\\\":\\\\\\"07-tendermint-68\\\\\\",\\\\\\"counterparty\\\\\\":{\\\\\\"client_id\\\\\\":\\\\\\"07-tendermint-51\\\\\\",\\\\\\"connection_id\\\\\\":\\\\\\"connection-49\\\\\\"},\\\\\\"id\\\\\\":\\\\\\"connection-65\\\\\\",\\\\\\"state\\\\\\":3,\\\\\\"transferChannel\\\\\\":{\\\\\\"channelId\\\\\\":\\\\\\"channel-44\\\\\\",\\\\\\"counterPartyChannelId\\\\\\":\\\\\\"channel-38\\\\\\",\\\\\\"counterPartyPortId\\\\\\":\\\\\\"transfer\\\\\\",\\\\\\"ordering\\\\\\":0,\\\\\\"portId\\\\\\":\\\\\\"transfer\\\\\\",\\\\\\"state\\\\\\":3,\\\\\\"version\\\\\\":\\\\\\"ics20-1\\\\\\"}}\\",\\"slots\\":[]}"]}', + { + client_id: '07-tendermint-68', + counterparty: { + client_id: '07-tendermint-51', + connection_id: 'connection-49', + }, + id: 'connection-65', + state: 3, + transferChannel: { + channelId: 'channel-44', + counterPartyChannelId: 'channel-38', + counterPartyPortId: 'transfer', + ordering: 0, + portId: 'transfer', + state: 3, + version: 'ics20-1', + }, + }, ], [ 'published.agoricNames.chainConnection.noble-1_osmosis-1', - '{"blockHeight":"0","values":["{\\"body\\":\\"{\\\\\\"client_id\\\\\\":\\\\\\"07-tendermint-0\\\\\\",\\\\\\"counterparty\\\\\\":{\\\\\\"client_id\\\\\\":\\\\\\"07-tendermint-2704\\\\\\",\\\\\\"connection_id\\\\\\":\\\\\\"connection-2241\\\\\\"},\\\\\\"id\\\\\\":\\\\\\"connection-2\\\\\\",\\\\\\"state\\\\\\":3,\\\\\\"transferChannel\\\\\\":{\\\\\\"channelId\\\\\\":\\\\\\"channel-1\\\\\\",\\\\\\"counterPartyChannelId\\\\\\":\\\\\\"channel-750\\\\\\",\\\\\\"counterPartyPortId\\\\\\":\\\\\\"transfer\\\\\\",\\\\\\"ordering\\\\\\":0,\\\\\\"portId\\\\\\":\\\\\\"transfer\\\\\\",\\\\\\"state\\\\\\":3,\\\\\\"version\\\\\\":\\\\\\"ics20-1\\\\\\"}}\\",\\"slots\\":[]}"]}', + { + client_id: '07-tendermint-0', + counterparty: { + client_id: '07-tendermint-2704', + connection_id: 'connection-2241', + }, + id: 'connection-2', + state: 3, + transferChannel: { + channelId: 'channel-1', + counterPartyChannelId: 'channel-750', + counterPartyPortId: 'transfer', + ordering: 0, + portId: 'transfer', + state: 3, + version: 'ics20-1', + }, + }, ], [ 'published.agoricNames.chainConnection.noble-1_secret-4', - '{"blockHeight":"0","values":["{\\"body\\":\\"{\\\\\\"client_id\\\\\\":\\\\\\"07-tendermint-24\\\\\\",\\\\\\"counterparty\\\\\\":{\\\\\\"client_id\\\\\\":\\\\\\"07-tendermint-170\\\\\\",\\\\\\"connection_id\\\\\\":\\\\\\"connection-127\\\\\\"},\\\\\\"id\\\\\\":\\\\\\"connection-33\\\\\\",\\\\\\"state\\\\\\":3,\\\\\\"transferChannel\\\\\\":{\\\\\\"channelId\\\\\\":\\\\\\"channel-17\\\\\\",\\\\\\"counterPartyChannelId\\\\\\":\\\\\\"channel-88\\\\\\",\\\\\\"counterPartyPortId\\\\\\":\\\\\\"transfer\\\\\\",\\\\\\"ordering\\\\\\":0,\\\\\\"portId\\\\\\":\\\\\\"transfer\\\\\\",\\\\\\"state\\\\\\":3,\\\\\\"version\\\\\\":\\\\\\"ics20-1\\\\\\"}}\\",\\"slots\\":[]}"]}', + { + client_id: '07-tendermint-24', + counterparty: { + client_id: '07-tendermint-170', + connection_id: 'connection-127', + }, + id: 'connection-33', + state: 3, + transferChannel: { + channelId: 'channel-17', + counterPartyChannelId: 'channel-88', + counterPartyPortId: 'transfer', + ordering: 0, + portId: 'transfer', + state: 3, + version: 'ics20-1', + }, + }, ], [ 'published.agoricNames.chainConnection.noble-1_stargaze-1', - '{"blockHeight":"0","values":["{\\"body\\":\\"{\\\\\\"client_id\\\\\\":\\\\\\"07-tendermint-16\\\\\\",\\\\\\"counterparty\\\\\\":{\\\\\\"client_id\\\\\\":\\\\\\"07-tendermint-287\\\\\\",\\\\\\"connection_id\\\\\\":\\\\\\"connection-214\\\\\\"},\\\\\\"id\\\\\\":\\\\\\"connection-25\\\\\\",\\\\\\"state\\\\\\":3,\\\\\\"transferChannel\\\\\\":{\\\\\\"channelId\\\\\\":\\\\\\"channel-11\\\\\\",\\\\\\"counterPartyChannelId\\\\\\":\\\\\\"channel-204\\\\\\",\\\\\\"counterPartyPortId\\\\\\":\\\\\\"transfer\\\\\\",\\\\\\"ordering\\\\\\":0,\\\\\\"portId\\\\\\":\\\\\\"transfer\\\\\\",\\\\\\"state\\\\\\":3,\\\\\\"version\\\\\\":\\\\\\"ics20-1\\\\\\"}}\\",\\"slots\\":[]}"]}', + { + client_id: '07-tendermint-16', + counterparty: { + client_id: '07-tendermint-287', + connection_id: 'connection-214', + }, + id: 'connection-25', + state: 3, + transferChannel: { + channelId: 'channel-11', + counterPartyChannelId: 'channel-204', + counterPartyPortId: 'transfer', + ordering: 0, + portId: 'transfer', + state: 3, + version: 'ics20-1', + }, + }, ], [ 'published.agoricNames.chainConnection.noble-1_umee-1', - '{"blockHeight":"0","values":["{\\"body\\":\\"{\\\\\\"client_id\\\\\\":\\\\\\"07-tendermint-73\\\\\\",\\\\\\"counterparty\\\\\\":{\\\\\\"client_id\\\\\\":\\\\\\"07-tendermint-248\\\\\\",\\\\\\"connection_id\\\\\\":\\\\\\"connection-210\\\\\\"},\\\\\\"id\\\\\\":\\\\\\"connection-74\\\\\\",\\\\\\"state\\\\\\":3,\\\\\\"transferChannel\\\\\\":{\\\\\\"channelId\\\\\\":\\\\\\"channel-51\\\\\\",\\\\\\"counterPartyChannelId\\\\\\":\\\\\\"channel-120\\\\\\",\\\\\\"counterPartyPortId\\\\\\":\\\\\\"transfer\\\\\\",\\\\\\"ordering\\\\\\":0,\\\\\\"portId\\\\\\":\\\\\\"transfer\\\\\\",\\\\\\"state\\\\\\":3,\\\\\\"version\\\\\\":\\\\\\"ics20-1\\\\\\"}}\\",\\"slots\\":[]}"]}', + { + client_id: '07-tendermint-73', + counterparty: { + client_id: '07-tendermint-248', + connection_id: 'connection-210', + }, + id: 'connection-74', + state: 3, + transferChannel: { + channelId: 'channel-51', + counterPartyChannelId: 'channel-120', + counterPartyPortId: 'transfer', + ordering: 0, + portId: 'transfer', + state: 3, + version: 'ics20-1', + }, + }, ], [ 'published.agoricNames.chainConnection.omniflixhub-1_osmosis-1', - '{"blockHeight":"0","values":["{\\"body\\":\\"{\\\\\\"client_id\\\\\\":\\\\\\"07-tendermint-8\\\\\\",\\\\\\"counterparty\\\\\\":{\\\\\\"client_id\\\\\\":\\\\\\"07-tendermint-1829\\\\\\",\\\\\\"connection_id\\\\\\":\\\\\\"connection-1431\\\\\\"},\\\\\\"id\\\\\\":\\\\\\"connection-8\\\\\\",\\\\\\"state\\\\\\":3,\\\\\\"transferChannel\\\\\\":{\\\\\\"channelId\\\\\\":\\\\\\"channel-1\\\\\\",\\\\\\"counterPartyChannelId\\\\\\":\\\\\\"channel-199\\\\\\",\\\\\\"counterPartyPortId\\\\\\":\\\\\\"transfer\\\\\\",\\\\\\"ordering\\\\\\":0,\\\\\\"portId\\\\\\":\\\\\\"transfer\\\\\\",\\\\\\"state\\\\\\":3,\\\\\\"version\\\\\\":\\\\\\"ics20-1\\\\\\"}}\\",\\"slots\\":[]}"]}', + { + client_id: '07-tendermint-8', + counterparty: { + client_id: '07-tendermint-1829', + connection_id: 'connection-1431', + }, + id: 'connection-8', + state: 3, + transferChannel: { + channelId: 'channel-1', + counterPartyChannelId: 'channel-199', + counterPartyPortId: 'transfer', + ordering: 0, + portId: 'transfer', + state: 3, + version: 'ics20-1', + }, + }, ], [ 'published.agoricNames.chainConnection.osmosis-1_secret-4', - '{"blockHeight":"0","values":["{\\"body\\":\\"{\\\\\\"client_id\\\\\\":\\\\\\"07-tendermint-1588\\\\\\",\\\\\\"counterparty\\\\\\":{\\\\\\"client_id\\\\\\":\\\\\\"07-tendermint-2\\\\\\",\\\\\\"connection_id\\\\\\":\\\\\\"connection-1\\\\\\"},\\\\\\"id\\\\\\":\\\\\\"connection-1244\\\\\\",\\\\\\"state\\\\\\":3,\\\\\\"transferChannel\\\\\\":{\\\\\\"channelId\\\\\\":\\\\\\"channel-88\\\\\\",\\\\\\"counterPartyChannelId\\\\\\":\\\\\\"channel-1\\\\\\",\\\\\\"counterPartyPortId\\\\\\":\\\\\\"transfer\\\\\\",\\\\\\"ordering\\\\\\":0,\\\\\\"portId\\\\\\":\\\\\\"transfer\\\\\\",\\\\\\"state\\\\\\":3,\\\\\\"version\\\\\\":\\\\\\"ics20-1\\\\\\"}}\\",\\"slots\\":[]}"]}', + { + client_id: '07-tendermint-1588', + counterparty: { + client_id: '07-tendermint-2', + connection_id: 'connection-1', + }, + id: 'connection-1244', + state: 3, + transferChannel: { + channelId: 'channel-88', + counterPartyChannelId: 'channel-1', + counterPartyPortId: 'transfer', + ordering: 0, + portId: 'transfer', + state: 3, + version: 'ics20-1', + }, + }, ], [ 'published.agoricNames.chainConnection.osmosis-1_stargaze-1', - '{"blockHeight":"0","values":["{\\"body\\":\\"{\\\\\\"client_id\\\\\\":\\\\\\"07-tendermint-1562\\\\\\",\\\\\\"counterparty\\\\\\":{\\\\\\"client_id\\\\\\":\\\\\\"07-tendermint-0\\\\\\",\\\\\\"connection_id\\\\\\":\\\\\\"connection-0\\\\\\"},\\\\\\"id\\\\\\":\\\\\\"connection-1223\\\\\\",\\\\\\"state\\\\\\":3,\\\\\\"transferChannel\\\\\\":{\\\\\\"channelId\\\\\\":\\\\\\"channel-75\\\\\\",\\\\\\"counterPartyChannelId\\\\\\":\\\\\\"channel-0\\\\\\",\\\\\\"counterPartyPortId\\\\\\":\\\\\\"transfer\\\\\\",\\\\\\"ordering\\\\\\":0,\\\\\\"portId\\\\\\":\\\\\\"transfer\\\\\\",\\\\\\"state\\\\\\":3,\\\\\\"version\\\\\\":\\\\\\"ics20-1\\\\\\"}}\\",\\"slots\\":[]}"]}', + { + client_id: '07-tendermint-1562', + counterparty: { + client_id: '07-tendermint-0', + connection_id: 'connection-0', + }, + id: 'connection-1223', + state: 3, + transferChannel: { + channelId: 'channel-75', + counterPartyChannelId: 'channel-0', + counterPartyPortId: 'transfer', + ordering: 0, + portId: 'transfer', + state: 3, + version: 'ics20-1', + }, + }, ], [ 'published.agoricNames.chainConnection.osmosis-1_stride-1', - '{"blockHeight":"0","values":["{\\"body\\":\\"{\\\\\\"client_id\\\\\\":\\\\\\"07-tendermint-2119\\\\\\",\\\\\\"counterparty\\\\\\":{\\\\\\"client_id\\\\\\":\\\\\\"07-tendermint-1\\\\\\",\\\\\\"connection_id\\\\\\":\\\\\\"connection-2\\\\\\"},\\\\\\"id\\\\\\":\\\\\\"connection-1657\\\\\\",\\\\\\"state\\\\\\":3,\\\\\\"transferChannel\\\\\\":{\\\\\\"channelId\\\\\\":\\\\\\"channel-326\\\\\\",\\\\\\"counterPartyChannelId\\\\\\":\\\\\\"channel-5\\\\\\",\\\\\\"counterPartyPortId\\\\\\":\\\\\\"transfer\\\\\\",\\\\\\"ordering\\\\\\":0,\\\\\\"portId\\\\\\":\\\\\\"transfer\\\\\\",\\\\\\"state\\\\\\":3,\\\\\\"version\\\\\\":\\\\\\"ics20-1\\\\\\"}}\\",\\"slots\\":[]}"]}', + { + client_id: '07-tendermint-2119', + counterparty: { + client_id: '07-tendermint-1', + connection_id: 'connection-2', + }, + id: 'connection-1657', + state: 3, + transferChannel: { + channelId: 'channel-326', + counterPartyChannelId: 'channel-5', + counterPartyPortId: 'transfer', + ordering: 0, + portId: 'transfer', + state: 3, + version: 'ics20-1', + }, + }, ], [ 'published.agoricNames.chainConnection.osmosis-1_umee-1', - '{"blockHeight":"0","values":["{\\"body\\":\\"{\\\\\\"client_id\\\\\\":\\\\\\"07-tendermint-1805\\\\\\",\\\\\\"counterparty\\\\\\":{\\\\\\"client_id\\\\\\":\\\\\\"07-tendermint-6\\\\\\",\\\\\\"connection_id\\\\\\":\\\\\\"connection-0\\\\\\"},\\\\\\"id\\\\\\":\\\\\\"connection-1410\\\\\\",\\\\\\"state\\\\\\":3,\\\\\\"transferChannel\\\\\\":{\\\\\\"channelId\\\\\\":\\\\\\"channel-184\\\\\\",\\\\\\"counterPartyChannelId\\\\\\":\\\\\\"channel-0\\\\\\",\\\\\\"counterPartyPortId\\\\\\":\\\\\\"transfer\\\\\\",\\\\\\"ordering\\\\\\":0,\\\\\\"portId\\\\\\":\\\\\\"transfer\\\\\\",\\\\\\"state\\\\\\":3,\\\\\\"version\\\\\\":\\\\\\"ics20-1\\\\\\"}}\\",\\"slots\\":[]}"]}', + { + client_id: '07-tendermint-1805', + counterparty: { + client_id: '07-tendermint-6', + connection_id: 'connection-0', + }, + id: 'connection-1410', + state: 3, + transferChannel: { + channelId: 'channel-184', + counterPartyChannelId: 'channel-0', + counterPartyPortId: 'transfer', + ordering: 0, + portId: 'transfer', + state: 3, + version: 'ics20-1', + }, + }, ], [ 'published.agoricNames.chainConnection.secret-4_stargaze-1', - '{"blockHeight":"0","values":["{\\"body\\":\\"{\\\\\\"client_id\\\\\\":\\\\\\"07-tendermint-43\\\\\\",\\\\\\"counterparty\\\\\\":{\\\\\\"client_id\\\\\\":\\\\\\"07-tendermint-177\\\\\\",\\\\\\"connection_id\\\\\\":\\\\\\"connection-110\\\\\\"},\\\\\\"id\\\\\\":\\\\\\"connection-25\\\\\\",\\\\\\"state\\\\\\":3,\\\\\\"transferChannel\\\\\\":{\\\\\\"channelId\\\\\\":\\\\\\"channel-19\\\\\\",\\\\\\"counterPartyChannelId\\\\\\":\\\\\\"channel-48\\\\\\",\\\\\\"counterPartyPortId\\\\\\":\\\\\\"transfer\\\\\\",\\\\\\"ordering\\\\\\":0,\\\\\\"portId\\\\\\":\\\\\\"transfer\\\\\\",\\\\\\"state\\\\\\":3,\\\\\\"version\\\\\\":\\\\\\"ics20-1\\\\\\"}}\\",\\"slots\\":[]}"]}', + { + client_id: '07-tendermint-43', + counterparty: { + client_id: '07-tendermint-177', + connection_id: 'connection-110', + }, + id: 'connection-25', + state: 3, + transferChannel: { + channelId: 'channel-19', + counterPartyChannelId: 'channel-48', + counterPartyPortId: 'transfer', + ordering: 0, + portId: 'transfer', + state: 3, + version: 'ics20-1', + }, + }, ], [ 'published.agoricNames.chainConnection.secret-4_stride-1', - '{"blockHeight":"0","values":["{\\"body\\":\\"{\\\\\\"client_id\\\\\\":\\\\\\"07-tendermint-75\\\\\\",\\\\\\"counterparty\\\\\\":{\\\\\\"client_id\\\\\\":\\\\\\"07-tendermint-37\\\\\\",\\\\\\"connection_id\\\\\\":\\\\\\"connection-25\\\\\\"},\\\\\\"id\\\\\\":\\\\\\"connection-40\\\\\\",\\\\\\"state\\\\\\":3,\\\\\\"transferChannel\\\\\\":{\\\\\\"channelId\\\\\\":\\\\\\"channel-37\\\\\\",\\\\\\"counterPartyChannelId\\\\\\":\\\\\\"channel-40\\\\\\",\\\\\\"counterPartyPortId\\\\\\":\\\\\\"transfer\\\\\\",\\\\\\"ordering\\\\\\":0,\\\\\\"portId\\\\\\":\\\\\\"transfer\\\\\\",\\\\\\"state\\\\\\":3,\\\\\\"version\\\\\\":\\\\\\"ics20-1\\\\\\"}}\\",\\"slots\\":[]}"]}', + { + client_id: '07-tendermint-75', + counterparty: { + client_id: '07-tendermint-37', + connection_id: 'connection-25', + }, + id: 'connection-40', + state: 3, + transferChannel: { + channelId: 'channel-37', + counterPartyChannelId: 'channel-40', + counterPartyPortId: 'transfer', + ordering: 0, + portId: 'transfer', + state: 3, + version: 'ics20-1', + }, + }, ], [ 'published.agoricNames.chainConnection.secret-4_umee-1', - '{"blockHeight":"0","values":["{\\"body\\":\\"{\\\\\\"client_id\\\\\\":\\\\\\"07-tendermint-193\\\\\\",\\\\\\"counterparty\\\\\\":{\\\\\\"client_id\\\\\\":\\\\\\"07-tendermint-249\\\\\\",\\\\\\"connection_id\\\\\\":\\\\\\"connection-213\\\\\\"},\\\\\\"id\\\\\\":\\\\\\"connection-188\\\\\\",\\\\\\"state\\\\\\":3,\\\\\\"transferChannel\\\\\\":{\\\\\\"channelId\\\\\\":\\\\\\"channel-126\\\\\\",\\\\\\"counterPartyChannelId\\\\\\":\\\\\\"channel-123\\\\\\",\\\\\\"counterPartyPortId\\\\\\":\\\\\\"transfer\\\\\\",\\\\\\"ordering\\\\\\":0,\\\\\\"portId\\\\\\":\\\\\\"transfer\\\\\\",\\\\\\"state\\\\\\":3,\\\\\\"version\\\\\\":\\\\\\"ics20-1\\\\\\"}}\\",\\"slots\\":[]}"]}', + { + client_id: '07-tendermint-193', + counterparty: { + client_id: '07-tendermint-249', + connection_id: 'connection-213', + }, + id: 'connection-188', + state: 3, + transferChannel: { + channelId: 'channel-126', + counterPartyChannelId: 'channel-123', + counterPartyPortId: 'transfer', + ordering: 0, + portId: 'transfer', + state: 3, + version: 'ics20-1', + }, + }, ], [ 'published.agoricNames.chainConnection.stargaze-1_stride-1', - '{"blockHeight":"0","values":["{\\"body\\":\\"{\\\\\\"client_id\\\\\\":\\\\\\"07-tendermint-195\\\\\\",\\\\\\"counterparty\\\\\\":{\\\\\\"client_id\\\\\\":\\\\\\"07-tendermint-30\\\\\\",\\\\\\"connection_id\\\\\\":\\\\\\"connection-18\\\\\\"},\\\\\\"id\\\\\\":\\\\\\"connection-128\\\\\\",\\\\\\"state\\\\\\":3,\\\\\\"transferChannel\\\\\\":{\\\\\\"channelId\\\\\\":\\\\\\"channel-106\\\\\\",\\\\\\"counterPartyChannelId\\\\\\":\\\\\\"channel-19\\\\\\",\\\\\\"counterPartyPortId\\\\\\":\\\\\\"transfer\\\\\\",\\\\\\"ordering\\\\\\":0,\\\\\\"portId\\\\\\":\\\\\\"transfer\\\\\\",\\\\\\"state\\\\\\":3,\\\\\\"version\\\\\\":\\\\\\"ics20-1\\\\\\"}}\\",\\"slots\\":[]}"]}', + { + client_id: '07-tendermint-195', + counterparty: { + client_id: '07-tendermint-30', + connection_id: 'connection-18', + }, + id: 'connection-128', + state: 3, + transferChannel: { + channelId: 'channel-106', + counterPartyChannelId: 'channel-19', + counterPartyPortId: 'transfer', + ordering: 0, + portId: 'transfer', + state: 3, + version: 'ics20-1', + }, + }, ], [ 'published.agoricNames.chainConnection.stride-1_umee-1', - '{"blockHeight":"0","values":["{\\"body\\":\\"{\\\\\\"client_id\\\\\\":\\\\\\"07-tendermint-32\\\\\\",\\\\\\"counterparty\\\\\\":{\\\\\\"client_id\\\\\\":\\\\\\"07-tendermint-64\\\\\\",\\\\\\"connection_id\\\\\\":\\\\\\"connection-45\\\\\\"},\\\\\\"id\\\\\\":\\\\\\"connection-20\\\\\\",\\\\\\"state\\\\\\":3,\\\\\\"transferChannel\\\\\\":{\\\\\\"channelId\\\\\\":\\\\\\"channel-29\\\\\\",\\\\\\"counterPartyChannelId\\\\\\":\\\\\\"channel-34\\\\\\",\\\\\\"counterPartyPortId\\\\\\":\\\\\\"transfer\\\\\\",\\\\\\"ordering\\\\\\":0,\\\\\\"portId\\\\\\":\\\\\\"transfer\\\\\\",\\\\\\"state\\\\\\":3,\\\\\\"version\\\\\\":\\\\\\"ics20-1\\\\\\"}}\\",\\"slots\\":[]}"]}', + { + client_id: '07-tendermint-32', + counterparty: { + client_id: '07-tendermint-64', + connection_id: 'connection-45', + }, + id: 'connection-20', + state: 3, + transferChannel: { + channelId: 'channel-29', + counterPartyChannelId: 'channel-34', + counterPartyPortId: 'transfer', + ordering: 0, + portId: 'transfer', + state: 3, + version: 'ics20-1', + }, + }, ], ] diff --git a/packages/boot/test/bootstrapTests/snapshots/orchestration.test.ts.snap b/packages/boot/test/bootstrapTests/snapshots/orchestration.test.ts.snap index fb7233f1a0e18e3dd5f5a08ae0912fc8677150f7..d018a0d07a009ba20614ceb6aaeff66e1cefe4aa 100644 GIT binary patch literal 14961 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 BX{P`H