From f5f5817015edddeea51631ba3eb0ae1ba90c1cad Mon Sep 17 00:00:00 2001 From: bruce-riley <96066700+bruce-riley@users.noreply.github.com> Date: Wed, 7 Jun 2023 15:50:14 -0500 Subject: [PATCH] Node: Fix Injective watcher decode failures (#3057) * Node: Fix Injective watcher decode failures Change-Id: Ie85267d07c54a4b5f76bb09483596f4d2d5f07a9 * Address review comment Change-Id: I3295870914c86f00b5ef2a46ddd2c88e4a4ef1e5 --- node/pkg/watchers/cosmwasm/watcher.go | 27 ++++++++++++++++++--------- 1 file changed, 18 insertions(+), 9 deletions(-) diff --git a/node/pkg/watchers/cosmwasm/watcher.go b/node/pkg/watchers/cosmwasm/watcher.go index bad878e02..bb00e6a6d 100644 --- a/node/pkg/watchers/cosmwasm/watcher.go +++ b/node/pkg/watchers/cosmwasm/watcher.go @@ -334,6 +334,8 @@ func (e *Watcher) Run(ctx context.Context) error { } func EventsToMessagePublications(contract string, txHash string, events []gjson.Result, logger *zap.Logger, chainID vaa.ChainID, contractAddressKey string) []*common.MessagePublication { + // Injective does not base64 encode parameters (as of release v1.11.2). + b64Encoded := chainID != vaa.ChainIDInjective networkName := chainID.String() msgs := make([]*common.MessagePublication, 0, len(events)) for _, event := range events { @@ -373,15 +375,22 @@ func EventsToMessagePublications(contract string, txHash string, events []gjson. continue } - key, err := base64.StdEncoding.DecodeString(keyBase.String()) - if err != nil { - logger.Warn("event key attribute is invalid", zap.String("network", networkName), zap.String("tx_hash", txHash), zap.String("key", keyBase.String())) - continue - } - value, err := base64.StdEncoding.DecodeString(valueBase.String()) - if err != nil { - logger.Warn("event value attribute is invalid", zap.String("network", networkName), zap.String("tx_hash", txHash), zap.String("key", keyBase.String()), zap.String("value", valueBase.String())) - continue + var key, value []byte + if b64Encoded { + var err error + key, err = base64.StdEncoding.DecodeString(keyBase.String()) + if err != nil { + logger.Warn("event key attribute is invalid", zap.String("network", networkName), zap.String("tx_hash", txHash), zap.String("key", keyBase.String())) + continue + } + value, err = base64.StdEncoding.DecodeString(valueBase.String()) + if err != nil { + logger.Warn("event value attribute is invalid", zap.String("network", networkName), zap.String("tx_hash", txHash), zap.String("key", keyBase.String()), zap.String("value", valueBase.String())) + continue + } + } else { + key = []byte(keyBase.String()) + value = []byte(valueBase.String()) } if _, ok := mappedAttributes[string(key)]; ok {