@@ -196,26 +196,48 @@ func (cc *ChainConfig) GetValInfo(first bool) (err error) {
196196 rewards , commission , err := provider .QueryValidatorSelfDelegationRewardsAndCommission (ctx )
197197 if err == nil {
198198 // query the chain's denom metadata, only query once since this does not change
199- if first && rewards != nil && len (* rewards ) > 0 {
200- bankMeta , err := provider .QueryDenomMetadata (ctx , (* rewards )[0 ].Denom )
199+ if first {
200+ bondDenom := ""
201+ stakingParams , err := provider .QueryStakingParams (ctx )
201202 if err == nil {
202- cc . denomMetadata = bankMeta
203+ bondDenom = stakingParams . BondDenom
203204 } else {
204- l (fmt .Errorf ("cannot query bank metadata for chain %s via ABCI, err: %w, trying cosmos.directory fallback" , cc .name , err ))
205- // Try cosmos.directory fallback first
206- bankMeta = cc .getBankMetadataFromCosmosDirectory ((* rewards )[0 ].Denom )
207- if bankMeta != nil {
205+ l (fmt .Errorf ("cannot query staking params for chain %s via ABCI, err: %w" , cc .name , err ))
206+ }
207+ if bondDenom == "" && cc .hasCosmosDirectoryData () {
208+ if cc .cosmosDirectoryData .Params .Staking .BondDenom != "" {
209+ bondDenom = cc .cosmosDirectoryData .Params .Staking .BondDenom
210+ } else if cc .cosmosDirectoryData .Denom != "" {
211+ bondDenom = cc .cosmosDirectoryData .Denom
212+ }
213+ }
214+ if bondDenom == "" && rewards != nil && len (* rewards ) > 0 {
215+ bondDenom = (* rewards )[0 ].Denom
216+ }
217+
218+ if bondDenom != "" {
219+ bankMeta , err := provider .QueryDenomMetadata (ctx , bondDenom )
220+ if err == nil {
208221 cc .denomMetadata = bankMeta
209- l (fmt .Sprintf ("✅ loaded bank metadata for chain %s from cosmos.directory" , cc .name ))
210222 } else {
211- l (fmt .Sprintf ("ℹ️ cosmos.directory bank metadata not available for chain %s, trying GitHub fallback" , cc .name ))
212- bankMeta , err = cc .fetchBankMetadataFromGitHub ()
213- if err == nil {
223+ l (fmt .Errorf ("cannot query bank metadata for chain %s via ABCI, err: %w, trying cosmos.directory fallback" , cc .name , err ))
224+ // Try cosmos.directory fallback (assets first, then chain data)
225+ bankMeta = cc .getBankMetadataFromCosmosDirectory (bondDenom )
226+ if bankMeta != nil {
214227 cc .denomMetadata = bankMeta
228+ l (fmt .Sprintf ("✅ loaded bank metadata for chain %s from cosmos.directory" , cc .name ))
215229 } else {
216- l (fmt .Errorf ("cannot find bank metadata for chain %s in the GitHub JSON file, err: %w" , cc .name , err ))
230+ l (fmt .Sprintf ("ℹ️ cosmos.directory bank metadata not available for chain %s, trying GitHub fallback" , cc .name ))
231+ bankMeta , err = cc .fetchBankMetadataFromGitHub ()
232+ if err == nil {
233+ cc .denomMetadata = bankMeta
234+ } else {
235+ l (fmt .Errorf ("cannot find bank metadata for chain %s in the GitHub JSON file, err: %w" , cc .name , err ))
236+ }
217237 }
218238 }
239+ } else {
240+ l (fmt .Sprintf ("⚠️ could not determine bond denom for chain %s, skipping denom metadata query" , cc .name ))
219241 }
220242 }
221243
0 commit comments