Skip to content

Commit

Permalink
fix: refine logging and config (#93)
Browse files Browse the repository at this point in the history
* should also alarm if get reward fail

* refine logging, config

* bump gnfd dependency
  • Loading branch information
alexgao001 authored Oct 7, 2023
1 parent 8b6763f commit 2b6d59d
Show file tree
Hide file tree
Showing 19 changed files with 106 additions and 139 deletions.
3 changes: 0 additions & 3 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -77,9 +77,6 @@ Go version above 1.20
"greenfield_to_bsc_inturn_relayer_timeout": 30,
"greenfield_sequence_update_latency": 8,
"bsc_sequence_update_latency": 12,
"greenfield_event_type_cross_chain": "cosmos.crosschain.v1.EventCrossChain",
"bsc_cross_chain_package_event_name": "CrossChainPackage",
"cross_chain_package_event_hex": "0x64998dc5a229e7324e622192f111c691edccc3534bbea4b2bd90fbaec936845a",
"cross_chain_contract_addr": "0xd2253A26e6d5b729dDBf4bCce5A78F93C725b455",
"greenfield_light_client_contract_addr": "0x349a42f907c7562B3aaD4431780E4596bC2a053f"
}
Expand Down
38 changes: 17 additions & 21 deletions assembler/bsc_assembler.go
Original file line number Diff line number Diff line change
Expand Up @@ -53,22 +53,21 @@ func (a *BSCAssembler) assemblePackagesAndClaimForOracleChannel(channelId types.
ticker := time.NewTicker(common.AssembleInterval)
for range ticker.C {
if err := a.process(channelId); err != nil {
logging.Logger.Errorf("encounter error when relaying packages, err=%s ", err.Error())
logging.Logger.Errorf("encounter error, err=%s ", err.Error())
}
}
}

func (a *BSCAssembler) process(channelId types.ChannelId) error {
inturnRelayer, err := a.greenfieldExecutor.GetInturnRelayer()
if err != nil {
return err
return fmt.Errorf("failed to get inturn relayer, err=%s", err.Error())
}
inturnRelayerPubkey, err := hex.DecodeString(inturnRelayer.BlsPubKey)
if err != nil {
return err
return fmt.Errorf("failed to decode inturn relayer bls pub key, err=%s", err.Error())
}
isInturnRelyer := bytes.Equal(a.blsPubKey, inturnRelayerPubkey)

a.metricService.SetGnfdInturnRelayerMetrics(isInturnRelyer, inturnRelayer.RelayInterval.Start, inturnRelayer.RelayInterval.End)

var (
Expand All @@ -90,11 +89,11 @@ func (a *BSCAssembler) process(channelId types.ChannelId) error {
}
inTurnRelayerStartSeq, err := a.bscExecutor.GetNextDeliveryOracleSequenceWithRetry(a.getChainId())
if err != nil {
return err
return fmt.Errorf("faield to get next delivery oracle sequence, err=%s", err.Error())
}
nonce, err := a.greenfieldExecutor.GetNonce()
if err != nil {
return err
return fmt.Errorf("faield to get nonce, err=%s", err.Error())
}
a.relayerNonce = nonce
a.inturnRelayerSequenceStatus.HasRetrieved = true
Expand All @@ -107,11 +106,11 @@ func (a *BSCAssembler) process(channelId types.ChannelId) error {
time.Sleep(time.Duration(a.config.RelayConfig.GreenfieldSequenceUpdateLatency) * time.Second)
startSeq, err = a.bscExecutor.GetNextDeliveryOracleSequenceWithRetry(a.getChainId())
if err != nil {
return err
return fmt.Errorf("faield to get next delivery oracle sequence, err=%s", err.Error())
}
startNonce, err := a.greenfieldExecutor.GetNonce()
if err != nil {
return err
return fmt.Errorf("faield to get nonce, err=%s", err.Error())
}
a.relayerNonce = startNonce
}
Expand All @@ -122,15 +121,15 @@ func (a *BSCAssembler) process(channelId types.ChannelId) error {
if isInturnRelyer {
endSequence, err = a.daoManager.BSCDao.GetLatestOracleSequenceByStatus(db.AllVoted)
if err != nil {
return err
return fmt.Errorf("faield to get latest oracle sequence from DB, err=%s", err.Error())
}
if endSequence == -1 {
return nil
}
} else {
endSeq, err := a.bscExecutor.GetNextSendSequenceForChannelWithRetry()
if err != nil {
return err
return fmt.Errorf("faield to get next send sequence, err=%s", err.Error())
}
endSequence = int64(endSeq)
}
Expand All @@ -153,7 +152,7 @@ func (a *BSCAssembler) process(channelId types.ChannelId) error {
for i := startSeq; i <= uint64(endSequence); i++ {
pkgs, err := a.daoManager.BSCDao.GetPackagesByOracleSequence(i)
if err != nil {
return err
return fmt.Errorf("faield to get packages by oracle sequence %d from DB, err=%s", i, err.Error())
}
if len(pkgs) == 0 {
return nil
Expand All @@ -166,7 +165,7 @@ func (a *BSCAssembler) process(channelId types.ChannelId) error {
}

if status != db.AllVoted && status != db.Delivered {
return fmt.Errorf("packages with oracle sequence %d does not get enough votes yet", i)
return fmt.Errorf("packages with oracle sequence %d do not get enough votes yet", i)
}

// non-inturn relayer can not relay tx within the timeout of in-turn relayer
Expand Down Expand Up @@ -204,22 +203,21 @@ func (a *BSCAssembler) processPkgs(client *executor.GreenfieldClient, pkgs []*mo
// Get votes result for a packages, which are already validated and qualified to aggregate sig
votes, err := a.daoManager.VoteDao.GetVotesByChannelIdAndSequence(channelId, sequence)
if err != nil {
logging.Logger.Errorf("failed to get votes result for packages for channel %d and sequence %d", channelId, sequence)
return err
return fmt.Errorf("failed to get votes result for packages for channel %d and sequence %d", channelId, sequence)
}
validators, err := a.greenfieldExecutor.QueryCachedLatestValidators()
if err != nil {
return err
return fmt.Errorf("failed to query cached validators, err=%s", err.Error())
}

aggregatedSignature, valBitSet, err := vote.AggregateSignatureAndValidatorBitSet(votes, validators)
if err != nil {
return err
return fmt.Errorf("failed to aggregate signature, err=%s", err.Error())
}

txHash, err := a.greenfieldExecutor.ClaimPackages(client, votes[0].ClaimPayload, aggregatedSignature, valBitSet.Bytes(), pkgs[0].TxTime, sequence, nonce)
if err != nil {
return err
return fmt.Errorf("failed to claim packages, txHash=%s, err=%s", txHash, err.Error())
}

logging.Logger.Infof("claimed transaction with oracle_sequence=%d, txHash=%s", sequence, txHash)
Expand All @@ -231,14 +229,12 @@ func (a *BSCAssembler) processPkgs(client *executor.GreenfieldClient, pkgs []*mo

if !isInturnRelyer {
if err = a.daoManager.BSCDao.UpdateBatchPackagesClaimedTxHash(pkgIds, txHash); err != nil {
return err
return fmt.Errorf("failed to update batch packages and claimedTxHash, err=%s", err.Error())
}
return nil
}

if err = a.daoManager.BSCDao.UpdateBatchPackagesStatusAndClaimedTxHash(pkgIds, db.Delivered, txHash); err != nil {
logging.Logger.Errorf("failed to update packages to 'Delivered', error=%s", err.Error())
return err
return fmt.Errorf("failed to update packages to 'Delivered', error=%s", err.Error())
}
a.inturnRelayerSequenceStatus.NextDeliverySeq = sequence + 1
return nil
Expand Down
27 changes: 13 additions & 14 deletions assembler/greenfield_assembler.go
Original file line number Diff line number Diff line change
Expand Up @@ -100,7 +100,7 @@ func (a *GreenfieldAssembler) assembleTransactionAndSendForChannel(channelId typ
defer wg.Done()
err := a.process(channelId, inturnRelayer, isInturnRelyer)
if err != nil {
logging.Logger.Errorf("encounter err in assembleTransactionAndSendForChannel, err=%s", err.Error())
logging.Logger.Errorf("encounter error, err=%s", err.Error())
}
}

Expand All @@ -122,7 +122,7 @@ func (a *GreenfieldAssembler) process(channelId types.ChannelId, inturnRelayer *
}
inTurnRelayerStartSeq, err := a.greenfieldExecutor.GetNextDeliverySequenceForChannelWithRetry(channelId)
if err != nil {
return err
return fmt.Errorf("faield to get next delivery sequence for channel %d, err=%s", channelId, err.Error())
}
a.mutex.Lock()
a.inturnRelayerSequenceStatusMap[channelId].HasRetrieved = true
Expand All @@ -138,7 +138,7 @@ func (a *GreenfieldAssembler) process(channelId types.ChannelId, inturnRelayer *
var err error
startSeq, err = a.greenfieldExecutor.GetNextDeliverySequenceForChannelWithRetry(channelId)
if err != nil {
return err
return fmt.Errorf("faield to get next delivery sequence for channel %d, err=%s", channelId, err.Error())
}
}

Expand All @@ -150,15 +150,15 @@ func (a *GreenfieldAssembler) process(channelId types.ChannelId, inturnRelayer *
if isInturnRelyer {
endSequence, err = a.daoManager.GreenfieldDao.GetLatestSequenceByChannelIdAndStatus(channelId, db.AllVoted)
if err != nil {
return err
return fmt.Errorf("faield to get latest sequence from DB, err=%s", err.Error())
}
if endSequence == -1 {
return nil
}
} else {
endSeq, err := a.greenfieldExecutor.GetNextSendSequenceForChannelWithRetry(a.getDestChainId(), channelId)
if err != nil {
return err
return fmt.Errorf("faield to get next send sequence, err=%s", err.Error())
}
endSequence = int64(endSeq)
}
Expand Down Expand Up @@ -187,7 +187,7 @@ func (a *GreenfieldAssembler) process(channelId types.ChannelId, inturnRelayer *
for i := startSeq; i <= uint64(endSequence); i++ {
tx, err := a.daoManager.GreenfieldDao.GetTransactionByChannelIdAndSequence(channelId, i)
if err != nil {
return err
return fmt.Errorf("faield to get transaction by cahnnel id %d and sequence %d from DB, err=%s", channelId, i, err.Error())
}
if (*tx == model.GreenfieldRelayTransaction{}) {
return nil
Expand Down Expand Up @@ -225,25 +225,24 @@ func (a *GreenfieldAssembler) processTx(tx *model.GreenfieldRelayTransaction, no
// Get votes result for a tx, which are already validated and qualified to aggregate sig
votes, err := a.daoManager.VoteDao.GetVotesByChannelIdAndSequence(tx.ChannelId, tx.Sequence)
if err != nil {
logging.Logger.Errorf("failed to get votes for event with channel id %d and sequence %d", tx.ChannelId, tx.Sequence)
return err
return fmt.Errorf("failed to get votes for event with channel id %d and sequence %d", tx.ChannelId, tx.Sequence)
}

validators, err := a.bscExecutor.QueryCachedLatestValidators()
if err != nil {
return err
return fmt.Errorf("failed to query cached validators, err=%s", err.Error())
}
aggregatedSignature, valBitSet, err := vote.AggregateSignatureAndValidatorBitSet(votes, validators)
if err != nil {
return err
return fmt.Errorf("failed to aggregate signature, err=%s", err.Error())
}

txHash, err := a.bscExecutor.CallBuildInSystemContract(aggregatedSignature, util.BitSetToBigInt(valBitSet), votes[0].ClaimPayload, nonce)
if err != nil {
return err
return fmt.Errorf("failed to submit tx to BSC, txHash=%s, err=%s", txHash, err.Error())
}

logging.Logger.Infof("relayed transaction with channel id %d and sequence %d, get txHash %s", tx.ChannelId, tx.Sequence, txHash)
logging.Logger.Infof("relayed transaction with channel id %d and sequence %d, txHash=%s", tx.ChannelId, tx.Sequence, txHash)
a.metricService.SetGnfdProcessedBlockHeight(tx.Height)

// update next delivery sequence in DB for inturn relayer, for non-inturn relayer, there is enough time for
Expand All @@ -252,11 +251,11 @@ func (a *GreenfieldAssembler) processTx(tx *model.GreenfieldRelayTransaction, no
if err = a.daoManager.GreenfieldDao.UpdateTransactionClaimedTxHash(tx.Id, txHash.String()); err != nil {
return err
}
return nil
return fmt.Errorf("failed to update transaciton status, err=%s", err.Error())
}

if err = a.daoManager.GreenfieldDao.UpdateTransactionStatusAndClaimedTxHash(tx.Id, db.Delivered, txHash.String()); err != nil {
return err
return fmt.Errorf("failed to update transaciton status, err=%s", err.Error())
}
a.mutex.Lock()
a.inturnRelayerSequenceStatusMap[types.ChannelId(tx.ChannelId)].NextDeliverySeq = tx.Sequence + 1
Expand Down
3 changes: 0 additions & 3 deletions config/config.go
Original file line number Diff line number Diff line change
Expand Up @@ -115,9 +115,6 @@ type RelayConfig struct {
GreenfieldToBSCInturnRelayerTimeout int64 `json:"greenfield_to_bsc_inturn_relayer_timeout"` // in second
GreenfieldSequenceUpdateLatency int64 `json:"greenfield_sequence_update_latency"` // in second
BSCSequenceUpdateLatency int64 `json:"bsc_sequence_update_latency"` // in second
GreenfieldEventTypeCrossChain string `json:"greenfield_event_type_cross_chain"`
BSCCrossChainPackageEventName string `json:"bsc_cross_chain_package_event_name"`
CrossChainPackageEventHex string `json:"cross_chain_package_event_hex"`
CrossChainContractAddr string `json:"cross_chain_contract_addr"`
GreenfieldLightClientContractAddr string `json:"greenfield_light_client_contract_addr"`
RelayerHubContractAddr string `json:"relayer_hub_contract_addr"`
Expand Down
3 changes: 0 additions & 3 deletions config/config.json
Original file line number Diff line number Diff line change
Expand Up @@ -36,9 +36,6 @@
"greenfield_to_bsc_inturn_relayer_timeout": 30,
"greenfield_sequence_update_latency": 8,
"bsc_sequence_update_latency": 12,
"greenfield_event_type_cross_chain": "cosmos.crosschain.v1.EventCrossChain",
"bsc_cross_chain_package_event_name": "CrossChainPackage",
"cross_chain_package_event_hex": "0x64998dc5a229e7324e622192f111c691edccc3534bbea4b2bd90fbaec936845a",
"cross_chain_contract_addr": "0x3a282380958194D1131bC49056abb712Ab98b82B",
"greenfield_light_client_contract_addr": "0x60B1E6259944Ea8CEEfFAe2d50Df33EE3CCc593A"
},
Expand Down
4 changes: 1 addition & 3 deletions config/local/config_local_0.json
Original file line number Diff line number Diff line change
Expand Up @@ -35,9 +35,7 @@
"greenfield_to_bsc_inturn_relayer_timeout": 30,
"greenfield_sequence_update_latency": 8,
"bsc_sequence_update_latency": 12,
"greenfield_event_type_cross_chain": "cosmos.crosschain.v1.EventCrossChain",
"bsc_cross_chain_package_event_name": "CrossChainPackage",
"cross_chain_package_event_hex": "0x64998dc5a229e7324e622192f111c691edccc3534bbea4b2bd90fbaec936845a",

"cross_chain_contract_addr": "0x1F82F1f3d7a10538920CA1856481f1b5aB782158",
"greenfield_light_client_contract_addr": "0x37aac91D8029DAA9a06AA24178CEd28Fcf378fBf"
},
Expand Down
4 changes: 1 addition & 3 deletions config/local/config_local_1.json
Original file line number Diff line number Diff line change
Expand Up @@ -35,9 +35,7 @@
"greenfield_to_bsc_inturn_relayer_timeout": 30,
"greenfield_sequence_update_latency": 8,
"bsc_sequence_update_latency": 12,
"greenfield_event_type_cross_chain": "cosmos.crosschain.v1.EventCrossChain",
"bsc_cross_chain_package_event_name": "CrossChainPackage",
"cross_chain_package_event_hex": "0x64998dc5a229e7324e622192f111c691edccc3534bbea4b2bd90fbaec936845a",

"cross_chain_contract_addr": "0x1F82F1f3d7a10538920CA1856481f1b5aB782158",
"greenfield_light_client_contract_addr": "0x37aac91D8029DAA9a06AA24178CEd28Fcf378fBf"
},
Expand Down
4 changes: 1 addition & 3 deletions config/local/config_local_2.json
Original file line number Diff line number Diff line change
Expand Up @@ -35,9 +35,7 @@
"greenfield_to_bsc_inturn_relayer_timeout": 30,
"greenfield_sequence_update_latency": 8,
"bsc_sequence_update_latency": 12,
"greenfield_event_type_cross_chain": "cosmos.crosschain.v1.EventCrossChain",
"bsc_cross_chain_package_event_name": "CrossChainPackage",
"cross_chain_package_event_hex": "0x64998dc5a229e7324e622192f111c691edccc3534bbea4b2bd90fbaec936845a",

"cross_chain_contract_addr": "0x1F82F1f3d7a10538920CA1856481f1b5aB782158",
"greenfield_light_client_contract_addr": "0x37aac91D8029DAA9a06AA24178CEd28Fcf378fBf"
},
Expand Down
1 change: 1 addition & 0 deletions executor/bsc_executor.go
Original file line number Diff line number Diff line change
Expand Up @@ -579,6 +579,7 @@ func (e *BSCExecutor) ClaimRewardLoop() {
}
rewardBalance, err := e.getRewardBalance()
if err != nil {
e.metricService.SetBSCLowBalance(true)
logging.Logger.Errorf("failed to get relayer reward balance err=%s", err.Error())
continue
}
Expand Down
3 changes: 2 additions & 1 deletion executor/client.go
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ package executor
import (
"context"
"sync"
"time"

sdkclient "github.com/bnb-chain/greenfield-go-sdk/client"
"github.com/bnb-chain/greenfield-go-sdk/types"
Expand Down Expand Up @@ -67,7 +68,7 @@ func (gc *GnfdCompositeClients) GetClient() *GreenfieldClient {

func getClientBlockHeight(clientChan chan *GreenfieldClient, wg *sync.WaitGroup, client *GreenfieldClient) {
defer wg.Done()
ctxWithTimeout, cancel := context.WithTimeout(context.Background(), RPCTimeout)
ctxWithTimeout, cancel := context.WithTimeout(context.Background(), time.Second)
defer cancel()
status, err := client.GetStatus(ctxWithTimeout)
if err != nil {
Expand Down
10 changes: 5 additions & 5 deletions go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -3,11 +3,10 @@ module github.com/bnb-chain/greenfield-relayer
go 1.20

require (
cosmossdk.io/errors v1.0.0-beta.7
github.com/avast/retry-go/v4 v4.3.1
github.com/aws/aws-sdk-go v1.40.45
github.com/bnb-chain/greenfield v0.2.6
github.com/bnb-chain/greenfield-go-sdk v0.2.6
github.com/bnb-chain/greenfield v1.0.0
github.com/bnb-chain/greenfield-go-sdk v1.0.0
github.com/cometbft/cometbft v0.37.2
github.com/cosmos/cosmos-sdk v0.47.3
github.com/ethereum/go-ethereum v1.11.3
Expand All @@ -29,6 +28,7 @@ require (
cosmossdk.io/api v0.4.0 // indirect
cosmossdk.io/core v0.6.1 // indirect
cosmossdk.io/depinject v1.0.0-alpha.3 // indirect
cosmossdk.io/errors v1.0.0-beta.7 // indirect
cosmossdk.io/math v1.0.1 // indirect
filippo.io/edwards25519 v1.0.0 // indirect
github.com/99designs/go-keychain v0.0.0-20191008050251-8e49817e8af4 // indirect
Expand Down Expand Up @@ -174,11 +174,11 @@ require (
replace (
cosmossdk.io/api => github.com/bnb-chain/greenfield-cosmos-sdk/api v0.0.0-20230816082903-b48770f5e210
cosmossdk.io/math => github.com/bnb-chain/greenfield-cosmos-sdk/math v0.0.0-20230816082903-b48770f5e210
github.com/cometbft/cometbft => github.com/bnb-chain/greenfield-cometbft v0.0.3
github.com/cometbft/cometbft => github.com/bnb-chain/greenfield-cometbft v1.0.0
github.com/cometbft/cometbft-db => github.com/bnb-chain/greenfield-cometbft-db v0.8.1-alpha.1
github.com/confio/ics23/go => github.com/cosmos/cosmos-sdk/ics23/go v0.8.0
github.com/consensys/gnark-crypto => github.com/consensys/gnark-crypto v0.7.0
github.com/cosmos/cosmos-sdk => github.com/bnb-chain/greenfield-cosmos-sdk v0.2.6
github.com/cosmos/cosmos-sdk => github.com/bnb-chain/greenfield-cosmos-sdk v1.0.0
github.com/cosmos/iavl => github.com/bnb-chain/greenfield-iavl v0.20.1
github.com/syndtr/goleveldb => github.com/syndtr/goleveldb v1.0.1-0.20210819022825-2ae1ddf74ef7
)
16 changes: 8 additions & 8 deletions go.sum
Original file line number Diff line number Diff line change
Expand Up @@ -158,22 +158,22 @@ github.com/bgentry/speakeasy v0.1.0/go.mod h1:+zsyZBPWlz7T6j88CTgSN5bM796AkVf0kB
github.com/bgentry/speakeasy v0.1.1-0.20220910012023-760eaf8b6816 h1:41iFGWnSlI2gVpmOtVTJZNodLdLQLn/KsJqFvXwnd/s=
github.com/bgentry/speakeasy v0.1.1-0.20220910012023-760eaf8b6816/go.mod h1:+zsyZBPWlz7T6j88CTgSN5bM796AkVf0kBD4zp0CCIs=
github.com/bmizerany/pat v0.0.0-20170815010413-6226ea591a40/go.mod h1:8rLXio+WjiTceGBHIoTvn60HIbs7Hm7bcHjyrSqYB9c=
github.com/bnb-chain/greenfield v0.2.6 h1:U40wmSBQR4Wd0HiVCu/J6zqoLS4YUrvNgyuX71kgK3U=
github.com/bnb-chain/greenfield v0.2.6/go.mod h1:8kGVzKu3BEbpotk2Lmp/OzPh+nhbMsuUJueZtn0he4s=
github.com/bnb-chain/greenfield-cometbft v0.0.3 h1:tv8NMy3bzX/1urqXGQIIAZSLy83loiI+dG0VKeyh1CY=
github.com/bnb-chain/greenfield-cometbft v0.0.3/go.mod h1:f35mk/r5ab6yvzlqEWZt68LfUje68sYgMpVlt2CUYMk=
github.com/bnb-chain/greenfield v1.0.0 h1:eg8jFKfbM8ZBKYJ40MZvZtJMtbIcM17tnd7OvAoMC7g=
github.com/bnb-chain/greenfield v1.0.0/go.mod h1:HAUcv20wBECrbyvVvtoAgvpeedr6plgz3m75FJ7Xxdg=
github.com/bnb-chain/greenfield-cometbft v1.0.0 h1:0r6hOJWD/+es0gxP/exKuN/krgXAr3LCn5/XlcgDWr8=
github.com/bnb-chain/greenfield-cometbft v1.0.0/go.mod h1:f35mk/r5ab6yvzlqEWZt68LfUje68sYgMpVlt2CUYMk=
github.com/bnb-chain/greenfield-cometbft-db v0.8.1-alpha.1 h1:XcWulGacHVRiSCx90Q8Y//ajOrLNBQWR/KDB89dy3cU=
github.com/bnb-chain/greenfield-cometbft-db v0.8.1-alpha.1/go.mod h1:ey1CiK4bYo1RBNJLRiVbYr5CMdSxci9S/AZRINLtppI=
github.com/bnb-chain/greenfield-common/go v0.0.0-20230830120314-a54ffd6da39f h1:zJvB2wCd80DQ9Nh/ZNQiP8MrHygSpDoav7OzHyIi/pM=
github.com/bnb-chain/greenfield-common/go v0.0.0-20230830120314-a54ffd6da39f/go.mod h1:it3JJVHeG9Wp4QED2GkY/7V9Qo3BuPdoC5/4/U6ecJM=
github.com/bnb-chain/greenfield-cosmos-sdk v0.2.6 h1:aPrd2nG2nYZr8nSmGgN8efus6sni4OIZ1Bdx6s+mS3A=
github.com/bnb-chain/greenfield-cosmos-sdk v0.2.6/go.mod h1:y3hDhQhil5hMIhwBTpu07RZBF30ZITkoE+GHhVZChtY=
github.com/bnb-chain/greenfield-cosmos-sdk v1.0.0 h1:hWRvYunA4Um19gwL1SVfMwN9l431ROC7XZ+A5+xM/Bk=
github.com/bnb-chain/greenfield-cosmos-sdk v1.0.0/go.mod h1:y3hDhQhil5hMIhwBTpu07RZBF30ZITkoE+GHhVZChtY=
github.com/bnb-chain/greenfield-cosmos-sdk/api v0.0.0-20230816082903-b48770f5e210 h1:GHPbV2bC+gmuO6/sG0Tm8oGal3KKSRlyE+zPscDjlA8=
github.com/bnb-chain/greenfield-cosmos-sdk/api v0.0.0-20230816082903-b48770f5e210/go.mod h1:vhsZxXE9tYJeYB5JR4hPhd6Pc/uPf7j1T8IJ7p9FdeM=
github.com/bnb-chain/greenfield-cosmos-sdk/math v0.0.0-20230816082903-b48770f5e210 h1:FLVOn4+OVbsKi2+YJX5kmD27/4dRu4FW7xCXFhzDO5s=
github.com/bnb-chain/greenfield-cosmos-sdk/math v0.0.0-20230816082903-b48770f5e210/go.mod h1:An0MllWJY6PxibUpnwGk8jOm+a/qIxlKmL5Zyp9NnaM=
github.com/bnb-chain/greenfield-go-sdk v0.2.6 h1:CGmMK+Ie3ZXae86rGYJnaF7FmO+y92S4a/Qp7DzxhLU=
github.com/bnb-chain/greenfield-go-sdk v0.2.6/go.mod h1:MrxZcdoK/YC8o0wECOv8fskozBokekxApLbi1P6qeTI=
github.com/bnb-chain/greenfield-go-sdk v1.0.0 h1:VjR3PQkn0DdMxHsGQQTTn2ATQiQWcHCtbi7LJHDRTYs=
github.com/bnb-chain/greenfield-go-sdk v1.0.0/go.mod h1:/VDQfd7KMa5Kl1bBA9XZ9Fq8NZJ5i8bXev0shIZfy+E=
github.com/bnb-chain/greenfield-iavl v0.20.1 h1:y3L64GU99otNp27/xLVBTDbv4eroR6CzoYz0rbaVotM=
github.com/bnb-chain/greenfield-iavl v0.20.1/go.mod h1:oLksTs8dfh7DYIKBro7hbRQ+ewls7ghJ27pIXlbEXyI=
github.com/boltdb/bolt v1.3.1/go.mod h1:clJnj/oiGkjum5o1McbSZDSLxVThjynRyGBgiAx27Ps=
Expand Down
Loading

0 comments on commit 2b6d59d

Please sign in to comment.