Skip to content

Commit f3618fe

Browse files
authored
feat: enroll kyvetestnet on EVM testnets (#5806)
### Description feat: enroll kyvetestnet on EVM testnets no kyvetestnet agents have been deployed yet, this will be done afterwards ### Drive-by changes - updated testnet agents on `hyperlane` context to latest image from `main` - fix gas-price getters to support cosmos testnets that aren't in the public registry ### Related issues updated default ISMs here hyperlane-xyz/hyperlane-registry#721 ### Backward compatibility <!-- Are these changes backward compatible? Are there any infrastructure implications, e.g. changes that would prohibit deploying older commits using this infra tooling? Yes/No --> ### Testing <!-- What kind of testing have these changes undergone? None/Manual/Unit Tests --> --------- Signed-off-by: pbio <[email protected]>
1 parent bdf6f0e commit f3618fe

File tree

13 files changed

+147
-23
lines changed

13 files changed

+147
-23
lines changed

.registryrc

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
71334908f1c4b062c901400c67a0feeb10cff2e0
1+
08d185ddd7c54ba6ad24f9231c7a56150e93c2fb

rust/main/config/testnet_config.json

Lines changed: 59 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2882,6 +2882,65 @@
28822882
"testRecipient": "0x86abe4c3493A1eE0Aa42f0231b5594D42aBdA36e",
28832883
"timelockController": "0x0000000000000000000000000000000000000000",
28842884
"validatorAnnounce": "0xF8E6c1222049AAb68E410E43242449994Cb64996"
2885+
},
2886+
"kyvetestnet": {
2887+
"bech32Prefix": "kyve",
2888+
"blockExplorers": [
2889+
{
2890+
"apiUrl": "https://explorer.kyve.network/kaon",
2891+
"family": "other",
2892+
"name": "Ping.Pub",
2893+
"url": "https://explorer.kyve.network/kaon"
2894+
}
2895+
],
2896+
"blocks": {
2897+
"confirmations": 1,
2898+
"estimateBlockTime": 6,
2899+
"reorgPeriod": 1
2900+
},
2901+
"canonicalAsset": "tkyve",
2902+
"chainId": "kaon-1",
2903+
"contractAddressBytes": 32,
2904+
"deployer": {
2905+
"name": "KYVE",
2906+
"url": "https://kyve.network"
2907+
},
2908+
"displayName": "KYVE Testnet",
2909+
"domainId": 1262571342,
2910+
"gasPrice": {
2911+
"denom": "tkyve",
2912+
"amount": "0.03"
2913+
},
2914+
"index": {
2915+
"chunk": 10,
2916+
"from": 11470395
2917+
},
2918+
"isTestnet": true,
2919+
"name": "kyvetestnet",
2920+
"nativeToken": {
2921+
"decimals": 6,
2922+
"denom": "tkyve",
2923+
"name": "KYVE",
2924+
"symbol": "KYVE"
2925+
},
2926+
"protocol": "cosmos",
2927+
"restUrls": [
2928+
{
2929+
"http": "https://api.kaon.kyve.network"
2930+
}
2931+
],
2932+
"rpcUrls": [
2933+
{
2934+
"http": "https://rpc.kaon.kyve.network"
2935+
}
2936+
],
2937+
"slip44": 118,
2938+
"technicalStack": "other",
2939+
"interchainGasPaymaster": "0x726f757465725f706f73745f6469737061746368000000040000000000000000",
2940+
"interchainSecurityModule": "0x726f757465725f69736d00000000000000000000000000040000000000000000",
2941+
"mailbox": "0x68797065726c616e650000000000000000000000000000000000000000000000",
2942+
"merkleTreeHook": "0x726f757465725f706f73745f6469737061746368000000030000000000000001",
2943+
"validatorAnnounce": "0x68797065726c616e650000000000000000000000000000000000000000000000"
28852944
}
28862945
},
28872946
"defaultRpcConsensusType": "fallback"

typescript/infra/config/environments/testnet4/agent.ts

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -62,6 +62,7 @@ export const hyperlaneContextAgentChainConfig: AgentChainConfig<
6262
hyperliquidevmtestnet: true,
6363
infinityvmmonza: true,
6464
inksepolia: true,
65+
kyvetestnet: false,
6566
modetestnet: true,
6667
monadtestnet: true,
6768
odysseytestnet: true,
@@ -105,6 +106,7 @@ export const hyperlaneContextAgentChainConfig: AgentChainConfig<
105106
hyperliquidevmtestnet: false,
106107
infinityvmmonza: true,
107108
inksepolia: true,
109+
kyvetestnet: false,
108110
modetestnet: true,
109111
monadtestnet: true,
110112
odysseytestnet: true,
@@ -148,6 +150,7 @@ export const hyperlaneContextAgentChainConfig: AgentChainConfig<
148150
hyperliquidevmtestnet: false,
149151
infinityvmmonza: true,
150152
inksepolia: true,
153+
kyvetestnet: false,
151154
modetestnet: true,
152155
monadtestnet: true,
153156
odysseytestnet: true,
@@ -254,7 +257,7 @@ const hyperlane: RootAgentConfig = {
254257
rpcConsensusType: RpcConsensusType.Fallback,
255258
docker: {
256259
repo,
257-
tag: '8d76c56-20250328-185250',
260+
tag: '45739bd-20250401-014114',
258261
},
259262
blacklist: [...releaseCandidateHelloworldMatchingList, ...relayBlacklist],
260263
gasPaymentEnforcement,
@@ -272,7 +275,7 @@ const hyperlane: RootAgentConfig = {
272275
rpcConsensusType: RpcConsensusType.Fallback,
273276
docker: {
274277
repo,
275-
tag: '8d76c56-20250328-185250',
278+
tag: '45739bd-20250401-014114',
276279
},
277280
chains: validatorChainConfig(Contexts.Hyperlane),
278281
resources: validatorResources,
@@ -281,7 +284,7 @@ const hyperlane: RootAgentConfig = {
281284
rpcConsensusType: RpcConsensusType.Fallback,
282285
docker: {
283286
repo,
284-
tag: '8d76c56-20250328-185250',
287+
tag: '45739bd-20250401-014114',
285288
},
286289
resources: scraperResources,
287290
},

typescript/infra/config/environments/testnet4/aw-validators/hyperlane.json

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -138,5 +138,8 @@
138138
},
139139
"weavevmtestnet": {
140140
"validators": ["0x6d2ee6688de903bb31f3ae2ea31da87b697f7f40"]
141+
},
142+
"kyvetestnet": {
143+
"validators": ["0x3c470ad2640bc0bcb6a790e8cf85e54d34ca92f5"]
141144
}
142145
}

typescript/infra/config/environments/testnet4/funding.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,7 @@ export const keyFunderConfig: KeyFunderConfig<
4949
hyperliquidevmtestnet: '0.1',
5050
infinityvmmonza: '0',
5151
inksepolia: '0.1',
52+
kyvetestnet: '0',
5253
modetestnet: '0.05',
5354
monadtestnet: '0.1',
5455
odysseytestnet: '0.1',

typescript/infra/config/environments/testnet4/gasPrices.json

Lines changed: 12 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -72,7 +72,7 @@
7272
"decimals": 9
7373
},
7474
"holesky": {
75-
"amount": "0.001003929",
75+
"amount": "0.035590357",
7676
"decimals": 9
7777
},
7878
"hyperliquidevmtestnet": {
@@ -87,6 +87,10 @@
8787
"amount": "0.001000252",
8888
"decimals": 9
8989
},
90+
"kyvetestnet": {
91+
"amount": "0.03",
92+
"decimals": 1
93+
},
9094
"modetestnet": {
9195
"amount": "0.001000252",
9296
"decimals": 9
@@ -96,27 +100,27 @@
96100
"decimals": 9
97101
},
98102
"odysseytestnet": {
99-
"amount": "57.569127248",
103+
"amount": "1.000000252",
100104
"decimals": 9
101105
},
102106
"optimismsepolia": {
103-
"amount": "0.001000299",
107+
"amount": "0.001000336",
104108
"decimals": 9
105109
},
106110
"plumetestnet2": {
107111
"amount": "0.01",
108112
"decimals": 9
109113
},
110114
"polygonamoy": {
111-
"amount": "100.0",
115+
"amount": "66.61600003",
112116
"decimals": 9
113117
},
114118
"scrollsepolia": {
115-
"amount": "0.039203481",
119+
"amount": "0.040772405",
116120
"decimals": 9
117121
},
118122
"sepolia": {
119-
"amount": "0.02007895",
123+
"amount": "9.024562066",
120124
"decimals": 9
121125
},
122126
"solanatestnet": {
@@ -156,11 +160,11 @@
156160
"decimals": 9
157161
},
158162
"unichaintestnet": {
159-
"amount": "0.001000252",
163+
"amount": "0.001000254",
160164
"decimals": 9
161165
},
162166
"weavevmtestnet": {
163-
"amount": "1.2",
167+
"amount": "1.000000007",
164168
"decimals": 9
165169
}
166170
}

typescript/infra/config/environments/testnet4/owners.ts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,9 @@ export const owners: ChainMap<OwnableConfig> = {
2222
sonicsvmtestnet: {
2323
owner: 'n/a - SVM not supported here',
2424
},
25+
kyvetestnet: {
26+
owner: 'n/a - CSDK not supported here',
27+
},
2528
};
2629

2730
export const ethereumChainOwners: ChainMap<OwnableConfig> = Object.fromEntries(

typescript/infra/config/environments/testnet4/supportedChainNames.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@ export const testnet4SupportedChainNames = [
2222
'hyperliquidevmtestnet',
2323
'infinityvmmonza',
2424
'inksepolia',
25+
'kyvetestnet',
2526
'modetestnet',
2627
'monadtestnet',
2728
'odysseytestnet',

typescript/infra/config/environments/testnet4/tokenPrices.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@
2121
"hyperliquidevmtestnet": "10",
2222
"infinityvmmonza": "10",
2323
"inksepolia": "10",
24+
"kyvetestnet": "10",
2425
"modetestnet": "10",
2526
"monadtestnet": "10",
2627
"odysseytestnet": "10",

typescript/infra/config/environments/testnet4/validators.ts

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -522,5 +522,16 @@ export const validatorChainConfig = (
522522
'plumetestnet2',
523523
),
524524
},
525+
526+
kyvetestnet: {
527+
interval: 5,
528+
reorgPeriod: getReorgPeriod('kyvetestnet'),
529+
validators: validatorsConfig(
530+
{
531+
[Contexts.Hyperlane]: ['0x3c470ad2640bc0bcb6a790e8cf85e54d34ca92f5'],
532+
},
533+
'kyvetestnet',
534+
),
535+
},
525536
};
526537
};

typescript/infra/scripts/agents/update-agent-config.ts

Lines changed: 19 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,8 @@ import {
2525
} from '@hyperlane-xyz/utils';
2626

2727
import { Contexts } from '../../config/contexts.js';
28+
import mainnet3GasPrices from '../../config/environments/mainnet3/gasPrices.json' assert { type: 'json' };
29+
import testnet4GasPrices from '../../config/environments/testnet4/gasPrices.json' assert { type: 'json' };
2830
import { getCombinedChainsToScrape } from '../../src/config/agent/scraper.js';
2931
import {
3032
DeployEnvironment,
@@ -67,12 +69,23 @@ export async function writeAgentConfig(
6769
await Promise.all(
6870
environmentChains
6971
.filter((chain) => chainIsProtocol(chain, ProtocolType.Cosmos))
70-
.map(async (chain) => [
71-
chain,
72-
{
73-
gasPrice: await getCosmosChainGasPrice(chain, multiProvider),
74-
},
75-
]),
72+
.map(async (chain) => {
73+
try {
74+
const gasPrice = await getCosmosChainGasPrice(chain, multiProvider);
75+
return [chain, { gasPrice }];
76+
} catch (error) {
77+
rootLogger.error(`Error getting gas price for ${chain}:`, error);
78+
const { denom } = await multiProvider.getNativeToken(chain);
79+
assert(denom, `No nativeToken.denom found for chain ${chain}`);
80+
const amount =
81+
environment === 'mainnet3'
82+
? mainnet3GasPrices[chain as keyof typeof mainnet3GasPrices]
83+
.amount
84+
: testnet4GasPrices[chain as keyof typeof testnet4GasPrices]
85+
.amount;
86+
return [chain, { gasPrice: { denom, amount } }];
87+
}
88+
}),
7689
),
7790
);
7891

typescript/infra/scripts/print-gas-prices.ts

Lines changed: 20 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -84,11 +84,26 @@ async function getGasPrice(
8484
};
8585
}
8686
case ProtocolType.Cosmos: {
87-
const { amount } = await getCosmosChainGasPrice(chain, mpp);
88-
return {
89-
amount,
90-
decimals: 1,
91-
};
87+
try {
88+
const { amount } = await getCosmosChainGasPrice(chain, mpp);
89+
return {
90+
amount,
91+
decimals: 1,
92+
};
93+
} catch (error) {
94+
console.error(
95+
`Error getting gas price for cosmos chain ${chain}:`,
96+
error,
97+
);
98+
if (currentGasPrice) {
99+
return currentGasPrice;
100+
} else {
101+
return {
102+
amount: 'PLEASE SET A GAS PRICE FOR COSMOS CHAIN',
103+
decimals: 1,
104+
};
105+
}
106+
}
92107
}
93108
case ProtocolType.Sealevel:
94109
// Return the gas price from the config if it exists, otherwise return some default

typescript/sdk/src/consts/multisigIsm.ts

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1203,6 +1203,16 @@ export const defaultMultisigConfigs: ChainMap<MultisigConfig> = {
12031203
],
12041204
},
12051205

1206+
kyvetestnet: {
1207+
threshold: 1,
1208+
validators: [
1209+
{
1210+
address: '0x3c470ad2640bc0bcb6a790e8cf85e54d34ca92f5',
1211+
alias: AW_VALIDATOR_ALIAS,
1212+
},
1213+
],
1214+
},
1215+
12061216
linea: {
12071217
threshold: 4,
12081218
validators: [

0 commit comments

Comments
 (0)