From cb9e1eeab9295b44ec009b82d73c457299e8d6f4 Mon Sep 17 00:00:00 2001 From: 0xPatrick Date: Sat, 26 Oct 2024 12:00:27 -0400 Subject: [PATCH 1/4] feat: add `bech32Prefix?: string` to `CosmosChainInfo` --- .../snapshots/orchestration.test.ts.md | 26 +++++----- .../snapshots/orchestration.test.ts.snap | Bin 6873 -> 6957 bytes .../orchestration-imports.test.js.md | 3 ++ .../orchestration-imports.test.js.snap | Bin 3376 -> 3397 bytes packages/orchestration/src/cosmos-api.ts | 2 + .../orchestration/src/fetched-chain-info.js | 49 +++++++++++------- packages/orchestration/src/typeGuards.js | 1 + packages/orchestration/src/utils/registry.js | 1 + .../snapshots/send-anywhere.test.ts.md | 1 + .../snapshots/send-anywhere.test.ts.snap | Bin 1655 -> 1674 bytes .../snapshots/staking-combinations.test.ts.md | 2 + .../staking-combinations.test.ts.snap | Bin 2679 -> 2707 bytes .../snapshots/unbond.contract.test.ts.md | 3 ++ .../snapshots/unbond.contract.test.ts.snap | Bin 2237 -> 2284 bytes .../orchestration/test/exos/chain-hub.test.ts | 7 +-- .../test/snapshots/chain-info.test.js.md | 13 +++++ .../test/snapshots/chain-info.test.js.snap | Bin 1295 -> 1425 bytes 17 files changed, 74 insertions(+), 34 deletions(-) diff --git a/packages/boot/test/bootstrapTests/snapshots/orchestration.test.ts.md b/packages/boot/test/bootstrapTests/snapshots/orchestration.test.ts.md index 720d6075dc2..06537dd7550 100644 --- a/packages/boot/test/bootstrapTests/snapshots/orchestration.test.ts.md +++ b/packages/boot/test/bootstrapTests/snapshots/orchestration.test.ts.md @@ -14,55 +14,55 @@ Generated by [AVA](https://avajs.dev). [ [ 'published.agoricNames.chain.agoric', - '{"blockHeight":"0","values":["{\\"body\\":\\"{\\\\\\"chainId\\\\\\":\\\\\\"agoric-3\\\\\\",\\\\\\"icqEnabled\\\\\\":false,\\\\\\"stakingTokens\\\\\\":[{\\\\\\"denom\\\\\\":\\\\\\"ubld\\\\\\"}]}\\",\\"slots\\":[]}"]}', + '{"blockHeight":"0","values":["{\\"body\\":\\"{\\\\\\"bech32Prefix\\\\\\":\\\\\\"agoric\\\\\\",\\\\\\"chainId\\\\\\":\\\\\\"agoric-3\\\\\\",\\\\\\"icqEnabled\\\\\\":false,\\\\\\"stakingTokens\\\\\\":[{\\\\\\"denom\\\\\\":\\\\\\"ubld\\\\\\"}]}\\",\\"slots\\":[]}"]}', ], [ 'published.agoricNames.chain.celestia', - '{"blockHeight":"0","values":["{\\"body\\":\\"{\\\\\\"chainId\\\\\\":\\\\\\"celestia\\\\\\",\\\\\\"icqEnabled\\\\\\":false,\\\\\\"stakingTokens\\\\\\":[{\\\\\\"denom\\\\\\":\\\\\\"utia\\\\\\"}]}\\",\\"slots\\":[]}"]}', + '{"blockHeight":"0","values":["{\\"body\\":\\"{\\\\\\"bech32Prefix\\\\\\":\\\\\\"celestia\\\\\\",\\\\\\"chainId\\\\\\":\\\\\\"celestia\\\\\\",\\\\\\"icqEnabled\\\\\\":false,\\\\\\"stakingTokens\\\\\\":[{\\\\\\"denom\\\\\\":\\\\\\"utia\\\\\\"}]}\\",\\"slots\\":[]}"]}', ], [ 'published.agoricNames.chain.cosmoshub', - '{"blockHeight":"0","values":["{\\"body\\":\\"{\\\\\\"chainId\\\\\\":\\\\\\"cosmoshub-4\\\\\\",\\\\\\"icqEnabled\\\\\\":false,\\\\\\"stakingTokens\\\\\\":[{\\\\\\"denom\\\\\\":\\\\\\"uatom\\\\\\"}]}\\",\\"slots\\":[]}"]}', + '{"blockHeight":"0","values":["{\\"body\\":\\"{\\\\\\"bech32Prefix\\\\\\":\\\\\\"cosmos\\\\\\",\\\\\\"chainId\\\\\\":\\\\\\"cosmoshub-4\\\\\\",\\\\\\"icqEnabled\\\\\\":false,\\\\\\"stakingTokens\\\\\\":[{\\\\\\"denom\\\\\\":\\\\\\"uatom\\\\\\"}]}\\",\\"slots\\":[]}"]}', ], [ 'published.agoricNames.chain.dydx', - '{"blockHeight":"0","values":["{\\"body\\":\\"{\\\\\\"chainId\\\\\\":\\\\\\"dydx-mainnet-1\\\\\\",\\\\\\"icqEnabled\\\\\\":false,\\\\\\"stakingTokens\\\\\\":[{\\\\\\"denom\\\\\\":\\\\\\"adydx\\\\\\"}]}\\",\\"slots\\":[]}"]}', + '{"blockHeight":"0","values":["{\\"body\\":\\"{\\\\\\"bech32Prefix\\\\\\":\\\\\\"dydx\\\\\\",\\\\\\"chainId\\\\\\":\\\\\\"dydx-mainnet-1\\\\\\",\\\\\\"icqEnabled\\\\\\":false,\\\\\\"stakingTokens\\\\\\":[{\\\\\\"denom\\\\\\":\\\\\\"adydx\\\\\\"}]}\\",\\"slots\\":[]}"]}', ], [ 'published.agoricNames.chain.juno', - '{"blockHeight":"0","values":["{\\"body\\":\\"{\\\\\\"chainId\\\\\\":\\\\\\"juno-1\\\\\\",\\\\\\"icqEnabled\\\\\\":false,\\\\\\"stakingTokens\\\\\\":[{\\\\\\"denom\\\\\\":\\\\\\"ujuno\\\\\\"}]}\\",\\"slots\\":[]}"]}', + '{"blockHeight":"0","values":["{\\"body\\":\\"{\\\\\\"bech32Prefix\\\\\\":\\\\\\"juno\\\\\\",\\\\\\"chainId\\\\\\":\\\\\\"juno-1\\\\\\",\\\\\\"icqEnabled\\\\\\":false,\\\\\\"stakingTokens\\\\\\":[{\\\\\\"denom\\\\\\":\\\\\\"ujuno\\\\\\"}]}\\",\\"slots\\":[]}"]}', ], [ 'published.agoricNames.chain.neutron', - '{"blockHeight":"0","values":["{\\"body\\":\\"{\\\\\\"chainId\\\\\\":\\\\\\"neutron-1\\\\\\",\\\\\\"icqEnabled\\\\\\":false,\\\\\\"stakingTokens\\\\\\":[{\\\\\\"denom\\\\\\":\\\\\\"untrn\\\\\\"}]}\\",\\"slots\\":[]}"]}', + '{"blockHeight":"0","values":["{\\"body\\":\\"{\\\\\\"bech32Prefix\\\\\\":\\\\\\"neutron\\\\\\",\\\\\\"chainId\\\\\\":\\\\\\"neutron-1\\\\\\",\\\\\\"icqEnabled\\\\\\":false,\\\\\\"stakingTokens\\\\\\":[{\\\\\\"denom\\\\\\":\\\\\\"untrn\\\\\\"}]}\\",\\"slots\\":[]}"]}', ], [ 'published.agoricNames.chain.noble', - '{"blockHeight":"0","values":["{\\"body\\":\\"{\\\\\\"chainId\\\\\\":\\\\\\"noble-1\\\\\\",\\\\\\"icqEnabled\\\\\\":false}\\",\\"slots\\":[]}"]}', + '{"blockHeight":"0","values":["{\\"body\\":\\"{\\\\\\"bech32Prefix\\\\\\":\\\\\\"noble\\\\\\",\\\\\\"chainId\\\\\\":\\\\\\"noble-1\\\\\\",\\\\\\"icqEnabled\\\\\\":false}\\",\\"slots\\":[]}"]}', ], [ 'published.agoricNames.chain.omniflixhub', - '{"blockHeight":"0","values":["{\\"body\\":\\"{\\\\\\"chainId\\\\\\":\\\\\\"omniflixhub-1\\\\\\",\\\\\\"icqEnabled\\\\\\":false,\\\\\\"stakingTokens\\\\\\":[{\\\\\\"denom\\\\\\":\\\\\\"uflix\\\\\\"}]}\\",\\"slots\\":[]}"]}', + '{"blockHeight":"0","values":["{\\"body\\":\\"{\\\\\\"bech32Prefix\\\\\\":\\\\\\"omniflix\\\\\\",\\\\\\"chainId\\\\\\":\\\\\\"omniflixhub-1\\\\\\",\\\\\\"icqEnabled\\\\\\":false,\\\\\\"stakingTokens\\\\\\":[{\\\\\\"denom\\\\\\":\\\\\\"uflix\\\\\\"}]}\\",\\"slots\\":[]}"]}', ], [ 'published.agoricNames.chain.osmosis', - '{"blockHeight":"0","values":["{\\"body\\":\\"{\\\\\\"chainId\\\\\\":\\\\\\"osmosis-1\\\\\\",\\\\\\"icqEnabled\\\\\\":true,\\\\\\"stakingTokens\\\\\\":[{\\\\\\"denom\\\\\\":\\\\\\"uosmo\\\\\\"}]}\\",\\"slots\\":[]}"]}', + '{"blockHeight":"0","values":["{\\"body\\":\\"{\\\\\\"bech32Prefix\\\\\\":\\\\\\"osmo\\\\\\",\\\\\\"chainId\\\\\\":\\\\\\"osmosis-1\\\\\\",\\\\\\"icqEnabled\\\\\\":true,\\\\\\"stakingTokens\\\\\\":[{\\\\\\"denom\\\\\\":\\\\\\"uosmo\\\\\\"}]}\\",\\"slots\\":[]}"]}', ], [ 'published.agoricNames.chain.secretnetwork', - '{"blockHeight":"0","values":["{\\"body\\":\\"{\\\\\\"chainId\\\\\\":\\\\\\"secret-4\\\\\\",\\\\\\"icqEnabled\\\\\\":false,\\\\\\"stakingTokens\\\\\\":[{\\\\\\"denom\\\\\\":\\\\\\"uscrt\\\\\\"}]}\\",\\"slots\\":[]}"]}', + '{"blockHeight":"0","values":["{\\"body\\":\\"{\\\\\\"bech32Prefix\\\\\\":\\\\\\"secret\\\\\\",\\\\\\"chainId\\\\\\":\\\\\\"secret-4\\\\\\",\\\\\\"icqEnabled\\\\\\":false,\\\\\\"stakingTokens\\\\\\":[{\\\\\\"denom\\\\\\":\\\\\\"uscrt\\\\\\"}]}\\",\\"slots\\":[]}"]}', ], [ 'published.agoricNames.chain.stargaze', - '{"blockHeight":"0","values":["{\\"body\\":\\"{\\\\\\"chainId\\\\\\":\\\\\\"stargaze-1\\\\\\",\\\\\\"icqEnabled\\\\\\":false,\\\\\\"stakingTokens\\\\\\":[{\\\\\\"denom\\\\\\":\\\\\\"ustars\\\\\\"}]}\\",\\"slots\\":[]}"]}', + '{"blockHeight":"0","values":["{\\"body\\":\\"{\\\\\\"bech32Prefix\\\\\\":\\\\\\"stars\\\\\\",\\\\\\"chainId\\\\\\":\\\\\\"stargaze-1\\\\\\",\\\\\\"icqEnabled\\\\\\":false,\\\\\\"stakingTokens\\\\\\":[{\\\\\\"denom\\\\\\":\\\\\\"ustars\\\\\\"}]}\\",\\"slots\\":[]}"]}', ], [ 'published.agoricNames.chain.stride', - '{"blockHeight":"0","values":["{\\"body\\":\\"{\\\\\\"chainId\\\\\\":\\\\\\"stride-1\\\\\\",\\\\\\"icqEnabled\\\\\\":false,\\\\\\"stakingTokens\\\\\\":[{\\\\\\"denom\\\\\\":\\\\\\"ustrd\\\\\\"}]}\\",\\"slots\\":[]}"]}', + '{"blockHeight":"0","values":["{\\"body\\":\\"{\\\\\\"bech32Prefix\\\\\\":\\\\\\"stride\\\\\\",\\\\\\"chainId\\\\\\":\\\\\\"stride-1\\\\\\",\\\\\\"icqEnabled\\\\\\":false,\\\\\\"stakingTokens\\\\\\":[{\\\\\\"denom\\\\\\":\\\\\\"ustrd\\\\\\"}]}\\",\\"slots\\":[]}"]}', ], [ 'published.agoricNames.chain.umee', - '{"blockHeight":"0","values":["{\\"body\\":\\"{\\\\\\"chainId\\\\\\":\\\\\\"umee-1\\\\\\",\\\\\\"icqEnabled\\\\\\":false,\\\\\\"stakingTokens\\\\\\":[{\\\\\\"denom\\\\\\":\\\\\\"uumee\\\\\\"}]}\\",\\"slots\\":[]}"]}', + '{"blockHeight":"0","values":["{\\"body\\":\\"{\\\\\\"bech32Prefix\\\\\\":\\\\\\"umee\\\\\\",\\\\\\"chainId\\\\\\":\\\\\\"umee-1\\\\\\",\\\\\\"icqEnabled\\\\\\":false,\\\\\\"stakingTokens\\\\\\":[{\\\\\\"denom\\\\\\":\\\\\\"uumee\\\\\\"}]}\\",\\"slots\\":[]}"]}', ], [ 'published.agoricNames.chainConnection.agoric-3_cosmoshub-4', diff --git a/packages/boot/test/bootstrapTests/snapshots/orchestration.test.ts.snap b/packages/boot/test/bootstrapTests/snapshots/orchestration.test.ts.snap index 53aefbf2f9c26c96c57a749970c15992d046772b..fb7233f1a0e18e3dd5f5a08ae0912fc8677150f7 100644 GIT binary patch literal 6957 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 BX{P`H literal 6873 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 H0L^~@dCX$| diff --git a/packages/builders/test/snapshots/orchestration-imports.test.js.md b/packages/builders/test/snapshots/orchestration-imports.test.js.md index 386f751d75c..b0a30362b20 100644 --- a/packages/builders/test/snapshots/orchestration-imports.test.js.md +++ b/packages/builders/test/snapshots/orchestration-imports.test.js.md @@ -127,6 +127,9 @@ Generated by [AVA](https://avajs.dev). }, }, { + bech32Prefix: Object @match:string { + payload: [], + }, connections: Object @match:recordOf { payload: [ Object @match:any { diff --git a/packages/builders/test/snapshots/orchestration-imports.test.js.snap b/packages/builders/test/snapshots/orchestration-imports.test.js.snap index 1a15f9da651d1ad8b20bdeb3ca878bd2aba577dc..d6c502b9743f72f59e14b545cfd8b5a5fb45f1cc 100644 GIT binary patch literal 3397 zcmV-L4Z89{RzVJ2tRYQFV05M+nP#1WMdn{x;~XprJ-P!* zJ>5|dgdd9t00000000BcT6t_7)fxZ2T_3w^dyn|GbJ$Mo_1fi1IMM`YZ09oII1ncx zq#+saKHH0TXErlq6N{EMDwhi3C<+Ax6bhv!k_IRgQKd_0bcL`2RuN~3-o${wO(Mm7r4O- z?DYa~d4Z}jpq5nx8H=!rAtf=D;^A-@tOl$FEXdgLWk4PCf|W;DurIAl$$FnUzHUOw za1-As;E_IgW{sp4JcY#(fTxv>rPfnc>$}4t#brcXgN>uadY|dgi8fNcsZAqG#&P30wZWLoLxLF z-~kiQW4{%!$YB4#z=R~rJTvCXQi2b0eL_iSCg;}zr!J%NjHGgNQ>~sF?MtMSvdMa1V9m|3%ndjw>s&Q$ zujA@;GM=4opRfroPU;iGVk9xbglEhLqkF3Aa#?_*{6_<%h=;CUbL4pr3Izh>#4Pkq1_lvW>M5zDZaNhNjb zu;&!DexTV;6isf5g??Z$RkXV)&h-Nusp4BD6=5*Hp)1e$foVT*jUV`>A9#k^IMF!) zVX#2%)5kn-`hmBoWQkk1mhMwO@CDVK={ku4pgBMk{jQT302WilD%VL202`^|>-YG9|1OMg}6> zPK7mK%nUG_tMUP+G9%5T6e%IVmz9FOCj5X1n~o1!SNS6X;Nx;!NhIZQ6L~^F%BQ8& z6c@UC*4>-;++lyUE4;82TxQLL0GEwQniYVr7FzvAt9eUXmzV&RkE)Vv4gE>6*_;!> zhePfzhH6~llilGh?(h|*V2=s!6=8iQ!`G`R6L_ko=!#jY--)0s$%=Iw{y{XR@wg%z z*QD*rEAF0t?(S)8Fb`LcbKTC}Oms*fEn z^X7gFg+eCr)*x_a5ZFVAAqP>6`gRQ88w8#rvIb(`^Fk2VPe{$wi8q75TS4HTgxEoe z9|wWYg8)KK;&HUwst^zfk+61BgoUhNsPeR;OQYEbfIXs~5O5+@Eutxgk9h_|z%V5) zE@9rsJQE>6CO$8vKJN$tmlD!<=nPyH01kTH^9uHuQ3>?Xnjv zWL(R+E^88eOqxpR<{WEgYh?}P*eTQ+Da~`O%_Uz(=C}^m3Sm%KM@{gsqt2exIBz$HUQT*01q?(`>13=!Q35e06uB}DjEs(_yQ-|8-XaLolrpQZv<9T+QNd4 zCmVt7jld<1&e(J^jZIfH0@qM`-=_9_4>baN8-dpvfy0eJYZGuv6EM^SB$|l)^n!)? zeiQJcCg6@H;OQpdwI<+wDqBWmPINgnTIOp8g3Z8!W?-P17+X;=CA=A!YzB5x>Ri*8>KR#-9Ig* zk_kyyRAEdXiiCt!pUo2-_iK4d8s#bb+ko{dvv0{y=Hzb4`E$k8;}~qzfK^&G#JPeu z@oXX1nuZYpsyE*vTwN=v`pkfXc7Z^fCDPU^s-ER+6F5FaO>i~$uHGde6`8!^Mxni2 z(903n~~#$6j4maq*PzdO7VQTTIHIaFYr!a@wfREdNFWQ{BV#Jv%I*rx3R?^GcfvR@We`|!*WdB}aSk1lz z3ac^1)`E7RhuZ2a`KTCZ2L>s+>Xe^Bjd)oHP}u==bPz**C6?1Nu|zP@ z*8!~R0LH0_l?5iMORQ_RIiM>$fL+wc8n>#*y&b^)RB^7G;)M=iKUG}dvJZXC^IivV zh-$uDN@I`F=QukF`p)vs2mJGiRc0=f9I)OiR0*5+*a2K$+3)tL6%ncVj z;CFNZmv#ZSbOFzH0q=JKfhdukS5Q@mMuFp^&Jk^TH-U{8i-myqMA@`*@rDzHe7CL_Xz3*mv=x0YE$anVQtCw|9z4g8WmU*DaoO5iVy&;} b1+Jl8PZmtmQKI|?W9Ewnktl!m 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 { * Info for a Cosmos-based chain. */ export type CosmosChainInfo = Readonly<{ + /** can be used to lookup chainInfo (chainId) from an address value */ + bech32Prefix?: string; chainId: string; connections?: Record; // chainId or wellKnownName diff --git a/packages/orchestration/src/fetched-chain-info.js b/packages/orchestration/src/fetched-chain-info.js index 0d83cbedeb8..651633fd1ad 100644 --- a/packages/orchestration/src/fetched-chain-info.js +++ b/packages/orchestration/src/fetched-chain-info.js @@ -1,6 +1,7 @@ /** @file Generated by fetch-chain-info.ts */ export default /** @type {const} } */ ({ agoric: { + bech32Prefix: 'agoric', chainId: 'agoric-3', stakingTokens: [ { @@ -138,6 +139,7 @@ export default /** @type {const} } */ ({ }, }, celestia: { + bech32Prefix: 'celestia', chainId: 'celestia', stakingTokens: [ { @@ -239,6 +241,7 @@ export default /** @type {const} } */ ({ }, }, cosmoshub: { + bech32Prefix: 'cosmos', chainId: 'cosmoshub-4', stakingTokens: [ { @@ -247,24 +250,6 @@ export default /** @type {const} } */ ({ ], icqEnabled: false, connections: { - 'stargaze-1': { - id: 'connection-918', - client_id: '07-tendermint-1188', - counterparty: { - client_id: '07-tendermint-320', - connection_id: 'connection-256', - }, - state: 3, - transferChannel: { - channelId: 'channel-730', - portId: 'transfer', - counterPartyChannelId: 'channel-239', - counterPartyPortId: 'transfer', - ordering: 0, - state: 3, - version: 'ics20-1', - }, - }, 'agoric-3': { id: 'connection-649', client_id: '07-tendermint-927', @@ -391,6 +376,24 @@ export default /** @type {const} } */ ({ version: 'ics20-1', }, }, + 'stargaze-1': { + id: 'connection-918', + client_id: '07-tendermint-1188', + counterparty: { + client_id: '07-tendermint-320', + connection_id: 'connection-256', + }, + state: 3, + transferChannel: { + channelId: 'channel-730', + portId: 'transfer', + counterPartyChannelId: 'channel-239', + counterPartyPortId: 'transfer', + ordering: 0, + state: 3, + version: 'ics20-1', + }, + }, 'stride-1': { id: 'connection-635', client_id: '07-tendermint-913', @@ -412,6 +415,7 @@ export default /** @type {const} } */ ({ }, }, dydx: { + bech32Prefix: 'dydx', chainId: 'dydx-mainnet-1', stakingTokens: [ { @@ -513,6 +517,7 @@ export default /** @type {const} } */ ({ }, }, juno: { + bech32Prefix: 'juno', chainId: 'juno-1', stakingTokens: [ { @@ -650,6 +655,7 @@ export default /** @type {const} } */ ({ }, }, neutron: { + bech32Prefix: 'neutron', chainId: 'neutron-1', stakingTokens: [ { @@ -823,6 +829,7 @@ export default /** @type {const} } */ ({ }, }, noble: { + bech32Prefix: 'noble', chainId: 'noble-1', icqEnabled: false, connections: { @@ -1009,6 +1016,7 @@ export default /** @type {const} } */ ({ }, }, omniflixhub: { + bech32Prefix: 'omniflix', chainId: 'omniflixhub-1', stakingTokens: [ { @@ -1092,6 +1100,7 @@ export default /** @type {const} } */ ({ }, }, osmosis: { + bech32Prefix: 'osmo', chainId: 'osmosis-1', stakingTokens: [ { @@ -1319,6 +1328,7 @@ export default /** @type {const} } */ ({ }, }, secretnetwork: { + bech32Prefix: 'secret', chainId: 'secret-4', stakingTokens: [ { @@ -1510,6 +1520,7 @@ export default /** @type {const} } */ ({ }, }, stargaze: { + bech32Prefix: 'stars', chainId: 'stargaze-1', stakingTokens: [ { @@ -1665,6 +1676,7 @@ export default /** @type {const} } */ ({ }, }, stride: { + bech32Prefix: 'stride', chainId: 'stride-1', stakingTokens: [ { @@ -1856,6 +1868,7 @@ export default /** @type {const} } */ ({ }, }, umee: { + bech32Prefix: 'umee', chainId: 'umee-1', stakingTokens: [ { diff --git a/packages/orchestration/src/typeGuards.js b/packages/orchestration/src/typeGuards.js index 2e08fb747f9..6a7571959a9 100644 --- a/packages/orchestration/src/typeGuards.js +++ b/packages/orchestration/src/typeGuards.js @@ -94,6 +94,7 @@ export const CosmosChainInfoShape = M.splitRecord( chainId: M.string(), }, { + bech32Prefix: M.string(), connections: M.record(), stakingTokens: M.arrayOf({ denom: M.string() }), // UNTIL https://github.com/Agoric/agoric-sdk/issues/9326 diff --git a/packages/orchestration/src/utils/registry.js b/packages/orchestration/src/utils/registry.js index 9156937910c..b065038c352 100644 --- a/packages/orchestration/src/utils/registry.js +++ b/packages/orchestration/src/utils/registry.js @@ -90,6 +90,7 @@ export const convertChainInfo = async registry => { for (const chain of registry.chains) { console.log('processing info', chain.chain_name); chainInfo[chain.chain_name] = { + bech32Prefix: chain.bech32_prefix, chainId: chain.chain_id, stakingTokens: chain.staking?.staking_tokens, // UNTIL https://github.com/Agoric/agoric-sdk/issues/9326 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 65648310c19..14c7fa11ebb 100644 --- a/packages/orchestration/test/examples/snapshots/send-anywhere.test.ts.md +++ b/packages/orchestration/test/examples/snapshots/send-anywhere.test.ts.md @@ -37,6 +37,7 @@ Generated by [AVA](https://avajs.dev). brandDenom: {}, chainInfos: { agoric: { + bech32Prefix: 'agoric', chainId: 'agoric-3', icqEnabled: false, stakingTokens: [ 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 8f699611dac1f9716e5f38de866004103fb1e7ee..92840da3e5e14bb69f79fb2722b5327186c9a1c0 100644 GIT binary patch literal 1674 zcmV;526g#CRzVSX*cuRT%!x-glF|Z`$12tQXXZEu}49`XHofW1~qE(=A6cwZw5Q>5iKB)LAqKGf{MGN|(QdBAhOMOywXZA94 zCQUQhr)9qH|IY3E|NqQfSgGhjshQ_4GE1{`R;|!#l~$Q%a@sIgg=L<*sH)VW&kXGg zBaZfuBuHW!z$}2*0elVM7XbeP7$(3Y1SpbNp2X%W&oRX!r1v+M%Ymdp;viWRNvK4^ zAkjS8dAMoNiq6Ul&5Ev>tL3LO>r_qS>QTy7opovHNnK}ErXDP}F-fDi$P{6y%-BR= zhLAY|bm1g5*SIpRikdm1_KGvtlFHJc!_yK^4nJ?hf^lv@n!aW?BZdG{J3{ zx!}lY(K6e+m_8o@-VXu4hJf8+pc)1)hk?Jtz(@pGi~w&$fKMX8)d=uUMB3SqcV`nM zbs!2Hi~?p9_$Uf|69ukCfkX_LhykZ!z~z`ElaOWNf5w2DF<^fjI2#8(jsw@@z)(U8 z&B>w30}0?@0(dO}{FDGDlEAY`;Jqa9SrWLClq9zMM!%5+Zv9VxECsxp0=`NCi2-10 zKnk7kIcrdI#mJ;u*Z5@je1n>5SPC~aUe%c;c$cuf7wu(AI;BHedzPBuL1!>N-Q;%Q z3Enbjqp>M}dlbg}3ch8G_5^%n+rMI<@88_4s2;b3!RDAn+qFSX#4a9mq9eyGYOx^e z%n5R=&rYrkdU~m_zx&OZicT2XETntu&g3Dcg))-C@w-&bu>M59o2=XH5*f1-Jol|*A;J0a&@XV ziJ(do9VO2yHX)J*iOCM_ZmyHkC{pC0 zE)=RyDvD@wtNSp#+-aES25;Z|(jW;*Y|oT1>%uJ0yP4&Vc=@Q%H`l~Hnh(ylCwLpl zE!-x?Y(4uFrl~^Jz{PBPe<~vIYQ`5?U05vG@EJlrbR9&}PU&N`&TQz43rc7eWl0F# zN##(wj|?=ZQe##JTqgr|*nV7Oma*2pux+KMj;|x(Gvt`JuX@;WQZ5*xu9@s4wUpK1 z&KX@6tr>1HgHzqyf>VaNp7!dLj+XrKMX>SiUfYcp9*} zwCJQ^&@~e2{>x^w?Hu$-#C#Gjrh%8`k>V1~iza;{-=%@?Ws%f|BAE@*tUN^cMjE)4 z28J`zFnQl>_GW;GW!kVziyX@UOBvwp3~*JZ@9?SKmjxcmO0=CDuA=O_rV`0SsVd{l zsap1<2tZOcZGezk)_(0;Cv0cWU6P5*r$uXdufMJIUUbSUb|N{N8A9I4_Dvb1Rbgm~ zjfQOWTNj$E(;Ay~wF8@R(;aUzuFhC4^@-g2>S4K6&m5XsGAK7!n9*)T%-Bll)+)*( zGn=}#)r#N~@Rg^LUcAg*_nbx+`ek)I`hB7RLZ}8gYWip*sn0{uw`=zkl`MO%B UD;6`#rbP|wKj|Q*e1a7K0D)pMb^rhX literal 1655 zcmV--28j7VRzVSWRpjMHK$V|90Ykr_Emzt3n76MU`3=(Oa4}G$LuEBu#~c zRE>8h&f@iq*&Wve5K<*By&yOMf&(f&AXP$e00}`6Ck|BHsF0usPCze!DpZvpi9heg z_IlP$v+>FD``$P2z4_+78Nah$F@;vMFI;BQkS42EXtheK%&<9a*c(FH7cT2MmGsGx za2Rp4KO{jCa{v|qyaM1FfFA(-17MT@j}o9rVtEofU3r>ml92A#TrLNa28n}YQ6!-f z34=uQWa@a+q7{>smzovRus6z281h`r;QC3*b(3{q=^4{xRi+;;w`~eXahYkt(wVgb z#|$Bh1n8KP)ZXOUoGDt4>5|8k&^D;SPc|!#4fR(x zK~jgKz|kmRM}ZHbz*kY=W)w)ofaw@;E(TnQDKrU{CjM&-xE%uy#ewJJz=v_*mpCwz zP+W7WYw~acIGO-nP5|F0faxUgR1$bQ34D?St|t|Wy}s3NC4oEt!yiil7gNBODIhTf z%nm88(>`SlE2FjS%QH?6@w!y0=lY(~ud%NEKNQI|#%xFhx2p%+o$+;$X z9MABUMH`JB>AR0%!q4DKW4ue?13UT^Lp}ZG7DRPL3X3f=N!z_aJ%}B9&_KslB$X^k zo*6=3_e555&vBD$Cuo&fXK9UDwu8FrLFK!sIck_qi@A{RypVNMwC03$x+yhLXKTLw zOg5b;7ipvO%Sbo07NfOA+HgwXXfml5Xm+co1T9dZ>*(9SeAjQ*+psX)ODa{dDA$iO zF6xeL%4>7l+&o_wZZS@HY*|fk?uxeu&^&;s?sE3UI&KP4Yc^&(yg_rl&*N{;aDBEL zL{O&bEvCLKc0iH_iKz`XQ-|_P;oa?%6K@`tn zQ)twj(KONIvh!njZEIj&7{2@POM@g7vPWixT^Dxwv=>?4A}^m5=FWzAALm00?EvpW zxr^Jxgv00T!W`A89=Mt9?S&!&XEV9X>O!($%V!9A&$AIp=SZKTb>^6^drS$VqOA&H zx<@&b?pcN!RI4$$WgKt<_Bnc7X42YhU)XjtQzr*d_yjr8KUe$E>Y-e+MBT92St_-S z;K~_a6RmkJnZ>DT??Ndf&bnu$VcI*}qz66q9=E)SDHA6_LXW3`#k6wk39A>T5KjZL z1B=dB7TqL~&bMqf+dhMR6fqygi)r8`b)~oh>$fI-Bwwe2Z&i}iwj`Nttyy)6@U1j( zCk>2dlx6b1Xbxt8BPwiEg+)$ffYl7}W(K&S!uR=D@6Q4cXBF7gwpo;Y*Hog2C{<;g zxn0ZoDFTp`0~;cwmUW(81Kg&%>QY2pJ}+8p2mNEE`_L(`I|s?-%npBt>jtm7 z>17@NZ#@3t^IMbQ&phyNzQ5%U_qTi!N)~`@LD`OyPYe4Czym65+`ZsAm~JbYDR^2@ zhLDXyFEnz{V|c@3h&Sk_DX8wO^?3pKLR~BEYsxRg=HH)Z^80RU_>C%C(#r@vC`t0%4#{*RRY0Hos zx7!t-njlbX_v5Y)fj%{{S&Zo)1$M000Si B9pwN3 diff --git a/packages/orchestration/test/examples/snapshots/staking-combinations.test.ts.md b/packages/orchestration/test/examples/snapshots/staking-combinations.test.ts.md index c6d98bfbc95..8c787b28444 100644 --- a/packages/orchestration/test/examples/snapshots/staking-combinations.test.ts.md +++ b/packages/orchestration/test/examples/snapshots/staking-combinations.test.ts.md @@ -35,6 +35,7 @@ Generated by [AVA](https://avajs.dev). }, chainInfos: { agoric: { + bech32Prefix: 'agoric', chainId: 'agoric-3', icqEnabled: false, stakingTokens: [ @@ -44,6 +45,7 @@ Generated by [AVA](https://avajs.dev). ], }, cosmoshub: { + bech32Prefix: 'cosmos', chainId: 'cosmoshub-4', icqEnabled: false, stakingTokens: [ diff --git a/packages/orchestration/test/examples/snapshots/staking-combinations.test.ts.snap b/packages/orchestration/test/examples/snapshots/staking-combinations.test.ts.snap index ef607a9874ee61abff32e8d4c2633d18e32cced5..694625ae9256de203d6ffae379762c326dddfb27 100644 GIT binary patch literal 2707 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 diff --git a/packages/orchestration/test/examples/snapshots/unbond.contract.test.ts.md b/packages/orchestration/test/examples/snapshots/unbond.contract.test.ts.md index 9ff9a074a00..ab5fcc7056e 100644 --- a/packages/orchestration/test/examples/snapshots/unbond.contract.test.ts.md +++ b/packages/orchestration/test/examples/snapshots/unbond.contract.test.ts.md @@ -33,6 +33,7 @@ Generated by [AVA](https://avajs.dev). brandDenom: {}, chainInfos: { agoric: { + bech32Prefix: 'agoric', chainId: 'agoric-3', icqEnabled: false, stakingTokens: [ @@ -42,6 +43,7 @@ Generated by [AVA](https://avajs.dev). ], }, osmosis: { + bech32Prefix: 'osmo', chainId: 'osmosis-1', icqEnabled: true, stakingTokens: [ @@ -51,6 +53,7 @@ Generated by [AVA](https://avajs.dev). ], }, stride: { + bech32Prefix: 'stride', chainId: 'stride-1', icqEnabled: false, stakingTokens: [ diff --git a/packages/orchestration/test/examples/snapshots/unbond.contract.test.ts.snap b/packages/orchestration/test/examples/snapshots/unbond.contract.test.ts.snap index d0c60a3f1ea81a3c2507d0072c2e6fa281c74a9d..7da1546a86278e2526d7443957805160631eb678 100644 GIT binary patch literal 2284 zcmV$V4HS_9CYN?h+sc8|zQcXr0 z=BjR)S8pl`vB<^oxBUpC^-qdOk$C_M06qiYrvP39@Gk%b2{}1m*RgF$8HmjOyu1?&qTFYxHQ%(`4XtWDU%xW5~ zQRM>@Et}vYyF_K(P^i%daafYhNI=&dCFTZ`=QVxZHa*3eBJwIx*{NpLw*1j$(V1ls z*|IHrd_7A-H{?}nS_ZLHo!RD#oH=k=UpHH;n7Hl(zUTvP`GCEC;2}Togdcd_4 zd;oYf06Y@_UJL+l1ca6KxmPwK#cmG*2ZBH?2s|AGeh>tH9R%JE0@)C7E(AOg65NDE zH-X=UfIo$Ra2S{i3-B=!9(^TJ*mD)UWd6ECoJgESg_<+RH~+3UeGjgsTQ1GaPahp}GHrWW+tIZHR_8ETQ1 z9*BppYacYw;yH_0bdY(rjv*IWu6=f!Oum=YsPQ0KqlRgt{6jrd+Cj||Rcjiw4cW^> zRy2KmUN_D*Em^PA2R!>3ZQ4vzz(PI7#6mML>i5QBOe?|5>}q7Nqtv<&YE_N}3<_1rbmo<^%=$@4^}1DC8k z&-H9?&Y^NJJH&|K=fIq9)^&5@EFb5@tSswIW=)*Zwf?H2%jX>nx=ge!T<)Sgmu-Lc z*3J`|C<80SNG}w9;Mr7`XkEAHV8ahf65?E!V4s%{k~+0b`#4iXt;*+hU2C6{OPpn> zLF6@Rb&Lr}AtAC+yM`=L%h+gjK)Weel}%iDvZ?GYS}wGx$%}?wS55jLvE2;NypY@1~+APt)XqL5l`3klQ{76IPh8=_@@|T)C12afN}yjo&c%|0iNA<>`~E~ z?^6ljn&@O)g!#Xj0KSs|UKF9XdBXcc0{BY;m>vd4qxX&yR4=!?v=j?SrlI1k*B9g>vp5=d78wyZr~3 zJN*6AHs%*ez9;Eo+O9f~Sc-GwusKY7n!}Pb%OTTER@Ip@%arp5VdhG!hf6^6*+4C| z#e_bW+Hykfa(ep2T-Wb8$`oqsrUIx{d5M}$&DyQ7cpP|CuITVZ?562aTKTEO z5-Fi;8Q`-S;71wY)eI2H0=H!aTFyh8&jJfs;A2_f@htFM7I;;pjd*Cj91zI?_vC;} zIpC8y;6_fMl{^CSYz}xn2l(;=bixB2%L9{n;DiW$j|X}&4=m?_kBZRSJrWTRav)x% z^6J5vMT4%WS3Gjyf`;22v*MKf?gnTl(tf{PaUSFfk z>_4zT>-g>vR+Q76?c++?aeeo{5SODK+b>v8#rj#WSGErvhU3b5q~p24#xMYJ5_!a{SnBa-js5#YBY zaCNOi?ygnx{dolVn*bUXL2r$;?r`0pv;gwQ3P7p=oGb`hn-^s{vQYp&UI4yc0DfNp z_7s7`Mc_k4V52C|_jpwOsUq;zB5+HD7Ca**N&mtfU6bY$%;U)c-q__SAZ8p*xqg1-1nxX zy-pr_USvDB1Dg@w*Eca{_eMjK^h(9P;&*-rN8P{gZ2#UQVf)a5sbd0%6Q|{^4*j8H zn|?BAy^XidG*|XIPdo~p?`X|pOKavt+EABvaAr!pd*g|Vx?ypZ%yQan7bRkUg6N*x z*6W7L9BTCCMbtI7GF+yHsrGu_uqvA~Q=K=1op&WI)Wn(oHf5OKl=;$aSw~5 z^tmb1hs2uof4M2%Mx~D};k%NVJ~xER_9FxBh;zCQ|L^Zd`}O(UXs?<|Q?@ui@{YQF zVpI_4xJScpjsjm3VM!0{g;C%o5ti}5{yqx4CBojdeu3x% zXj+ECEmv-gyYGBNUg=zEMx^lBG2p@&@P#qp^)X=IIM5sizCA8X>fN46iMOF+#5Ad4 zU0~|NO?p4wSl10@&})Lx&3t%n3M!6^P2l3i1F`hFDlbuD7=+aZ|HvisJ<$|;(YT?a zr#e}qr`cuIBD?u4QV{6deA;v)sYa?)yHe?X^PZ@ZT8-4`1X;1DF=79ofqw%_&0|GM GAOHZyTVgx_ literal 2237 zcmV;u2txNkRzVq^i zR|yF!*t56UIkvOwKEXciIsf;6^Uusb-~2P@`Sprns+;!J7bw@cL8;A&#dVvJy1ij? z`|1mtMmV`JbJ2?+T0bSEgq8rD0`LTY9|5=p;2i*21vsJrDJ76l0%t0pq$*dG-rsmU z4kZdD2qlJ;;z=uBDE@>peSgCu6@!+S8x=#hH_8v{d~H)_+6lrmgLYxj1;e0Ks@+p= z*(8qC3RO)@qt+0P6N++L0lMZeu`e@q$uOIa={dm^Qa6asPBbcx<+lSClW~iv+_6k~ z`j)6^sTvp@S-31t{?b?ANZFaNCkk^0Pt);q6x}0zMBEy zcL5+61Qvr5d|HNwuLXhYLEu+G;6ovx9s<4+0^SY*kub0~EK%&0DS``O;3Hw+3t`~r zVIUU)E<}K*B9iL|UD-4)WkPO2tLbc^JEx;2QdV-ebyhVfH(3{u>3I(#C7$$sdMirZ zWTQqSfq+TB?rw14cZU$F3@;w3<*vZ-NMfy1#KV?=|xoOeUl#`Yo$cwLQ zA2rb2Dkq$d($Cg16e3Hv*KUKU50EOg9wwXAvK^FntdC0cP)kHN8WwFs_K1*m!)z{@ z)|m!Z%^E%Ln$K{oK~bA|VtDDcN9FgF2M6B2x%D}e7z0I$oiyLRlwepe}|NVycL zQbyb2<-GDi(0FgGpEm(gH7#9r-p>o~gO0N5?S)N52b){EMg_Vj1Z%QQxBu?7j{p8S z2lIoNSd(-yZK@9B9g(KzEnwQ+oKTcQae=JCDkjqwn0D48%wBKRa8W282lz;Qn+{!% zZ`+~4?eye*i(TGT$~0>2W(UwK>I$_R2H&l)xCmS-m+Se<*e%l|x7=6f;d&HOe6PfT zZ^waKaloID5;o#m27430z67wE0Jsc~y5LVHfTt6{YYE_{43Eq3fRY4)N#JM_IG+Tr zB!Op=l3Uv4_G%J%EeZTJ2_#a$u@rDVCAno>Zp{>MB?Wvf1-y|0{+R-%(vn-=B^pQ4 zz=zX7Q-+pZ&?nQt(`n$FGW7i}=#4b+vo!D*8G46H7UX;mwo6~Fw|{q+qAVY}dhr3) z+D+O}Puy8H;Yp!5v^m+-S@o>BNtr!VYhghXc5W`_GS zEyQ?7tQI#2W7HTj^7vrnM-Do~H%AXWDujOc=VPQB~clY_C(&&?fks83Ce9DPh2 z_``>e+&=#1?c(>ycOztk+nEVPc|~X-LYZbZYm{+&OYUHuGEHYyF{ytk`1>yrqd|vu zoyxdfLyG521~`|&K&d!3SSl)>wG2Qd(1Z*!GeAQEB_xpdQyJh|2KZJ+61z!R7ejAl zfWKvcnJndqU2t5)t2`Z zfqP}xo*iq;4?!tsL(h+A-o3Bx8!QT6FH!d(V$a&(F7?w@BC_bYS+F z03wO)|wXfvd$ZqLQi(IX1S#`i?Z8T*X{24S^2_CbX+zqF6?By zSKAJ_gq(Z-?z(N&_yguZeJB=L*9Mj0618l-UuXt()t;a2l;gLbm4vh>&JQ;!6XK-I z9UXE`BHh6~B)2l;q|6iD7#5C~8H1OOs@cU`t&Kapw?{#%b zzJi=4woNU5j_DU0^g(*LXf diff --git a/packages/orchestration/test/exos/chain-hub.test.ts b/packages/orchestration/test/exos/chain-hub.test.ts index fed1602a9ab..ef165266422 100644 --- a/packages/orchestration/test/exos/chain-hub.test.ts +++ b/packages/orchestration/test/exos/chain-hub.test.ts @@ -94,11 +94,12 @@ test.serial('getConnectionInfo', async t => { t.deepEqual(await vt.when(chainHub.getConnectionInfo(b, a)), ba); }); -test('denom info support via getAsset and getDenom', async t => { +test.serial('denom info support via getAsset and getDenom', async t => { const { chainHub } = setup(); const denom = 'utok1'; const info1: CosmosChainInfo = { + bech32Prefix: 'chain', chainId: 'chain1', stakingTokens: [{ denom }], }; @@ -139,7 +140,7 @@ test('denom info support via getAsset and getDenom', async t => { ); }); -test('toward asset info in agoricNames (#9572)', async t => { +test.serial('toward asset info in agoricNames (#9572)', async t => { const { chainHub, nameAdmin, vt } = setup(); // use fetched chain info await registerKnownChains(nameAdmin); @@ -147,7 +148,7 @@ test('toward asset info in agoricNames (#9572)', async t => { await vt.when(chainHub.getChainInfo('cosmoshub')); for (const name of ['kava', 'fxcore']) { - chainHub.registerChain(name, { chainId: name }); + chainHub.registerChain(name, { chainId: name, bech32Prefix: name }); } await registerChainAssets(nameAdmin, 'cosmoshub', assetFixture.cosmoshub); diff --git a/packages/orchestration/test/snapshots/chain-info.test.js.md b/packages/orchestration/test/snapshots/chain-info.test.js.md index 9a7bab61b77..10da37384c0 100644 --- a/packages/orchestration/test/snapshots/chain-info.test.js.md +++ b/packages/orchestration/test/snapshots/chain-info.test.js.md @@ -12,6 +12,7 @@ Generated by [AVA](https://avajs.dev). [ 'agoric', { + bech32Prefix: 'agoric', chainId: 'agoric-3', icqEnabled: false, stakingTokens: [ @@ -24,6 +25,7 @@ Generated by [AVA](https://avajs.dev). [ 'celestia', { + bech32Prefix: 'celestia', chainId: 'celestia', icqEnabled: false, stakingTokens: [ @@ -36,6 +38,7 @@ Generated by [AVA](https://avajs.dev). [ 'cosmoshub', { + bech32Prefix: 'cosmos', chainId: 'cosmoshub-4', icqEnabled: false, stakingTokens: [ @@ -48,6 +51,7 @@ Generated by [AVA](https://avajs.dev). [ 'dydx', { + bech32Prefix: 'dydx', chainId: 'dydx-mainnet-1', icqEnabled: false, stakingTokens: [ @@ -60,6 +64,7 @@ Generated by [AVA](https://avajs.dev). [ 'juno', { + bech32Prefix: 'juno', chainId: 'juno-1', icqEnabled: false, stakingTokens: [ @@ -72,6 +77,7 @@ Generated by [AVA](https://avajs.dev). [ 'neutron', { + bech32Prefix: 'neutron', chainId: 'neutron-1', icqEnabled: false, stakingTokens: [ @@ -84,6 +90,7 @@ Generated by [AVA](https://avajs.dev). [ 'noble', { + bech32Prefix: 'noble', chainId: 'noble-1', icqEnabled: false, }, @@ -91,6 +98,7 @@ Generated by [AVA](https://avajs.dev). [ 'omniflixhub', { + bech32Prefix: 'omniflix', chainId: 'omniflixhub-1', icqEnabled: false, stakingTokens: [ @@ -103,6 +111,7 @@ Generated by [AVA](https://avajs.dev). [ 'osmosis', { + bech32Prefix: 'osmo', chainId: 'osmosis-1', icqEnabled: true, stakingTokens: [ @@ -115,6 +124,7 @@ Generated by [AVA](https://avajs.dev). [ 'secretnetwork', { + bech32Prefix: 'secret', chainId: 'secret-4', icqEnabled: false, stakingTokens: [ @@ -127,6 +137,7 @@ Generated by [AVA](https://avajs.dev). [ 'stargaze', { + bech32Prefix: 'stars', chainId: 'stargaze-1', icqEnabled: false, stakingTokens: [ @@ -139,6 +150,7 @@ Generated by [AVA](https://avajs.dev). [ 'stride', { + bech32Prefix: 'stride', chainId: 'stride-1', icqEnabled: false, stakingTokens: [ @@ -151,6 +163,7 @@ Generated by [AVA](https://avajs.dev). [ 'umee', { + bech32Prefix: 'umee', chainId: 'umee-1', icqEnabled: false, stakingTokens: [ diff --git a/packages/orchestration/test/snapshots/chain-info.test.js.snap b/packages/orchestration/test/snapshots/chain-info.test.js.snap index f75f04ba200130b86049813625af5b121692edd8..4b0e2bddb25da500148fb466f6573912bd3fc760 100644 GIT binary patch literal 1425 zcmV;C1#bF5RzVUty_j4%JL7K+;W2G zOQgFn!yk(X00000000B6*nfx=WgN%x_w3C6{_XCTdS>}EOV831k|3!lvP?@5Dllbl zZ_XRCxF_NI55R#%u1yQIgN}`DRLxqx1|HwbWgh1#g5mIDwdx}W zdV0!M`Ki)tDpBk|C8lIH0^Ps>Fa+!dUIO+5hk#Mw6W}Cp7B~-l4-}M0UJ2hFF-X_Ta*TykF|sVFlPP!y-U-!4N=*>9JsQ|_}%%_%>#%dk`aV3!f6%!WXT zI^{~cj5%f5F5^!5qFpAO@_V8^txq~9l6d&#w*qOV71=Y=yvFc z57m0M_Y6Dgn4j9(FsqLG(MLs1y|DjA*&d)3P)JD>AS-121IYh-~Tf zw0x0)(;2v&fmvC&Co5W(wYH?4voUKg-0^jr>eefLUCSS@>Al9VXY*>IQRg!7aL>d; zyg}_qbZ+e#6|dq1vyT_29v-+b#X0P2whrHZld# zBJTFwCRlP}6YpFREZgBJ$ksd$e3NBt(>Yi+OjEZymjw&=)l`IYk0IZ15!(a}b!iGh zT|4!BbH$r1XtYw!H<}tG+W0x^8!YOeK(PWpd*cUpo0m>scfbdom%IJvCD=N$pR9JD zSMxs6K3CSswRsA1Mck`NyB*6_L3f2cQxGg{UxM0gSc&nQQqYg`=#)%Z^U~F3${ZCm z*qNzVW9}`_f3LDl&`^K)go-Jl>3Nu)Z~g9}i7zRkMR`~%P)wqgc~~V-N}|v*jgTVni%7#|nopT#&=XdT}r#+$_W z`9kvtozOc4_@E#zlwo-X4V^2%dCB4)cC`SZqF`wcTTq0>lI1;YT@f}&R`Rf+B0MMA z3=ey|2!|!R*~3m1;jCoyJnZ)({4Lq79@bHUIVHgsd)R{|SR>gT9%h!nlB~;f`&Y!S z6zfp8At$Uy+kaKRuS2(7j&-fb~kv f3IHRG<^de!Us|;wpG>%6A3py9e*FJ=#uWen5UDK?TBcTxn)7TJKeu&h3Y46KZ$TJ zl1H@%mLH1<00000000A}*I%dXJcq&Gu!15%i{S?}ZQZ%*?*?KJUACeYxJKjQZPNaf4b=cSkB4oSHXO^VT4t>_U)ePB2#|QtX11?Fx};4w#MAHS~aOm z%^3f8d3-7j6KVK3JvoI^_m@Z9N}%aeu}~-|{&O0BO~Zf*H=BZ|Bm7|#)|&9N2@{fA z5q`vkqb8g+VK5`O9pSfUV0i|HGq6MQ{s@0918-#Ds|=ix{8GvFfh-JW;jXNpGb2~7 zW?>`?FJ$3e$uE!aV_Enn3n>d0T7q8@;rCdu+JeA>-I8A!;cr`Tz=H2BNah5;I>P7Y zU{MYp%7HKWP=xQy!JZr(%E7miFX`lcs^!_?B%JzMRJXpjIyKANYtYbA;j*>Lrn^0- zTzA_vQ9#RU+TS@Y_?`l1wB`-3X^gs_AFtZ^l`KxRd3`-qv!+(Vp&R2BT+v&>e7L3# zjX5>XbAzEJ@oJ9sRx=f@&~a<+?5$R2a-EM`?w#)C5*I0#R^1|2u^2bscR^E$`v50; zd|#8T>Eh*VRZh$I_I0%zT-?dNptow-bNw;y%Usp#)2S{Sx7x?phtmQTB>FQC*qvyaL|GdO0$nE23>)SM zG)tmIHY^rsu0*%luuPx@60Nl10f81t^q39n1iDV55gRrNbc5Wqw-1uzwmMx-jrWT2 zM`HY&7!MRW$9ITvRg9k%<2S|lYcZzSIbK+tJaQ-QE5e$h*d`?9t|IY75uTJR6JakG z;Z@1{BJ4;Jj!IUHu+v5OL$XUEY Date: Sat, 26 Oct 2024 12:01:31 -0400 Subject: [PATCH 2/4] chore: remove dead test code --- .../orchestration/test/exos/chain-hub.test.ts | 19 ------------------- 1 file changed, 19 deletions(-) diff --git a/packages/orchestration/test/exos/chain-hub.test.ts b/packages/orchestration/test/exos/chain-hub.test.ts index ef165266422..81b22718c46 100644 --- a/packages/orchestration/test/exos/chain-hub.test.ts +++ b/packages/orchestration/test/exos/chain-hub.test.ts @@ -20,25 +20,6 @@ import type { } from '../../src/cosmos-api.js'; import { assets as assetFixture } from '../assets.fixture.js'; -const connection = { - id: 'connection-1', - client_id: '07-tendermint-3', - counterparty: { - client_id: '07-tendermint-2', - connection_id: 'connection-1', - }, - state: 3 /* IBCConnectionState.STATE_OPEN */, - transferChannel: { - portId: 'transfer', - channelId: 'channel-1', - counterPartyChannelId: 'channel-1', - counterPartyPortId: 'transfer', - ordering: 1 /* Order.ORDER_UNORDERED */, - state: 3 /* IBCConnectionState.STATE_OPEN */, - version: 'ics20-1', - }, -} as const; - // fresh state for each test const setup = () => { const zone = provideDurableZone('root'); From d6c487c1aca11b2287253b8885778dff9fd27a55 Mon Sep 17 00:00:00 2001 From: 0xPatrick Date: Sat, 26 Oct 2024 12:10:36 -0400 Subject: [PATCH 3/4] feat(chainHub): `getChainInfoByAddress` helper - takes a ChainAddress.value, parses the bech32Prefix, and looks up the corresponding ChainInfo --- packages/orchestration/src/exos/chain-hub.js | 25 ++++++++++++++ packages/orchestration/src/utils/address.js | 19 ++++++++++- .../snapshots/send-anywhere.test.ts.md | 3 ++ .../snapshots/send-anywhere.test.ts.snap | Bin 1674 -> 1702 bytes .../snapshots/staking-combinations.test.ts.md | 4 +++ .../staking-combinations.test.ts.snap | Bin 2707 -> 2743 bytes .../snapshots/unbond.contract.test.ts.md | 5 +++ .../snapshots/unbond.contract.test.ts.snap | Bin 2284 -> 2328 bytes .../orchestration/test/exos/chain-hub.test.ts | 32 ++++++++++++++++++ .../orchestration/test/utils/address.test.ts | 31 +++++++++++++++++ 10 files changed, 118 insertions(+), 1 deletion(-) diff --git a/packages/orchestration/src/exos/chain-hub.js b/packages/orchestration/src/exos/chain-hub.js index 120d51fae9a..6b86cfe881a 100644 --- a/packages/orchestration/src/exos/chain-hub.js +++ b/packages/orchestration/src/exos/chain-hub.js @@ -5,6 +5,7 @@ import { BrandShape } from '@agoric/ertp/src/typeGuards.js'; import { VowShape } from '@agoric/vow'; import { CosmosChainInfoShape, IBCConnectionInfoShape } from '../typeGuards.js'; +import { getBech32Prefix } from '../utils/address.js'; /** * @import {NameHub} from '@agoric/vats'; @@ -180,6 +181,7 @@ const ChainHubI = M.interface('ChainHub', { registerAsset: M.call(M.string(), DenomDetailShape).returns(), getAsset: M.call(M.string()).returns(M.or(DenomDetailShape, M.undefined())), getDenom: M.call(BrandShape).returns(M.or(M.string(), M.undefined())), + getChainInfoByAddress: M.call(M.string()).returns(CosmosChainInfoShape), }); /** @@ -216,6 +218,11 @@ export const makeChainHub = (zone, agoricNames, vowTools) => { keyShape: BrandShape, valueShape: M.string(), }); + /** @type {MapStore} */ + const bech32PrefixToChainName = zone.mapStore('bech32PrefixToChainName', { + keyShape: M.string(), + valueShape: M.string(), + }); const lookupChainInfo = vowTools.retryable( zone, @@ -230,6 +237,9 @@ export const makeChainHub = (zone, agoricNames, vowTools) => { // TODO consider makeAtomicProvider for vows if (!chainInfos.has(chainName)) { chainInfos.init(chainName, chainInfo); + if (chainInfo.bech32Prefix) { + bech32PrefixToChainName.init(chainInfo.bech32Prefix, chainName); + } } return chainInfo; } catch (e) { @@ -316,6 +326,9 @@ export const makeChainHub = (zone, agoricNames, vowTools) => { */ registerChain(name, chainInfo) { chainInfos.init(name, chainInfo); + if (chainInfo.bech32Prefix) { + bech32PrefixToChainName.init(chainInfo.bech32Prefix, name); + } }, /** * @template {string} K @@ -425,6 +438,18 @@ export const makeChainHub = (zone, agoricNames, vowTools) => { } return undefined; }, + /** + * @param {string} address bech32 address + * @returns {CosmosChainInfo} + */ + getChainInfoByAddress(address) { + const prefix = getBech32Prefix(address); + if (!bech32PrefixToChainName.has(prefix)) { + throw makeError(`Chain info not found for bech32Prefix ${q(prefix)}`); + } + const chainName = bech32PrefixToChainName.get(prefix); + return chainInfos.get(chainName); + }, }); return chainHub; diff --git a/packages/orchestration/src/utils/address.js b/packages/orchestration/src/utils/address.js index 1735040c401..8d39ed5afa6 100644 --- a/packages/orchestration/src/utils/address.js +++ b/packages/orchestration/src/utils/address.js @@ -1,4 +1,4 @@ -import { Fail } from '@endo/errors'; +import { Fail, q } from '@endo/errors'; /** * @import {IBCConnectionID} from '@agoric/vats'; @@ -84,3 +84,20 @@ export const findAddressField = remoteAddressString => { } }; harden(findAddressField); + +/** + * Extracts the human readable part (HRP), aka `bech32Prefix`, from an address. + * + * see + * [bech32.js](https://github.com/bitcoinjs/bech32/blob/5ceb0e3d4625561a459c85643ca6947739b2d83c/src/index.ts#L146) + * for reference implementation + * + * @param {string} address + */ +export const getBech32Prefix = address => { + assert(address, 'address is required'); + const split = address.lastIndexOf('1'); + if (split === -1) return Fail`No separator character for ${q(address)}`; + if (split === 0) return Fail`Missing prefix for ${q(address)}`; + return address.slice(0, split); +}; 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 14c7fa11ebb..cb7e77f4a24 100644 --- a/packages/orchestration/test/examples/snapshots/send-anywhere.test.ts.md +++ b/packages/orchestration/test/examples/snapshots/send-anywhere.test.ts.md @@ -34,6 +34,9 @@ Generated by [AVA](https://avajs.dev). chainHub: { ChainHub_kindHandle: 'Alleged: kind', ChainHub_singleton: 'Alleged: ChainHub', + bech32PrefixToChainName: { + agoric: 'agoric', + }, brandDenom: {}, chainInfos: { agoric: { 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 92840da3e5e14bb69f79fb2722b5327186c9a1c0..019aa9a9d1af05779e75d69327a22ac5f66f262f 100644 GIT binary patch literal 1702 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 UD;6`#rbP|wKj|Q*e1a7K0D)pMb^rhX diff --git a/packages/orchestration/test/examples/snapshots/staking-combinations.test.ts.md b/packages/orchestration/test/examples/snapshots/staking-combinations.test.ts.md index 8c787b28444..bbf2ad9192b 100644 --- a/packages/orchestration/test/examples/snapshots/staking-combinations.test.ts.md +++ b/packages/orchestration/test/examples/snapshots/staking-combinations.test.ts.md @@ -30,6 +30,10 @@ Generated by [AVA](https://avajs.dev). chainHub: { ChainHub_kindHandle: 'Alleged: kind', ChainHub_singleton: 'Alleged: ChainHub', + bech32PrefixToChainName: { + agoric: 'agoric', + cosmos: 'cosmoshub', + }, brandDenom: { 'Alleged: BLD brand': 'ubld', }, diff --git a/packages/orchestration/test/examples/snapshots/staking-combinations.test.ts.snap b/packages/orchestration/test/examples/snapshots/staking-combinations.test.ts.snap index 694625ae9256de203d6ffae379762c326dddfb27..01a323d924f17902e88e58d2a0c44d1e0f98fc89 100644 GIT binary patch literal 2743 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 literal 2707 zcmV;E3T*X3RzV}PJ00000000B+T3c*f#Tou)Z(gsnyS8`Nmt9}hc5Ek3oF*nA4WUBzf}1o6 zN#g|Q)tx;%Ss#3S&T`J#n3M_>LSLu^JRs4E0u8ikOC{PopwObKr4QVM01>H|2UH0a zQS~AeQ9w~Ilyla5_MDl`#v2e-CFdbp@Be+@{4?{0^0ClNODWk1|s>6~+vc z>ZWX{v}7!3rg8GoLV=p}3zOIT(E{rq36t#i`tQPiAwV<#n zEIO?ytjG#iWi1=0kvPmGO)oHg6~q`J2MAC#w^HMTD$Od|vTgdF%M_LtsI2ZO=WWYd z9*d@$I+aY@GU2OPqM9x(FvHZTDQl{2UUHcO$F*g{8pY_3e83Yv;O{4eB*xdr0Y5`tq0kUCWPZ%hMfycs}L|Tw|GYtGS3|!L++}jGg+6qJ? zz`+P`a|F06!bxoAC0b5LfFFJc|4Rh8stq{N2K>AY_(vN@-7ZAfIxaeTrwdE6I$fRT zW`nDTqZ_hXRG6u$RY14H_98i*4CeQdueMtO7adh8$D0r^dV%T#U2wms{%+39YtdQ7Vf z#(9@5E@`S-3Emo@FIocx3l&X|uW3co7R#kvRkzu`u6OZ`X|<4ZoM={Qa7D?}i&cn3 zLBf25RtLAT+MCWM9KAs{@gg~$k({=amsM8Ss~(q4d$&1Y$9l64ZJ9IaqO2AxdbW`9 zQ8m{onnaapNz%%yS^d&~!^$3;i(Y)c^vHCTtdc;Qr4nnpBuKfr!XPIdstZo-*h~#CIKN(xk4wqRf(L&Q%x4Y(w)^u6| z!m2PYXY=o?BOydn##;b*(0ukdq-#sE!EU6cw9tIyq;Jrc_o^n-RjL@55h*FV-J_Y%N6JII@WMW)-=I1KAiZwW`>+}Q(R6oVzamQ9=2J14b)(~GY z`mT-vGko)59_GI#1}w*bdwFQ90DU|L{456imWQ?rjsH6a_~RU`n}-E^|!=Z^VH=$AQUqKyByXQ-aUGXa|1H!>(vJ>N|vDn{W{p zDKeE+Qkwl$0Ci!VPN>c7zcy=ECC(YCoL4Gaug?y_587)X7@|c@mnHlAsSbDku(R}n zRq{AQ*5NJ-ZQ|q=^A2)yyN&v;3zc#i=k1TOF}bbUffym@T;Q6Y0oxYptl2sXtfU#T zIc*hN3M*2xlGwJnFl|e8k*#EX+xTUdvE4H6ckQA!;*<-KDyxMR>1nlaM5n58%&OF# z?my94f874idC_t6^JUZCnOs$Qj;RHvU(W6%=cU8UC@bdWCOttw$iTf0pU2jXzTQK% zonv)93X@E)59=b(< zzSa%=z8iRthi()$QtIY##shqEzJQuE}BtC=6(k<7i);3## z`r7Sf8|`sb%|@kWKcX!%)o8-8%5uMiV{M)kxf8z`rQzt*o!GeZ$wNTlVtp8$!-05l|ZmuM{ z+yYfqrmWKQ4zK4^J9gR1&ou9Q%;o#kj-8kG{%@D^o{x#vJT;ho_~-U84=QY-tWvz* z=CP^Qb>_FXZDE9}mApW&>`dM}G1|nfT#S&TuI3|5EojS2Of`*1z9b+7wC)bX**7pGFvs(mlmmE;@h1Drql40^KIU8p7{2qfzNZG7zgry zDGksM8@WHtW#3LdQHP&T123n63u#~~1F#HmR|fb=26#Th(Gx(%bn*ql9IA}^} z>83v5t9`(?`hef`0q^z!$$nsWKX6k&NAGG_Gxyf5cB>oT9sR&JdBJ{RfBbeo@GuV> z7GP)kfwMepLqqpI)j_h3d;CSh%JoP+-nI@hsWub(zTUhKEuket8ISN^UO zh?mT>yQcUA8Lg$y`T9xq%I&-AzCc+i%gULx9kBY%hJqTn6ft`cEsX^e)L10T3xI4>H2L$T(v%uq7;F&BC9Rjo= z;He=XIm}T<1nQPyVEZtzZy0!B7`QMD%!~jJk8sqDm%Ov6JYIm=PG3!vja&P}puh>T$X$j}!^^Q~n8vnvzL9e^j)F}sS*45#Q3JHD= zdHk%$u}AtH*GPxIt})LQaEy?#^=mWn$;<>@-*_hOUz>?fXeM5%KNDfn;u{6RqrkpV z;K5PgccVb>7%)G^Wy(R}e(1?D;OQ~o!WeMPIB@$oN689#`Pp&crEws>0hr$aJh%aP zeFHGEk)y5`T05~3xML&m%Z-440+^ZLD5FAacTWKKO#tU6fRRnW{3hV^Cg8129Cboy z?K7K!+-Bh9X5hKaKxmSqY!WsO;ekoK=56|csg6X02c~-W%HB6q*R68XuS0HbgEv#p z#kEHvTlZ4B>DT)DDuPD?j>yID!udOp9{Xwfay{$zvIUR29I^+ILI*`ppol<43Q`3Rg#s$q2deVY2&5_%QWPl&iGq;A z<)wWps>sgn&YnHv*t>=o$dhOP@B7Yw&iT*(|8pkSR?3E{uG!DNM7holN^MRouG@^% z>{XN7&%UH-gp-e#emj5=8vm5A5}pTe9Kcrqyb0hP03QIzDZoJm7*>KQC3v#@DXMZs zasM0|8iEps5`vP%u;R-o15g4fW#aL=Mal*(E!E40Zm*V})cN@}ooUAi(+t{%#b*tJ zR;c#TQo|-`3@=mFv@~kbzmDJEm_7rm(t7bat#>b}VpOoQ|ABBLQg@9NXI2Q)K6$WmFfno$W7y+J&ND@0_i4cnb z{4V^b5g-%==A*zDqrmG?iMq!VQ86hR^0Qi1XS3~n?KhZm65ZBW#h~0|ZNR9@?nX*F znIn3`OWkDsdQhCNGlzJFty`p4>nX0g6vn&?o@o?Z0T0-T+rLLUaXWO}teoPeMHeY2 zjhrAKz_z_#NAssR;k2K5CKM$z*zqjWJim3O9wilOJx$iAWjm-T0hMx5^F%l57HvXK zh>#V-T%R|slXb3|ReIL5pOL!bgwK^C5x`;mrk1w?gXh)2Y6KgM#~mq+T)a&Rmb*o(dOjA1-4=~ zSM9HYEvcG}HKV)(7>#uR0j;UoHK~GOnrrpiTwAx_MR`!*+p|oYbDii{X|ko%HH#iZ z;%FEWin2d;@8sV#(nzgQ-_&`c(!T3kR^)o(AmdU6nB!tt(s^Xgw5z6FIw|^DnpIV^ z&UopVY4lb?yEJzlH&tTXLvkCne9X~vwsxMVMC&`HjCNcx`<_j4nO03s`x`!?DCdMQ zh^Sr1>`Q_vte4f(rfD?K$!mgTutwB1%3H=bl%V9vT8(}b(5{YOsWthv6xIJFot>}^C!)*1H<*A2V3O}Z_tcfk@TCguIG z;(I@a#x`{K9s^R_(zFI=oS*z?mxL}@ zkW@@dSEWY@O0^)jL>ZSYV46#tP?S_k5UaDY$+TIfowf+GR~r3j z9E#5YKAO76ges|fPN=)$FC3X`>z<-aqt|pcE?>rO7?Sy= zP66p{MqwrJd3foQHNJ z1Ki92u`IAF3!KgZ7qSv<%#*a9&jMGnzzrFCp9lJnEbwj?NRLR+4|||HM}Uuv0E;qo zrzb7>r5K2b?f&LjC)8}}HMcWqpI|xD>FR}}tWhVMP~VVq+O!d&?X@{s(^=)Txkj1Y zyJJq`+rq7gkaIToE9v<4+<(C@H+yWpV4W=1%YwbKxnlwOWm7eD%J_NR9WOa`a1VF# zRaIxam0;f%RAWxdO|2TS_+?4X*U^b}-q<|82kge%c(bClD!~WB2ua?`n{%s#F>3Va z`B1m#2lqL`kB#>2dR%b*z@e>uUmg9AeNT7$J~KUi*pYs@fA5px!XMawaBKf>Y~{aC zzH%acTzWOCZccd1r%W@~tCVqjL+wzFGEHX{F{lp-{J=$G)M?Mu3mZ_witqb5;Duse5`EN@)oTUdVgdM`49$B+x?KSNQ~;7=z_Bsl(__Fl#(>wyfIo~$^nz!k zKoJ-$0*@9YXwfqgD+0U-Tq^=M8?0vZO1aOC zL(jW*>jGmV;;x>FQKvT=RFqf7olh3-^Y5kSe>I;s2-qI-z|>)hBP6Hu_d4|Z4sZAg zq;X-;IMYJeYyINM(Aie5S!(2(Ihi)trtO`XlJ5~k;*x1`p^|a8&F-Rvolh$5bL)rv zPEzYhMb2y8nc*U}Y`xR-hIG}QnQFZmY`rTfsV2_!wkZj5Q>G8~xF^x};_jD6>2Xu0 z_sKQu|8i5jjYQ<@(M-1mZd+0c5x1?tTgh#r78w=`k7 z-Vv57{EWKNx^)dJp~*>L$0VRn0>7LD-k$`HmVnQfq)9#KnUs8CJ3(xlTKo*tFVyLi z^zyoCY5iUkjBljjxhW{R5*xtfiwDBZs;(|mVp)V$`u|`j^F7|=I^J|cWu+=vqYLb! y&dGMZ+~g$sCZB1$k<=h%YFsL|zu}k4q*5UjS|Tf)S|#WIK>QojNRmw&Apih{vw@`m literal 2284 zcmV$V4HS_9CYN?h+sc8|zQcXr0 z=BjR)S8pl`vB<^oxBUpC^-qdOk$C_M06qiYrvP39@Gk%b2{}1m*RgF$8HmjOyu1?&qTFYxHQ%(`4XtWDU%xW5~ zQRM>@Et}vYyF_K(P^i%daafYhNI=&dCFTZ`=QVxZHa*3eBJwIx*{NpLw*1j$(V1ls z*|IHrd_7A-H{?}nS_ZLHo!RD#oH=k=UpHH;n7Hl(zUTvP`GCEC;2}Togdcd_4 zd;oYf06Y@_UJL+l1ca6KxmPwK#cmG*2ZBH?2s|AGeh>tH9R%JE0@)C7E(AOg65NDE zH-X=UfIo$Ra2S{i3-B=!9(^TJ*mD)UWd6ECoJgESg_<+RH~+3UeGjgsTQ1GaPahp}GHrWW+tIZHR_8ETQ1 z9*BppYacYw;yH_0bdY(rjv*IWu6=f!Oum=YsPQ0KqlRgt{6jrd+Cj||Rcjiw4cW^> zRy2KmUN_D*Em^PA2R!>3ZQ4vzz(PI7#6mML>i5QBOe?|5>}q7Nqtv<&YE_N}3<_1rbmo<^%=$@4^}1DC8k z&-H9?&Y^NJJH&|K=fIq9)^&5@EFb5@tSswIW=)*Zwf?H2%jX>nx=ge!T<)Sgmu-Lc z*3J`|C<80SNG}w9;Mr7`XkEAHV8ahf65?E!V4s%{k~+0b`#4iXt;*+hU2C6{OPpn> zLF6@Rb&Lr}AtAC+yM`=L%h+gjK)Weel}%iDvZ?GYS}wGx$%}?wS55jLvE2;NypY@1~+APt)XqL5l`3klQ{76IPh8=_@@|T)C12afN}yjo&c%|0iNA<>`~E~ z?^6ljn&@O)g!#Xj0KSs|UKF9XdBXcc0{BY;m>vd4qxX&yR4=!?v=j?SrlI1k*B9g>vp5=d78wyZr~3 zJN*6AHs%*ez9;Eo+O9f~Sc-GwusKY7n!}Pb%OTTER@Ip@%arp5VdhG!hf6^6*+4C| z#e_bW+Hykfa(ep2T-Wb8$`oqsrUIx{d5M}$&DyQ7cpP|CuITVZ?562aTKTEO z5-Fi;8Q`-S;71wY)eI2H0=H!aTFyh8&jJfs;A2_f@htFM7I;;pjd*Cj91zI?_vC;} zIpC8y;6_fMl{^CSYz}xn2l(;=bixB2%L9{n;DiW$j|X}&4=m?_kBZRSJrWTRav)x% z^6J5vMT4%WS3Gjyf`;22v*MKf?gnTl(tf{PaUSFfk z>_4zT>-g>vR+Q76?c++?aeeo{5SODK+b>v8#rj#WSGErvhU3b5q~p24#xMYJ5_!a{SnBa-js5#YBY zaCNOi?ygnx{dolVn*bUXL2r$;?r`0pv;gwQ3P7p=oGb`hn-^s{vQYp&UI4yc0DfNp z_7s7`Mc_k4V52C|_jpwOsUq;zB5+HD7Ca**N&mtfU6bY$%;U)c-q__SAZ8p*xqg1-1nxX zy-pr_USvDB1Dg@w*Eca{_eMjK^h(9P;&*-rN8P{gZ2#UQVf)a5sbd0%6Q|{^4*j8H zn|?BAy^XidG*|XIPdo~p?`X|pOKavt+EABvaAr!pd*g|Vx?ypZ%yQan7bRkUg6N*x z*6W7L9BTCCMbtI7GF+yHsrGu_uqvA~Q=K=1op&WI)Wn(oHf5OKl=;$aSw~5 z^tmb1hs2uof4M2%Mx~D};k%NVJ~xER_9FxBh;zCQ|L^Zd`}O(UXs?<|Q?@ui@{YQF zVpI_4xJScpjsjm3VM!0{g;C%o5ti}5{yqx4CBojdeu3x% zXj+ECEmv-gyYGBNUg=zEMx^lBG2p@&@P#qp^)X=IIM5sizCA8X>fN46iMOF+#5Ad4 zU0~|NO?p4wSl10@&})Lx&3t%n3M!6^P2l3i1F`hFDlbuD7=+aZ|HvisJ<$|;(YT?a zr#e}qr`cuIBD?u4QV{6deA;v)sYa?)yHe?X^PZ@ZT8-4`1X;1DF=79ofqw%_&0|GM GAOHZyTVgx_ diff --git a/packages/orchestration/test/exos/chain-hub.test.ts b/packages/orchestration/test/exos/chain-hub.test.ts index 81b22718c46..95119b96fa8 100644 --- a/packages/orchestration/test/exos/chain-hub.test.ts +++ b/packages/orchestration/test/exos/chain-hub.test.ts @@ -159,3 +159,35 @@ test.serial('toward asset info in agoricNames (#9572)', async t => { }); } }); + +test.serial('getChainInfoByAddress', async t => { + const { chainHub, nameAdmin, vt } = setup(); + // use fetched chain info + await registerKnownChains(nameAdmin); + + // call getChainInfo so ChainHub performs agoricNames lookup that populates its local cache + await vt.asPromise(chainHub.getChainInfo('osmosis')); + + const MOCK_ICA_ADDRESS = + 'osmo1ht7u569vpuryp6utadsydcne9ckeh2v8dkd38v5hptjl3u2ewppqc6kzgd'; + t.like(chainHub.getChainInfoByAddress(MOCK_ICA_ADDRESS), { + chainId: 'osmosis-1', + bech32Prefix: 'osmo', + }); + + t.throws( + () => + chainHub.getChainInfoByAddress(MOCK_ICA_ADDRESS.replace('osmo1', 'foo1')), + { + message: 'Chain info not found for bech32Prefix "foo"', + }, + ); + + t.throws(() => chainHub.getChainInfoByAddress('notbech32'), { + message: 'No separator character for "notbech32"', + }); + + t.throws(() => chainHub.getChainInfoByAddress('1notbech32'), { + message: 'Missing prefix for "1notbech32"', + }); +}); diff --git a/packages/orchestration/test/utils/address.test.ts b/packages/orchestration/test/utils/address.test.ts index 9012edc9da3..ecdf12b688b 100644 --- a/packages/orchestration/test/utils/address.test.ts +++ b/packages/orchestration/test/utils/address.test.ts @@ -4,6 +4,7 @@ import { makeICAChannelAddress, makeICQChannelAddress, findAddressField, + getBech32Prefix, } from '../../src/utils/address.js'; test('makeICAChannelAddress', t => { @@ -107,3 +108,33 @@ test('makeICQChannelAddress', t => { 'makeICQChannelAddress not hardened against malformed version. use `validateRemoteIbcAddress` to detect this, or expect IBC ProtocolImpl to throw', ); }); + +const bech32 = test.macro({ + title: (_, input: string, expected: string | null) => + expected !== null + ? `can extract ${expected} prefix from ${input}` + : `throws error for invalid address ${input}`, + exec: (t, input: string, expected: string | null, error?: string) => { + if (expected !== null) { + t.is(getBech32Prefix(input), expected); + } else { + t.throws(() => getBech32Prefix(input), { message: error }); + } + }, +}); + +test(bech32, 'bc1qw508d6qejxtdg4y5r3zarvary0c5xw7kv8f3t4', 'bc'); +test(bech32, 'cosmos1n4f2eqt2gm5mh6gevf8aw2wrf75q25yru09yvn', 'cosmos'); +test(bech32, '111qw508d6qejxtdg4y5r3zarvary0c5xw7kv8f3t4', '11'); +test( + bech32, + 'qw508d6qejxtdg4y5r3zarvary0c5xw7kv8f3t4', + null, + 'No separator character for "qw508d6qejxtdg4y5r3zarvary0c5xw7kv8f3t4"', +); +test( + bech32, + '1qw508d6qejxtdg4y5r3zarvary0c5xw7kv8f3t4', + null, + 'Missing prefix for "1qw508d6qejxtdg4y5r3zarvary0c5xw7kv8f3t4"', +); From 8ba46990756d94571f2591fc1c85f37baab828b8 Mon Sep 17 00:00:00 2001 From: 0xPatrick Date: Mon, 28 Oct 2024 20:05:04 -0400 Subject: [PATCH 4/4] fix: `convertChainInfo` connection sorting - prevents empty entries from affecting sort order and causing unnecessary git diff churn --- packages/orchestration/src/utils/registry.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/packages/orchestration/src/utils/registry.js b/packages/orchestration/src/utils/registry.js index b065038c352..25789864729 100644 --- a/packages/orchestration/src/utils/registry.js +++ b/packages/orchestration/src/utils/registry.js @@ -118,8 +118,9 @@ export const convertChainInfo = async registry => { const connections = Object.fromEntries( ibcData .map(datum => toConnectionEntry(datum, name, chainInfo)) + .filter(entry => entry.length > 0) // sort alphabetically for consistency - .sort(([a], [b]) => (a && b ? a.localeCompare(b) : 0)), + .sort(([a], [b]) => a.localeCompare(b)), ); chainInfo[name] = { ...chainInfo[name], connections }; }