From be9dee245a04714568a45ae8b328f54b20b43d8a Mon Sep 17 00:00:00 2001 From: Turadg Aleahmad Date: Mon, 24 Feb 2025 15:38:25 -0800 Subject: [PATCH 1/6] Revert "chore: remove 'encoding' from ChainAddress" This reverts commit 773b43272af2c9043007addfacc67ea62fd7a5ec. --- multichain-testing/test/auto-stake-it.test.ts | 1 + multichain-testing/test/send-anywhere.test.ts | 1 + multichain-testing/test/stake-ica.test.ts | 1 + packages/boot/test/bootstrapTests/lca.test.ts | 3 + .../test/bootstrapTests/orchestration.test.ts | 2 + .../orchestration/restart-contracts.test.ts | 1 + .../orchestration-imports.test.js.md | 168 ++++++++---------- .../orchestration-imports.test.js.snap | Bin 4210 -> 4174 bytes packages/fast-usdc/test/exos/advancer.test.ts | 3 + packages/fast-usdc/test/exos/settler.test.ts | 2 + .../test/exos/snapshots/advancer.test.ts.md | 48 +++-- .../test/exos/snapshots/advancer.test.ts.snap | Bin 603 -> 540 bytes .../test/exos/snapshots/settler.test.ts.md | 24 ++- .../test/exos/snapshots/settler.test.ts.snap | Bin 753 -> 695 bytes packages/fast-usdc/test/fixtures.ts | 2 + packages/orchestration/src/cosmos-api.ts | 1 + .../src/examples/send-anywhere.flows.js | 1 + .../src/examples/stake-bld.contract.js | 1 + packages/orchestration/src/exos/chain-hub.js | 2 + .../orchestration/src/exos/ica-account-kit.js | 1 + .../src/exos/local-chain-facade.js | 1 + .../src/exos/portfolio-holder-kit.js | 1 + .../orchestration/src/orchestration-api.ts | 1 + packages/orchestration/src/typeGuards.js | 16 +- packages/orchestration/src/utils/cosmos.js | 2 + packages/orchestration/src/utils/orc.js | 2 + .../examples/auto-stake-it.contract.test.ts | 2 + .../snapshots/stake-ica.contract.test.ts.md | 2 +- .../snapshots/stake-ica.contract.test.ts.snap | Bin 629 -> 627 bytes .../test/examples/stake-ica.contract.test.ts | 3 +- .../examples/staking-combinations.test.ts | 4 + .../test/examples/swap.contract.test.ts | 1 + .../exos/chain-hub-transfer-routes.test.ts | 2 + .../orchestration/test/exos/chain-hub.test.ts | 1 + .../exos/cosmos-orchestration-account.test.ts | 9 + .../local-orchestration-account-kit.test.ts | 4 + .../test/exos/make-test-loa-kit.ts | 1 + .../test/exos/portfolio-holder-kit.test.ts | 1 + .../orchestration/test/staking-ops.test.ts | 3 + .../orchestration/test/tx-encoding.test.ts | 2 +- .../orchestration/test/typeGuards.test.ts | 27 +-- packages/orchestration/test/types.test-d.ts | 3 + .../test/utils/zoe-tools.test.ts | 2 + 43 files changed, 187 insertions(+), 165 deletions(-) diff --git a/multichain-testing/test/auto-stake-it.test.ts b/multichain-testing/test/auto-stake-it.test.ts index 1716ed59efe..10e3bac8db8 100644 --- a/multichain-testing/test/auto-stake-it.test.ts +++ b/multichain-testing/test/auto-stake-it.test.ts @@ -89,6 +89,7 @@ const autoStakeItScenario = test.macro({ chainName, validator: { value: validatorAddress, + encoding: 'bech32', chainId: remoteChainInfo.chainId, }, }, diff --git a/multichain-testing/test/send-anywhere.test.ts b/multichain-testing/test/send-anywhere.test.ts index 9f4020323e6..df4bbdca8d6 100644 --- a/multichain-testing/test/send-anywhere.test.ts +++ b/multichain-testing/test/send-anywhere.test.ts @@ -84,6 +84,7 @@ const sendAnywhereScenario = test.macro({ const receiver = { chainId: chain.chain_id, value: (await wallet.getAccounts())[0].address, + encoding: 'bech32', }; t.log('Will send payment to:', receiver); t.log(`${destChainName} offer`); diff --git a/multichain-testing/test/stake-ica.test.ts b/multichain-testing/test/stake-ica.test.ts index 1f2f6f3f68e..c0d118734b7 100644 --- a/multichain-testing/test/stake-ica.test.ts +++ b/multichain-testing/test/stake-ica.test.ts @@ -126,6 +126,7 @@ const stakeScenario = test.macro(async (t, scenario: StakeIcaScenario) => { const validatorChainAddress = { value: validatorAddress, chainId: scenario.chainId, + encoding: 'bech32', }; await doOffer({ id: delegateOfferId, diff --git a/packages/boot/test/bootstrapTests/lca.test.ts b/packages/boot/test/bootstrapTests/lca.test.ts index ceec92f944e..df475d8a484 100644 --- a/packages/boot/test/bootstrapTests/lca.test.ts +++ b/packages/boot/test/bootstrapTests/lca.test.ts @@ -130,6 +130,7 @@ test.serial('stakeBld', async t => { toAccount: { value: 'agoric1EOAAccAddress', chainId: 'agoriclocal', + encoding: 'bech32', }, amount: { denom: 'ibc/1234', value: 10n }, }, @@ -150,6 +151,7 @@ test.serial('stakeBld', async t => { toAccount: { value: 'agoric1EOAAccAddress', chainId: 'agoriclocal', + encoding: 'bech32', }, amounts: [ { denom: 'uatom', value: 10n }, @@ -174,6 +176,7 @@ test.serial('stakeBld', async t => { toAccount: { value: 'agoric1EOAAccAddress', chainId: 'agoriclocal', + encoding: 'bech32', }, amount: { denom: 'ibc/1234', diff --git a/packages/boot/test/bootstrapTests/orchestration.test.ts b/packages/boot/test/bootstrapTests/orchestration.test.ts index 668a798de51..e59e5f1d20c 100644 --- a/packages/boot/test/bootstrapTests/orchestration.test.ts +++ b/packages/boot/test/bootstrapTests/orchestration.test.ts @@ -35,6 +35,7 @@ const test: TestFn< const validatorAddress: CosmosValidatorAddress = { value: 'cosmosvaloper1test', chainId: 'gaiatest', + encoding: 'bech32', }; const ATOM_DENOM = 'uatom'; @@ -235,6 +236,7 @@ test.serial('stakeAtom - smart wallet', async t => { const validatorAddressFail: CosmosValidatorAddress = { value: 'cosmosvaloper1fail', chainId: 'gaiatest', + encoding: 'bech32', }; // This will trigger the immediate ack of the mock bridge diff --git a/packages/boot/test/orchestration/restart-contracts.test.ts b/packages/boot/test/orchestration/restart-contracts.test.ts index 63dd30518e4..593f4b71deb 100644 --- a/packages/boot/test/orchestration/restart-contracts.test.ts +++ b/packages/boot/test/orchestration/restart-contracts.test.ts @@ -127,6 +127,7 @@ test.serial('send-anywhere', async t => { const validatorAddress: CosmosValidatorAddress = { value: 'cosmosvaloper1test', chainId: 'gaiatest', + encoding: 'bech32', }; const ATOM_DENOM = 'uatom'; diff --git a/packages/builders/test/snapshots/orchestration-imports.test.js.md b/packages/builders/test/snapshots/orchestration-imports.test.js.md index b7e8a61bc42..4030cf35908 100644 --- a/packages/builders/test/snapshots/orchestration-imports.test.js.md +++ b/packages/builders/test/snapshots/orchestration-imports.test.js.md @@ -14,20 +14,16 @@ Generated by [AVA](https://avajs.dev). Object @match:string { payload: [], }, - Object @match:splitRecord { - payload: [ - { - chainId: Object @match:string { - payload: [], - }, - value: Object @match:string { - payload: [], - }, - }, - { - encoding: 'bech32', - }, - ], + { + chainId: Object @match:string { + payload: [], + }, + encoding: Object @match:string { + payload: [], + }, + value: Object @match:string { + payload: [], + }, }, ], }, @@ -87,20 +83,16 @@ Generated by [AVA](https://avajs.dev). }, ], }, - ChainAddressShape: Object @match:splitRecord { - payload: [ - { - chainId: Object @match:string { - payload: [], - }, - value: Object @match:string { - payload: [], - }, - }, - { - encoding: 'bech32', - }, - ], + ChainAddressShape: { + chainId: Object @match:string { + payload: [], + }, + encoding: Object @match:string { + payload: [], + }, + value: Object @match:string { + payload: [], + }, }, ChainInfoShape: Object @match:splitRecord { payload: [ @@ -153,20 +145,16 @@ Generated by [AVA](https://avajs.dev). }, ], }, - CosmosChainAddressShape: Object @match:splitRecord { - payload: [ - { - chainId: Object @match:string { - payload: [], - }, - value: Object @match:string { - payload: [], - }, - }, - { - encoding: 'bech32', - }, - ], + CosmosChainAddressShape: { + chainId: Object @match:string { + payload: [], + }, + encoding: Object @match:string { + payload: [], + }, + value: Object @match:string { + payload: [], + }, }, CosmosChainInfoShape: Object @match:splitRecord { payload: [ @@ -232,37 +220,29 @@ Generated by [AVA](https://avajs.dev). }, ], }, - validator: Object @match:splitRecord { - payload: [ - { - chainId: Object @match:string { - payload: [], - }, - value: Object @match:string { - payload: [], - }, - }, - { - encoding: 'bech32', - }, - ], + validator: { + chainId: Object @match:string { + payload: [], + }, + encoding: Object @match:string { + payload: [], + }, + value: Object @match:string { + payload: [], + }, }, }, { - delegator: Object @match:splitRecord { - payload: [ - { - chainId: Object @match:string { - payload: [], - }, - value: Object @match:string { - payload: [], - }, - }, - { - encoding: 'bech32', - }, - ], + delegator: { + chainId: Object @match:string { + payload: [], + }, + encoding: Object @match:string { + payload: [], + }, + value: Object @match:string { + payload: [], + }, }, }, ], @@ -371,20 +351,16 @@ Generated by [AVA](https://avajs.dev). payload: [ {}, { - intermediateRecipient: Object @match:splitRecord { - payload: [ - { - chainId: Object @match:string { - payload: [], - }, - value: Object @match:string { - payload: [], - }, - }, - { - encoding: 'bech32', - }, - ], + intermediateRecipient: { + chainId: Object @match:string { + payload: [], + }, + encoding: Object @match:string { + payload: [], + }, + value: Object @match:string { + payload: [], + }, }, retries: Object @match:kind { payload: 'number', @@ -487,20 +463,16 @@ Generated by [AVA](https://avajs.dev). payload: [ {}, { - intermediateRecipient: Object @match:splitRecord { - payload: [ - { - chainId: Object @match:string { - payload: [], - }, - value: Object @match:string { - payload: [], - }, - }, - { - encoding: 'bech32', - }, - ], + intermediateRecipient: { + chainId: Object @match:string { + payload: [], + }, + encoding: Object @match:string { + payload: [], + }, + value: Object @match:string { + payload: [], + }, }, retries: Object @match:kind { payload: 'number', diff --git a/packages/builders/test/snapshots/orchestration-imports.test.js.snap b/packages/builders/test/snapshots/orchestration-imports.test.js.snap index dfa11462cc539b50ba8e9e069101d2788a6ea0dc..44d4ef6c72d4443dca1605e8a32cc3a08bc4b475 100644 GIT binary patch literal 4174 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 YeQU|GZ?5qTPjsn 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 I2XZ$60K5r6HUIzs diff --git a/packages/fast-usdc/test/exos/advancer.test.ts b/packages/fast-usdc/test/exos/advancer.test.ts index 26bb3c29158..e21d52c13b6 100644 --- a/packages/fast-usdc/test/exos/advancer.test.ts +++ b/packages/fast-usdc/test/exos/advancer.test.ts @@ -251,6 +251,7 @@ test('updates status to ADVANCING in happy path', async t => { }, destination: { chainId: 'osmosis-1', + encoding: 'bech32', value: 'osmo183dejcnmkka5dzcu9xw6mywq0p2m5peks28men', }, }, @@ -659,6 +660,7 @@ test('will not advance same txHash:chainId evidence twice', async t => { advanceAmount: { brand: usdc.brand, value: 146999999n }, destination: { chainId: 'osmosis-1', + encoding: 'bech32', value: 'osmo183dejcnmkka5dzcu9xw6mywq0p2m5peks28men', }, }, @@ -911,6 +913,7 @@ test('uses bank send for agoric1 EUD', async t => { }, destination: { chainId: 'agoric-3', + encoding: 'bech32', value: 'agoric13rj0cc0hm5ac2nt0sdup2l7gvkx4v9tyvgq3h2', }, }, diff --git a/packages/fast-usdc/test/exos/settler.test.ts b/packages/fast-usdc/test/exos/settler.test.ts index 31e5c4b2ece..61ea505df15 100644 --- a/packages/fast-usdc/test/exos/settler.test.ts +++ b/packages/fast-usdc/test/exos/settler.test.ts @@ -371,6 +371,7 @@ test('slow path: forward to EUD; remove pending tx', async t => { forwardOpts: { intermediateRecipient: { chainId: 'noble-1', + encoding: 'bech32', value: 'noble1test', }, }, @@ -445,6 +446,7 @@ test('skip advance: forward to EUD; remove pending tx', async t => { forwardOpts: { intermediateRecipient: { chainId: 'noble-1', + encoding: 'bech32', value: 'noble1test', }, }, diff --git a/packages/fast-usdc/test/exos/snapshots/advancer.test.ts.md b/packages/fast-usdc/test/exos/snapshots/advancer.test.ts.md index 8e879733071..8f795a6e31b 100644 --- a/packages/fast-usdc/test/exos/snapshots/advancer.test.ts.md +++ b/packages/fast-usdc/test/exos/snapshots/advancer.test.ts.md @@ -17,20 +17,16 @@ Generated by [AVA](https://avajs.dev). Object @match:kind { payload: 'undefined', }, - Object @match:splitRecord { - payload: [ - { - chainId: Object @match:string { - payload: [], - }, - value: Object @match:string { - payload: [], - }, - }, - { - encoding: 'bech32', - }, - ], + { + chainId: Object @match:string { + payload: [], + }, + encoding: Object @match:string { + payload: [], + }, + value: Object @match:string { + payload: [], + }, }, ], }, @@ -45,20 +41,16 @@ Generated by [AVA](https://avajs.dev). Object @match:kind { payload: 'undefined', }, - Object @match:splitRecord { - payload: [ - { - chainId: Object @match:string { - payload: [], - }, - value: Object @match:string { - payload: [], - }, - }, - { - encoding: 'bech32', - }, - ], + { + chainId: Object @match:string { + payload: [], + }, + encoding: Object @match:string { + payload: [], + }, + value: Object @match:string { + payload: [], + }, }, ], }, diff --git a/packages/fast-usdc/test/exos/snapshots/advancer.test.ts.snap b/packages/fast-usdc/test/exos/snapshots/advancer.test.ts.snap index 14586bdbd080473ded4ff8a41a9aed8e0fe94c1d..b807bae2ec43acfd02fcf58a9e1f81eb7687cf1c 100644 GIT binary patch literal 540 zcmV+%0^|KbRzVo8mi2CWI@`LSH67t+hqgdsCZ;yvw**l zUtFkn4IhgL00000000AxlCf?RK@f)j+0C6dHi_>Pcm@hYMS-9IIii3HDO407t?$P1 zCg#LRtIF`Q(BtR(tyXScY4(Zkh8isA;4Oep04@O>P@Gcy zbbP{@Ct6>VBmwP#BG5k3PXO0Rf})hv*j1H#%~c?M`bTaU>$#e7ZnWnk&P-|8`XIa0 zk}2!FnV8iB_gZ97I#-Oc%*|J24_h#;+53WLZ2c(DE3WG+Ut&strH&7gQh%m>Hobpp zY#zKQ67LE4*p(s!Aat=tU)JdB3Mmrb1n^yS(uuaEzw=7~zXgy=;Fj!^#G8wkgvCoh@&83T zw>eLYo0r^S;ql?Z~3p-fvVQul-X>?tzPplcv zJ_$qtydR4Q00000000AxlfQ4%Kpe&2_s({lq-kQc{0&SjbU;+%M*txh5K>rR0Ccf0 z^|j8OWnVxQQ-zTD510@tBNGz?>cE7A#L5g4{{a&cLcPYpF+sw^>FoEu)_b3`4=3Zy z#CzqzYiX6u&6>ChkLl+sofQ<*4XI{r%fKN#?{X$>NZPON2~DLay} zDU#|Ke76SwM|Y+ZIZ;~H@on;d;Jd(qs~ot+m#MT?Q@P8l>Q8x9oxkD0TMm5UjZWe6 zPZSdS#)0omTlcSjjk(Z0uNFE^h0-?@Cv4XQ|B=XMawVBi>ewVo?^F+hv5eELvo6VH p54i3%lC&dQn;(KLl-{ZMw`(XLdMi;b(d*Rc{Ra7d+rFv<004F091j2h diff --git a/packages/fast-usdc/test/exos/snapshots/settler.test.ts.md b/packages/fast-usdc/test/exos/snapshots/settler.test.ts.md index 66f5262a1e6..2ac29525e21 100644 --- a/packages/fast-usdc/test/exos/snapshots/settler.test.ts.md +++ b/packages/fast-usdc/test/exos/snapshots/settler.test.ts.md @@ -14,20 +14,16 @@ Generated by [AVA](https://avajs.dev). Object @match:kind { payload: 'undefined', }, - Object @match:splitRecord { - payload: [ - { - chainId: Object @match:string { - payload: [], - }, - value: Object @match:string { - payload: [], - }, - }, - { - encoding: 'bech32', - }, - ], + { + chainId: Object @match:string { + payload: [], + }, + encoding: Object @match:string { + payload: [], + }, + value: Object @match:string { + payload: [], + }, }, ], }, diff --git a/packages/fast-usdc/test/exos/snapshots/settler.test.ts.snap b/packages/fast-usdc/test/exos/snapshots/settler.test.ts.snap index 5c62f284d2d8218b3d96afdc4c494d5785e64454..51f80fcb163861b0f156dc0986707230b2319954 100644 GIT binary patch literal 695 zcmV;o0!aNqRzV_N6Ei66(SNL(2fHWnwBH0T_URg%Js<5>h_^6Dz3aCOAhD@O0LD_wIhr?|FZ{ zlceERzVk}zSSNBb*Fwu%UD20uu0%iYraIr*k0PPPoyvKRDvlrW$Xf+)6F?4N7r+64 z&j5}9R0&w3NmcSZSH{WE2Z6+cJ#%u~gd7 z)=IQm@0b@|7g;hi;G+^)&*Vm&>rCi4RR(=s-kQl?s^vAQ(w+eiN?n&WC@^htKl4@Y+<^Bfianha7m!Plj?=vP=w#k5<0#o5}Y$@Pb>DFH8p4 zBmRy9A35;F(yQ5e-#GBy*7I#WR&jv3W6^?1+9HU7YD5bNN$vG)$}$)3;&Xt9XYR;;2EGn^j|@Y4Z&7dYoy zTii)gS|G>hUvYs|n_Qm}*(p~a#bxxqFi??PkCiO)#ZA8MxutxCT@kArkpZ5T08gqg zjbgQ7kY^>t-4@9}mh$@2ot{_r)&)M;(^LYg7t`cAi`7P{edDGdy1Z98 dncb#2-?iSJ_`iA+4XBnH@Efrk1O{0K0042oMM?kw literal 753 zcmVD5^x9j^{@>})~h64IOa>%&?;2MAw zz&3z=0Pg{O2T&lOMz%}#N@GKKl4$r?tyV#0PysYYbeez#Vj#<jrRB=gWHFKCAFM25?u$-O1s%4d98+*Cz0TuarTg zTJj>-l0utz!G8fW;F}(AUXN$kCQvdpY+)3e1sR|s(W0r=uSj&;gerZ| zfC_44WaV2SZ-{XGz6>Kh8b*42)JTPTwjuvVhnwP%@x}z+=@ptT%?>QJ8AN{8jGrd( zTSxmlI6%{O7|6Qt;>6GVXR34a7I56s&Q&J3c1-q}W3vAP64a^}=iNAiC-gZrq$;ZSk-p#^&va$cz0TTF+kC4dFGH&Z(o diff --git a/packages/fast-usdc/test/fixtures.ts b/packages/fast-usdc/test/fixtures.ts index 7a5410e7448..130f278a5b8 100644 --- a/packages/fast-usdc/test/fixtures.ts +++ b/packages/fast-usdc/test/fixtures.ts @@ -197,10 +197,12 @@ export const MockVTransferEvents: Record< export const intermediateRecipient: CosmosChainAddress = harden({ chainId: 'noble-1', value: 'noble1test', + encoding: 'bech32', }); export const settlementAddress: CosmosChainAddress = harden({ chainId: 'agoric-3', + encoding: 'bech32' as const, // Random value, copied from tests of address hooks value: 'agoric16kv2g7snfc4q24vg3pjdlnnqgngtjpwtetd2h689nz09lcklvh5s8u37ek', }); diff --git a/packages/orchestration/src/cosmos-api.ts b/packages/orchestration/src/cosmos-api.ts index 605d56a43e3..801d6f22bce 100644 --- a/packages/orchestration/src/cosmos-api.ts +++ b/packages/orchestration/src/cosmos-api.ts @@ -52,6 +52,7 @@ export type Bech32Address = `${string}1${string}`; export type CosmosValidatorAddress = CosmosChainAddress & { // infix for Validator Operator https://docs.cosmos.network/main/learn/beginner/accounts#addresses value: `${string}valoper${string}`; + encoding: 'bech32'; }; /** Represents an IBC Connection between two chains, which can contain multiple Channels. */ diff --git a/packages/orchestration/src/examples/send-anywhere.flows.js b/packages/orchestration/src/examples/send-anywhere.flows.js index 58466e31d8f..6022fcb40f1 100644 --- a/packages/orchestration/src/examples/send-anywhere.flows.js +++ b/packages/orchestration/src/examples/send-anywhere.flows.js @@ -64,6 +64,7 @@ export const sendIt = async ( await sharedLocalAccount.transfer( { value: destAddr, + encoding: 'bech32', chainId, }, { denom, value: amt.value }, diff --git a/packages/orchestration/src/examples/stake-bld.contract.js b/packages/orchestration/src/examples/stake-bld.contract.js index 7b0741130ed..db657e1235c 100644 --- a/packages/orchestration/src/examples/stake-bld.contract.js +++ b/packages/orchestration/src/examples/stake-bld.contract.js @@ -87,6 +87,7 @@ export const start = async (zcf, privateArgs, baggage) => { account, address: harden({ value: address, + encoding: 'bech32', chainId: 'agoriclocal', }), storageNode: privateArgs.storageNode, diff --git a/packages/orchestration/src/exos/chain-hub.js b/packages/orchestration/src/exos/chain-hub.js index eef5f835b2b..49026b13cdc 100644 --- a/packages/orchestration/src/exos/chain-hub.js +++ b/packages/orchestration/src/exos/chain-hub.js @@ -533,6 +533,7 @@ export const makeChainHub = (zone, agoricNames, vowTools) => { assert.equal(parsed.namespace, 'cosmos'); return harden({ chainId: parsed.reference, + encoding: 'bech32', value: parsed.accountAddress, }); } @@ -541,6 +542,7 @@ export const makeChainHub = (zone, agoricNames, vowTools) => { return harden({ chainId, value: parsed.accountAddress, + encoding: /** @type {const} */ ('bech32'), }); }, // TODO document whether this is limited to IBC diff --git a/packages/orchestration/src/exos/ica-account-kit.js b/packages/orchestration/src/exos/ica-account-kit.js index 33afee99554..2dcadf3fbd5 100644 --- a/packages/orchestration/src/exos/ica-account-kit.js +++ b/packages/orchestration/src/exos/ica-account-kit.js @@ -191,6 +191,7 @@ export const prepareIcaAccountKit = (zone, { watch, asVow }) => this.state.chainAddress = harden({ value: address || UNPARSABLE_CHAIN_ADDRESS, chainId: this.state.chainId, + encoding: 'bech32', }); }, /** diff --git a/packages/orchestration/src/exos/local-chain-facade.js b/packages/orchestration/src/exos/local-chain-facade.js index fec218a3009..a13d8a96829 100644 --- a/packages/orchestration/src/exos/local-chain-facade.js +++ b/packages/orchestration/src/exos/local-chain-facade.js @@ -168,6 +168,7 @@ const prepareLocalChainFacadeKit = ( account, address: harden({ value: address, + encoding: 'bech32', chainId: localChainInfo.chainId, }), // FIXME storage path https://github.com/Agoric/agoric-sdk/issues/9066 diff --git a/packages/orchestration/src/exos/portfolio-holder-kit.js b/packages/orchestration/src/exos/portfolio-holder-kit.js index e232335edb9..0b8f213796d 100644 --- a/packages/orchestration/src/exos/portfolio-holder-kit.js +++ b/packages/orchestration/src/exos/portfolio-holder-kit.js @@ -200,6 +200,7 @@ const preparePortfolioHolderKit = (zone, { asVow, when }) => { * { * value: 'cosmos1valoper', * chainId: 'cosmoshub-99', + * encoding: 'bech32', * }, * { * denom: 'uatom', diff --git a/packages/orchestration/src/orchestration-api.ts b/packages/orchestration/src/orchestration-api.ts index bfb7736530e..8e3954b736a 100644 --- a/packages/orchestration/src/orchestration-api.ts +++ b/packages/orchestration/src/orchestration-api.ts @@ -85,6 +85,7 @@ export type CosmosChainAddress = { chainId: string; /** The address value used on-chain */ value: string; + encoding: 'bech32' | 'ethereum'; }; /** diff --git a/packages/orchestration/src/typeGuards.js b/packages/orchestration/src/typeGuards.js index 3dd18448309..3085af7a913 100644 --- a/packages/orchestration/src/typeGuards.js +++ b/packages/orchestration/src/typeGuards.js @@ -29,16 +29,12 @@ export const OutboundConnectionHandlerI = M.interface( // XXX @type {TypedPattern} but that's causing error: // Declaration emit for this file requires using private name 'validatedType' from module '"/opt/agoric/agoric-sdk/packages/internal/src/types"'. An explicit type annotation may unblock declaration emit. -export const CosmosChainAddressShape = M.splitRecord( - { - chainId: M.string(), - value: M.string(), - }, - { - // Ignored but maintained for backwards compatibility - encoding: 'bech32', - }, -); +export const CosmosChainAddressShape = { + chainId: M.string(), + // Ignored but maintained for backwards compatibility + encoding: M.string(), + value: M.string(), +}; harden(CosmosChainAddressShape); /** @deprecated use CosmosChainAddressShape */ export const ChainAddressShape = CosmosChainAddressShape; diff --git a/packages/orchestration/src/utils/cosmos.js b/packages/orchestration/src/utils/cosmos.js index 85310370555..5082a1c5ed9 100644 --- a/packages/orchestration/src/utils/cosmos.js +++ b/packages/orchestration/src/utils/cosmos.js @@ -57,6 +57,7 @@ export const toTruncatedDenomAmount = c => ({ * ) => CosmosValidatorAddress} */ export const toCosmosValidatorAddress = (r, chainId) => ({ + encoding: 'bech32', value: /** @type {CosmosValidatorAddress['value']} */ (r.validatorAddress), chainId, }); @@ -73,6 +74,7 @@ export const toCosmosValidatorAddress = (r, chainId) => ({ export const toCosmosDelegationResponse = ({ chainId }, r) => ({ delegator: { chainId, + encoding: 'bech32', value: r.delegation.delegatorAddress, }, validator: toCosmosValidatorAddress(r.delegation, chainId), diff --git a/packages/orchestration/src/utils/orc.js b/packages/orchestration/src/utils/orc.js index 9e8e86c5ab8..47a0d260e8f 100644 --- a/packages/orchestration/src/utils/orc.js +++ b/packages/orchestration/src/utils/orc.js @@ -13,6 +13,7 @@ export const orcUtils = { toAccount: { chainId: 'osmosis-test', value: 'osmo1234', + encoding: 'bech32', }, }; }, @@ -30,6 +31,7 @@ export const orcUtils = { toAccount: { chainId: 'osmosis-test', value: 'osmo1234', + encoding: 'bech32', }, }; }, diff --git a/packages/orchestration/test/examples/auto-stake-it.contract.test.ts b/packages/orchestration/test/examples/auto-stake-it.contract.test.ts index f96b05a7aac..d462e7e236c 100644 --- a/packages/orchestration/test/examples/auto-stake-it.contract.test.ts +++ b/packages/orchestration/test/examples/auto-stake-it.contract.test.ts @@ -49,6 +49,7 @@ test('make accounts, register tap, return invitationMakers', async t => { validator: { chainId: 'cosmoshub-4', value: 'cosmosvaloper1test', + encoding: 'bech32', }, }); const result = await heapVowE(userSeat).getOfferResult(); @@ -136,6 +137,7 @@ test('make accounts, register tap, return invitationMakers', async t => { validator: { chainId: 'cosmoshub-4', value: 'cosmosvaloper1test', + encoding: 'bech32', }, }); const { publicSubscribers: pubSubs2 } = diff --git a/packages/orchestration/test/examples/snapshots/stake-ica.contract.test.ts.md b/packages/orchestration/test/examples/snapshots/stake-ica.contract.test.ts.md index e878c3d19ff..0c37c87513f 100644 --- a/packages/orchestration/test/examples/snapshots/stake-ica.contract.test.ts.md +++ b/packages/orchestration/test/examples/snapshots/stake-ica.contract.test.ts.md @@ -8,7 +8,7 @@ Generated by [AVA](https://avajs.dev). > accounts in vstorage - Object @Map Iterator { + Iterator @Map Iterator { [ 'mockChainStorageRoot.stakeAtom.accounts.cosmos1test', '{"body":"#{\\"localAddress\\":\\"/ibc-port/icacontroller-1/ordered/{\\\\\\"version\\\\\\":\\\\\\"ics27-1\\\\\\",\\\\\\"controllerConnectionId\\\\\\":\\\\\\"connection-8\\\\\\",\\\\\\"hostConnectionId\\\\\\":\\\\\\"connection-649\\\\\\",\\\\\\"address\\\\\\":\\\\\\"cosmos1test\\\\\\",\\\\\\"encoding\\\\\\":\\\\\\"proto3\\\\\\",\\\\\\"txType\\\\\\":\\\\\\"sdk_multi_msg\\\\\\"}/ibc-channel/channel-0\\",\\"remoteAddress\\":\\"/ibc-hop/connection-8/ibc-port/icahost/ordered/{\\\\\\"version\\\\\\":\\\\\\"ics27-1\\\\\\",\\\\\\"controllerConnectionId\\\\\\":\\\\\\"connection-8\\\\\\",\\\\\\"hostConnectionId\\\\\\":\\\\\\"connection-649\\\\\\",\\\\\\"address\\\\\\":\\\\\\"cosmos1test\\\\\\",\\\\\\"encoding\\\\\\":\\\\\\"proto3\\\\\\",\\\\\\"txType\\\\\\":\\\\\\"sdk_multi_msg\\\\\\"}/ibc-channel/channel-0\\"}","slots":[]}', diff --git a/packages/orchestration/test/examples/snapshots/stake-ica.contract.test.ts.snap b/packages/orchestration/test/examples/snapshots/stake-ica.contract.test.ts.snap index 171d95509f749f767d01ffb9aa984dc9c29d1ab2..e57c318deca6efd17d81d952cbc552a63b154c54 100644 GIT binary patch literal 627 zcmV-(0*w7ZRzVv$KVEsB-x2KHwsDrQQBOJ zRw@cs@gIu_00000000B+RLySFKoFjd(?41%jmiTABMwMOjFXC=9FU@N=>d>{ONCLj zSucqdd&ka-ET%S-}h->KkbAl z`sV0ZQb3`67V*Ap3xNlUs+F#!w(o0cOkfm`O%KT&9s52fzPI+)f)z*>TV=)D0B{EY z?g79a0Bo`4GF#mxsX3u$tjsp<^0+d&*eq=VTLbn5*g9kWxXe0ZFOrj`;hQ8ZB*m?d z0Pq0{Q1h;QfJk*i32lT?osYRQb%7>AO`YyXDzV&=Iv5H93Lc0u^ZtL#b=7gW8u``p(evJo`{;6QD}MR>|uAb`(`xr-qXH*+6htg z&Eb)xfI|5!;(gf`0{0cws$EHK-`CQZz$hM@9+Ejc@_kPH(b8KB79m;e0xRAEfZG6Y z2LK)dz#1!6SZSxTCj~K9VJmleT-_$AIiX%HuL4^F_6687W1Vr4WyW44CriUONmxiq zTOR@7GXPv+S=oiQ)_lMU$5FXlPJ!<&fKL{{dT|b)Qi4uDpjx4MPcOgi(W!nKKQ6CPL$qG?dj~EGtrYSs2uwU(l5LW?g-S_50jh03hl~8Oek0H6p`qWQuWjDU@jPpL0?WtFF;WTi1J%tz zu|~p;{GFaZ7{oGvHGY3L+7Bt%jZB&|O8F2yu9OU&?5tl+vTZFRBsoJ~4`b)s`KB06 zX8h0O6q6&nW}6Vn*saG;MnAUx<|(Z2&UpXTDZSr3SBklFmdyQk%zp+{{)zjWKX?C* ziE!fnr1P}#=3o2wH|8andm_QyUnw>jd(L__Phfrb%&dPNnVk9eWym`+q+=^r164gR PW4C_=(QW6@Ckg-nk`yKE diff --git a/packages/orchestration/test/examples/stake-ica.contract.test.ts b/packages/orchestration/test/examples/stake-ica.contract.test.ts index 7d54031782b..d1956b72d96 100644 --- a/packages/orchestration/test/examples/stake-ica.contract.test.ts +++ b/packages/orchestration/test/examples/stake-ica.contract.test.ts @@ -80,7 +80,7 @@ test('makeAccount, getAddress', async t => { t.truthy(account, 'account is returned'); const chainAddress = await E(account).getAddress(); t.regex(chainAddress.value, /cosmos1/); - t.like(chainAddress, { chainId: 'cosmoshub-4' }); + t.like(chainAddress, { chainId: 'cosmoshub-4', encoding: 'bech32' }); const accountP = E(publicFacet).makeAccount(); const { value: address2 } = await E(accountP).getAddress(); @@ -122,6 +122,7 @@ test('delegate, undelegate, redelegate, withdrawReward', async t => { const validatorAddr = { value: 'cosmosvaloper1test' as const, chainId: 'cosmoshub-4', + encoding: 'bech32' as const, }; const delegation = { denom: 'uatom', diff --git a/packages/orchestration/test/examples/staking-combinations.test.ts b/packages/orchestration/test/examples/staking-combinations.test.ts index 8f5eb82b809..6ef704c2376 100644 --- a/packages/orchestration/test/examples/staking-combinations.test.ts +++ b/packages/orchestration/test/examples/staking-combinations.test.ts @@ -121,6 +121,7 @@ test(expectUnhandled(1), 'start', async t => { validator: { chainId: 'cosmoshub', value: 'cosmosvaloper1test', + encoding: 'bech32', }, }, ); @@ -158,6 +159,7 @@ test(expectUnhandled(1), 'start', async t => { const destination = { chainId: 'osmosis-1', value: 'osmo1receiver', + encoding: 'bech32', }; const undelegateAndTransferInv = await E( result.invitationMakers, @@ -166,6 +168,7 @@ test(expectUnhandled(1), 'start', async t => { { validator: { value: 'osmovaloper1test', + encoding: 'bech32', chainId: 'osmosis', }, amount: { denom: 'uosmo', value: 100n }, @@ -227,6 +230,7 @@ test(expectUnhandled(1), 'start', async t => { validator: { chainId: 'cosmoshub', value: 'cosmosvaloper1test', + encoding: 'bech32', }, }, ); diff --git a/packages/orchestration/test/examples/swap.contract.test.ts b/packages/orchestration/test/examples/swap.contract.test.ts index 3f9a7ddbcbf..7eb8869eb38 100644 --- a/packages/orchestration/test/examples/swap.contract.test.ts +++ b/packages/orchestration/test/examples/swap.contract.test.ts @@ -56,6 +56,7 @@ test('start', async t => { validator: { chainId: 'agoric-3', value: 'agoric1valoperfufu', + encoding: 'bech32', } as const, }, ); diff --git a/packages/orchestration/test/exos/chain-hub-transfer-routes.test.ts b/packages/orchestration/test/exos/chain-hub-transfer-routes.test.ts index 5aa33e85648..5b8596e6ee9 100644 --- a/packages/orchestration/test/exos/chain-hub-transfer-routes.test.ts +++ b/packages/orchestration/test/exos/chain-hub-transfer-routes.test.ts @@ -216,6 +216,7 @@ test('takes forwardOpts', t => { const nobleAddr = harden({ value: 'noble1234', + encoding: 'bech32' as const, chainId: 'noble-1', }); @@ -254,6 +255,7 @@ test('takes forwardOpts', t => { const nobleDest: CosmosChainAddress = harden({ value: 'noble1234', chainId: 'noble-1', + encoding: 'bech32', }); test('no chain info', t => { diff --git a/packages/orchestration/test/exos/chain-hub.test.ts b/packages/orchestration/test/exos/chain-hub.test.ts index fd6491b6df8..d905c0b4c05 100644 --- a/packages/orchestration/test/exos/chain-hub.test.ts +++ b/packages/orchestration/test/exos/chain-hub.test.ts @@ -173,6 +173,7 @@ test('makeChainAddress', async t => { t.deepEqual(chainHub.makeChainAddress(MOCK_ICA_ADDRESS), { chainId: 'osmosis-1', value: MOCK_ICA_ADDRESS, + encoding: 'bech32', }); t.throws( diff --git a/packages/orchestration/test/exos/cosmos-orchestration-account.test.ts b/packages/orchestration/test/exos/cosmos-orchestration-account.test.ts index a59105a5cc3..f590bfa7af0 100644 --- a/packages/orchestration/test/exos/cosmos-orchestration-account.test.ts +++ b/packages/orchestration/test/exos/cosmos-orchestration-account.test.ts @@ -96,6 +96,7 @@ test('send (to addr on same chain)', async t => { const toAddress: CosmosChainAddress = { value: 'cosmos99test', chainId: 'cosmoshub-4', + encoding: 'bech32', }; // single send @@ -284,6 +285,7 @@ test('transfer', async t => { const mockDestination: CosmosChainAddress = { value: 'noble1test', chainId: 'noble-1', + encoding: 'bech32', }; const mockAmountArg: AmountArg = { value: 10n, denom: 'ibc/uusdchash' }; const res = E(account).transfer(mockDestination, mockAmountArg); @@ -533,6 +535,7 @@ test('StakingAccountQueries', async t => { const mockValidator: CosmosValidatorAddress = { value: 'cosmosvaloper1xyz', chainId: 'cosmoshub-4', + encoding: 'bech32', }; const makeDelegationReq = () => @@ -767,6 +770,7 @@ test('StakingAccountQueries', async t => { const mockValidator: CosmosValidatorAddress = { value: 'cosmosvaloper1xyz', chainId: 'cosmoshub-4', + encoding: 'bech32', }; // Test getDelegation @@ -775,10 +779,12 @@ test('StakingAccountQueries', async t => { amount: { denom: 'uatom', value: 1000000n }, delegator: { chainId: 'cosmoshub-4', + encoding: 'bech32', value: 'cosmos1test', }, validator: { chainId: 'cosmoshub-4', + encoding: 'bech32', value: mockValidator.value, }, }); @@ -791,10 +797,12 @@ test('StakingAccountQueries', async t => { delegator: { chainId: 'cosmoshub-4', + encoding: 'bech32', value: 'cosmos1test', }, validator: { chainId: 'cosmoshub-4', + encoding: 'bech32', value: mockValidator.value, }, }, @@ -874,6 +882,7 @@ test('StakingAccountQueries', async t => { rewards: [ { validator: { + encoding: 'bech32', value: mockValidator.value, chainId: 'cosmoshub-4', }, diff --git a/packages/orchestration/test/exos/local-orchestration-account-kit.test.ts b/packages/orchestration/test/exos/local-orchestration-account-kit.test.ts index 3e53d8da200..0c8421721f6 100644 --- a/packages/orchestration/test/exos/local-orchestration-account-kit.test.ts +++ b/packages/orchestration/test/exos/local-orchestration-account-kit.test.ts @@ -144,6 +144,7 @@ test(expectUnhandled(1), 'transfer', async t => { const destination: CosmosChainAddress = { chainId: 'cosmoshub-4', value: 'cosmos1pleab', + encoding: 'bech32', }; /** The running tally of transfer messages that were sent over the bridge */ @@ -205,6 +206,7 @@ test(expectUnhandled(1), 'transfer', async t => { const unknownDestination: CosmosChainAddress = { chainId: 'fakenet', value: 'fakenet1pleab', + encoding: 'bech32', }; // XXX dev has to know not to startTransfer here await t.throwsAsync( @@ -284,6 +286,7 @@ test(expectUnhandled(1), 'transfer', async t => { ); const dydxDest: CosmosChainAddress = { chainId: 'dydx-mainnet-1', + encoding: 'bech32', value: 'dydx1test', }; const aDenomAmount: DenomAmount = { @@ -393,6 +396,7 @@ test('send', async t => { const toAddress = { value: 'agoric1EOAAccAddress', chainId: 'agoric-3', + encoding: 'bech32' as const, }; t.log(`send 10 bld to ${toAddress.value}`); diff --git a/packages/orchestration/test/exos/make-test-loa-kit.ts b/packages/orchestration/test/exos/make-test-loa-kit.ts index 235507ff5e7..79126fa9f59 100644 --- a/packages/orchestration/test/exos/make-test-loa-kit.ts +++ b/packages/orchestration/test/exos/make-test-loa-kit.ts @@ -59,6 +59,7 @@ export const prepareMakeTestLOAKit = ( address: harden({ value: address, chainId: 'agoric-3', + encoding: 'bech32', }), storageNode: storageNode.makeChildNode(address), }); diff --git a/packages/orchestration/test/exos/portfolio-holder-kit.test.ts b/packages/orchestration/test/exos/portfolio-holder-kit.test.ts index e881925aa05..b456399b57c 100644 --- a/packages/orchestration/test/exos/portfolio-holder-kit.test.ts +++ b/packages/orchestration/test/exos/portfolio-holder-kit.test.ts @@ -86,6 +86,7 @@ test('portfolio holder kit behaviors', async t => { { value: 'cosmos1valoper', chainId: 'cosmoshub-99', + encoding: 'bech32', }, { denom: 'uatom', diff --git a/packages/orchestration/test/staking-ops.test.ts b/packages/orchestration/test/staking-ops.test.ts index 8c811ccc187..33434eb2c45 100644 --- a/packages/orchestration/test/staking-ops.test.ts +++ b/packages/orchestration/test/staking-ops.test.ts @@ -70,6 +70,7 @@ const configStaking = { }, validator: { value: 'agoric1valoper234', + encoding: 'bech32', chainId: 'agoric-3', }, delegations: { @@ -82,6 +83,7 @@ const configStaking = { const configRedelegate = { validator: { value: 'agoric1valoper444', + encoding: 'bech32', chainId: 'atom-test', }, delegations: { @@ -156,6 +158,7 @@ const makeScenario = () => { const chainAddress: CosmosChainAddress = harden({ value: addr, + encoding: 'bech32', chainId: 'mock-1', }); diff --git a/packages/orchestration/test/tx-encoding.test.ts b/packages/orchestration/test/tx-encoding.test.ts index 0324e107fc3..1206536f1a7 100644 --- a/packages/orchestration/test/tx-encoding.test.ts +++ b/packages/orchestration/test/tx-encoding.test.ts @@ -15,7 +15,7 @@ const scenario1 = { acct1: { address: 'agoric1spy36ltduehs5dmszfrp792f0k2emcntrql3nx', }, - validator: { address: 'agoric1valoper234' }, + validator: { address: 'agoric1valoper234', encoding: 'bech32' }, delegations: { agoric1valoper234: { denom: 'uatom', amount: '200' }, }, diff --git a/packages/orchestration/test/typeGuards.test.ts b/packages/orchestration/test/typeGuards.test.ts index 4f3258cc15d..5ce80a6dbed 100644 --- a/packages/orchestration/test/typeGuards.test.ts +++ b/packages/orchestration/test/typeGuards.test.ts @@ -9,30 +9,33 @@ test('CosmosChainAddress', t => { mustMatch( harden({ chainId: 'noble-1', + encoding: 'bech32', value: 'noble1test', }), CosmosChainAddressShape, ); + t.throws(() => + mustMatch( + harden({ + chainId: 'noble-1', + encoding: 'bech32', + value: 'noble1test', + extraField: 'extraValue', + }), + CosmosChainAddressShape, + ), + ); + mustMatch( harden({ chainId: 'noble-1', + // ignored + encoding: 'invalid', value: 'noble1test', - extraField: 'extraValue', }), CosmosChainAddressShape, ); - - t.throws(() => { - mustMatch( - harden({ - chainId: 'noble-1', - encoding: 'bech32boo', - value: 'noble1test', - }), - CosmosChainAddressShape, - ); - }); }); test('backwards compatibility', t => { diff --git a/packages/orchestration/test/types.test-d.ts b/packages/orchestration/test/types.test-d.ts index 7157ad621ab..a5c96b352a8 100644 --- a/packages/orchestration/test/types.test-d.ts +++ b/packages/orchestration/test/types.test-d.ts @@ -43,12 +43,14 @@ const vt: VowTools = null as any; const validatorAddr = { chainId: 'agoric3', value: 'agoric1valoperhello', + encoding: 'bech32', } as const; expectType(validatorAddr); const chainAddr = { chainId: 'agoric-3', value: 'agoric1pleab', + encoding: 'bech32', } as const; expectType(chainAddr); expectNotType(chainAddr); @@ -259,6 +261,7 @@ expectNotType(chainAddr); { const addr = { chainId: 'chainId', + encoding: 'bech32', value: 'agoric1valoperfoo', }; expectAssignable(addr); diff --git a/packages/orchestration/test/utils/zoe-tools.test.ts b/packages/orchestration/test/utils/zoe-tools.test.ts index 33b7ecd1d1e..dbe5a5252c2 100644 --- a/packages/orchestration/test/utils/zoe-tools.test.ts +++ b/packages/orchestration/test/utils/zoe-tools.test.ts @@ -100,6 +100,7 @@ test('zoeTool.localTransfer error paths', async t => { const destAddr = { chainId: 'agoriclocal', value: 'agoric1testrecipient', + encoding: 'bech32', }; t.log('localTransfer recovers when presented non-vbank asset'); @@ -232,6 +233,7 @@ test('localTransfer happy path', async t => { const destAddr = { chainId: 'agoriclocal', value: 'agoric1testrecipient', + encoding: 'bech32', }; const tenStable = ist.make(10n); From 03f9076e62c682e93706edcc82778a23e7db21a3 Mon Sep 17 00:00:00 2001 From: Turadg Aleahmad Date: Tue, 25 Feb 2025 10:45:19 -0800 Subject: [PATCH 2/6] refactor: simplify evidence conflict check --- .../fast-usdc/src/exos/transaction-feed.js | 27 +++++++++---------- 1 file changed, 13 insertions(+), 14 deletions(-) diff --git a/packages/fast-usdc/src/exos/transaction-feed.js b/packages/fast-usdc/src/exos/transaction-feed.js index 33d76f4bbc8..98e668357bf 100644 --- a/packages/fast-usdc/src/exos/transaction-feed.js +++ b/packages/fast-usdc/src/exos/transaction-feed.js @@ -209,20 +209,19 @@ export const prepareTransactionFeedKit = (zone, zcf) => { let lastEvidence; for (const store of found) { const next = store.get(txHash); - if (lastEvidence) { - if (keyEQ(lastEvidence, next)) { - lastEvidence = next; - } else { - trace( - '🚨 conflicting evidence for', - txHash, - ':', - lastEvidence, - '!=', - next, - ); - Fail`conflicting evidence for ${quote(txHash)}`; - } + if (lastEvidence && !keyEQ(lastEvidence, next)) { + // Ignore conflicting evidence, but treat it as an error + // because it should never happen and needs to be prevented + // from happening again. + trace( + '🚨 conflicting evidence for', + txHash, + ':', + lastEvidence, + '!=', + next, + ); + Fail`conflicting evidence for ${quote(txHash)}`; } lastEvidence = next; } From e38c3a982860247afb829947cc5777886cb09e63 Mon Sep 17 00:00:00 2001 From: Turadg Aleahmad Date: Wed, 26 Feb 2025 17:14:30 -0800 Subject: [PATCH 3/6] chore(types): provide ZCF --- packages/orchestration/src/types.ts | 3 +++ 1 file changed, 3 insertions(+) diff --git a/packages/orchestration/src/types.ts b/packages/orchestration/src/types.ts index 7a0b23566e4..e20fdc40b18 100644 --- a/packages/orchestration/src/types.ts +++ b/packages/orchestration/src/types.ts @@ -1,5 +1,8 @@ /** @file Rollup of all type definitions in the package, for local import and external export */ +// For ZCF which is only available ambiently +/// + export type * from './chain-info.js'; export type * from './cosmos-api.js'; export type * from './ethereum-api.js'; From 672f3ee8f761dd2b52f2cb5c77fabaee019e42e6 Mon Sep 17 00:00:00 2001 From: Dan Connolly Date: Wed, 26 Feb 2025 15:53:41 -0600 Subject: [PATCH 4/6] fix(orchestration): chainByName cache should not be durable --- .../snapshots/fast-usdc.contract.test.ts.md | 20 ------------------ .../snapshots/fast-usdc.contract.test.ts.snap | Bin 24477 -> 24209 bytes .../orchestration/src/exos/orchestrator.js | 10 ++++++--- .../snapshots/send-anywhere.test.ts.md | 10 --------- .../snapshots/send-anywhere.test.ts.snap | Bin 30387 -> 30261 bytes .../snapshots/stake-ica.contract.test.ts.md | 2 +- .../snapshots/stake-ica.contract.test.ts.snap | Bin 627 -> 629 bytes .../snapshots/staking-combinations.test.ts.md | 10 --------- .../staking-combinations.test.ts.snap | Bin 2838 -> 2727 bytes .../snapshots/unbond.contract.test.ts.md | 10 --------- .../snapshots/unbond.contract.test.ts.snap | Bin 2394 -> 2281 bytes 11 files changed, 8 insertions(+), 54 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 06a347a660e..df1cc4e571c 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 @@ -1530,16 +1530,6 @@ Generated by [AVA](https://avajs.dev). LocalChainFacade_kindHandle: 'Alleged: kind', Orchestrator_kindHandle: 'Alleged: kind', RemoteChainFacade_kindHandle: 'Alleged: kind', - chainName: { - agoric: { - pending: false, - value: Object @Alleged: LocalChainFacade public {}, - }, - noble: { - pending: false, - value: Object @Alleged: RemoteChainFacade public {}, - }, - }, ibcTools: { IBCTransferSenderKit_kindHandle: 'Alleged: kind', ibcResultWatcher_kindHandle: 'Alleged: kind', @@ -3276,16 +3266,6 @@ Generated by [AVA](https://avajs.dev). LocalChainFacade_kindHandle: 'Alleged: kind', Orchestrator_kindHandle: 'Alleged: kind', RemoteChainFacade_kindHandle: 'Alleged: kind', - chainName: { - agoric: { - pending: false, - value: Object @Alleged: LocalChainFacade public {}, - }, - noble: { - pending: false, - value: Object @Alleged: RemoteChainFacade public {}, - }, - }, ibcTools: { IBCTransferSenderKit_kindHandle: 'Alleged: kind', ibcResultWatcher_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 0e5e7133207ed7e24c491d29d4faff56c5373533..6cfb12315832bc551515a5abf21b418f44e92e00 100644 GIT binary patch literal 24209 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 literal 24477 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 z zVc1!PKStO3`&szcS=gy!Khd?~&OyU-@W?qBb`HKe2dmD(#d8pMUg7^k*LvVQbU6>X zD)uv7>yz{F`FYrM9%3&**9(w*0Y+SaPcA6@f9hJxFTmOh5Png?ey(eEx(J;w!hnnL z_lvOUB3!%(@t5F%OA7zrx>oWf=z9r1P_bimt>u?s?In=Q;JFO_FT;q-@a1J#ep%sv zscW6P3|B5ghbszpoUWC01=6m-|6YNmSAeU~x39u)uEIVp~-c4^16bZq-(u(9p1SP6RyLF>(Csb zGeR1|TS!U%WL@iD2wx%WQL$5XtvVt!5}}6(!$kN>gjFJ36d^7|;ZG~&oevSZgb0IF z>!;P_>eRovmwqr;_kcB_X|% z@V83B`bxsNNwLIyHC$*@Rq$37epglas;aQ5s&Kxl!e6RuHLfPKs3!ERreK%rTEnXeBdZCM zstG3xc-4h2)rG#*h2hl|{t8{|^XkI5>cUU5H3Xs zb!sU5)wU zuqXw)LDzCe3Ezzp`b7z&qlC3l!kH+cLA2nGR`?rrt(T$&U$pRh6}ws2S`aNPixw_N z3$_@+7bCnGBYYMkEQnF~TXe1CF~Zpxp;fGc-KJ|j8!P-IRu~y8%!w7w#|m*Zg$HU1 zy=p4_?Yh=$HHG0dg$XKlr>=FVrf{OB(5RO1bS+_cEn!S8VQDSlP%VYOOV^62E!3$k zbg!*o_vl(fYYW3_3;(Pw?5-`u#R<+h;e|M1NSwmot84uwP8bs>tXHx7b*-v(gs3{g zck2kbb%amq2=nU*$La{x>ni*Mx|Xf3;I1q5Rk4S3tq!}99 za}9*IRqP2}Yf1xQRs-R91EEzz;kkxFUPIx}4TUKU75+(GYj;E8U_+sPBL#a}*Lt*( z@MI(5)kZ>oBjI2pA-u8Bp|S92V}*Z4*UD}z3~4NUs$$RST3Z?myBZ78O@v392t%6) zqnZdanh0B)DE#wfUqo_=7^!(P#iZ~ukiv|p(y*}-BMok1AHR_jQ*e=Rd|_fuX`GrR zZU8C4QL}DJqt_~N7e@(tQA$o}w73AiX`S+Y)4G9u)A|8?(+1`HrVWjLQwgsWFI0;c zn#2ol#0&q97k0!8*W-nnO_evTxqfR!$EL!AO@*FKg^5jty-kI{q) znhArN2_u>b$D0WanhTFM7y309UTv=M@6-8XnhXDIF3fB$v}_?f(L#8=h49xF!hc#Q z`~;o9rG>Dog>b%w@O(>QcuQeIOJRLW;c!cZZ_)X&t%SO*goIYYZ(9jdTM5Tn2{l>^ zOQm=+Z`brj5dPm2!DW8{y41!l*XF)iy%gwnDGA z!jQJY$hHdKQ}*R0-_tKI8P`^rq(0`MvLDl>?2jKV`{S-GnZ3T+`9CBab&!wb- z87N7s=0O)boL7uivP_GmDBVs=5-mv0^|HyCbG3MOaO7ExeY#C?T#A%Ew_DhMuD4CznjQ8|2H%PV?XQUL`Fl+h!>! zPZEezJT~)AaXCB&ol^80tro9ApExWku|oQ!lmZ?GT%uMUGv^U=t>k9w(#o+^NQY=g zc-0e>-|Ue@(;b&~OvIo|+`-sJJnET_Z}y1GXdCgr?CQZIgC5Z;p;SnZsEx#7ek8HF zZDxI<9p*GRlvuTb7s25a_3XL(PCjnSY-?CJr`3h5E;{H<1NrgWc_JZx)zZKA&J1_uVy^SL$#Vo_tjnt1(_+LYiDt)>02hr~CBzEp5^a#ziZd7)ttK{O{W_q#}VC2!}Q8#req*v4n zQOsu#IZem70*ucG#~!@4ZVzB1%jUEg-8Bg?@aSK+C%S{Nog|uXCx$n&0$e8Edh5PI zIz($HZewY7CEJPX4zEgT_?MW8+6^MX;1`?QU=mRYzt~--8;iM_a73{wbWm*js#(J3 zbBL@)2!LVEx>74FosvG4uf4+$xD$OcQ{!k$WrZ;Mq+Gj637mG zpvN0-IW4G=?$9Fj)&Saw({P?jfFVeKho=RtE2LMn%a8*&F=sKo8 zZPH~|r~d|;irr><(iPyb6RRUA26^p_gR#&`$ukZ{*C*xOXtV}LnF8&CR_&OMfrY%w zb%$HZ&3JvH%cDgaDx_b^Up~Tc@8zF;1vneF21N`~oqoAo0qg)<6OCrCl()=^D>&9D zN;|O`8|RC+6T9hEigt9@XgdkUxtGnYUG-}uG;BBBdzn06db6RpgJT0&4Go)5;5K{; z+aD$gbPpvc8%m*CQjb`5Y-}gWdIt0ZMMOil5 z11LFYHymLJbdWC=_6mx%yjuLmd@(hv(KC$xA~u1}yMm(QQksb~fM(+Gn6B#K4)6@4 zR`RPt`b615F*cSI-$5}N?ebSjH8+&pa+O&j-Ju2`69Wi9+Dwn`+BVI-Q2ni&NC0J0 zO`iwSQseKnkz2MAn`SH{1)j}U{i8 zG`UC&uEC_-{xBLxDHfs%us%UB?!0SR>fh`T)0LoXTGI8sBU!g>Aja10#sjYa#*xpFFT8J~y5hNJ>VZMc! z4>1NH5Ge%tXAXx0IX&!X0-?IzpJgL z4x6{fYH5L3&0frEqwa32sq2s1W3{<~Sj|z)YG?0mtEmBz+het+?EI*oFDXYNZ~iwrI=T?{OoH&D3X4@?p~Dh{w-SU&3N)mJ zsMty!+6&J1!t?EgvF#OnOAQ}-q`h#ez0j(If^DNe`wtz2k2(l*ItcYG3cjuW?4B0k zd5iFC6??z_?AlhLfmP^Y6-HSVd^`QwYplX1s}N~ZukdF1(^*t@^W1+J*CWp@~Dtbtrh7{_HOtLcT*dq+%WVvtM!wKBq9!DeQJCc&GmC z#x9|SOL*3$U=#IcuW$+LT*4KX@MNNbck9m{`8DRfL}9*)?WjN7;}*W>7E;~9RJVfv zj)o7p;1;eG;VM6rmE|20(pifB8x<8*)bvU&x{`eZ2BsJNR4KQ2|6~KW%DDrx(+8Hi z7>-F9m^Ij&m7F#p^~RdB=#yLDz8sz9OG?WqSVKRQoSfy$&Mx}kQE%$Nth6MnB`c{< zW@c(;ng1*Ck5ay2y8#1x_xD-zEJKo0U7qAVu9VC{S+>NyzJoGc>E6urtp3T~bk~p+ zU;oU0$*OjCVThpU$A*@?hkYsD-2OS;y#0J#bNcwQe7Wg2^zOW^dz8!8_5qohw#+^$ zHeZI#kfE(XYv>otY3MwAcE42bfQ)3Hy`QabR>t6rBzND;OlRMrnQmX65#v|2THHZv z{_^!Hh33!B^kk-F_8rpSXUy6+-t~Ld4#e8_f*#zR=*S)1$C$Nk_pDtGYZtuR$r;X} zt|Wuj4&D*-@p4*wP)eVELy}W7hi1D|2YK>x4UL6-GNVUQVdPKnk zZZ4rKKiT7{A6R|;y}f; pending: true } | { value: T; pending: false }} MaybePendingValue */ - /** @type {MapStore>>} */ - const chainByName = zone.mapStore('chainName'); + /** + * heap store is fine for a cache + * + * @type {MapStore>>} + */ + const chainByName = makeScalarMapStore('chainName'); return zone.exoClassKit( 'Orchestrator', diff --git a/packages/orchestration/test/examples/snapshots/send-anywhere.test.ts.md b/packages/orchestration/test/examples/snapshots/send-anywhere.test.ts.md index 7a169967c91..da8fa18a1e4 100644 --- a/packages/orchestration/test/examples/snapshots/send-anywhere.test.ts.md +++ b/packages/orchestration/test/examples/snapshots/send-anywhere.test.ts.md @@ -4716,16 +4716,6 @@ Generated by [AVA](https://avajs.dev). LocalChainFacade_kindHandle: 'Alleged: kind', Orchestrator_kindHandle: 'Alleged: kind', RemoteChainFacade_kindHandle: 'Alleged: kind', - chainName: { - agoric: { - pending: true, - vow: Object @Vow { - payload: { - vowV0: Object @Alleged: VowInternalsKit vowV0 {}, - }, - }, - }, - }, ibcTools: { IBCTransferSenderKit_kindHandle: 'Alleged: kind', ibcResultWatcher_kindHandle: 'Alleged: kind', diff --git a/packages/orchestration/test/examples/snapshots/send-anywhere.test.ts.snap b/packages/orchestration/test/examples/snapshots/send-anywhere.test.ts.snap index 5a8397638f05becc459e619e28dfc80a6fa800f2..0e54620618201b3e0ba52a79740e3a8a1deed561 100644 GIT binary patch literal 30261 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 accounts in vstorage - Iterator @Map Iterator { + Object @Map Iterator { [ 'mockChainStorageRoot.stakeAtom.accounts.cosmos1test', '{"body":"#{\\"localAddress\\":\\"/ibc-port/icacontroller-1/ordered/{\\\\\\"version\\\\\\":\\\\\\"ics27-1\\\\\\",\\\\\\"controllerConnectionId\\\\\\":\\\\\\"connection-8\\\\\\",\\\\\\"hostConnectionId\\\\\\":\\\\\\"connection-649\\\\\\",\\\\\\"address\\\\\\":\\\\\\"cosmos1test\\\\\\",\\\\\\"encoding\\\\\\":\\\\\\"proto3\\\\\\",\\\\\\"txType\\\\\\":\\\\\\"sdk_multi_msg\\\\\\"}/ibc-channel/channel-0\\",\\"remoteAddress\\":\\"/ibc-hop/connection-8/ibc-port/icahost/ordered/{\\\\\\"version\\\\\\":\\\\\\"ics27-1\\\\\\",\\\\\\"controllerConnectionId\\\\\\":\\\\\\"connection-8\\\\\\",\\\\\\"hostConnectionId\\\\\\":\\\\\\"connection-649\\\\\\",\\\\\\"address\\\\\\":\\\\\\"cosmos1test\\\\\\",\\\\\\"encoding\\\\\\":\\\\\\"proto3\\\\\\",\\\\\\"txType\\\\\\":\\\\\\"sdk_multi_msg\\\\\\"}/ibc-channel/channel-0\\"}","slots":[]}', diff --git a/packages/orchestration/test/examples/snapshots/stake-ica.contract.test.ts.snap b/packages/orchestration/test/examples/snapshots/stake-ica.contract.test.ts.snap index e57c318deca6efd17d81d952cbc552a63b154c54..171d95509f749f767d01ffb9aa984dc9c29d1ab2 100644 GIT binary patch literal 629 zcmV-*0*d`XRzV>|uAb`(`xr-qXH*+6htg z&Eb)xfI|5!;(gf`0{0cws$EHK-`CQZz$hM@9+Ejc@_kPH(b8KB79m;e0xRAEfZG6Y z2LK)dz#1!6SZSxTCj~K9VJmleT-_$AIiX%HuL4^F_6687W1Vr4WyW44CriUONmxiq zTOR@7GXPv+S=oiQ)_lMU$5FXlPJ!<&fKL{{dT|b)Qi4uDpjx4MPcOgi(W!nKKQ6CPL$qG?dj~EGtrYSs2uwU(l5LW?g-S_50jh03hl~8Oek0H6p`qWQuWjDU@jPpL0?WtFF;WTi1J%tz zu|~p;{GFaZ7{oGvHGY3L+7Bt%jZB&|O8F2yu9OU&?5tl+vTZFRBsoJ~4`b)s`KB06 zX8h0O6q6&nW}6Vn*saG;MnAUx<|(Z2&UpXTDZSr3SBklFmdyQk%zp+{{)zjWKX?C* ziE!fnr1P}#=3o2wH|8andm_QyUnw>jd(L__Phfrb%&dPNnVk9eWym`+q+=^r164gR PW4C_=(QW6@Ckg-nk`yKE literal 627 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 literal 2838 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 DRe@%< literal 2394 zcmV-g38nTyRzVrXaOhq2DdN_rfX7T-S=O$Hz`gc=W zZJKmT79WcU00000000BsT3c)!R~i0hz3aW$-urs(-L<_AO(|^>InEu02gj+2)wr=7 zCsC_Hbav)=J@xFF&CF~Zmx~%HeL+G>ky@yPDv0uc5VuNEAqW8~4+U`(FFcfjqNYMB z7a@44T2TeEv%9lr&aCZS!wdMyGynH}=RfEC=l{<+vtL~)X}Y{-UcEsr)zT<6En--z z$w<{))h+Yt4Miaqd16<(4?)!bq>vPv18^F^bpSsD@HT*Z07fL>hy%EhSs%rrulay)`GCLrfJ1$N-UqzW2mGrK znDhfr`hl1Hz>oaETYexA5JuML9@&sIa6AB<2mqf70N)J&cLKl%0brybIMxp=_5;`Z zfj9aEsh}w3p9liGgTTrA)BbEwfKQ0<@M}Tfr$L|)0<;kD%@FXX5U?iS4T(BTEwEg^fM|+PjQ~58|%5olJ$5GoRs_?d1Zgw%%kM*VZXnTOd_? z2<(`Qhyyg+%q_hRP|_iKCNSafX8FW*i|bUjMCH{3(~AaOQLilPHtum!p*HX?2aJ>q z!jzMg=@r{14RJO*FV3?Sy)kN2oGm8nj5VUX4Yua^@Y)iM-L3x1V zn=?$Ab)4u`X`-p*>O~hKL#P{~lJuFO&5MDnrQvG5-pO-BrajlY4A1q%LE52mFx$nD zptEmQH!HeXJj450oRMX{#;oEgUF)u-x-=g?t;+?*R{qvxyM-sszhF+R@2xagN)h5W{FzH zMt%FVlgd`;AmNFoyt}%&&|>mlH1vvU(hJ0rS9_0~UFWK0gD7-~HtXaLbtX5{@${|e z$ZSFp^VE5LeV$p=U_>)_5XwF-WurdBJ@;;`lZK~f1xKO-T+AkRXU|!xW_B0c zyQA$m%^7?^2=y`~`DUZQd{o%8^$FX*hBYu_7-U28xBiR8VveoF40L3+to@#i?9)-8 z8U9G2j^yp5C(UaZ$|oatydB ziWEgy-|I2pmoeavBJ@Fzd-r01KMu^tfzQPS_#++%ej5kg6k&U|?8QFM)?5-oFH)wA zHfn_Z%8ynlb;0^cSvOQ!coabXdM#@`1nt76nxc?t8LC2sN3MM56YbD;nu$u%I(!k^F(gM9+l9Bg9)+a98%f|!5*SDU2U5UtN?0fZ;(7|0DPSW7+(-dGPXT`s zDNzq)APpqa!0|Moq=Dzs0wp0*`fsLzucv|ErGfX;KrsV+EF;h|9@-}}fRX`T%mBAC zz?&K1eUUceq2-2w;xMp03>d?}mxqDd!vZbuNm_3V19ygjTvmWidZ351!0{~bqzL`6 z2YM+BtY?82MCeC6X~{3dz#xB2+B)k58;2pq+0nIDu$bvo`O>4TUMCw+U))}8-^g;u z1=AvHDl0GRYm}MYJ7y=oZQKfTIcICXVzytu`7ik8WRI-}tewTW8L)S^b}S$s(q&Dh z%(|#L?Zu{!?6vHCRZ*GMOtATpw(6jLRG~(d7}ka$=WFW>wokeq-veg-7Nb$onw4OV zYawPe^XBX-VT@{BdLDOse&nDn{9Ny@4{@#^KDxc{-}%pdPr7}d-oO8tE&aFNy^rw& zfB4Xm?fuVM!Tlo z?m!JmzJH7Y?~TH>u^x19tR2ZVBNP)r0RbHIoIN(!L9T{+;P9Pm_5$hE^_S`Iy* z1HPC8UdsXh%mMrIz(O9d^1$0k~cOeo_G5 zDgfaz;K4D0p7XS{Fb13*1FnhCf~Tcd$ABM<0q=|f#c|;5IADweFO37QjtlfL&(`|) zJA$oRdgva1V*CbU7*e4~jMG|8i2i8)ziMx51k=zo7c8pr3g ziFP%WrtIYWg$dwG6GCzx^5pREPXIp_VQ~-a?ga3T2upcjgGC@&6ks3P_By5Uam6_o z)JmGt1ujr)93Z*?nwFt(!?mZ#U1dKbuQYF~LsGC@1S&<~l_JnL3CvCcpPvMNF)4KF z0Z*s;#YQfU1aqF5s3GAYv{S+S^5w0}$T MZ#&s1abh9>0M}Wb(EtDd From 5e30f5541838e87faf4dd674207f1af40718d4c4 Mon Sep 17 00:00:00 2001 From: Dan Connolly Date: Mon, 24 Feb 2025 11:11:05 -0600 Subject: [PATCH 5/6] docs(fast-usdc): fix type of publicFacet in FastUSDCKit --- packages/fast-usdc/src/start-fast-usdc.core.js | 1 + 1 file changed, 1 insertion(+) diff --git a/packages/fast-usdc/src/start-fast-usdc.core.js b/packages/fast-usdc/src/start-fast-usdc.core.js index 6f7efc8f590..e13fbc4d597 100644 --- a/packages/fast-usdc/src/start-fast-usdc.core.js +++ b/packages/fast-usdc/src/start-fast-usdc.core.js @@ -59,6 +59,7 @@ const POOL_METRICS = 'poolMetrics'; * }} FastUSDCCorePowers * * @typedef {StartedInstanceKitWithLabel & { + * publicFacet: StartedInstanceKit['publicFacet']; * creatorFacet: StartedInstanceKit['creatorFacet']; * privateArgs: StartParams['privateArgs']; * }} FastUSDCKit From 1477c17502ea0e2e1fc5318a43c7c827b09b9382 Mon Sep 17 00:00:00 2001 From: Dan Connolly Date: Tue, 18 Feb 2025 17:34:59 -0600 Subject: [PATCH 6/6] test(boot): fix 'oracles provision...' to do all, not just 1 --- packages/boot/test/fast-usdc/fast-usdc.test.ts | 8 ++++---- 1 file changed, 4 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 21fc93e4ea4..880b89588be 100644 --- a/packages/boot/test/fast-usdc/fast-usdc.test.ts +++ b/packages/boot/test/fast-usdc/fast-usdc.test.ts @@ -58,7 +58,9 @@ test.after.always(t => t.context.shutdown?.()); test.serial('oracles provision before contract deployment', async t => { const { walletFactoryDriver: wfd } = t.context; - const watcherWallet = await wfd.provideSmartWallet('agoric1watcher1'); + const [watcherWallet] = await Promise.all( + oracleAddrs.map(addr => wfd.provideSmartWallet(addr)), + ); t.truthy(watcherWallet); }); @@ -75,9 +77,7 @@ test.serial( walletFactoryDriver: wfd, } = t.context; - const [watcherWallet] = await Promise.all( - oracleAddrs.map(addr => wfd.provideSmartWallet(addr)), - ); + const watcherWallet = await wfd.provideSmartWallet(oracleAddrs[0]); // inbound `startChannelOpenInit` responses immediately. // needed since the Fusdc StartFn relies on an ICA being created