From 1f033da4989b911d9e211c330e8e3ed3706881c8 Mon Sep 17 00:00:00 2001 From: huangweichang Date: Wed, 2 Dec 2020 13:31:30 +0800 Subject: [PATCH 01/49] fix code to adapt irishub v1.0 --- block/config.go | 39 ++ block/handler.go | 76 +++ block/parse_asset_detail.go | 222 --------- block/parse_asset_detail_test.go | 45 -- block/parse_tx.go | 556 ++++++--------------- block/parse_tx_test.go | 11 +- conf/db/types.go | 4 +- conf/types.go | 73 +-- cron/cron_task.go | 93 +--- cron/cron_task_test.go | 10 +- go.mod | 17 +- go.sum | 716 ++++++++++++++++++++++++--- lib/cdc/cdc.go | 70 +++ {helper => lib/pool}/pool_client.go | 17 +- {helper => lib/pool}/pool_factory.go | 11 +- model/iris_asset_detail.go | 48 -- model/msg/asset.go | 234 --------- model/msg/bank.go | 21 - model/msg/gov.go | 152 ------ model/msg/rand.go | 21 - model/tx.go | 157 +++--- model/types.go | 8 +- task/create.go | 43 +- task/execute.go | 59 +-- utils/utils.go | 148 +----- utils/utils_test.go | 49 -- 26 files changed, 1208 insertions(+), 1692 deletions(-) create mode 100644 block/config.go create mode 100644 block/handler.go delete mode 100644 block/parse_asset_detail.go delete mode 100644 block/parse_asset_detail_test.go create mode 100644 lib/cdc/cdc.go rename {helper => lib/pool}/pool_client.go (75%) rename {helper => lib/pool}/pool_factory.go (94%) delete mode 100644 model/iris_asset_detail.go delete mode 100644 model/msg/asset.go delete mode 100644 model/msg/bank.go delete mode 100644 model/msg/gov.go delete mode 100644 model/msg/rand.go diff --git a/block/config.go b/block/config.go new file mode 100644 index 0000000..e91546e --- /dev/null +++ b/block/config.go @@ -0,0 +1,39 @@ +package block + +import ( + sdk "github.com/cosmos/cosmos-sdk/types" +) + +const ( + // PrefixValidator is the prefix for validator keys + PrefixValidator = "val" + // PrefixConsensus is the prefix for consensus keys + PrefixConsensus = "cons" + // PrefixPublic is the prefix for public keys + PrefixPublic = "pub" + // PrefixOperator is the prefix for operator keys + PrefixOperator = "oper" +) + +var ( + // Bech32PrefixAccAddr defines the Bech32 prefix of an account's address + Bech32PrefixAccAddr = "i" + // Bech32PrefixAccPub defines the Bech32 prefix of an account's public key + Bech32PrefixAccPub = Bech32PrefixAccAddr + PrefixPublic + // Bech32PrefixValAddr defines the Bech32 prefix of a validator's operator address + Bech32PrefixValAddr = Bech32PrefixAccAddr + PrefixValidator + PrefixOperator + // Bech32PrefixValPub defines the Bech32 prefix of a validator's operator public key + Bech32PrefixValPub = Bech32PrefixAccAddr + PrefixValidator + PrefixOperator + PrefixPublic + // Bech32PrefixConsAddr defines the Bech32 prefix of a consensus node address + Bech32PrefixConsAddr = Bech32PrefixAccAddr + PrefixValidator + PrefixConsensus + // Bech32PrefixConsPub defines the Bech32 prefix of a consensus node public key + Bech32PrefixConsPub = Bech32PrefixAccAddr + PrefixValidator + PrefixConsensus + PrefixPublic +) + +func init() { + config := sdk.GetConfig() + config.SetBech32PrefixForAccount(Bech32PrefixAccAddr, Bech32PrefixAccPub) + config.SetBech32PrefixForValidator(Bech32PrefixValAddr, Bech32PrefixValPub) + config.SetBech32PrefixForConsensusNode(Bech32PrefixConsAddr, Bech32PrefixConsPub) + config.Seal() +} diff --git a/block/handler.go b/block/handler.go new file mode 100644 index 0000000..196faa9 --- /dev/null +++ b/block/handler.go @@ -0,0 +1,76 @@ +package block + +import ( + "github.com/cosmos/cosmos-sdk/types" + . "github.com/irisnet/rainbow-sync/msgs" + "github.com/irisnet/rainbow-sync/msgs/bank" + "github.com/irisnet/rainbow-sync/msgs/coinswap" + "github.com/irisnet/rainbow-sync/msgs/crisis" + "github.com/irisnet/rainbow-sync/msgs/distribution" + "github.com/irisnet/rainbow-sync/msgs/evidence" + "github.com/irisnet/rainbow-sync/msgs/gov" + "github.com/irisnet/rainbow-sync/msgs/htlc" + "github.com/irisnet/rainbow-sync/msgs/nft" + "github.com/irisnet/rainbow-sync/msgs/record" + "github.com/irisnet/rainbow-sync/msgs/service" + "github.com/irisnet/rainbow-sync/msgs/slashing" + "github.com/irisnet/rainbow-sync/msgs/staking" + "github.com/irisnet/rainbow-sync/msgs/token" +) + +func HandleTxMsg(v types.Msg) MsgDocInfo { + if BankDocInfo, ok := bank.HandleTxMsg(v); ok { + return BankDocInfo + } + if IServiceDocInfo, ok := service.HandleTxMsg(v); ok { + return IServiceDocInfo + } + if NftDocInfo, ok := nft.HandleTxMsg(v); ok { + return NftDocInfo + } + if RecordDocInfo, ok := record.HandleTxMsg(v); ok { + return RecordDocInfo + } + if TokenDocInfo, ok := token.HandleTxMsg(v); ok { + return TokenDocInfo + } + if CoinswapDocInfo, ok := coinswap.HandleTxMsg(v); ok { + return CoinswapDocInfo + } + if CrisisDocInfo, ok := crisis.HandleTxMsg(v); ok { + return CrisisDocInfo + } + if DistrubutionDocInfo, ok := distribution.HandleTxMsg(v); ok { + return DistrubutionDocInfo + } + if SlashingDocInfo, ok := slashing.HandleTxMsg(v); ok { + return SlashingDocInfo + } + if EvidenceDocInfo, ok := evidence.HandleTxMsg(v); ok { + return EvidenceDocInfo + } + if HtlcDocInfo, ok := htlc.HandleTxMsg(v); ok { + return HtlcDocInfo + } + if StakingDocInfo, ok := staking.HandleTxMsg(v); ok { + return StakingDocInfo + } + if GovDocInfo, ok := gov.HandleTxMsg(v); ok { + return GovDocInfo + } + return MsgDocInfo{} +} + +func removeDuplicatesFromSlice(data []string) (result []string) { + tempSet := make(map[string]string, len(data)) + for _, val := range data { + if _, ok := tempSet[val]; ok || val == "" { + continue + } + tempSet[val] = val + } + for one := range tempSet { + result = append(result, one) + } + return +} diff --git a/block/parse_asset_detail.go b/block/parse_asset_detail.go deleted file mode 100644 index 3202554..0000000 --- a/block/parse_asset_detail.go +++ /dev/null @@ -1,222 +0,0 @@ -package block - -import ( - "github.com/irisnet/rainbow-sync/logger" - model "github.com/irisnet/rainbow-sync/db" - imodel "github.com/irisnet/rainbow-sync/model" - "github.com/irisnet/rainbow-sync/helper" - "strings" - "gopkg.in/mgo.v2/txn" - "gopkg.in/mgo.v2/bson" - "time" - "fmt" -) - -var ( - assetDetailTriggers = map[string]bool{ - "stakeEndBlocker": true, - "slashBeginBlocker": true, - "slashEndBlocker": true, - "govEndBlocker": true, - } - - // adapt multiple asset - assetDenoms = []string{"iris-atto"} -) - -const ( - triggerTxHashLength = 64 - separator = "::" // tag value separator - triggerTx = "tx" - unDelegationSubject = "Undelegation" - IRIS = "Iris" -) - -type Iris_Block struct{} - -func (iris *Iris_Block) Name() string { - return IRIS -} - -func (iris *Iris_Block) SaveDocsWithTxn(blockDoc *imodel.Block, irisAssetDetail []*imodel.IrisAssetDetail, irisTxs []*imodel.IrisTx, taskDoc imodel.SyncTask) error { - var ( - ops, irisAssetDetailOps, irisTxsOps []txn.Op - ) - - if blockDoc.Height == 0 { - return fmt.Errorf("invalid block, height equal 0") - } - - blockOp := txn.Op{ - C: imodel.CollectionNameBlock, - Id: bson.NewObjectId(), - Insert: blockDoc, - } - - length_assetdetail := len(irisAssetDetail) - if length_assetdetail > 0 { - irisAssetDetailOps = make([]txn.Op, 0, length_assetdetail) - for _, v := range irisAssetDetail { - op := txn.Op{ - C: imodel.CollectionNameAssetDetail, - Id: bson.NewObjectId(), - Insert: v, - } - irisAssetDetailOps = append(irisAssetDetailOps, op) - } - } - length_txs := len(irisTxs) - if length_txs > 0 { - irisTxsOps = make([]txn.Op, 0, length_txs) - for _, v := range irisTxs { - op := txn.Op{ - C: imodel.CollectionNameIrisTx, - Id: bson.NewObjectId(), - Insert: v, - } - irisTxsOps = append(irisTxsOps, op) - } - } - - updateOp := txn.Op{ - C: imodel.CollectionNameSyncTask, - Id: taskDoc.ID, - Assert: txn.DocExists, - Update: bson.M{ - "$set": bson.M{ - "current_height": taskDoc.CurrentHeight, - "status": taskDoc.Status, - "last_update_time": taskDoc.LastUpdateTime, - }, - }, - } - - ops = make([]txn.Op, 0, length_assetdetail+length_txs+2) - ops = append(append(ops, blockOp, updateOp), irisAssetDetailOps...) - ops = append(ops, irisTxsOps...) - - if len(ops) > 0 { - err := model.Txn(ops) - if err != nil { - return err - } - } - - return nil -} - -func (iris *Iris_Block) ParseBlock(b int64, client *helper.Client) (resBlock *imodel.Block, resIrisAssetDetails []*imodel.IrisAssetDetail, resIrisTxs []*imodel.IrisTx, resErr error) { - - defer func() { - if err := recover(); err != nil { - logger.Error("parse iris block fail", logger.Int64("height", b), - logger.Any("err", err), logger.String("Chain Block", iris.Name())) - - resBlock = &imodel.Block{} - resIrisAssetDetails = nil - resIrisTxs = nil - resErr = fmt.Errorf("%v", err) - } - }() - - irisAssetDetails, err := iris.ParseIrisAssetDetail(b, client) - if err != nil { - logger.Error("parse iris asset detail error", logger.String("error", err.Error()), logger.String("Chain Block", iris.Name())) - } - - irisTxs, err := iris.ParseIrisTxs(b, client) - if err != nil { - logger.Error("parse iris txs", logger.String("error", err.Error()), logger.String("Chain Block", iris.Name())) - } - - resBlock = &imodel.Block{ - Height: b, - CreateTime: time.Now().Unix(), - } - resIrisAssetDetails = irisAssetDetails - resIrisTxs = irisTxs - resErr = err - - return -} - -// parse iris asset detail from block result tags -func (iris *Iris_Block) ParseIrisAssetDetail(b int64, client *helper.Client) ([]*imodel.IrisAssetDetail, error) { - var irisAssetDetails []*imodel.IrisAssetDetail - res, err := client.BlockResults(&b) - if err != nil { - logger.Warn("get block result err, now try again", logger.String("err", err.Error()), - logger.String("Chain Block", iris.Name())) - // there is possible parse block fail when in iterator - var err2 error - client2 := helper.GetClient() - res, err2 = client2.BlockResults(&b) - client2.Release() - if err2 != nil { - return nil, err2 - } - } - - tags := res.Results.EndBlock.Tags - //fmt.Printf("======>>tags:%+v\n",tags) - - // filter asset detail trigger from tags and build asset detail model - irisAssetDetails = make([]*imodel.IrisAssetDetail, 0, len(tags)) - for _, t := range tags { - tagKey := string(t.Key) - tagValue := string(t.Value) - - if assetDetailTriggers[tagKey] || len(tagKey) == triggerTxHashLength { - values := strings.Split(tagValue, separator) - if len(values) != 6 { - logger.Warn("struct of iris asset detail changed in block result, skip parse this asset detail", - logger.Int64("height", b), logger.String("tagKey", tagKey), - logger.String("Chain Block", iris.Name())) - continue - } - - irisAssetDetails = append(irisAssetDetails, buildIrisAssetDetailFromTag(tagKey, values, b)) - } - } - - return irisAssetDetails, nil -} - -// get asset detail info by parse tag key and values -func buildIrisAssetDetailFromTag(tagKey string, keyValues []string, height int64) *imodel.IrisAssetDetail { - values := keyValues - coinAmount, coinUnit := parseCoinAmountAndUnitFromStr(values[2]) - - irisAssetDetail := &imodel.IrisAssetDetail{ - From: values[0], - To: values[1], - CoinAmount: coinAmount, - CoinUnit: coinUnit, - Trigger: tagKey, - Subject: values[3], - Description: values[4], - Timestamp: values[5], - Height: height, - } - - if len(tagKey) == triggerTxHashLength { - irisAssetDetail.TxHash = tagKey - irisAssetDetail.Trigger = triggerTx - } - - if irisAssetDetail.Subject == unDelegationSubject { - irisAssetDetail.TxHash = irisAssetDetail.Description - } - - irisAssetDetail.TxHash = strings.ToUpper(irisAssetDetail.TxHash) - return irisAssetDetail -} - -func parseCoinAmountAndUnitFromStr(s string) (string, string) { - for _, denom := range assetDenoms { - if strings.HasSuffix(s, denom) { - return strings.Replace(s, denom, "", -1), denom - } - } - return "", "" -} diff --git a/block/parse_asset_detail_test.go b/block/parse_asset_detail_test.go deleted file mode 100644 index f9331b4..0000000 --- a/block/parse_asset_detail_test.go +++ /dev/null @@ -1,45 +0,0 @@ -package block - -import ( - "testing" - irisConf "github.com/irisnet/rainbow-sync/conf" - "encoding/json" - "github.com/irisnet/rainbow-sync/logger" - "github.com/irisnet/rainbow-sync/helper" -) - -func TestIris_Block_ParseIrisAssetDetail(t *testing.T) { - helper.Init(irisConf.BlockChainMonitorUrl, irisConf.MaxConnectionNum, irisConf.InitConnectionNum) - client := helper.GetClient() - defer func() { - client.Release() - logger.Info("Release tm client") - }() - type args struct { - b int64 - client *helper.Client - } - tests := []struct { - name string - args args - }{ - { - name: "test parse asset detail", - args: args{ - b: 19301, - client: client, - }, - }, - } - for _, tt := range tests { - t.Run(tt.name, func(t *testing.T) { - biris := Iris_Block{} - res, err := biris.ParseIrisAssetDetail(tt.args.b, tt.args.client) - if err != nil { - t.Fatal(err) - } - resBytes, _ := json.MarshalIndent(res, "", "\t") - t.Log(string(resBytes)) - }) - } -} diff --git a/block/parse_tx.go b/block/parse_tx.go index 9a6f086..78ff89a 100644 --- a/block/parse_tx.go +++ b/block/parse_tx.go @@ -1,464 +1,216 @@ package block import ( - "github.com/irisnet/irishub/app/v1/auth" + "fmt" + sdk "github.com/cosmos/cosmos-sdk/types" + "github.com/cosmos/cosmos-sdk/x/auth/signing" "github.com/irisnet/rainbow-sync/constant" - "github.com/irisnet/rainbow-sync/helper" + "github.com/irisnet/rainbow-sync/db" + "github.com/irisnet/rainbow-sync/lib/cdc" + "github.com/irisnet/rainbow-sync/lib/pool" "github.com/irisnet/rainbow-sync/logger" - imodel "github.com/irisnet/rainbow-sync/model" - imsg "github.com/irisnet/rainbow-sync/model/msg" + "github.com/irisnet/rainbow-sync/model" "github.com/irisnet/rainbow-sync/utils" - abci "github.com/tendermint/tendermint/abci/types" "github.com/tendermint/tendermint/types" + "gopkg.in/mgo.v2/bson" + "gopkg.in/mgo.v2/txn" + "time" ) -// parse iris txs from block result txs -func (iris *Iris_Block) ParseIrisTxs(b int64, client *helper.Client) ([]*imodel.IrisTx, error) { +func SaveDocsWithTxn(blockDoc *model.Block, irisTxs []*model.Tx, taskDoc model.SyncTask) error { + var ( + ops, irisTxsOps []txn.Op + ) + + if blockDoc.Height == 0 { + return fmt.Errorf("invalid block, height equal 0") + } + + blockOp := txn.Op{ + C: model.CollectionNameBlock, + Id: bson.NewObjectId(), + Insert: blockDoc, + } + + length_txs := len(irisTxs) + if length_txs > 0 { + irisTxsOps = make([]txn.Op, 0, length_txs) + for _, v := range irisTxs { + op := txn.Op{ + C: model.CollectionNameIrisTx, + Id: bson.NewObjectId(), + Insert: v, + } + irisTxsOps = append(irisTxsOps, op) + } + } + + updateOp := txn.Op{ + C: model.CollectionNameSyncTask, + Id: taskDoc.ID, + Assert: txn.DocExists, + Update: bson.M{ + "$set": bson.M{ + "current_height": taskDoc.CurrentHeight, + "status": taskDoc.Status, + "last_update_time": taskDoc.LastUpdateTime, + }, + }, + } + + ops = make([]txn.Op, 0, length_txs+2) + ops = append(append(ops, blockOp, updateOp), irisTxsOps...) + + if len(ops) > 0 { + err := db.Txn(ops) + if err != nil { + return err + } + } + + return nil +} + +func ParseBlock(b int64, client *pool.Client) (*model.Block, []*model.Tx, error) { + + defer func() { + if err := recover(); err != nil { + logger.Error("parse block fail", logger.Int64("height", b), + logger.Any("err", err)) + } + }() + + resBlock := &model.Block{ + Height: b, + CreateTime: time.Now().Unix(), + } + + txs, err := ParseTxs(b, client) + if err != nil { + return nil, nil, err + } + + return resBlock, txs, nil +} + +func ParseTxs(b int64, client *pool.Client) ([]*model.Tx, error) { resblock, err := client.Block(&b) if err != nil { logger.Warn("get block result err, now try again", logger.String("err", err.Error()), - logger.String("Chain Block", iris.Name()), logger.Any("height", b)) + logger.Any("height", b)) // there is possible parse block fail when in iterator var err2 error - client2 := helper.GetClient() + client2 := pool.GetClient() resblock, err2 = client2.Block(&b) client2.Release() if err2 != nil { return nil, err2 } } - - irisTxs := make([]*imodel.IrisTx, 0, len(resblock.Block.Txs)) + txs := make([]*model.Tx, 0, len(resblock.Block.Txs)) for _, tx := range resblock.Block.Txs { - iristx := iris.ParseIrisTxModel(tx, resblock.Block) - irisTxs = append(irisTxs, &iristx) + tx := ParseTx(tx, resblock.Block, client) + if tx.Height > 0 { + txs = append(txs, &tx) + } } - - return irisTxs, nil + return txs, nil } // parse iris tx from iris block result tx -func (iris *Iris_Block) ParseIrisTxModel(txBytes types.Tx, block *types.Block) imodel.IrisTx { +func ParseTx(txBytes types.Tx, block *types.Block, client *pool.Client) model.Tx { var ( - authTx auth.StdTx + docTxMsgs []model.DocTxMsg methodName = "ParseTx" - docTx imodel.IrisTx - actualFee *imodel.ActualFee - docTxMsgs []imodel.DocTxMsg + docTx model.Tx + actualFee *model.ActualFee ) - - cdc := utils.GetCodec() - - err := cdc.UnmarshalBinaryLengthPrefixed(txBytes, &authTx) + Tx, err := cdc.GetTxDecoder()(txBytes) if err != nil { logger.Error(err.Error()) return docTx } - + authTx := Tx.(signing.Tx) + fee := BuildFee(authTx.GetFee(), authTx.GetGas()) + memo := authTx.GetMemo() height := block.Height - time := block.Time txHash := utils.BuildHex(txBytes.Hash()) - fee := utils.BuildFee(authTx.Fee) - memo := authTx.Memo - - // get tx status, gasUsed, gasPrice and actualFee from tx result - status, result, err := utils.QueryTxResult(txBytes.Hash()) + res, err := client.Tx(txBytes.Hash(), false) if err != nil { - logger.Error("get txResult err", logger.String("method", methodName), logger.String("err", err.Error())) + logger.Warn("QueryTxResult have error, now try again", logger.String("err", err.Error())) + time.Sleep(time.Duration(1) * time.Second) + var err1 error + client2 := pool.GetClient() + res, err1 = client2.Tx(txBytes.Hash(), false) + client2.Release() + if err1 != nil { + logger.Error("get txResult err", logger.String("method", methodName), logger.String("err", err1.Error())) + } } - gasUsed := Min(result.GasUsed, fee.Gas) + + gasUsed := utils.Min(res.TxResult.GasUsed, fee.Gas) if len(fee.Amount) > 0 { - gasPrice := fee.Amount[0].Amount / float64(fee.Gas) - actualFee = &imodel.ActualFee{ + gasPrice := utils.ParseFloat(fee.Amount[0].Amount) / float64(fee.Gas) + actualFee = &model.ActualFee{ Denom: fee.Amount[0].Denom, - Amount: float64(gasUsed) * gasPrice, + Amount: fmt.Sprint(float64(gasUsed) * gasPrice), } } else { - actualFee = &imodel.ActualFee{} + actualFee = &model.ActualFee{} } - msgs := authTx.GetMsgs() - if len(msgs) <= 0 { - logger.Error("can't get msgs", logger.String("method", methodName)) - return docTx - } - msg := msgs[0] - docTx = imodel.IrisTx{ + docTx = model.Tx{ Height: height, - Time: time, + Time: block.Time.Unix(), TxHash: txHash, Fee: fee, ActualFee: actualFee, Memo: memo, - Status: status, - Log: result.Log, - Code: result.Code, - Tags: parseTags(result), + TxIndex: res.Index, } - switch msg.(type) { - case imodel.MsgTransfer: - msg := msg.(imodel.MsgTransfer) - - docTx.From = msg.Inputs[0].Address.String() - docTx.To = msg.Outputs[0].Address.String() - docTx.Initiator = msg.Inputs[0].Address.String() - docTx.Amount = utils.ParseCoins(msg.Inputs[0].Coins.String()) - docTx.Type = constant.Iris_TxTypeTransfer - case imodel.MsgBurn: - msg := msg.(imodel.MsgBurn) - docTx.From = msg.Owner.String() - docTx.To = "" - docTx.Initiator = msg.Owner.String() - docTx.Amount = utils.ParseCoins(msg.Coins.String()) - docTx.Type = constant.Iris_TxTypeBurn - case imodel.MsgSetMemoRegexp: - msg := msg.(imodel.MsgSetMemoRegexp) - docTx.From = msg.Owner.String() - docTx.To = "" - docTx.Initiator = msg.Owner.String() - docTx.Amount = []*imodel.Coin{} - docTx.Type = constant.Iris_TxTypeSetMemoRegexp - txMsg := imsg.DocTxMsgSetMemoRegexp{} - txMsg.BuildMsg(msg) - docTx.Msgs = append(docTxMsgs, imodel.DocTxMsg{ - Type: txMsg.Type(), - Msg: &txMsg, - }) - return docTx - - case imodel.MsgStakeCreate: - msg := msg.(imodel.MsgStakeCreate) - docTx.From = msg.DelegatorAddr.String() - docTx.To = msg.ValidatorAddr.String() - docTx.Initiator = msg.DelegatorAddr.String() - docTx.Amount = []*imodel.Coin{utils.ParseCoin(msg.Delegation.String())} - docTx.Type = constant.Iris_TxTypeStakeCreateValidator - - case imodel.MsgStakeEdit: - msg := msg.(imodel.MsgStakeEdit) - - docTx.From = msg.ValidatorAddr.String() - docTx.To = "" - docTx.Initiator = msg.ValidatorAddr.String() - docTx.Amount = []*imodel.Coin{} - docTx.Type = constant.Iris_TxTypeStakeEditValidator - - case imodel.MsgStakeDelegate: - msg := msg.(imodel.MsgStakeDelegate) - - docTx.From = msg.DelegatorAddr.String() - docTx.To = msg.ValidatorAddr.String() - docTx.Initiator = msg.DelegatorAddr.String() - docTx.Amount = []*imodel.Coin{utils.ParseCoin(msg.Delegation.String())} - docTx.Type = constant.Iris_TxTypeStakeDelegate - - case imodel.MsgStakeBeginUnbonding: - msg := msg.(imodel.MsgStakeBeginUnbonding) - - shares := utils.ParseFloat(msg.SharesAmount.String()) - docTx.From = msg.DelegatorAddr.String() - docTx.To = msg.ValidatorAddr.String() - docTx.Initiator = msg.DelegatorAddr.String() - coin := imodel.Coin{ - Amount: shares, - } - docTx.Amount = []*imodel.Coin{&coin} - docTx.Type = constant.Iris_TxTypeStakeBeginUnbonding - case imodel.MsgBeginRedelegate: - msg := msg.(imodel.MsgBeginRedelegate) - - shares := utils.ParseFloat(msg.SharesAmount.String()) - docTx.From = msg.ValidatorSrcAddr.String() - docTx.To = msg.ValidatorDstAddr.String() - docTx.Initiator = msg.DelegatorAddr.String() - coin := imodel.Coin{ - Amount: shares, - } - docTx.Amount = []*imodel.Coin{&coin} - docTx.Type = constant.Iris_TxTypeBeginRedelegate - case imodel.MsgUnjail: - msg := msg.(imodel.MsgUnjail) + docTx.Status = constant.TxStatusSuccess + if res.TxResult.Code != 0 { + docTx.Status = constant.TxStatusFail + docTx.Log = res.TxResult.Log - docTx.From = msg.ValidatorAddr.String() - docTx.Initiator = msg.ValidatorAddr.String() - docTx.Type = constant.Iris_TxTypeUnjail - case imodel.MsgSetWithdrawAddress: - msg := msg.(imodel.MsgSetWithdrawAddress) - - docTx.From = msg.DelegatorAddr.String() - docTx.To = msg.WithdrawAddr.String() - docTx.Initiator = msg.DelegatorAddr.String() - docTx.Type = constant.Iris_TxTypeSetWithdrawAddress - case imodel.MsgWithdrawDelegatorReward: - msg := msg.(imodel.MsgWithdrawDelegatorReward) - - docTx.From = msg.DelegatorAddr.String() - docTx.To = msg.ValidatorAddr.String() - docTx.Initiator = msg.DelegatorAddr.String() - docTx.Type = constant.Iris_TxTypeWithdrawDelegatorReward - - for _, tag := range result.Tags { - key := string(tag.Key) - if key == imodel.TagDistributionReward { - reward := string(tag.Value) - docTx.Amount = utils.ParseCoins(reward) - break - } - } - case imodel.MsgWithdrawDelegatorRewardsAll: - msg := msg.(imodel.MsgWithdrawDelegatorRewardsAll) - - docTx.From = msg.DelegatorAddr.String() - docTx.Initiator = msg.DelegatorAddr.String() - docTx.Type = constant.Iris_TxTypeWithdrawDelegatorRewardsAll - for _, tag := range result.Tags { - key := string(tag.Key) - if key == imodel.TagDistributionReward { - reward := string(tag.Value) - docTx.Amount = utils.ParseCoins(reward) - break - } - } - case imodel.MsgWithdrawValidatorRewardsAll: - msg := msg.(imodel.MsgWithdrawValidatorRewardsAll) + } - docTx.From = msg.ValidatorAddr.String() - if v := msg.GetSigners(); len(v) > 0 { - docTx.Initiator = v[0].String() + msgs := authTx.GetMsgs() + if len(msgs) == 0 { + return docTx + } + for i, v := range msgs { + msgDocInfo := HandleTxMsg(v) + if len(msgDocInfo.Addrs) == 0 { + continue } - docTx.Type = constant.Iris_TxTypeWithdrawValidatorRewardsAll - - var totalReward string - var withdrawAddr string - for _, tag := range result.Tags { - key := string(tag.Key) - switch key { - case imodel.TagDistributionReward: - if totalReward == "" { - totalReward = string(tag.Value) - } - case imodel.TagDistributionWithdrawAddr: - if withdrawAddr == "" { - withdrawAddr = string(tag.Value) - } - } + if i == 0 { + docTx.Type = msgDocInfo.DocTxMsg.Type } - docTx.To = withdrawAddr - docTx.Amount = utils.ParseCoins(totalReward) - case imodel.MsgSubmitProposal: - msg := msg.(imodel.MsgSubmitProposal) - - docTx.From = msg.Proposer.String() - docTx.To = "" - docTx.Initiator = msg.Proposer.String() - docTx.Amount = utils.ParseCoins(msg.InitialDeposit.String()) - docTx.Type = constant.Iris_TxTypeSubmitProposal - txMsg := imsg.DocTxMsgSubmitProposal{} - txMsg.BuildMsg(msg) - docTx.Msgs = append(docTxMsgs, imodel.DocTxMsg{ - Type: txMsg.Type(), - Msg: &txMsg, - }) - - case imodel.MsgSubmitSoftwareUpgradeProposal: - msg := msg.(imodel.MsgSubmitSoftwareUpgradeProposal) - - docTx.From = msg.Proposer.String() - docTx.To = "" - docTx.Initiator = msg.Proposer.String() - docTx.Amount = utils.ParseCoins(msg.InitialDeposit.String()) - docTx.Type = constant.Iris_TxTypeSubmitProposal - txMsg := imsg.DocTxMsgSubmitSoftwareUpgradeProposal{} - txMsg.BuildMsg(msg) - docTx.Msgs = append(docTxMsgs, imodel.DocTxMsg{ - Type: txMsg.Type(), - Msg: &txMsg, - }) - - case imodel.MsgSubmitTaxUsageProposal: - msg := msg.(imodel.MsgSubmitTaxUsageProposal) - - docTx.From = msg.Proposer.String() - docTx.To = "" - docTx.Initiator = msg.Proposer.String() - docTx.Amount = utils.ParseCoins(msg.InitialDeposit.String()) - docTx.Type = constant.Iris_TxTypeSubmitProposal - txMsg := imsg.DocTxMsgSubmitCommunityTaxUsageProposal{} - txMsg.BuildMsg(msg) - docTx.Msgs = append(docTxMsgs, imodel.DocTxMsg{ - Type: txMsg.Type(), - Msg: &txMsg, - }) - - case imodel.MsgSubmitTokenAdditionProposal: - msg := msg.(imodel.MsgSubmitTokenAdditionProposal) - - docTx.From = msg.Proposer.String() - docTx.To = "" - docTx.Initiator = msg.Proposer.String() - docTx.Amount = utils.ParseCoins(msg.InitialDeposit.String()) - docTx.Type = constant.Iris_TxTypeSubmitProposal - txMsg := imsg.DocTxMsgSubmitTokenAdditionProposal{} - txMsg.BuildMsg(msg) - docTx.Msgs = append(docTxMsgs, imodel.DocTxMsg{ - Type: txMsg.Type(), - Msg: &txMsg, - }) - return docTx - - case imodel.MsgDeposit: - msg := msg.(imodel.MsgDeposit) - - docTx.From = msg.Depositor.String() - docTx.Initiator = msg.Depositor.String() - docTx.Amount = utils.ParseCoins(msg.Amount.String()) - docTx.Type = constant.Iris_TxTypeDeposit - case imodel.MsgVote: - msg := msg.(imodel.MsgVote) - - docTx.From = msg.Voter.String() - docTx.Initiator = msg.Voter.String() - docTx.Amount = []*imodel.Coin{} - docTx.Type = constant.Iris_TxTypeVote - txMsg := imsg.DocTxMsgVote{} - txMsg.BuildMsg(msg) - docTx.Msgs = append(docTxMsgs, imodel.DocTxMsg{ - Type: txMsg.Type(), - Msg: &txMsg, - }) - - case imodel.MsgRequestRand: - msg := msg.(imodel.MsgRequestRand) - - docTx.From = msg.Consumer.String() - docTx.Initiator = msg.Consumer.String() - docTx.Amount = []*imodel.Coin{} - docTx.Type = constant.Iris_TxTypeRequestRand - txMsg := imsg.DocTxMsgRequestRand{} - txMsg.BuildMsg(msg) - docTx.Msgs = append(docTxMsgs, imodel.DocTxMsg{ - Type: txMsg.Type(), - Msg: &txMsg, - }) - - return docTx - - case imodel.AssetIssueToken: - msg := msg.(imodel.AssetIssueToken) - - docTx.From = msg.Owner.String() - docTx.Type = constant.TxTypeAssetIssueToken - txMsg := imsg.DocTxMsgIssueToken{} - txMsg.BuildMsg(msg) - docTx.Msgs = append(docTxMsgs, imodel.DocTxMsg{ - Type: txMsg.Type(), - Msg: &txMsg, - }) - - return docTx - case imodel.AssetEditToken: - msg := msg.(imodel.AssetEditToken) - - docTx.From = msg.Owner.String() - docTx.Type = constant.TxTypeAssetEditToken - txMsg := imsg.DocTxMsgEditToken{} - txMsg.BuildMsg(msg) - docTx.Msgs = append(docTxMsgs, imodel.DocTxMsg{ - Type: txMsg.Type(), - Msg: &txMsg, - }) - - return docTx - case imodel.AssetMintToken: - msg := msg.(imodel.AssetMintToken) - - docTx.From = msg.Owner.String() - docTx.To = msg.To.String() - docTx.Type = constant.TxTypeAssetMintToken - txMsg := imsg.DocTxMsgMintToken{} - txMsg.BuildMsg(msg) - docTx.Msgs = append(docTxMsgs, imodel.DocTxMsg{ - Type: txMsg.Type(), - Msg: &txMsg, - }) - - return docTx - case imodel.AssetTransferTokenOwner: - msg := msg.(imodel.AssetTransferTokenOwner) - - docTx.From = msg.SrcOwner.String() - docTx.To = msg.DstOwner.String() - docTx.Type = constant.TxTypeAssetTransferTokenOwner - txMsg := imsg.DocTxMsgTransferTokenOwner{} - txMsg.BuildMsg(msg) - docTx.Msgs = append(docTxMsgs, imodel.DocTxMsg{ - Type: txMsg.Type(), - Msg: &txMsg, - }) - - return docTx - case imodel.AssetCreateGateway: - msg := msg.(imodel.AssetCreateGateway) - - docTx.From = msg.Owner.String() - docTx.Type = constant.TxTypeAssetCreateGateway - txMsg := imsg.DocTxMsgCreateGateway{} - txMsg.BuildMsg(msg) - docTx.Msgs = append(docTxMsgs, imodel.DocTxMsg{ - Type: txMsg.Type(), - Msg: &txMsg, - }) - - return docTx - case imodel.AssetEditGateWay: - msg := msg.(imodel.AssetEditGateWay) - - docTx.From = msg.Owner.String() - docTx.Type = constant.TxTypeAssetEditGateway - txMsg := imsg.DocTxMsgEditGateway{} - txMsg.BuildMsg(msg) - docTx.Msgs = append(docTxMsgs, imodel.DocTxMsg{ - Type: txMsg.Type(), - Msg: &txMsg, - }) - - return docTx - case imodel.AssetTransferGatewayOwner: - msg := msg.(imodel.AssetTransferGatewayOwner) - - docTx.From = msg.Owner.String() - docTx.To = msg.To.String() - docTx.Type = constant.TxTypeAssetTransferGatewayOwner - txMsg := imsg.DocTxMsgTransferGatewayOwner{} - txMsg.BuildMsg(msg) - docTx.Msgs = append(docTxMsgs, imodel.DocTxMsg{ - Type: txMsg.Type(), - Msg: &txMsg, - }) - return docTx - default: - logger.Warn("unknown msg type") + docTx.Signers = append(docTx.Signers, removeDuplicatesFromSlice(msgDocInfo.Signers)...) + docTx.Addrs = append(docTx.Addrs, removeDuplicatesFromSlice(msgDocInfo.Addrs)...) + docTxMsgs = append(docTxMsgs, msgDocInfo.DocTxMsg) + docTx.Types = append(docTx.Types, msgDocInfo.DocTxMsg.Type) + } + docTx.Addrs = removeDuplicatesFromSlice(docTx.Addrs) + docTx.Types = removeDuplicatesFromSlice(docTx.Types) + docTx.Signers = removeDuplicatesFromSlice(docTx.Signers) + docTx.Msgs = docTxMsgs + + // don't save txs which have not parsed + if docTx.TxHash == "" { + return model.Tx{} } return docTx } -func parseTags(result abci.ResponseDeliverTx) map[string]string { - tags := make(map[string]string, 0) - for _, tag := range result.Tags { - key := string(tag.Key) - value := string(tag.Value) - tags[key] = value - } - return tags -} - -func Min(x, y int64) int64 { - if x < y { - return x +func BuildFee(fee sdk.Coins, gas uint64) *model.Fee { + return &model.Fee{ + Amount: model.BuildDocCoins(fee), + Gas: int64(gas), } - return y } diff --git a/block/parse_tx_test.go b/block/parse_tx_test.go index dba69bb..fa15f7c 100644 --- a/block/parse_tx_test.go +++ b/block/parse_tx_test.go @@ -3,19 +3,19 @@ package block import ( "encoding/json" irisConf "github.com/irisnet/rainbow-sync/conf" - "github.com/irisnet/rainbow-sync/helper" + "github.com/irisnet/rainbow-sync/lib/pool" "testing" ) func TestIris_Block_ParseIrisTx(t *testing.T) { - helper.Init(irisConf.BlockChainMonitorUrl, irisConf.MaxConnectionNum, irisConf.InitConnectionNum) - client := helper.GetClient() + pool.Init(irisConf.SvrConf.NodeUrls, irisConf.SvrConf.MaxConnectionNum, irisConf.SvrConf.InitConnectionNum) + client := pool.GetClient() defer func() { client.Release() }() type args struct { b int64 - client *helper.Client + client *pool.Client } tests := []struct { name string @@ -31,8 +31,7 @@ func TestIris_Block_ParseIrisTx(t *testing.T) { } for _, tt := range tests { t.Run(tt.name, func(t *testing.T) { - iris := Iris_Block{} - res, err := iris.ParseIrisTxs(tt.args.b, tt.args.client) + res, err := ParseTxs(tt.args.b, tt.args.client) if err != nil { t.Fatal(err) } diff --git a/conf/db/types.go b/conf/db/types.go index 17c8ea9..74b5a4a 100644 --- a/conf/db/types.go +++ b/conf/db/types.go @@ -1,13 +1,13 @@ package db import ( - "github.com/irisnet/rainbow-sync/logger" constant "github.com/irisnet/rainbow-sync/conf" + "github.com/irisnet/rainbow-sync/logger" "os" ) var ( - Addrs = "localhost:27019" + Addrs = "localhost:27018" User = "iris" Passwd = "irispassword" Database = "rainbow-server" diff --git a/conf/types.go b/conf/types.go index 9a2b09e..d825b78 100644 --- a/conf/types.go +++ b/conf/types.go @@ -2,24 +2,36 @@ package conf import ( "github.com/irisnet/rainbow-sync/logger" + "github.com/irisnet/rainbow-sync/utils" "os" "strconv" "strings" ) var ( - BlockChainMonitorUrl = []string{"tcp://192.168.150.31:26657"} + SvrConf *ServerConf + blockChainMonitorUrl = []string{"tcp://192.168.150.31:16657"} - IrisNetwork = "testnet" - WorkerNumCreateTask = 1 - WorkerNumExecuteTask = 30 - WorkerMaxSleepTime = 2 * 60 - BlockNumPerWorkerHandle = 50 + workerNumCreateTask = 1 + workerNumExecuteTask = 30 + workerMaxSleepTime = 2 * 60 + blockNumPerWorkerHandle = 50 - InitConnectionNum = 50 // fast init num of tendermint client pool - MaxConnectionNum = 100 // max size of tendermint client pool + initConnectionNum = 50 // fast init num of tendermint client pool + maxConnectionNum = 100 // max size of tendermint client pool ) +type ServerConf struct { + NodeUrls []string + WorkerNumCreateTask int + WorkerNumExecuteTask int + WorkerMaxSleepTime int + BlockNumPerWorkerHandle int + + MaxConnectionNum int + InitConnectionNum int +} + const ( EnvNameDbAddr = "DB_ADDR" EnvNameDbUser = "DB_USER" @@ -30,7 +42,6 @@ const ( EnvNameWorkerNumExecuteTask = "WORKER_NUM_EXECUTE_TASK" EnvNameWorkerMaxSleepTime = "WORKER_MAX_SLEEP_TIME" EnvNameBlockNumPerWorkerHandle = "BLOCK_NUM_PER_WORKER_HANDLE" - EnvNameIrisNetwork = "IRIS_NETWORK" ) // get value of env var @@ -39,42 +50,38 @@ func init() { nodeUrl, found := os.LookupEnv(EnvNameSerNetworkFullNodes) if found { - BlockChainMonitorUrl = strings.Split(nodeUrl, ",") + blockChainMonitorUrl = strings.Split(nodeUrl, ",") } - logger.Info("Env Value", logger.Any(EnvNameSerNetworkFullNodes, BlockChainMonitorUrl)) - - workerNumExecuteTask, found := os.LookupEnv(EnvNameWorkerNumExecuteTask) - if found { - WorkerNumExecuteTask, err = strconv.Atoi(workerNumExecuteTask) + if v, found := os.LookupEnv(EnvNameWorkerNumExecuteTask); found { + workerNumExecuteTask, err = strconv.Atoi(v) if err != nil { - logger.Fatal("Can't convert str to int", logger.String(EnvNameWorkerNumExecuteTask, workerNumExecuteTask)) + logger.Fatal("Can't convert str to int", logger.String(EnvNameWorkerNumExecuteTask, v)) } } - logger.Info("Env Value", logger.Int(EnvNameWorkerNumExecuteTask, WorkerNumExecuteTask)) - workerMaxSleepTime, found := os.LookupEnv(EnvNameWorkerMaxSleepTime) - if found { - WorkerMaxSleepTime, err = strconv.Atoi(workerMaxSleepTime) + if v, found := os.LookupEnv(EnvNameWorkerMaxSleepTime); found { + workerMaxSleepTime, err = strconv.Atoi(v) if err != nil { - logger.Fatal("Can't convert str to int", logger.String(EnvNameWorkerMaxSleepTime, workerMaxSleepTime)) + logger.Fatal("Can't convert str to int", logger.String(EnvNameWorkerMaxSleepTime, v)) } } - logger.Info("Env Value", logger.Int(EnvNameWorkerMaxSleepTime, WorkerMaxSleepTime)) - blockNumPerWorkerHandle, found := os.LookupEnv(EnvNameBlockNumPerWorkerHandle) - if found { - BlockNumPerWorkerHandle, err = strconv.Atoi(blockNumPerWorkerHandle) + if v, found := os.LookupEnv(EnvNameBlockNumPerWorkerHandle); found { + blockNumPerWorkerHandle, err = strconv.Atoi(v) if err != nil { - logger.Fatal("Can't convert str to int", logger.String(EnvNameBlockNumPerWorkerHandle, blockNumPerWorkerHandle)) + logger.Fatal("Can't convert str to int", logger.String(EnvNameBlockNumPerWorkerHandle, v)) } } - logger.Info("Env Value", logger.Int(EnvNameBlockNumPerWorkerHandle, BlockNumPerWorkerHandle)) - network, found := os.LookupEnv(EnvNameIrisNetwork) - if found { - IrisNetwork = network - } else { - panic("not found " + EnvNameIrisNetwork) + SvrConf = &ServerConf{ + NodeUrls: blockChainMonitorUrl, + WorkerNumCreateTask: workerNumCreateTask, + WorkerNumExecuteTask: workerNumExecuteTask, + WorkerMaxSleepTime: workerMaxSleepTime, + BlockNumPerWorkerHandle: blockNumPerWorkerHandle, + + MaxConnectionNum: maxConnectionNum, + InitConnectionNum: initConnectionNum, } - logger.Info("Env Value", logger.String(EnvNameIrisNetwork, IrisNetwork)) + logger.Debug("print server config", logger.String("serverConf", utils.MarshalJsonIgnoreErr(SvrConf))) } diff --git a/cron/cron_task.go b/cron/cron_task.go index 96bf160..9958461 100644 --- a/cron/cron_task.go +++ b/cron/cron_task.go @@ -1,18 +1,16 @@ package cron import ( - "time" - "os" - "os/signal" - "github.com/irisnet/rainbow-sync/logger" - "github.com/irisnet/rainbow-sync/db" - model "github.com/irisnet/rainbow-sync/model" "github.com/irisnet/rainbow-sync/block" - "github.com/irisnet/rainbow-sync/helper" + "github.com/irisnet/rainbow-sync/db" + "github.com/irisnet/rainbow-sync/lib/pool" + "github.com/irisnet/rainbow-sync/logger" + "github.com/irisnet/rainbow-sync/model" "gopkg.in/mgo.v2" "gopkg.in/mgo.v2/bson" - "gopkg.in/mgo.v2/txn" - "fmt" + "os" + "os/signal" + "time" ) type CronService struct{} @@ -69,7 +67,7 @@ func (s *CronService) StartCronService() { func GetUnknownTxsByPage(skip, limit int) (int, error) { - var res []model.IrisTx + var res []model.Tx q := bson.M{"status": "unknown"} sorts := []string{"-height"} @@ -88,24 +86,8 @@ func GetUnknownTxsByPage(skip, limit int) (int, error) { return len(res), nil } -func GetCoinFlowByHash(txhash string) ([]model.IrisAssetDetail, error) { - var res []model.IrisAssetDetail - q := bson.M{"tx_hash": txhash} - sorts := []string{"-height"} - - fn := func(c *mgo.Collection) error { - return c.Find(q).Sort(sorts...).All(&res) - } - - if err := db.ExecCollection(model.CollectionNameAssetDetail, fn); err != nil { - return nil, err - } - - return res, nil -} - -func doWork(iristxs []model.IrisTx) { - client := helper.GetClient() +func doWork(iristxs []model.Tx) { + client := pool.GetClient() defer func() { client.Release() }() @@ -118,16 +100,12 @@ func doWork(iristxs []model.IrisTx) { if err := UpdateUnknowTxs(txs); err != nil { logger.Warn("UpdateUnknowTxs have error", logger.String("error", err.Error())) } - if err := UpdateCoinFlow(val.TxHash, val.Height, client); err != nil { - logger.Warn("UpdateCoinFlow have error", logger.String("error", err.Error())) - } } } -func ParseUnknownTxs(height int64, client *helper.Client) (resIrisTxs []*model.IrisTx, err error) { - var irisBlock block.Iris_Block - resIrisTxs, err = irisBlock.ParseIrisTxs(height, client) +func ParseUnknownTxs(height int64, client *pool.Client) (resTxs []*model.Tx, err error) { + resTxs, err = block.ParseTxs(height, client) if err != nil { logger.Error("Parse block txs fail", logger.Int64("block", height), logger.String("err", err.Error())) @@ -135,22 +113,12 @@ func ParseUnknownTxs(height int64, client *helper.Client) (resIrisTxs []*model.I return } -func ParseCoinflows(height int64, client *helper.Client) (coinflows []*model.IrisAssetDetail, err error) { - var irisBlock block.Iris_Block - coinflows, err = irisBlock.ParseIrisAssetDetail(height, client) - if err != nil { - logger.Error("Parse block coinflow fail", logger.Int64("block", height), - logger.String("err", err.Error())) - } - return -} - -func UpdateUnknowTxs(iristx []*model.IrisTx) error { +func UpdateUnknowTxs(iristx []*model.Tx) error { - update_fn := func(tx *model.IrisTx) error { + update_fn := func(tx *model.Tx) error { fn := func(c *mgo.Collection) error { return c.Update(bson.M{"tx_hash": tx.TxHash}, - bson.M{"$set": bson.M{"actual_fee": tx.ActualFee, "status": tx.Status, "tags": tx.Tags}}) + bson.M{"$set": bson.M{"actual_fee": tx.ActualFee, "status": tx.Status, "events": tx.Events}}) } if err := db.ExecCollection(model.CollectionNameIrisTx, fn); err != nil { @@ -165,34 +133,3 @@ func UpdateUnknowTxs(iristx []*model.IrisTx) error { return nil } - -func UpdateCoinFlow(txhash string, height int64, client *helper.Client) error { - - coinflows, err := GetCoinFlowByHash(txhash) - if err != nil { - return err - } - var ops []txn.Op - - if len(coinflows) > 0 { - return fmt.Errorf("coinflow not need to update") - } - assetdetail, err := ParseCoinflows(height, client) - for _, dbval := range assetdetail { - ops = append(ops, txn.Op{ - C: model.CollectionNameAssetDetail, - Id: bson.NewObjectId(), - Insert: dbval, - }) - - } - - if len(ops) > 0 { - err := db.Txn(ops) - if err != nil { - return err - } - } - - return nil -} diff --git a/cron/cron_task_test.go b/cron/cron_task_test.go index 75b6655..aa79b02 100644 --- a/cron/cron_task_test.go +++ b/cron/cron_task_test.go @@ -1,15 +1,15 @@ package cron import ( + "github.com/irisnet/rainbow-sync/conf" + "github.com/irisnet/rainbow-sync/db" + "github.com/irisnet/rainbow-sync/lib/pool" "testing" "time" - "github.com/irisnet/rainbow-sync/db" - "github.com/irisnet/rainbow-sync/helper" - "github.com/irisnet/rainbow-sync/conf" ) func TestGetUnknownTxsByPage(t *testing.T) { - helper.Init(conf.BlockChainMonitorUrl, conf.MaxConnectionNum, conf.InitConnectionNum) + pool.Init(conf.SvrConf.NodeUrls, conf.SvrConf.MaxConnectionNum, conf.SvrConf.InitConnectionNum) db.Start() defer func() { db.Stop() @@ -18,7 +18,7 @@ func TestGetUnknownTxsByPage(t *testing.T) { } func TestCronService_StartCronService(t *testing.T) { - helper.Init(conf.BlockChainMonitorUrl, conf.MaxConnectionNum, conf.InitConnectionNum) + pool.Init(conf.SvrConf.NodeUrls, conf.SvrConf.MaxConnectionNum, conf.SvrConf.InitConnectionNum) db.Start() defer func() { db.Stop() diff --git a/go.mod b/go.mod index 0d56bcf..49a2af9 100644 --- a/go.mod +++ b/go.mod @@ -1,11 +1,17 @@ module github.com/irisnet/rainbow-sync -go 1.13 +go 1.14 require ( - github.com/irisnet/irishub v0.16.0 + github.com/cosmos/cosmos-sdk v0.34.4-0.20200825201020-d9fd4d2ca9a3 + github.com/irismod/coinswap v0.0.0-20200901103745-f38672ac63ec + github.com/irismod/htlc v0.0.0-20200901103718-c3bf89708dce + github.com/irismod/nft v1.1.1-0.20200827095318-d16861212579 + github.com/irismod/record v1.1.1-0.20200827095301-3e27fc43ae73 + github.com/irismod/service v1.1.1-0.20200901115916-d898b826bf10 + github.com/irismod/token v1.1.1-0.20200901121217-d3aa04e760e3 github.com/jolestar/go-commons-pool v2.0.0+incompatible - github.com/tendermint/tendermint v0.32.8 + github.com/tendermint/tendermint v0.34.0-rc3 go.uber.org/zap v1.13.0 gopkg.in/mgo.v2 v2.0.0-20190816093944-a6b53ec6cb22 gopkg.in/natefinch/lumberjack.v2 v2.0.0 @@ -13,7 +19,6 @@ require ( ) replace ( - github.com/tendermint/iavl => github.com/irisnet/iavl v0.12.3 - github.com/tendermint/tendermint => github.com/irisnet/tendermint v0.32.1 - golang.org/x/crypto => github.com/tendermint/crypto v0.0.0-20180820045704-3764759f34a5 + github.com/cosmos/cosmos-sdk => github.com/irisnet/cosmos-sdk v0.34.4-0.20200901030027-1e0963031861 + github.com/gogo/protobuf => github.com/regen-network/protobuf v1.3.2-alpha.regen.4 ) diff --git a/go.sum b/go.sum index 3b4db34..f793a59 100644 --- a/go.sum +++ b/go.sum @@ -1,211 +1,771 @@ cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= +cloud.google.com/go v0.34.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= +cloud.google.com/go v0.38.0/go.mod h1:990N+gfupTy94rShfmMCWGDn0LpTmnzTp2qbd1dvSRU= +cloud.google.com/go v0.44.1/go.mod h1:iSa0KzasP4Uvy3f1mN/7PiObzGgflwredwwASm/v6AU= +cloud.google.com/go v0.44.2/go.mod h1:60680Gw3Yr4ikxnPRS/oxxkBccT6SA1yMk63TGekxKY= +cloud.google.com/go v0.45.1/go.mod h1:RpBamKRgapWJb87xiFSdk4g1CME7QZg3uwTez+TSTjc= +cloud.google.com/go v0.46.3/go.mod h1:a6bKKbmY7er1mI7TEI4lsAkts/mkhTSZK8w33B4RAg0= +cloud.google.com/go/bigquery v1.0.1/go.mod h1:i/xbL2UlR5RvWAURpBYZTtm/cXjCha9lbfbpx4poX+o= +cloud.google.com/go/datastore v1.0.0/go.mod h1:LXYbyblFSglQ5pkeyhO+Qmw7ukd3C+pD7TKLgZqpHYE= +cloud.google.com/go/firestore v1.1.0/go.mod h1:ulACoGHTpvq5r8rxGJ4ddJZBZqakUQqClKRT5SZwBmk= +cloud.google.com/go/pubsub v1.0.1/go.mod h1:R0Gpsv3s54REJCy4fxDixWD93lHJMoZTyQ2kNxGRt3I= +cloud.google.com/go/storage v1.0.0/go.mod h1:IhtSnM/ZTZV8YYJWCY8RULGVqBDmpoyjwiyrjsg+URw= +dmitri.shuralyov.com/gpu/mtl v0.0.0-20190408044501-666a987793e9/go.mod h1:H6x//7gZCb22OMCxBHrMx7a5I7Hp++hsVxbQ4BYO7hU= +github.com/99designs/keyring v1.1.5 h1:wLv7QyzYpFIyMSwOADq1CLTF9KbjbBfcnfmOGJ64aO4= +github.com/99designs/keyring v1.1.5/go.mod h1:7hsVvt2qXgtadGevGJ4ujg+u8m6SpJ5TpHqTozIPqf0= github.com/BurntSushi/toml v0.3.1 h1:WXkYYl6Yr3qBf1K79EBnL4mak0OimBfB0XUf9Vl28OQ= github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= +github.com/BurntSushi/xgb v0.0.0-20160522181843-27f122750802/go.mod h1:IVnqGOEym/WlBOVXweHU+Q+/VP0lqqI8lqeDx9IjBqo= +github.com/ChainSafe/go-schnorrkel v0.0.0-20200405005733-88cbf1b4c40d h1:nalkkPQcITbvhmL4+C4cKA87NW0tfm3Kl9VXRoPywFg= +github.com/ChainSafe/go-schnorrkel v0.0.0-20200405005733-88cbf1b4c40d/go.mod h1:URdX5+vg25ts3aCh8H5IFZybJYKWhJHYMTnf+ULtoC4= +github.com/DataDog/datadog-go v3.2.0+incompatible/go.mod h1:LButxg5PwREeZtORoXG3tL4fMGNddJ+vMq1mwgfaqoQ= +github.com/DataDog/zstd v1.4.1 h1:3oxKN3wbHibqx897utPC2LTQU4J+IHWWJO+glkAkpFM= +github.com/DataDog/zstd v1.4.1/go.mod h1:1jcaCB/ufaK+sKp1NBhlGmpz41jOoPQ35bpF36t7BBo= +github.com/Knetic/govaluate v3.0.1-0.20171022003610-9aa49832a739+incompatible/go.mod h1:r7JcOSlj0wfOMncg0iLm8Leh48TZaKVeNIfJntJ2wa0= +github.com/OneOfOne/xxhash v1.2.2/go.mod h1:HSdplMjZKSmBqAxg5vPj2TmRDmfkzw+cTzAElWljhcU= +github.com/Shopify/sarama v1.19.0/go.mod h1:FVkBWblsNy7DGZRfXLU0O9RCGt5g3g3yEuWXgklEdEo= +github.com/Shopify/toxiproxy v2.1.4+incompatible/go.mod h1:OXgGpZ6Cli1/URJOF1DMxUHB2q5Ap20/P/eIdh4G0pI= github.com/VividCortex/gohistogram v1.0.0/go.mod h1:Pf5mBqqDxYaXu3hDrrU+w6nw50o/4+TcAqDqk/vUH7g= +github.com/Workiva/go-datastructures v1.0.52/go.mod h1:Z+F2Rca0qCsVYDS8z7bAGm8f3UkzuWYS/oBZz5a7VVA= github.com/aead/siphash v1.0.1/go.mod h1:Nywa3cDsYNNK3gaciGTWPwHt0wlpNV15vwmswBAUSII= -github.com/bartekn/go-bip39 v0.0.0-20171116152956-a05967ea095d/go.mod h1:icNx/6QdFblhsEjZehARqbNumymUT/ydwlLojFdv7Sk= -github.com/beorn7/perks v0.0.0-20180321164747-3a771d992973 h1:xJ4a3vCFaGF/jqvzLMYoU8P317H5OQ+Via4RmuPwCS0= +github.com/afex/hystrix-go v0.0.0-20180502004556-fa1af6a1f4f5/go.mod h1:SkGFH1ia65gfNATL8TAiHDNxPzPdmEL5uirI2Uyuz6c= +github.com/alecthomas/template v0.0.0-20160405071501-a0175ee3bccc/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc= +github.com/alecthomas/template v0.0.0-20190718012654-fb15b899a751/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc= +github.com/alecthomas/units v0.0.0-20151022065526-2efee857e7cf/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0= +github.com/alecthomas/units v0.0.0-20190717042225-c3de453c63f4/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0= +github.com/alecthomas/units v0.0.0-20190924025748-f65c72e2690d/go.mod h1:rBZYJk541a8SKzHPHnH3zbiI+7dagKZ0cgpgrD7Fyho= +github.com/antihax/optional v1.0.0/go.mod h1:uupD/76wgC+ih3iEmQUL+0Ugr19nfwCT1kdvxnR2qWY= +github.com/apache/thrift v0.12.0/go.mod h1:cp2SuWMxlEZw2r+iP2GNCdIi4C1qmUzdZFSVb+bacwQ= +github.com/apache/thrift v0.13.0/go.mod h1:cp2SuWMxlEZw2r+iP2GNCdIi4C1qmUzdZFSVb+bacwQ= +github.com/armon/circbuf v0.0.0-20150827004946-bbbad097214e/go.mod h1:3U/XgcO3hCbHZ8TKRvWD2dDTCfh9M9ya+I9JpbB7O8o= +github.com/armon/consul-api v0.0.0-20180202201655-eb2c6b5be1b6/go.mod h1:grANhF5doyWs3UAsr3K4I6qtAmlQcZDesFNEHPZAzj8= +github.com/armon/go-metrics v0.0.0-20180917152333-f0300d1749da/go.mod h1:Q73ZrmVTwzkszR9V5SSuryQ31EELlFMUz1kKyl939pY= +github.com/armon/go-metrics v0.3.4 h1:Xqf+7f2Vhl9tsqDYmXhnXInUdcrtgpRNpIA15/uldSc= +github.com/armon/go-metrics v0.3.4/go.mod h1:4O98XIr/9W0sxpJ8UaYkvjk10Iff7SnFrb4QAOwNTFc= +github.com/armon/go-radix v0.0.0-20180808171621-7fddfc383310/go.mod h1:ufUuZ+zHj4x4TnLV4JWEpy2hxWSpsRywHrMgIH9cCH8= +github.com/aryann/difflib v0.0.0-20170710044230-e206f873d14a/go.mod h1:DAHtR1m6lCRdSC2Tm3DSWRPvIPr6xNKyeHdqDQSQT+A= +github.com/aws/aws-lambda-go v1.13.3/go.mod h1:4UKl9IzQMoD+QF79YdCuzCwp8VbmG4VAQwij/eHl5CU= +github.com/aws/aws-sdk-go v1.27.0/go.mod h1:KmX6BPdI08NWTb3/sm4ZGu5ShLoqVDhKgpiN924inxo= +github.com/aws/aws-sdk-go-v2 v0.18.0/go.mod h1:JWVYvqSMppoMJC0x5wdwiImzgXTI9FuZwxzkQq9wy+g= github.com/beorn7/perks v0.0.0-20180321164747-3a771d992973/go.mod h1:Dwedo/Wpr24TaqPxmxbtue+5NUziq4I4S80YR8gNf3Q= +github.com/beorn7/perks v1.0.0/go.mod h1:KWe93zE9D1o94FZ5RNwFwVgaQK1VOXiVxmqh+CedLV8= +github.com/beorn7/perks v1.0.1 h1:VlbKKnNfV8bJzeqoa4cOKqO6bYr3WgKZxO8Z16+hsOM= +github.com/beorn7/perks v1.0.1/go.mod h1:G2ZrVWU2WbWT9wwq4/hrbKbnv/1ERSJQ0ibhJ6rlkpw= github.com/bgentry/speakeasy v0.1.0 h1:ByYyxL9InA1OWqxJqqp2A5pYHUrCiAL6K3J+LKSsQkY= github.com/bgentry/speakeasy v0.1.0/go.mod h1:+zsyZBPWlz7T6j88CTgSN5bM796AkVf0kBD4zp0CCIs= -github.com/btcsuite/btcd v0.0.0-20190115013929-ed77733ec07d h1:xG8Pj6Y6J760xwETNmMzmlt38QSwz0BLp1cZ09g27uw= +github.com/bketelsen/crypt v0.0.3-0.20200106085610-5cbc8cc4026c/go.mod h1:MKsuJmJgSg28kpZDP6UIiPt0e0Oz0kqKNGyRaWEPv84= github.com/btcsuite/btcd v0.0.0-20190115013929-ed77733ec07d/go.mod h1:d3C0AkH6BRcvO8T0UEPu53cnw4IbV63x1bEjildYhO0= +github.com/btcsuite/btcd v0.20.1-beta h1:Ik4hyJqN8Jfyv3S4AGBOmyouMsYE3EdYODkMbQjwPGw= +github.com/btcsuite/btcd v0.20.1-beta/go.mod h1:wVuoA8VJLEcwgqHBwHmzLRazpKxTv13Px/pDuV7OomQ= github.com/btcsuite/btclog v0.0.0-20170628155309-84c8d2346e9f/go.mod h1:TdznJufoqS23FtqVCzL0ZqgP5MqXbb4fg/WgDys70nA= -github.com/btcsuite/btcutil v0.0.0-20180524032703-d4cc87b86016/go.mod h1:+5NJ2+qvTyV9exUAL/rxXi3DcLg2Ts+ymUAY5y4NvMg= -github.com/btcsuite/btcutil v0.0.0-20180706230648-ab6388e0c60a h1:RQMUrEILyYJEoAT34XS/kLu40vC0+po/UfxrBBA4qZE= github.com/btcsuite/btcutil v0.0.0-20180706230648-ab6388e0c60a/go.mod h1:+5NJ2+qvTyV9exUAL/rxXi3DcLg2Ts+ymUAY5y4NvMg= +github.com/btcsuite/btcutil v0.0.0-20190425235716-9e5f4b9a998d/go.mod h1:+5NJ2+qvTyV9exUAL/rxXi3DcLg2Ts+ymUAY5y4NvMg= +github.com/btcsuite/btcutil v1.0.2/go.mod h1:j9HUFwoQRsZL3V4n+qG+CUnEGHOarIxfC3Le2Yhbcts= github.com/btcsuite/go-socks v0.0.0-20170105172521-4720035b7bfd/go.mod h1:HHNXQzUsZCxOoE+CPiyCTO6x34Zs86zZUiwtpXoGdtg= github.com/btcsuite/goleveldb v0.0.0-20160330041536-7834afc9e8cd/go.mod h1:F+uVaaLLH7j4eDXPRvw78tMflu7Ie2bzYOH4Y8rRKBY= github.com/btcsuite/snappy-go v0.0.0-20151229074030-0bdef8d06723/go.mod h1:8woku9dyThutzjeg+3xrA5iCpBRH8XEEg3lh6TiUghc= github.com/btcsuite/websocket v0.0.0-20150119174127-31079b680792/go.mod h1:ghJtEyQwv5/p4Mg4C0fgbePVuGr935/5ddU9Z3TmDRY= github.com/btcsuite/winsvc v1.0.0/go.mod h1:jsenWakMcC0zFBFurPLEAyrnc/teJEM1O46fmI40EZs= +github.com/casbin/casbin/v2 v2.1.2/go.mod h1:YcPU1XXisHhLzuxH9coDNf2FbKpjGlbCg3n9yuLkIJQ= +github.com/cenkalti/backoff v2.2.1+incompatible/go.mod h1:90ReRw6GdpyfrHakVjL/QHaoyV4aDUVVkXQJJJ3NXXM= +github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= +github.com/cespare/xxhash v1.1.0 h1:a6HrQnmkObjyL+Gs60czilIUGqrzKutQD6XZog3p+ko= +github.com/cespare/xxhash v1.1.0/go.mod h1:XrSqR1VqqWfGrhpAt58auRo0WTKS1nRRg3ghfAqPWnc= +github.com/cespare/xxhash/v2 v2.1.1 h1:6MnRN8NT7+YBpUIWxHtefFZOKTAPgGjpQSxqLNn0+qY= +github.com/cespare/xxhash/v2 v2.1.1/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= +github.com/circonus-labs/circonus-gometrics v2.3.1+incompatible/go.mod h1:nmEj6Dob7S7YxXgwXpfOuvO54S+tGdZdw9fuRZt25Ag= +github.com/circonus-labs/circonusllhist v0.1.3/go.mod h1:kMXHVDlOchFAehlya5ePtbp5jckzBHf4XRpQvBOLI+I= +github.com/clbanning/x2j v0.0.0-20191024224557-825249438eec/go.mod h1:jMjuTZXRI4dUb/I5gc9Hdhagfvm9+RyrPryS/auMzxE= github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw= -github.com/cosmos/go-bip39 v0.0.0-20180618194314-52158e4697b8 h1:Iwin12wRQtyZhH6FV3ykFcdGNlYEzoeR0jN8Vn+JWsI= -github.com/cosmos/go-bip39 v0.0.0-20180618194314-52158e4697b8/go.mod h1:tSxLoYXyBmiFeKpvmq4dzayMdCjCnu8uqmCysIGBT2Y= -github.com/cosmos/ledger-cosmos-go v0.10.3 h1:Qhi5yTR5Pg1CaTpd00pxlGwNl4sFRdtK1J96OTjeFFc= -github.com/cosmos/ledger-cosmos-go v0.10.3/go.mod h1:J8//BsAGTo3OC/vDLjMRFLW6q0WAaXvHnVc7ZmE8iUY= +github.com/cncf/udpa/go v0.0.0-20191209042840-269d4d468f6f/go.mod h1:M8M6+tZqaGXZJjfX53e64911xZQV5JYwmTeXPW+k8Sc= +github.com/cockroachdb/datadriven v0.0.0-20190809214429-80d97fb3cbaa/go.mod h1:zn76sxSg3SzpJ0PPJaLDCu+Bu0Lg3sKTORVIj19EIF8= +github.com/codahale/hdrhistogram v0.0.0-20161010025455-3a0bb77429bd/go.mod h1:sE/e/2PUdi/liOCUjSTXgM1o87ZssimdTWN964YiIeI= +github.com/confio/ics23/go v0.0.0-20200610201322-18c7bd6b2dd3/go.mod h1:W1I3XC8d9N8OTu/ct5VJ84ylcOunZwMXsWkd27nvVts= +github.com/confio/ics23/go v0.0.0-20200804135932-65ad804e8539 h1:4AuX7KNUVdNa/am9yCQRqWMfdDJ86EtFJk/xwf6ntgc= +github.com/confio/ics23/go v0.0.0-20200804135932-65ad804e8539/go.mod h1:E45NqnlpxGnpfTWL/xauN7MRwEE28T4Dd4uraToOaKg= +github.com/coreos/bbolt v1.3.2/go.mod h1:iRUV2dpdMOn7Bo10OQBFzIJO9kkE559Wcmn+qkEiiKk= +github.com/coreos/etcd v3.3.10+incompatible/go.mod h1:uF7uidLiAD3TWHmW31ZFd/JWoc32PjwdhPthX9715RE= +github.com/coreos/etcd v3.3.13+incompatible/go.mod h1:uF7uidLiAD3TWHmW31ZFd/JWoc32PjwdhPthX9715RE= +github.com/coreos/go-etcd v2.0.0+incompatible/go.mod h1:Jez6KQU2B/sWsbdaef3ED8NzMklzPG4d5KIOhIy30Tk= +github.com/coreos/go-semver v0.2.0/go.mod h1:nnelYz7RCh+5ahJtPPxZlU+153eP4D4r3EedlOD2RNk= +github.com/coreos/go-semver v0.3.0/go.mod h1:nnelYz7RCh+5ahJtPPxZlU+153eP4D4r3EedlOD2RNk= +github.com/coreos/go-systemd v0.0.0-20180511133405-39ca1b05acc7/go.mod h1:F5haX7vjVVG0kc13fIWeqUViNPyEJxv/OmvnBo0Yme4= +github.com/coreos/go-systemd v0.0.0-20190321100706-95778dfbb74e/go.mod h1:F5haX7vjVVG0kc13fIWeqUViNPyEJxv/OmvnBo0Yme4= +github.com/coreos/pkg v0.0.0-20160727233714-3ac0863d7acf/go.mod h1:E3G3o1h8I7cfcXa63jLwjI0eiQQMgzzUDFVpN/nH/eA= +github.com/coreos/pkg v0.0.0-20180928190104-399ea9e2e55f/go.mod h1:E3G3o1h8I7cfcXa63jLwjI0eiQQMgzzUDFVpN/nH/eA= +github.com/cosmos/go-bip39 v0.0.0-20180819234021-555e2067c45d h1:49RLWk1j44Xu4fjHb6JFYmeUnDORVwHNkDxaQ0ctCVU= +github.com/cosmos/go-bip39 v0.0.0-20180819234021-555e2067c45d/go.mod h1:tSxLoYXyBmiFeKpvmq4dzayMdCjCnu8uqmCysIGBT2Y= +github.com/cosmos/iavl v0.15.0-rc2 h1:4HI/LYLjWUnou8dehPD+NqEsDc8uamJOU2yHcqdTKv8= +github.com/cosmos/iavl v0.15.0-rc2/go.mod h1:bXLXbwmww0kYtAYRCYNXR/k44lWaK8rIZJlCmqSK8lQ= +github.com/cosmos/ledger-cosmos-go v0.11.1 h1:9JIYsGnXP613pb2vPjFeMMjBI5lEDsEaF6oYorTy6J4= +github.com/cosmos/ledger-cosmos-go v0.11.1/go.mod h1:J8//BsAGTo3OC/vDLjMRFLW6q0WAaXvHnVc7ZmE8iUY= github.com/cosmos/ledger-go v0.9.2 h1:Nnao/dLwaVTk1Q5U9THldpUMMXU94BOTWPddSmVB6pI= github.com/cosmos/ledger-go v0.9.2/go.mod h1:oZJ2hHAZROdlHiwTg4t7kP+GKIIkBT+o6c9QWFanOyI= +github.com/cpuguy83/go-md2man v1.0.10/go.mod h1:SmD6nW6nTyfqj6ABTjUi3V3JVMnlJmwcJI5acqYI6dE= +github.com/cpuguy83/go-md2man/v2 v2.0.0-20190314233015-f79a8a8ca69d/go.mod h1:maD7wRr/U5Z6m/iR4s+kqSMx2CaBsrgA7czyZG/E6dU= +github.com/cpuguy83/go-md2man/v2 v2.0.0/go.mod h1:maD7wRr/U5Z6m/iR4s+kqSMx2CaBsrgA7czyZG/E6dU= +github.com/creack/pty v1.1.7/go.mod h1:lj5s0c3V2DBrqTV7llrYr5NG6My20zk30Fl46Y7DoTY= +github.com/danieljoos/wincred v1.0.2 h1:zf4bhty2iLuwgjgpraD2E9UbvO+fe54XXGJbOwe23fU= +github.com/danieljoos/wincred v1.0.2/go.mod h1:SnuYRW9lp1oJrZX/dXJqr0cPK5gYXqx3EJbmjhLdK9U= github.com/davecgh/go-spew v0.0.0-20171005155431-ecdeabc65495/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= -github.com/emicklei/proto v1.6.5 h1:HiOjyLb7plgNx11OAafETxIKZpHynl+wRSob6QRc9QA= -github.com/emicklei/proto v1.6.5/go.mod h1:Dqn751twH9SasYqvA59Lb9Hz+itoJgmMoivX6k7OPZc= -github.com/etcd-io/bbolt v1.3.3 h1:gSJmxrs37LgTqR/oyJBWok6k6SvXEUerFTbltIhXkBM= -github.com/etcd-io/bbolt v1.3.3/go.mod h1:ZF2nL25h33cCyBtcyWeZ2/I3HQOfTP+0PIEvHjkjCrw= -github.com/fortytw2/leaktest v1.2.0 h1:cj6GCiwJDH7l3tMHLjZDo0QqPtrXJiWSI9JgpeQKw+Q= -github.com/fortytw2/leaktest v1.2.0/go.mod h1:jDsjWgpAGjm2CA7WthBh/CdZYEPF31XHquHwclZch5g= +github.com/dgraph-io/badger/v2 v2.0.3 h1:inzdf6VF/NZ+tJ8RwwYMjJMvsOALTHYdozn0qSl6XJI= +github.com/dgraph-io/badger/v2 v2.0.3/go.mod h1:3KY8+bsP8wI0OEnQJAKpd4wIJW/Mm32yw2j/9FUVnIM= +github.com/dgraph-io/ristretto v0.0.2-0.20200115201040-8f368f2f2ab3 h1:MQLRM35Pp0yAyBYksjbj1nZI/w6eyRY/mWoM1sFf4kU= +github.com/dgraph-io/ristretto v0.0.2-0.20200115201040-8f368f2f2ab3/go.mod h1:KPxhHT9ZxKefz+PCeOGsrHpl1qZ7i70dGTu2u+Ahh6E= +github.com/dgrijalva/jwt-go v3.2.0+incompatible/go.mod h1:E3ru+11k8xSBh+hMPgOLZmtrrCbhqsmaPHjLKYnJCaQ= +github.com/dgryski/go-farm v0.0.0-20190423205320-6a90982ecee2 h1:tdlZCpZ/P9DhczCTSixgIKmwPv6+wP5DGjqLYw5SUiA= +github.com/dgryski/go-farm v0.0.0-20190423205320-6a90982ecee2/go.mod h1:SqUrOPUnsFjfmXRMNPybcSiG0BgUW2AuFH8PAnS2iTw= +github.com/dgryski/go-sip13 v0.0.0-20181026042036-e10d5fee7954/go.mod h1:vAd38F8PWV+bWy6jNmig1y/TA+kYO4g3RSRF0IAv0no= +github.com/dustin/go-humanize v0.0.0-20171111073723-bb3d318650d4/go.mod h1:HtrtbFcZ19U5GC7JDqmcUSB87Iq5E25KnS6fMYU6eOk= +github.com/dustin/go-humanize v1.0.0 h1:VSnTsYCnlFHaM2/igO1h6X3HA71jcobQuxemgkq4zYo= +github.com/dustin/go-humanize v1.0.0/go.mod h1:HtrtbFcZ19U5GC7JDqmcUSB87Iq5E25KnS6fMYU6eOk= +github.com/dvsekhvalnov/jose2go v0.0.0-20180829124132-7f401d37b68a h1:mq+R6XEM6lJX5VlLyZIrUSP8tSuJp82xTK89hvBwJbU= +github.com/dvsekhvalnov/jose2go v0.0.0-20180829124132-7f401d37b68a/go.mod h1:7BvyPhdbLxMXIYTFPLsyJRFMsKmOZnQmzh6Gb+uquuM= +github.com/eapache/go-resiliency v1.1.0/go.mod h1:kFI+JgMyC7bLPUVY133qvEBtVayf5mFgVsvEsIPBvNs= +github.com/eapache/go-xerial-snappy v0.0.0-20180814174437-776d5712da21/go.mod h1:+020luEh2TKB4/GOp8oxxtq0Daoen/Cii55CzbTV6DU= +github.com/eapache/queue v1.1.0/go.mod h1:6eCeP0CKFpHLu8blIFXhExK/dRa7WDZfr6jVFPTqq+I= +github.com/edsrzf/mmap-go v1.0.0/go.mod h1:YO35OhQPt3KJa3ryjFM5Bs14WD66h8eGKpfaBNrHW5M= +github.com/enigmampc/btcutil v1.0.3-0.20200723161021-e2fb6adb2a25 h1:2vLKys4RBU4pn2T/hjXMbvwTr1Cvy5THHrQkbeY9HRk= +github.com/enigmampc/btcutil v1.0.3-0.20200723161021-e2fb6adb2a25/go.mod h1:hTr8+TLQmkUkgcuh3mcr5fjrT9c64ZzsBCdCEC6UppY= +github.com/envoyproxy/go-control-plane v0.6.9/go.mod h1:SBwIajubJHhxtWwsL9s8ss4safvEdbitLhGGK48rN6g= +github.com/envoyproxy/go-control-plane v0.9.0/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= +github.com/envoyproxy/go-control-plane v0.9.1-0.20191026205805-5f8ba28d4473/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= +github.com/envoyproxy/go-control-plane v0.9.4/go.mod h1:6rpuAdCZL397s3pYoYcLgu1mIlRU8Am5FuJP05cCM98= +github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c= +github.com/facebookgo/ensure v0.0.0-20160127193407-b4ab57deab51/go.mod h1:Yg+htXGokKKdzcwhuNDwVvN+uBxDGXJ7G/VN1d8fa64= +github.com/facebookgo/stack v0.0.0-20160209184415-751773369052/go.mod h1:UbMTZqLaRiH3MsBH8va0n7s1pQYcu3uTb8G4tygF4Zg= +github.com/facebookgo/subset v0.0.0-20150612182917-8dac2c3c4870/go.mod h1:5tD+neXqOorC30/tWg0LCSkrqj/AR6gu8yY8/fpw1q0= +github.com/fatih/color v1.7.0/go.mod h1:Zm6kSWBoL9eyXnKyktHP6abPY2pDugNf5KwzbycvMj4= +github.com/felixge/httpsnoop v1.0.1/go.mod h1:m8KPJKqk1gH5J9DgRY2ASl2lWCfGKXixSwevea8zH2U= +github.com/fortytw2/leaktest v1.3.0/go.mod h1:jDsjWgpAGjm2CA7WthBh/CdZYEPF31XHquHwclZch5g= +github.com/franela/goblin v0.0.0-20200105215937-c9ffbefa60db/go.mod h1:7dvUGVsVBjqR7JHJk0brhHOZYGmfBYOrK0ZhYMEtBr4= +github.com/franela/goreq v0.0.0-20171204163338-bcd34c9993f8/go.mod h1:ZhphrRTfi2rbfLwlschooIH4+wKKDR4Pdxhh+TRoA20= github.com/fsnotify/fsnotify v1.4.7 h1:IXs+QLmnXW2CcXuY+8Mzv/fWEsPGWxqefPtCP5CnV9I= github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo= -github.com/go-kit/kit v0.6.0 h1:wTifptAGIyIuir4bRyN4h7+kAa2a4eepLYVmRe5qqQ8= -github.com/go-kit/kit v0.6.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as= +github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04= +github.com/go-gl/glfw v0.0.0-20190409004039-e6da0acd62b1/go.mod h1:vR7hzQXu2zJy9AVAgeJqvqgH9Q5CA+iKCZ2gyEVpxRU= +github.com/go-kit/kit v0.8.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as= +github.com/go-kit/kit v0.9.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as= +github.com/go-kit/kit v0.10.0 h1:dXFJfIHVvUcpSgDOV+Ne6t7jXri8Tfv2uOLHUZ2XNuo= +github.com/go-kit/kit v0.10.0/go.mod h1:xUsJbQ/Fp4kEt7AFgCuvyX4a71u8h9jB8tj/ORgOZ7o= github.com/go-logfmt/logfmt v0.3.0/go.mod h1:Qt1PoO58o5twSAckw1HlFXLmHsOX5/0LbT9GBnD5lWE= -github.com/go-logfmt/logfmt v0.4.0 h1:MP4Eh7ZCb31lleYCFuwm0oe4/YGak+5l1vA2NOE80nA= github.com/go-logfmt/logfmt v0.4.0/go.mod h1:3RMwSq7FuexP4Kalkev3ejPJsZTpXXBr9+V4qmtdjCk= -github.com/go-stack/stack v1.8.0 h1:5SgMzNM5HxrEjV0ww2lTmX6E2Izsfxas4+YHWRs3Lsk= +github.com/go-logfmt/logfmt v0.5.0 h1:TrB8swr/68K7m9CcGut2g3UOihhbcbiMAYiuTXdEih4= +github.com/go-logfmt/logfmt v0.5.0/go.mod h1:wCYkCAKZfumFQihp8CzCvQ3paCTfi41vtzG1KdI/P7A= +github.com/go-sql-driver/mysql v1.4.0/go.mod h1:zAC/RDZ24gD3HViQzih4MyKcchzm+sOG5ZlKdlhCg5w= github.com/go-stack/stack v1.8.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/melR3HDY= -github.com/gogo/protobuf v1.1.1 h1:72R+M5VuhED/KujmZVcIquuo8mBgX4oVda//DQb3PXo= -github.com/gogo/protobuf v1.1.1/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ= +github.com/godbus/dbus v0.0.0-20190726142602-4481cbc300e2 h1:ZpnhV/YsD2/4cESfV5+Hoeu/iUR3ruzNvZ+yQfO03a0= +github.com/godbus/dbus v0.0.0-20190726142602-4481cbc300e2/go.mod h1:bBOAhwG1umN6/6ZUMtDFBMQR8jRg9O75tm9K00oMsK4= +github.com/gogo/gateway v1.1.0/go.mod h1:S7rR8FRQyG3QFESeSv4l2WnsyzlCLG0CzBbUUo/mbic= +github.com/gogo/googleapis v1.1.0/go.mod h1:gf4bu3Q80BeJ6H1S1vYPm8/ELATdvryBaNFGgqEef3s= github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q= +github.com/golang/groupcache v0.0.0-20160516000752-02826c3e7903/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= +github.com/golang/groupcache v0.0.0-20190129154638-5b532d6fd5ef/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= +github.com/golang/groupcache v0.0.0-20190702054246-869f871628b6/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= github.com/golang/mock v1.1.1/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A= +github.com/golang/mock v1.2.0/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A= +github.com/golang/mock v1.3.1/go.mod h1:sBzyDLLjw3U8JLTeZvSv8jJB+tU5PVekmnlKIyFUx0Y= +github.com/golang/mock v1.4.4/go.mod h1:l3mdAwkq5BuhzHwde/uurv3sEJeZMXNpwsxVWU71h+4= github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= -github.com/golang/protobuf v1.3.2 h1:6nsPYzhq5kReh6QImI3k5qWzO4PEbvbIW2cwSfR/6xs= +github.com/golang/protobuf v1.3.0/go.mod h1:Qd/q+1AKNOZr9uGQzbzCmRO6sUih6GTPZv6a1/R87v0= +github.com/golang/protobuf v1.3.1/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= github.com/golang/protobuf v1.3.2/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= +github.com/golang/protobuf v1.3.3/go.mod h1:vzj43D7+SQXF/4pzW/hwtAqwc6iTitCiVSaWz5lYuqw= +github.com/golang/protobuf v1.3.5/go.mod h1:6O5/vntMXwX2lRkT1hjjk0nAC1IDOTvTlVgjlRvqsdk= +github.com/golang/protobuf v1.4.0-rc.1/go.mod h1:ceaxUfeHdC40wWswd/P6IGgMaK3YpKi5j83Wpe3EHw8= +github.com/golang/protobuf v1.4.0-rc.1.0.20200221234624-67d41d38c208/go.mod h1:xKAWHe0F5eneWXFV3EuXVDTCmh+JuBKY0li0aMyXATA= +github.com/golang/protobuf v1.4.0-rc.2/go.mod h1:LlEzMj4AhA7rCAGe4KMBDvJI+AwstrUpVNzEA03Pprs= +github.com/golang/protobuf v1.4.0-rc.4.0.20200313231945-b860323f09d0/go.mod h1:WU3c8KckQ9AFe+yFwt9sWVRKCVIyN9cPHBJSNnbL67w= +github.com/golang/protobuf v1.4.0/go.mod h1:jodUvKwWbYaEsadDk5Fwe5c77LiNKVO9IDvqG2KuDX0= +github.com/golang/protobuf v1.4.1/go.mod h1:U8fpvMrcmy5pZrNK1lt4xCsGvpyWQ/VVv6QDs8UjoX8= +github.com/golang/protobuf v1.4.2 h1:+Z5KGCizgyZCbGh1KZqA0fcLLkwbsjIzS4aV2v7wJX0= +github.com/golang/protobuf v1.4.2/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI= +github.com/golang/snappy v0.0.0-20180518054509-2e65f85255db/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= github.com/golang/snappy v0.0.1 h1:Qgr9rKW7uDUkrbSmQeiDsGa8SjGyCOGtuasMWwvp2P4= github.com/golang/snappy v0.0.1/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= +github.com/google/btree v0.0.0-20180813153112-4030bb1f1f0c/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= +github.com/google/btree v1.0.0 h1:0udJVsspx3VBr5FwtLhQQtuAsVc79tTq0ocGIPAU6qo= +github.com/google/btree v1.0.0/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M= +github.com/google/go-cmp v0.3.0/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= +github.com/google/go-cmp v0.3.1/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= +github.com/google/go-cmp v0.4.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/go-cmp v0.5.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/gofuzz v0.0.0-20170612174753-24818f796faf/go.mod h1:HP5RmnzzSNb993RKQDq4+1A4ia9nllfqcQFTQJedwGI= github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= +github.com/google/martian v2.1.0+incompatible/go.mod h1:9I4somxYTbIHy5NJKHRl3wXiIaQGbYVAs8BPL6v8lEs= +github.com/google/pprof v0.0.0-20181206194817-3ea8567a2e57/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc= +github.com/google/pprof v0.0.0-20190515194954-54271f7e092f/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc= github.com/google/renameio v0.1.0/go.mod h1:KWCgfxg9yswjAJkECMjeO8J8rahYeXnNhOm40UhjYkI= +github.com/google/uuid v1.0.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= +github.com/googleapis/gax-go/v2 v2.0.4/go.mod h1:0Wqv26UfaUD9n4G6kQubkQ+KchISgw+vpHVxEJEs9eg= +github.com/googleapis/gax-go/v2 v2.0.5/go.mod h1:DWXyrwAJ9X0FpwwEdw+IPEYBICEFu5mhpdKc/us6bOk= +github.com/gopherjs/gopherjs v0.0.0-20181017120253-0766667cb4d1/go.mod h1:wJfORRmW1u3UXTncJ5qlYoELFm8eSnnEO6hX4iZ3EWY= github.com/gorilla/context v1.1.1/go.mod h1:kBGZzfjB9CEq2AlWe17Uuf7NDRt0dE0s8S51q0aT7Yg= +github.com/gorilla/handlers v1.5.0/go.mod h1:t8XrUpc4KVXb7HGyJ4/cEnwQiaxrX/hz1Zv/4g96P1Q= github.com/gorilla/mux v1.6.2/go.mod h1:1lud6UwP+6orDFRuTfBEV8e9/aOM/c4fVVCaMa2zaAs= -github.com/gorilla/websocket v1.2.0 h1:VJtLvh6VQym50czpZzx07z/kw9EgAxI3x1ZB8taTMQQ= -github.com/gorilla/websocket v1.2.0/go.mod h1:E7qHFY5m1UJ88s3WnNqhKjPHQ0heANvMoAMk2YaljkQ= +github.com/gorilla/mux v1.7.3/go.mod h1:1lud6UwP+6orDFRuTfBEV8e9/aOM/c4fVVCaMa2zaAs= +github.com/gorilla/mux v1.8.0 h1:i40aqfkR1h2SlN9hojwV5ZA91wcXFOvkdNIeFDP5koI= +github.com/gorilla/mux v1.8.0/go.mod h1:DVbg23sWSpFRCP0SfiEN6jmj59UnW/n46BH5rLB71So= +github.com/gorilla/websocket v0.0.0-20170926233335-4201258b820c/go.mod h1:E7qHFY5m1UJ88s3WnNqhKjPHQ0heANvMoAMk2YaljkQ= +github.com/gorilla/websocket v1.4.0/go.mod h1:E7qHFY5m1UJ88s3WnNqhKjPHQ0heANvMoAMk2YaljkQ= +github.com/gorilla/websocket v1.4.2 h1:+/TMaTYc4QFitKJxsQ7Yye35DkWvkdLcvGKqM+x0Ufc= +github.com/gorilla/websocket v1.4.2/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE= +github.com/grpc-ecosystem/go-grpc-middleware v1.0.0/go.mod h1:FiyG127CGDf3tlThmgyCl78X/SZQqEOJBCDaAfeWzPs= +github.com/grpc-ecosystem/go-grpc-middleware v1.0.1-0.20190118093823-f849b5445de4/go.mod h1:FiyG127CGDf3tlThmgyCl78X/SZQqEOJBCDaAfeWzPs= +github.com/grpc-ecosystem/go-grpc-prometheus v1.2.0/go.mod h1:8NvIoxWQoOIhqOTXgfV/d3M/q6VIi02HzZEHgUlZvzk= +github.com/grpc-ecosystem/grpc-gateway v1.8.5/go.mod h1:vNeuVxBJEsws4ogUvrchl83t/GYV9WGTSLVdBhOQFDY= +github.com/grpc-ecosystem/grpc-gateway v1.9.0/go.mod h1:vNeuVxBJEsws4ogUvrchl83t/GYV9WGTSLVdBhOQFDY= +github.com/grpc-ecosystem/grpc-gateway v1.9.5/go.mod h1:vNeuVxBJEsws4ogUvrchl83t/GYV9WGTSLVdBhOQFDY= +github.com/grpc-ecosystem/grpc-gateway v1.14.7 h1:Nk5kuHrnWUTf/0GL1a/vchH/om9Ap2/HnVna+jYZgTY= +github.com/grpc-ecosystem/grpc-gateway v1.14.7/go.mod h1:oYZKL012gGh6LMyg/xA7Q2yq6j8bu0wa+9w14EEthWU= +github.com/gsterjov/go-libsecret v0.0.0-20161001094733-a6f4afe4910c h1:6rhixN/i8ZofjG1Y75iExal34USq5p+wiN1tpie8IrU= +github.com/gsterjov/go-libsecret v0.0.0-20161001094733-a6f4afe4910c/go.mod h1:NMPJylDgVpX0MLRlPy15sqSwOFv/U1GZ2m21JhFfek0= +github.com/gtank/merlin v0.1.1-0.20191105220539-8318aed1a79f/go.mod h1:T86dnYJhcGOh5BjZFCJWTDeTK7XW8uE+E21Cy/bIQ+s= +github.com/gtank/merlin v0.1.1 h1:eQ90iG7K9pOhtereWsmyRJ6RAwcP4tHTDBHXNg+u5is= +github.com/gtank/merlin v0.1.1/go.mod h1:T86dnYJhcGOh5BjZFCJWTDeTK7XW8uE+E21Cy/bIQ+s= +github.com/gtank/ristretto255 v0.1.2 h1:JEqUCPA1NvLq5DwYtuzigd7ss8fwbYay9fi4/5uMzcc= +github.com/gtank/ristretto255 v0.1.2/go.mod h1:Ph5OpO6c7xKUGROZfWVLiJf9icMDwUeIvY4OmlYW69o= +github.com/hashicorp/consul/api v1.1.0/go.mod h1:VmuI/Lkw1nC05EYQWNKwWGbkg+FbDBtguAZLlVdkD9Q= +github.com/hashicorp/consul/api v1.3.0/go.mod h1:MmDNSzIMUjNpY/mQ398R4bk2FnqQLoPndWW5VkKPlCE= +github.com/hashicorp/consul/sdk v0.1.1/go.mod h1:VKf9jXwCTEY1QZP2MOLRhb5i/I/ssyNV1vwHyQBF0x8= +github.com/hashicorp/consul/sdk v0.3.0/go.mod h1:VKf9jXwCTEY1QZP2MOLRhb5i/I/ssyNV1vwHyQBF0x8= +github.com/hashicorp/errwrap v1.0.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4= +github.com/hashicorp/go-cleanhttp v0.5.0/go.mod h1:JpRdi6/HCYpAwUzNwuwqhbovhLtngrth3wmdIIUrZ80= +github.com/hashicorp/go-cleanhttp v0.5.1/go.mod h1:JpRdi6/HCYpAwUzNwuwqhbovhLtngrth3wmdIIUrZ80= +github.com/hashicorp/go-immutable-radix v1.0.0 h1:AKDB1HM5PWEA7i4nhcpwOrO2byshxBjXVn/J/3+z5/0= +github.com/hashicorp/go-immutable-radix v1.0.0/go.mod h1:0y9vanUI8NX6FsYoO3zeMjhV/C5i9g4Q3DwcSNZ4P60= +github.com/hashicorp/go-msgpack v0.5.3/go.mod h1:ahLV/dePpqEmjfWmKiqvPkv/twdG7iPBM1vqhUKIvfM= +github.com/hashicorp/go-multierror v1.0.0/go.mod h1:dHtQlpGsu+cZNNAkkCN/P3hoUDHhCYQXV3UM06sGGrk= +github.com/hashicorp/go-retryablehttp v0.5.3/go.mod h1:9B5zBasrRhHXnJnui7y6sL7es7NDiJgTc6Er0maI1Xs= +github.com/hashicorp/go-rootcerts v1.0.0/go.mod h1:K6zTfqpRlCUIjkwsN4Z+hiSfzSTQa6eBIzfwKfwNnHU= +github.com/hashicorp/go-sockaddr v1.0.0/go.mod h1:7Xibr9yA9JjQq1JpNB2Vw7kxv8xerXegt+ozgdvDeDU= +github.com/hashicorp/go-syslog v1.0.0/go.mod h1:qPfqrKkXGihmCqbJM2mZgkZGvKG1dFdvsLplgctolz4= +github.com/hashicorp/go-uuid v1.0.0/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro= +github.com/hashicorp/go-uuid v1.0.1/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro= +github.com/hashicorp/go-version v1.2.0/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA= +github.com/hashicorp/go.net v0.0.1/go.mod h1:hjKkEWcCURg++eb33jQU7oqQcI9XDCnUzHA0oac0k90= +github.com/hashicorp/golang-lru v0.5.0/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= +github.com/hashicorp/golang-lru v0.5.1/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= +github.com/hashicorp/golang-lru v0.5.4 h1:YDjusn29QI/Das2iO9M0BHnIbxPeyuCHsjMW+lJfyTc= +github.com/hashicorp/golang-lru v0.5.4/go.mod h1:iADmTwqILo4mZ8BN3D2Q6+9jd8WM5uGBxy+E8yxSoD4= github.com/hashicorp/hcl v1.0.0 h1:0Anlzjpi4vEasTeNFn2mLJgTSwt0+6sfsiTG8qcWGx4= github.com/hashicorp/hcl v1.0.0/go.mod h1:E5yfLk+7swimpb2L/Alb/PJmXilQ/rhwaUYs4T20WEQ= +github.com/hashicorp/logutils v1.0.0/go.mod h1:QIAnNjmIWmVIIkWDTG1z5v++HQmx9WQRO+LraFDTW64= +github.com/hashicorp/mdns v1.0.0/go.mod h1:tL+uN++7HEJ6SQLQ2/p+z2pH24WQKWjBPkE0mNTz8vQ= +github.com/hashicorp/memberlist v0.1.3/go.mod h1:ajVTdAv/9Im8oMAAj5G31PhhMCZJV2pPBoIllUwCN7I= +github.com/hashicorp/serf v0.8.2/go.mod h1:6hOLApaqBFA1NXqRQAsxw9QxuDEvNxSQRwA/JwenrHc= github.com/hpcloud/tail v1.0.0/go.mod h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpOxQnU= +github.com/hudl/fargo v1.3.0/go.mod h1:y3CKSmjA+wD2gak7sUSXTAoopbhU08POFhmITJgmKTg= github.com/inconshreveable/mousetrap v1.0.0 h1:Z8tu5sraLXCXIcARxBp/8cbvlwVa7Z1NHg9XEKhtSvM= github.com/inconshreveable/mousetrap v1.0.0/go.mod h1:PxqpIevigyE2G7u3NXJIT2ANytuPF1OarO4DADm73n8= -github.com/irisnet/iavl v0.12.3 h1:AYqI1q/EVAOCWznYx4FtEZIq8x9yPBs9ZA/Rk3zsTDo= -github.com/irisnet/iavl v0.12.3/go.mod h1:qofGh9236iFgVez+gPk7bC+ef5wCw7aIMvAVBK3lT84= -github.com/irisnet/irishub v0.16.0 h1:Xuvynxz2TsrTsBym3HAcbleogqR4GXP+NUxW25JJcmk= -github.com/irisnet/irishub v0.16.0/go.mod h1:S6Y1vyjutENBFt7mS8UTh6L+91TpenYtmfu0KtND9I8= -github.com/irisnet/tendermint v0.32.1 h1:INUYX36ZDUozg22WdAhtrjsWAqUqVVM4Q3nCRRBd1NM= -github.com/irisnet/tendermint v0.32.1/go.mod h1:36RAXv6V/Ar3H6ofEtmtxU2u80tYRdQh1z51gxoG9Nk= +github.com/influxdata/influxdb1-client v0.0.0-20191209144304-8bf82d3c094d/go.mod h1:qj24IKcXYK6Iy9ceXlo3Tc+vtHo9lIhSX5JddghvEPo= +github.com/irismod/coinswap v0.0.0-20200901103745-f38672ac63ec h1:wcYq2UgKpIxCYSvtB9/NDFUfZ9n1I8WqdCzlvZzPnHg= +github.com/irismod/coinswap v0.0.0-20200901103745-f38672ac63ec/go.mod h1:3la+nTlqlISVLQTt9+kC4hBIvFe5J1VuJvOne9Zes7c= +github.com/irismod/htlc v0.0.0-20200901103718-c3bf89708dce h1:4+oBsP9xtUBiH77X/rFZRLA1Xy63q+dSyVl7hgVIVYI= +github.com/irismod/htlc v0.0.0-20200901103718-c3bf89708dce/go.mod h1:bP5l2IbAVZAZXPrQmXrghEgWpyakNJfeoxmPq0d1SI8= +github.com/irismod/nft v1.1.1-0.20200827095318-d16861212579 h1:UJQlLX7dGxp/WFm/Z5Rp1Ja3O/CY7qup9c1lEuVKX0Q= +github.com/irismod/nft v1.1.1-0.20200827095318-d16861212579/go.mod h1:l9EvpP0UKDYrmT/MRWM2FrmKpfYZJWbDR9srG7fylzA= +github.com/irismod/record v1.1.1-0.20200827095301-3e27fc43ae73 h1:DjsV6syYu1na1O0w3hlfAROOUPOCJCIPegJTMQt3X0U= +github.com/irismod/record v1.1.1-0.20200827095301-3e27fc43ae73/go.mod h1:slwVI+gGuBJo1OJPv0vw/GFeRPs9KB8K+0aecfmGSps= +github.com/irismod/service v1.1.1-0.20200901115916-d898b826bf10 h1:4j83EDZdLFUL4BHJUQBV24jjVEm+gET0acx3axVlhE0= +github.com/irismod/service v1.1.1-0.20200901115916-d898b826bf10/go.mod h1:ID4dmeafXHw8pFLDynH7l4mGIXetd5jrtFmY4qnxpHU= +github.com/irismod/token v1.1.1-0.20200901121217-d3aa04e760e3 h1:vt4wkKr7Qy4fTc2wETWpogi4uD22CQG0f6l2Dx+XPdY= +github.com/irismod/token v1.1.1-0.20200901121217-d3aa04e760e3/go.mod h1:hOxUjOsE1biJa8ReBzY58rz3ZJeglth+HbU2iftcZik= +github.com/irisnet/cosmos-sdk v0.34.4-0.20200901030027-1e0963031861 h1:qXtnE0CQDHSspuPY9VveN8EFCP8JUK6cFxXjF4w1Sds= +github.com/irisnet/cosmos-sdk v0.34.4-0.20200901030027-1e0963031861/go.mod h1:HXb9uKlB4sR4BFP32aSboY1Se4QhbFbYcJN6Dexil2U= github.com/jessevdk/go-flags v0.0.0-20141203071132-1679536dcc89/go.mod h1:4FA24M0QyGHXBuZZK/XkWh8h0e1EYbRYJSGM75WSRxI= +github.com/jmespath/go-jmespath v0.0.0-20180206201540-c2b33e8439af/go.mod h1:Nht3zPeWKUH0NzdCt2Blrr5ys8VGpn0CEB0cQHVjt7k= github.com/jmhodges/levigo v1.0.0 h1:q5EC36kV79HWeTBWsod3mG11EgStG3qArTKcvlksN1U= github.com/jmhodges/levigo v1.0.0/go.mod h1:Q6Qx+uH3RAqyK4rFQroq9RL7mdkABMcfhEI+nNuzMJQ= github.com/jolestar/go-commons-pool v2.0.0+incompatible h1:uHn5uRKsLLQSf9f1J5QPY2xREWx/YH+e4bIIXcAuAaE= github.com/jolestar/go-commons-pool v2.0.0+incompatible/go.mod h1:ChJYIbIch0DMCSU6VU0t0xhPoWDR2mMFIQek3XWU0s8= +github.com/jonboulle/clockwork v0.1.0/go.mod h1:Ii8DK3G1RaLaWxj9trq07+26W01tbo22gdxWY5EU2bo= +github.com/jpillora/backoff v1.0.0/go.mod h1:J/6gKK9jxlEcS3zixgDgUAsiuZ7yrSoa/FX5e0EB2j4= github.com/jrick/logrotate v1.0.0/go.mod h1:LNinyqDIJnpAur+b8yyulnQw/wDuN1+BYKlTRt3OuAQ= +github.com/json-iterator/go v1.1.6/go.mod h1:+SdeFBvtyEkXs7REEP0seUULqWtbJapLOCVDaaPEHmU= +github.com/json-iterator/go v1.1.7/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= +github.com/json-iterator/go v1.1.8/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= +github.com/json-iterator/go v1.1.9/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= +github.com/json-iterator/go v1.1.10/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= +github.com/jstemmer/go-junit-report v0.0.0-20190106144839-af01ea7f8024/go.mod h1:6v2b51hI/fHJwM22ozAgKL4VKDeJcHhJFhtBdhmNjmU= +github.com/jtolds/gls v4.20.0+incompatible/go.mod h1:QJZ7F/aHp+rZTRtaJ1ow/lLfFfVYBRgL+9YlvaHOwJU= +github.com/julienschmidt/httprouter v1.2.0/go.mod h1:SYymIcj16QtmaHHD7aYtjjsJG7VTCxuUUipMqKk8s4w= +github.com/julienschmidt/httprouter v1.3.0/go.mod h1:JR6WtHb+2LUe8TCKY3cZOxFyyO8IZAc4RVcycCCAKdM= +github.com/keybase/go-keychain v0.0.0-20190712205309-48d3d31d256d h1:Z+RDyXzjKE0i2sTjZ/b1uxiGtPhFy34Ou/Tk0qwN0kM= +github.com/keybase/go-keychain v0.0.0-20190712205309-48d3d31d256d/go.mod h1:JJNrCn9otv/2QP4D7SMJBgaleKpOf66PnW6F5WGNRIc= +github.com/kisielk/errcheck v1.2.0/go.mod h1:/BMXB+zMLi60iA8Vv6Ksmxu/1UDYcXs4uQLJ+jE2L00= github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= github.com/kkdai/bstream v0.0.0-20161212061736-f391b8402d23/go.mod h1:J+Gs4SYgM6CZQHDETBtE9HaSEkGmuNXF86RwHhHUvq4= -github.com/kr/logfmt v0.0.0-20140226030751-b84e30acd515 h1:T+h1c/A9Gawja4Y9mFVWj2vyii2bbUNDw3kt9VxK2EY= +github.com/kkdai/bstream v1.0.0/go.mod h1:FDnDOHt5Yx4p3FaHcioFT0QjDOtgUpvjeZqAs+NVZZA= +github.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= +github.com/konsorten/go-windows-terminal-sequences v1.0.3/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= github.com/kr/logfmt v0.0.0-20140226030751-b84e30acd515/go.mod h1:+0opPa2QZZtGFBFZlji/RkVcI2GknAs/DXo4wKdlNEc= -github.com/kr/pretty v0.1.0 h1:L/CwN0zerZDmRFUapSPitk6f+Q3+0za1rQkzVuMiMFI= github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo= github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= -github.com/kr/text v0.1.0 h1:45sCR5RtlFHMR4UwH9sdQ5TC8v0qDQCHnXt+kaKSTVE= github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= github.com/libp2p/go-buffer-pool v0.0.2 h1:QNK2iAFa8gjAe1SPz6mHSMuCcjs+X1wlHzeOSqcmlfs= github.com/libp2p/go-buffer-pool v0.0.2/go.mod h1:MvaB6xw5vOrDl8rYZGLFdKAuk/hRoRZd1Vi32+RXyFM= -github.com/magiconair/properties v1.8.0 h1:LLgXmsheXeRoUOBOjtwPQCWIYqM/LU1ayDtDePerRcY= +github.com/lightstep/lightstep-tracer-common/golang/gogo v0.0.0-20190605223551-bc2310a04743/go.mod h1:qklhhLq1aX+mtWk9cPHPzaBjWImj5ULL6C7HFJtXQMM= +github.com/lightstep/lightstep-tracer-go v0.18.1/go.mod h1:jlF1pusYV4pidLvZ+XD0UBX0ZE6WURAspgAczcDHrL4= +github.com/lyft/protoc-gen-validate v0.0.13/go.mod h1:XbGvPuh87YZc5TdIa2/I4pLk0QoUACkjt2znoq26NVQ= github.com/magiconair/properties v1.8.0/go.mod h1:PppfXfuXeibc/6YijjN8zIbojt8czPbwD3XqdrwzmxQ= -github.com/mattn/go-isatty v0.0.4 h1:bnP0vzxcAdeI1zdubAl5PjU6zsERjGZb7raWodagDYs= +github.com/magiconair/properties v1.8.1 h1:ZC2Vc7/ZFkGmsVC9KvOjumD+G5lXy2RtTKyzRKO2BQ4= +github.com/magiconair/properties v1.8.1/go.mod h1:PppfXfuXeibc/6YijjN8zIbojt8czPbwD3XqdrwzmxQ= +github.com/mattn/go-colorable v0.0.9/go.mod h1:9vuHe8Xs5qXnSaW/c/ABM9alt+Vo+STaOChaDxuIBZU= +github.com/mattn/go-isatty v0.0.3/go.mod h1:M+lRXTBqGeGNdLjl/ufCoiOlB5xdOkqRJdNxMWT7Zi4= github.com/mattn/go-isatty v0.0.4/go.mod h1:M+lRXTBqGeGNdLjl/ufCoiOlB5xdOkqRJdNxMWT7Zi4= +github.com/mattn/go-isatty v0.0.12 h1:wuysRhFDzyxgEmMf5xjvJ2M9dZoWAXNNr5LSBS7uHXY= +github.com/mattn/go-isatty v0.0.12/go.mod h1:cbi8OIDigv2wuxKPP5vlRcQ1OAZbq2CE4Kysco4FUpU= +github.com/mattn/go-runewidth v0.0.2/go.mod h1:LwmH8dsx7+W8Uxz3IHJYH5QSwggIsqBzpuz5H//U1FU= github.com/matttproud/golang_protobuf_extensions v1.0.1 h1:4hp9jkHxhMHkqkrB3Ix0jegS5sx/RkqARlsWZ6pIwiU= github.com/matttproud/golang_protobuf_extensions v1.0.1/go.mod h1:D8He9yQNgCq6Z5Ld7szi9bcBfOoFv/3dc6xSMkL2PC0= -github.com/mitchellh/go-homedir v1.0.0 h1:vKb8ShqSby24Yrqr/yDYkuFz8d0WUjys40rvnGC8aR0= +github.com/miekg/dns v1.0.14/go.mod h1:W1PPwlIAgtquWBMBEV9nkV9Cazfe8ScdGz/Lj7v3Nrg= +github.com/mimoo/StrobeGo v0.0.0-20181016162300-f8f6d4d2b643 h1:hLDRPB66XQT/8+wG9WsDpiCvZf1yKO7sz7scAjSlBa0= +github.com/mimoo/StrobeGo v0.0.0-20181016162300-f8f6d4d2b643/go.mod h1:43+3pMjjKimDBf5Kr4ZFNGbLql1zKkbImw+fZbw3geM= +github.com/minio/highwayhash v1.0.0/go.mod h1:xQboMTeM9nY9v/LlAOxFctujiv5+Aq2hR5dxBpaMbdc= +github.com/mitchellh/cli v1.0.0/go.mod h1:hNIlj7HEI86fIcpObd7a0FcrxTWetlwJDGcceTlRvqc= github.com/mitchellh/go-homedir v1.0.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0= +github.com/mitchellh/go-homedir v1.1.0 h1:lukF9ziXFxDFPkA1vsr5zpc1XuPDn/wFntq5mG+4E0Y= +github.com/mitchellh/go-homedir v1.1.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0= +github.com/mitchellh/go-testing-interface v1.0.0/go.mod h1:kRemZodwjscx+RGhAo8eIhFbs2+BFgRtFPeD/KE+zxI= +github.com/mitchellh/gox v0.4.0/go.mod h1:Sd9lOJ0+aimLBi73mGofS1ycjY8lL3uZM3JPS42BGNg= +github.com/mitchellh/iochan v1.0.0/go.mod h1:JwYml1nuB7xOzsp52dPpHFffvOCDupsG0QubkSMEySY= +github.com/mitchellh/mapstructure v0.0.0-20160808181253-ca63d7c062ee/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y= github.com/mitchellh/mapstructure v1.1.2 h1:fmNYVwqnSfB9mZU6OS2O6GsXM+wcskZDuKQzvN1EDeE= github.com/mitchellh/mapstructure v1.1.2/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y= +github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= +github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= +github.com/modern-go/reflect2 v0.0.0-20180701023420-4b7aa43c6742/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= +github.com/modern-go/reflect2 v1.0.1/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= +github.com/mtibben/percent v0.2.1 h1:5gssi8Nqo8QU/r2pynCm+hBQHpkB/uNK7BJCFogWdzs= +github.com/mtibben/percent v0.2.1/go.mod h1:KG9uO+SZkUp+VkRHsCdYQV3XSZrrSpR3O9ibNBTZrns= +github.com/mwitkow/go-conntrack v0.0.0-20161129095857-cc309e4a2223/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U= +github.com/mwitkow/go-conntrack v0.0.0-20190716064945-2f068394615f/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U= +github.com/nats-io/jwt v0.3.0/go.mod h1:fRYCDE99xlTsqUzISS1Bi75UBJ6ljOJQOAAu5VglpSg= +github.com/nats-io/jwt v0.3.2/go.mod h1:/euKqTS1ZD+zzjYrY7pseZrTtWQSjujC7xjPc8wL6eU= +github.com/nats-io/nats-server/v2 v2.1.2/go.mod h1:Afk+wRZqkMQs/p45uXdrVLuab3gwv3Z8C4HTBu8GD/k= +github.com/nats-io/nats.go v1.9.1/go.mod h1:ZjDU1L/7fJ09jvUSRVBR2e7+RnLiiIQyqyzEE/Zbp4w= +github.com/nats-io/nkeys v0.1.0/go.mod h1:xpnFELMwJABBLVhffcfd1MZx6VsNRFpEugbxziKVo7w= +github.com/nats-io/nkeys v0.1.3/go.mod h1:xpnFELMwJABBLVhffcfd1MZx6VsNRFpEugbxziKVo7w= +github.com/nats-io/nuid v1.0.1/go.mod h1:19wcPz3Ph3q0Jbyiqsd0kePYG7A95tJPxeL+1OSON2c= +github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e/go.mod h1:zD1mROLANZcx1PVRCS0qkT7pwLkGfwJo4zjcN/Tysno= +github.com/oklog/oklog v0.3.2/go.mod h1:FCV+B7mhrz4o+ueLpx+KqkyXRGMWOYEvfiXtdGtbWGs= +github.com/oklog/run v1.0.0/go.mod h1:dlhp/R75TPv97u0XWUtDeV/lRKWPKSdTuV0TZvrmrQA= +github.com/oklog/ulid v1.3.1/go.mod h1:CirwcVhetQ6Lv90oh/F+FBtV6XMibvdAFo93nm5qn4U= +github.com/olekukonko/tablewriter v0.0.0-20170122224234-a0225b3f23b5/go.mod h1:vsDQFd/mU46D+Z4whnwzcISnGGzXWMclvtLoiIKAKIo= github.com/onsi/ginkgo v1.6.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= github.com/onsi/ginkgo v1.7.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= github.com/onsi/gomega v1.4.3/go.mod h1:ex+gbHU/CVuBBDIJjb2X0qEXbFg53c61hWP/1CpauHY= -github.com/pelletier/go-toml v1.2.0 h1:T5zMGML61Wp+FlcbWjRDT7yAxhJNAiPPLOFECq181zc= +github.com/op/go-logging v0.0.0-20160315200505-970db520ece7/go.mod h1:HzydrMdWErDVzsI23lYNej1Htcns9BCg93Dk0bBINWk= +github.com/opentracing-contrib/go-observer v0.0.0-20170622124052-a52f23424492/go.mod h1:Ngi6UdF0k5OKD5t5wlmGhe/EDKPoUM3BXZSSfIuJbis= +github.com/opentracing/basictracer-go v1.0.0/go.mod h1:QfBfYuafItcjQuMwinw9GhYKwFXS9KnPs5lxoYwgW74= +github.com/opentracing/opentracing-go v1.0.2/go.mod h1:UkNAQd3GIcIGf0SeVgPpRdFStlNbqXla1AfSYxPUl2o= +github.com/opentracing/opentracing-go v1.1.0/go.mod h1:UkNAQd3GIcIGf0SeVgPpRdFStlNbqXla1AfSYxPUl2o= +github.com/openzipkin-contrib/zipkin-go-opentracing v0.4.5/go.mod h1:/wsWhb9smxSfWAKL3wpBW7V8scJMt8N8gnaMCS9E/cA= +github.com/openzipkin/zipkin-go v0.1.6/go.mod h1:QgAqvLzwWbR/WpD4A3cGpPtJrZXNIiJc5AZX7/PBEpw= +github.com/openzipkin/zipkin-go v0.2.1/go.mod h1:NaW6tEwdmWMaCDZzg8sh+IBNOxHMPnhQw8ySjnjRyN4= +github.com/openzipkin/zipkin-go v0.2.2/go.mod h1:NaW6tEwdmWMaCDZzg8sh+IBNOxHMPnhQw8ySjnjRyN4= +github.com/otiai10/copy v1.2.0/go.mod h1:rrF5dJ5F0t/EWSYODDu4j9/vEeYHMkc8jt0zJChqQWw= +github.com/otiai10/curr v0.0.0-20150429015615-9b4961190c95/go.mod h1:9qAhocn7zKJG+0mI8eUu6xqkFDYS2kb2saOteoSB3cE= +github.com/otiai10/curr v1.0.0/go.mod h1:LskTG5wDwr8Rs+nNQ+1LlxRjAtTZZjtJW4rMXl6j4vs= +github.com/otiai10/mint v1.3.0/go.mod h1:F5AjcsTsWUqX+Na9fpHb52P8pcRX2CI6A3ctIT91xUo= +github.com/otiai10/mint v1.3.1/go.mod h1:/yxELlJQ0ufhjUwhshSj+wFjZ78CnZ48/1wtmBH1OTc= +github.com/pact-foundation/pact-go v1.0.4/go.mod h1:uExwJY4kCzNPcHRj+hCR/HBbOOIwwtUjcrb0b5/5kLM= +github.com/pascaldekloe/goe v0.0.0-20180627143212-57f6aae5913c/go.mod h1:lzWF7FIEvWOWxwDKqyGYQf6ZUaNfKdP144TG7ZOy1lc= +github.com/pascaldekloe/goe v0.1.0/go.mod h1:lzWF7FIEvWOWxwDKqyGYQf6ZUaNfKdP144TG7ZOy1lc= +github.com/pborman/uuid v1.2.0/go.mod h1:X/NO0urCmaxf9VXbdlT7C2Yzkj2IKimNn4k+gtPdI/k= github.com/pelletier/go-toml v1.2.0/go.mod h1:5z9KED0ma1S8pY6P1sdut58dfprrGBbd/94hg7ilaic= -github.com/pkg/errors v0.8.1 h1:iURUrRGxPUNPdy5/HRSm+Yj6okJ6UtLINN0Q9M4+h3I= +github.com/pelletier/go-toml v1.8.0 h1:Keo9qb7iRJs2voHvunFtuuYFsbWeOBh8/P9v/kVMFtw= +github.com/pelletier/go-toml v1.8.0/go.mod h1:D6yutnOGMveHEPV7VQOuvI/gXY61bv+9bAOTRnLElKs= +github.com/performancecopilot/speed v3.0.0+incompatible/go.mod h1:/CLtqpZ5gBg1M9iaPbIdPPGyKcA8hKdoy6hAWba7Yac= +github.com/petermattis/goid v0.0.0-20180202154549-b0b1615b78e5 h1:q2e307iGHPdTGp0hoxKjt1H5pDo6utceo3dQVK3I5XQ= +github.com/petermattis/goid v0.0.0-20180202154549-b0b1615b78e5/go.mod h1:jvVRKCrJTQWu0XVbaOlby/2lO20uSCHEMzzplHXte1o= +github.com/pierrec/lz4 v1.0.2-0.20190131084431-473cd7ce01a1/go.mod h1:3/3N9NVKO0jef7pBehbT1qWhCMrIgbYNnFAZCqQ5LRc= +github.com/pierrec/lz4 v2.0.5+incompatible/go.mod h1:pdkljMzZIN41W+lC3N2tnIh5sFi+IEE17M5jbnwPHcY= +github.com/pkg/errors v0.8.0/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= +github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4= +github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= +github.com/pkg/profile v1.2.1/go.mod h1:hJw3o1OdXxsrSjjVksARp5W95eeEaEfptyVZyv6JUPA= github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= -github.com/prometheus/client_golang v0.9.1 h1:K47Rk0v/fkEfwfQet2KWhscE0cJzjgCCDBG2KHZoVno= +github.com/posener/complete v1.1.1/go.mod h1:em0nMJCgc9GFtwrmVmEMR/ZL6WyhyjMBndrE9hABlRI= github.com/prometheus/client_golang v0.9.1/go.mod h1:7SWBe2y4D6OKWSNQJUaRYU/AaXPKyh/dDVn+NZz0KFw= -github.com/prometheus/client_model v0.0.0-20180712105110-5c3871d89910 h1:idejC8f05m9MGOsuEi1ATq9shN03HrxNkD/luQvxCv8= +github.com/prometheus/client_golang v0.9.3-0.20190127221311-3c4408c8b829/go.mod h1:p2iRAGwDERtqlqzRXnrOVns+ignqQo//hLXqYxZYVNs= +github.com/prometheus/client_golang v0.9.3/go.mod h1:/TN21ttK/J9q6uSwhBd54HahCDft0ttaMvbicHlPoso= +github.com/prometheus/client_golang v1.0.0/go.mod h1:db9x61etRT2tGnBNRi70OPL5FsnadC4Ky3P0J6CfImo= +github.com/prometheus/client_golang v1.3.0/go.mod h1:hJaj2vgQTGQmVCsAACORcieXFeDPbaTKGT+JTgUa3og= +github.com/prometheus/client_golang v1.4.0/go.mod h1:e9GMxYsXl05ICDXkRhurwBS4Q3OK1iX/F2sw+iXX5zU= +github.com/prometheus/client_golang v1.7.1 h1:NTGy1Ja9pByO+xAeH/qiWnLrKtr3hJPNjaVUwnjpdpA= +github.com/prometheus/client_golang v1.7.1/go.mod h1:PY5Wy2awLA44sXw4AOSfFBetzPP4j5+D6mVACh+pe2M= github.com/prometheus/client_model v0.0.0-20180712105110-5c3871d89910/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo= -github.com/prometheus/common v0.0.0-20181020173914-7e9e6cabbd39 h1:Cto4X6SVMWRPBkJ/3YHn1iDGDGc/Z+sW+AEMKHMVvN4= -github.com/prometheus/common v0.0.0-20181020173914-7e9e6cabbd39/go.mod h1:daVV7qP5qjZbuso7PdcryaAu0sAZbrN9i7WWcTMWvro= -github.com/prometheus/procfs v0.0.0-20181005140218-185b4288413d h1:GoAlyOgbOEIFdaDqxJVlbOQ1DtGmZWs/Qau0hIlk+WQ= +github.com/prometheus/client_model v0.0.0-20190115171406-56726106282f/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo= +github.com/prometheus/client_model v0.0.0-20190129233127-fd36f4220a90/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= +github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= +github.com/prometheus/client_model v0.1.0/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= +github.com/prometheus/client_model v0.2.0 h1:uq5h0d+GuxiXLJLNABMgp2qUWDPiLvgCzz2dUR+/W/M= +github.com/prometheus/client_model v0.2.0/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= +github.com/prometheus/common v0.0.0-20181113130724-41aa239b4cce/go.mod h1:daVV7qP5qjZbuso7PdcryaAu0sAZbrN9i7WWcTMWvro= +github.com/prometheus/common v0.2.0/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4= +github.com/prometheus/common v0.4.0/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4= +github.com/prometheus/common v0.4.1/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4= +github.com/prometheus/common v0.7.0/go.mod h1:DjGbpBbp5NYNiECxcL/VnbXCCaQpKd3tt26CguLLsqA= +github.com/prometheus/common v0.9.1/go.mod h1:yhUN8i9wzaXS3w1O07YhxHEBxD+W35wd8bs7vj7HSQ4= +github.com/prometheus/common v0.10.0/go.mod h1:Tlit/dnDKsSWFlCLTWaA1cyBgKHSMdTB80sz/V91rCo= +github.com/prometheus/common v0.13.0 h1:vJlpe9wPgDRM1Z+7Wj3zUUjY1nr6/1jNKyl7llliccg= +github.com/prometheus/common v0.13.0/go.mod h1:U+gB1OBLb1lF3O42bTCL+FK18tX9Oar16Clt/msog/s= github.com/prometheus/procfs v0.0.0-20181005140218-185b4288413d/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= -github.com/rakyll/statik v0.1.6/go.mod h1:OEi9wJV/fMUAGx1eNjq75DKDsJVuEv1U0oYdX6GX8Zs= -github.com/rcrowley/go-metrics v0.0.0-20180503174638-e2704e165165 h1:nkcn14uNmFEuGCb2mBZbBb24RdNRL08b/wb+xBOYpuk= -github.com/rcrowley/go-metrics v0.0.0-20180503174638-e2704e165165/go.mod h1:bCqnVzQkZxMG4s8nGwiZ5l3QUCyqpo9Y+/ZMZ9VjZe4= +github.com/prometheus/procfs v0.0.0-20190117184657-bf6a532e95b1/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= +github.com/prometheus/procfs v0.0.0-20190507164030-5867b95ac084/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA= +github.com/prometheus/procfs v0.0.2/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA= +github.com/prometheus/procfs v0.0.8/go.mod h1:7Qr8sr6344vo1JqZ6HhLceV9o3AJ1Ff+GxbHq6oeK9A= +github.com/prometheus/procfs v0.1.3 h1:F0+tqvhOksq22sc6iCHF5WGlWjdwj92p0udFh1VFBS8= +github.com/prometheus/procfs v0.1.3/go.mod h1:lV6e/gmhEcM9IjHGsFOCxxuZ+z1YqCvr4OA4YeYWdaU= +github.com/prometheus/tsdb v0.7.1/go.mod h1:qhTCs0VvXwvX/y3TZrWD7rabWM+ijKTux40TwIPHuXU= +github.com/rakyll/statik v0.1.7/go.mod h1:AlZONWzMtEnMs7W4e/1LURLiI49pIMmp6V9Unghqrcc= +github.com/rcrowley/go-metrics v0.0.0-20181016184325-3113b8401b8a/go.mod h1:bCqnVzQkZxMG4s8nGwiZ5l3QUCyqpo9Y+/ZMZ9VjZe4= +github.com/rcrowley/go-metrics v0.0.0-20200313005456-10cdbea86bc0 h1:MkV+77GLUNo5oJ0jf870itWm3D0Sjh7+Za9gazKc5LQ= +github.com/rcrowley/go-metrics v0.0.0-20200313005456-10cdbea86bc0/go.mod h1:bCqnVzQkZxMG4s8nGwiZ5l3QUCyqpo9Y+/ZMZ9VjZe4= +github.com/regen-network/cosmos-proto v0.3.0 h1:24dVpPrPi0GDoPVLesf2Ug98iK5QgVscPl0ga4Eoub0= +github.com/regen-network/cosmos-proto v0.3.0/go.mod h1:zuP2jVPHab6+IIyOx3nXHFN+euFNeS3W8XQkcdd4s7A= +github.com/regen-network/protobuf v1.3.2-alpha.regen.4 h1:c9jEnU+xm6vqyrQe3M94UFWqiXxRIKKnqBOh2EACmBE= +github.com/regen-network/protobuf v1.3.2-alpha.regen.4/go.mod h1:/J8/bR1T/NXyIdQDLUaq15LjNE83nRzkyrLAMcPewig= +github.com/rogpeppe/fastuuid v0.0.0-20150106093220-6724a57986af/go.mod h1:XWv6SoW27p1b0cqNHllgS5HIMJraePCO15w5zCzIWYg= +github.com/rogpeppe/fastuuid v1.2.0/go.mod h1:jVj6XXZzXRy/MSR5jhDC/2q6DgLz+nrA6LYCDYWNEvQ= github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4= -github.com/rs/cors v1.6.0 h1:G9tHG9lebljV9mfp9SNPDL36nCDxmo3zTlAf1YgvzmI= -github.com/rs/cors v1.6.0/go.mod h1:gFx+x8UowdsKA9AchylcLynDq+nNFfI8FkUZdN/jGCU= -github.com/spf13/afero v1.1.2 h1:m8/z1t7/fwjysjQRYbP0RD+bUIF/8tJwPdEZsI83ACI= +github.com/rs/cors v1.7.0/go.mod h1:gFx+x8UowdsKA9AchylcLynDq+nNFfI8FkUZdN/jGCU= +github.com/russross/blackfriday v1.5.2/go.mod h1:JO/DiYxRf+HjHt06OyowR9PTA263kcR/rfWxYHBV53g= +github.com/russross/blackfriday/v2 v2.0.1/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= +github.com/ryanuber/columnize v0.0.0-20160712163229-9b3edd62028f/go.mod h1:sm1tb6uqfes/u+d4ooFouqFdy9/2g9QGwK3SQygK0Ts= +github.com/samuel/go-zookeeper v0.0.0-20190923202752-2cc03de413da/go.mod h1:gi+0XIa01GRL2eRQVjQkKGqKF3SF9vZR/HnPullcV2E= +github.com/sasha-s/go-deadlock v0.2.0 h1:lMqc+fUb7RrFS3gQLtoQsJ7/6TV/pAIFvBsqX73DK8Y= +github.com/sasha-s/go-deadlock v0.2.0/go.mod h1:StQn567HiB1fF2yJ44N9au7wOhrPS3iZqiDbRupzT10= +github.com/sean-/seed v0.0.0-20170313163322-e2103e2c3529/go.mod h1:DxrIzT+xaE7yg65j358z/aeFdxmN0P9QXhEzd20vsDc= +github.com/shurcooL/sanitized_anchor_name v1.0.0/go.mod h1:1NzhyTcUVG4SuEtjjoZeVRXNmyL/1OwPU0+IJeTBvfc= +github.com/sirupsen/logrus v1.2.0/go.mod h1:LxeOpSwHxABJmUn/MG1IvRgCAasNZTLOkJPxbbu5VWo= +github.com/sirupsen/logrus v1.4.2/go.mod h1:tLMulIdttU9McNUspp0xgXVQah82FyeX6MwdIuYE2rE= +github.com/sirupsen/logrus v1.6.0/go.mod h1:7uNnSEd1DgxDLC74fIahvMZmmYsHGZGEOFrfsX/uA88= +github.com/smartystreets/assertions v0.0.0-20180927180507-b2de0cb4f26d/go.mod h1:OnSkiWE9lh6wB0YB77sQom3nweQdgAjqCqsofrRNTgc= +github.com/smartystreets/goconvey v1.6.4/go.mod h1:syvi0/a8iFYH4r/RixwvyeAJjdLS9QV7WQ/tjFTllLA= +github.com/snikch/goodman v0.0.0-20171125024755-10e37e294daa/go.mod h1:oJyF+mSPHbB5mVY2iO9KV3pTt/QbIkGaO8gQ2WrDbP4= +github.com/soheilhy/cmux v0.1.4/go.mod h1:IM3LyeVVIOuxMH7sFAkER9+bJ4dT7Ms6E4xg4kGIyLM= +github.com/sony/gobreaker v0.4.1/go.mod h1:ZKptC7FHNvhBz7dN2LGjPVBz2sZJmc0/PkyDJOjmxWY= +github.com/spaolacci/murmur3 v0.0.0-20180118202830-f09979ecbc72/go.mod h1:JwIasOWyU6f++ZhiEuf87xNszmSA2myDM2Kzu9HwQUA= +github.com/spaolacci/murmur3 v1.1.0/go.mod h1:JwIasOWyU6f++ZhiEuf87xNszmSA2myDM2Kzu9HwQUA= github.com/spf13/afero v1.1.2/go.mod h1:j4pytiNVoe2o6bmDsKpLACNPDBIoEAkihy7loJ1B0CQ= -github.com/spf13/cast v1.3.0 h1:oget//CVOEoFewqQxwr0Ej5yjygnqGkvggSE/gB35Q8= +github.com/spf13/afero v1.2.2 h1:5jhuqJyZCZf2JRofRvN/nIFgIWNzPa3/Vz8mYylgbWc= +github.com/spf13/afero v1.2.2/go.mod h1:9ZxEEn6pIJ8Rxe320qSDBk6AsU0r9pR7Q4OcevTdifk= github.com/spf13/cast v1.3.0/go.mod h1:Qx5cxh0v+4UWYiBimWS+eyWzqEqokIECu5etghLkUJE= -github.com/spf13/cobra v0.0.1 h1:zZh3X5aZbdnoj+4XkaBxKfhO4ot82icYdhhREIAXIj8= -github.com/spf13/cobra v0.0.1/go.mod h1:1l0Ry5zgKvJasoi3XT1TypsSe7PqH0Sj9dhYf7v3XqQ= -github.com/spf13/jwalterweatherman v1.0.0 h1:XHEdyB+EcvlqZamSM4ZOMGlc93t6AcsBEu9Gc1vn7yk= +github.com/spf13/cast v1.3.1 h1:nFm6S0SMdyzrzcmThSipiEubIDy8WEXKNZ0UOgiRpng= +github.com/spf13/cast v1.3.1/go.mod h1:Qx5cxh0v+4UWYiBimWS+eyWzqEqokIECu5etghLkUJE= +github.com/spf13/cobra v0.0.3/go.mod h1:1l0Ry5zgKvJasoi3XT1TypsSe7PqH0Sj9dhYf7v3XqQ= +github.com/spf13/cobra v0.0.5/go.mod h1:3K3wKZymM7VvHMDS9+Akkh4K60UwM26emMESw8tLCHU= +github.com/spf13/cobra v1.0.0 h1:6m/oheQuQ13N9ks4hubMG6BnvwOeaJrqSPLahSnczz8= +github.com/spf13/cobra v1.0.0/go.mod h1:/6GTrnGXV9HjY+aR4k0oJ5tcvakLuG6EuKReYlHNrgE= github.com/spf13/jwalterweatherman v1.0.0/go.mod h1:cQK4TGJAtQXfYWX+Ddv3mKDzgVb68N+wFjFa4jdeBTo= -github.com/spf13/pflag v1.0.3 h1:zPAT6CGy6wXeQ7NtTnaTerfKOsV6V6F8agHXFiazDkg= +github.com/spf13/jwalterweatherman v1.1.0 h1:ue6voC5bR5F8YxI5S67j9i582FU4Qvo2bmqnqMYADFk= +github.com/spf13/jwalterweatherman v1.1.0/go.mod h1:aNWZUN0dPAAO/Ljvb5BEdw96iTZ0EXowPYD95IqWIGo= +github.com/spf13/pflag v1.0.1/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= github.com/spf13/pflag v1.0.3/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= -github.com/spf13/viper v1.0.0 h1:RUA/ghS2i64rlnn4ydTfblY8Og8QzcPtCcHvgMn+w/I= -github.com/spf13/viper v1.0.0/go.mod h1:A8kyI5cUJhb8N+3pkfONlcEcZbueH6nhAm0Fq7SrnBM= +github.com/spf13/pflag v1.0.5 h1:iy+VFUOCP1a+8yFto/drg2CJ5u0yRoB7fZw3DKv/JXA= +github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= +github.com/spf13/viper v1.3.2/go.mod h1:ZiWeW+zYFKm7srdB9IoDzzZXaJaI5eL9QjNiN/DMA2s= +github.com/spf13/viper v1.4.0/go.mod h1:PTJ7Z/lr49W6bUbkmS1V3by4uWynFiR9p7+dSq/yZzE= +github.com/spf13/viper v1.7.1 h1:pM5oEahlgWv/WnHXpgbKz7iLIxRf65tye2Ci+XFK5sk= +github.com/spf13/viper v1.7.1/go.mod h1:8WkrPz2fc9jxqZNCJI/76HCieCp4Q8HaLFoCha5qpdg= +github.com/streadway/amqp v0.0.0-20190404075320-75d898a42a94/go.mod h1:AZpEONHx3DKn8O/DFsRAY58/XVQiIPMTMB1SddzLXVw= +github.com/streadway/amqp v0.0.0-20190827072141-edfb9018d271/go.mod h1:AZpEONHx3DKn8O/DFsRAY58/XVQiIPMTMB1SddzLXVw= +github.com/streadway/handy v0.0.0-20190108123426-d5acb3125c2a/go.mod h1:qNTQ5P5JnDBl6z3cMAg/SywNDC5ABu5ApDIw6lUbRmI= github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= +github.com/stretchr/objx v0.1.1/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= +github.com/stretchr/objx v0.2.0/go.mod h1:qt09Ya8vawLte6SNmTgCsAVtYtaKzEcn8ATUoHMkEqE= github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= -github.com/stretchr/testify v1.4.0 h1:2E4SXV/wtOkTonXsotYi4li6zVWxYlZuYNCXe9XRJyk= github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4= -github.com/syndtr/goleveldb v1.0.1-0.20190318030020-c3a204f8e965 h1:1oFLiOyVl+W7bnBzGhf7BbIv9loSFQcieWWYIjLqcAw= -github.com/syndtr/goleveldb v1.0.1-0.20190318030020-c3a204f8e965/go.mod h1:9OrXJhf154huy1nPWmuSrkgjPUtUNhA+Zmy+6AESzuA= +github.com/stretchr/testify v1.6.1 h1:hDPOHmpOpP40lSULcqw7IrRb/u7w6RpDC9399XyoNd0= +github.com/stretchr/testify v1.6.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= +github.com/subosito/gotenv v1.2.0 h1:Slr1R9HxAlEKefgq5jn9U+DnETlIUa6HfgEzj0g5d7s= +github.com/subosito/gotenv v1.2.0/go.mod h1:N0PQaV/YGNqwC0u51sEeR/aUtSLEXKX9iv69rRypqCw= +github.com/syndtr/goleveldb v1.0.1-0.20190923125748-758128399b1d h1:gZZadD8H+fF+n9CmNhYL1Y0dJB+kLOmKd7FbPJLeGHs= +github.com/syndtr/goleveldb v1.0.1-0.20190923125748-758128399b1d/go.mod h1:9OrXJhf154huy1nPWmuSrkgjPUtUNhA+Zmy+6AESzuA= +github.com/tecbot/gorocksdb v0.0.0-20191217155057-f0fad39f321c h1:g+WoO5jjkqGAzHWCjJB1zZfXPIAaDpzXIEJ0eS6B5Ok= +github.com/tecbot/gorocksdb v0.0.0-20191217155057-f0fad39f321c/go.mod h1:ahpPrc7HpcfEWDQRZEmnXMzHY03mLDYMCxeDzy46i+8= github.com/tendermint/btcd v0.1.1 h1:0VcxPfflS2zZ3RiOAHkBiFUcPvbtRj5O7zHmcJWHV7s= github.com/tendermint/btcd v0.1.1/go.mod h1:DC6/m53jtQzr/NFmMNEu0rxf18/ktVoVtMrnDD5pN+U= -github.com/tendermint/crypto v0.0.0-20180820045704-3764759f34a5 h1:u8i49c+BxloX3XQ55cvzFNXplizZP/q00i+IlttUjAU= -github.com/tendermint/crypto v0.0.0-20180820045704-3764759f34a5/go.mod h1:z4YtwM70uOnk8h0pjJYlj3zdYwi9l03By6iAIF5j/Pk= -github.com/tendermint/go-amino v0.14.1 h1:o2WudxNfdLNBwMyl2dqOJxiro5rfrEaU0Ugs6offJMk= -github.com/tendermint/go-amino v0.14.1/go.mod h1:i/UKE5Uocn+argJJBb12qTZsCDBcAYMbR92AaJVmKso= -github.com/tendermint/tm-db v0.1.1 h1:G3Xezy3sOk9+ekhjZ/kjArYIs1SmwV+1OUgNkj7RgV0= -github.com/tendermint/tm-db v0.1.1/go.mod h1:0cPKWu2Mou3IlxecH+MEUSYc1Ch537alLe6CpFrKzgw= -github.com/tendermint/tmlibs v0.9.0/go.mod h1:4L0tAKpLTioy14VnmbXYTLIJN0pCMiehxDMdN6zZfM8= +github.com/tendermint/crypto v0.0.0-20191022145703-50d29ede1e15 h1:hqAk8riJvK4RMWx1aInLzndwxKalgi5rTqgfXxOxbEI= +github.com/tendermint/crypto v0.0.0-20191022145703-50d29ede1e15/go.mod h1:z4YtwM70uOnk8h0pjJYlj3zdYwi9l03By6iAIF5j/Pk= +github.com/tendermint/go-amino v0.15.1 h1:D2uk35eT4iTsvJd9jWIetzthE5C0/k2QmMFkCN+4JgQ= +github.com/tendermint/go-amino v0.15.1/go.mod h1:TQU0M1i/ImAo+tYpZi73AU3V/dKeCoMC9Sphe2ZwGME= +github.com/tendermint/tendermint v0.34.0-rc3 h1:d7Fsd5rdbxq4GmJ0kRfx7l7LesQM7e70f0ytWLTQ/Go= +github.com/tendermint/tendermint v0.34.0-rc3/go.mod h1:BoHcEpjfpBHc1Be7RQz3AHaXFNObcDG7SNHCev6Or4g= +github.com/tendermint/tm-db v0.6.1 h1:w3X87itMPXopcRPlFiqspEKhw4FXihPk2rnFFkP0zGk= +github.com/tendermint/tm-db v0.6.1/go.mod h1:m3x9kRP4UFd7JODJL0yBAZqE7wTw+S37uAE90cTx7OA= +github.com/tmc/grpc-websocket-proxy v0.0.0-20170815181823-89b8d40f7ca8/go.mod h1:ncp9v5uamzpCO7NfCPTXjqaC+bZgJeR0sMTm6dMHP7U= +github.com/tmc/grpc-websocket-proxy v0.0.0-20190109142713-0ad062ec5ee5/go.mod h1:ncp9v5uamzpCO7NfCPTXjqaC+bZgJeR0sMTm6dMHP7U= +github.com/tv42/httpunix v0.0.0-20150427012821-b75d8614f926/go.mod h1:9ESjWnEqriFuLhtthL60Sar/7RFoluCcXsuvEwTV5KM= +github.com/ugorji/go v1.1.4/go.mod h1:uQMGLiO92mf5W77hV/PUCpI3pbzQx3CRekS0kk+RGrc= +github.com/ugorji/go/codec v0.0.0-20181204163529-d75b2dcb6bc8/go.mod h1:VFNgLljTbGfSG7qAOspJ7OScBnGdDN/yBr0sguwnwf0= +github.com/urfave/cli v1.20.0/go.mod h1:70zkFmudgCuE/ngEzBv17Jvp/497gISqfk5gWijbERA= +github.com/urfave/cli v1.22.1/go.mod h1:Gos4lmkARVdJ6EkW0WaNv/tZAAMe9V7XWyB60NtXRu0= +github.com/xeipuuv/gojsonpointer v0.0.0-20180127040702-4e3ac2762d5f h1:J9EGpcZtP0E/raorCMxlFGSTBrsSlaDGf3jU/qvAE2c= +github.com/xeipuuv/gojsonpointer v0.0.0-20180127040702-4e3ac2762d5f/go.mod h1:N2zxlSyiKSe5eX1tZViRH5QA0qijqEDrYZiPEAiq3wU= +github.com/xeipuuv/gojsonreference v0.0.0-20180127040603-bd5ef7bd5415 h1:EzJWgHovont7NscjpAxXsDA8S8BMYve8Y5+7cuRE7R0= +github.com/xeipuuv/gojsonreference v0.0.0-20180127040603-bd5ef7bd5415/go.mod h1:GwrjFmJcFw6At/Gs6z4yjiIwzuJ1/+UwLxMQDVQXShQ= +github.com/xeipuuv/gojsonschema v1.2.0 h1:LhYJRs+L4fBtjZUfuSZIKGeVu0QRy8e5Xi7D17UxZ74= +github.com/xeipuuv/gojsonschema v1.2.0/go.mod h1:anYRn/JVcOK2ZgGU+IjEV4nwlhoK5sQluxsYJ78Id3Y= +github.com/xiang90/probing v0.0.0-20190116061207-43a291ad63a2/go.mod h1:UETIi67q53MR2AWcXfiuqkDkRtnGDLqkBTpCHuJHxtU= +github.com/xordataexchange/crypt v0.0.3-0.20170626215501-b2862e3d0a77/go.mod h1:aYKd//L2LvnjZzWKhF00oedf4jCCReLcmhLdhm1A27Q= github.com/zondax/hid v0.9.0 h1:eiT3P6vNxAEVxXMw66eZUAAnU2zD33JBkfG/EnfAKl8= github.com/zondax/hid v0.9.0/go.mod h1:l5wttcP0jwtdLjqjMMWFVEE7d1zO0jvSPA9OPZxWpEM= +go.etcd.io/bbolt v1.3.2/go.mod h1:IbVyRI1SCnLcuJnV2u8VeU0CEYM7e686BmAb1XKL+uU= go.etcd.io/bbolt v1.3.3/go.mod h1:IbVyRI1SCnLcuJnV2u8VeU0CEYM7e686BmAb1XKL+uU= +go.etcd.io/bbolt v1.3.5 h1:XAzx9gjCb0Rxj7EoqcClPD1d5ZBxZJk0jbuoPHenBt0= +go.etcd.io/bbolt v1.3.5/go.mod h1:G5EMThwa9y8QZGBClrRx5EY+Yw9kAhnjy3bSjsnlVTQ= +go.etcd.io/etcd v0.0.0-20191023171146-3cf2f69b5738/go.mod h1:dnLIgRNXwCJa5e+c6mIZCrds/GIG4ncV9HhK5PX7jPg= +go.opencensus.io v0.20.1/go.mod h1:6WKK9ahsWS3RSO+PY9ZHZUfv2irvY6gN279GOPZjmmk= +go.opencensus.io v0.20.2/go.mod h1:6WKK9ahsWS3RSO+PY9ZHZUfv2irvY6gN279GOPZjmmk= +go.opencensus.io v0.21.0/go.mod h1:mSImk1erAIZhrmZN+AvHh14ztQfjbGwt4TtuofqLduU= +go.opencensus.io v0.22.0/go.mod h1:+kGneAE2xo2IficOXnaByMWTGM9T73dGwxeWcUqIpI8= +go.opencensus.io v0.22.2/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= +go.uber.org/atomic v1.3.2/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE= +go.uber.org/atomic v1.4.0/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE= go.uber.org/atomic v1.5.0 h1:OI5t8sDa1Or+q8AeE+yKeB/SDYioSHAgcVljj9JIETY= go.uber.org/atomic v1.5.0/go.mod h1:sABNBOSYdrvTF6hTgEIbc7YasKWGhgEQZyfxyTvoXHQ= +go.uber.org/multierr v1.1.0/go.mod h1:wR5kodmAFQ0UK8QlbwjlSNy0Z68gJhDJUG5sjR94q/0= go.uber.org/multierr v1.3.0 h1:sFPn2GLc3poCkfrpIXGhBD2X0CMIo4Q/zSULXrj/+uc= go.uber.org/multierr v1.3.0/go.mod h1:VgVr7evmIr6uPjLBxg28wmKNXyqE9akIJ5XnfpiKl+4= go.uber.org/tools v0.0.0-20190618225709-2cfd321de3ee h1:0mgffUl7nfd+FpvXMVz4IDEaUSmT1ysygQC7qYo7sG4= go.uber.org/tools v0.0.0-20190618225709-2cfd321de3ee/go.mod h1:vJERXedbb3MVM5f9Ejo0C68/HhF8uaILCdgjnY+goOA= +go.uber.org/zap v1.10.0/go.mod h1:vwi/ZaCAaUcBkycHslxD9B2zi4UTXhF60s6SWpuDF0Q= go.uber.org/zap v1.13.0 h1:nR6NoDBgAf67s68NhaXbsojM+2gxp3S1hWkHDl27pVU= go.uber.org/zap v1.13.0/go.mod h1:zwrFLgMcdUuIBviXEYEH1YKNaOBnKXsx2IPda5bBwHM= +golang.org/x/crypto v0.0.0-20170930174604-9419663f5a44/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= +golang.org/x/crypto v0.0.0-20180904163835-0709b304e793/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= +golang.org/x/crypto v0.0.0-20181029021203-45a5f77698d3/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= +golang.org/x/crypto v0.0.0-20181203042331-505ab145d0a9/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= +golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= +golang.org/x/crypto v0.0.0-20190510104115-cbcb75029529/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= +golang.org/x/crypto v0.0.0-20190605123033-f99c8df09eb5/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= +golang.org/x/crypto v0.0.0-20190701094942-4def268fd1a4/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= +golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= +golang.org/x/crypto v0.0.0-20191206172530-e9b2fee46413/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= +golang.org/x/crypto v0.0.0-20200115085410-6d4e4cb37c7d/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= +golang.org/x/crypto v0.0.0-20200406173513-056763e48d71/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= +golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= +golang.org/x/crypto v0.0.0-20200709230013-948cd5f35899 h1:DZhuSZLsGlFL4CmhA8BcRA0mnthyA/nZ00AqCUo7vHg= +golang.org/x/crypto v0.0.0-20200709230013-948cd5f35899/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= +golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= +golang.org/x/exp v0.0.0-20190306152737-a1d7652674e8/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= +golang.org/x/exp v0.0.0-20190510132918-efd6b22b2522/go.mod h1:ZjyILWgesfNpC6sMxTJOJm9Kp84zZh5NQWvqDGG3Qr8= +golang.org/x/exp v0.0.0-20190829153037-c13cbed26979/go.mod h1:86+5VVa7VpoJ4kLfm080zCjGlMRFzhUhsZKEZO7MGek= +golang.org/x/exp v0.0.0-20191030013958-a1ab85dbe136/go.mod h1:JXzH8nQsPlswgeRAPE3MuO9GYsAcnJvJ4vnMwN/5qkY= +golang.org/x/image v0.0.0-20190227222117-0694c2d4d067/go.mod h1:kZ7UVZpmo3dzQBMxlp+ypCbDeSB+sBbTgSJuh5dn5js= +golang.org/x/image v0.0.0-20190802002840-cff245a6509b/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0= +golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= +golang.org/x/lint v0.0.0-20190227174305-5b3e6a55c961/go.mod h1:wehouNa3lNwaWXcvxsM5YxQ5yQlVC4a0KAMCusXpPoU= +golang.org/x/lint v0.0.0-20190301231843-5614ed5bae6f/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= golang.org/x/lint v0.0.0-20190313153728-d0100b6bd8b3/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= +golang.org/x/lint v0.0.0-20190409202823-959b441ac422/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= +golang.org/x/lint v0.0.0-20190909230951-414d861bb4ac/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= golang.org/x/lint v0.0.0-20190930215403-16217165b5de h1:5hukYrvBGR8/eNkX5mdUezrA6JiaEZDtJb9Ei+1LlBs= golang.org/x/lint v0.0.0-20190930215403-16217165b5de/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= +golang.org/x/mobile v0.0.0-20190312151609-d3739f865fa6/go.mod h1:z+o9i4GpDbdi3rU15maQ/Ox0txvL9dWGYEHz965HBQE= +golang.org/x/mobile v0.0.0-20190719004257-d2bd2a29d028/go.mod h1:E/iHnbuqvinMTCcRqshq8CkpyQDoeVncDDYHnLhea+o= golang.org/x/mod v0.0.0-20190513183733-4bf6d317e70e/go.mod h1:mXi4GBBbnImb6dmsKGUJ2LatrhH/nqhxcFungHvyanc= +golang.org/x/mod v0.1.0/go.mod h1:0QHyrYULN0/3qlju5TqG8bIK38QM8yzMo5ekMj3DlcY= +golang.org/x/mod v0.1.1-0.20191105210325-c90efee705ee/go.mod h1:QqPTAvyqsEbceGzBzNggFXnrqF1CaUcvgkdR5Ot7KZg= +golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180906233101-161cd47e91fd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20181023162649-9b4f9f5ad519/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20181114220301-adae6a3d119a/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20181201002055-351d144fa1fc/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20181220203305-927f97764cc3/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20190108225652-1e06a53dbb7e/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20190125091013-d26f9f9a57f3/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20190213061140-3a22650c66bd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= +golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= +golang.org/x/net v0.0.0-20190501004415-9ce7a6920f09/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= +golang.org/x/net v0.0.0-20190503192946-f4e77d36d62c/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= +golang.org/x/net v0.0.0-20190522155817-f3200d17e092/go.mod h1:HSz+uSET+XFnRR8LxR5pz3Of3rY3CfYBVs4xY44aLks= +golang.org/x/net v0.0.0-20190603091049-60506f45cf65/go.mod h1:HSz+uSET+XFnRR8LxR5pz3Of3rY3CfYBVs4xY44aLks= +golang.org/x/net v0.0.0-20190613194153-d28f0bde5980/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20190628185345-da137c7871d7 h1:rTIdg5QFRR7XCaK4LCjBiPbx8j4DQRpdYMnGn/bJUEU= -golang.org/x/net v0.0.0-20190628185345-da137c7871d7/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20190813141303-74dc4d7220e7/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20191002035440-2ec189313ef0/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20200324143707-d3edc9973b7e/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= +golang.org/x/net v0.0.0-20200625001655-4c5254603344 h1:vGXIOMxbNfDTk/aXCmfdLgkrSV+Z2tcbze+pEc3v5W4= +golang.org/x/net v0.0.0-20200625001655-4c5254603344/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= +golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= +golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= +golang.org/x/oauth2 v0.0.0-20200107190931-bf48bf16ab8d/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20190227155943-e225da77a7e6/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sys v0.0.0-20180823144017-11551d06cbcc/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20180909124046-d0be0721c37e/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a h1:1BGLXjeY4akVXGgbC9HugT3Jv3hCI0z56oJR5vAMgBU= +golang.org/x/sys v0.0.0-20181026203630-95b1ffbd15a5/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20181107165924-66b7b1311ac8/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20181116152217-5ac8a444bdc5/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20181122145206-62eef0e2fa9b/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20181205085412-a5c9d58dba9a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20190130150945-aca44879d564/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/text v0.3.0 h1:g61tztE5qeGQ89tm6NTjjM9VPIm088od1l6aSorWRWg= +golang.org/x/sys v0.0.0-20190312061237-fead79001313/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190422165155-953cdadca894/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190502145724-3ef323f4f1fd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190507160741-ecd444e8653b/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190606165138-5da285871e9c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190624142023-c5567b49c5d0/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190626221950-04f50cda93cb/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190712062909-fae7ac547cb7/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190726091711-fc99dfbffb4e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190826190057-c7b8b68b1456/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20191220142924-d4481acd189f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200106162015-b016eb3dc98e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200116001909-b77594299b42/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200122134326-e047566fdf82/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200202164722-d101bd2416d5/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200323222414-85ca7c5b95cd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200615200032-f1bc736245b1/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200625212154-ddb9806d33ae h1:Ih9Yo4hSPImZOpfGuA4bR/ORKTAbhZo2AbWNRCnevdo= +golang.org/x/sys v0.0.0-20200625212154-ddb9806d33ae/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= +golang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= +golang.org/x/text v0.3.2 h1:tW2bmiBqwgJj/UpqtC8EpXEZVYOwU0yG4iWbprSVAcs= +golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk= +golang.org/x/time v0.0.0-20180412165947-fbb02b2291d2/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= +golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= +golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= +golang.org/x/time v0.0.0-20191024005414-555d28b269f0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= +golang.org/x/tools v0.0.0-20180828015842-6cd1fcedba52/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20181030221726-6c7e314b6563/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20190226205152-f727befe758c/go.mod h1:9Yl7xja0Znq3iFh3HoIrodX9oNMXvdceNzlUR8zjMvY= golang.org/x/tools v0.0.0-20190311212946-11955173bddd/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= +golang.org/x/tools v0.0.0-20190312151545-0bb0c0a6e846/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= +golang.org/x/tools v0.0.0-20190312170243-e65039ee4138/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= +golang.org/x/tools v0.0.0-20190328211700-ab21143f2384/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= +golang.org/x/tools v0.0.0-20190425150028-36563e24a262/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= +golang.org/x/tools v0.0.0-20190506145303-2d16b83fe98c/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= golang.org/x/tools v0.0.0-20190524140312-2c0ae7006135/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= +golang.org/x/tools v0.0.0-20190606124116-d0a3d012864b/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= golang.org/x/tools v0.0.0-20190621195816-6e04913cbbac/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= +golang.org/x/tools v0.0.0-20190628153133-6cdbf07be9d0/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= +golang.org/x/tools v0.0.0-20190816200558-6889da9d5479/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20190911174233-4f2ddba30aff/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20191012152004-8de300cfc20a/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191029041327-9cc4af7d6b2c/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20191029190741-b9c20aec41a5 h1:hKsoRgsbwY1NafxrwTs+k64bikrLBkAgPir1TNCj3Zs= golang.org/x/tools v0.0.0-20191029190741-b9c20aec41a5/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20191112195655-aa38f8e97acc/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20200103221440-774c71fcf114/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20200110213125-a7a6caa82ab2 h1:V9r/14uGBqLgNlHRYWdVqjMdWkcOHnE2KG8DwVqQSEc= +golang.org/x/tools v0.0.0-20200110213125-a7a6caa82ab2/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +google.golang.org/api v0.3.1/go.mod h1:6wY9I6uQWHQ8EM57III9mq/AjF+i8G65rmVagqKMtkk= +google.golang.org/api v0.4.0/go.mod h1:8k5glujaEP+g9n7WNsDg8QP6cUVNI86fCNMcbazEtwE= +google.golang.org/api v0.7.0/go.mod h1:WtwebWUNSVBH/HAw79HIFXZNqEvBhG+Ra+ax0hx3E3M= +google.golang.org/api v0.8.0/go.mod h1:o4eAsZoiT+ibD93RtjEohWalFOjRDx6CVaqeizhEnKg= +google.golang.org/api v0.9.0/go.mod h1:o4eAsZoiT+ibD93RtjEohWalFOjRDx6CVaqeizhEnKg= +google.golang.org/api v0.13.0/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsbkAI= google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM= +google.golang.org/appengine v1.2.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= +google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= +google.golang.org/appengine v1.5.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= +google.golang.org/appengine v1.6.1/go.mod h1:i06prIuMbXzDqacNJfV5OdTW448YApPu5ww/cMBSeb0= google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= -google.golang.org/genproto v0.0.0-20181029155118-b69ba1387ce2 h1:67iHsV9djwGdZpdZNbLuQj6FOzCaZe3w+vhLjn5AcFA= -google.golang.org/genproto v0.0.0-20181029155118-b69ba1387ce2/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= -google.golang.org/grpc v1.22.0 h1:J0UbZOIrCAl+fpTOf8YLs4dJo8L/owV4LYVtAXQoPkw= -google.golang.org/grpc v1.22.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= +google.golang.org/genproto v0.0.0-20180831171423-11092d34479b/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= +google.golang.org/genproto v0.0.0-20190307195333-5fe7a883aa19/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= +google.golang.org/genproto v0.0.0-20190418145605-e7d98fc518a7/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= +google.golang.org/genproto v0.0.0-20190425155659-357c62f0e4bb/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= +google.golang.org/genproto v0.0.0-20190502173448-54afdca5d873/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= +google.golang.org/genproto v0.0.0-20190530194941-fb225487d101/go.mod h1:z3L6/3dTEVtUr6QSP8miRzeRqwQOioJ9I66odjN4I7s= +google.golang.org/genproto v0.0.0-20190801165951-fa694d86fc64/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= +google.golang.org/genproto v0.0.0-20190819201941-24fa4b261c55/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= +google.golang.org/genproto v0.0.0-20190911173649-1774047e7e51/go.mod h1:IbNlFCBrqXvoKpeg0TB2l7cyZUmoaFKYIwrEpbDKLA8= +google.golang.org/genproto v0.0.0-20191108220845-16a3f7862a1a/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= +google.golang.org/genproto v0.0.0-20200324203455-a04cca1dde73/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= +google.golang.org/genproto v0.0.0-20200513103714-09dca8ec2884/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= +google.golang.org/genproto v0.0.0-20200526211855-cb27e3aa2013 h1:+kGHl1aib/qcwaRi1CbqBZ1rk19r85MNUf8HaBghugY= +google.golang.org/genproto v0.0.0-20200526211855-cb27e3aa2013/go.mod h1:NbSheEEYHJ7i3ixzK3sjbqSGDJWnxyFXZblF3eUsNvo= +google.golang.org/grpc v1.17.0/go.mod h1:6QZJwpn2B+Zp71q/5VxRsJ6NXXVCE5NRUHRo+f3cWCs= +google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= +google.golang.org/grpc v1.19.1/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= +google.golang.org/grpc v1.20.0/go.mod h1:chYK+tFQF0nDUGJgXMSgLCQk3phJEuONr2DCgLDdAQM= +google.golang.org/grpc v1.20.1/go.mod h1:10oTOabMzJvdu6/UiuZezV6QK5dSlG84ov/aaiqXj38= +google.golang.org/grpc v1.21.0/go.mod h1:oYelfM1adQP15Ek0mdvEgi9Df8B9CZIaU1084ijfRaM= +google.golang.org/grpc v1.21.1/go.mod h1:oYelfM1adQP15Ek0mdvEgi9Df8B9CZIaU1084ijfRaM= +google.golang.org/grpc v1.22.1/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= +google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= +google.golang.org/grpc v1.23.1/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= +google.golang.org/grpc v1.25.1/go.mod h1:c3i+UQWmh7LiEpx4sFZnkU36qjEYZ0imhYfXVyQciAY= +google.golang.org/grpc v1.26.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= +google.golang.org/grpc v1.27.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= +google.golang.org/grpc v1.28.0/go.mod h1:rpkK4SK4GF4Ach/+MFLZUBavHOvF2JJB5uozKKal+60= +google.golang.org/grpc v1.31.0 h1:T7P4R73V3SSDPhH7WW7ATbfViLtmamH0DKrP3f9AuDI= +google.golang.org/grpc v1.31.0/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak= +google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8= +google.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0= +google.golang.org/protobuf v0.0.0-20200228230310-ab0ca4ff8a60/go.mod h1:cfTl7dwQJ+fmap5saPgwCLgHXTUD7jkjRqWcaiX5VyM= +google.golang.org/protobuf v1.20.1-0.20200309200217-e05f789c0967/go.mod h1:A+miEFZTKqfCUM6K7xSMQL9OKL/b6hQv+e19PK+JZNE= +google.golang.org/protobuf v1.21.0/go.mod h1:47Nbq4nVaFHyn7ilMalzfO3qCViNmqZ2kzikPIcrTAo= +google.golang.org/protobuf v1.22.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= +google.golang.org/protobuf v1.23.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= +google.golang.org/protobuf v1.23.1-0.20200526195155-81db48ad09cc/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= +google.golang.org/protobuf v1.24.0/go.mod h1:r/3tXBNzIEhYS9I1OUVjXDlt8tc493IdKGjtUeSXeh4= +google.golang.org/protobuf v1.25.0 h1:Ejskq+SyPohKW+1uil0JJMtmHCgJPJ/qWTxr8qp+R4c= +google.golang.org/protobuf v1.25.0/go.mod h1:9JNX74DMeImyA3h4bdi1ymwjUzf21/xIlbajtzgsN7c= +gopkg.in/alecthomas/kingpin.v2 v2.2.6/go.mod h1:FMv+mEhP44yOT+4EoQTLFTRgOQ1FBLkstjWtayDeSgw= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= -gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127 h1:qIbj1fsPNlZgppZ+VLlY7N33q108Sa+fhmuc+sWQYwY= gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/check.v1 v1.0.0-20200227125254-8fa46927fb4f/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/cheggaaa/pb.v1 v1.0.25/go.mod h1:V/YB90LKu/1FcN3WVnfiiE5oMCibMjukxqG/qStrOgw= gopkg.in/errgo.v2 v2.1.0/go.mod h1:hNsd1EY+bozCKY1Ytp96fpM3vjJbqLJn88ws8XvfDNI= gopkg.in/fsnotify.v1 v1.4.7/go.mod h1:Tz8NjZHkW78fSQdbUxIjBTcgA1z1m8ZHf0WmKUhAMys= +gopkg.in/gcfg.v1 v1.2.3/go.mod h1:yesOnuUOFQAhST5vPY4nbZsb/huCgGGXlipJsBn0b3o= +gopkg.in/ini.v1 v1.51.0 h1:AQvPpx3LzTDM0AjnIRlVFwFFGC+npRopjZxLJj6gdno= +gopkg.in/ini.v1 v1.51.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= gopkg.in/mgo.v2 v2.0.0-20190816093944-a6b53ec6cb22 h1:VpOs+IwYnYBaFnrNAeB8UUWtL3vEUnzSCL1nVjPhqrw= gopkg.in/mgo.v2 v2.0.0-20190816093944-a6b53ec6cb22/go.mod h1:yeKp02qBN3iKW1OzL3MGk2IdtZzaj7SFntXj72NppTA= gopkg.in/natefinch/lumberjack.v2 v2.0.0 h1:1Lc07Kr7qY4U2YPouBjpCLxpiyxIVoxqXgkXLknAOE8= gopkg.in/natefinch/lumberjack.v2 v2.0.0/go.mod h1:l0ndWWf7gzL7RNwBG7wST/UCcT4T24xpD6X8LsfU/+k= +gopkg.in/resty.v1 v1.12.0/go.mod h1:mDo4pnntr5jdWRML875a/NmxYqAlA73dVijT2AXvQQo= gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7/go.mod h1:dt/ZhP58zS4L8KSrWDmTeBkI65Dw0HsyUHuEVlX15mw= -gopkg.in/tomb.v2 v2.0.0-20161208151619-d5d1b5820637 h1:yiW+nvdHb9LVqSHQBXfZCieqV4fzYhNBql77zY0ykqs= gopkg.in/tomb.v2 v2.0.0-20161208151619-d5d1b5820637/go.mod h1:BHsqpu/nsuzkT5BpiH1EMZPLyqSMM8JbIavyFACoFNk= +gopkg.in/warnings.v0 v0.1.2/go.mod h1:jksf8JmL6Qr/oQM2OXTHunEvvTAsrWBLb6OOjuVWRNI= +gopkg.in/yaml.v2 v2.0.0-20170812160011-eb3733d160e7/go.mod h1:JAlM8MvJe8wmxCU4Bli9HhUf9+ttbYbLASfIpnQbh74= gopkg.in/yaml.v2 v2.2.1/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= -gopkg.in/yaml.v2 v2.2.2 h1:ZCJp+EgiOT7lHqUV2J862kp8Qj64Jo6az82+3Td9dZw= gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +gopkg.in/yaml.v2 v2.2.3/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +gopkg.in/yaml.v2 v2.2.4/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +gopkg.in/yaml.v2 v2.2.5/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +gopkg.in/yaml.v2 v2.3.0 h1:clyUAQHOM3G0M3f5vQj7LuJrETvjVot3Z5el9nffUtU= +gopkg.in/yaml.v2 v2.3.0/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c h1:dUUwHk2QECo/6vqA44rthZ8ie2QXMNeKRTHCNY2nXvo= +gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= +honnef.co/go/tools v0.0.0-20180728063816-88497007e858/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= +honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= +honnef.co/go/tools v0.0.0-20190106161140-3f1c8253044a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= +honnef.co/go/tools v0.0.0-20190418001031-e561f6794a2a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= honnef.co/go/tools v0.0.0-20190523083050-ea95bdfd59fc/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= honnef.co/go/tools v0.0.1-2019.2.3 h1:3JgtbtFHMiCmsznwGVTUWbgGov+pVqnlf1dEJTNAXeM= honnef.co/go/tools v0.0.1-2019.2.3/go.mod h1:a3bituU0lyd329TUQxRnasdCoJDkEUEAqEt0JzvZhAg= +rsc.io/binaryregexp v0.2.0/go.mod h1:qTv7/COck+e2FymRvadv62gMdZztPaShugOCi3I+8D8= +sigs.k8s.io/yaml v1.1.0/go.mod h1:UJmg0vDUVViEyp3mgSv9WPwZCDxu4rQW1olrI1uml+o= +sourcegraph.com/sourcegraph/appdash v0.0.0-20190731080439-ebfcffb1b5c0/go.mod h1:hI742Nqp5OhwiqlzhgfbWU4mW4yO10fP+LoT9WOswdU= diff --git a/lib/cdc/cdc.go b/lib/cdc/cdc.go new file mode 100644 index 0000000..ba5a970 --- /dev/null +++ b/lib/cdc/cdc.go @@ -0,0 +1,70 @@ +package cdc + +import ( + "github.com/cosmos/cosmos-sdk/codec" + ctypes "github.com/cosmos/cosmos-sdk/codec/types" + "github.com/cosmos/cosmos-sdk/simapp/params" + "github.com/cosmos/cosmos-sdk/std" + sdk "github.com/cosmos/cosmos-sdk/types" + "github.com/cosmos/cosmos-sdk/types/module" + "github.com/cosmos/cosmos-sdk/x/auth" + "github.com/cosmos/cosmos-sdk/x/auth/tx" + "github.com/cosmos/cosmos-sdk/x/bank" + "github.com/cosmos/cosmos-sdk/x/crisis" + "github.com/cosmos/cosmos-sdk/x/distribution" + "github.com/cosmos/cosmos-sdk/x/evidence" + "github.com/cosmos/cosmos-sdk/x/gov" + "github.com/cosmos/cosmos-sdk/x/slashing" + "github.com/cosmos/cosmos-sdk/x/staking" + "github.com/irismod/coinswap" + "github.com/irismod/htlc" + "github.com/irismod/nft" + "github.com/irismod/record" + "github.com/irismod/service" + "github.com/irismod/token" +) + +var ( + encodecfg params.EncodingConfig + moduleBasics = module.NewBasicManager( + auth.AppModuleBasic{}, + bank.AppModuleBasic{}, + service.AppModuleBasic{}, + nft.AppModuleBasic{}, + htlc.AppModuleBasic{}, + coinswap.AppModuleBasic{}, + record.AppModuleBasic{}, + token.AppModuleBasic{}, + gov.AppModuleBasic{}, + staking.AppModuleBasic{}, + distribution.AppModuleBasic{}, + slashing.AppModuleBasic{}, + evidence.AppModuleBasic{}, + crisis.AppModuleBasic{}, + htlc.AppModuleBasic{}, + coinswap.AppModuleBasic{}, + ) +) + +// 初始化账户地址前缀 +func init() { + var cdc = codec.New() + + interfaceRegistry := ctypes.NewInterfaceRegistry() + marshaler := codec.NewProtoCodec(interfaceRegistry) + txCfg := tx.NewTxConfig(marshaler, std.DefaultPublicKeyCodec{}, tx.DefaultSignModes) + + encodecfg = params.EncodingConfig{ + InterfaceRegistry: interfaceRegistry, + Marshaler: marshaler, + TxConfig: txCfg, + Amino: cdc, + } + std.RegisterCodec(encodecfg.Amino) + std.RegisterInterfaces(encodecfg.InterfaceRegistry) + moduleBasics.RegisterCodec(encodecfg.Amino) + moduleBasics.RegisterInterfaces(encodecfg.InterfaceRegistry) +} +func GetTxDecoder() sdk.TxDecoder { + return encodecfg.TxConfig.TxDecoder() +} diff --git a/helper/pool_client.go b/lib/pool/pool_client.go similarity index 75% rename from helper/pool_client.go rename to lib/pool/pool_client.go index 93f8b4c..57ace9c 100644 --- a/helper/pool_client.go +++ b/lib/pool/pool_client.go @@ -1,25 +1,26 @@ //init client from clientPool. //client is httpClient of tendermint -package helper +package pool import ( "fmt" - rpcClient "github.com/tendermint/tendermint/rpc/client" "github.com/irisnet/rainbow-sync/logger" + rpcClient "github.com/tendermint/tendermint/rpc/client/http" "time" ) type Client struct { Id string - rpcClient.Client + *rpcClient.HTTP } -func newClient(addr string) *Client { +func newClient(addr string) (*Client, error) { + client, err := rpcClient.New(addr, "/websocket") return &Client{ - Id: generateId(addr), - Client: rpcClient.NewHTTP(addr, "/websocket"), - } + Id: generateId(addr), + HTTP: client, + }, err } // get client from pool @@ -43,7 +44,7 @@ func (c *Client) Release() { } func (c *Client) HeartBeat() error { - http := c.Client.(*rpcClient.HTTP) + http := c.HTTP _, err := http.Health() return err } diff --git a/helper/pool_factory.go b/lib/pool/pool_factory.go similarity index 94% rename from helper/pool_factory.go rename to lib/pool/pool_factory.go index 1466ac7..e36654b 100644 --- a/helper/pool_factory.go +++ b/lib/pool/pool_factory.go @@ -1,9 +1,9 @@ -package helper +package pool import ( "context" - commonPool "github.com/jolestar/go-commons-pool" "github.com/irisnet/rainbow-sync/logger" + commonPool "github.com/jolestar/go-commons-pool" "math/rand" "sync" ) @@ -59,7 +59,12 @@ func ClosePool() { func (f *PoolFactory) MakeObject(ctx context.Context) (*commonPool.PooledObject, error) { endpoint := f.GetEndPoint() - return commonPool.NewPooledObject(newClient(endpoint.Address)), nil + c, err := newClient(endpoint.Address) + if err != nil { + return nil, err + } else { + return commonPool.NewPooledObject(c), nil + } } func (f *PoolFactory) DestroyObject(ctx context.Context, object *commonPool.PooledObject) error { diff --git a/model/iris_asset_detail.go b/model/iris_asset_detail.go deleted file mode 100644 index d851052..0000000 --- a/model/iris_asset_detail.go +++ /dev/null @@ -1,48 +0,0 @@ -package model - -import ( - "gopkg.in/mgo.v2/bson" - "gopkg.in/mgo.v2" - "github.com/irisnet/rainbow-sync/db" -) - -type ( - IrisAssetDetail struct { - From string `bson:"from"` - To string `bson:"to"` - CoinAmount string `bson:"coin_amount"` - CoinUnit string `bson:"coin_unit"` - Trigger string `bson:"trigger"` - Subject string `bson:"subject"` - Description string `bson:"description"` - Timestamp string `bson:"timestamp"` - Height int64 `bson:"height"` - TxHash string `bson:"tx_hash"` - Ext string `bson:"ext"` - } -) - -const ( - CollectionNameAssetDetail = "sync_iris_asset_detail" -) - -func (d IrisAssetDetail) Name() string { - return CollectionNameAssetDetail -} - -func (d IrisAssetDetail) PkKvPair() map[string]interface{} { - return bson.M{} -} - -func (d IrisAssetDetail) EnsureIndexes() { - var indexes []mgo.Index - indexes = append(indexes, mgo.Index{ - Key: []string{"-to", "-height"}, - Background: true, - }) - indexes = append(indexes, mgo.Index{ - Key: []string{"-to", "-subject"}, - Background: true, - }) - db.EnsureIndexes(d.Name(), indexes) -} diff --git a/model/msg/asset.go b/model/msg/asset.go deleted file mode 100644 index 98c69e0..0000000 --- a/model/msg/asset.go +++ /dev/null @@ -1,234 +0,0 @@ -package msg - -import ( - "strings" - "github.com/irisnet/rainbow-sync/constant" - "github.com/irisnet/rainbow-sync/logger" - imodel "github.com/irisnet/rainbow-sync/model" -) - -type ( - DocTxMsgIssueToken struct { - Family string `bson:"family"` - Source string `bson:"source"` - Gateway string `bson:"gateway"` - Symbol string `bson:"symbol"` - CanonicalSymbol string `bson:"canonical_symbol"` - Name string `bson:"name"` - Decimal uint8 `bson:"decimal"` - MinUnitAlias string `bson:"min_unit_alias"` - InitialSupply uint64 `bson:"initial_supply"` - MaxSupply uint64 `bson:"max_supply"` - Mintable bool `bson:"mintable"` - Owner string `bson:"owner"` - UdInfo assetTokenUdInfo `bson:"ud_info"` - } - - DocTxMsgEditToken struct { - TokenId string `bson:"token_id"` // id of token - Owner string `bson:"owner"` // owner of token - CanonicalSymbol string `bson:"canonical_symbol"` // canonical_symbol of token - MinUnitAlias string `bson:"min_unit_alias"` // min_unit_alias of token - MaxSupply uint64 `bson:"max_supply"` - Mintable string `bson:"mintable"` // mintable of token - Name string `bson:"name"` - UdInfo assetTokenUdInfo `bson:"ud_info"` - } - - DocTxMsgMintToken struct { - TokenId string `bson:"token_id"` // the unique id of the token - Owner string `bson:"owner"` // the current owner address of the token - To string `bson:"to"` // address of mint token to - Amount uint64 `bson:"amount"` // amount of mint token - UdInfo assetTokenUdInfo `bson:"ud_info"` - } - - DocTxMsgTransferTokenOwner struct { - SrcOwner string `bson:"src_owner"` // the current owner address of the token - DstOwner string `bson:"dst_owner"` // the new owner - TokenId string `bson:"token_id"` - UdInfo assetTokenUdInfo `bson:"ud_info"` - } - - DocTxMsgCreateGateway struct { - Owner string `bson:"owner"` // the owner address of the gateway - Moniker string `bson:"moniker"` // the globally unique name of the gateway - Identity string `bson:"identity"` // the identity of the gateway - Details string `bson:"details"` // the description of the gateway - Website string `bson:"website"` // the external website of the gateway - } - - DocTxMsgEditGateway struct { - Owner string `bson:"owner"` // Owner of the gateway - Moniker string `bson:"moniker"` // Moniker of the gateway - Identity string `bson:"identity"` // Identity of the gateway - Details string `bson:"details"` // Details of the gateway - Website string `bson:"website"` // Website of the gateway - } - - DocTxMsgTransferGatewayOwner struct { - Owner string `bson:"owner"` // the current owner address of the gateway - Moniker string `bson:"moniker"` // the unique name of the gateway to be transferred - To string `bson:"to"` // the new owner to which the gateway ownership will be transferred - } - - assetTokenUdInfo struct { - Source string `bson:"source"` - Gateway string `bson:"gateway"` - Symbol string `bson:"symbol"` - } -) - -const ( - separatorOfSymbolInTokenId = "." - externalTokenPrefix = "x" - SourceNative = "native" - SourceExternal = "external" - SourceGateWay = "gateway" -) - -func (m *DocTxMsgIssueToken) Type() string { - return constant.TxMsgTypeAssetIssueToken -} - -func (m *DocTxMsgIssueToken) BuildMsg(txMsg interface{}) { - msg := txMsg.(imodel.AssetIssueToken) - - m.Family = msg.Family.String() - m.Source = msg.Source.String() - m.Gateway = msg.Gateway - m.Symbol = msg.Symbol - m.CanonicalSymbol = msg.CanonicalSymbol - m.Name = msg.Name - m.Decimal = msg.Decimal - m.MinUnitAlias = msg.MinUnitAlias - m.InitialSupply = msg.InitialSupply - m.MaxSupply = msg.MaxSupply - m.Mintable = msg.Mintable - m.Owner = msg.Owner.String() - m.UdInfo = assetTokenUdInfo{ - Source: msg.Source.String(), - Gateway: msg.Gateway, - Symbol: msg.Symbol, - } -} - -func (m *DocTxMsgEditToken) Type() string { - return constant.TxMsgTypeAssetEditToken -} - -func (m *DocTxMsgEditToken) BuildMsg(txMsg interface{}) { - msg := txMsg.(imodel.AssetEditToken) - - m.TokenId = msg.TokenId - m.Owner = msg.Owner.String() - m.CanonicalSymbol = msg.CanonicalSymbol - m.MinUnitAlias = msg.MinUnitAlias - m.MaxSupply = msg.MaxSupply - m.Mintable = string(msg.Mintable) - m.Name = msg.Name - m.UdInfo = getAssetTokenUdInfo(msg.TokenId) -} - -func (m *DocTxMsgMintToken) Type() string { - return constant.TxMsgTypeAssetMintToken -} - -func (m *DocTxMsgMintToken) BuildMsg(txMsg interface{}) { - msg := txMsg.(imodel.AssetMintToken) - - m.TokenId = msg.TokenId - m.Owner = msg.Owner.String() - m.To = msg.To.String() - m.Amount = msg.Amount - m.UdInfo = getAssetTokenUdInfo(msg.TokenId) -} - -func (m *DocTxMsgTransferTokenOwner) Type() string { - return constant.TxMsgTypeAssetTransferTokenOwner -} - -func (m *DocTxMsgTransferTokenOwner) BuildMsg(txMsg interface{}) { - msg := txMsg.(imodel.AssetTransferTokenOwner) - - m.SrcOwner = msg.SrcOwner.String() - m.DstOwner = msg.DstOwner.String() - m.TokenId = msg.TokenId - m.UdInfo = getAssetTokenUdInfo(msg.TokenId) -} - -func (m *DocTxMsgCreateGateway) Type() string { - return constant.TxMsgTypeAssetCreateGateway -} - -func (m *DocTxMsgCreateGateway) BuildMsg(txMsg interface{}) { - msg := txMsg.(imodel.AssetCreateGateway) - - m.Owner = msg.Owner.String() - m.Moniker = msg.Moniker - m.Identity = msg.Identity - m.Details = msg.Details - m.Website = msg.Website -} - -func (m *DocTxMsgEditGateway) Type() string { - return constant.TxMsgTypeAssetEditGateway -} - -func (m *DocTxMsgEditGateway) BuildMsg(txMsg interface{}) { - msg := txMsg.(imodel.AssetEditGateWay) - - m.Owner = msg.Owner.String() - m.Moniker = msg.Moniker - m.Identity = msg.Identity - m.Details = msg.Details - m.Website = msg.Website -} - -func (m *DocTxMsgTransferGatewayOwner) Type() string { - return constant.TxMsgTypeAssetTransferGatewayOwner -} - -func (m *DocTxMsgTransferGatewayOwner) BuildMsg(txMsg interface{}) { - msg := txMsg.(imodel.AssetTransferGatewayOwner) - - m.Owner = msg.Owner.String() - m.Moniker = msg.Moniker - m.To = msg.To.String() -} - -// get assetTokenUdInfo by parse tokenId -// Global Unique Token ID Generation Rule -// When Source is native: ID = [Symbol], e.g. iris -// When Source is external: ID = x.[Symbol], e.g. x.btc -// When Source is gateway: ID = [Gateway].[Symbol], e.g. cats.kitty -func getAssetTokenUdInfo(tokenId string) assetTokenUdInfo { - var ( - source, gateway, symbol string - ) - strs := strings.Split(tokenId, separatorOfSymbolInTokenId) - - switch len(strs) { - case 1: - source = SourceNative - symbol = tokenId - break - case 2: - if strs[0] == externalTokenPrefix { - source = SourceExternal - symbol = strs[1] - } else { - source = SourceGateWay - gateway = strs[0] - symbol = strs[1] - } - default: - logger.Warn("can't get assetUserDefinedInfo by tokenId", logger.String("tokenId", tokenId)) - } - - return assetTokenUdInfo{ - Source: source, - Gateway: gateway, - Symbol: symbol, - } -} diff --git a/model/msg/bank.go b/model/msg/bank.go deleted file mode 100644 index de8b148..0000000 --- a/model/msg/bank.go +++ /dev/null @@ -1,21 +0,0 @@ -package msg - -import ( - "github.com/irisnet/rainbow-sync/constant" - imodel "github.com/irisnet/rainbow-sync/model" -) - -type DocTxMsgSetMemoRegexp struct { - Owner string `bson:"owner"` - MemoRegexp string `bson:"memo_regexp"` -} - -func (doctx *DocTxMsgSetMemoRegexp) Type() string { - return constant.Iris_TxTypeSetMemoRegexp -} - -func (doctx *DocTxMsgSetMemoRegexp) BuildMsg(txMsg interface{}) { - msg := txMsg.(imodel.MsgSetMemoRegexp) - doctx.MemoRegexp = msg.MemoRegexp - doctx.Owner = msg.Owner.String() -} diff --git a/model/msg/gov.go b/model/msg/gov.go deleted file mode 100644 index 96e134a..0000000 --- a/model/msg/gov.go +++ /dev/null @@ -1,152 +0,0 @@ -package msg - -import ( - "github.com/irisnet/rainbow-sync/constant" - imodel "github.com/irisnet/rainbow-sync/model" - "github.com/irisnet/irishub/app/v1/gov" - "strconv" -) - -type Param struct { - Subspace string `bson:"subspace"` - Key string `bson:"key"` - Value string `bson:"value"` -} - -type Params []Param - -type DocTxMsgSubmitProposal struct { - Title string `bson:"title"` // Title of the proposal - Description string `bson:"description"` // Description of the proposal - Proposer string `bson:"proposer"` // Address of the proposer - InitialDeposit imodel.Coins `bson:"initialDeposit"` // Initial deposit paid by sender. Must be strictly positive. - ProposalType string `bson:"proposalType"` // Initial deposit paid by sender. Must be strictly positive. - Params Params `bson:"params"` -} - -func (doctx *DocTxMsgSubmitProposal) Type() string { - return constant.Iris_TxTypeSubmitProposal -} - -func (doctx *DocTxMsgSubmitProposal) BuildMsg(txMsg interface{}) { - msg := txMsg.(imodel.MsgSubmitProposal) - doctx.Title = msg.Title - doctx.Description = msg.Description - doctx.ProposalType = msg.ProposalType.String() - doctx.Proposer = msg.Proposer.String() - doctx.Params = loadParams(msg.Params) - doctx.InitialDeposit = loadInitialDeposit(msg.InitialDeposit) -} - -type DocTxMsgSubmitSoftwareUpgradeProposal struct { - DocTxMsgSubmitProposal - Version uint64 `bson:"version"` - Software string `bson:"software"` - SwitchHeight uint64 `bson:"switch_height"` - Threshold string `bson:"threshold"` -} - -func (doctx *DocTxMsgSubmitSoftwareUpgradeProposal) Type() string { - return constant.Iris_TxTypeSubmitProposal -} - -func (doctx *DocTxMsgSubmitSoftwareUpgradeProposal) BuildMsg(txMsg interface{}) { - msg := txMsg.(imodel.MsgSubmitSoftwareUpgradeProposal) - doctx.Title = msg.Title - doctx.Description = msg.Description - doctx.ProposalType = msg.ProposalType.String() - doctx.Proposer = msg.Proposer.String() - doctx.Params = loadParams(msg.Params) - doctx.InitialDeposit = loadInitialDeposit(msg.InitialDeposit) - doctx.Version = msg.Version - doctx.Software = msg.Software - doctx.SwitchHeight = msg.SwitchHeight - doctx.Threshold = msg.Threshold.String() -} - -type DocTxMsgSubmitCommunityTaxUsageProposal struct { - DocTxMsgSubmitProposal - Usage string `bson:"usage"` - DestAddress string `bson:"dest_address"` - Percent string `bson:"percent"` -} - -func (doctx *DocTxMsgSubmitCommunityTaxUsageProposal) Type() string { - return constant.Iris_TxTypeSubmitProposal -} - -func (doctx *DocTxMsgSubmitCommunityTaxUsageProposal) BuildMsg(txMsg interface{}) { - msg := txMsg.(imodel.MsgSubmitTaxUsageProposal) - doctx.Title = msg.Title - doctx.Description = msg.Description - doctx.ProposalType = msg.ProposalType.String() - doctx.Proposer = msg.Proposer.String() - doctx.Params = loadParams(msg.Params) - doctx.InitialDeposit = loadInitialDeposit(msg.InitialDeposit) - doctx.Usage = msg.Usage.String() - doctx.DestAddress = msg.DestAddress.String() - doctx.Percent = msg.Percent.String() -} - -type DocTxMsgSubmitTokenAdditionProposal struct { - DocTxMsgSubmitProposal - Symbol string `bson:"symbol"` - CanonicalSymbol string `bson:"canonical_symbol"` - Name string `bson:"name"` - Decimal uint8 `bson:"decimal"` - MinUnitAlias string `bson:"min_unit_alias"` - //InitialSupply uint64 `bson:"initial_supply"` -} - -func (doctx *DocTxMsgSubmitTokenAdditionProposal) Type() string { - return constant.Iris_TxTypeSubmitTokenAdditionProposal -} - -func (doctx *DocTxMsgSubmitTokenAdditionProposal) BuildMsg(txMsg interface{}) { - msg := txMsg.(imodel.MsgSubmitTokenAdditionProposal) - doctx.Title = msg.Title - doctx.Description = msg.Description - doctx.ProposalType = msg.ProposalType.String() - doctx.Proposer = msg.Proposer.String() - doctx.Params = loadParams(msg.Params) - doctx.InitialDeposit = loadInitialDeposit(msg.InitialDeposit) - doctx.Symbol = msg.Symbol - doctx.MinUnitAlias = msg.MinUnitAlias - doctx.CanonicalSymbol = msg.CanonicalSymbol - doctx.Name = msg.Name - doctx.Decimal = msg.Decimal - //doctx.InitialSupply = msg.InitialSupply -} - -func loadParams(params []gov.Param) (result []Param) { - for _, val := range params { - result = append(result, Param{Subspace: val.Subspace, Value: val.Value, Key: val.Key}) - } - return -} - -func loadInitialDeposit(coins imodel.SdkCoins) (result imodel.Coins) { - for _, val := range coins { - amt, _ := strconv.ParseFloat(val.Amount.String(), 64) - result = append(result, &imodel.Coin{Amount: amt, Denom: val.Denom}) - } - return -} - -// MsgVote -type DocTxMsgVote struct { - ProposalID uint64 `bson:"proposal_id"` // ID of the proposal - Voter string `bson:"voter"` // address of the voter - Option string `bson:"option"` // option from OptionSet chosen by the voter -} - -func (doctx *DocTxMsgVote) Type() string { - return constant.Iris_TxTypeVote -} - -func (doctx *DocTxMsgVote) BuildMsg(txMsg interface{}) { - msg := txMsg.(imodel.MsgVote) - doctx.Voter = msg.Voter.String() - doctx.Option = msg.Option.String() - doctx.ProposalID = msg.ProposalID -} diff --git a/model/msg/rand.go b/model/msg/rand.go deleted file mode 100644 index 3ec7bf4..0000000 --- a/model/msg/rand.go +++ /dev/null @@ -1,21 +0,0 @@ -package msg - -import ( - "github.com/irisnet/rainbow-sync/constant" - imodel "github.com/irisnet/rainbow-sync/model" -) - -type DocTxMsgRequestRand struct { - Consumer string `bson:"consumer"` // request address - BlockInterval uint64 `bson:"block-interval"` // block interval after which the requested random number will be generated -} - -func (doctx *DocTxMsgRequestRand) Type() string { - return constant.Iris_TxTypeRequestRand -} - -func (doctx *DocTxMsgRequestRand) BuildMsg(txMsg interface{}) { - msg := txMsg.(imodel.MsgRequestRand) - doctx.Consumer = msg.Consumer.String() - doctx.BlockInterval = msg.BlockInterval -} diff --git a/model/tx.go b/model/tx.go index 7e0c7a2..6f3d778 100644 --- a/model/tx.go +++ b/model/tx.go @@ -1,48 +1,53 @@ package model import ( - "github.com/irisnet/irishub/app/v1/asset" - "github.com/irisnet/irishub/app/v1/bank" - "github.com/irisnet/irishub/app/v1/distribution" - dtags "github.com/irisnet/irishub/app/v1/distribution/tags" - dtypes "github.com/irisnet/irishub/app/v1/distribution/types" - "github.com/irisnet/irishub/app/v1/gov" - "github.com/irisnet/irishub/app/v1/rand" - "github.com/irisnet/irishub/app/v1/slashing" - "github.com/irisnet/irishub/app/v1/stake" - "github.com/irisnet/irishub/types" + sdk "github.com/cosmos/cosmos-sdk/types" "github.com/irisnet/rainbow-sync/db" "gopkg.in/mgo.v2" "gopkg.in/mgo.v2/bson" - "time" ) -type IrisTx struct { - Time time.Time `json:"time" bson:"time"` - Height int64 `json:"height" bson:"height"` - TxHash string `json:"tx_hash" bson:"tx_hash"` - From string `json:"from" bson:"from"` - To string `json:"to" bson:"to"` - Initiator string `json:"initiator" bson:"initiator"` - Amount []*Coin `json:"amount" bson:"amount"` - Type string `json:"type" bson:"type"` - Fee *Fee `json:"fee" bson:"fee"` - ActualFee *ActualFee `json:"actual_fee" bson:"actual_fee"` - Memo string `json:"memo" bson:"memo"` - Status string `json:"status" bson:"status"` - Code uint32 `json:"code" bson:"code"` - Log string `json:"log" bson:"log"` - Tags map[string]string `json:"tags" bson:"tags"` - Msgs []DocTxMsg `bson:"msgs"` +type Tx struct { + Time int64 `bson:"time"` + Height int64 `bson:"height"` + TxHash string `bson:"tx_hash"` + From string `bson:"from"` + To string `bson:"to"` + Amount []*Coin `bson:"amount"` + Type string `bson:"type"` + Fee *Fee `bson:"fee"` + ActualFee *ActualFee `bson:"actual_fee"` + Memo string `bson:"memo"` + Status string `bson:"status"` + Log string `bson:"log"` + Types []string `bson:"types"` + Events []Event `bson:"events"` + Msgs []DocTxMsg `bson:"msgs"` + Signers []string `bson:"signers"` + Addrs []string `bson:"addrs"` + TxIndex uint32 `bson:"tx_index"` + Ext interface{} `bson:"ext"` } +type ( + Event struct { + Type string `bson:"type"` + Attributes []KvPair `bson:"attributes"` + } + + KvPair struct { + Key string `bson:"key"` + Value string `bson:"value"` + } +) + type DocTxMsg struct { Type string `bson:"type"` Msg Msg `bson:"msg"` } type Msg interface { - Type() string + GetType() string BuildMsg(msg interface{}) } @@ -50,21 +55,24 @@ const ( CollectionNameIrisTx = "sync_iris_tx" ) -func (d IrisTx) Name() string { +func (d Tx) Name() string { return CollectionNameIrisTx } -func (d IrisTx) PkKvPair() map[string]interface{} { - return bson.M{} +func (d Tx) PkKvPair() map[string]interface{} { + return bson.M{"height": d.Height, "tx_index": d.TxIndex} } -func (d IrisTx) EnsureIndexes() { +func (d Tx) EnsureIndexes() { var indexes []mgo.Index indexes = append(indexes, mgo.Index{ - Key: []string{"-tx_hash"}, + Key: []string{"-height", "-tx_index"}, Unique: true, Background: true}, + mgo.Index{ + Key: []string{"-tx_hash"}, + Background: true}, mgo.Index{ Key: []string{"-type"}, Background: true}, @@ -74,69 +82,48 @@ func (d IrisTx) EnsureIndexes() { mgo.Index{ Key: []string{"-to", "-height"}, Background: true}, - mgo.Index{ - Key: []string{"-initiator"}, - Background: true}, ) db.EnsureIndexes(d.Name(), indexes) } -type ( - MsgTransfer = bank.MsgSend - MsgBurn = bank.MsgBurn - MsgSetMemoRegexp = bank.MsgSetMemoRegexp - - MsgStakeCreate = stake.MsgCreateValidator - MsgStakeEdit = stake.MsgEditValidator - MsgStakeDelegate = stake.MsgDelegate - MsgStakeBeginUnbonding = stake.MsgBeginUnbonding - MsgBeginRedelegate = stake.MsgBeginRedelegate - MsgUnjail = slashing.MsgUnjail - MsgSetWithdrawAddress = dtypes.MsgSetWithdrawAddress - MsgWithdrawDelegatorReward = distribution.MsgWithdrawDelegatorReward - MsgWithdrawDelegatorRewardsAll = distribution.MsgWithdrawDelegatorRewardsAll - MsgWithdrawValidatorRewardsAll = distribution.MsgWithdrawValidatorRewardsAll - - MsgDeposit = gov.MsgDeposit - MsgSubmitProposal = gov.MsgSubmitProposal - MsgSubmitSoftwareUpgradeProposal = gov.MsgSubmitSoftwareUpgradeProposal - MsgSubmitTaxUsageProposal = gov.MsgSubmitCommunityTaxUsageProposal - MsgSubmitTokenAdditionProposal = gov.MsgSubmitTokenAdditionProposal - MsgVote = gov.MsgVote - - MsgRequestRand = rand.MsgRequestRand - - AssetIssueToken = asset.MsgIssueToken - AssetEditToken = asset.MsgEditToken - AssetMintToken = asset.MsgMintToken - AssetTransferTokenOwner = asset.MsgTransferTokenOwner - AssetCreateGateway = asset.MsgCreateGateway - AssetEditGateWay = asset.MsgEditGateway - AssetTransferGatewayOwner = asset.MsgTransferGatewayOwner - - SdkCoins = types.Coins - KVPair = types.KVPair -) - -var ( - TagDistributionReward = dtags.Reward - TagDistributionWithdrawAddr = dtags.WithdrawAddr -) - type Coin struct { - Denom string `bson:"denom" json:"denom"` - Amount float64 `bson:"amount" json:"amount"` + Denom string `bson:"denom" json:"denom"` + Amount string `bson:"amount" json:"amount"` } type Coins []*Coin type Fee struct { - Amount Coins `bson:"amount" json:"amount"` - Gas int64 `bson:"gas" json:"gas"` + Amount []Coin `bson:"amount" json:"amount"` + Gas int64 `bson:"gas" json:"gas"` } type ActualFee struct { - Denom string `json:"denom"` - Amount float64 `json:"amount"` + Denom string `json:"denom"` + Amount string `json:"amount"` +} + +func BuildDocCoins(coins sdk.Coins) []Coin { + var ( + res []Coin + ) + if len(coins) > 0 { + for _, v := range coins { + c := Coin{ + Denom: v.Denom, + Amount: v.Amount.String(), + } + res = append(res, c) + } + } + + return res +} + +func BuildDocCoin(coin sdk.Coin) Coin { + return Coin{ + Denom: coin.Denom, + Amount: coin.Amount.String(), + } } diff --git a/model/types.go b/model/types.go index a80ea65..99b6ffc 100644 --- a/model/types.go +++ b/model/types.go @@ -3,16 +3,14 @@ package model import "github.com/irisnet/rainbow-sync/db" var ( - SyncTaskModel SyncTask - BlockModel Block - TxModel IrisTx - AssetDetailModel IrisAssetDetail + SyncTaskModel SyncTask + BlockModel Block + TxModel Tx Collections = []db.Docs{ SyncTaskModel, BlockModel, TxModel, - AssetDetailModel, } ) diff --git a/task/create.go b/task/create.go index 7019018..478ce47 100644 --- a/task/create.go +++ b/task/create.go @@ -2,7 +2,6 @@ package task import ( "fmt" - "github.com/irisnet/rainbow-sync/block" "github.com/irisnet/rainbow-sync/conf" model "github.com/irisnet/rainbow-sync/db" "github.com/irisnet/rainbow-sync/logger" @@ -13,19 +12,18 @@ import ( ) type TaskIrisService struct { - blockType block.Iris_Block syncIrisModel imodel.SyncTask } const maxRecordNumForBatchInsert = 1000 func (s *TaskIrisService) StartCreateTask() { - blockNumPerWorkerHandle := int64(conf.BlockNumPerWorkerHandle) + blockNumPerWorkerHandle := int64(conf.SvrConf.BlockNumPerWorkerHandle) - logger.Info("Start create task", logger.String("Chain Block", s.blockType.Name())) + logger.Info("Start create task") // buffer channel to limit goroutine num - chanLimit := make(chan bool, conf.WorkerNumCreateTask) + chanLimit := make(chan bool, conf.SvrConf.WorkerNumCreateTask) for { chanLimit <- true @@ -44,8 +42,7 @@ func (s *TaskIrisService) createTask(blockNumPerWorkerHandle int64, chanLimit ch defer func() { if err := recover(); err != nil { - logger.Error("Create task failed", logger.Any("err", err), - logger.String("Chain Block", s.blockType.Name())) + logger.Error("Create task failed", logger.Any("err", err)) } <-chanLimit }() @@ -58,41 +55,37 @@ func (s *TaskIrisService) createTask(blockNumPerWorkerHandle int64, chanLimit ch model.SyncTaskStatusUnderway, }, model.SyncTaskTypeFollow) if err != nil { - logger.Error("Query sync task failed", logger.String("err", err.Error()), - logger.String("Chain Block", s.blockType.Name())) + logger.Error("Query sync task failed", logger.String("err", err.Error())) return } if len(validFollowTasks) == 0 { // get max end_height from sync_task maxEndHeight, err := s.syncIrisModel.GetMaxBlockHeight() if err != nil { - logger.Error("Get max endBlock failed", logger.String("err", err.Error()), - logger.String("Chain Block", s.blockType.Name())) + logger.Error("Get max endBlock failed", logger.String("err", err.Error())) return } blockChainLatestHeight, err := getBlockChainLatestHeight() if err != nil { - logger.Error("Get current block height failed", logger.String("err", err.Error()), - logger.String("Chain Block", s.blockType.Name())) + logger.Error("Get current block height failed", logger.String("err", err.Error())) return } if maxEndHeight+blockNumPerWorkerHandle <= blockChainLatestHeight { syncIrisTasks = createCatchUpTask(maxEndHeight, blockNumPerWorkerHandle, blockChainLatestHeight) - logMsg = fmt.Sprintf("Create catch up task during follow task not exist,from-to:%v-%v,Chain Block:%v", - maxEndHeight+1, blockChainLatestHeight, s.blockType.Name()) + logMsg = fmt.Sprintf("Create catch up task during follow task not exist,from-to:%v-%v", + maxEndHeight+1, blockChainLatestHeight) } else { finished, err := s.assertAllCatchUpTaskFinished() if err != nil { - logger.Error("AssertAllCatchUpTaskFinished failed", logger.String("err", err.Error()), - logger.String("Chain Block", s.blockType.Name())) + logger.Error("AssertAllCatchUpTaskFinished failed", logger.String("err", err.Error())) return } if finished { syncIrisTasks = createFollowTask(maxEndHeight, blockNumPerWorkerHandle, blockChainLatestHeight) - logMsg = fmt.Sprintf("Create follow task during follow task not exist,from-to:%v-%v,Chain Block:%v", - maxEndHeight+1, blockChainLatestHeight, s.blockType.Name()) + logMsg = fmt.Sprintf("Create follow task during follow task not exist,from-to:%v-%v", + maxEndHeight+1, blockChainLatestHeight) } } } else { @@ -104,8 +97,7 @@ func (s *TaskIrisService) createTask(blockNumPerWorkerHandle int64, chanLimit ch blockChainLatestHeight, err := getBlockChainLatestHeight() if err != nil { - logger.Error("Get blockChain latest height failed", logger.String("err", err.Error()), - logger.String("Chain Block", s.blockType.Name())) + logger.Error("Get blockChain latest height failed", logger.String("err", err.Error())) return } @@ -113,8 +105,8 @@ func (s *TaskIrisService) createTask(blockNumPerWorkerHandle int64, chanLimit ch syncIrisTasks = createCatchUpTask(followedHeight, blockNumPerWorkerHandle, blockChainLatestHeight) invalidFollowTask = followTask - logMsg = fmt.Sprintf("Create catch up task during follow task exist,from-to:%v-%v,invalidFollowTaskId:%v,invalidFollowTaskCurHeight:%v,Chain Block:%v", - followedHeight+1, blockChainLatestHeight, invalidFollowTask.ID.Hex(), invalidFollowTask.CurrentHeight, s.blockType.Name()) + logMsg = fmt.Sprintf("Create catch up task during follow task exist,from-to:%v-%v,invalidFollowTaskId:%v,invalidFollowTaskCurHeight:%v", + followedHeight+1, blockChainLatestHeight, invalidFollowTask.ID.Hex(), invalidFollowTask.CurrentHeight) } } @@ -157,10 +149,9 @@ func (s *TaskIrisService) createTask(blockNumPerWorkerHandle int64, chanLimit ch if len(ops) > 0 { err := model.Txn(ops) if err != nil { - logger.Warn("Create sync task fail", logger.String("err", err.Error()), - logger.String("Chain Block", s.blockType.Name())) + logger.Warn("Create sync task fail", logger.String("err", err.Error())) } else { - logger.Info(fmt.Sprintf("Create sync task success,%v", logMsg), logger.String("Chain Block", s.blockType.Name())) + logger.Info(fmt.Sprintf("Create sync task success,%v", logMsg)) } } diff --git a/task/execute.go b/task/execute.go index 0470dea..dbe7574 100644 --- a/task/execute.go +++ b/task/execute.go @@ -2,34 +2,35 @@ package task import ( "fmt" - "github.com/irisnet/rainbow-sync/logger" - imodel "github.com/irisnet/rainbow-sync/model" + "github.com/irisnet/rainbow-sync/block" "github.com/irisnet/rainbow-sync/conf" model "github.com/irisnet/rainbow-sync/db" - "github.com/irisnet/rainbow-sync/helper" + "github.com/irisnet/rainbow-sync/lib/pool" + "github.com/irisnet/rainbow-sync/logger" + imodel "github.com/irisnet/rainbow-sync/model" + "github.com/irisnet/rainbow-sync/utils" "gopkg.in/mgo.v2" "gopkg.in/mgo.v2/bson" "os" "time" - "github.com/irisnet/rainbow-sync/utils" ) func (s *TaskIrisService) StartExecuteTask() { var ( - blockNumPerWorkerHandle = int64(conf.BlockNumPerWorkerHandle) - workerMaxSleepTime = int64(conf.WorkerMaxSleepTime) + blockNumPerWorkerHandle = int64(conf.SvrConf.BlockNumPerWorkerHandle) + workerMaxSleepTime = int64(conf.SvrConf.WorkerMaxSleepTime) ) if workerMaxSleepTime <= 1*60 { logger.Fatal("workerMaxSleepTime shouldn't less than 1 minute") } - logger.Info("Start execute task", logger.String("Chain Block", s.blockType.Name())) + logger.Info("Start execute task") // buffer channel to limit goroutine num - chanLimit := make(chan bool, conf.WorkerNumExecuteTask) - helper.Init(conf.BlockChainMonitorUrl, conf.MaxConnectionNum, conf.InitConnectionNum) + chanLimit := make(chan bool, conf.SvrConf.WorkerNumExecuteTask) + pool.Init(conf.SvrConf.NodeUrls, conf.SvrConf.MaxConnectionNum, conf.SvrConf.InitConnectionNum) defer func() { - helper.ClosePool() + pool.ClosePool() }() for { @@ -52,7 +53,7 @@ func (s *TaskIrisService) executeTask(blockNumPerWorkerHandle, maxWorkerSleepTim healthCheckQuit := make(chan bool) workerId = genWorkerId() - client := helper.GetClient() + client := pool.GetClient() defer func() { if r := recover(); r != nil { @@ -82,9 +83,9 @@ func (s *TaskIrisService) executeTask(blockNumPerWorkerHandle, maxWorkerSleepTim if err != nil { if err == mgo.ErrNotFound { // this task has been take over by other goroutine - logger.Info("Task has been take over by other goroutine", logger.String("Chain Block", s.blockType.Name())) + logger.Info("Task has been take over by other goroutine") } else { - logger.Error("Take over task fail", logger.String("Chain Block", s.blockType.Name()), logger.String("err", err.Error())) + logger.Error("Take over task fail", logger.String("err", err.Error())) } return } else { @@ -97,7 +98,7 @@ func (s *TaskIrisService) executeTask(blockNumPerWorkerHandle, maxWorkerSleepTim } else { taskType = model.SyncTaskTypeFollow } - logger.Info("worker begin execute task", logger.String("Chain Block", s.blockType.Name()), + logger.Info("worker begin execute task", logger.String("curWorker", workerId), logger.Any("taskId", task.ID), logger.String("from-to", fmt.Sprintf("%v-%v", task.StartHeight, task.EndHeight))) @@ -108,7 +109,7 @@ func (s *TaskIrisService) executeTask(blockNumPerWorkerHandle, maxWorkerSleepTim workerHealthCheck := func(taskId bson.ObjectId, currentWorker string) { defer func() { if r := recover(); r != nil { - logger.Error("worker health check err", logger.String("Chain Block", s.blockType.Name()), logger.Any("err", r)) + logger.Error("worker health check err", logger.Any("err", r)) } }() @@ -116,7 +117,7 @@ func (s *TaskIrisService) executeTask(blockNumPerWorkerHandle, maxWorkerSleepTim for { select { case <-healthCheckQuit: - logger.Info("get health check quit signal, now exit health check", logger.String("Chain Block", s.blockType.Name())) + logger.Info("get health check quit signal, now exit health check") return default: task, err := s.syncIrisModel.GetTaskByIdAndWorker(taskId, workerId) @@ -124,19 +125,19 @@ func (s *TaskIrisService) executeTask(blockNumPerWorkerHandle, maxWorkerSleepTim if _, valid := assertTaskValid(task, blockNumPerWorkerHandle); valid { // update task last update time if err := s.syncIrisModel.UpdateLastUpdateTime(task); err != nil { - logger.Error("update last update time fail", logger.String("Chain Block", s.blockType.Name()), logger.String("err", err.Error())) + logger.Error("update last update time fail", logger.String("err", err.Error())) } } else { - logger.Info("task is invalid, exit health check", logger.String("Chain Block", s.blockType.Name()), logger.String("taskId", taskId.Hex())) + logger.Info("task is invalid, exit health check", logger.String("taskId", taskId.Hex())) return } } else { if err == mgo.ErrNotFound { - logger.Info("task may be task over by other goroutine, exit health check", logger.String("Chain Block", s.blockType.Name()), + logger.Info("task may be task over by other goroutine, exit health check", logger.String("taskId", taskId.Hex()), logger.String("curWorker", workerId)) return } else { - logger.Error("get task by id and worker fail", logger.String("Chain Block", s.blockType.Name()), logger.String("taskId", taskId.Hex()), + logger.Error("get task by id and worker fail", logger.String("taskId", taskId.Hex()), logger.String("curWorker", workerId)) } } @@ -161,7 +162,7 @@ func (s *TaskIrisService) executeTask(blockNumPerWorkerHandle, maxWorkerSleepTim // if inProcessBlock > blockChainLatestHeight, should wait blockChainLatestHeight update if taskType == model.SyncTaskTypeFollow && inProcessBlock > blockChainLatestHeight { - logger.Info("wait blockChain latest height update.", logger.String("Chain Block", s.blockType.Name()), + logger.Info("wait blockChain latest height update.", logger.Int64("curSyncedHeight", inProcessBlock-1), logger.Int64("blockChainLatestHeight", blockChainLatestHeight)) time.Sleep(2 * time.Second) @@ -171,16 +172,16 @@ func (s *TaskIrisService) executeTask(blockNumPerWorkerHandle, maxWorkerSleepTim } // parse data from block - blockDoc, assetDetailDocs, txDocs, err := s.blockType.ParseBlock(inProcessBlock, client) + blockDoc, txDocs, err := block.ParseBlock(inProcessBlock, client) if err != nil { - logger.Error("Parse block fail", logger.String("Chain Block", s.blockType.Name()), logger.Int64("block", inProcessBlock), + logger.Error("Parse block fail", logger.Int64("block", inProcessBlock), logger.String("err", err.Error())) } // check task owner workerUnchanged, err := assertTaskWorkerUnchanged(task.ID, task.WorkerId) if err != nil { - logger.Error("assert task worker is unchanged fail", logger.String("Chain Block", s.blockType.Name()), logger.String("err", err.Error())) + logger.Error("assert task worker is unchanged fail", logger.String("err", err.Error())) } if workerUnchanged { // save data and update sync task @@ -192,9 +193,9 @@ func (s *TaskIrisService) executeTask(blockNumPerWorkerHandle, maxWorkerSleepTim taskDoc.Status = model.SyncTaskStatusCompleted } - err := s.blockType.SaveDocsWithTxn(blockDoc, assetDetailDocs, txDocs, taskDoc) + err := block.SaveDocsWithTxn(blockDoc, txDocs, taskDoc) if err != nil { - logger.Error("save docs fail", logger.String("Chain Block", s.blockType.Name()), logger.String("err", err.Error())) + logger.Error("save docs fail", logger.String("err", err.Error())) } else { task.CurrentHeight = inProcessBlock } @@ -202,13 +203,13 @@ func (s *TaskIrisService) executeTask(blockNumPerWorkerHandle, maxWorkerSleepTim // continue to assert task is valid blockChainLatestHeight, isValid = assertTaskValid(task, blockNumPerWorkerHandle) } else { - logger.Info("task worker changed", logger.String("Chain Block", s.blockType.Name()), logger.Any("task_id", task.ID), + logger.Info("task worker changed", logger.Any("task_id", task.ID), logger.String("origin worker", workerId), logger.String("current worker", task.WorkerId)) return } } - logger.Info("worker finish execute task", logger.String("Chain Block", s.blockType.Name()), + logger.Info("worker finish execute task", logger.String("task_worker", task.WorkerId), logger.Any("task_id", task.ID), logger.String("from-to-current", fmt.Sprintf("%v-%v-%v", task.StartHeight, task.EndHeight, task.CurrentHeight))) } @@ -273,7 +274,7 @@ func assertTaskWorkerUnchanged(taskId bson.ObjectId, workerId string) (bool, err // get current block height func getBlockChainLatestHeight() (int64, error) { - client := helper.GetClient() + client := pool.GetClient() defer func() { client.Release() }() diff --git a/utils/utils.go b/utils/utils.go index 756f19e..aaa248c 100644 --- a/utils/utils.go +++ b/utils/utils.go @@ -1,149 +1,20 @@ package utils import ( - "strings" "encoding/hex" - "strconv" - "github.com/irisnet/irishub/codec" - "github.com/irisnet/irishub/modules/auth" - abci "github.com/tendermint/tendermint/abci/types" - imodel "github.com/irisnet/rainbow-sync/model" - "github.com/irisnet/rainbow-sync/helper" - "github.com/irisnet/rainbow-sync/constant" - "github.com/irisnet/rainbow-sync/logger" + "encoding/json" "fmt" - "regexp" - "github.com/irisnet/irishub/app" - "github.com/irisnet/irishub/types" - "github.com/irisnet/rainbow-sync/conf" - "time" + "github.com/irisnet/rainbow-sync/logger" "math/rand" + "strconv" + "strings" + "time" ) -var ( - cdc *codec.Codec -) - -// 初始化账户地址前缀 -func init() { - if conf.IrisNetwork == types.Mainnet { - types.SetNetworkType(types.Mainnet) - } - cdc = app.MakeLatestCodec() -} - -func GetCodec() *codec.Codec { - return cdc -} - func BuildHex(bytes []byte) string { return strings.ToUpper(hex.EncodeToString(bytes)) } -func ParseCoins(coinsStr string) (coins imodel.Coins) { - coinsStr = strings.TrimSpace(coinsStr) - if len(coinsStr) == 0 { - return - } - - coinStrs := strings.Split(coinsStr, ",") - for _, coinStr := range coinStrs { - coin := ParseCoin(coinStr) - coins = append(coins, coin) - } - return coins -} - -func ParseCoin(coinStr string) (coin *imodel.Coin) { - var ( - reDnm = `[A-Za-z0-9]{2,}\S*` - reAmt = `[0-9]+[.]?[0-9]*` - reSpc = `[[:space:]]*` - reCoin = regexp.MustCompile(fmt.Sprintf(`^(%s)%s(%s)$`, reAmt, reSpc, reDnm)) - ) - - coinStr = strings.TrimSpace(coinStr) - - matches := reCoin.FindStringSubmatch(coinStr) - if matches == nil { - logger.Error("invalid coin expression", logger.Any("coin", coinStr)) - return coin - } - denom, amount := matches[2], matches[1] - - amount = getPrecision(amount) - amt, err := strconv.ParseFloat(amount, 64) - if err != nil { - logger.Error("Convert str to int failed", logger.Any("amount", amount)) - return coin - } - - return &imodel.Coin{ - Denom: denom, - Amount: amt, - } -} - -func getPrecision(amount string) string { - length := len(amount) - if length > 15 { - nums := strings.Split(amount, ".") - if len(nums) > 2 { - return amount - } - - if len_num0 := len(nums[0]); len_num0 > 15 { - amount = string([]byte(nums[0])[:15]) - for i := 1; i <= len_num0-15; i++ { - amount += "0" - } - } else { - //leng_num1 := len(nums[1]) - leng_append := 16 - len_num0 - amount = nums[0] + "." + string([]byte(nums[1])[:leng_append]) - //for i := 1; i <= leng_num1-leng_append; i++ { - // amount += "0" - //} - } - } - return amount -} - -func BuildFee(fee auth.StdFee) *imodel.Fee { - return &imodel.Fee{ - Amount: ParseCoins(fee.Amount.String()), - Gas: int64(fee.Gas), - } -} - -// get tx status and log by query txHash -func QueryTxResult(txHash []byte) (string, abci.ResponseDeliverTx, error) { - var resDeliverTx abci.ResponseDeliverTx - status := constant.TxStatusSuccess - - client := helper.GetClient() - defer client.Release() - - res, err := client.Tx(txHash, false) - if err != nil { - logger.Warn("QueryTxResult have error, now try again", logger.String("err", err.Error())) - time.Sleep(time.Duration(1) * time.Second) - var err1 error - client2 := helper.GetClient() - res, err1 = client2.Tx(txHash, false) - client2.Release() - if err1 != nil { - return "unknown", resDeliverTx, err1 - } - } - result := res.TxResult - if result.Code != 0 { - status = constant.TxStatusFail - } - - return status, result, nil -} - func Min(x, y int64) int64 { if x < y { return x @@ -182,3 +53,12 @@ func RandInt(n int) int { rand.NewSource(time.Now().Unix()) return rand.Intn(n) } + +func MarshalJsonIgnoreErr(v interface{}) string { + data, _ := json.Marshal(v) + return string(data) +} + +func UnMarshalJsonIgnoreErr(data string, v interface{}) { + json.Unmarshal([]byte(data), &v) +} diff --git a/utils/utils_test.go b/utils/utils_test.go index 57c1c86..d4b585b 100644 --- a/utils/utils_test.go +++ b/utils/utils_test.go @@ -1,50 +1 @@ package utils - -import ( - "testing" - "fmt" - "strconv" -) - -func Test_getPrecision(t *testing.T) { - exam1 := "4999999999999999999999" - exam2 := "49999999999999999999.99" - exam3 := "49999999.999999.99999" - exam4 := "49999999.999999" - exam5 := "4999999999999.9999999" - - data := getPrecision(exam1) - if data == "4999999999999990000000" { - t.Log("OK") - } else { - t.Fatal("Failed") - } - data = getPrecision(exam2) - if data == "49999999999999900000" { - t.Log("OK") - - } else { - t.Fatal("Failed") - } - data = getPrecision(exam3) - if data == "49999999.999999.99999" { - t.Log("OK") - } else { - t.Fatal("Failed") - } - data = getPrecision(exam4) - if data == "49999999.999999" { - t.Log("OK") - } else { - t.Fatal("Failed") - } - data = getPrecision(exam5) - fmt.Println(data) - amt, _ := strconv.ParseFloat(data, 64) - fmt.Println(amt) - if data == "4999999999999.999" { - t.Log("OK") - } else { - t.Fatal("Failed") - } -} From 351168a65e243930d8a23f6840fc47e694f5b754 Mon Sep 17 00:00:00 2001 From: huangweichang Date: Wed, 2 Dec 2020 14:17:15 +0800 Subject: [PATCH 02/49] fix code to adapt irishub v1.0 --- block/config.go | 2 +- block/handler.go | 4 + block/parse_tx.go | 11 +- go.mod | 14 +- go.sum | 129 +++++++---- lib/cdc/cdc.go | 20 +- lib/pool/pool_client.go | 3 +- model/tx.go | 9 - msgs/bank/bank.go | 26 +++ msgs/bank/msg_multisend.go | 58 +++++ msgs/bank/msg_send.go | 43 ++++ msgs/coinswap/coinswap.go | 129 +++++++++++ msgs/coinswap/handler.go | 24 ++ msgs/common.go | 54 +++++ msgs/crisis/crisis.go | 18 ++ msgs/crisis/verify_invariant.go | 39 ++++ msgs/distribution/distribution.go | 129 +++++++++++ msgs/distribution/handler.go | 27 +++ msgs/evidence/evidence.go | 18 ++ msgs/evidence/submit_evidence.go | 41 ++++ msgs/gov/gov.go | 109 +++++++++ msgs/gov/handler.go | 24 ++ msgs/htlc/handler.go | 24 ++ msgs/htlc/htlc.go | 113 +++++++++ msgs/ibc/client_create.go | 41 ++++ msgs/ibc/client_update.go | 38 +++ msgs/ibc/ibc.go | 30 +++ msgs/ibc/ibc_transfer.go | 56 +++++ msgs/ibc/recv_packet.go | 79 +++++++ msgs/nft/issue_denom.go | 42 ++++ msgs/nft/nft.go | 38 +++ msgs/nft/nft_burn.go | 42 ++++ msgs/nft/nft_edit.go | 48 ++++ msgs/nft/nft_mint.go | 47 ++++ msgs/nft/nft_transfer.go | 50 ++++ msgs/record/record.go | 22 ++ msgs/record/record_create.go | 58 +++++ msgs/service/service.go | 79 +++++++ msgs/service/service_bind.go | 52 +++++ msgs/service/service_def.go | 48 ++++ msgs/service/service_disable_bind.go | 41 ++++ msgs/service/service_enable_bind.go | 49 ++++ msgs/service/service_kill_request_context.go | 41 ++++ msgs/service/service_pause_request_context.go | 41 ++++ msgs/service/service_refund_deposit.go | 41 ++++ msgs/service/service_request.go | 70 ++++++ msgs/service/service_response.go | 46 ++++ msgs/service/service_set_withdraw_address.go | 39 ++++ msgs/service/service_start_request_context.go | 41 ++++ msgs/service/service_update_bind.go | 53 +++++ .../service/service_update_request_context.go | 63 +++++ msgs/service/service_withdraw_earn_fee.go | 40 ++++ msgs/slashing/slashing.go | 19 ++ msgs/slashing/unjail.go | 34 +++ msgs/staking/handler.go | 30 +++ msgs/staking/stake.go | 219 ++++++++++++++++++ msgs/token/edit_token.go | 43 ++++ msgs/token/issue_token.go | 49 ++++ msgs/token/mint_token.go | 41 ++++ msgs/token/token.go | 34 +++ msgs/token/transfer_tokenowner.go | 39 ++++ msgs/types.go | 179 ++++++++++++++ task/execute.go | 3 +- 63 files changed, 3014 insertions(+), 79 deletions(-) create mode 100644 msgs/bank/bank.go create mode 100644 msgs/bank/msg_multisend.go create mode 100644 msgs/bank/msg_send.go create mode 100644 msgs/coinswap/coinswap.go create mode 100644 msgs/coinswap/handler.go create mode 100644 msgs/common.go create mode 100644 msgs/crisis/crisis.go create mode 100644 msgs/crisis/verify_invariant.go create mode 100644 msgs/distribution/distribution.go create mode 100644 msgs/distribution/handler.go create mode 100644 msgs/evidence/evidence.go create mode 100644 msgs/evidence/submit_evidence.go create mode 100644 msgs/gov/gov.go create mode 100644 msgs/gov/handler.go create mode 100644 msgs/htlc/handler.go create mode 100644 msgs/htlc/htlc.go create mode 100644 msgs/ibc/client_create.go create mode 100644 msgs/ibc/client_update.go create mode 100644 msgs/ibc/ibc.go create mode 100644 msgs/ibc/ibc_transfer.go create mode 100644 msgs/ibc/recv_packet.go create mode 100644 msgs/nft/issue_denom.go create mode 100644 msgs/nft/nft.go create mode 100644 msgs/nft/nft_burn.go create mode 100644 msgs/nft/nft_edit.go create mode 100644 msgs/nft/nft_mint.go create mode 100644 msgs/nft/nft_transfer.go create mode 100644 msgs/record/record.go create mode 100644 msgs/record/record_create.go create mode 100644 msgs/service/service.go create mode 100644 msgs/service/service_bind.go create mode 100644 msgs/service/service_def.go create mode 100644 msgs/service/service_disable_bind.go create mode 100644 msgs/service/service_enable_bind.go create mode 100644 msgs/service/service_kill_request_context.go create mode 100644 msgs/service/service_pause_request_context.go create mode 100644 msgs/service/service_refund_deposit.go create mode 100644 msgs/service/service_request.go create mode 100644 msgs/service/service_response.go create mode 100644 msgs/service/service_set_withdraw_address.go create mode 100644 msgs/service/service_start_request_context.go create mode 100644 msgs/service/service_update_bind.go create mode 100644 msgs/service/service_update_request_context.go create mode 100644 msgs/service/service_withdraw_earn_fee.go create mode 100644 msgs/slashing/slashing.go create mode 100644 msgs/slashing/unjail.go create mode 100644 msgs/staking/handler.go create mode 100644 msgs/staking/stake.go create mode 100644 msgs/token/edit_token.go create mode 100644 msgs/token/issue_token.go create mode 100644 msgs/token/mint_token.go create mode 100644 msgs/token/token.go create mode 100644 msgs/token/transfer_tokenowner.go create mode 100644 msgs/types.go diff --git a/block/config.go b/block/config.go index e91546e..00625d0 100644 --- a/block/config.go +++ b/block/config.go @@ -17,7 +17,7 @@ const ( var ( // Bech32PrefixAccAddr defines the Bech32 prefix of an account's address - Bech32PrefixAccAddr = "i" + Bech32PrefixAccAddr = "iaa" // Bech32PrefixAccPub defines the Bech32 prefix of an account's public key Bech32PrefixAccPub = Bech32PrefixAccAddr + PrefixPublic // Bech32PrefixValAddr defines the Bech32 prefix of a validator's operator address diff --git a/block/handler.go b/block/handler.go index 196faa9..e22128c 100644 --- a/block/handler.go +++ b/block/handler.go @@ -10,6 +10,7 @@ import ( "github.com/irisnet/rainbow-sync/msgs/evidence" "github.com/irisnet/rainbow-sync/msgs/gov" "github.com/irisnet/rainbow-sync/msgs/htlc" + "github.com/irisnet/rainbow-sync/msgs/ibc" "github.com/irisnet/rainbow-sync/msgs/nft" "github.com/irisnet/rainbow-sync/msgs/record" "github.com/irisnet/rainbow-sync/msgs/service" @@ -58,6 +59,9 @@ func HandleTxMsg(v types.Msg) MsgDocInfo { if GovDocInfo, ok := gov.HandleTxMsg(v); ok { return GovDocInfo } + if IbcDocInfo, ok := ibc.HandleTxMsg(v); ok { + return IbcDocInfo + } return MsgDocInfo{} } diff --git a/block/parse_tx.go b/block/parse_tx.go index 78ff89a..0b568e9 100644 --- a/block/parse_tx.go +++ b/block/parse_tx.go @@ -12,6 +12,7 @@ import ( "github.com/irisnet/rainbow-sync/model" "github.com/irisnet/rainbow-sync/utils" "github.com/tendermint/tendermint/types" + "golang.org/x/net/context" "gopkg.in/mgo.v2/bson" "gopkg.in/mgo.v2/txn" "time" @@ -94,14 +95,15 @@ func ParseBlock(b int64, client *pool.Client) (*model.Block, []*model.Tx, error) } func ParseTxs(b int64, client *pool.Client) ([]*model.Tx, error) { - resblock, err := client.Block(&b) + ctx := context.Background() + resblock, err := client.Block(ctx, &b) if err != nil { logger.Warn("get block result err, now try again", logger.String("err", err.Error()), logger.Any("height", b)) // there is possible parse block fail when in iterator var err2 error client2 := pool.GetClient() - resblock, err2 = client2.Block(&b) + resblock, err2 = client2.Block(ctx, &b) client2.Release() if err2 != nil { return nil, err2 @@ -136,13 +138,14 @@ func ParseTx(txBytes types.Tx, block *types.Block, client *pool.Client) model.Tx memo := authTx.GetMemo() height := block.Height txHash := utils.BuildHex(txBytes.Hash()) - res, err := client.Tx(txBytes.Hash(), false) + ctx := context.Background() + res, err := client.Tx(ctx, txBytes.Hash(), false) if err != nil { logger.Warn("QueryTxResult have error, now try again", logger.String("err", err.Error())) time.Sleep(time.Duration(1) * time.Second) var err1 error client2 := pool.GetClient() - res, err1 = client2.Tx(txBytes.Hash(), false) + res, err1 = client2.Tx(ctx, txBytes.Hash(), false) client2.Release() if err1 != nil { logger.Error("get txResult err", logger.String("method", methodName), logger.String("err", err1.Error())) diff --git a/go.mod b/go.mod index 49a2af9..9a9d9a9 100644 --- a/go.mod +++ b/go.mod @@ -3,22 +3,18 @@ module github.com/irisnet/rainbow-sync go 1.14 require ( - github.com/cosmos/cosmos-sdk v0.34.4-0.20200825201020-d9fd4d2ca9a3 - github.com/irismod/coinswap v0.0.0-20200901103745-f38672ac63ec - github.com/irismod/htlc v0.0.0-20200901103718-c3bf89708dce - github.com/irismod/nft v1.1.1-0.20200827095318-d16861212579 - github.com/irismod/record v1.1.1-0.20200827095301-3e27fc43ae73 - github.com/irismod/service v1.1.1-0.20200901115916-d898b826bf10 - github.com/irismod/token v1.1.1-0.20200901121217-d3aa04e760e3 + github.com/cosmos/cosmos-sdk v0.40.0-rc0 + github.com/irisnet/irismod v1.1.1-0.20201015064111-9d21ec6ad6fc github.com/jolestar/go-commons-pool v2.0.0+incompatible - github.com/tendermint/tendermint v0.34.0-rc3 + github.com/tendermint/tendermint v0.34.0-rc4.0.20201005135527-d7d0ffea13c6 go.uber.org/zap v1.13.0 + golang.org/x/net v0.0.0-20200813134508-3edf25e44fcc gopkg.in/mgo.v2 v2.0.0-20190816093944-a6b53ec6cb22 gopkg.in/natefinch/lumberjack.v2 v2.0.0 gopkg.in/tomb.v2 v2.0.0-20161208151619-d5d1b5820637 // indirect ) replace ( - github.com/cosmos/cosmos-sdk => github.com/irisnet/cosmos-sdk v0.34.4-0.20200901030027-1e0963031861 + github.com/cosmos/cosmos-sdk => github.com/irisnet/cosmos-sdk v0.34.4-0.20201014023301-f172e47973d0 github.com/gogo/protobuf => github.com/regen-network/protobuf v1.3.2-alpha.regen.4 ) diff --git a/go.sum b/go.sum index f793a59..22c0769 100644 --- a/go.sum +++ b/go.sum @@ -11,8 +11,8 @@ cloud.google.com/go/firestore v1.1.0/go.mod h1:ulACoGHTpvq5r8rxGJ4ddJZBZqakUQqCl cloud.google.com/go/pubsub v1.0.1/go.mod h1:R0Gpsv3s54REJCy4fxDixWD93lHJMoZTyQ2kNxGRt3I= cloud.google.com/go/storage v1.0.0/go.mod h1:IhtSnM/ZTZV8YYJWCY8RULGVqBDmpoyjwiyrjsg+URw= dmitri.shuralyov.com/gpu/mtl v0.0.0-20190408044501-666a987793e9/go.mod h1:H6x//7gZCb22OMCxBHrMx7a5I7Hp++hsVxbQ4BYO7hU= -github.com/99designs/keyring v1.1.5 h1:wLv7QyzYpFIyMSwOADq1CLTF9KbjbBfcnfmOGJ64aO4= -github.com/99designs/keyring v1.1.5/go.mod h1:7hsVvt2qXgtadGevGJ4ujg+u8m6SpJ5TpHqTozIPqf0= +github.com/99designs/keyring v1.1.6 h1:kVDC2uCgVwecxCk+9zoCt2uEL6dt+dfVzMvGgnVcIuM= +github.com/99designs/keyring v1.1.6/go.mod h1:16e0ds7LGQQcT59QqkTg72Hh5ShM51Byv5PEmW6uoRU= github.com/BurntSushi/toml v0.3.1 h1:WXkYYl6Yr3qBf1K79EBnL4mak0OimBfB0XUf9Vl28OQ= github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= github.com/BurntSushi/xgb v0.0.0-20160522181843-27f122750802/go.mod h1:IVnqGOEym/WlBOVXweHU+Q+/VP0lqqI8lqeDx9IjBqo= @@ -55,15 +55,18 @@ github.com/bgentry/speakeasy v0.1.0 h1:ByYyxL9InA1OWqxJqqp2A5pYHUrCiAL6K3J+LKSsQ github.com/bgentry/speakeasy v0.1.0/go.mod h1:+zsyZBPWlz7T6j88CTgSN5bM796AkVf0kBD4zp0CCIs= github.com/bketelsen/crypt v0.0.3-0.20200106085610-5cbc8cc4026c/go.mod h1:MKsuJmJgSg28kpZDP6UIiPt0e0Oz0kqKNGyRaWEPv84= github.com/btcsuite/btcd v0.0.0-20190115013929-ed77733ec07d/go.mod h1:d3C0AkH6BRcvO8T0UEPu53cnw4IbV63x1bEjildYhO0= -github.com/btcsuite/btcd v0.20.1-beta h1:Ik4hyJqN8Jfyv3S4AGBOmyouMsYE3EdYODkMbQjwPGw= github.com/btcsuite/btcd v0.20.1-beta/go.mod h1:wVuoA8VJLEcwgqHBwHmzLRazpKxTv13Px/pDuV7OomQ= +github.com/btcsuite/btcd v0.21.0-beta h1:At9hIZdJW0s9E/fAz28nrz6AmcNlSVucCH796ZteX1M= +github.com/btcsuite/btcd v0.21.0-beta/go.mod h1:ZSWyehm27aAuS9bvkATT+Xte3hjHZ+MRgMY/8NJ7K94= github.com/btcsuite/btclog v0.0.0-20170628155309-84c8d2346e9f/go.mod h1:TdznJufoqS23FtqVCzL0ZqgP5MqXbb4fg/WgDys70nA= github.com/btcsuite/btcutil v0.0.0-20180706230648-ab6388e0c60a/go.mod h1:+5NJ2+qvTyV9exUAL/rxXi3DcLg2Ts+ymUAY5y4NvMg= github.com/btcsuite/btcutil v0.0.0-20190425235716-9e5f4b9a998d/go.mod h1:+5NJ2+qvTyV9exUAL/rxXi3DcLg2Ts+ymUAY5y4NvMg= github.com/btcsuite/btcutil v1.0.2/go.mod h1:j9HUFwoQRsZL3V4n+qG+CUnEGHOarIxfC3Le2Yhbcts= github.com/btcsuite/go-socks v0.0.0-20170105172521-4720035b7bfd/go.mod h1:HHNXQzUsZCxOoE+CPiyCTO6x34Zs86zZUiwtpXoGdtg= github.com/btcsuite/goleveldb v0.0.0-20160330041536-7834afc9e8cd/go.mod h1:F+uVaaLLH7j4eDXPRvw78tMflu7Ie2bzYOH4Y8rRKBY= +github.com/btcsuite/goleveldb v1.0.0/go.mod h1:QiK9vBlgftBg6rWQIj6wFzbPfRjiykIEhBH4obrXJ/I= github.com/btcsuite/snappy-go v0.0.0-20151229074030-0bdef8d06723/go.mod h1:8woku9dyThutzjeg+3xrA5iCpBRH8XEEg3lh6TiUghc= +github.com/btcsuite/snappy-go v1.0.0/go.mod h1:8woku9dyThutzjeg+3xrA5iCpBRH8XEEg3lh6TiUghc= github.com/btcsuite/websocket v0.0.0-20150119174127-31079b680792/go.mod h1:ghJtEyQwv5/p4Mg4C0fgbePVuGr935/5ddU9Z3TmDRY= github.com/btcsuite/winsvc v1.0.0/go.mod h1:jsenWakMcC0zFBFurPLEAyrnc/teJEM1O46fmI40EZs= github.com/casbin/casbin/v2 v2.1.2/go.mod h1:YcPU1XXisHhLzuxH9coDNf2FbKpjGlbCg3n9yuLkIJQ= @@ -80,9 +83,8 @@ github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDk github.com/cncf/udpa/go v0.0.0-20191209042840-269d4d468f6f/go.mod h1:M8M6+tZqaGXZJjfX53e64911xZQV5JYwmTeXPW+k8Sc= github.com/cockroachdb/datadriven v0.0.0-20190809214429-80d97fb3cbaa/go.mod h1:zn76sxSg3SzpJ0PPJaLDCu+Bu0Lg3sKTORVIj19EIF8= github.com/codahale/hdrhistogram v0.0.0-20161010025455-3a0bb77429bd/go.mod h1:sE/e/2PUdi/liOCUjSTXgM1o87ZssimdTWN964YiIeI= -github.com/confio/ics23/go v0.0.0-20200610201322-18c7bd6b2dd3/go.mod h1:W1I3XC8d9N8OTu/ct5VJ84ylcOunZwMXsWkd27nvVts= -github.com/confio/ics23/go v0.0.0-20200804135932-65ad804e8539 h1:4AuX7KNUVdNa/am9yCQRqWMfdDJ86EtFJk/xwf6ntgc= -github.com/confio/ics23/go v0.0.0-20200804135932-65ad804e8539/go.mod h1:E45NqnlpxGnpfTWL/xauN7MRwEE28T4Dd4uraToOaKg= +github.com/confio/ics23/go v0.0.0-20200817220745-f173e6211efb h1:+7FsS1gZ1Km5LRjGV2hztpier/5i6ngNjvNpxbWP5I0= +github.com/confio/ics23/go v0.0.0-20200817220745-f173e6211efb/go.mod h1:E45NqnlpxGnpfTWL/xauN7MRwEE28T4Dd4uraToOaKg= github.com/coreos/bbolt v1.3.2/go.mod h1:iRUV2dpdMOn7Bo10OQBFzIJO9kkE559Wcmn+qkEiiKk= github.com/coreos/etcd v3.3.10+incompatible/go.mod h1:uF7uidLiAD3TWHmW31ZFd/JWoc32PjwdhPthX9715RE= github.com/coreos/etcd v3.3.13+incompatible/go.mod h1:uF7uidLiAD3TWHmW31ZFd/JWoc32PjwdhPthX9715RE= @@ -95,8 +97,8 @@ github.com/coreos/pkg v0.0.0-20160727233714-3ac0863d7acf/go.mod h1:E3G3o1h8I7cfc github.com/coreos/pkg v0.0.0-20180928190104-399ea9e2e55f/go.mod h1:E3G3o1h8I7cfcXa63jLwjI0eiQQMgzzUDFVpN/nH/eA= github.com/cosmos/go-bip39 v0.0.0-20180819234021-555e2067c45d h1:49RLWk1j44Xu4fjHb6JFYmeUnDORVwHNkDxaQ0ctCVU= github.com/cosmos/go-bip39 v0.0.0-20180819234021-555e2067c45d/go.mod h1:tSxLoYXyBmiFeKpvmq4dzayMdCjCnu8uqmCysIGBT2Y= -github.com/cosmos/iavl v0.15.0-rc2 h1:4HI/LYLjWUnou8dehPD+NqEsDc8uamJOU2yHcqdTKv8= -github.com/cosmos/iavl v0.15.0-rc2/go.mod h1:bXLXbwmww0kYtAYRCYNXR/k44lWaK8rIZJlCmqSK8lQ= +github.com/cosmos/iavl v0.15.0-rc3 h1:rSm60IFfDCD9qDfvXKEmaJhcv0rB5uCbVlBDKsynxqw= +github.com/cosmos/iavl v0.15.0-rc3/go.mod h1:rQ2zK/LuivThMjve3Yr6VkjvCqCXl+fgHCY7quiUA68= github.com/cosmos/ledger-cosmos-go v0.11.1 h1:9JIYsGnXP613pb2vPjFeMMjBI5lEDsEaF6oYorTy6J4= github.com/cosmos/ledger-cosmos-go v0.11.1/go.mod h1:J8//BsAGTo3OC/vDLjMRFLW6q0WAaXvHnVc7ZmE8iUY= github.com/cosmos/ledger-go v0.9.2 h1:Nnao/dLwaVTk1Q5U9THldpUMMXU94BOTWPddSmVB6pI= @@ -111,10 +113,13 @@ github.com/davecgh/go-spew v0.0.0-20171005155431-ecdeabc65495/go.mod h1:J7Y8YcW2 github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= -github.com/dgraph-io/badger/v2 v2.0.3 h1:inzdf6VF/NZ+tJ8RwwYMjJMvsOALTHYdozn0qSl6XJI= +github.com/decred/dcrd/lru v1.0.0/go.mod h1:mxKOwFd7lFjN2GZYsiz/ecgqR6kkYAl+0pz0tEMk218= github.com/dgraph-io/badger/v2 v2.0.3/go.mod h1:3KY8+bsP8wI0OEnQJAKpd4wIJW/Mm32yw2j/9FUVnIM= -github.com/dgraph-io/ristretto v0.0.2-0.20200115201040-8f368f2f2ab3 h1:MQLRM35Pp0yAyBYksjbj1nZI/w6eyRY/mWoM1sFf4kU= +github.com/dgraph-io/badger/v2 v2.2007.1 h1:t36VcBCpo4SsmAD5M8wVv1ieVzcALyGfaJ92z4ccULM= +github.com/dgraph-io/badger/v2 v2.2007.1/go.mod h1:26P/7fbL4kUZVEVKLAKXkBXKOydDmM2p1e+NhhnBCAE= github.com/dgraph-io/ristretto v0.0.2-0.20200115201040-8f368f2f2ab3/go.mod h1:KPxhHT9ZxKefz+PCeOGsrHpl1qZ7i70dGTu2u+Ahh6E= +github.com/dgraph-io/ristretto v0.0.3-0.20200630154024-f66de99634de h1:t0UHb5vdojIDUqktM6+xJAfScFBsVpXZmqC9dsgJmeA= +github.com/dgraph-io/ristretto v0.0.3-0.20200630154024-f66de99634de/go.mod h1:KPxhHT9ZxKefz+PCeOGsrHpl1qZ7i70dGTu2u+Ahh6E= github.com/dgrijalva/jwt-go v3.2.0+incompatible/go.mod h1:E3ru+11k8xSBh+hMPgOLZmtrrCbhqsmaPHjLKYnJCaQ= github.com/dgryski/go-farm v0.0.0-20190423205320-6a90982ecee2 h1:tdlZCpZ/P9DhczCTSixgIKmwPv6+wP5DGjqLYw5SUiA= github.com/dgryski/go-farm v0.0.0-20190423205320-6a90982ecee2/go.mod h1:SqUrOPUnsFjfmXRMNPybcSiG0BgUW2AuFH8PAnS2iTw= @@ -122,8 +127,8 @@ github.com/dgryski/go-sip13 v0.0.0-20181026042036-e10d5fee7954/go.mod h1:vAd38F8 github.com/dustin/go-humanize v0.0.0-20171111073723-bb3d318650d4/go.mod h1:HtrtbFcZ19U5GC7JDqmcUSB87Iq5E25KnS6fMYU6eOk= github.com/dustin/go-humanize v1.0.0 h1:VSnTsYCnlFHaM2/igO1h6X3HA71jcobQuxemgkq4zYo= github.com/dustin/go-humanize v1.0.0/go.mod h1:HtrtbFcZ19U5GC7JDqmcUSB87Iq5E25KnS6fMYU6eOk= -github.com/dvsekhvalnov/jose2go v0.0.0-20180829124132-7f401d37b68a h1:mq+R6XEM6lJX5VlLyZIrUSP8tSuJp82xTK89hvBwJbU= -github.com/dvsekhvalnov/jose2go v0.0.0-20180829124132-7f401d37b68a/go.mod h1:7BvyPhdbLxMXIYTFPLsyJRFMsKmOZnQmzh6Gb+uquuM= +github.com/dvsekhvalnov/jose2go v0.0.0-20200901110807-248326c1351b h1:HBah4D48ypg3J7Np4N+HY/ZR76fx3HEUGxDU6Uk39oQ= +github.com/dvsekhvalnov/jose2go v0.0.0-20200901110807-248326c1351b/go.mod h1:7BvyPhdbLxMXIYTFPLsyJRFMsKmOZnQmzh6Gb+uquuM= github.com/eapache/go-resiliency v1.1.0/go.mod h1:kFI+JgMyC7bLPUVY133qvEBtVayf5mFgVsvEsIPBvNs= github.com/eapache/go-xerial-snappy v0.0.0-20180814174437-776d5712da21/go.mod h1:+020luEh2TKB4/GOp8oxxtq0Daoen/Cii55CzbTV6DU= github.com/eapache/queue v1.1.0/go.mod h1:6eCeP0CKFpHLu8blIFXhExK/dRa7WDZfr6jVFPTqq+I= @@ -143,10 +148,12 @@ github.com/felixge/httpsnoop v1.0.1/go.mod h1:m8KPJKqk1gH5J9DgRY2ASl2lWCfGKXixSw github.com/fortytw2/leaktest v1.3.0/go.mod h1:jDsjWgpAGjm2CA7WthBh/CdZYEPF31XHquHwclZch5g= github.com/franela/goblin v0.0.0-20200105215937-c9ffbefa60db/go.mod h1:7dvUGVsVBjqR7JHJk0brhHOZYGmfBYOrK0ZhYMEtBr4= github.com/franela/goreq v0.0.0-20171204163338-bcd34c9993f8/go.mod h1:ZhphrRTfi2rbfLwlschooIH4+wKKDR4Pdxhh+TRoA20= -github.com/fsnotify/fsnotify v1.4.7 h1:IXs+QLmnXW2CcXuY+8Mzv/fWEsPGWxqefPtCP5CnV9I= github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo= +github.com/fsnotify/fsnotify v1.4.9 h1:hsms1Qyu0jgnwNXIxa+/V/PDsU6CfLf6CNO8H7IWoS4= +github.com/fsnotify/fsnotify v1.4.9/go.mod h1:znqG4EE+3YCdAaPaxE2ZRY/06pZUdp0tY4IgpuI1SZQ= github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04= github.com/go-gl/glfw v0.0.0-20190409004039-e6da0acd62b1/go.mod h1:vR7hzQXu2zJy9AVAgeJqvqgH9Q5CA+iKCZ2gyEVpxRU= +github.com/go-gl/glfw/v3.3/glfw v0.0.0-20200222043503-6f7a984d4dc4/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= github.com/go-kit/kit v0.8.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as= github.com/go-kit/kit v0.9.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as= github.com/go-kit/kit v0.10.0 h1:dXFJfIHVvUcpSgDOV+Ne6t7jXri8Tfv2uOLHUZ2XNuo= @@ -205,7 +212,7 @@ github.com/googleapis/gax-go/v2 v2.0.4/go.mod h1:0Wqv26UfaUD9n4G6kQubkQ+KchISgw+ github.com/googleapis/gax-go/v2 v2.0.5/go.mod h1:DWXyrwAJ9X0FpwwEdw+IPEYBICEFu5mhpdKc/us6bOk= github.com/gopherjs/gopherjs v0.0.0-20181017120253-0766667cb4d1/go.mod h1:wJfORRmW1u3UXTncJ5qlYoELFm8eSnnEO6hX4iZ3EWY= github.com/gorilla/context v1.1.1/go.mod h1:kBGZzfjB9CEq2AlWe17Uuf7NDRt0dE0s8S51q0aT7Yg= -github.com/gorilla/handlers v1.5.0/go.mod h1:t8XrUpc4KVXb7HGyJ4/cEnwQiaxrX/hz1Zv/4g96P1Q= +github.com/gorilla/handlers v1.5.1/go.mod h1:t8XrUpc4KVXb7HGyJ4/cEnwQiaxrX/hz1Zv/4g96P1Q= github.com/gorilla/mux v1.6.2/go.mod h1:1lud6UwP+6orDFRuTfBEV8e9/aOM/c4fVVCaMa2zaAs= github.com/gorilla/mux v1.7.3/go.mod h1:1lud6UwP+6orDFRuTfBEV8e9/aOM/c4fVVCaMa2zaAs= github.com/gorilla/mux v1.8.0 h1:i40aqfkR1h2SlN9hojwV5ZA91wcXFOvkdNIeFDP5koI= @@ -216,12 +223,14 @@ github.com/gorilla/websocket v1.4.2 h1:+/TMaTYc4QFitKJxsQ7Yye35DkWvkdLcvGKqM+x0U github.com/gorilla/websocket v1.4.2/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE= github.com/grpc-ecosystem/go-grpc-middleware v1.0.0/go.mod h1:FiyG127CGDf3tlThmgyCl78X/SZQqEOJBCDaAfeWzPs= github.com/grpc-ecosystem/go-grpc-middleware v1.0.1-0.20190118093823-f849b5445de4/go.mod h1:FiyG127CGDf3tlThmgyCl78X/SZQqEOJBCDaAfeWzPs= +github.com/grpc-ecosystem/go-grpc-middleware v1.2.1/go.mod h1:EaizFBKfUKtMIF5iaDEhniwNedqGo9FuLFzppDr3uwI= github.com/grpc-ecosystem/go-grpc-prometheus v1.2.0/go.mod h1:8NvIoxWQoOIhqOTXgfV/d3M/q6VIi02HzZEHgUlZvzk= github.com/grpc-ecosystem/grpc-gateway v1.8.5/go.mod h1:vNeuVxBJEsws4ogUvrchl83t/GYV9WGTSLVdBhOQFDY= github.com/grpc-ecosystem/grpc-gateway v1.9.0/go.mod h1:vNeuVxBJEsws4ogUvrchl83t/GYV9WGTSLVdBhOQFDY= github.com/grpc-ecosystem/grpc-gateway v1.9.5/go.mod h1:vNeuVxBJEsws4ogUvrchl83t/GYV9WGTSLVdBhOQFDY= -github.com/grpc-ecosystem/grpc-gateway v1.14.7 h1:Nk5kuHrnWUTf/0GL1a/vchH/om9Ap2/HnVna+jYZgTY= github.com/grpc-ecosystem/grpc-gateway v1.14.7/go.mod h1:oYZKL012gGh6LMyg/xA7Q2yq6j8bu0wa+9w14EEthWU= +github.com/grpc-ecosystem/grpc-gateway v1.15.0 h1:ntPNC9TD/6l2XDenJZe6T5lSMg95thpV9sGAqHX4WU8= +github.com/grpc-ecosystem/grpc-gateway v1.15.0/go.mod h1:vO11I9oWA+KsxmfFQPhLnnIb1VDE24M+pdxZFiuZcA8= github.com/gsterjov/go-libsecret v0.0.0-20161001094733-a6f4afe4910c h1:6rhixN/i8ZofjG1Y75iExal34USq5p+wiN1tpie8IrU= github.com/gsterjov/go-libsecret v0.0.0-20161001094733-a6f4afe4910c/go.mod h1:NMPJylDgVpX0MLRlPy15sqSwOFv/U1GZ2m21JhFfek0= github.com/gtank/merlin v0.1.1-0.20191105220539-8318aed1a79f/go.mod h1:T86dnYJhcGOh5BjZFCJWTDeTK7XW8uE+E21Cy/bIQ+s= @@ -263,21 +272,12 @@ github.com/hudl/fargo v1.3.0/go.mod h1:y3CKSmjA+wD2gak7sUSXTAoopbhU08POFhmITJgmK github.com/inconshreveable/mousetrap v1.0.0 h1:Z8tu5sraLXCXIcARxBp/8cbvlwVa7Z1NHg9XEKhtSvM= github.com/inconshreveable/mousetrap v1.0.0/go.mod h1:PxqpIevigyE2G7u3NXJIT2ANytuPF1OarO4DADm73n8= github.com/influxdata/influxdb1-client v0.0.0-20191209144304-8bf82d3c094d/go.mod h1:qj24IKcXYK6Iy9ceXlo3Tc+vtHo9lIhSX5JddghvEPo= -github.com/irismod/coinswap v0.0.0-20200901103745-f38672ac63ec h1:wcYq2UgKpIxCYSvtB9/NDFUfZ9n1I8WqdCzlvZzPnHg= -github.com/irismod/coinswap v0.0.0-20200901103745-f38672ac63ec/go.mod h1:3la+nTlqlISVLQTt9+kC4hBIvFe5J1VuJvOne9Zes7c= -github.com/irismod/htlc v0.0.0-20200901103718-c3bf89708dce h1:4+oBsP9xtUBiH77X/rFZRLA1Xy63q+dSyVl7hgVIVYI= -github.com/irismod/htlc v0.0.0-20200901103718-c3bf89708dce/go.mod h1:bP5l2IbAVZAZXPrQmXrghEgWpyakNJfeoxmPq0d1SI8= -github.com/irismod/nft v1.1.1-0.20200827095318-d16861212579 h1:UJQlLX7dGxp/WFm/Z5Rp1Ja3O/CY7qup9c1lEuVKX0Q= -github.com/irismod/nft v1.1.1-0.20200827095318-d16861212579/go.mod h1:l9EvpP0UKDYrmT/MRWM2FrmKpfYZJWbDR9srG7fylzA= -github.com/irismod/record v1.1.1-0.20200827095301-3e27fc43ae73 h1:DjsV6syYu1na1O0w3hlfAROOUPOCJCIPegJTMQt3X0U= -github.com/irismod/record v1.1.1-0.20200827095301-3e27fc43ae73/go.mod h1:slwVI+gGuBJo1OJPv0vw/GFeRPs9KB8K+0aecfmGSps= -github.com/irismod/service v1.1.1-0.20200901115916-d898b826bf10 h1:4j83EDZdLFUL4BHJUQBV24jjVEm+gET0acx3axVlhE0= -github.com/irismod/service v1.1.1-0.20200901115916-d898b826bf10/go.mod h1:ID4dmeafXHw8pFLDynH7l4mGIXetd5jrtFmY4qnxpHU= -github.com/irismod/token v1.1.1-0.20200901121217-d3aa04e760e3 h1:vt4wkKr7Qy4fTc2wETWpogi4uD22CQG0f6l2Dx+XPdY= -github.com/irismod/token v1.1.1-0.20200901121217-d3aa04e760e3/go.mod h1:hOxUjOsE1biJa8ReBzY58rz3ZJeglth+HbU2iftcZik= -github.com/irisnet/cosmos-sdk v0.34.4-0.20200901030027-1e0963031861 h1:qXtnE0CQDHSspuPY9VveN8EFCP8JUK6cFxXjF4w1Sds= -github.com/irisnet/cosmos-sdk v0.34.4-0.20200901030027-1e0963031861/go.mod h1:HXb9uKlB4sR4BFP32aSboY1Se4QhbFbYcJN6Dexil2U= +github.com/irisnet/cosmos-sdk v0.34.4-0.20201014023301-f172e47973d0 h1:ZQg12Ecw6rTKNTPmdlA1eOCaq/Q1QEngMBAWr9BO6wA= +github.com/irisnet/cosmos-sdk v0.34.4-0.20201014023301-f172e47973d0/go.mod h1:YZcO00Tq/qqj4ncsfn+PobyTelsot7wEMGPpxEbEAT0= +github.com/irisnet/irismod v1.1.1-0.20201015064111-9d21ec6ad6fc h1:T8ywu5KqVJVynF5A2+RVd3Rx8P5aSaqSjjMBjdBGY4A= +github.com/irisnet/irismod v1.1.1-0.20201015064111-9d21ec6ad6fc/go.mod h1:op0aGNvficnObLs9tYTW9LGiznDpTrfNBpIqfoeFDvM= github.com/jessevdk/go-flags v0.0.0-20141203071132-1679536dcc89/go.mod h1:4FA24M0QyGHXBuZZK/XkWh8h0e1EYbRYJSGM75WSRxI= +github.com/jessevdk/go-flags v1.4.0/go.mod h1:4FA24M0QyGHXBuZZK/XkWh8h0e1EYbRYJSGM75WSRxI= github.com/jmespath/go-jmespath v0.0.0-20180206201540-c2b33e8439af/go.mod h1:Nht3zPeWKUH0NzdCt2Blrr5ys8VGpn0CEB0cQHVjt7k= github.com/jmhodges/levigo v1.0.0 h1:q5EC36kV79HWeTBWsod3mG11EgStG3qArTKcvlksN1U= github.com/jmhodges/levigo v1.0.0/go.mod h1:Q6Qx+uH3RAqyK4rFQroq9RL7mdkABMcfhEI+nNuzMJQ= @@ -313,8 +313,9 @@ github.com/lightstep/lightstep-tracer-common/golang/gogo v0.0.0-20190605223551-b github.com/lightstep/lightstep-tracer-go v0.18.1/go.mod h1:jlF1pusYV4pidLvZ+XD0UBX0ZE6WURAspgAczcDHrL4= github.com/lyft/protoc-gen-validate v0.0.13/go.mod h1:XbGvPuh87YZc5TdIa2/I4pLk0QoUACkjt2znoq26NVQ= github.com/magiconair/properties v1.8.0/go.mod h1:PppfXfuXeibc/6YijjN8zIbojt8czPbwD3XqdrwzmxQ= -github.com/magiconair/properties v1.8.1 h1:ZC2Vc7/ZFkGmsVC9KvOjumD+G5lXy2RtTKyzRKO2BQ4= github.com/magiconair/properties v1.8.1/go.mod h1:PppfXfuXeibc/6YijjN8zIbojt8czPbwD3XqdrwzmxQ= +github.com/magiconair/properties v1.8.4 h1:8KGKTcQQGm0Kv7vEbKFErAoAOFyyacLStRtQSeYtvkY= +github.com/magiconair/properties v1.8.4/go.mod h1:y3VJvCyxH9uVvJTWEGAELF3aiYNyPKd5NZ3oSwXrF60= github.com/mattn/go-colorable v0.0.9/go.mod h1:9vuHe8Xs5qXnSaW/c/ABM9alt+Vo+STaOChaDxuIBZU= github.com/mattn/go-isatty v0.0.3/go.mod h1:M+lRXTBqGeGNdLjl/ufCoiOlB5xdOkqRJdNxMWT7Zi4= github.com/mattn/go-isatty v0.0.4/go.mod h1:M+lRXTBqGeGNdLjl/ufCoiOlB5xdOkqRJdNxMWT7Zi4= @@ -327,6 +328,7 @@ github.com/miekg/dns v1.0.14/go.mod h1:W1PPwlIAgtquWBMBEV9nkV9Cazfe8ScdGz/Lj7v3N github.com/mimoo/StrobeGo v0.0.0-20181016162300-f8f6d4d2b643 h1:hLDRPB66XQT/8+wG9WsDpiCvZf1yKO7sz7scAjSlBa0= github.com/mimoo/StrobeGo v0.0.0-20181016162300-f8f6d4d2b643/go.mod h1:43+3pMjjKimDBf5Kr4ZFNGbLql1zKkbImw+fZbw3geM= github.com/minio/highwayhash v1.0.0/go.mod h1:xQboMTeM9nY9v/LlAOxFctujiv5+Aq2hR5dxBpaMbdc= +github.com/minio/highwayhash v1.0.1/go.mod h1:BQskDq+xkJ12lmlUUi7U0M5Swg3EWR+dLTk+kldvVxY= github.com/mitchellh/cli v1.0.0/go.mod h1:hNIlj7HEI86fIcpObd7a0FcrxTWetlwJDGcceTlRvqc= github.com/mitchellh/go-homedir v1.0.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0= github.com/mitchellh/go-homedir v1.1.0 h1:lukF9ziXFxDFPkA1vsr5zpc1XuPDn/wFntq5mG+4E0Y= @@ -353,13 +355,19 @@ github.com/nats-io/nkeys v0.1.0/go.mod h1:xpnFELMwJABBLVhffcfd1MZx6VsNRFpEugbxzi github.com/nats-io/nkeys v0.1.3/go.mod h1:xpnFELMwJABBLVhffcfd1MZx6VsNRFpEugbxziKVo7w= github.com/nats-io/nuid v1.0.1/go.mod h1:19wcPz3Ph3q0Jbyiqsd0kePYG7A95tJPxeL+1OSON2c= github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e/go.mod h1:zD1mROLANZcx1PVRCS0qkT7pwLkGfwJo4zjcN/Tysno= +github.com/nxadm/tail v1.4.4/go.mod h1:kenIhsEOeOJmVchQTgglprH7qJGnHDVpk1VPCcaMI8A= github.com/oklog/oklog v0.3.2/go.mod h1:FCV+B7mhrz4o+ueLpx+KqkyXRGMWOYEvfiXtdGtbWGs= github.com/oklog/run v1.0.0/go.mod h1:dlhp/R75TPv97u0XWUtDeV/lRKWPKSdTuV0TZvrmrQA= github.com/oklog/ulid v1.3.1/go.mod h1:CirwcVhetQ6Lv90oh/F+FBtV6XMibvdAFo93nm5qn4U= github.com/olekukonko/tablewriter v0.0.0-20170122224234-a0225b3f23b5/go.mod h1:vsDQFd/mU46D+Z4whnwzcISnGGzXWMclvtLoiIKAKIo= github.com/onsi/ginkgo v1.6.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= github.com/onsi/ginkgo v1.7.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= +github.com/onsi/ginkgo v1.12.1/go.mod h1:zj2OWP4+oCPe1qIXoGWkgMRwljMUYCdkwsT2108oapk= +github.com/onsi/ginkgo v1.14.0/go.mod h1:iSB4RoI2tjJc9BBv4NKIKWKya62Rps+oPG/Lv9klQyY= +github.com/onsi/gomega v1.4.1/go.mod h1:C1qb7wdrVGGVU+Z6iS04AVkA3Q65CEZX59MT0QO5uiA= github.com/onsi/gomega v1.4.3/go.mod h1:ex+gbHU/CVuBBDIJjb2X0qEXbFg53c61hWP/1CpauHY= +github.com/onsi/gomega v1.7.1/go.mod h1:XdKZgCCFLUoM/7CFJVPcG8C1xQ1AJ0vpAezJrB7JYyY= +github.com/onsi/gomega v1.10.1/go.mod h1:iN09h71vgCQne3DLsj+A5owkum+a2tYe+TOCB1ybHNo= github.com/op/go-logging v0.0.0-20160315200505-970db520ece7/go.mod h1:HzydrMdWErDVzsI23lYNej1Htcns9BCg93Dk0bBINWk= github.com/opentracing-contrib/go-observer v0.0.0-20170622124052-a52f23424492/go.mod h1:Ngi6UdF0k5OKD5t5wlmGhe/EDKPoUM3BXZSSfIuJbis= github.com/opentracing/basictracer-go v1.0.0/go.mod h1:QfBfYuafItcjQuMwinw9GhYKwFXS9KnPs5lxoYwgW74= @@ -416,8 +424,8 @@ github.com/prometheus/common v0.4.1/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y8 github.com/prometheus/common v0.7.0/go.mod h1:DjGbpBbp5NYNiECxcL/VnbXCCaQpKd3tt26CguLLsqA= github.com/prometheus/common v0.9.1/go.mod h1:yhUN8i9wzaXS3w1O07YhxHEBxD+W35wd8bs7vj7HSQ4= github.com/prometheus/common v0.10.0/go.mod h1:Tlit/dnDKsSWFlCLTWaA1cyBgKHSMdTB80sz/V91rCo= -github.com/prometheus/common v0.13.0 h1:vJlpe9wPgDRM1Z+7Wj3zUUjY1nr6/1jNKyl7llliccg= -github.com/prometheus/common v0.13.0/go.mod h1:U+gB1OBLb1lF3O42bTCL+FK18tX9Oar16Clt/msog/s= +github.com/prometheus/common v0.14.0 h1:RHRyE8UocrbjU+6UvRzwi6HjiDfxrrBU91TtbKzkGp4= +github.com/prometheus/common v0.14.0/go.mod h1:U+gB1OBLb1lF3O42bTCL+FK18tX9Oar16Clt/msog/s= github.com/prometheus/procfs v0.0.0-20181005140218-185b4288413d/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= github.com/prometheus/procfs v0.0.0-20190117184657-bf6a532e95b1/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= github.com/prometheus/procfs v0.0.0-20190507164030-5867b95ac084/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA= @@ -490,20 +498,29 @@ github.com/stretchr/testify v1.6.1 h1:hDPOHmpOpP40lSULcqw7IrRb/u7w6RpDC9399XyoNd github.com/stretchr/testify v1.6.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= github.com/subosito/gotenv v1.2.0 h1:Slr1R9HxAlEKefgq5jn9U+DnETlIUa6HfgEzj0g5d7s= github.com/subosito/gotenv v1.2.0/go.mod h1:N0PQaV/YGNqwC0u51sEeR/aUtSLEXKX9iv69rRypqCw= -github.com/syndtr/goleveldb v1.0.1-0.20190923125748-758128399b1d h1:gZZadD8H+fF+n9CmNhYL1Y0dJB+kLOmKd7FbPJLeGHs= github.com/syndtr/goleveldb v1.0.1-0.20190923125748-758128399b1d/go.mod h1:9OrXJhf154huy1nPWmuSrkgjPUtUNhA+Zmy+6AESzuA= +github.com/syndtr/goleveldb v1.0.1-0.20200815110645-5c35d600f0ca h1:Ld/zXl5t4+D69SiV4JoN7kkfvJdOWlPpfxrzxpLMoUk= +github.com/syndtr/goleveldb v1.0.1-0.20200815110645-5c35d600f0ca/go.mod h1:u2MKkTVTVJWe5D1rCvame8WqhBd88EuIwODJZ1VHCPM= github.com/tecbot/gorocksdb v0.0.0-20191217155057-f0fad39f321c h1:g+WoO5jjkqGAzHWCjJB1zZfXPIAaDpzXIEJ0eS6B5Ok= github.com/tecbot/gorocksdb v0.0.0-20191217155057-f0fad39f321c/go.mod h1:ahpPrc7HpcfEWDQRZEmnXMzHY03mLDYMCxeDzy46i+8= github.com/tendermint/btcd v0.1.1 h1:0VcxPfflS2zZ3RiOAHkBiFUcPvbtRj5O7zHmcJWHV7s= github.com/tendermint/btcd v0.1.1/go.mod h1:DC6/m53jtQzr/NFmMNEu0rxf18/ktVoVtMrnDD5pN+U= github.com/tendermint/crypto v0.0.0-20191022145703-50d29ede1e15 h1:hqAk8riJvK4RMWx1aInLzndwxKalgi5rTqgfXxOxbEI= github.com/tendermint/crypto v0.0.0-20191022145703-50d29ede1e15/go.mod h1:z4YtwM70uOnk8h0pjJYlj3zdYwi9l03By6iAIF5j/Pk= -github.com/tendermint/go-amino v0.15.1 h1:D2uk35eT4iTsvJd9jWIetzthE5C0/k2QmMFkCN+4JgQ= -github.com/tendermint/go-amino v0.15.1/go.mod h1:TQU0M1i/ImAo+tYpZi73AU3V/dKeCoMC9Sphe2ZwGME= -github.com/tendermint/tendermint v0.34.0-rc3 h1:d7Fsd5rdbxq4GmJ0kRfx7l7LesQM7e70f0ytWLTQ/Go= +github.com/tendermint/go-amino v0.16.0 h1:GyhmgQKvqF82e2oZeuMSp9JTN0N09emoSZlb2lyGa2E= +github.com/tendermint/go-amino v0.16.0/go.mod h1:TQU0M1i/ImAo+tYpZi73AU3V/dKeCoMC9Sphe2ZwGME= github.com/tendermint/tendermint v0.34.0-rc3/go.mod h1:BoHcEpjfpBHc1Be7RQz3AHaXFNObcDG7SNHCev6Or4g= -github.com/tendermint/tm-db v0.6.1 h1:w3X87itMPXopcRPlFiqspEKhw4FXihPk2rnFFkP0zGk= +github.com/tendermint/tendermint v0.34.0-rc4.0.20201005135527-d7d0ffea13c6 h1:gqZ0WDpDYgMm/iaiMEXvI1nt/GoWCuwtBomVpUMiAIs= +github.com/tendermint/tendermint v0.34.0-rc4.0.20201005135527-d7d0ffea13c6/go.mod h1:BSXqR6vWbOecet726v66qVwSkFDLfEeBrq+EhkKbij4= github.com/tendermint/tm-db v0.6.1/go.mod h1:m3x9kRP4UFd7JODJL0yBAZqE7wTw+S37uAE90cTx7OA= +github.com/tendermint/tm-db v0.6.2 h1:DOn8jwCdjJblrCFJbtonEIPD1IuJWpbRUUdR8GWE4RM= +github.com/tendermint/tm-db v0.6.2/go.mod h1:GYtQ67SUvATOcoY8/+x6ylk8Qo02BQyLrAs+yAcLvGI= +github.com/tidwall/gjson v1.6.0 h1:9VEQWz6LLMUsUl6PueE49ir4Ka6CzLymOAZDxpFsTDc= +github.com/tidwall/gjson v1.6.0/go.mod h1:P256ACg0Mn+j1RXIDXoss50DeIABTYK1PULOJHhxOls= +github.com/tidwall/match v1.0.1 h1:PnKP62LPNxHKTwvHHZZzdOAOCtsJTjo6dZLCwpKm5xc= +github.com/tidwall/match v1.0.1/go.mod h1:LujAq0jyVjBy028G1WhWfIzbpQfMO8bBZ6Tyb0+pL9E= +github.com/tidwall/pretty v1.0.0 h1:HsD+QiTn7sK6flMKIvNmpqz1qrpP3Ps6jOKIKMooyg4= +github.com/tidwall/pretty v1.0.0/go.mod h1:XNkn88O1ChpSDQmQeStsy+sBenx6DDtFZJxhVysOjyk= github.com/tmc/grpc-websocket-proxy v0.0.0-20170815181823-89b8d40f7ca8/go.mod h1:ncp9v5uamzpCO7NfCPTXjqaC+bZgJeR0sMTm6dMHP7U= github.com/tmc/grpc-websocket-proxy v0.0.0-20190109142713-0ad062ec5ee5/go.mod h1:ncp9v5uamzpCO7NfCPTXjqaC+bZgJeR0sMTm6dMHP7U= github.com/tv42/httpunix v0.0.0-20150427012821-b75d8614f926/go.mod h1:9ESjWnEqriFuLhtthL60Sar/7RFoluCcXsuvEwTV5KM= @@ -555,14 +572,17 @@ golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8U golang.org/x/crypto v0.0.0-20191206172530-e9b2fee46413/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20200115085410-6d4e4cb37c7d/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20200406173513-056763e48d71/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= +golang.org/x/crypto v0.0.0-20200510223506-06a226fb4e37/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= -golang.org/x/crypto v0.0.0-20200709230013-948cd5f35899 h1:DZhuSZLsGlFL4CmhA8BcRA0mnthyA/nZ00AqCUo7vHg= golang.org/x/crypto v0.0.0-20200709230013-948cd5f35899/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= +golang.org/x/crypto v0.0.0-20200820211705-5c72a883971a h1:vclmkQCjlDX5OydZ9wv8rBCcS0QyQY66Mpf/7BZbInM= +golang.org/x/crypto v0.0.0-20200820211705-5c72a883971a/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190306152737-a1d7652674e8/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190510132918-efd6b22b2522/go.mod h1:ZjyILWgesfNpC6sMxTJOJm9Kp84zZh5NQWvqDGG3Qr8= golang.org/x/exp v0.0.0-20190829153037-c13cbed26979/go.mod h1:86+5VVa7VpoJ4kLfm080zCjGlMRFzhUhsZKEZO7MGek= golang.org/x/exp v0.0.0-20191030013958-a1ab85dbe136/go.mod h1:JXzH8nQsPlswgeRAPE3MuO9GYsAcnJvJ4vnMwN/5qkY= +golang.org/x/exp v0.0.0-20200331195152-e8c3332aa8e5/go.mod h1:4M0jN8W1tt0AVLNr8HDosyJCDCDuyL9N9+3m7wDWgKw= golang.org/x/image v0.0.0-20190227222117-0694c2d4d067/go.mod h1:kZ7UVZpmo3dzQBMxlp+ypCbDeSB+sBbTgSJuh5dn5js= golang.org/x/image v0.0.0-20190802002840-cff245a6509b/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0= golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= @@ -578,6 +598,8 @@ golang.org/x/mobile v0.0.0-20190719004257-d2bd2a29d028/go.mod h1:E/iHnbuqvinMTCc golang.org/x/mod v0.0.0-20190513183733-4bf6d317e70e/go.mod h1:mXi4GBBbnImb6dmsKGUJ2LatrhH/nqhxcFungHvyanc= golang.org/x/mod v0.1.0/go.mod h1:0QHyrYULN0/3qlju5TqG8bIK38QM8yzMo5ekMj3DlcY= golang.org/x/mod v0.1.1-0.20191105210325-c90efee705ee/go.mod h1:QqPTAvyqsEbceGzBzNggFXnrqF1CaUcvgkdR5Ot7KZg= +golang.org/x/mod v0.1.1-0.20191107180719-034126e5016b/go.mod h1:QqPTAvyqsEbceGzBzNggFXnrqF1CaUcvgkdR5Ot7KZg= +golang.org/x/net v0.0.0-20180719180050-a680a1efc54d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180906233101-161cd47e91fd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= @@ -599,8 +621,11 @@ golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLL golang.org/x/net v0.0.0-20190813141303-74dc4d7220e7/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20191002035440-2ec189313ef0/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20200324143707-d3edc9973b7e/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= -golang.org/x/net v0.0.0-20200625001655-4c5254603344 h1:vGXIOMxbNfDTk/aXCmfdLgkrSV+Z2tcbze+pEc3v5W4= +golang.org/x/net v0.0.0-20200421231249-e086a090c8fd/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= +golang.org/x/net v0.0.0-20200520004742-59133d7f0dd7/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= golang.org/x/net v0.0.0-20200625001655-4c5254603344/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= +golang.org/x/net v0.0.0-20200813134508-3edf25e44fcc h1:zK/HqS5bZxDptfPJNq8v7vJfXtkU7r9TLIoSr1bXaP4= +golang.org/x/net v0.0.0-20200813134508-3edf25e44fcc/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= @@ -633,19 +658,27 @@ golang.org/x/sys v0.0.0-20190626221950-04f50cda93cb/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20190712062909-fae7ac547cb7/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190726091711-fc99dfbffb4e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190826190057-c7b8b68b1456/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190904154756-749cb33beabd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20191001151750-bb3f8db39f24/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20191005200804-aed5e4c7ecf9/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20191120155948-bd437916bb0e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191220142924-d4481acd189f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200106162015-b016eb3dc98e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200116001909-b77594299b42/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200122134326-e047566fdf82/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200202164722-d101bd2416d5/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200323222414-85ca7c5b95cd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200420163511-1957bb5e6d1f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200519105757-fe76b779f299/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200615200032-f1bc736245b1/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200625212154-ddb9806d33ae h1:Ih9Yo4hSPImZOpfGuA4bR/ORKTAbhZo2AbWNRCnevdo= golang.org/x/sys v0.0.0-20200625212154-ddb9806d33ae/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200814200057-3d37ad5750ed h1:J22ig1FUekjjkmZUM7pTKixYm8DvrYsvrBZdunYeIuQ= +golang.org/x/sys v0.0.0-20200814200057-3d37ad5750ed/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= -golang.org/x/text v0.3.2 h1:tW2bmiBqwgJj/UpqtC8EpXEZVYOwU0yG4iWbprSVAcs= golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk= +golang.org/x/text v0.3.3 h1:cokOdA+Jmi5PJGXLlLllQSgYigAEfHXJAERHVMaCc2k= +golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/time v0.0.0-20180412165947-fbb02b2291d2/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= @@ -672,11 +705,13 @@ golang.org/x/tools v0.0.0-20191029041327-9cc4af7d6b2c/go.mod h1:b+2E5dAYhXwXZwtn golang.org/x/tools v0.0.0-20191029190741-b9c20aec41a5/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191112195655-aa38f8e97acc/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20200103221440-774c71fcf114/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20200110213125-a7a6caa82ab2 h1:V9r/14uGBqLgNlHRYWdVqjMdWkcOHnE2KG8DwVqQSEc= golang.org/x/tools v0.0.0-20200110213125-a7a6caa82ab2/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20200207183749-b753a1ba74fa h1:5E4dL8+NgFOgjwbTKz+OOEGGhP+ectTmF842l6KjupQ= +golang.org/x/tools v0.0.0-20200207183749-b753a1ba74fa/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= google.golang.org/api v0.3.1/go.mod h1:6wY9I6uQWHQ8EM57III9mq/AjF+i8G65rmVagqKMtkk= google.golang.org/api v0.4.0/go.mod h1:8k5glujaEP+g9n7WNsDg8QP6cUVNI86fCNMcbazEtwE= google.golang.org/api v0.7.0/go.mod h1:WtwebWUNSVBH/HAw79HIFXZNqEvBhG+Ra+ax0hx3E3M= @@ -700,9 +735,12 @@ google.golang.org/genproto v0.0.0-20190819201941-24fa4b261c55/go.mod h1:DMBHOl98 google.golang.org/genproto v0.0.0-20190911173649-1774047e7e51/go.mod h1:IbNlFCBrqXvoKpeg0TB2l7cyZUmoaFKYIwrEpbDKLA8= google.golang.org/genproto v0.0.0-20191108220845-16a3f7862a1a/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= google.golang.org/genproto v0.0.0-20200324203455-a04cca1dde73/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= +google.golang.org/genproto v0.0.0-20200423170343-7949de9c1215/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= google.golang.org/genproto v0.0.0-20200513103714-09dca8ec2884/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= -google.golang.org/genproto v0.0.0-20200526211855-cb27e3aa2013 h1:+kGHl1aib/qcwaRi1CbqBZ1rk19r85MNUf8HaBghugY= google.golang.org/genproto v0.0.0-20200526211855-cb27e3aa2013/go.mod h1:NbSheEEYHJ7i3ixzK3sjbqSGDJWnxyFXZblF3eUsNvo= +google.golang.org/genproto v0.0.0-20200825200019-8632dd797987/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20200911024640-645f7a48b24f h1:Yv4xsIx7HZOoyUGSJ2ksDyWE2qIBXROsZKt2ny3hCGM= +google.golang.org/genproto v0.0.0-20200911024640-645f7a48b24f/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/grpc v1.17.0/go.mod h1:6QZJwpn2B+Zp71q/5VxRsJ6NXXVCE5NRUHRo+f3cWCs= google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= google.golang.org/grpc v1.19.1/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= @@ -717,8 +755,11 @@ google.golang.org/grpc v1.25.1/go.mod h1:c3i+UQWmh7LiEpx4sFZnkU36qjEYZ0imhYfXVyQ google.golang.org/grpc v1.26.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= google.golang.org/grpc v1.27.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= google.golang.org/grpc v1.28.0/go.mod h1:rpkK4SK4GF4Ach/+MFLZUBavHOvF2JJB5uozKKal+60= -google.golang.org/grpc v1.31.0 h1:T7P4R73V3SSDPhH7WW7ATbfViLtmamH0DKrP3f9AuDI= +google.golang.org/grpc v1.29.1/go.mod h1:itym6AZVZYACWQqET3MqgPpjcuV5QH3BxFS3IjizoKk= google.golang.org/grpc v1.31.0/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak= +google.golang.org/grpc v1.31.1/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak= +google.golang.org/grpc v1.32.0 h1:zWTV+LMdc3kaiJMSTOFz2UgSBgx8RNQoTGiZu3fR9S0= +google.golang.org/grpc v1.32.0/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak= google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8= google.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0= google.golang.org/protobuf v0.0.0-20200228230310-ab0ca4ff8a60/go.mod h1:cfTl7dwQJ+fmap5saPgwCLgHXTUD7jkjRqWcaiX5VyM= diff --git a/lib/cdc/cdc.go b/lib/cdc/cdc.go index ba5a970..9882b3f 100644 --- a/lib/cdc/cdc.go +++ b/lib/cdc/cdc.go @@ -16,12 +16,12 @@ import ( "github.com/cosmos/cosmos-sdk/x/gov" "github.com/cosmos/cosmos-sdk/x/slashing" "github.com/cosmos/cosmos-sdk/x/staking" - "github.com/irismod/coinswap" - "github.com/irismod/htlc" - "github.com/irismod/nft" - "github.com/irismod/record" - "github.com/irismod/service" - "github.com/irismod/token" + "github.com/irisnet/irismod/modules/coinswap" + "github.com/irisnet/irismod/modules/htlc" + "github.com/irisnet/irismod/modules/nft" + "github.com/irisnet/irismod/modules/record" + "github.com/irisnet/irismod/modules/service" + "github.com/irisnet/irismod/modules/token" ) var ( @@ -48,11 +48,11 @@ var ( // 初始化账户地址前缀 func init() { - var cdc = codec.New() + var cdc = codec.NewLegacyAmino() interfaceRegistry := ctypes.NewInterfaceRegistry() marshaler := codec.NewProtoCodec(interfaceRegistry) - txCfg := tx.NewTxConfig(marshaler, std.DefaultPublicKeyCodec{}, tx.DefaultSignModes) + txCfg := tx.NewTxConfig(marshaler, tx.DefaultSignModes) encodecfg = params.EncodingConfig{ InterfaceRegistry: interfaceRegistry, @@ -60,9 +60,9 @@ func init() { TxConfig: txCfg, Amino: cdc, } - std.RegisterCodec(encodecfg.Amino) + std.RegisterLegacyAminoCodec(encodecfg.Amino) std.RegisterInterfaces(encodecfg.InterfaceRegistry) - moduleBasics.RegisterCodec(encodecfg.Amino) + moduleBasics.RegisterLegacyAminoCodec(encodecfg.Amino) moduleBasics.RegisterInterfaces(encodecfg.InterfaceRegistry) } func GetTxDecoder() sdk.TxDecoder { diff --git a/lib/pool/pool_client.go b/lib/pool/pool_client.go index 57ace9c..ab9c239 100644 --- a/lib/pool/pool_client.go +++ b/lib/pool/pool_client.go @@ -4,6 +4,7 @@ package pool import ( + "context" "fmt" "github.com/irisnet/rainbow-sync/logger" rpcClient "github.com/tendermint/tendermint/rpc/client/http" @@ -45,7 +46,7 @@ func (c *Client) Release() { func (c *Client) HeartBeat() error { http := c.HTTP - _, err := http.Health() + _, err := http.Health(context.Background()) return err } diff --git a/model/tx.go b/model/tx.go index 6f3d778..693de2d 100644 --- a/model/tx.go +++ b/model/tx.go @@ -11,9 +11,6 @@ type Tx struct { Time int64 `bson:"time"` Height int64 `bson:"height"` TxHash string `bson:"tx_hash"` - From string `bson:"from"` - To string `bson:"to"` - Amount []*Coin `bson:"amount"` Type string `bson:"type"` Fee *Fee `bson:"fee"` ActualFee *ActualFee `bson:"actual_fee"` @@ -76,12 +73,6 @@ func (d Tx) EnsureIndexes() { mgo.Index{ Key: []string{"-type"}, Background: true}, - mgo.Index{ - Key: []string{"-from"}, - Background: true}, - mgo.Index{ - Key: []string{"-to", "-height"}, - Background: true}, ) db.EnsureIndexes(d.Name(), indexes) diff --git a/msgs/bank/bank.go b/msgs/bank/bank.go new file mode 100644 index 0000000..940bfce --- /dev/null +++ b/msgs/bank/bank.go @@ -0,0 +1,26 @@ +package bank + +import ( + "github.com/cosmos/cosmos-sdk/types" + . "github.com/irisnet/rainbow-sync/msgs" +) + +func HandleTxMsg(v types.Msg) (MsgDocInfo, bool) { + var ( + msgDocInfo MsgDocInfo + ) + ok := true + switch v.Type() { + case new(MsgSend).Type(): + docMsg := DocMsgSend{} + msgDocInfo = docMsg.HandleTxMsg(v) + break + case new(MsgMultiSend).Type(): + docMsg := DocMsgMultiSend{} + msgDocInfo = docMsg.HandleTxMsg(v) + break + default: + ok = false + } + return msgDocInfo, ok +} diff --git a/msgs/bank/msg_multisend.go b/msgs/bank/msg_multisend.go new file mode 100644 index 0000000..1dd3003 --- /dev/null +++ b/msgs/bank/msg_multisend.go @@ -0,0 +1,58 @@ +package bank + +import ( + "github.com/irisnet/rainbow-sync/model" + . "github.com/irisnet/rainbow-sync/msgs" + "github.com/irisnet/rainbow-sync/utils" +) + +type ( + DocMsgMultiSend struct { + Inputs []Item `bson:"inputs"` + Outputs []Item `bson:"outputs"` + TempData []string `bson:"-"` + } + Item struct { + Address string `bson:"address"` + Coins []model.Coin `bson:"coins"` + } +) + +func (m *DocMsgMultiSend) GetType() string { + return MsgTypeMultiSend +} + +func (m *DocMsgMultiSend) BuildMsg(v interface{}) { + msg := v.(*MsgMultiSend) + for _, one := range msg.Inputs { + m.Inputs = append(m.Inputs, Item{Address: one.Address, Coins: model.BuildDocCoins(one.Coins)}) + m.TempData = append(m.TempData, one.Address) + } + for _, one := range msg.Outputs { + m.Outputs = append(m.Outputs, Item{Address: one.Address, Coins: model.BuildDocCoins(one.Coins)}) + m.TempData = append(m.TempData, one.Address) + } + +} + +func (m *DocMsgMultiSend) HandleTxMsg(v SdkMsg) MsgDocInfo { + var ( + addrs []string + msg MsgMultiSend + ) + + utils.UnMarshalJsonIgnoreErr(utils.MarshalJsonIgnoreErr(v), &msg) + + for _, one := range msg.Inputs { + addrs = append(addrs, one.Address) + } + for _, one := range msg.Outputs { + addrs = append(addrs, one.Address) + } + + handler := func() (Msg, []string) { + return m, addrs + } + + return CreateMsgDocInfo(v, handler) +} diff --git a/msgs/bank/msg_send.go b/msgs/bank/msg_send.go new file mode 100644 index 0000000..a72fd44 --- /dev/null +++ b/msgs/bank/msg_send.go @@ -0,0 +1,43 @@ +package bank + +import ( + "github.com/irisnet/rainbow-sync/model" + . "github.com/irisnet/rainbow-sync/msgs" + "github.com/irisnet/rainbow-sync/utils" +) + +type ( + DocMsgSend struct { + FromAddress string `bson:"from_address"` + ToAddress string `bson:"to_address"` + Amount []model.Coin `bson:"amount"` + } +) + +func (m *DocMsgSend) GetType() string { + return MsgTypeSend +} + +func (m *DocMsgSend) BuildMsg(v interface{}) { + msg := v.(*MsgSend) + m.FromAddress = msg.FromAddress + m.ToAddress = msg.ToAddress + m.Amount = model.BuildDocCoins(msg.Amount) +} + +func (m *DocMsgSend) HandleTxMsg(v SdkMsg) MsgDocInfo { + var ( + addrs []string + msg MsgSend + ) + + utils.UnMarshalJsonIgnoreErr(utils.MarshalJsonIgnoreErr(v), &msg) + + addrs = append(addrs, msg.FromAddress, msg.ToAddress) + + handler := func() (Msg, []string) { + return m, addrs + } + + return CreateMsgDocInfo(v, handler) +} diff --git a/msgs/coinswap/coinswap.go b/msgs/coinswap/coinswap.go new file mode 100644 index 0000000..4eb695d --- /dev/null +++ b/msgs/coinswap/coinswap.go @@ -0,0 +1,129 @@ +package coinswap + +import ( + sdk "github.com/cosmos/cosmos-sdk/types" + "github.com/irisnet/rainbow-sync/model" + . "github.com/irisnet/rainbow-sync/msgs" +) + +type DocTxMsgAddLiquidity struct { + MaxToken model.Coin `bson:"max_token"` // coin to be deposited as liquidity with an upper bound for its amount + ExactIrisAmt string `bson:"exact_iris_amt"` // exact amount of native asset being add to the liquidity pool + MinLiquidity string `bson:"min_liquidity"` // lower bound UNI sender is willing to accept for deposited coins + Deadline int64 `bson:"deadline"` + Sender string `bson:"sender"` +} + +func (doctx *DocTxMsgAddLiquidity) GetType() string { + return MsgTypeAddLiquidity +} + +func (doctx *DocTxMsgAddLiquidity) BuildMsg(txMsg interface{}) { + msg := txMsg.(*MsgAddLiquidity) + doctx.Sender = msg.Sender.String() + doctx.MinLiquidity = msg.MinLiquidity.String() + doctx.ExactIrisAmt = msg.ExactStandardAmt.String() + doctx.Deadline = msg.Deadline + doctx.MaxToken = model.BuildDocCoin(msg.MaxToken) +} + +func (m *DocTxMsgAddLiquidity) HandleTxMsg(v sdk.Msg) MsgDocInfo { + + var ( + addrs []string + msg MsgAddLiquidity + ) + + ConvertMsg(v, &msg) + addrs = append(addrs, msg.Sender.String()) + handler := func() (Msg, []string) { + return m, addrs + } + + return CreateMsgDocInfo(v, handler) +} + +type DocTxMsgRemoveLiquidity struct { + MinToken string `bson:"min_token"` // coin to be withdrawn with a lower bound for its amount + WithdrawLiquidity model.Coin `bson:"withdraw_liquidity"` // amount of UNI to be burned to withdraw liquidity from a reserve pool + MinIrisAmt string `bson:"min_iris_amt"` // minimum amount of the native asset the sender is willing to accept + Deadline int64 `bson:"deadline"` + Sender string `bson:"sender"` +} + +func (doctx *DocTxMsgRemoveLiquidity) GetType() string { + return MsgTypeRemoveLiquidity +} + +func (doctx *DocTxMsgRemoveLiquidity) BuildMsg(txMsg interface{}) { + msg := txMsg.(*MsgRemoveLiquidity) + doctx.Sender = msg.Sender.String() + doctx.MinIrisAmt = msg.MinStandardAmt.String() + doctx.MinToken = msg.MinToken.String() + doctx.Deadline = msg.Deadline + doctx.WithdrawLiquidity = model.BuildDocCoin(msg.WithdrawLiquidity) +} +func (m *DocTxMsgRemoveLiquidity) HandleTxMsg(v sdk.Msg) MsgDocInfo { + + var ( + addrs []string + msg MsgRemoveLiquidity + ) + ConvertMsg(v, &msg) + addrs = append(addrs, msg.Sender.String()) + handler := func() (Msg, []string) { + return m, addrs + } + + return CreateMsgDocInfo(v, handler) +} + +type DocTxMsgSwapOrder struct { + Input Input `bson:"input"` // the amount the sender is trading + Output Output `bson:"output"` // the amount the sender is receiving + Deadline int64 `bson:"deadline"` // deadline for the transaction to still be considered valid + IsBuyOrder bool `bson:"is_buy_order"` // boolean indicating whether the order should be treated as a buy or sell +} + +type Input struct { + Address string `bson:"address"` + Coin model.Coin `bson:"coin"` +} + +type Output struct { + Address string `bson:"address"` + Coin model.Coin `bson:"coin"` +} + +func (doctx *DocTxMsgSwapOrder) GetType() string { + return MsgTypeSwapOrder +} + +func (doctx *DocTxMsgSwapOrder) BuildMsg(txMsg interface{}) { + msg := txMsg.(*MsgSwapOrder) + doctx.Deadline = msg.Deadline + doctx.IsBuyOrder = msg.IsBuyOrder + doctx.Input = Input{ + Address: msg.Input.Address.String(), + Coin: model.BuildDocCoin(msg.Input.Coin), + } + doctx.Output = Output{ + Address: msg.Output.Address.String(), + Coin: model.BuildDocCoin(msg.Output.Coin), + } +} +func (m *DocTxMsgSwapOrder) HandleTxMsg(v sdk.Msg) MsgDocInfo { + + var ( + addrs []string + msg MsgSwapOrder + ) + + ConvertMsg(v, &msg) + addrs = append(addrs, msg.Output.Address.String(), msg.Input.Address.String()) + handler := func() (Msg, []string) { + return m, addrs + } + + return CreateMsgDocInfo(v, handler) +} diff --git a/msgs/coinswap/handler.go b/msgs/coinswap/handler.go new file mode 100644 index 0000000..71dc21c --- /dev/null +++ b/msgs/coinswap/handler.go @@ -0,0 +1,24 @@ +package coinswap + +import ( + sdk "github.com/cosmos/cosmos-sdk/types" + . "github.com/irisnet/rainbow-sync/msgs" +) + +func HandleTxMsg(msg sdk.Msg) (MsgDocInfo, bool) { + ok := true + switch msg.Type() { + case new(MsgAddLiquidity).Type(): + docMsg := DocTxMsgAddLiquidity{} + return docMsg.HandleTxMsg(msg), ok + case new(MsgRemoveLiquidity).Type(): + docMsg := DocTxMsgRemoveLiquidity{} + return docMsg.HandleTxMsg(msg), ok + case new(MsgSwapOrder).Type(): + docMsg := DocTxMsgSwapOrder{} + return docMsg.HandleTxMsg(msg), ok + default: + ok = false + } + return MsgDocInfo{}, ok +} diff --git a/msgs/common.go b/msgs/common.go new file mode 100644 index 0000000..1e1c66b --- /dev/null +++ b/msgs/common.go @@ -0,0 +1,54 @@ +package msgs + +import ( + sdk "github.com/cosmos/cosmos-sdk/types" + "github.com/irisnet/rainbow-sync/model" + "github.com/irisnet/rainbow-sync/utils" +) + +func CreateMsgDocInfo(msg sdk.Msg, handler func() (Msg, []string)) MsgDocInfo { + var ( + docTxMsg model.DocTxMsg + signers []string + addrs []string + ) + + m, addrcollections := handler() + + m.BuildMsg(msg) + docTxMsg = model.DocTxMsg{ + Type: m.GetType(), + Msg: m, + } + + _, signers = BuildDocSigners(msg.GetSigners()) + addrs = append(addrs, signers...) + addrs = append(addrs, addrcollections...) + + return MsgDocInfo{ + DocTxMsg: docTxMsg, + Signers: signers, + Addrs: addrs, + } +} +func BuildDocSigners(signers []sdk.AccAddress) (string, []string) { + var ( + firstSigner string + allSigners []string + ) + if len(signers) == 0 { + return firstSigner, allSigners + } + for _, v := range signers { + if firstSigner == "" { + firstSigner = v.String() + } + + allSigners = append(allSigners, v.String()) + } + + return firstSigner, allSigners +} +func ConvertMsg(v interface{}, msg interface{}) { + utils.UnMarshalJsonIgnoreErr(utils.MarshalJsonIgnoreErr(v), &msg) +} diff --git a/msgs/crisis/crisis.go b/msgs/crisis/crisis.go new file mode 100644 index 0000000..e32bd51 --- /dev/null +++ b/msgs/crisis/crisis.go @@ -0,0 +1,18 @@ +package crisis + +import ( + sdk "github.com/cosmos/cosmos-sdk/types" + . "github.com/irisnet/rainbow-sync/msgs" +) + +func HandleTxMsg(msg sdk.Msg) (MsgDocInfo, bool) { + ok := true + switch msg.Type() { + case new(MsgVerifyInvariant).Type(): + docMsg := DocMsgVerifyInvariant{} + return docMsg.HandleTxMsg(msg), ok + default: + ok = false + } + return MsgDocInfo{}, ok +} diff --git a/msgs/crisis/verify_invariant.go b/msgs/crisis/verify_invariant.go new file mode 100644 index 0000000..8446447 --- /dev/null +++ b/msgs/crisis/verify_invariant.go @@ -0,0 +1,39 @@ +package crisis + +import ( + . "github.com/irisnet/rainbow-sync/msgs" +) + +type DocMsgVerifyInvariant struct { + Sender string `bson:"sender"` + InvariantModuleName string `bson:"invariant_module_name" yaml:"invariant_module_name"` + InvariantRoute string `bson:"invariant_route" yaml:"invariant_route"` +} + +func (m *DocMsgVerifyInvariant) GetType() string { + return MsgTypeVerifyInvariant +} + +func (m *DocMsgVerifyInvariant) BuildMsg(v interface{}) { + msg := v.(*MsgVerifyInvariant) + m.Sender = msg.Sender + m.InvariantModuleName = msg.InvariantModuleName + m.InvariantRoute = msg.InvariantRoute + +} + +func (m *DocMsgVerifyInvariant) HandleTxMsg(v SdkMsg) MsgDocInfo { + + var ( + addrs []string + msg MsgVerifyInvariant + ) + + ConvertMsg(v, &msg) + addrs = append(addrs, msg.Sender) + handler := func() (Msg, []string) { + return m, addrs + } + + return CreateMsgDocInfo(v, handler) +} diff --git a/msgs/distribution/distribution.go b/msgs/distribution/distribution.go new file mode 100644 index 0000000..cc90717 --- /dev/null +++ b/msgs/distribution/distribution.go @@ -0,0 +1,129 @@ +package distribution + +import ( + "github.com/irisnet/rainbow-sync/model" + . "github.com/irisnet/rainbow-sync/msgs" +) + +type DocTxMsgSetWithdrawAddress struct { + DelegatorAddress string `bson:"delegator_address"` + WithdrawAddress string `bson:"withdraw_address"` +} + +func (doctx *DocTxMsgSetWithdrawAddress) GetType() string { + return MsgTypeSetWithdrawAddress +} + +func (doctx *DocTxMsgSetWithdrawAddress) BuildMsg(txMsg interface{}) { + msg := txMsg.(*MsgStakeSetWithdrawAddress) + doctx.DelegatorAddress = msg.DelegatorAddress + doctx.WithdrawAddress = msg.WithdrawAddress +} + +func (m *DocTxMsgSetWithdrawAddress) HandleTxMsg(v SdkMsg) MsgDocInfo { + + var ( + addrs []string + msg MsgStakeSetWithdrawAddress + ) + + ConvertMsg(v, &msg) + addrs = append(addrs, msg.DelegatorAddress, msg.WithdrawAddress) + handler := func() (Msg, []string) { + return m, addrs + } + + return CreateMsgDocInfo(v, handler) +} + +// msg struct for delegation withdraw from a single validator +type DocTxMsgWithdrawDelegatorReward struct { + DelegatorAddress string `bson:"delegator_address"` + ValidatorAddress string `bson:"validator_address"` +} + +func (doctx *DocTxMsgWithdrawDelegatorReward) GetType() string { + return MsgTypeWithdrawDelegatorReward +} + +func (doctx *DocTxMsgWithdrawDelegatorReward) BuildMsg(txMsg interface{}) { + msg := txMsg.(*MsgWithdrawDelegatorReward) + doctx.DelegatorAddress = msg.DelegatorAddress + doctx.ValidatorAddress = msg.ValidatorAddress +} +func (m *DocTxMsgWithdrawDelegatorReward) HandleTxMsg(v SdkMsg) MsgDocInfo { + + var ( + addrs []string + msg MsgWithdrawDelegatorReward + ) + + ConvertMsg(v, &msg) + addrs = append(addrs, msg.DelegatorAddress, msg.ValidatorAddress) + handler := func() (Msg, []string) { + return m, addrs + } + + return CreateMsgDocInfo(v, handler) +} + +// msg struct for delegation withdraw for all of the delegator's delegations +type DocTxMsgFundCommunityPool struct { + Amount []model.Coin `bson:"amount"` + Depositor string `bson:"depositor"` +} + +func (doctx *DocTxMsgFundCommunityPool) GetType() string { + return MsgTypeMsgFundCommunityPool +} + +func (doctx *DocTxMsgFundCommunityPool) BuildMsg(txMsg interface{}) { + msg := txMsg.(*MsgFundCommunityPool) + doctx.Depositor = msg.Depositor + doctx.Amount = model.BuildDocCoins(msg.Amount) +} +func (m *DocTxMsgFundCommunityPool) HandleTxMsg(v SdkMsg) MsgDocInfo { + + var ( + addrs []string + msg MsgFundCommunityPool + ) + + ConvertMsg(v, &msg) + addrs = append(addrs, msg.Depositor) + handler := func() (Msg, []string) { + return m, addrs + } + + return CreateMsgDocInfo(v, handler) +} + +// msg struct for validator withdraw +type DocTxMsgWithdrawValidatorCommission struct { + ValidatorAddress string `bson:"validator_address"` +} + +func (doctx *DocTxMsgWithdrawValidatorCommission) GetType() string { + return MsgTypeMsgWithdrawValidatorCommission +} + +func (doctx *DocTxMsgWithdrawValidatorCommission) BuildMsg(txMsg interface{}) { + msg := txMsg.(*MsgWithdrawValidatorCommission) + doctx.ValidatorAddress = msg.ValidatorAddress +} + +func (m *DocTxMsgWithdrawValidatorCommission) HandleTxMsg(v SdkMsg) MsgDocInfo { + + var ( + addrs []string + msg MsgWithdrawValidatorCommission + ) + + ConvertMsg(v, &msg) + addrs = append(addrs, msg.ValidatorAddress) + handler := func() (Msg, []string) { + return m, addrs + } + + return CreateMsgDocInfo(v, handler) +} diff --git a/msgs/distribution/handler.go b/msgs/distribution/handler.go new file mode 100644 index 0000000..7b31c73 --- /dev/null +++ b/msgs/distribution/handler.go @@ -0,0 +1,27 @@ +package distribution + +import ( + sdk "github.com/cosmos/cosmos-sdk/types" + . "github.com/irisnet/rainbow-sync/msgs" +) + +func HandleTxMsg(msg sdk.Msg) (MsgDocInfo, bool) { + ok := true + switch msg.Type() { + case new(MsgStakeSetWithdrawAddress).Type(): + docMsg := DocTxMsgSetWithdrawAddress{} + return docMsg.HandleTxMsg(msg), ok + case new(MsgWithdrawDelegatorReward).Type(): + docMsg := DocTxMsgWithdrawDelegatorReward{} + return docMsg.HandleTxMsg(msg), ok + case new(MsgWithdrawValidatorCommission).Type(): + docMsg := DocTxMsgWithdrawValidatorCommission{} + return docMsg.HandleTxMsg(msg), ok + case new(MsgFundCommunityPool).Type(): + docMsg := DocTxMsgFundCommunityPool{} + return docMsg.HandleTxMsg(msg), ok + default: + ok = false + } + return MsgDocInfo{}, ok +} diff --git a/msgs/evidence/evidence.go b/msgs/evidence/evidence.go new file mode 100644 index 0000000..e54776a --- /dev/null +++ b/msgs/evidence/evidence.go @@ -0,0 +1,18 @@ +package evidence + +import ( + sdk "github.com/cosmos/cosmos-sdk/types" + . "github.com/irisnet/rainbow-sync/msgs" +) + +func HandleTxMsg(msg sdk.Msg) (MsgDocInfo, bool) { + ok := true + switch msg.Type() { + case new(MsgSubmitEvidence).Type(): + docMsg := DocMsgSubmitEvidence{} + return docMsg.HandleTxMsg(msg), ok + default: + ok = false + } + return MsgDocInfo{}, ok +} diff --git a/msgs/evidence/submit_evidence.go b/msgs/evidence/submit_evidence.go new file mode 100644 index 0000000..a4f2032 --- /dev/null +++ b/msgs/evidence/submit_evidence.go @@ -0,0 +1,41 @@ +package evidence + +import ( + "encoding/json" + . "github.com/irisnet/rainbow-sync/msgs" +) + +// MsgSubmitEvidence defines an sdk.Msg type that supports submitting arbitrary +// Evidence. +type DocMsgSubmitEvidence struct { + Submitter string `bson:"submitter"` + Evidence string `bson:"evidence"` +} + +func (m *DocMsgSubmitEvidence) GetType() string { + return MsgTypeSubmitEvidence +} + +func (m *DocMsgSubmitEvidence) BuildMsg(v interface{}) { + msg := v.(*MsgSubmitEvidence) + m.Submitter = msg.Submitter + evidence, _ := json.Marshal(msg.Evidence) + m.Evidence = string(evidence) + +} + +func (m *DocMsgSubmitEvidence) HandleTxMsg(v SdkMsg) MsgDocInfo { + + var ( + addrs []string + msg MsgSubmitEvidence + ) + + ConvertMsg(v, &msg) + addrs = append(addrs, msg.Submitter) + handler := func() (Msg, []string) { + return m, addrs + } + + return CreateMsgDocInfo(v, handler) +} diff --git a/msgs/gov/gov.go b/msgs/gov/gov.go new file mode 100644 index 0000000..019cb8f --- /dev/null +++ b/msgs/gov/gov.go @@ -0,0 +1,109 @@ +package gov + +import ( + "encoding/json" + "github.com/irisnet/rainbow-sync/model" + . "github.com/irisnet/rainbow-sync/msgs" +) + +type DocTxMsgSubmitProposal struct { + Proposer string `bson:"proposer"` // Address of the proposer + InitialDeposit []model.Coin `bson:"initial_deposit"` // Initial deposit paid by sender. Must be strictly positive. + Content string `bson:"content"` +} + +func (doctx *DocTxMsgSubmitProposal) GetType() string { + return MsgTypeSubmitProposal +} + +func (doctx *DocTxMsgSubmitProposal) BuildMsg(txMsg interface{}) { + msg := txMsg.(*MsgSubmitProposal) + content, _ := json.Marshal(msg.Content) + doctx.Content = string(content) + doctx.Proposer = msg.Proposer + doctx.InitialDeposit = model.BuildDocCoins(msg.InitialDeposit) +} + +func (m *DocTxMsgSubmitProposal) HandleTxMsg(v SdkMsg) MsgDocInfo { + + var ( + addrs []string + msg MsgSubmitProposal + ) + + ConvertMsg(v, &msg) + addrs = append(addrs, msg.Proposer) + handler := func() (Msg, []string) { + return m, addrs + } + + return CreateMsgDocInfo(v, handler) +} + +// MsgVote +type DocTxMsgVote struct { + ProposalID uint64 `bson:"proposal_id"` // ID of the proposal + Voter string `bson:"voter"` // address of the voter + Option string `bson:"option"` // option from OptionSet chosen by the voter +} + +func (doctx *DocTxMsgVote) GetType() string { + return MsgTypeVote +} + +func (doctx *DocTxMsgVote) BuildMsg(txMsg interface{}) { + msg := txMsg.(*MsgVote) + doctx.Voter = msg.Voter + doctx.Option = msg.Option.String() + doctx.ProposalID = msg.ProposalId +} + +func (m *DocTxMsgVote) HandleTxMsg(v SdkMsg) MsgDocInfo { + + var ( + addrs []string + msg MsgVote + ) + + ConvertMsg(v, &msg) + addrs = append(addrs, msg.Voter) + handler := func() (Msg, []string) { + return m, addrs + } + + return CreateMsgDocInfo(v, handler) +} + +// MsgDeposit +type DocTxMsgDeposit struct { + ProposalID uint64 `bson:"proposal_id"` // ID of the proposal + Depositor string `bson:"depositor"` // Address of the depositor + Amount []model.Coin `bson:"amount"` // Coins to add to the proposal's deposit +} + +func (doctx *DocTxMsgDeposit) GetType() string { + return MsgTypeDeposit +} + +func (doctx *DocTxMsgDeposit) BuildMsg(txMsg interface{}) { + msg := txMsg.(*MsgDeposit) + doctx.Depositor = msg.Depositor + doctx.Amount = model.BuildDocCoins(msg.Amount) + doctx.ProposalID = msg.ProposalId +} + +func (m *DocTxMsgDeposit) HandleTxMsg(v SdkMsg) MsgDocInfo { + + var ( + addrs []string + msg MsgDeposit + ) + + ConvertMsg(v, &msg) + addrs = append(addrs, msg.Depositor) + handler := func() (Msg, []string) { + return m, addrs + } + + return CreateMsgDocInfo(v, handler) +} diff --git a/msgs/gov/handler.go b/msgs/gov/handler.go new file mode 100644 index 0000000..a763035 --- /dev/null +++ b/msgs/gov/handler.go @@ -0,0 +1,24 @@ +package gov + +import ( + sdk "github.com/cosmos/cosmos-sdk/types" + . "github.com/irisnet/rainbow-sync/msgs" +) + +func HandleTxMsg(msg sdk.Msg) (MsgDocInfo, bool) { + ok := true + switch msg.Type() { + case new(MsgSubmitProposal).Type(): + docMsg := DocTxMsgSubmitProposal{} + return docMsg.HandleTxMsg(msg), ok + case new(MsgVote).Type(): + docMsg := DocTxMsgVote{} + return docMsg.HandleTxMsg(msg), ok + case new(MsgDeposit).Type(): + docMsg := DocTxMsgDeposit{} + return docMsg.HandleTxMsg(msg), ok + default: + ok = false + } + return MsgDocInfo{}, ok +} diff --git a/msgs/htlc/handler.go b/msgs/htlc/handler.go new file mode 100644 index 0000000..181cfd8 --- /dev/null +++ b/msgs/htlc/handler.go @@ -0,0 +1,24 @@ +package htlc + +import ( + sdk "github.com/cosmos/cosmos-sdk/types" + . "github.com/irisnet/rainbow-sync/msgs" +) + +func HandleTxMsg(msg sdk.Msg) (MsgDocInfo, bool) { + ok := true + switch msg.Type() { + case new(MsgClaimHTLC).Type(): + docMsg := DocTxMsgClaimHTLC{} + return docMsg.HandleTxMsg(msg), ok + case new(MsgCreateHTLC).Type(): + docMsg := DocTxMsgCreateHTLC{} + return docMsg.HandleTxMsg(msg), ok + case new(MsgRefundHTLC).Type(): + docMsg := DocTxMsgRefundHTLC{} + return docMsg.HandleTxMsg(msg), ok + default: + ok = false + } + return MsgDocInfo{}, ok +} diff --git a/msgs/htlc/htlc.go b/msgs/htlc/htlc.go new file mode 100644 index 0000000..b4181ce --- /dev/null +++ b/msgs/htlc/htlc.go @@ -0,0 +1,113 @@ +package htlc + +import ( + "encoding/hex" + sdk "github.com/cosmos/cosmos-sdk/types" + "github.com/irisnet/rainbow-sync/model" + . "github.com/irisnet/rainbow-sync/msgs" +) + +type DocTxMsgCreateHTLC struct { + Sender string `bson:"sender"` // the initiator address + To string `bson:"to"` // the destination address + ReceiverOnOtherChain string `bson:"receiver_on_other_chain"` // the claim receiving address on the other chain + Amount []model.Coin `bson:"amount"` // the amount to be transferred + HashLock string `bson:"hash_lock"` // the hash lock generated from secret (and timestamp if provided) + Timestamp uint64 `bson:"timestamp"` // if provided, used to generate the hash lock together with secret + TimeLock uint64 `bson:"time_lock"` // the time span after which the HTLC will expire +} + +func (doctx *DocTxMsgCreateHTLC) GetType() string { + return MsgTypeCreateHTLC +} + +func (doctx *DocTxMsgCreateHTLC) BuildMsg(txMsg interface{}) { + msg := txMsg.(*MsgCreateHTLC) + doctx.Sender = msg.Sender.String() + doctx.To = msg.To.String() + doctx.Amount = model.BuildDocCoins(msg.Amount) + doctx.Timestamp = msg.Timestamp + doctx.HashLock = hex.EncodeToString(msg.HashLock) + doctx.TimeLock = msg.TimeLock + doctx.ReceiverOnOtherChain = msg.ReceiverOnOtherChain +} + +func (m *DocTxMsgCreateHTLC) HandleTxMsg(v sdk.Msg) MsgDocInfo { + + var ( + addrs []string + msg MsgCreateHTLC + ) + + ConvertMsg(v, &msg) + addrs = append(addrs, m.Sender, m.To) + handler := func() (Msg, []string) { + return m, addrs + } + + return CreateMsgDocInfo(v, handler) +} + +type DocTxMsgClaimHTLC struct { + Sender string `bson:"sender"` // the initiator address + HashLock string `bson:"hash_lock"` // the hash lock identifying the HTLC to be claimed + Secret string `bson:"secret"` // the secret with which to claim +} + +func (doctx *DocTxMsgClaimHTLC) GetType() string { + return MsgTypeClaimHTLC +} + +func (doctx *DocTxMsgClaimHTLC) BuildMsg(txMsg interface{}) { + msg := txMsg.(*MsgClaimHTLC) + doctx.Sender = msg.Sender.String() + doctx.Secret = hex.EncodeToString(msg.Secret) + doctx.HashLock = hex.EncodeToString(msg.HashLock) +} + +func (m *DocTxMsgClaimHTLC) HandleTxMsg(v sdk.Msg) MsgDocInfo { + + var ( + addrs []string + msg MsgClaimHTLC + ) + + ConvertMsg(v, &msg) + addrs = append(addrs, msg.Sender.String()) + handler := func() (Msg, []string) { + return m, addrs + } + + return CreateMsgDocInfo(v, handler) +} + +type DocTxMsgRefundHTLC struct { + Sender string `bson:"sender"` // the initiator address + HashLock string `bson:"hash_lock"` // the hash lock identifying the HTLC to be refunded +} + +func (doctx *DocTxMsgRefundHTLC) GetType() string { + return MsgTypeRefundHTLC +} + +func (doctx *DocTxMsgRefundHTLC) BuildMsg(txMsg interface{}) { + msg := txMsg.(*MsgRefundHTLC) + doctx.Sender = msg.Sender.String() + doctx.HashLock = hex.EncodeToString(msg.HashLock) +} + +func (m *DocTxMsgRefundHTLC) HandleTxMsg(v sdk.Msg) MsgDocInfo { + + var ( + addrs []string + msg MsgRefundHTLC + ) + + ConvertMsg(v, &msg) + addrs = append(addrs, msg.Sender.String()) + handler := func() (Msg, []string) { + return m, addrs + } + + return CreateMsgDocInfo(v, handler) +} diff --git a/msgs/ibc/client_create.go b/msgs/ibc/client_create.go new file mode 100644 index 0000000..fd858f2 --- /dev/null +++ b/msgs/ibc/client_create.go @@ -0,0 +1,41 @@ +package ibc + +import ( + . "github.com/irisnet/rainbow-sync/msgs" +) + +// MsgCreateClient defines a message to create an IBC client +type DocMsgCreateClient struct { + ClientID string `bson:"client_id" yaml:"client_id"` + ClientState string `bson:"client_state"` + ConsensusState string `bson:"consensus_state"` + Signer string `bson:"signer" yaml:"signer"` +} + +func (m *DocMsgCreateClient) GetType() string { + return MsgTypeCreateClient +} + +func (m *DocMsgCreateClient) BuildMsg(v interface{}) { + msg := v.(*MsgCreateClient) + + m.ClientID = msg.ClientId + m.Signer = msg.Signer + if msg.ClientState != nil { + m.ClientState = msg.ClientState.String() + } + if msg.ConsensusState != nil { + m.ConsensusState = msg.ConsensusState.String() + } +} + +func (m *DocMsgCreateClient) HandleTxMsg(v SdkMsg) MsgDocInfo { + var ( + addrs []string + ) + handler := func() (Msg, []string) { + return m, addrs + } + + return CreateMsgDocInfo(v, handler) +} diff --git a/msgs/ibc/client_update.go b/msgs/ibc/client_update.go new file mode 100644 index 0000000..af53bf2 --- /dev/null +++ b/msgs/ibc/client_update.go @@ -0,0 +1,38 @@ +package ibc + +import ( + . "github.com/irisnet/rainbow-sync/msgs" +) + +// MsgUpdateClient defines a message to update an IBC client +type DocMsgUpdateClient struct { + ClientID string `bson:"client_id" yaml:"client_id"` + Header string `bson:"header" yaml:"header"` + Signer string `bson:"signer" yaml:"signer"` +} + +func (m *DocMsgUpdateClient) GetType() string { + return MsgTypeUpdateClient +} + +func (m *DocMsgUpdateClient) BuildMsg(v interface{}) { + msg := v.(*MsgUpdateClient) + + m.ClientID = msg.ClientId + m.Signer = msg.Signer + if msg.Header != nil { + m.Header = msg.Header.String() + } +} + +func (m *DocMsgUpdateClient) HandleTxMsg(v SdkMsg) MsgDocInfo { + var ( + addrs []string + ) + + handler := func() (Msg, []string) { + return m, addrs + } + + return CreateMsgDocInfo(v, handler) +} diff --git a/msgs/ibc/ibc.go b/msgs/ibc/ibc.go new file mode 100644 index 0000000..e610e90 --- /dev/null +++ b/msgs/ibc/ibc.go @@ -0,0 +1,30 @@ +package ibc + +import ( + "github.com/cosmos/cosmos-sdk/types" + . "github.com/irisnet/rainbow-sync/msgs" +) + +func HandleTxMsg(v types.Msg) (MsgDocInfo, bool) { + var ( + msgDocInfo MsgDocInfo + ) + ok := true + switch v.Type() { + case new(MsgTransfer).Type(): + docMsg := DocMsgTransfer{} + msgDocInfo = docMsg.HandleTxMsg(v) + case new(MsgRecvPacket).Type(): + docMsg := DocMsgRecvPacket{} + msgDocInfo = docMsg.HandleTxMsg(v) + case new(MsgCreateClient).Type(): + docMsg := DocMsgCreateClient{} + msgDocInfo = docMsg.HandleTxMsg(v) + case new(MsgUpdateClient).Type(): + docMsg := DocMsgUpdateClient{} + msgDocInfo = docMsg.HandleTxMsg(v) + default: + ok = false + } + return msgDocInfo, ok +} diff --git a/msgs/ibc/ibc_transfer.go b/msgs/ibc/ibc_transfer.go new file mode 100644 index 0000000..83bec03 --- /dev/null +++ b/msgs/ibc/ibc_transfer.go @@ -0,0 +1,56 @@ +package ibc + +import ( + "github.com/irisnet/rainbow-sync/model" + . "github.com/irisnet/rainbow-sync/msgs" +) + +type DocMsgTransfer struct { + // the port on which the packet will be sent + SourcePort string `bson:"source_port"` + // the channel by which the packet will be sent + SourceChannel string `bson:"source_channel"` + // the tokens to be transferred + Token model.Coin `bson:"token"` + // the sender address + Sender string `bson:"sender"` + // the recipient address on the destination chain + Receiver string `bson:"receiver"` + // Timeout height relative to the current block height. + // The timeout is disabled when set to 0. + TimeoutHeight Height `bson:"timeout_height"` + // Timeout timestamp (in nanoseconds) relative to the current block timestamp. + // The timeout is disabled when set to 0. + TimeoutTimestamp uint64 `bson:"timeout_timestamp"` +} + +func (m *DocMsgTransfer) GetType() string { + return MsgTypeIbcTransfer +} + +func (m *DocMsgTransfer) BuildMsg(v interface{}) { + msg := v.(*MsgTransfer) + m.Token = model.BuildDocCoin(msg.Token) + m.SourcePort = msg.SourcePort + m.SourceChannel = msg.SourceChannel + m.Sender = msg.Sender + m.Receiver = msg.Receiver + m.TimeoutHeight = Height{VersionNumber: msg.TimeoutHeight.VersionNumber, VersionHeight: msg.TimeoutHeight.VersionHeight} + m.TimeoutTimestamp = msg.TimeoutTimestamp + +} + +func (m *DocMsgTransfer) HandleTxMsg(v SdkMsg) MsgDocInfo { + var ( + addrs []string + msg MsgTransfer + ) + + ConvertMsg(v, &msg) + addrs = append(addrs, msg.Sender, msg.Receiver) + handler := func() (Msg, []string) { + return m, addrs + } + + return CreateMsgDocInfo(v, handler) +} diff --git a/msgs/ibc/recv_packet.go b/msgs/ibc/recv_packet.go new file mode 100644 index 0000000..1e19a4c --- /dev/null +++ b/msgs/ibc/recv_packet.go @@ -0,0 +1,79 @@ +package ibc + +import ( + "github.com/cosmos/cosmos-sdk/x/ibc/core/04-channel/types" + . "github.com/irisnet/rainbow-sync/msgs" +) + +type DocMsgRecvPacket struct { + Packet Packet `bson:"packet"` + Proof string `bson:"proof"` + ProofHeight Height `bson:"proof_height"` + Signer string `bson:"signer"` +} + +type Height struct { + // the epoch that the client is currently on + VersionNumber uint64 `bson:"version_number"` + // the height within the given epoch + VersionHeight uint64 `bson:"version_height"` +} + +type Packet struct { + // number corresponds to the order of sends and receives, where a Packet + // with an earlier sequence number must be sent and received before a Packet + // with a later sequence number. + Sequence uint64 `bson:"sequence"` + // identifies the port on the sending chain. + SourcePort string `bson:"source_port"` + // identifies the channel end on the sending chain. + SourceChannel string `bson:"source_channel"` + // identifies the port on the receiving chain. + DestinationPort string `bson:"destination_port"` + // identifies the channel end on the receiving chain. + DestinationChannel string `bson:"destination_channel"` + // actual opaque bytes transferred directly to the application module + Data string `bson:"data"` + // block height after which the packet times out + TimeoutHeight Height `json:"timeout_height"` + // block timestamp (in nanoseconds) after which the packet times out + TimeoutTimestamp uint64 `json:"timeout_timestamp"` +} + +func (m *DocMsgRecvPacket) GetType() string { + return MsgTypeRecvPacket +} + +func (m *DocMsgRecvPacket) BuildMsg(v interface{}) { + msg := v.(*MsgRecvPacket) + + m.Proof = string(msg.Proof) + m.ProofHeight = Height{VersionHeight: msg.ProofHeight.VersionHeight, VersionNumber: msg.ProofHeight.VersionNumber} + m.Signer = msg.Signer + + m.Packet = DecodeToIBCRecord(msg.Packet) +} +func DecodeToIBCRecord(packet types.Packet) Packet { + return Packet{ + Sequence: packet.Sequence, + SourcePort: packet.SourcePort, + SourceChannel: packet.SourceChannel, + DestinationChannel: packet.DestinationChannel, + DestinationPort: packet.DestinationPort, + Data: string(packet.Data), + TimeoutHeight: Height{VersionHeight: packet.TimeoutHeight.VersionHeight, VersionNumber: packet.TimeoutHeight.VersionNumber}, + TimeoutTimestamp: packet.TimeoutTimestamp, + } +} + +func (m *DocMsgRecvPacket) HandleTxMsg(v SdkMsg) MsgDocInfo { + var ( + addrs []string + ) + + handler := func() (Msg, []string) { + return m, addrs + } + + return CreateMsgDocInfo(v, handler) +} diff --git a/msgs/nft/issue_denom.go b/msgs/nft/issue_denom.go new file mode 100644 index 0000000..c037663 --- /dev/null +++ b/msgs/nft/issue_denom.go @@ -0,0 +1,42 @@ +package nft + +import ( + . "github.com/irisnet/rainbow-sync/msgs" + "github.com/irisnet/rainbow-sync/utils" + "strings" +) + +type DocMsgIssueDenom struct { + Id string `bson:"id"` + Name string `bson:"name"` + Sender string `bson:"sender"` + Schema string `bson:"schema"` +} + +func (m *DocMsgIssueDenom) GetType() string { + return MsgTypeIssueDenom +} + +func (m *DocMsgIssueDenom) BuildMsg(v interface{}) { + msg := v.(*MsgIssueDenom) + + m.Sender = msg.Sender.String() + m.Schema = msg.Schema + m.Id = strings.ToLower(msg.Id) + m.Name = msg.Name +} + +func (m *DocMsgIssueDenom) HandleTxMsg(v SdkMsg) MsgDocInfo { + var ( + addrs []string + msg MsgIssueDenom + ) + + utils.UnMarshalJsonIgnoreErr(utils.MarshalJsonIgnoreErr(v), &msg) + addrs = append(addrs, msg.Sender.String()) + handler := func() (Msg, []string) { + return m, addrs + } + + return CreateMsgDocInfo(v, handler) +} diff --git a/msgs/nft/nft.go b/msgs/nft/nft.go new file mode 100644 index 0000000..3be7ed3 --- /dev/null +++ b/msgs/nft/nft.go @@ -0,0 +1,38 @@ +package nft + +import ( + "github.com/cosmos/cosmos-sdk/types" + . "github.com/irisnet/rainbow-sync/msgs" +) + +func HandleTxMsg(v types.Msg) (MsgDocInfo, bool) { + var ( + msgDocInfo MsgDocInfo + ) + ok := true + switch v.Type() { + case new(MsgNFTMint).Type(): + docMsg := DocMsgNFTMint{} + msgDocInfo = docMsg.HandleTxMsg(v) + break + case new(MsgNFTEdit).Type(): + docMsg := DocMsgNFTEdit{} + msgDocInfo = docMsg.HandleTxMsg(v) + break + case new(MsgNFTTransfer).Type(): + docMsg := DocMsgNFTTransfer{} + msgDocInfo = docMsg.HandleTxMsg(v) + break + case new(MsgNFTBurn).Type(): + docMsg := DocMsgNFTBurn{} + msgDocInfo = docMsg.HandleTxMsg(v) + break + case new(MsgIssueDenom).Type(): + docMsg := DocMsgIssueDenom{} + msgDocInfo = docMsg.HandleTxMsg(v) + break + default: + ok = false + } + return msgDocInfo, ok +} diff --git a/msgs/nft/nft_burn.go b/msgs/nft/nft_burn.go new file mode 100644 index 0000000..ea5c24a --- /dev/null +++ b/msgs/nft/nft_burn.go @@ -0,0 +1,42 @@ +package nft + +import ( + . "github.com/irisnet/rainbow-sync/msgs" + "github.com/irisnet/rainbow-sync/utils" + "strings" +) + +type ( + DocMsgNFTBurn struct { + Sender string `bson:"sender"` + Id string `bson:"id"` + Denom string `bson:"denom"` + } +) + +func (m *DocMsgNFTBurn) GetType() string { + return MsgTypeNFTBurn +} + +func (m *DocMsgNFTBurn) BuildMsg(v interface{}) { + msg := v.(*MsgNFTBurn) + + m.Sender = msg.Sender.String() + m.Id = strings.ToLower(msg.Id) + m.Denom = strings.ToLower(msg.Denom) +} + +func (m *DocMsgNFTBurn) HandleTxMsg(v SdkMsg) MsgDocInfo { + var ( + addrs []string + msg MsgNFTBurn + ) + + utils.UnMarshalJsonIgnoreErr(utils.MarshalJsonIgnoreErr(v), &msg) + addrs = append(addrs, msg.Sender.String()) + handler := func() (Msg, []string) { + return m, addrs + } + + return CreateMsgDocInfo(v, handler) +} diff --git a/msgs/nft/nft_edit.go b/msgs/nft/nft_edit.go new file mode 100644 index 0000000..9a7fcf5 --- /dev/null +++ b/msgs/nft/nft_edit.go @@ -0,0 +1,48 @@ +package nft + +import ( + . "github.com/irisnet/rainbow-sync/msgs" + "github.com/irisnet/rainbow-sync/utils" + "strings" +) + +type ( + DocMsgNFTEdit struct { + Sender string `bson:"sender"` + Id string `bson:"id"` + Denom string `bson:"denom"` + URI string `bson:"uri"` + Data string `bson:"data"` + Name string `bson:"name"` + } +) + +func (m *DocMsgNFTEdit) GetType() string { + return MsgTypeNFTEdit +} + +func (m *DocMsgNFTEdit) BuildMsg(v interface{}) { + msg := v.(*MsgNFTEdit) + + m.Sender = msg.Sender.String() + m.Id = strings.ToLower(msg.Id) + m.Denom = strings.ToLower(msg.Denom) + m.URI = msg.URI + m.Data = msg.Data + m.Name = msg.Name +} + +func (m *DocMsgNFTEdit) HandleTxMsg(v SdkMsg) MsgDocInfo { + var ( + addrs []string + msg MsgNFTEdit + ) + + utils.UnMarshalJsonIgnoreErr(utils.MarshalJsonIgnoreErr(v), &msg) + addrs = append(addrs, msg.Sender.String()) + handler := func() (Msg, []string) { + return m, addrs + } + + return CreateMsgDocInfo(v, handler) +} diff --git a/msgs/nft/nft_mint.go b/msgs/nft/nft_mint.go new file mode 100644 index 0000000..301947d --- /dev/null +++ b/msgs/nft/nft_mint.go @@ -0,0 +1,47 @@ +package nft + +import ( + . "github.com/irisnet/rainbow-sync/msgs" + "github.com/irisnet/rainbow-sync/utils" + "strings" +) + +type DocMsgNFTMint struct { + Sender string `bson:"sender"` + Recipient string `bson:"recipient"` + Denom string `bson:"denom"` + Id string `bson:"id"` + URI string `bson:"uri"` + Data string `bson:"data"` + Name string `bson:"name"` +} + +func (m *DocMsgNFTMint) GetType() string { + return MsgTypeNFTMint +} + +func (m *DocMsgNFTMint) BuildMsg(v interface{}) { + msg := v.(*MsgNFTMint) + + m.Sender = msg.Sender.String() + m.Recipient = msg.Recipient.String() + m.Id = strings.ToLower(msg.Id) + m.Denom = strings.ToLower(msg.Denom) + m.URI = msg.URI + m.Data = msg.Data + m.Name = msg.Name +} + +func (m *DocMsgNFTMint) HandleTxMsg(v SdkMsg) MsgDocInfo { + var ( + addrs []string + msg MsgNFTMint + ) + utils.UnMarshalJsonIgnoreErr(utils.MarshalJsonIgnoreErr(v), &msg) + addrs = append(addrs, msg.Sender.String(), msg.Recipient.String()) + handler := func() (Msg, []string) { + return m, addrs + } + + return CreateMsgDocInfo(v, handler) +} diff --git a/msgs/nft/nft_transfer.go b/msgs/nft/nft_transfer.go new file mode 100644 index 0000000..eb13e42 --- /dev/null +++ b/msgs/nft/nft_transfer.go @@ -0,0 +1,50 @@ +package nft + +import ( + . "github.com/irisnet/rainbow-sync/msgs" + "github.com/irisnet/rainbow-sync/utils" + "strings" +) + +type ( + DocMsgNFTTransfer struct { + Sender string `bson:"sender"` + Recipient string `bson:"recipient"` + URI string `bson:"uri"` + Name string `bson:"name"` + Denom string `bson:"denom"` + Id string `bson:"id"` + Data string `bson:"data"` + } +) + +func (m *DocMsgNFTTransfer) GetType() string { + return MsgTypeNFTTransfer +} + +func (m *DocMsgNFTTransfer) BuildMsg(v interface{}) { + msg := v.(*MsgNFTTransfer) + + m.Sender = msg.Sender.String() + m.Recipient = msg.Recipient.String() + m.Id = strings.ToLower(msg.Id) + m.Denom = strings.ToLower(msg.Denom) + m.URI = msg.URI + m.Data = msg.Data + m.Name = msg.Name +} + +func (m *DocMsgNFTTransfer) HandleTxMsg(v SdkMsg) MsgDocInfo { + var ( + addrs []string + msg MsgNFTTransfer + ) + + utils.UnMarshalJsonIgnoreErr(utils.MarshalJsonIgnoreErr(v), &msg) + addrs = append(addrs, msg.Sender.String(), msg.Recipient.String()) + handler := func() (Msg, []string) { + return m, addrs + } + + return CreateMsgDocInfo(v, handler) +} diff --git a/msgs/record/record.go b/msgs/record/record.go new file mode 100644 index 0000000..0f4a034 --- /dev/null +++ b/msgs/record/record.go @@ -0,0 +1,22 @@ +package record + +import ( + "github.com/cosmos/cosmos-sdk/types" + . "github.com/irisnet/rainbow-sync/msgs" +) + +func HandleTxMsg(v types.Msg) (MsgDocInfo, bool) { + var ( + msgDocInfo MsgDocInfo + ) + ok := true + switch v.Type() { + case new(MsgRecordCreate).Type(): + docMsg := DocMsgRecordCreate{} + msgDocInfo = docMsg.HandleTxMsg(v) + break + default: + ok = false + } + return msgDocInfo, ok +} diff --git a/msgs/record/record_create.go b/msgs/record/record_create.go new file mode 100644 index 0000000..0029df6 --- /dev/null +++ b/msgs/record/record_create.go @@ -0,0 +1,58 @@ +package record + +import ( + . "github.com/irisnet/rainbow-sync/msgs" + "github.com/irisnet/rainbow-sync/utils" +) + +type ( + DocMsgRecordCreate struct { + Contents []Content `bson:"contents"` + Creator string `bson:"creator"` + } + + Content struct { + Digest string `bson:"digest"` + DigestAlgo string `bson:"digest_algo"` + URI string `bson:"uri"` + Meta string `bson:"meta"` + } +) + +func (d *DocMsgRecordCreate) GetType() string { + return MsgTypeRecordCreate +} + +func (d *DocMsgRecordCreate) BuildMsg(msg interface{}) { + m := msg.(*MsgRecordCreate) + + var docContents []Content + if len(m.Contents) > 0 { + for _, v := range m.Contents { + docContents = append(docContents, Content{ + Digest: v.Digest, + DigestAlgo: v.DigestAlgo, + URI: v.URI, + Meta: v.Meta, + }) + } + } + + d.Contents = docContents + d.Creator = m.Creator.String() +} + +func (m *DocMsgRecordCreate) HandleTxMsg(v SdkMsg) MsgDocInfo { + var ( + addrs []string + msg MsgRecordCreate + ) + + utils.UnMarshalJsonIgnoreErr(utils.MarshalJsonIgnoreErr(v), &msg) + addrs = append(addrs, msg.Creator.String()) + handler := func() (Msg, []string) { + return m, addrs + } + + return CreateMsgDocInfo(v, handler) +} diff --git a/msgs/service/service.go b/msgs/service/service.go new file mode 100644 index 0000000..dc4a7d4 --- /dev/null +++ b/msgs/service/service.go @@ -0,0 +1,79 @@ +package service + +import ( + "github.com/cosmos/cosmos-sdk/types" + . "github.com/irisnet/rainbow-sync/msgs" +) + +func HandleTxMsg(v types.Msg) (MsgDocInfo, bool) { + var ( + msgDocInfo MsgDocInfo + ) + ok := true + switch v.Type() { + case new(MsgDefineService).Type(): + docMsg := DocMsgDefineService{} + msgDocInfo = docMsg.HandleTxMsg(v) + break + case new(MsgBindService).Type(): + docMsg := DocMsgBindService{} + msgDocInfo = docMsg.HandleTxMsg(v) + break + case new(MsgCallService).Type(): + docMsg := DocMsgCallService{} + msgDocInfo = docMsg.HandleTxMsg(v) + break + case new(MsgRespondService).Type(): + docMsg := DocMsgServiceResponse{} + msgDocInfo = docMsg.HandleTxMsg(v) + break + case new(MsgUpdateServiceBinding).Type(): + docMsg := DocMsgUpdateServiceBinding{} + msgDocInfo = docMsg.HandleTxMsg(v) + break + case new(MsgSetWithdrawAddress).Type(): + docMsg := DocMsgSetWithdrawAddress{} + ConvertMsg(v, &docMsg) + if docMsg.WithdrawAddress == "" { + ok = false + return msgDocInfo, ok + } + msgDocInfo = docMsg.HandleTxMsg(v) + break + case new(MsgDisableServiceBinding).Type(): + docMsg := DocMsgDisableServiceBinding{} + msgDocInfo = docMsg.HandleTxMsg(v) + break + case new(MsgEnableServiceBinding).Type(): + docMsg := DocMsgEnableServiceBinding{} + msgDocInfo = docMsg.HandleTxMsg(v) + break + case new(MsgRefundServiceDeposit).Type(): + docMsg := DocMsgRefundServiceDeposit{} + msgDocInfo = docMsg.HandleTxMsg(v) + break + case new(MsgUpdateRequestContext).Type(): + docMsg := DocMsgUpdateRequestContext{} + msgDocInfo = docMsg.HandleTxMsg(v) + break + case new(MsgPauseRequestContext).Type(): + docMsg := DocMsgPauseRequestContext{} + msgDocInfo = docMsg.HandleTxMsg(v) + break + case new(MsgStartRequestContext).Type(): + docMsg := DocMsgStartRequestContext{} + msgDocInfo = docMsg.HandleTxMsg(v) + break + case new(MsgKillRequestContext).Type(): + docMsg := DocMsgKillRequestContext{} + msgDocInfo = docMsg.HandleTxMsg(v) + break + case new(MsgWithdrawEarnedFees).Type(): + docMsg := DocMsgWithdrawEarnedFees{} + msgDocInfo = docMsg.HandleTxMsg(v) + break + default: + ok = false + } + return msgDocInfo, ok +} diff --git a/msgs/service/service_bind.go b/msgs/service/service_bind.go new file mode 100644 index 0000000..2c48931 --- /dev/null +++ b/msgs/service/service_bind.go @@ -0,0 +1,52 @@ +package service + +import ( + . "github.com/irisnet/rainbow-sync/msgs" + "github.com/irisnet/rainbow-sync/utils" +) + +type ( + DocMsgBindService struct { + ServiceName string `bson:"service_name"` + Provider string `bson:"provider"` + Deposit Coins `bson:"deposit"` + Pricing string `bson:"pricing"` + QoS uint64 `bson:"qos"` + Owner string `bson:"owner"` + } +) + +func (m *DocMsgBindService) GetType() string { + return MsgTypeBindService +} + +func (m *DocMsgBindService) BuildMsg(v interface{}) { + msg := v.(*MsgBindService) + + var coins Coins + for _, one := range msg.Deposit { + coins = append(coins, &Coin{Denom: one.Denom, Amount: one.Amount.String()}) + } + m.ServiceName = msg.ServiceName + m.Provider = msg.Provider.String() + m.Deposit = coins + m.Pricing = msg.Pricing + m.QoS = msg.QoS + m.Owner = msg.Owner.String() +} + +func (m *DocMsgBindService) HandleTxMsg(v SdkMsg) MsgDocInfo { + var ( + addrs []string + msg MsgBindService + ) + + utils.UnMarshalJsonIgnoreErr(utils.MarshalJsonIgnoreErr(v), &msg) + + addrs = append(addrs, msg.Owner.String(), msg.Provider.String()) + handler := func() (Msg, []string) { + return m, addrs + } + + return CreateMsgDocInfo(v, handler) +} diff --git a/msgs/service/service_def.go b/msgs/service/service_def.go new file mode 100644 index 0000000..d1264b3 --- /dev/null +++ b/msgs/service/service_def.go @@ -0,0 +1,48 @@ +package service + +import ( + . "github.com/irisnet/rainbow-sync/msgs" + "github.com/irisnet/rainbow-sync/utils" +) + +type ( + DocMsgDefineService struct { + Name string `bson:"name" yaml:"name"` + Description string `bson:"description" yaml:"description"` + Tags []string `bson:"tags" yaml:"tags"` + Author string `bson:"author" yaml:"author"` + AuthorDescription string `bson:"author_description" yaml:"author_description"` + Schemas string `bson:"schemas"` + } +) + +func (m *DocMsgDefineService) GetType() string { + return MsgTypeDefineService +} + +func (m *DocMsgDefineService) BuildMsg(v interface{}) { + msg := v.(*MsgDefineService) + + m.Name = msg.Name + m.Description = msg.Description + m.Tags = msg.Tags + m.Author = msg.Author.String() + m.AuthorDescription = msg.AuthorDescription + m.Schemas = msg.Schemas +} + +func (m *DocMsgDefineService) HandleTxMsg(v SdkMsg) MsgDocInfo { + var ( + addrs []string + msg MsgDefineService + ) + + utils.UnMarshalJsonIgnoreErr(utils.MarshalJsonIgnoreErr(v), &msg) + + addrs = append(addrs, msg.Author.String()) + handler := func() (Msg, []string) { + return m, addrs + } + + return CreateMsgDocInfo(v, handler) +} diff --git a/msgs/service/service_disable_bind.go b/msgs/service/service_disable_bind.go new file mode 100644 index 0000000..df6a71b --- /dev/null +++ b/msgs/service/service_disable_bind.go @@ -0,0 +1,41 @@ +package service + +import ( + . "github.com/irisnet/rainbow-sync/msgs" + "github.com/irisnet/rainbow-sync/utils" +) + +type ( + DocMsgDisableServiceBinding struct { + ServiceName string `bson:"service_name" yaml:"service_name"` + Provider string `bson:"provider" yaml:"provider"` + Owner string `bson:"owner" yaml:"owner"` + } +) + +func (m *DocMsgDisableServiceBinding) GetType() string { + return MsgTypeDisableServiceBinding +} + +func (m *DocMsgDisableServiceBinding) BuildMsg(v interface{}) { + msg := v.(*MsgDisableServiceBinding) + + m.ServiceName = msg.ServiceName + m.Provider = msg.Provider.String() + m.Owner = msg.Owner.String() +} + +func (m *DocMsgDisableServiceBinding) HandleTxMsg(v SdkMsg) MsgDocInfo { + var ( + addrs []string + msg MsgDisableServiceBinding + ) + utils.UnMarshalJsonIgnoreErr(utils.MarshalJsonIgnoreErr(v), &msg) + + addrs = append(addrs, msg.Owner.String(), msg.Provider.String()) + handler := func() (Msg, []string) { + return m, addrs + } + + return CreateMsgDocInfo(v, handler) +} diff --git a/msgs/service/service_enable_bind.go b/msgs/service/service_enable_bind.go new file mode 100644 index 0000000..c59b403 --- /dev/null +++ b/msgs/service/service_enable_bind.go @@ -0,0 +1,49 @@ +package service + +import ( + "github.com/irisnet/rainbow-sync/model" + . "github.com/irisnet/rainbow-sync/msgs" + "github.com/irisnet/rainbow-sync/utils" +) + +type ( + DocMsgEnableServiceBinding struct { + ServiceName string `bson:"service_name" yaml:"service_name"` + Provider string `bson:"provider" yaml:"provider"` + Deposit model.Coins `bson:"deposit" yaml:"deposit"` + Owner string `bson:"owner" yaml:"owner"` + } +) + +func (m *DocMsgEnableServiceBinding) GetType() string { + return MsgTypeEnableServiceBinding +} + +func (m *DocMsgEnableServiceBinding) BuildMsg(v interface{}) { + msg := v.(*MsgEnableServiceBinding) + + var coins model.Coins + for _, one := range msg.Deposit { + coins = append(coins, &model.Coin{Denom: one.Denom, Amount: one.Amount.String()}) + } + + m.ServiceName = msg.ServiceName + m.Provider = msg.Provider.String() + m.Deposit = coins + m.Owner = msg.Owner.String() +} + +func (m *DocMsgEnableServiceBinding) HandleTxMsg(v SdkMsg) MsgDocInfo { + var ( + addrs []string + msg MsgEnableServiceBinding + ) + + utils.UnMarshalJsonIgnoreErr(utils.MarshalJsonIgnoreErr(v), &msg) + addrs = append(addrs, msg.Owner.String(), msg.Provider.String()) + handler := func() (Msg, []string) { + return m, addrs + } + + return CreateMsgDocInfo(v, handler) +} diff --git a/msgs/service/service_kill_request_context.go b/msgs/service/service_kill_request_context.go new file mode 100644 index 0000000..01f761b --- /dev/null +++ b/msgs/service/service_kill_request_context.go @@ -0,0 +1,41 @@ +package service + +import ( + "encoding/hex" + . "github.com/irisnet/rainbow-sync/msgs" + "github.com/irisnet/rainbow-sync/utils" + "strings" +) + +type ( + DocMsgKillRequestContext struct { + RequestContextId string `bson:"request_context_id" yaml:"request_context_id"` + Consumer string `bson:"consumer" yaml:"consumer"` + } +) + +func (m *DocMsgKillRequestContext) GetType() string { + return MsgTypeKillRequestContext +} + +func (m *DocMsgKillRequestContext) BuildMsg(v interface{}) { + msg := v.(*MsgKillRequestContext) + + m.RequestContextId = strings.ToUpper(hex.EncodeToString(msg.RequestContextId)) + m.Consumer = msg.Consumer.String() +} + +func (m *DocMsgKillRequestContext) HandleTxMsg(v SdkMsg) MsgDocInfo { + var ( + addrs []string + msg MsgKillRequestContext + ) + + utils.UnMarshalJsonIgnoreErr(utils.MarshalJsonIgnoreErr(v), &msg) + addrs = append(addrs, msg.Consumer.String()) + handler := func() (Msg, []string) { + return m, addrs + } + + return CreateMsgDocInfo(v, handler) +} diff --git a/msgs/service/service_pause_request_context.go b/msgs/service/service_pause_request_context.go new file mode 100644 index 0000000..1453e6e --- /dev/null +++ b/msgs/service/service_pause_request_context.go @@ -0,0 +1,41 @@ +package service + +import ( + "encoding/hex" + . "github.com/irisnet/rainbow-sync/msgs" + "github.com/irisnet/rainbow-sync/utils" + "strings" +) + +type ( + DocMsgPauseRequestContext struct { + RequestContextId string `bson:"request_context_id" yaml:"request_context_id"` + Consumer string `bson:"consumer" yaml:"consumer"` + } +) + +func (m *DocMsgPauseRequestContext) GetType() string { + return MsgTypePauseRequestContext +} + +func (m *DocMsgPauseRequestContext) BuildMsg(v interface{}) { + msg := v.(*MsgPauseRequestContext) + + m.RequestContextId = strings.ToUpper(hex.EncodeToString(msg.RequestContextId)) + m.Consumer = msg.Consumer.String() +} + +func (m *DocMsgPauseRequestContext) HandleTxMsg(v SdkMsg) MsgDocInfo { + var ( + addrs []string + msg MsgPauseRequestContext + ) + + utils.UnMarshalJsonIgnoreErr(utils.MarshalJsonIgnoreErr(v), &msg) + addrs = append(addrs, msg.Consumer.String()) + handler := func() (Msg, []string) { + return m, addrs + } + + return CreateMsgDocInfo(v, handler) +} diff --git a/msgs/service/service_refund_deposit.go b/msgs/service/service_refund_deposit.go new file mode 100644 index 0000000..ef1b514 --- /dev/null +++ b/msgs/service/service_refund_deposit.go @@ -0,0 +1,41 @@ +package service + +import ( + . "github.com/irisnet/rainbow-sync/msgs" + "github.com/irisnet/rainbow-sync/utils" +) + +type ( + DocMsgRefundServiceDeposit struct { + ServiceName string `bson:"service_name" yaml:"service_name"` + Provider string `bson:"provider" yaml:"provider"` + Owner string `bson:"owner" yaml:"owner"` + } +) + +func (m *DocMsgRefundServiceDeposit) GetType() string { + return MsgTypeRefundServiceDeposit +} + +func (m *DocMsgRefundServiceDeposit) BuildMsg(v interface{}) { + msg := v.(*MsgRefundServiceDeposit) + + m.ServiceName = msg.ServiceName + m.Provider = msg.Provider.String() + m.Owner = msg.Owner.String() +} + +func (m *DocMsgRefundServiceDeposit) HandleTxMsg(v SdkMsg) MsgDocInfo { + var ( + addrs []string + msg MsgRefundServiceDeposit + ) + + utils.UnMarshalJsonIgnoreErr(utils.MarshalJsonIgnoreErr(v), &msg) + addrs = append(addrs, msg.Owner.String(), msg.Provider.String()) + handler := func() (Msg, []string) { + return m, addrs + } + + return CreateMsgDocInfo(v, handler) +} diff --git a/msgs/service/service_request.go b/msgs/service/service_request.go new file mode 100644 index 0000000..b0a9219 --- /dev/null +++ b/msgs/service/service_request.go @@ -0,0 +1,70 @@ +package service + +import ( + "github.com/irisnet/rainbow-sync/model" + . "github.com/irisnet/rainbow-sync/msgs" + "github.com/irisnet/rainbow-sync/utils" +) + +type ( + DocMsgCallService struct { + ServiceName string `bson:"service_name"` + Providers []string `bson:"providers"` + Consumer string `bson:"consumer"` + Input string `bson:"input"` + ServiceFeeCap model.Coins `bson:"service_fee_cap"` + Timeout int64 `bson:"timeout"` + SuperMode bool `bson:"super_mode"` + Repeated bool `bson:"repeated"` + RepeatedFrequency uint64 `bson:"repeated_frequency"` + RepeatedTotal int64 `bson:"repeated_total"` + } +) + +func (m *DocMsgCallService) GetType() string { + return MsgTypeCallService +} + +func (m *DocMsgCallService) BuildMsg(msg interface{}) { + v := msg.(*MsgCallService) + + var coins model.Coins + for _, one := range v.ServiceFeeCap { + coins = append(coins, &model.Coin{Denom: one.Denom, Amount: one.Amount.String()}) + } + m.ServiceName = v.ServiceName + m.Providers = m.loadProviders(v) + m.Consumer = v.Consumer.String() + m.Input = v.Input + m.ServiceFeeCap = coins + m.Timeout = v.Timeout + //m.Input = hex.EncodeToString(v.Input) + m.SuperMode = v.SuperMode + m.Repeated = v.Repeated + m.RepeatedFrequency = v.RepeatedFrequency + m.RepeatedTotal = v.RepeatedTotal +} + +func (m *DocMsgCallService) loadProviders(v *MsgCallService) (ret []string) { + for _, one := range v.Providers { + ret = append(ret, one.String()) + } + return +} + +func (m *DocMsgCallService) HandleTxMsg(v SdkMsg) MsgDocInfo { + var ( + addrs []string + msg MsgCallService + ) + + utils.UnMarshalJsonIgnoreErr(utils.MarshalJsonIgnoreErr(v), &msg) + + addrs = append(addrs, m.loadProviders(&msg)...) + addrs = append(addrs, msg.Consumer.String()) + handler := func() (Msg, []string) { + return m, addrs + } + + return CreateMsgDocInfo(v, handler) +} diff --git a/msgs/service/service_response.go b/msgs/service/service_response.go new file mode 100644 index 0000000..3d89049 --- /dev/null +++ b/msgs/service/service_response.go @@ -0,0 +1,46 @@ +package service + +import ( + "encoding/hex" + . "github.com/irisnet/rainbow-sync/msgs" + "github.com/irisnet/rainbow-sync/utils" +) + +type ( + DocMsgServiceResponse struct { + RequestId string `bson:"request_id" yaml:"request_id"` + Provider string `bson:"provider" yaml:"provider"` + Output string `bson:"output" yaml:"output"` + Result string `bson:"result"` + } +) + +func (m *DocMsgServiceResponse) GetType() string { + return MsgTypeRespondService +} + +func (m *DocMsgServiceResponse) BuildMsg(msg interface{}) { + v := msg.(*MsgRespondService) + + m.RequestId = hex.EncodeToString(v.RequestId) + m.Provider = v.Provider.String() + //m.Output = hex.EncodeToString(v.Output) + m.Output = v.Output + m.Result = v.Result +} + +func (m *DocMsgServiceResponse) HandleTxMsg(v SdkMsg) MsgDocInfo { + var ( + addrs []string + msg MsgRespondService + ) + + utils.UnMarshalJsonIgnoreErr(utils.MarshalJsonIgnoreErr(v), &msg) + + addrs = append(addrs, msg.Provider.String(), msg.Provider.String()) + handler := func() (Msg, []string) { + return m, addrs + } + + return CreateMsgDocInfo(v, handler) +} diff --git a/msgs/service/service_set_withdraw_address.go b/msgs/service/service_set_withdraw_address.go new file mode 100644 index 0000000..63bb1df --- /dev/null +++ b/msgs/service/service_set_withdraw_address.go @@ -0,0 +1,39 @@ +package service + +import ( + . "github.com/irisnet/rainbow-sync/msgs" + "github.com/irisnet/rainbow-sync/utils" +) + +type ( + DocMsgSetWithdrawAddress struct { + Owner string `bson:"owner" yaml:"owner"` + WithdrawAddress string `bson:"withdraw_address" yaml:"withdraw_address"` + } +) + +func (m *DocMsgSetWithdrawAddress) GetType() string { + return MsgTypeServiceSetWithdrawAddress +} + +func (m *DocMsgSetWithdrawAddress) BuildMsg(v interface{}) { + msg := v.(*MsgSetWithdrawAddress) + + m.Owner = msg.Owner.String() + m.WithdrawAddress = msg.WithdrawAddress.String() +} + +func (m *DocMsgSetWithdrawAddress) HandleTxMsg(v SdkMsg) MsgDocInfo { + var ( + addrs []string + msg MsgSetWithdrawAddress + ) + + utils.UnMarshalJsonIgnoreErr(utils.MarshalJsonIgnoreErr(v), &msg) + addrs = append(addrs, msg.Owner.String(), msg.WithdrawAddress.String()) + handler := func() (Msg, []string) { + return m, addrs + } + + return CreateMsgDocInfo(v, handler) +} diff --git a/msgs/service/service_start_request_context.go b/msgs/service/service_start_request_context.go new file mode 100644 index 0000000..879d663 --- /dev/null +++ b/msgs/service/service_start_request_context.go @@ -0,0 +1,41 @@ +package service + +import ( + "encoding/hex" + . "github.com/irisnet/rainbow-sync/msgs" + "github.com/irisnet/rainbow-sync/utils" + "strings" +) + +type ( + DocMsgStartRequestContext struct { + RequestContextId string `bson:"request_context_id" yaml:"request_context_id"` + Consumer string `bson:"consumer" yaml:"consumer"` + } +) + +func (m *DocMsgStartRequestContext) GetType() string { + return MsgTypeStartRequestContext +} + +func (m *DocMsgStartRequestContext) BuildMsg(v interface{}) { + msg := v.(*MsgStartRequestContext) + + m.RequestContextId = strings.ToUpper(hex.EncodeToString(msg.RequestContextId)) + m.Consumer = msg.Consumer.String() +} + +func (m *DocMsgStartRequestContext) HandleTxMsg(v SdkMsg) MsgDocInfo { + var ( + addrs []string + msg MsgStartRequestContext + ) + + utils.UnMarshalJsonIgnoreErr(utils.MarshalJsonIgnoreErr(v), &msg) + addrs = append(addrs, msg.Consumer.String()) + handler := func() (Msg, []string) { + return m, addrs + } + + return CreateMsgDocInfo(v, handler) +} diff --git a/msgs/service/service_update_bind.go b/msgs/service/service_update_bind.go new file mode 100644 index 0000000..fccf1db --- /dev/null +++ b/msgs/service/service_update_bind.go @@ -0,0 +1,53 @@ +package service + +import ( + "github.com/irisnet/rainbow-sync/model" + . "github.com/irisnet/rainbow-sync/msgs" + "github.com/irisnet/rainbow-sync/utils" +) + +type ( + DocMsgUpdateServiceBinding struct { + ServiceName string `bson:"service_name" yaml:"service_name"` + Provider string `bson:"provider" yaml:"provider"` + Deposit model.Coins `bson:"deposit" yaml:"deposit"` + Pricing string `bson:"pricing" yaml:"pricing"` + QoS uint64 `bson:"qos" yaml:"qos"` + Owner string `bson:"owner" yaml:"owner"` + } +) + +func (m *DocMsgUpdateServiceBinding) GetType() string { + return MsgTypeUpdateServiceBinding +} + +func (m *DocMsgUpdateServiceBinding) BuildMsg(v interface{}) { + msg := v.(*MsgUpdateServiceBinding) + + var coins model.Coins + for _, one := range msg.Deposit { + coins = append(coins, &model.Coin{Denom: one.Denom, Amount: one.Amount.String()}) + } + + m.ServiceName = msg.ServiceName + m.Provider = msg.Provider.String() + m.Deposit = coins + m.Pricing = msg.Pricing + m.QoS = msg.QoS + m.Owner = msg.Owner.String() +} + +func (m *DocMsgUpdateServiceBinding) HandleTxMsg(v SdkMsg) MsgDocInfo { + var ( + addrs []string + msg MsgUpdateServiceBinding + ) + + utils.UnMarshalJsonIgnoreErr(utils.MarshalJsonIgnoreErr(v), &msg) + addrs = append(addrs, msg.Owner.String(), msg.Provider.String()) + handler := func() (Msg, []string) { + return m, addrs + } + + return CreateMsgDocInfo(v, handler) +} diff --git a/msgs/service/service_update_request_context.go b/msgs/service/service_update_request_context.go new file mode 100644 index 0000000..c6f6429 --- /dev/null +++ b/msgs/service/service_update_request_context.go @@ -0,0 +1,63 @@ +package service + +import ( + "encoding/hex" + "github.com/irisnet/rainbow-sync/model" + . "github.com/irisnet/rainbow-sync/msgs" + "github.com/irisnet/rainbow-sync/utils" + "strings" +) + +type ( + DocMsgUpdateRequestContext struct { + RequestContextID string `bson:"request_context_id" yaml:"request_context_id"` + Providers []string `bson:"providers" yaml:"providers"` + Consumer string `bson:"consumer" yaml:"consumer"` + ServiceFeeCap model.Coins `bson:"service_fee_cap" yaml:"service_fee_cap"` + Timeout int64 `bson:"timeout" yaml:"timeout"` + RepeatedFrequency uint64 `bson:"repeated_frequency" yaml:"repeated_frequency"` + RepeatedTotal int64 `bson:"repeated_total" yaml:"repeated_total"` + } +) + +func (m *DocMsgUpdateRequestContext) GetType() string { + return MsgTypeUpdateRequestContext +} + +func (m *DocMsgUpdateRequestContext) BuildMsg(v interface{}) { + msg := v.(*MsgUpdateRequestContext) + + var coins model.Coins + for _, one := range msg.ServiceFeeCap { + coins = append(coins, &model.Coin{Denom: one.Denom, Amount: one.Amount.String()}) + } + + m.RequestContextID = strings.ToUpper(hex.EncodeToString(msg.RequestContextId)) + m.Providers = m.loadProviders(msg) + m.Consumer = msg.Consumer.String() + m.ServiceFeeCap = coins + m.Timeout = msg.Timeout + m.RepeatedFrequency = msg.RepeatedFrequency + m.RepeatedTotal = msg.RepeatedTotal +} +func (m *DocMsgUpdateRequestContext) loadProviders(msg *MsgUpdateRequestContext) (ret []string) { + for _, one := range msg.Providers { + ret = append(ret, one.String()) + } + return +} +func (m *DocMsgUpdateRequestContext) HandleTxMsg(v SdkMsg) MsgDocInfo { + var ( + addrs []string + msg MsgUpdateRequestContext + ) + + utils.UnMarshalJsonIgnoreErr(utils.MarshalJsonIgnoreErr(v), &msg) + addrs = append(addrs, m.loadProviders(&msg)...) + addrs = append(addrs, msg.Consumer.String()) + handler := func() (Msg, []string) { + return m, addrs + } + + return CreateMsgDocInfo(v, handler) +} diff --git a/msgs/service/service_withdraw_earn_fee.go b/msgs/service/service_withdraw_earn_fee.go new file mode 100644 index 0000000..aab7b23 --- /dev/null +++ b/msgs/service/service_withdraw_earn_fee.go @@ -0,0 +1,40 @@ +package service + +import ( + . "github.com/irisnet/rainbow-sync/msgs" + "github.com/irisnet/rainbow-sync/utils" +) + +type ( + DocMsgWithdrawEarnedFees struct { + Owner string + Provider string + } +) + +func (m *DocMsgWithdrawEarnedFees) GetType() string { + return MsgTypeWithdrawEarnedFees +} + +func (m *DocMsgWithdrawEarnedFees) BuildMsg(v interface{}) { + msg := v.(*MsgWithdrawEarnedFees) + + m.Owner = msg.Owner.String() + m.Provider = msg.Provider.String() +} + +func (m *DocMsgWithdrawEarnedFees) HandleTxMsg(v SdkMsg) MsgDocInfo { + var ( + addrs []string + msg MsgWithdrawEarnedFees + ) + + utils.UnMarshalJsonIgnoreErr(utils.MarshalJsonIgnoreErr(v), &msg) + + addrs = append(addrs, msg.Owner.String(), msg.Provider.String()) + handler := func() (Msg, []string) { + return m, addrs + } + + return CreateMsgDocInfo(v, handler) +} diff --git a/msgs/slashing/slashing.go b/msgs/slashing/slashing.go new file mode 100644 index 0000000..c275b7c --- /dev/null +++ b/msgs/slashing/slashing.go @@ -0,0 +1,19 @@ +package slashing + +import ( + sdk "github.com/cosmos/cosmos-sdk/types" + . "github.com/irisnet/rainbow-sync/msgs" +) + +func HandleTxMsg(msg sdk.Msg) (MsgDocInfo, bool) { + ok := true + switch msg.Type() { + case new(MsgUnjail).Type(): + docMsg := DocTxMsgUnjail{} + return docMsg.HandleTxMsg(msg), ok + + default: + ok = false + } + return MsgDocInfo{}, ok +} diff --git a/msgs/slashing/unjail.go b/msgs/slashing/unjail.go new file mode 100644 index 0000000..2a7c04f --- /dev/null +++ b/msgs/slashing/unjail.go @@ -0,0 +1,34 @@ +package slashing + +import ( + . "github.com/irisnet/rainbow-sync/msgs" +) + +// MsgUnjail - struct for unjailing jailed validator +type DocTxMsgUnjail struct { + ValidatorAddr string `bson:"address"` // address of the validator operator +} + +func (doctx *DocTxMsgUnjail) GetType() string { + return MsgTypeUnjail +} + +func (doctx *DocTxMsgUnjail) BuildMsg(txMsg interface{}) { + msg := txMsg.(*MsgUnjail) + doctx.ValidatorAddr = msg.ValidatorAddr +} +func (m *DocTxMsgUnjail) HandleTxMsg(v SdkMsg) MsgDocInfo { + + var ( + addrs []string + msg MsgUnjail + ) + + ConvertMsg(v, &msg) + addrs = append(addrs, msg.ValidatorAddr) + handler := func() (Msg, []string) { + return m, addrs + } + + return CreateMsgDocInfo(v, handler) +} diff --git a/msgs/staking/handler.go b/msgs/staking/handler.go new file mode 100644 index 0000000..a894122 --- /dev/null +++ b/msgs/staking/handler.go @@ -0,0 +1,30 @@ +package staking + +import ( + sdk "github.com/cosmos/cosmos-sdk/types" + . "github.com/irisnet/rainbow-sync/msgs" +) + +func HandleTxMsg(msg sdk.Msg) (MsgDocInfo, bool) { + ok := true + switch msg.Type() { + case new(MsgBeginRedelegate).Type(): + docMsg := DocTxMsgBeginRedelegate{} + return docMsg.HandleTxMsg(msg), ok + case new(MsgStakeBeginUnbonding).Type(): + docMsg := DocTxMsgBeginUnbonding{} + return docMsg.HandleTxMsg(msg), ok + case new(MsgStakeDelegate).Type(): + docMsg := DocTxMsgDelegate{} + return docMsg.HandleTxMsg(msg), ok + case new(MsgStakeEdit).Type(): + docMsg := DocMsgEditValidator{} + return docMsg.HandleTxMsg(msg), ok + case new(MsgStakeCreate).Type(): + docMsg := DocTxMsgCreateValidator{} + return docMsg.HandleTxMsg(msg), ok + default: + ok = false + } + return MsgDocInfo{}, ok +} diff --git a/msgs/staking/stake.go b/msgs/staking/stake.go new file mode 100644 index 0000000..7f9bac8 --- /dev/null +++ b/msgs/staking/stake.go @@ -0,0 +1,219 @@ +package staking + +import ( + stake "github.com/cosmos/cosmos-sdk/x/staking/types" + "github.com/irisnet/rainbow-sync/model" + . "github.com/irisnet/rainbow-sync/msgs" +) + +// MsgDelegate - struct for bonding transactions +type DocTxMsgBeginRedelegate struct { + DelegatorAddress string `bson:"delegator_address"` + ValidatorSrcAddress string `bson:"validator_src_address"` + ValidatorDstAddress string `bson:"validator_dst_address"` + Amount string `bson:"amount"` +} + +type Description struct { + Moniker string `bson:"moniker"` + Identity string `bson:"identity"` + Website string `bson:"website"` + SecurityContact string `bson:"security_contact"` + Details string `bson:"details"` +} + +type CommissionRates struct { + Rate string `bson:"rate"` // the commission rate charged to delegators + MaxRate string `bson:"max_rate"` // maximum commission rate which validator can ever charge + MaxChangeRate string `bson:"max_change_rate"` // maximum daily increase of the validator commission +} + +func (doctx *DocTxMsgBeginRedelegate) GetType() string { + return MsgTypeBeginRedelegate +} + +func (doctx *DocTxMsgBeginRedelegate) BuildMsg(txMsg interface{}) { + msg := txMsg.(*MsgBeginRedelegate) + doctx.DelegatorAddress = msg.DelegatorAddress + doctx.ValidatorSrcAddress = msg.ValidatorSrcAddress + doctx.ValidatorDstAddress = msg.ValidatorDstAddress + doctx.Amount = msg.Amount.String() +} +func (m *DocTxMsgBeginRedelegate) HandleTxMsg(v SdkMsg) MsgDocInfo { + + var ( + addrs []string + msg MsgBeginRedelegate + ) + + ConvertMsg(v, &msg) + addrs = append(addrs, msg.DelegatorAddress, msg.ValidatorDstAddress, msg.ValidatorSrcAddress) + handler := func() (Msg, []string) { + return m, addrs + } + + return CreateMsgDocInfo(v, handler) +} + +// MsgBeginUnbonding - struct for unbonding transactions +type DocTxMsgBeginUnbonding struct { + DelegatorAddress string `bson:"delegator_address"` + ValidatorAddress string `bson:"validator_address"` + Amount string `bson:"amount"` +} + +func (doctx *DocTxMsgBeginUnbonding) GetType() string { + return MsgTypeStakeBeginUnbonding +} + +func (doctx *DocTxMsgBeginUnbonding) BuildMsg(txMsg interface{}) { + msg := txMsg.(*MsgStakeBeginUnbonding) + doctx.ValidatorAddress = msg.ValidatorAddress + doctx.DelegatorAddress = msg.DelegatorAddress + doctx.Amount = msg.Amount.String() +} +func (m *DocTxMsgBeginUnbonding) HandleTxMsg(v SdkMsg) MsgDocInfo { + + var ( + addrs []string + msg MsgStakeBeginUnbonding + ) + + ConvertMsg(v, &msg) + addrs = append(addrs, msg.DelegatorAddress, msg.ValidatorAddress) + handler := func() (Msg, []string) { + return m, addrs + } + + return CreateMsgDocInfo(v, handler) +} + +// MsgDelegate - struct for bonding transactions +type DocTxMsgDelegate struct { + DelegatorAddress string `bson:"delegator_address"` + ValidatorAddress string `bson:"validator_address"` + Delegation Coin `bson:"delegation"` +} + +func (doctx *DocTxMsgDelegate) GetType() string { + return MsgTypeStakeDelegate +} + +func (doctx *DocTxMsgDelegate) BuildMsg(txMsg interface{}) { + msg := txMsg.(*MsgStakeDelegate) + doctx.ValidatorAddress = msg.ValidatorAddress + doctx.DelegatorAddress = msg.DelegatorAddress + doctx.Delegation = Coin(model.BuildDocCoin(msg.Amount)) +} +func (m *DocTxMsgDelegate) HandleTxMsg(v SdkMsg) MsgDocInfo { + + var ( + addrs []string + msg MsgStakeDelegate + ) + + ConvertMsg(v, &msg) + addrs = append(addrs, msg.DelegatorAddress, msg.ValidatorAddress) + handler := func() (Msg, []string) { + return m, addrs + } + + return CreateMsgDocInfo(v, handler) +} + +// MsgEditValidator - struct for editing a validator +type DocMsgEditValidator struct { + Description Description `bson:"description"` + ValidatorAddress string `bson:"validator_address"` + CommissionRate string `bson:"commission_rate"` + MinSelfDelegation string `bson:"min_self_delegation"` +} + +func (doctx *DocMsgEditValidator) GetType() string { + return MsgTypeStakeEditValidator +} + +func (doctx *DocMsgEditValidator) BuildMsg(txMsg interface{}) { + msg := txMsg.(*MsgStakeEdit) + doctx.ValidatorAddress = msg.ValidatorAddress + commissionRate := msg.CommissionRate + if commissionRate == nil { + doctx.CommissionRate = "" + } else { + doctx.CommissionRate = commissionRate.String() + } + doctx.Description = loadDescription(msg.Description) +} +func (m *DocMsgEditValidator) HandleTxMsg(v SdkMsg) MsgDocInfo { + + var ( + addrs []string + msg MsgStakeEdit + ) + + ConvertMsg(v, &msg) + addrs = append(addrs, msg.ValidatorAddress) + handler := func() (Msg, []string) { + return m, addrs + } + + return CreateMsgDocInfo(v, handler) +} + +// MsgCreateValidator defines an SDK message for creating a new validator. +type DocTxMsgCreateValidator struct { + Description Description `bson:"description"` + Commission CommissionRates `bson:"commission"` + MinSelfDelegation string `bson:"min_self_delegation"` + DelegatorAddress string `bson:"delegator_address"` + ValidatorAddress string `bson:"validator_address"` + Pubkey string `bson:"pubkey"` + Value Coin `bson:"value"` +} + +func (doctx *DocTxMsgCreateValidator) GetType() string { + return MsgTypeStakeCreateValidator +} + +func (doctx *DocTxMsgCreateValidator) BuildMsg(txMsg interface{}) { + msg := txMsg.(*MsgStakeCreate) + //pubKey, err := itypes.Bech32ifyValPub(msg.Pubkey) + //if err != nil { + // pubKey = "" + //} + doctx.ValidatorAddress = msg.ValidatorAddress + doctx.Pubkey = msg.Pubkey + doctx.DelegatorAddress = msg.DelegatorAddress + doctx.MinSelfDelegation = msg.MinSelfDelegation.String() + doctx.Commission = CommissionRates{ + Rate: msg.Commission.Rate.String(), + MaxChangeRate: msg.Commission.MaxChangeRate.String(), + MaxRate: msg.Commission.MaxRate.String(), + } + doctx.Description = loadDescription(msg.Description) +} +func (m *DocTxMsgCreateValidator) HandleTxMsg(v SdkMsg) MsgDocInfo { + + var ( + addrs []string + msg MsgStakeCreate + ) + + ConvertMsg(v, &msg) + addrs = append(addrs, msg.DelegatorAddress, msg.ValidatorAddress) + handler := func() (Msg, []string) { + return m, addrs + } + + return CreateMsgDocInfo(v, handler) +} + +func loadDescription(description stake.Description) Description { + return Description{ + Moniker: description.Moniker, + Details: description.Details, + Identity: description.Identity, + Website: description.Website, + SecurityContact: description.SecurityContact, + } +} diff --git a/msgs/token/edit_token.go b/msgs/token/edit_token.go new file mode 100644 index 0000000..1b9f179 --- /dev/null +++ b/msgs/token/edit_token.go @@ -0,0 +1,43 @@ +package token + +import ( + . "github.com/irisnet/rainbow-sync/msgs" + "github.com/irisnet/rainbow-sync/utils" +) + +type DocMsgEditToken struct { + Symbol string `bson:"symbol"` + Name string `bson:"name"` + MaxSupply uint64 `bson:"max_supply"` + Mintable bool `bson:"mintable"` + Owner string `bson:"owner"` +} + +func (m *DocMsgEditToken) GetType() string { + return MsgTypeEditToken +} + +func (m *DocMsgEditToken) BuildMsg(v interface{}) { + msg := v.(*MsgEditToken) + + m.Symbol = msg.Symbol + m.Owner = msg.Owner.String() + m.Name = msg.Name + m.MaxSupply = msg.MaxSupply + m.Mintable = msg.Mintable.ToBool() +} + +func (m *DocMsgEditToken) HandleTxMsg(v SdkMsg) MsgDocInfo { + var ( + addrs []string + msg MsgEditToken + ) + + utils.UnMarshalJsonIgnoreErr(utils.MarshalJsonIgnoreErr(v), &msg) + addrs = append(addrs, msg.Owner.String()) + handler := func() (Msg, []string) { + return m, addrs + } + + return CreateMsgDocInfo(v, handler) +} diff --git a/msgs/token/issue_token.go b/msgs/token/issue_token.go new file mode 100644 index 0000000..cf39c36 --- /dev/null +++ b/msgs/token/issue_token.go @@ -0,0 +1,49 @@ +package token + +import ( + . "github.com/irisnet/rainbow-sync/msgs" + "github.com/irisnet/rainbow-sync/utils" +) + +type DocMsgIssueToken struct { + Symbol string `bson:"symbol"` + Name string `bson:"name"` + Scale uint32 `bson:"scale"` + MinUnit string `bson:"min_unit"` + InitialSupply uint64 `bson:"initial_supply"` + MaxSupply uint64 `bson:"max_supply"` + Mintable bool `bson:"mintable"` + Owner string `bson:"owner"` +} + +func (m *DocMsgIssueToken) GetType() string { + return MsgTypeIssueToken +} + +func (m *DocMsgIssueToken) BuildMsg(v interface{}) { + msg := v.(*MsgIssueToken) + + m.Symbol = msg.Symbol + m.Name = msg.Name + m.Scale = msg.Scale + m.MinUnit = msg.MinUnit + m.InitialSupply = msg.InitialSupply + m.Owner = msg.Owner.String() + m.MaxSupply = msg.MaxSupply + m.Mintable = msg.Mintable +} + +func (m *DocMsgIssueToken) HandleTxMsg(v SdkMsg) MsgDocInfo { + var ( + addrs []string + msg MsgIssueToken + ) + + utils.UnMarshalJsonIgnoreErr(utils.MarshalJsonIgnoreErr(v), &msg) + addrs = append(addrs, msg.Owner.String()) + handler := func() (Msg, []string) { + return m, addrs + } + + return CreateMsgDocInfo(v, handler) +} diff --git a/msgs/token/mint_token.go b/msgs/token/mint_token.go new file mode 100644 index 0000000..3a0d1ea --- /dev/null +++ b/msgs/token/mint_token.go @@ -0,0 +1,41 @@ +package token + +import ( + . "github.com/irisnet/rainbow-sync/msgs" + "github.com/irisnet/rainbow-sync/utils" +) + +type DocMsgMintToken struct { + Symbol string `bson:"symbol"` + Amount uint64 `bson:"amount"` + To string `bson:"to"` + Owner string `bson:"owner"` +} + +func (m *DocMsgMintToken) GetType() string { + return MsgTypeMintToken +} + +func (m *DocMsgMintToken) BuildMsg(v interface{}) { + msg := v.(*MsgMintToken) + + m.Symbol = msg.Symbol + m.Amount = msg.Amount + m.To = msg.To.String() + m.Owner = msg.Owner.String() +} + +func (m *DocMsgMintToken) HandleTxMsg(v SdkMsg) MsgDocInfo { + var ( + addrs []string + msg MsgMintToken + ) + + utils.UnMarshalJsonIgnoreErr(utils.MarshalJsonIgnoreErr(v), &msg) + addrs = append(addrs, msg.Owner.String(), msg.To.String()) + handler := func() (Msg, []string) { + return m, addrs + } + + return CreateMsgDocInfo(v, handler) +} diff --git a/msgs/token/token.go b/msgs/token/token.go new file mode 100644 index 0000000..9812cdc --- /dev/null +++ b/msgs/token/token.go @@ -0,0 +1,34 @@ +package token + +import ( + "github.com/cosmos/cosmos-sdk/types" + . "github.com/irisnet/rainbow-sync/msgs" +) + +func HandleTxMsg(v types.Msg) (MsgDocInfo, bool) { + var ( + msgDocInfo MsgDocInfo + ) + ok := true + switch v.Type() { + case new(MsgMintToken).Type(): + docMsg := DocMsgMintToken{} + msgDocInfo = docMsg.HandleTxMsg(v) + break + case new(MsgEditToken).Type(): + docMsg := DocMsgEditToken{} + msgDocInfo = docMsg.HandleTxMsg(v) + break + case new(MsgIssueToken).Type(): + docMsg := DocMsgIssueToken{} + msgDocInfo = docMsg.HandleTxMsg(v) + break + case new(MsgTransferTokenOwner).Type(): + docMsg := DocMsgTransferTokenOwner{} + msgDocInfo = docMsg.HandleTxMsg(v) + break + default: + ok = false + } + return msgDocInfo, ok +} diff --git a/msgs/token/transfer_tokenowner.go b/msgs/token/transfer_tokenowner.go new file mode 100644 index 0000000..a1c85f0 --- /dev/null +++ b/msgs/token/transfer_tokenowner.go @@ -0,0 +1,39 @@ +package token + +import ( + . "github.com/irisnet/rainbow-sync/msgs" + "github.com/irisnet/rainbow-sync/utils" +) + +type DocMsgTransferTokenOwner struct { + SrcOwner string `bson:"src_owner"` + DstOwner string `bson:"dst_owner"` + Symbol string `bson:"symbol"` +} + +func (m *DocMsgTransferTokenOwner) GetType() string { + return MsgTypeTransferTokenOwner +} + +func (m *DocMsgTransferTokenOwner) BuildMsg(v interface{}) { + msg := v.(*MsgTransferTokenOwner) + + m.Symbol = msg.Symbol + m.SrcOwner = msg.SrcOwner.String() + m.DstOwner = msg.DstOwner.String() +} + +func (m *DocMsgTransferTokenOwner) HandleTxMsg(v SdkMsg) MsgDocInfo { + var ( + addrs []string + msg MsgTransferTokenOwner + ) + + utils.UnMarshalJsonIgnoreErr(utils.MarshalJsonIgnoreErr(v), &msg) + addrs = append(addrs, msg.SrcOwner.String(), msg.DstOwner.String()) + handler := func() (Msg, []string) { + return m, addrs + } + + return CreateMsgDocInfo(v, handler) +} diff --git a/msgs/types.go b/msgs/types.go new file mode 100644 index 0000000..7f8b40f --- /dev/null +++ b/msgs/types.go @@ -0,0 +1,179 @@ +package msgs + +import ( + sdk "github.com/cosmos/cosmos-sdk/types" + bank "github.com/cosmos/cosmos-sdk/x/bank/types" + crisis "github.com/cosmos/cosmos-sdk/x/crisis/types" + distribution "github.com/cosmos/cosmos-sdk/x/distribution/types" + evidence "github.com/cosmos/cosmos-sdk/x/evidence/types" + gov "github.com/cosmos/cosmos-sdk/x/gov/types" + ibctransfer "github.com/cosmos/cosmos-sdk/x/ibc/applications/transfer/types" + ibcclient "github.com/cosmos/cosmos-sdk/x/ibc/core/02-client/types" + ibc "github.com/cosmos/cosmos-sdk/x/ibc/core/04-channel/types" + slashing "github.com/cosmos/cosmos-sdk/x/slashing/types" + stake "github.com/cosmos/cosmos-sdk/x/staking/types" + coinswap "github.com/irisnet/irismod/modules/coinswap/types" + htlc "github.com/irisnet/irismod/modules/htlc/types" + nft "github.com/irisnet/irismod/modules/nft/types" + record "github.com/irisnet/irismod/modules/record/types" + service "github.com/irisnet/irismod/modules/service/types" + token "github.com/irisnet/irismod/modules/token/types" + "github.com/irisnet/rainbow-sync/model" +) + +const ( + MsgTypeSend = "send" + MsgTypeMultiSend = "multisend" + MsgTypeNFTMint = "mint_nft" + MsgTypeNFTEdit = "edit_nft" + MsgTypeNFTTransfer = "transfer_nft" + MsgTypeNFTBurn = "burn_nft" + MsgTypeIssueDenom = "issue_denom" + MsgTypeRecordCreate = "create_record" + + MsgTypeMintToken = "mint_token" + MsgTypeEditToken = "edit_token" + MsgTypeIssueToken = "issue_token" + MsgTypeTransferTokenOwner = "transfer_token_owner" + + MsgTypeDefineService = "define_service" // type for MsgDefineService + MsgTypeBindService = "bind_service" // type for MsgBindService + MsgTypeUpdateServiceBinding = "update_service_binding" // type for MsgUpdateServiceBinding + MsgTypeServiceSetWithdrawAddress = "service/set_withdraw_address" // type for MsgSetWithdrawAddress + MsgTypeDisableServiceBinding = "disable_service_binding" // type for MsgDisableServiceBinding + MsgTypeEnableServiceBinding = "enable_service_binding" // type for MsgEnableServiceBinding + MsgTypeRefundServiceDeposit = "refund_service_deposit" // type for MsgRefundServiceDeposit + MsgTypeCallService = "call_service" // type for MsgCallService + MsgTypeRespondService = "respond_service" // type for MsgRespondService + MsgTypePauseRequestContext = "pause_request_context" // type for MsgPauseRequestContext + MsgTypeStartRequestContext = "start_request_context" // type for MsgStartRequestContext + MsgTypeKillRequestContext = "kill_request_context" // type for MsgKillRequestContext + MsgTypeUpdateRequestContext = "update_request_context" // type for MsgUpdateRequestContext + MsgTypeWithdrawEarnedFees = "withdraw_earned_fees" // type for MsgWithdrawEarnedFees + + MsgTypeStakeCreateValidator = "create_validator" + MsgTypeStakeEditValidator = "edit_validator" + MsgTypeStakeDelegate = "delegate" + MsgTypeStakeBeginUnbonding = "begin_unbonding" + MsgTypeBeginRedelegate = "begin_redelegate" + MsgTypeUnjail = "unjail" + MsgTypeSetWithdrawAddress = "set_withdraw_address" + MsgTypeWithdrawDelegatorReward = "withdraw_delegator_reward" + MsgTypeMsgFundCommunityPool = "fund_community_pool" + MsgTypeMsgWithdrawValidatorCommission = "withdraw_validator_commission" + MsgTypeSubmitProposal = "submit_proposal" + MsgTypeDeposit = "deposit" + MsgTypeVote = "vote" + + MsgTypeCreateHTLC = "create_htlc" + MsgTypeClaimHTLC = "claim_htlc" + MsgTypeRefundHTLC = "refund_htlc" + + MsgTypeAddLiquidity = "add_liquidity" + MsgTypeRemoveLiquidity = "remove_liquidity" + MsgTypeSwapOrder = "swap_order" + + MsgTypeSubmitEvidence = "submit_evidence" + MsgTypeVerifyInvariant = "verify_invariant" + + MsgTypeCreateClient = "create_client" + MsgTypeUpdateClient = "update_client" + + MsgTypeRecvPacket = "recv_packet" + MsgTypeIbcTransfer = "transfer" + + MsgTypeUpdateIdentity = "update_identity" + MsgTypeCreateIdentity = "create_identity" + + TxTypeRequestRand = "request_rand" + + TxTypeCreateFeed = "create_feed" + TxTypeEditFeed = "edit_feed" + TxTypePauseFeed = "pause_feed" + TxTypeStartFeed = "start_feed" +) + +type ( + MsgDocInfo struct { + DocTxMsg model.DocTxMsg + Addrs []string + Signers []string + } + Msg model.Msg + SdkMsg sdk.Msg + + Coin model.Coin + + Coins []*Coin + + MsgSend = bank.MsgSend + MsgMultiSend = bank.MsgMultiSend + + MsgNFTMint = nft.MsgMintNFT + MsgNFTEdit = nft.MsgEditNFT + MsgNFTTransfer = nft.MsgTransferNFT + MsgNFTBurn = nft.MsgBurnNFT + MsgIssueDenom = nft.MsgIssueDenom + + MsgDefineService = service.MsgDefineService + MsgBindService = service.MsgBindService + MsgCallService = service.MsgCallService + MsgRespondService = service.MsgRespondService + + MsgUpdateServiceBinding = service.MsgUpdateServiceBinding + MsgSetWithdrawAddress = service.MsgSetWithdrawAddress + MsgDisableServiceBinding = service.MsgDisableServiceBinding + MsgEnableServiceBinding = service.MsgEnableServiceBinding + MsgRefundServiceDeposit = service.MsgRefundServiceDeposit + MsgPauseRequestContext = service.MsgPauseRequestContext + MsgStartRequestContext = service.MsgStartRequestContext + MsgKillRequestContext = service.MsgKillRequestContext + MsgUpdateRequestContext = service.MsgUpdateRequestContext + MsgWithdrawEarnedFees = service.MsgWithdrawEarnedFees + + MsgRecordCreate = record.MsgCreateRecord + + MsgIssueToken = token.MsgIssueToken + MsgEditToken = token.MsgEditToken + MsgMintToken = token.MsgMintToken + MsgTransferTokenOwner = token.MsgTransferTokenOwner + + MsgStakeCreate = stake.MsgCreateValidator + MsgStakeEdit = stake.MsgEditValidator + MsgStakeDelegate = stake.MsgDelegate + MsgStakeBeginUnbonding = stake.MsgUndelegate + MsgBeginRedelegate = stake.MsgBeginRedelegate + MsgUnjail = slashing.MsgUnjail + MsgStakeSetWithdrawAddress = distribution.MsgSetWithdrawAddress + MsgWithdrawDelegatorReward = distribution.MsgWithdrawDelegatorReward + MsgFundCommunityPool = distribution.MsgFundCommunityPool + MsgWithdrawValidatorCommission = distribution.MsgWithdrawValidatorCommission + StakeValidator = stake.Validator + Delegation = stake.Delegation + UnbondingDelegation = stake.UnbondingDelegation + + MsgDeposit = gov.MsgDeposit + MsgSubmitProposal = gov.MsgSubmitProposal + TextProposal = gov.TextProposal + MsgVote = gov.MsgVote + Proposal = gov.Proposal + SdkVote = gov.Vote + + MsgSwapOrder = coinswap.MsgSwapOrder + MsgAddLiquidity = coinswap.MsgAddLiquidity + MsgRemoveLiquidity = coinswap.MsgRemoveLiquidity + + MsgClaimHTLC = htlc.MsgClaimHTLC + MsgCreateHTLC = htlc.MsgCreateHTLC + MsgRefundHTLC = htlc.MsgRefundHTLC + + MsgSubmitEvidence = evidence.MsgSubmitEvidence + MsgVerifyInvariant = crisis.MsgVerifyInvariant + + MsgRecvPacket = ibc.MsgRecvPacket + MsgTransfer = ibctransfer.MsgTransfer + //MsgTransferResponse = ibctransfer.MsgTransferResponse + + MsgCreateClient = ibcclient.MsgCreateClient + MsgUpdateClient = ibcclient.MsgUpdateClient +) diff --git a/task/execute.go b/task/execute.go index dbe7574..04e248e 100644 --- a/task/execute.go +++ b/task/execute.go @@ -1,6 +1,7 @@ package task import ( + "context" "fmt" "github.com/irisnet/rainbow-sync/block" "github.com/irisnet/rainbow-sync/conf" @@ -278,7 +279,7 @@ func getBlockChainLatestHeight() (int64, error) { defer func() { client.Release() }() - status, err := client.Status() + status, err := client.Status(context.Background()) if err != nil { return 0, err } From 15a242a1a283026e72aad848e753cc2ecb0d33fa Mon Sep 17 00:00:00 2001 From: huangweichang Date: Wed, 2 Dec 2020 14:24:43 +0800 Subject: [PATCH 03/49] update code --- model/tx.go | 12 ++++++------ msgs/ibc/recv_packet.go | 4 ++-- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/model/tx.go b/model/tx.go index 693de2d..28589d3 100644 --- a/model/tx.go +++ b/model/tx.go @@ -79,20 +79,20 @@ func (d Tx) EnsureIndexes() { } type Coin struct { - Denom string `bson:"denom" json:"denom"` - Amount string `bson:"amount" json:"amount"` + Denom string `bson:"denom"` + Amount string `bson:"amount"` } type Coins []*Coin type Fee struct { - Amount []Coin `bson:"amount" json:"amount"` - Gas int64 `bson:"gas" json:"gas"` + Amount []Coin `bson:"amount"` + Gas int64 `bson:"gas"` } type ActualFee struct { - Denom string `json:"denom"` - Amount string `json:"amount"` + Denom string `bson:"denom"` + Amount string `bson:"amount"` } func BuildDocCoins(coins sdk.Coins) []Coin { diff --git a/msgs/ibc/recv_packet.go b/msgs/ibc/recv_packet.go index 1e19a4c..5807785 100644 --- a/msgs/ibc/recv_packet.go +++ b/msgs/ibc/recv_packet.go @@ -35,9 +35,9 @@ type Packet struct { // actual opaque bytes transferred directly to the application module Data string `bson:"data"` // block height after which the packet times out - TimeoutHeight Height `json:"timeout_height"` + TimeoutHeight Height `bson:"timeout_height"` // block timestamp (in nanoseconds) after which the packet times out - TimeoutTimestamp uint64 `json:"timeout_timestamp"` + TimeoutTimestamp uint64 `bson:"timeout_timestamp"` } func (m *DocMsgRecvPacket) GetType() string { From 0c9f9ce8b503134423944113fcdc621615566132 Mon Sep 17 00:00:00 2001 From: huangweichang Date: Wed, 2 Dec 2020 14:42:00 +0800 Subject: [PATCH 04/49] add events parse --- block/parse_tx.go | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/block/parse_tx.go b/block/parse_tx.go index 0b568e9..09b0cac 100644 --- a/block/parse_tx.go +++ b/block/parse_tx.go @@ -11,6 +11,7 @@ import ( "github.com/irisnet/rainbow-sync/logger" "github.com/irisnet/rainbow-sync/model" "github.com/irisnet/rainbow-sync/utils" + aTypes "github.com/tendermint/tendermint/abci/types" "github.com/tendermint/tendermint/types" "golang.org/x/net/context" "gopkg.in/mgo.v2/bson" @@ -178,6 +179,7 @@ func ParseTx(txBytes types.Tx, block *types.Block, client *pool.Client) model.Tx docTx.Log = res.TxResult.Log } + docTx.Events = parseEvents(res.TxResult.Events) msgs := authTx.GetMsgs() if len(msgs) == 0 { @@ -217,3 +219,26 @@ func BuildFee(fee sdk.Coins, gas uint64) *model.Fee { Gas: int64(gas), } } + +func parseEvents(events []aTypes.Event) []model.Event { + var eventDocs []model.Event + if len(events) > 0 { + for _, e := range events { + var kvPairDocs []model.KvPair + if len(e.Attributes) > 0 { + for _, v := range e.Attributes { + kvPairDocs = append(kvPairDocs, model.KvPair{ + Key: string(v.Key), + Value: string(v.Value), + }) + } + } + eventDocs = append(eventDocs, model.Event{ + Type: e.Type, + Attributes: kvPairDocs, + }) + } + } + + return eventDocs +} From 8a0d756a7f644073d9fc427255ba9c4e1426e9f1 Mon Sep 17 00:00:00 2001 From: huangweichang Date: Wed, 2 Dec 2020 17:13:20 +0800 Subject: [PATCH 05/49] remove type segment of tx table --- block/parse_tx.go | 5 +---- model/tx.go | 2 +- msgs/common.go | 16 ++++++---------- 3 files changed, 8 insertions(+), 15 deletions(-) diff --git a/block/parse_tx.go b/block/parse_tx.go index 09b0cac..81ce02f 100644 --- a/block/parse_tx.go +++ b/block/parse_tx.go @@ -185,14 +185,11 @@ func ParseTx(txBytes types.Tx, block *types.Block, client *pool.Client) model.Tx if len(msgs) == 0 { return docTx } - for i, v := range msgs { + for _, v := range msgs { msgDocInfo := HandleTxMsg(v) if len(msgDocInfo.Addrs) == 0 { continue } - if i == 0 { - docTx.Type = msgDocInfo.DocTxMsg.Type - } docTx.Signers = append(docTx.Signers, removeDuplicatesFromSlice(msgDocInfo.Signers)...) docTx.Addrs = append(docTx.Addrs, removeDuplicatesFromSlice(msgDocInfo.Addrs)...) diff --git a/model/tx.go b/model/tx.go index 28589d3..523a49a 100644 --- a/model/tx.go +++ b/model/tx.go @@ -11,7 +11,6 @@ type Tx struct { Time int64 `bson:"time"` Height int64 `bson:"height"` TxHash string `bson:"tx_hash"` - Type string `bson:"type"` Fee *Fee `bson:"fee"` ActualFee *ActualFee `bson:"actual_fee"` Memo string `bson:"memo"` @@ -69,6 +68,7 @@ func (d Tx) EnsureIndexes() { Background: true}, mgo.Index{ Key: []string{"-tx_hash"}, + Unique: true, Background: true}, mgo.Index{ Key: []string{"-type"}, diff --git a/msgs/common.go b/msgs/common.go index 1e1c66b..fba232a 100644 --- a/msgs/common.go +++ b/msgs/common.go @@ -21,7 +21,7 @@ func CreateMsgDocInfo(msg sdk.Msg, handler func() (Msg, []string)) MsgDocInfo { Msg: m, } - _, signers = BuildDocSigners(msg.GetSigners()) + signers = BuildDocSigners(msg.GetSigners()) addrs = append(addrs, signers...) addrs = append(addrs, addrcollections...) @@ -31,23 +31,19 @@ func CreateMsgDocInfo(msg sdk.Msg, handler func() (Msg, []string)) MsgDocInfo { Addrs: addrs, } } -func BuildDocSigners(signers []sdk.AccAddress) (string, []string) { +func BuildDocSigners(signers []sdk.AccAddress) []string { var ( - firstSigner string - allSigners []string + //firstSigner string + allSigners []string ) if len(signers) == 0 { - return firstSigner, allSigners + return allSigners } for _, v := range signers { - if firstSigner == "" { - firstSigner = v.String() - } - allSigners = append(allSigners, v.String()) } - return firstSigner, allSigners + return allSigners } func ConvertMsg(v interface{}, msg interface{}) { utils.UnMarshalJsonIgnoreErr(utils.MarshalJsonIgnoreErr(v), &msg) From 55776ac8a17c66416997cfb378fe096981510e17 Mon Sep 17 00:00:00 2001 From: huangweichang Date: Wed, 2 Dec 2020 17:14:29 +0800 Subject: [PATCH 06/49] update code --- msgs/common.go | 1 - 1 file changed, 1 deletion(-) diff --git a/msgs/common.go b/msgs/common.go index fba232a..93f4c15 100644 --- a/msgs/common.go +++ b/msgs/common.go @@ -33,7 +33,6 @@ func CreateMsgDocInfo(msg sdk.Msg, handler func() (Msg, []string)) MsgDocInfo { } func BuildDocSigners(signers []sdk.AccAddress) []string { var ( - //firstSigner string allSigners []string ) if len(signers) == 0 { From fca5672c224bf1cd0bab5a631b9b1e51d047a12e Mon Sep 17 00:00:00 2001 From: huangweichang Date: Wed, 2 Dec 2020 17:27:44 +0800 Subject: [PATCH 07/49] add the tx table index --- model/tx.go | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/model/tx.go b/model/tx.go index 523a49a..61af505 100644 --- a/model/tx.go +++ b/model/tx.go @@ -71,7 +71,13 @@ func (d Tx) EnsureIndexes() { Unique: true, Background: true}, mgo.Index{ - Key: []string{"-type"}, + Key: []string{"-types"}, + Background: true}, + mgo.Index{ + Key: []string{"-signers"}, + Background: true}, + mgo.Index{ + Key: []string{"-addrs"}, Background: true}, ) From e0daa822ac34417280ccacdb836898db1da17848 Mon Sep 17 00:00:00 2001 From: huangweichang Date: Wed, 2 Dec 2020 18:04:23 +0800 Subject: [PATCH 08/49] fix about staking parse --- msgs/staking/handler.go | 8 ++++---- msgs/staking/stake.go | 24 ++++++++++-------------- msgs/types.go | 26 +++++++++++++------------- 3 files changed, 27 insertions(+), 31 deletions(-) diff --git a/msgs/staking/handler.go b/msgs/staking/handler.go index a894122..571614f 100644 --- a/msgs/staking/handler.go +++ b/msgs/staking/handler.go @@ -11,16 +11,16 @@ func HandleTxMsg(msg sdk.Msg) (MsgDocInfo, bool) { case new(MsgBeginRedelegate).Type(): docMsg := DocTxMsgBeginRedelegate{} return docMsg.HandleTxMsg(msg), ok - case new(MsgStakeBeginUnbonding).Type(): + case new(MsgUndelegate).Type(): docMsg := DocTxMsgBeginUnbonding{} return docMsg.HandleTxMsg(msg), ok - case new(MsgStakeDelegate).Type(): + case new(MsgDelegate).Type(): docMsg := DocTxMsgDelegate{} return docMsg.HandleTxMsg(msg), ok - case new(MsgStakeEdit).Type(): + case new(MsgEditValidator).Type(): docMsg := DocMsgEditValidator{} return docMsg.HandleTxMsg(msg), ok - case new(MsgStakeCreate).Type(): + case new(MsgCreateValidator).Type(): docMsg := DocTxMsgCreateValidator{} return docMsg.HandleTxMsg(msg), ok default: diff --git a/msgs/staking/stake.go b/msgs/staking/stake.go index 7f9bac8..0a0a68d 100644 --- a/msgs/staking/stake.go +++ b/msgs/staking/stake.go @@ -67,7 +67,7 @@ func (doctx *DocTxMsgBeginUnbonding) GetType() string { } func (doctx *DocTxMsgBeginUnbonding) BuildMsg(txMsg interface{}) { - msg := txMsg.(*MsgStakeBeginUnbonding) + msg := txMsg.(*MsgUndelegate) doctx.ValidatorAddress = msg.ValidatorAddress doctx.DelegatorAddress = msg.DelegatorAddress doctx.Amount = msg.Amount.String() @@ -76,7 +76,7 @@ func (m *DocTxMsgBeginUnbonding) HandleTxMsg(v SdkMsg) MsgDocInfo { var ( addrs []string - msg MsgStakeBeginUnbonding + msg MsgUndelegate ) ConvertMsg(v, &msg) @@ -92,7 +92,7 @@ func (m *DocTxMsgBeginUnbonding) HandleTxMsg(v SdkMsg) MsgDocInfo { type DocTxMsgDelegate struct { DelegatorAddress string `bson:"delegator_address"` ValidatorAddress string `bson:"validator_address"` - Delegation Coin `bson:"delegation"` + Amount Coin `bson:"amount"` } func (doctx *DocTxMsgDelegate) GetType() string { @@ -100,16 +100,16 @@ func (doctx *DocTxMsgDelegate) GetType() string { } func (doctx *DocTxMsgDelegate) BuildMsg(txMsg interface{}) { - msg := txMsg.(*MsgStakeDelegate) + msg := txMsg.(*MsgDelegate) doctx.ValidatorAddress = msg.ValidatorAddress doctx.DelegatorAddress = msg.DelegatorAddress - doctx.Delegation = Coin(model.BuildDocCoin(msg.Amount)) + doctx.Amount = Coin(model.BuildDocCoin(msg.Amount)) } func (m *DocTxMsgDelegate) HandleTxMsg(v SdkMsg) MsgDocInfo { var ( addrs []string - msg MsgStakeDelegate + msg MsgDelegate ) ConvertMsg(v, &msg) @@ -134,7 +134,7 @@ func (doctx *DocMsgEditValidator) GetType() string { } func (doctx *DocMsgEditValidator) BuildMsg(txMsg interface{}) { - msg := txMsg.(*MsgStakeEdit) + msg := txMsg.(*MsgEditValidator) doctx.ValidatorAddress = msg.ValidatorAddress commissionRate := msg.CommissionRate if commissionRate == nil { @@ -148,7 +148,7 @@ func (m *DocMsgEditValidator) HandleTxMsg(v SdkMsg) MsgDocInfo { var ( addrs []string - msg MsgStakeEdit + msg MsgEditValidator ) ConvertMsg(v, &msg) @@ -176,11 +176,7 @@ func (doctx *DocTxMsgCreateValidator) GetType() string { } func (doctx *DocTxMsgCreateValidator) BuildMsg(txMsg interface{}) { - msg := txMsg.(*MsgStakeCreate) - //pubKey, err := itypes.Bech32ifyValPub(msg.Pubkey) - //if err != nil { - // pubKey = "" - //} + msg := txMsg.(*MsgCreateValidator) doctx.ValidatorAddress = msg.ValidatorAddress doctx.Pubkey = msg.Pubkey doctx.DelegatorAddress = msg.DelegatorAddress @@ -196,7 +192,7 @@ func (m *DocTxMsgCreateValidator) HandleTxMsg(v SdkMsg) MsgDocInfo { var ( addrs []string - msg MsgStakeCreate + msg MsgCreateValidator ) ConvertMsg(v, &msg) diff --git a/msgs/types.go b/msgs/types.go index 7f8b40f..0873fea 100644 --- a/msgs/types.go +++ b/msgs/types.go @@ -82,15 +82,15 @@ const ( MsgTypeRecvPacket = "recv_packet" MsgTypeIbcTransfer = "transfer" - MsgTypeUpdateIdentity = "update_identity" - MsgTypeCreateIdentity = "create_identity" - - TxTypeRequestRand = "request_rand" - - TxTypeCreateFeed = "create_feed" - TxTypeEditFeed = "edit_feed" - TxTypePauseFeed = "pause_feed" - TxTypeStartFeed = "start_feed" + //MsgTypeUpdateIdentity = "update_identity" + //MsgTypeCreateIdentity = "create_identity" + // + //TxTypeRequestRand = "request_rand" + // + //TxTypeCreateFeed = "create_feed" + //TxTypeEditFeed = "edit_feed" + //TxTypePauseFeed = "pause_feed" + //TxTypeStartFeed = "start_feed" ) type ( @@ -138,10 +138,10 @@ type ( MsgMintToken = token.MsgMintToken MsgTransferTokenOwner = token.MsgTransferTokenOwner - MsgStakeCreate = stake.MsgCreateValidator - MsgStakeEdit = stake.MsgEditValidator - MsgStakeDelegate = stake.MsgDelegate - MsgStakeBeginUnbonding = stake.MsgUndelegate + MsgCreateValidator = stake.MsgCreateValidator + MsgEditValidator = stake.MsgEditValidator + MsgDelegate = stake.MsgDelegate + MsgUndelegate = stake.MsgUndelegate MsgBeginRedelegate = stake.MsgBeginRedelegate MsgUnjail = slashing.MsgUnjail MsgStakeSetWithdrawAddress = distribution.MsgSetWithdrawAddress From 4ecbd381fcb6e8a3e52152661cdfa15d41e12d9e Mon Sep 17 00:00:00 2001 From: huangweichang Date: Wed, 2 Dec 2020 18:18:20 +0800 Subject: [PATCH 09/49] update README.md --- README.md | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index 055a1bf..a9edd09 100644 --- a/README.md +++ b/README.md @@ -8,7 +8,8 @@ A daemon that synchronizes IRIS hub data for the Rainbow wallet backend - `model`: mongodb script to create database - `task`: main logic of sync-server, sync data from blockChain and write to database - `db`: database model -- `helper`: helper functions +- `msgs`: tx msgs model +- `lib`: cdc and client pool functions - `utils`: common functions - `main.go`: bootstrap project @@ -35,8 +36,7 @@ docker build -t rainbow-sync . docker run --name rainbow-sync \& -v /mnt/data/rainbow-sync/logs:/root/go/src/github.com/irisnet/rainbow-sync/logs \& -e "DB_ADDR=127.0.0.1:27217" -e "DB_USER=user" \& --e "DB_PASSWD=password" -e "DB_DATABASE=db_name" \& --e "IRIS_NETWORK=testnet" \& +-e "DB_PASSWD=password" -e "DB_DATABASE=db_name" \& -e "SER_BC_FULL_NODES=tcp://localhost:26657,..." rainbow-sync ``` @@ -49,7 +49,6 @@ docker run --name rainbow-sync \& | DB_USER | string | "" | db user | user | | DB_PASSWD | string | "" |db passwd | password | | DB_DATABASE | string | "" |database name | db_name | -| IRIS_NETWORK | string | "testnet" |irishub name | testnet or mainnet | | SER_BC_FULL_NODES | string | tcp://localhost:26657 | iris full node rpc url | tcp://localhost:26657, tcp://127.0.0.2:26657 | | WORKER_NUM_EXECUTE_TASK | string | 30 | number of threads executing synchronization TX task | 30 | | WORKER_MAX_SLEEP_TIME | string | 120 | the maximum time (in seconds) that synchronization TX threads are allowed to be out of work | 120 | From bbc6d134d61ba4f3b6d6c28b628a654de4db4d05 Mon Sep 17 00:00:00 2001 From: huangweichang Date: Thu, 3 Dec 2020 10:13:23 +0800 Subject: [PATCH 10/49] fix code about error log output --- block/parse_tx.go | 16 +++++++++++----- block/parse_tx_test.go | 2 +- 2 files changed, 12 insertions(+), 6 deletions(-) diff --git a/block/parse_tx.go b/block/parse_tx.go index 81ce02f..723a90c 100644 --- a/block/parse_tx.go +++ b/block/parse_tx.go @@ -73,26 +73,30 @@ func SaveDocsWithTxn(blockDoc *model.Block, irisTxs []*model.Tx, taskDoc model.S return nil } -func ParseBlock(b int64, client *pool.Client) (*model.Block, []*model.Tx, error) { +func ParseBlock(b int64, client *pool.Client) (resBlock *model.Block, resTxs []*model.Tx, resErr error) { defer func() { if err := recover(); err != nil { logger.Error("parse block fail", logger.Int64("height", b), logger.Any("err", err)) + resErr = fmt.Errorf("%v", err) } }() - resBlock := &model.Block{ + resBlock = &model.Block{ Height: b, CreateTime: time.Now().Unix(), } txs, err := ParseTxs(b, client) if err != nil { - return nil, nil, err + resErr = err + return } - return resBlock, txs, nil + resTxs = txs + + return } func ParseTxs(b int64, client *pool.Client) ([]*model.Tx, error) { @@ -131,7 +135,8 @@ func ParseTx(txBytes types.Tx, block *types.Block, client *pool.Client) model.Tx ) Tx, err := cdc.GetTxDecoder()(txBytes) if err != nil { - logger.Error(err.Error()) + logger.Error("TxDecoder have error", logger.String("err", err.Error()), + logger.Int64("height", block.Height)) return docTx } authTx := Tx.(signing.Tx) @@ -150,6 +155,7 @@ func ParseTx(txBytes types.Tx, block *types.Block, client *pool.Client) model.Tx client2.Release() if err1 != nil { logger.Error("get txResult err", logger.String("method", methodName), logger.String("err", err1.Error())) + return docTx } } diff --git a/block/parse_tx_test.go b/block/parse_tx_test.go index fa15f7c..c50d463 100644 --- a/block/parse_tx_test.go +++ b/block/parse_tx_test.go @@ -24,7 +24,7 @@ func TestIris_Block_ParseIrisTx(t *testing.T) { { name: "test parse iris tx", args: args{ - b: 2877965, + b: 266, client: client, }, }, From f2bf841bdb70bfe1e82e89fc4de59e5afb8cfc2e Mon Sep 17 00:00:00 2001 From: huangweichang Date: Tue, 8 Dec 2020 10:15:41 +0800 Subject: [PATCH 11/49] adjust the address prefix config --- block/config.go | 36 ++++++++++++++++++++++-------------- block/parse_tx_test.go | 2 +- 2 files changed, 23 insertions(+), 15 deletions(-) diff --git a/block/config.go b/block/config.go index 00625d0..9b6e02f 100644 --- a/block/config.go +++ b/block/config.go @@ -5,29 +5,37 @@ import ( ) const ( + + // Bech32ChainPrefix defines the prefix of this chain + Bech32ChainPrefix = "i" + + // PrefixAcc is the prefix for account + PrefixAcc = "a" + // PrefixValidator is the prefix for validator keys - PrefixValidator = "val" + PrefixValidator = "v" + // PrefixConsensus is the prefix for consensus keys - PrefixConsensus = "cons" - // PrefixPublic is the prefix for public keys - PrefixPublic = "pub" - // PrefixOperator is the prefix for operator keys - PrefixOperator = "oper" -) + PrefixConsensus = "c" + + // PrefixPublic is the prefix for public + PrefixPublic = "p" + + // PrefixAddress is the prefix for address + PrefixAddress = "a" -var ( // Bech32PrefixAccAddr defines the Bech32 prefix of an account's address - Bech32PrefixAccAddr = "iaa" + Bech32PrefixAccAddr = Bech32ChainPrefix + PrefixAcc + PrefixAddress // Bech32PrefixAccPub defines the Bech32 prefix of an account's public key - Bech32PrefixAccPub = Bech32PrefixAccAddr + PrefixPublic + Bech32PrefixAccPub = Bech32ChainPrefix + PrefixAcc + PrefixPublic // Bech32PrefixValAddr defines the Bech32 prefix of a validator's operator address - Bech32PrefixValAddr = Bech32PrefixAccAddr + PrefixValidator + PrefixOperator + Bech32PrefixValAddr = Bech32ChainPrefix + PrefixValidator + PrefixAddress // Bech32PrefixValPub defines the Bech32 prefix of a validator's operator public key - Bech32PrefixValPub = Bech32PrefixAccAddr + PrefixValidator + PrefixOperator + PrefixPublic + Bech32PrefixValPub = Bech32ChainPrefix + PrefixValidator + PrefixPublic // Bech32PrefixConsAddr defines the Bech32 prefix of a consensus node address - Bech32PrefixConsAddr = Bech32PrefixAccAddr + PrefixValidator + PrefixConsensus + Bech32PrefixConsAddr = Bech32ChainPrefix + PrefixConsensus + PrefixAddress // Bech32PrefixConsPub defines the Bech32 prefix of a consensus node public key - Bech32PrefixConsPub = Bech32PrefixAccAddr + PrefixValidator + PrefixConsensus + PrefixPublic + Bech32PrefixConsPub = Bech32ChainPrefix + PrefixConsensus + PrefixPublic ) func init() { diff --git a/block/parse_tx_test.go b/block/parse_tx_test.go index c50d463..3a10c99 100644 --- a/block/parse_tx_test.go +++ b/block/parse_tx_test.go @@ -24,7 +24,7 @@ func TestIris_Block_ParseIrisTx(t *testing.T) { { name: "test parse iris tx", args: args{ - b: 266, + b: 226, client: client, }, }, From 8ed7230304882233018c6f0c27cbe8e7af922851 Mon Sep 17 00:00:00 2001 From: huangweichang Date: Tue, 8 Dec 2020 11:27:20 +0800 Subject: [PATCH 12/49] refactor code --- block/config.go | 3 +++ block/parse_tx.go | 5 ++--- constant/types.go | 41 ----------------------------------------- 3 files changed, 5 insertions(+), 44 deletions(-) delete mode 100644 constant/types.go diff --git a/block/config.go b/block/config.go index 9b6e02f..3ed3a0c 100644 --- a/block/config.go +++ b/block/config.go @@ -36,6 +36,9 @@ const ( Bech32PrefixConsAddr = Bech32ChainPrefix + PrefixConsensus + PrefixAddress // Bech32PrefixConsPub defines the Bech32 prefix of a consensus node public key Bech32PrefixConsPub = Bech32ChainPrefix + PrefixConsensus + PrefixPublic + + TxStatusSuccess = "success" + TxStatusFail = "fail" ) func init() { diff --git a/block/parse_tx.go b/block/parse_tx.go index 723a90c..fbff1ed 100644 --- a/block/parse_tx.go +++ b/block/parse_tx.go @@ -4,7 +4,6 @@ import ( "fmt" sdk "github.com/cosmos/cosmos-sdk/types" "github.com/cosmos/cosmos-sdk/x/auth/signing" - "github.com/irisnet/rainbow-sync/constant" "github.com/irisnet/rainbow-sync/db" "github.com/irisnet/rainbow-sync/lib/cdc" "github.com/irisnet/rainbow-sync/lib/pool" @@ -179,9 +178,9 @@ func ParseTx(txBytes types.Tx, block *types.Block, client *pool.Client) model.Tx Memo: memo, TxIndex: res.Index, } - docTx.Status = constant.TxStatusSuccess + docTx.Status = TxStatusSuccess if res.TxResult.Code != 0 { - docTx.Status = constant.TxStatusFail + docTx.Status = TxStatusFail docTx.Log = res.TxResult.Log } diff --git a/constant/types.go b/constant/types.go deleted file mode 100644 index 0997dd3..0000000 --- a/constant/types.go +++ /dev/null @@ -1,41 +0,0 @@ -package constant - -const ( - Iris_TxTypeTransfer = "Transfer" - Iris_TxTypeBurn = "Burn" - Iris_TxTypeSetMemoRegexp = "SetMemoRegexp" - Iris_TxTypeStakeCreateValidator = "CreateValidator" - Iris_TxTypeStakeEditValidator = "EditValidator" - Iris_TxTypeStakeDelegate = "Delegate" - Iris_TxTypeStakeBeginUnbonding = "BeginUnbonding" - Iris_TxTypeBeginRedelegate = "BeginRedelegate" - Iris_TxTypeUnjail = "Unjail" - Iris_TxTypeSetWithdrawAddress = "SetWithdrawAddress" - Iris_TxTypeWithdrawDelegatorReward = "WithdrawDelegatorReward" - Iris_TxTypeWithdrawDelegatorRewardsAll = "WithdrawDelegatorRewardsAll" - Iris_TxTypeWithdrawValidatorRewardsAll = "WithdrawValidatorRewardsAll" - Iris_TxTypeSubmitProposal = "SubmitProposal" - Iris_TxTypeSubmitTokenAdditionProposal = "SubmitTokenAdditionProposal" - Iris_TxTypeDeposit = "Deposit" - Iris_TxTypeVote = "Vote" - Iris_TxTypeRequestRand = "RequestRand" - - TxTypeAssetIssueToken = "IssueToken" - TxTypeAssetEditToken = "EditToken" - TxTypeAssetMintToken = "MintToken" - TxTypeAssetTransferTokenOwner = "TransferTokenOwner" - TxTypeAssetCreateGateway = "CreateGateway" - TxTypeAssetEditGateway = "EditGateway" - TxTypeAssetTransferGatewayOwner = "TransferGatewayOwner" - - TxMsgTypeAssetIssueToken = "IssueToken" - TxMsgTypeAssetEditToken = "EditToken" - TxMsgTypeAssetMintToken = "MintToken" - TxMsgTypeAssetTransferTokenOwner = "TransferTokenOwner" - TxMsgTypeAssetCreateGateway = "CreateGateway" - TxMsgTypeAssetEditGateway = "EditGateway" - TxMsgTypeAssetTransferGatewayOwner = "TransferGatewayOwner" - - TxStatusSuccess = "success" - TxStatusFail = "fail" -) From 5ade8279b30db461489bdc482639bdd004e3f3e0 Mon Sep 17 00:00:00 2001 From: huangweichang Date: Tue, 8 Dec 2020 15:34:08 +0800 Subject: [PATCH 13/49] fix about validator tx msg parse of edit and create --- msgs/staking/stake.go | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/msgs/staking/stake.go b/msgs/staking/stake.go index 0a0a68d..a6f57f9 100644 --- a/msgs/staking/stake.go +++ b/msgs/staking/stake.go @@ -90,9 +90,9 @@ func (m *DocTxMsgBeginUnbonding) HandleTxMsg(v SdkMsg) MsgDocInfo { // MsgDelegate - struct for bonding transactions type DocTxMsgDelegate struct { - DelegatorAddress string `bson:"delegator_address"` - ValidatorAddress string `bson:"validator_address"` - Amount Coin `bson:"amount"` + DelegatorAddress string `bson:"delegator_address"` + ValidatorAddress string `bson:"validator_address"` + Amount model.Coin `bson:"amount"` } func (doctx *DocTxMsgDelegate) GetType() string { @@ -103,7 +103,7 @@ func (doctx *DocTxMsgDelegate) BuildMsg(txMsg interface{}) { msg := txMsg.(*MsgDelegate) doctx.ValidatorAddress = msg.ValidatorAddress doctx.DelegatorAddress = msg.DelegatorAddress - doctx.Amount = Coin(model.BuildDocCoin(msg.Amount)) + doctx.Amount = model.BuildDocCoin(msg.Amount) } func (m *DocTxMsgDelegate) HandleTxMsg(v SdkMsg) MsgDocInfo { @@ -143,6 +143,7 @@ func (doctx *DocMsgEditValidator) BuildMsg(txMsg interface{}) { doctx.CommissionRate = commissionRate.String() } doctx.Description = loadDescription(msg.Description) + doctx.MinSelfDelegation = msg.MinSelfDelegation.String() } func (m *DocMsgEditValidator) HandleTxMsg(v SdkMsg) MsgDocInfo { @@ -168,7 +169,7 @@ type DocTxMsgCreateValidator struct { DelegatorAddress string `bson:"delegator_address"` ValidatorAddress string `bson:"validator_address"` Pubkey string `bson:"pubkey"` - Value Coin `bson:"value"` + Value model.Coin `bson:"value"` } func (doctx *DocTxMsgCreateValidator) GetType() string { @@ -187,6 +188,7 @@ func (doctx *DocTxMsgCreateValidator) BuildMsg(txMsg interface{}) { MaxRate: msg.Commission.MaxRate.String(), } doctx.Description = loadDescription(msg.Description) + doctx.Value = model.BuildDocCoin(msg.Value) } func (m *DocTxMsgCreateValidator) HandleTxMsg(v SdkMsg) MsgDocInfo { From afb339f3e5e5767f793c8c0c9e32cd9414463afb Mon Sep 17 00:00:00 2001 From: huangweichang Date: Tue, 8 Dec 2020 15:40:02 +0800 Subject: [PATCH 14/49] fix about validator tx msg parse of MinSelfDelegatione --- msgs/staking/stake.go | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/msgs/staking/stake.go b/msgs/staking/stake.go index a6f57f9..f9d5047 100644 --- a/msgs/staking/stake.go +++ b/msgs/staking/stake.go @@ -143,7 +143,9 @@ func (doctx *DocMsgEditValidator) BuildMsg(txMsg interface{}) { doctx.CommissionRate = commissionRate.String() } doctx.Description = loadDescription(msg.Description) - doctx.MinSelfDelegation = msg.MinSelfDelegation.String() + if msg.MinSelfDelegation != nil { + doctx.MinSelfDelegation = msg.MinSelfDelegation.String() + } } func (m *DocMsgEditValidator) HandleTxMsg(v SdkMsg) MsgDocInfo { From b0eb39bdddf0f7342ddb40e6dab534ea6bdf358c Mon Sep 17 00:00:00 2001 From: huangweichang Date: Thu, 10 Dec 2020 11:13:32 +0800 Subject: [PATCH 15/49] fix about proposal content --- block/parse_tx_test.go | 2 +- msgs/gov/gov.go | 13 ++++++------- 2 files changed, 7 insertions(+), 8 deletions(-) diff --git a/block/parse_tx_test.go b/block/parse_tx_test.go index 3a10c99..6c61ff4 100644 --- a/block/parse_tx_test.go +++ b/block/parse_tx_test.go @@ -24,7 +24,7 @@ func TestIris_Block_ParseIrisTx(t *testing.T) { { name: "test parse iris tx", args: args{ - b: 226, + b: 857, client: client, }, }, diff --git a/msgs/gov/gov.go b/msgs/gov/gov.go index 019cb8f..db2961b 100644 --- a/msgs/gov/gov.go +++ b/msgs/gov/gov.go @@ -1,7 +1,6 @@ package gov import ( - "encoding/json" "github.com/irisnet/rainbow-sync/model" . "github.com/irisnet/rainbow-sync/msgs" ) @@ -9,7 +8,7 @@ import ( type DocTxMsgSubmitProposal struct { Proposer string `bson:"proposer"` // Address of the proposer InitialDeposit []model.Coin `bson:"initial_deposit"` // Initial deposit paid by sender. Must be strictly positive. - Content string `bson:"content"` + Content interface{} `bson:"content"` } func (doctx *DocTxMsgSubmitProposal) GetType() string { @@ -18,8 +17,8 @@ func (doctx *DocTxMsgSubmitProposal) GetType() string { func (doctx *DocTxMsgSubmitProposal) BuildMsg(txMsg interface{}) { msg := txMsg.(*MsgSubmitProposal) - content, _ := json.Marshal(msg.Content) - doctx.Content = string(content) + + doctx.Content = msg.GetContent() doctx.Proposer = msg.Proposer doctx.InitialDeposit = model.BuildDocCoins(msg.InitialDeposit) } @@ -28,11 +27,11 @@ func (m *DocTxMsgSubmitProposal) HandleTxMsg(v SdkMsg) MsgDocInfo { var ( addrs []string - msg MsgSubmitProposal + //msg MsgSubmitProposal ) - ConvertMsg(v, &msg) - addrs = append(addrs, msg.Proposer) + //ConvertMsg(v, &msg) + //addrs = append(addrs, msg.Proposer) handler := func() (Msg, []string) { return m, addrs } From 642c43ef836164a8bfc72471210b28675246487e Mon Sep 17 00:00:00 2001 From: huangweichang Date: Thu, 10 Dec 2020 14:58:40 +0800 Subject: [PATCH 16/49] close retry warning log output --- block/parse_tx.go | 17 ++++++++--------- 1 file changed, 8 insertions(+), 9 deletions(-) diff --git a/block/parse_tx.go b/block/parse_tx.go index fbff1ed..5a183dc 100644 --- a/block/parse_tx.go +++ b/block/parse_tx.go @@ -102,8 +102,7 @@ func ParseTxs(b int64, client *pool.Client) ([]*model.Tx, error) { ctx := context.Background() resblock, err := client.Block(ctx, &b) if err != nil { - logger.Warn("get block result err, now try again", logger.String("err", err.Error()), - logger.Any("height", b)) + time.Sleep(500 * time.Millisecond) // there is possible parse block fail when in iterator var err2 error client2 := pool.GetClient() @@ -127,10 +126,9 @@ func ParseTxs(b int64, client *pool.Client) ([]*model.Tx, error) { func ParseTx(txBytes types.Tx, block *types.Block, client *pool.Client) model.Tx { var ( - docTxMsgs []model.DocTxMsg - methodName = "ParseTx" - docTx model.Tx - actualFee *model.ActualFee + docTxMsgs []model.DocTxMsg + docTx model.Tx + actualFee *model.ActualFee ) Tx, err := cdc.GetTxDecoder()(txBytes) if err != nil { @@ -146,14 +144,15 @@ func ParseTx(txBytes types.Tx, block *types.Block, client *pool.Client) model.Tx ctx := context.Background() res, err := client.Tx(ctx, txBytes.Hash(), false) if err != nil { - logger.Warn("QueryTxResult have error, now try again", logger.String("err", err.Error())) - time.Sleep(time.Duration(1) * time.Second) + time.Sleep(500 * time.Millisecond) var err1 error client2 := pool.GetClient() res, err1 = client2.Tx(ctx, txBytes.Hash(), false) client2.Release() if err1 != nil { - logger.Error("get txResult err", logger.String("method", methodName), logger.String("err", err1.Error())) + logger.Error("get txResult err", + logger.String("txHash", txHash), + logger.String("err", err1.Error())) return docTx } } From 6c1c23c46bd7e13e01284863ee7833d4a00cc936 Mon Sep 17 00:00:00 2001 From: huangweichang Date: Mon, 11 Jan 2021 12:07:17 +0800 Subject: [PATCH 17/49] add params and upgrade appmodule and refactor proposal content --- lib/cdc/cdc.go | 4 +++ msgs/gov/gov.go | 33 +++++++++++++++++++++++- msgs/gov/proposal.go | 60 ++++++++++++++++++++++++++++++++++++++++++++ msgs/types.go | 1 + 4 files changed, 97 insertions(+), 1 deletion(-) create mode 100644 msgs/gov/proposal.go diff --git a/lib/cdc/cdc.go b/lib/cdc/cdc.go index 9882b3f..9faf3bf 100644 --- a/lib/cdc/cdc.go +++ b/lib/cdc/cdc.go @@ -14,8 +14,10 @@ import ( "github.com/cosmos/cosmos-sdk/x/distribution" "github.com/cosmos/cosmos-sdk/x/evidence" "github.com/cosmos/cosmos-sdk/x/gov" + sdkparams "github.com/cosmos/cosmos-sdk/x/params" "github.com/cosmos/cosmos-sdk/x/slashing" "github.com/cosmos/cosmos-sdk/x/staking" + "github.com/cosmos/cosmos-sdk/x/upgrade" "github.com/irisnet/irismod/modules/coinswap" "github.com/irisnet/irismod/modules/htlc" "github.com/irisnet/irismod/modules/nft" @@ -36,6 +38,8 @@ var ( record.AppModuleBasic{}, token.AppModuleBasic{}, gov.AppModuleBasic{}, + sdkparams.AppModuleBasic{}, + upgrade.AppModuleBasic{}, staking.AppModuleBasic{}, distribution.AppModuleBasic{}, slashing.AppModuleBasic{}, diff --git a/msgs/gov/gov.go b/msgs/gov/gov.go index db2961b..72fbf67 100644 --- a/msgs/gov/gov.go +++ b/msgs/gov/gov.go @@ -3,6 +3,7 @@ package gov import ( "github.com/irisnet/rainbow-sync/model" . "github.com/irisnet/rainbow-sync/msgs" + "github.com/irisnet/rainbow-sync/utils" ) type DocTxMsgSubmitProposal struct { @@ -18,11 +19,41 @@ func (doctx *DocTxMsgSubmitProposal) GetType() string { func (doctx *DocTxMsgSubmitProposal) BuildMsg(txMsg interface{}) { msg := txMsg.(*MsgSubmitProposal) - doctx.Content = msg.GetContent() + doctx.Content = CovertContent(msg.GetContent()) doctx.Proposer = msg.Proposer doctx.InitialDeposit = model.BuildDocCoins(msg.InitialDeposit) } +func CovertContent(content GovContent) interface{} { + switch content.ProposalType() { + case ProposalTypeCancelSoftwareUpgrade: + var data ContentCancelSoftwareUpgradeProposal + utils.UnMarshalJsonIgnoreErr(utils.MarshalJsonIgnoreErr(content), &data) + return data + case ProposalTypeSoftwareUpgrade: + var data ContentSoftwareUpgradeProposal + utils.UnMarshalJsonIgnoreErr(utils.MarshalJsonIgnoreErr(content), &data) + return data + case ProposalTypeCommunityPoolSpend: + var data ContentCommunityPoolSpendProposal + utils.UnMarshalJsonIgnoreErr(utils.MarshalJsonIgnoreErr(content), &data) + return data + case ProposalTypeClientUpdate: + var data ContentClientUpdateProposal + utils.UnMarshalJsonIgnoreErr(utils.MarshalJsonIgnoreErr(content), &data) + return data + case ProposalTypeText: + var data ContentTextProposal + utils.UnMarshalJsonIgnoreErr(utils.MarshalJsonIgnoreErr(content), &data) + return data + case ProposalTypeParameterChange: + var data ContentParameterChangeProposal + utils.UnMarshalJsonIgnoreErr(utils.MarshalJsonIgnoreErr(content), &data) + return data + } + return content +} + func (m *DocTxMsgSubmitProposal) HandleTxMsg(v SdkMsg) MsgDocInfo { var ( diff --git a/msgs/gov/proposal.go b/msgs/gov/proposal.go new file mode 100644 index 0000000..268520a --- /dev/null +++ b/msgs/gov/proposal.go @@ -0,0 +1,60 @@ +package gov + +import ( + "github.com/irisnet/rainbow-sync/model" + "time" +) + +const ( + ProposalTypeSoftwareUpgrade = "SoftwareUpgrade" + ProposalTypeCancelSoftwareUpgrade = "CancelSoftwareUpgrade" + ProposalTypeParameterChange = "ParameterChange" + ProposalTypeCommunityPoolSpend = "CommunityPoolSpend" + ProposalTypeText = "Text" + ProposalTypeClientUpdate = "ClientUpdate" +) + +type ( + ContentTextProposal struct { + Title string `json:"title" bson:"title"` + Description string `json:"description" bson:"description"` + } + ContentParameterChangeProposal struct { + Title string `json:"title" bson:"title"` + Description string `json:"description" bson:"description"` + Changes []ParamChange `json:"changes" bson:"changes"` + } + ParamChange struct { + Subspace string `json:"subspace" bson:"subspace"` + Key string `json:"key" bson:"key"` + Value string `json:"value" bson:"value"` + } + ContentCommunityPoolSpendProposal struct { + Title string `json:"title" bson:"title"` + Description string `json:"description" bson:"description"` + Recipient string `json:"recipient" bson:"recipient"` + Amount []model.Coin `json:"amount" bson:"amount"` + } + ContentSoftwareUpgradeProposal struct { + Title string `json:"title" bson:"title"` + Description string `json:"description" bson:"description"` + Plan Plan `json:"plan" bson:"plan"` + } + Plan struct { + Name string `json:"name" bson:"name"` + Time time.Time `json:"time" bson:"time"` + Height int64 `json:"height" bson:"height"` + Info string `json:"info" bson:"info"` + UpgradedClientState string `json:"upgraded_client_state" bson:"upgraded_client_state"` + } + ContentCancelSoftwareUpgradeProposal struct { + Title string `json:"title" bson:"title"` + Description string `json:"description" bson:"description"` + } + ContentClientUpdateProposal struct { + Title string `json:"title" bson:"title"` + Description string `json:"description" bson:"description"` + ClientId string `json:"client_id" bson:"client_id"` + Header string `json:"header" bson:"header"` + } +) diff --git a/msgs/types.go b/msgs/types.go index 0873fea..8f9fbad 100644 --- a/msgs/types.go +++ b/msgs/types.go @@ -158,6 +158,7 @@ type ( MsgVote = gov.MsgVote Proposal = gov.Proposal SdkVote = gov.Vote + GovContent = gov.Content MsgSwapOrder = coinswap.MsgSwapOrder MsgAddLiquidity = coinswap.MsgAddLiquidity From 3828c85c77967f411d01c6165fee50a82caed783 Mon Sep 17 00:00:00 2001 From: huangweichang Date: Mon, 11 Jan 2021 19:53:04 +0800 Subject: [PATCH 18/49] add txmsg save --- block/parse_tx.go | 82 +++++++++--- block/parse_tx_test.go | 2 +- cron/cron_task.go | 29 +++- go.mod | 13 +- go.sum | 125 ++++++++++++------ lib/cdc/cdc.go | 4 + model/tx.go | 13 +- model/tx_msg.go | 60 +++++++++ model/types.go | 1 + msgs/coinswap/coinswap.go | 14 +- msgs/gov/gov.go | 7 +- msgs/htlc/htlc.go | 21 ++- msgs/ibc/client_create.go | 2 +- msgs/ibc/ibc_transfer.go | 2 +- msgs/ibc/recv_packet.go | 18 +-- msgs/nft/issue_denom.go | 4 +- msgs/nft/nft_burn.go | 6 +- msgs/nft/nft_edit.go | 6 +- msgs/nft/nft_mint.go | 8 +- msgs/nft/nft_transfer.go | 8 +- msgs/record/record_create.go | 4 +- msgs/service/service_bind.go | 6 +- msgs/service/service_def.go | 4 +- msgs/service/service_disable_bind.go | 6 +- msgs/service/service_enable_bind.go | 6 +- msgs/service/service_kill_request_context.go | 7 +- msgs/service/service_pause_request_context.go | 7 +- msgs/service/service_refund_deposit.go | 6 +- msgs/service/service_request.go | 17 +-- msgs/service/service_response.go | 9 +- msgs/service/service_set_withdraw_address.go | 6 +- msgs/service/service_start_request_context.go | 7 +- msgs/service/service_update_bind.go | 6 +- .../service/service_update_request_context.go | 18 +-- msgs/service/service_withdraw_earn_fee.go | 6 +- msgs/staking/stake.go | 6 +- msgs/token/edit_token.go | 4 +- msgs/token/issue_token.go | 4 +- msgs/token/mint_token.go | 6 +- msgs/token/transfer_tokenowner.go | 6 +- task/execute.go | 4 +- 41 files changed, 368 insertions(+), 202 deletions(-) create mode 100644 model/tx_msg.go diff --git a/block/parse_tx.go b/block/parse_tx.go index 5a183dc..f6d842b 100644 --- a/block/parse_tx.go +++ b/block/parse_tx.go @@ -18,7 +18,7 @@ import ( "time" ) -func SaveDocsWithTxn(blockDoc *model.Block, irisTxs []*model.Tx, taskDoc model.SyncTask) error { +func SaveDocsWithTxn(blockDoc *model.Block, irisTxs []*model.Tx, irisMsgs []model.TxMsg, taskDoc model.SyncTask) error { var ( ops, irisTxsOps []txn.Op ) @@ -33,7 +33,7 @@ func SaveDocsWithTxn(blockDoc *model.Block, irisTxs []*model.Tx, taskDoc model.S Insert: blockDoc, } - length_txs := len(irisTxs) + length_txs := len(irisTxs) + len(irisMsgs) if length_txs > 0 { irisTxsOps = make([]txn.Op, 0, length_txs) for _, v := range irisTxs { @@ -44,6 +44,15 @@ func SaveDocsWithTxn(blockDoc *model.Block, irisTxs []*model.Tx, taskDoc model.S } irisTxsOps = append(irisTxsOps, op) } + + for _, v := range irisMsgs { + op := txn.Op{ + C: model.CollectionNameIrisTxMsg, + Id: bson.NewObjectId(), + Insert: v, + } + irisTxsOps = append(irisTxsOps, op) + } } updateOp := txn.Op{ @@ -72,7 +81,7 @@ func SaveDocsWithTxn(blockDoc *model.Block, irisTxs []*model.Tx, taskDoc model.S return nil } -func ParseBlock(b int64, client *pool.Client) (resBlock *model.Block, resTxs []*model.Tx, resErr error) { +func ParseBlock(b int64, client *pool.Client) (resBlock *model.Block, resTxs []*model.Tx, resTxMsgs []model.TxMsg, resErr error) { defer func() { if err := recover(); err != nil { @@ -87,18 +96,19 @@ func ParseBlock(b int64, client *pool.Client) (resBlock *model.Block, resTxs []* CreateTime: time.Now().Unix(), } - txs, err := ParseTxs(b, client) + txs, msgs, err := ParseTxs(b, client) if err != nil { resErr = err return } resTxs = txs + resTxMsgs = msgs return } -func ParseTxs(b int64, client *pool.Client) ([]*model.Tx, error) { +func ParseTxs(b int64, client *pool.Client) ([]*model.Tx, []model.TxMsg, error) { ctx := context.Background() resblock, err := client.Block(ctx, &b) if err != nil { @@ -109,23 +119,26 @@ func ParseTxs(b int64, client *pool.Client) ([]*model.Tx, error) { resblock, err2 = client2.Block(ctx, &b) client2.Release() if err2 != nil { - return nil, err2 + return nil, nil, err2 } } txs := make([]*model.Tx, 0, len(resblock.Block.Txs)) + var docMsgs []model.TxMsg for _, tx := range resblock.Block.Txs { - tx := ParseTx(tx, resblock.Block, client) + tx, msgs := ParseTx(tx, resblock.Block, client) if tx.Height > 0 { txs = append(txs, &tx) + docMsgs = append(docMsgs, msgs...) } } - return txs, nil + return txs, docMsgs, nil } // parse iris tx from iris block result tx -func ParseTx(txBytes types.Tx, block *types.Block, client *pool.Client) model.Tx { +func ParseTx(txBytes types.Tx, block *types.Block, client *pool.Client) (model.Tx, []model.TxMsg) { var ( + docMsgs []model.TxMsg docTxMsgs []model.DocTxMsg docTx model.Tx actualFee *model.ActualFee @@ -134,7 +147,7 @@ func ParseTx(txBytes types.Tx, block *types.Block, client *pool.Client) model.Tx if err != nil { logger.Error("TxDecoder have error", logger.String("err", err.Error()), logger.Int64("height", block.Height)) - return docTx + return docTx, docMsgs } authTx := Tx.(signing.Tx) fee := BuildFee(authTx.GetFee(), authTx.GetGas()) @@ -153,7 +166,7 @@ func ParseTx(txBytes types.Tx, block *types.Block, client *pool.Client) model.Tx logger.Error("get txResult err", logger.String("txHash", txHash), logger.String("err", err1.Error())) - return docTx + return docTx, docMsgs } } @@ -184,12 +197,16 @@ func ParseTx(txBytes types.Tx, block *types.Block, client *pool.Client) model.Tx } docTx.Events = parseEvents(res.TxResult.Events) + eventsIndexMap := make(map[int]model.MsgEvent) + if res.TxResult.Code == 0 { + eventsIndexMap = splitEvents(res.TxResult.Log) + } msgs := authTx.GetMsgs() if len(msgs) == 0 { - return docTx + return docTx, docMsgs } - for _, v := range msgs { + for i, v := range msgs { msgDocInfo := HandleTxMsg(v) if len(msgDocInfo.Addrs) == 0 { continue @@ -199,6 +216,27 @@ func ParseTx(txBytes types.Tx, block *types.Block, client *pool.Client) model.Tx docTx.Addrs = append(docTx.Addrs, removeDuplicatesFromSlice(msgDocInfo.Addrs)...) docTxMsgs = append(docTxMsgs, msgDocInfo.DocTxMsg) docTx.Types = append(docTx.Types, msgDocInfo.DocTxMsg.Type) + + docMsg := model.TxMsg{ + Height: docTx.Height, + TxHash: docTx.TxHash, + Type: msgDocInfo.DocTxMsg.Type, + MsgIndex: i, + TxIndex: res.Index, + Status: docTx.Status, + TxMemo: memo, + TxLog: docTx.Log, + GasUsed: gasUsed, + GasWanted: res.TxResult.GasWanted, + } + docMsg.Msg = msgDocInfo.DocTxMsg + if val, ok := eventsIndexMap[i]; ok { + docMsg.Events = val.Events + } + docMsg.Addrs = removeDuplicatesFromSlice(msgDocInfo.Addrs) + docMsg.Signers = removeDuplicatesFromSlice(msgDocInfo.Signers) + docMsgs = append(docMsgs, docMsg) + } docTx.Addrs = removeDuplicatesFromSlice(docTx.Addrs) docTx.Types = removeDuplicatesFromSlice(docTx.Types) @@ -207,10 +245,10 @@ func ParseTx(txBytes types.Tx, block *types.Block, client *pool.Client) model.Tx // don't save txs which have not parsed if docTx.TxHash == "" { - return model.Tx{} + return model.Tx{}, docMsgs } - return docTx + return docTx, docMsgs } @@ -243,3 +281,17 @@ func parseEvents(events []aTypes.Event) []model.Event { return eventDocs } + +func splitEvents(log string) map[int]model.MsgEvent { + var eventDocs []model.MsgEvent + if log != "" { + utils.UnMarshalJsonIgnoreErr(log, &eventDocs) + + } + + msgIndexMap := make(map[int]model.MsgEvent, len(eventDocs)) + for _, val := range eventDocs { + msgIndexMap[val.MsgIndex] = val + } + return msgIndexMap +} diff --git a/block/parse_tx_test.go b/block/parse_tx_test.go index 6c61ff4..801f063 100644 --- a/block/parse_tx_test.go +++ b/block/parse_tx_test.go @@ -31,7 +31,7 @@ func TestIris_Block_ParseIrisTx(t *testing.T) { } for _, tt := range tests { t.Run(tt.name, func(t *testing.T) { - res, err := ParseTxs(tt.args.b, tt.args.client) + res, _, err := ParseTxs(tt.args.b, tt.args.client) if err != nil { t.Fatal(err) } diff --git a/cron/cron_task.go b/cron/cron_task.go index 9958461..09585fa 100644 --- a/cron/cron_task.go +++ b/cron/cron_task.go @@ -93,19 +93,22 @@ func doWork(iristxs []model.Tx) { }() for _, val := range iristxs { - txs, err := ParseUnknownTxs(val.Height, client) + txs, msgs, err := ParseUnknownTxs(val.Height, client) if err != nil { continue } if err := UpdateUnknowTxs(txs); err != nil { logger.Warn("UpdateUnknowTxs have error", logger.String("error", err.Error())) } + if err := UpdateUnknowMsgs(msgs); err != nil { + logger.Warn("UpdateUnknowMsgs have error", logger.String("error", err.Error())) + } } } -func ParseUnknownTxs(height int64, client *pool.Client) (resTxs []*model.Tx, err error) { - resTxs, err = block.ParseTxs(height, client) +func ParseUnknownTxs(height int64, client *pool.Client) (resTxs []*model.Tx, txMsgs []model.TxMsg, err error) { + resTxs, txMsgs, err = block.ParseTxs(height, client) if err != nil { logger.Error("Parse block txs fail", logger.Int64("block", height), logger.String("err", err.Error())) @@ -133,3 +136,23 @@ func UpdateUnknowTxs(iristx []*model.Tx) error { return nil } +func UpdateUnknowMsgs(iristx []model.TxMsg) error { + + update_fn := func(txmsg *model.TxMsg) error { + fn := func(c *mgo.Collection) error { + return c.Update(bson.M{"tx_hash": txmsg.TxHash, "msg_index": txmsg.MsgIndex}, + bson.M{"$set": bson.M{"status": txmsg.Status, "events": txmsg.Events}}) + } + + if err := db.ExecCollection(model.CollectionNameIrisTxMsg, fn); err != nil { + return err + } + return nil + } + + for _, dbval := range iristx { + update_fn(&dbval) + } + + return nil +} diff --git a/go.mod b/go.mod index 9a9d9a9..4779434 100644 --- a/go.mod +++ b/go.mod @@ -3,18 +3,15 @@ module github.com/irisnet/rainbow-sync go 1.14 require ( - github.com/cosmos/cosmos-sdk v0.40.0-rc0 - github.com/irisnet/irismod v1.1.1-0.20201015064111-9d21ec6ad6fc + github.com/cosmos/cosmos-sdk v0.40.0 + github.com/irisnet/irismod v1.1.1-0.20210110094232-8d48f9a795f4 github.com/jolestar/go-commons-pool v2.0.0+incompatible - github.com/tendermint/tendermint v0.34.0-rc4.0.20201005135527-d7d0ffea13c6 + github.com/tendermint/tendermint v0.34.1 go.uber.org/zap v1.13.0 - golang.org/x/net v0.0.0-20200813134508-3edf25e44fcc + golang.org/x/net v0.0.0-20200930145003-4acb6c075d10 gopkg.in/mgo.v2 v2.0.0-20190816093944-a6b53ec6cb22 gopkg.in/natefinch/lumberjack.v2 v2.0.0 gopkg.in/tomb.v2 v2.0.0-20161208151619-d5d1b5820637 // indirect ) -replace ( - github.com/cosmos/cosmos-sdk => github.com/irisnet/cosmos-sdk v0.34.4-0.20201014023301-f172e47973d0 - github.com/gogo/protobuf => github.com/regen-network/protobuf v1.3.2-alpha.regen.4 -) +replace github.com/gogo/protobuf => github.com/regen-network/protobuf v1.3.2-alpha.regen.4 diff --git a/go.sum b/go.sum index 22c0769..73eb803 100644 --- a/go.sum +++ b/go.sum @@ -19,8 +19,9 @@ github.com/BurntSushi/xgb v0.0.0-20160522181843-27f122750802/go.mod h1:IVnqGOEym github.com/ChainSafe/go-schnorrkel v0.0.0-20200405005733-88cbf1b4c40d h1:nalkkPQcITbvhmL4+C4cKA87NW0tfm3Kl9VXRoPywFg= github.com/ChainSafe/go-schnorrkel v0.0.0-20200405005733-88cbf1b4c40d/go.mod h1:URdX5+vg25ts3aCh8H5IFZybJYKWhJHYMTnf+ULtoC4= github.com/DataDog/datadog-go v3.2.0+incompatible/go.mod h1:LButxg5PwREeZtORoXG3tL4fMGNddJ+vMq1mwgfaqoQ= -github.com/DataDog/zstd v1.4.1 h1:3oxKN3wbHibqx897utPC2LTQU4J+IHWWJO+glkAkpFM= github.com/DataDog/zstd v1.4.1/go.mod h1:1jcaCB/ufaK+sKp1NBhlGmpz41jOoPQ35bpF36t7BBo= +github.com/DataDog/zstd v1.4.5 h1:EndNeuB0l9syBZhut0wns3gV1hL8zX8LIu6ZiVHWLIQ= +github.com/DataDog/zstd v1.4.5/go.mod h1:1jcaCB/ufaK+sKp1NBhlGmpz41jOoPQ35bpF36t7BBo= github.com/Knetic/govaluate v3.0.1-0.20171022003610-9aa49832a739+incompatible/go.mod h1:r7JcOSlj0wfOMncg0iLm8Leh48TZaKVeNIfJntJ2wa0= github.com/OneOfOne/xxhash v1.2.2/go.mod h1:HSdplMjZKSmBqAxg5vPj2TmRDmfkzw+cTzAElWljhcU= github.com/Shopify/sarama v1.19.0/go.mod h1:FVkBWblsNy7DGZRfXLU0O9RCGt5g3g3yEuWXgklEdEo= @@ -40,8 +41,8 @@ github.com/apache/thrift v0.13.0/go.mod h1:cp2SuWMxlEZw2r+iP2GNCdIi4C1qmUzdZFSVb github.com/armon/circbuf v0.0.0-20150827004946-bbbad097214e/go.mod h1:3U/XgcO3hCbHZ8TKRvWD2dDTCfh9M9ya+I9JpbB7O8o= github.com/armon/consul-api v0.0.0-20180202201655-eb2c6b5be1b6/go.mod h1:grANhF5doyWs3UAsr3K4I6qtAmlQcZDesFNEHPZAzj8= github.com/armon/go-metrics v0.0.0-20180917152333-f0300d1749da/go.mod h1:Q73ZrmVTwzkszR9V5SSuryQ31EELlFMUz1kKyl939pY= -github.com/armon/go-metrics v0.3.4 h1:Xqf+7f2Vhl9tsqDYmXhnXInUdcrtgpRNpIA15/uldSc= -github.com/armon/go-metrics v0.3.4/go.mod h1:4O98XIr/9W0sxpJ8UaYkvjk10Iff7SnFrb4QAOwNTFc= +github.com/armon/go-metrics v0.3.5 h1:uq4txK6NAUvLQ60rotN+K+JuTnf3XP4TdQmcs9ma5mk= +github.com/armon/go-metrics v0.3.5/go.mod h1:4O98XIr/9W0sxpJ8UaYkvjk10Iff7SnFrb4QAOwNTFc= github.com/armon/go-radix v0.0.0-20180808171621-7fddfc383310/go.mod h1:ufUuZ+zHj4x4TnLV4JWEpy2hxWSpsRywHrMgIH9cCH8= github.com/aryann/difflib v0.0.0-20170710044230-e206f873d14a/go.mod h1:DAHtR1m6lCRdSC2Tm3DSWRPvIPr6xNKyeHdqDQSQT+A= github.com/aws/aws-lambda-go v1.13.3/go.mod h1:4UKl9IzQMoD+QF79YdCuzCwp8VbmG4VAQwij/eHl5CU= @@ -83,8 +84,9 @@ github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDk github.com/cncf/udpa/go v0.0.0-20191209042840-269d4d468f6f/go.mod h1:M8M6+tZqaGXZJjfX53e64911xZQV5JYwmTeXPW+k8Sc= github.com/cockroachdb/datadriven v0.0.0-20190809214429-80d97fb3cbaa/go.mod h1:zn76sxSg3SzpJ0PPJaLDCu+Bu0Lg3sKTORVIj19EIF8= github.com/codahale/hdrhistogram v0.0.0-20161010025455-3a0bb77429bd/go.mod h1:sE/e/2PUdi/liOCUjSTXgM1o87ZssimdTWN964YiIeI= -github.com/confio/ics23/go v0.0.0-20200817220745-f173e6211efb h1:+7FsS1gZ1Km5LRjGV2hztpier/5i6ngNjvNpxbWP5I0= github.com/confio/ics23/go v0.0.0-20200817220745-f173e6211efb/go.mod h1:E45NqnlpxGnpfTWL/xauN7MRwEE28T4Dd4uraToOaKg= +github.com/confio/ics23/go v0.6.3 h1:PuGK2V1NJWZ8sSkNDq91jgT/cahFEW9RGp4Y5jxulf0= +github.com/confio/ics23/go v0.6.3/go.mod h1:E45NqnlpxGnpfTWL/xauN7MRwEE28T4Dd4uraToOaKg= github.com/coreos/bbolt v1.3.2/go.mod h1:iRUV2dpdMOn7Bo10OQBFzIJO9kkE559Wcmn+qkEiiKk= github.com/coreos/etcd v3.3.10+incompatible/go.mod h1:uF7uidLiAD3TWHmW31ZFd/JWoc32PjwdhPthX9715RE= github.com/coreos/etcd v3.3.13+incompatible/go.mod h1:uF7uidLiAD3TWHmW31ZFd/JWoc32PjwdhPthX9715RE= @@ -95,10 +97,15 @@ github.com/coreos/go-systemd v0.0.0-20180511133405-39ca1b05acc7/go.mod h1:F5haX7 github.com/coreos/go-systemd v0.0.0-20190321100706-95778dfbb74e/go.mod h1:F5haX7vjVVG0kc13fIWeqUViNPyEJxv/OmvnBo0Yme4= github.com/coreos/pkg v0.0.0-20160727233714-3ac0863d7acf/go.mod h1:E3G3o1h8I7cfcXa63jLwjI0eiQQMgzzUDFVpN/nH/eA= github.com/coreos/pkg v0.0.0-20180928190104-399ea9e2e55f/go.mod h1:E3G3o1h8I7cfcXa63jLwjI0eiQQMgzzUDFVpN/nH/eA= -github.com/cosmos/go-bip39 v0.0.0-20180819234021-555e2067c45d h1:49RLWk1j44Xu4fjHb6JFYmeUnDORVwHNkDxaQ0ctCVU= +github.com/cosmos/cosmos-sdk v0.40.0 h1:nMPdGr5lly9HOENghgr5IRx2QDieqAncHKCSsCdEJSU= +github.com/cosmos/cosmos-sdk v0.40.0/go.mod h1:MMEVnorMyci71WQopgvFmfz2SrDCdWgq5lBjpVclFrg= github.com/cosmos/go-bip39 v0.0.0-20180819234021-555e2067c45d/go.mod h1:tSxLoYXyBmiFeKpvmq4dzayMdCjCnu8uqmCysIGBT2Y= -github.com/cosmos/iavl v0.15.0-rc3 h1:rSm60IFfDCD9qDfvXKEmaJhcv0rB5uCbVlBDKsynxqw= -github.com/cosmos/iavl v0.15.0-rc3/go.mod h1:rQ2zK/LuivThMjve3Yr6VkjvCqCXl+fgHCY7quiUA68= +github.com/cosmos/go-bip39 v1.0.0 h1:pcomnQdrdH22njcAatO0yWojsUnCO3y2tNoV1cb6hHY= +github.com/cosmos/go-bip39 v1.0.0/go.mod h1:RNJv0H/pOIVgxw6KS7QeX2a0Uo0aKUlfhZ4xuwvCdJw= +github.com/cosmos/iavl v0.15.0-rc3.0.20201009144442-230e9bdf52cd/go.mod h1:3xOIaNNX19p0QrX0VqWa6voPRoJRGGYtny+DH8NEPvE= +github.com/cosmos/iavl v0.15.0-rc5/go.mod h1:WqoPL9yPTQ85QBMT45OOUzPxG/U/JcJoN7uMjgxke/I= +github.com/cosmos/iavl v0.15.3 h1:xE9r6HW8GeKeoYJN4zefpljZ1oukVScP/7M8oj6SUts= +github.com/cosmos/iavl v0.15.3/go.mod h1:OLjQiAQ4fGD2KDZooyJG9yz+p2ao2IAYSbke8mVvSA4= github.com/cosmos/ledger-cosmos-go v0.11.1 h1:9JIYsGnXP613pb2vPjFeMMjBI5lEDsEaF6oYorTy6J4= github.com/cosmos/ledger-cosmos-go v0.11.1/go.mod h1:J8//BsAGTo3OC/vDLjMRFLW6q0WAaXvHnVc7ZmE8iUY= github.com/cosmos/ledger-go v0.9.2 h1:Nnao/dLwaVTk1Q5U9THldpUMMXU94BOTWPddSmVB6pI= @@ -114,15 +121,16 @@ github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSs github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/decred/dcrd/lru v1.0.0/go.mod h1:mxKOwFd7lFjN2GZYsiz/ecgqR6kkYAl+0pz0tEMk218= -github.com/dgraph-io/badger/v2 v2.0.3/go.mod h1:3KY8+bsP8wI0OEnQJAKpd4wIJW/Mm32yw2j/9FUVnIM= -github.com/dgraph-io/badger/v2 v2.2007.1 h1:t36VcBCpo4SsmAD5M8wVv1ieVzcALyGfaJ92z4ccULM= github.com/dgraph-io/badger/v2 v2.2007.1/go.mod h1:26P/7fbL4kUZVEVKLAKXkBXKOydDmM2p1e+NhhnBCAE= -github.com/dgraph-io/ristretto v0.0.2-0.20200115201040-8f368f2f2ab3/go.mod h1:KPxhHT9ZxKefz+PCeOGsrHpl1qZ7i70dGTu2u+Ahh6E= -github.com/dgraph-io/ristretto v0.0.3-0.20200630154024-f66de99634de h1:t0UHb5vdojIDUqktM6+xJAfScFBsVpXZmqC9dsgJmeA= +github.com/dgraph-io/badger/v2 v2.2007.2 h1:EjjK0KqwaFMlPin1ajhP943VPENHJdEz1KLIegjaI3k= +github.com/dgraph-io/badger/v2 v2.2007.2/go.mod h1:26P/7fbL4kUZVEVKLAKXkBXKOydDmM2p1e+NhhnBCAE= github.com/dgraph-io/ristretto v0.0.3-0.20200630154024-f66de99634de/go.mod h1:KPxhHT9ZxKefz+PCeOGsrHpl1qZ7i70dGTu2u+Ahh6E= +github.com/dgraph-io/ristretto v0.0.3 h1:jh22xisGBjrEVnRZ1DVTpBVQm0Xndu8sMl0CWDzSIBI= +github.com/dgraph-io/ristretto v0.0.3/go.mod h1:KPxhHT9ZxKefz+PCeOGsrHpl1qZ7i70dGTu2u+Ahh6E= github.com/dgrijalva/jwt-go v3.2.0+incompatible/go.mod h1:E3ru+11k8xSBh+hMPgOLZmtrrCbhqsmaPHjLKYnJCaQ= -github.com/dgryski/go-farm v0.0.0-20190423205320-6a90982ecee2 h1:tdlZCpZ/P9DhczCTSixgIKmwPv6+wP5DGjqLYw5SUiA= github.com/dgryski/go-farm v0.0.0-20190423205320-6a90982ecee2/go.mod h1:SqUrOPUnsFjfmXRMNPybcSiG0BgUW2AuFH8PAnS2iTw= +github.com/dgryski/go-farm v0.0.0-20200201041132-a6ae2369ad13 h1:fAjc9m62+UWV/WAFKLNi6ZS0675eEUC9y3AlwSbQu1Y= +github.com/dgryski/go-farm v0.0.0-20200201041132-a6ae2369ad13/go.mod h1:SqUrOPUnsFjfmXRMNPybcSiG0BgUW2AuFH8PAnS2iTw= github.com/dgryski/go-sip13 v0.0.0-20181026042036-e10d5fee7954/go.mod h1:vAd38F8PWV+bWy6jNmig1y/TA+kYO4g3RSRF0IAv0no= github.com/dustin/go-humanize v0.0.0-20171111073723-bb3d318650d4/go.mod h1:HtrtbFcZ19U5GC7JDqmcUSB87Iq5E25KnS6fMYU6eOk= github.com/dustin/go-humanize v1.0.0 h1:VSnTsYCnlFHaM2/igO1h6X3HA71jcobQuxemgkq4zYo= @@ -188,11 +196,13 @@ github.com/golang/protobuf v1.4.0-rc.2/go.mod h1:LlEzMj4AhA7rCAGe4KMBDvJI+AwstrU github.com/golang/protobuf v1.4.0-rc.4.0.20200313231945-b860323f09d0/go.mod h1:WU3c8KckQ9AFe+yFwt9sWVRKCVIyN9cPHBJSNnbL67w= github.com/golang/protobuf v1.4.0/go.mod h1:jodUvKwWbYaEsadDk5Fwe5c77LiNKVO9IDvqG2KuDX0= github.com/golang/protobuf v1.4.1/go.mod h1:U8fpvMrcmy5pZrNK1lt4xCsGvpyWQ/VVv6QDs8UjoX8= -github.com/golang/protobuf v1.4.2 h1:+Z5KGCizgyZCbGh1KZqA0fcLLkwbsjIzS4aV2v7wJX0= github.com/golang/protobuf v1.4.2/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI= +github.com/golang/protobuf v1.4.3 h1:JjCZWpVbqXDqFVmTfYWEVTMIYrL/NPdPSCHPJ0T/raM= +github.com/golang/protobuf v1.4.3/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI= github.com/golang/snappy v0.0.0-20180518054509-2e65f85255db/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= -github.com/golang/snappy v0.0.1 h1:Qgr9rKW7uDUkrbSmQeiDsGa8SjGyCOGtuasMWwvp2P4= github.com/golang/snappy v0.0.1/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= +github.com/golang/snappy v0.0.2 h1:aeE13tS0IiQgFjYdoL8qN3K1N2bXXtI6Vi51/y7BpMw= +github.com/golang/snappy v0.0.2/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= github.com/google/btree v0.0.0-20180813153112-4030bb1f1f0c/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= github.com/google/btree v1.0.0 h1:0udJVsspx3VBr5FwtLhQQtuAsVc79tTq0ocGIPAU6qo= github.com/google/btree v1.0.0/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= @@ -208,6 +218,7 @@ github.com/google/pprof v0.0.0-20181206194817-3ea8567a2e57/go.mod h1:zfwlbNMJ+OI github.com/google/pprof v0.0.0-20190515194954-54271f7e092f/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc= github.com/google/renameio v0.1.0/go.mod h1:KWCgfxg9yswjAJkECMjeO8J8rahYeXnNhOm40UhjYkI= github.com/google/uuid v1.0.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= +github.com/google/uuid v1.1.2/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/googleapis/gax-go/v2 v2.0.4/go.mod h1:0Wqv26UfaUD9n4G6kQubkQ+KchISgw+vpHVxEJEs9eg= github.com/googleapis/gax-go/v2 v2.0.5/go.mod h1:DWXyrwAJ9X0FpwwEdw+IPEYBICEFu5mhpdKc/us6bOk= github.com/gopherjs/gopherjs v0.0.0-20181017120253-0766667cb4d1/go.mod h1:wJfORRmW1u3UXTncJ5qlYoELFm8eSnnEO6hX4iZ3EWY= @@ -224,13 +235,15 @@ github.com/gorilla/websocket v1.4.2/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/ad github.com/grpc-ecosystem/go-grpc-middleware v1.0.0/go.mod h1:FiyG127CGDf3tlThmgyCl78X/SZQqEOJBCDaAfeWzPs= github.com/grpc-ecosystem/go-grpc-middleware v1.0.1-0.20190118093823-f849b5445de4/go.mod h1:FiyG127CGDf3tlThmgyCl78X/SZQqEOJBCDaAfeWzPs= github.com/grpc-ecosystem/go-grpc-middleware v1.2.1/go.mod h1:EaizFBKfUKtMIF5iaDEhniwNedqGo9FuLFzppDr3uwI= +github.com/grpc-ecosystem/go-grpc-middleware v1.2.2 h1:FlFbCRLd5Jr4iYXZufAvgWN6Ao0JrI5chLINnUXDDr0= +github.com/grpc-ecosystem/go-grpc-middleware v1.2.2/go.mod h1:EaizFBKfUKtMIF5iaDEhniwNedqGo9FuLFzppDr3uwI= github.com/grpc-ecosystem/go-grpc-prometheus v1.2.0/go.mod h1:8NvIoxWQoOIhqOTXgfV/d3M/q6VIi02HzZEHgUlZvzk= github.com/grpc-ecosystem/grpc-gateway v1.8.5/go.mod h1:vNeuVxBJEsws4ogUvrchl83t/GYV9WGTSLVdBhOQFDY= github.com/grpc-ecosystem/grpc-gateway v1.9.0/go.mod h1:vNeuVxBJEsws4ogUvrchl83t/GYV9WGTSLVdBhOQFDY= github.com/grpc-ecosystem/grpc-gateway v1.9.5/go.mod h1:vNeuVxBJEsws4ogUvrchl83t/GYV9WGTSLVdBhOQFDY= github.com/grpc-ecosystem/grpc-gateway v1.14.7/go.mod h1:oYZKL012gGh6LMyg/xA7Q2yq6j8bu0wa+9w14EEthWU= -github.com/grpc-ecosystem/grpc-gateway v1.15.0 h1:ntPNC9TD/6l2XDenJZe6T5lSMg95thpV9sGAqHX4WU8= -github.com/grpc-ecosystem/grpc-gateway v1.15.0/go.mod h1:vO11I9oWA+KsxmfFQPhLnnIb1VDE24M+pdxZFiuZcA8= +github.com/grpc-ecosystem/grpc-gateway v1.16.0 h1:gmcG1KaJ57LophUzW0Hy8NmPhnMZb4M0+kPpLofRdBo= +github.com/grpc-ecosystem/grpc-gateway v1.16.0/go.mod h1:BDjrQk3hbvj6Nolgz8mAMFbcEtjT1g+wF4CSlocrBnw= github.com/gsterjov/go-libsecret v0.0.0-20161001094733-a6f4afe4910c h1:6rhixN/i8ZofjG1Y75iExal34USq5p+wiN1tpie8IrU= github.com/gsterjov/go-libsecret v0.0.0-20161001094733-a6f4afe4910c/go.mod h1:NMPJylDgVpX0MLRlPy15sqSwOFv/U1GZ2m21JhFfek0= github.com/gtank/merlin v0.1.1-0.20191105220539-8318aed1a79f/go.mod h1:T86dnYJhcGOh5BjZFCJWTDeTK7XW8uE+E21Cy/bIQ+s= @@ -272,10 +285,8 @@ github.com/hudl/fargo v1.3.0/go.mod h1:y3CKSmjA+wD2gak7sUSXTAoopbhU08POFhmITJgmK github.com/inconshreveable/mousetrap v1.0.0 h1:Z8tu5sraLXCXIcARxBp/8cbvlwVa7Z1NHg9XEKhtSvM= github.com/inconshreveable/mousetrap v1.0.0/go.mod h1:PxqpIevigyE2G7u3NXJIT2ANytuPF1OarO4DADm73n8= github.com/influxdata/influxdb1-client v0.0.0-20191209144304-8bf82d3c094d/go.mod h1:qj24IKcXYK6Iy9ceXlo3Tc+vtHo9lIhSX5JddghvEPo= -github.com/irisnet/cosmos-sdk v0.34.4-0.20201014023301-f172e47973d0 h1:ZQg12Ecw6rTKNTPmdlA1eOCaq/Q1QEngMBAWr9BO6wA= -github.com/irisnet/cosmos-sdk v0.34.4-0.20201014023301-f172e47973d0/go.mod h1:YZcO00Tq/qqj4ncsfn+PobyTelsot7wEMGPpxEbEAT0= -github.com/irisnet/irismod v1.1.1-0.20201015064111-9d21ec6ad6fc h1:T8ywu5KqVJVynF5A2+RVd3Rx8P5aSaqSjjMBjdBGY4A= -github.com/irisnet/irismod v1.1.1-0.20201015064111-9d21ec6ad6fc/go.mod h1:op0aGNvficnObLs9tYTW9LGiznDpTrfNBpIqfoeFDvM= +github.com/irisnet/irismod v1.1.1-0.20210110094232-8d48f9a795f4 h1:yATUgeN/8GE4TJC37Z1xibj0hh2wHgD1qgGclA8udTQ= +github.com/irisnet/irismod v1.1.1-0.20210110094232-8d48f9a795f4/go.mod h1:j7coXR8hg12Jp6B9MlvrnYdjoPGf8vTV/GIyZeL8x9I= github.com/jessevdk/go-flags v0.0.0-20141203071132-1679536dcc89/go.mod h1:4FA24M0QyGHXBuZZK/XkWh8h0e1EYbRYJSGM75WSRxI= github.com/jessevdk/go-flags v1.4.0/go.mod h1:4FA24M0QyGHXBuZZK/XkWh8h0e1EYbRYJSGM75WSRxI= github.com/jmespath/go-jmespath v0.0.0-20180206201540-c2b33e8439af/go.mod h1:Nht3zPeWKUH0NzdCt2Blrr5ys8VGpn0CEB0cQHVjt7k= @@ -303,6 +314,7 @@ github.com/kkdai/bstream v0.0.0-20161212061736-f391b8402d23/go.mod h1:J+Gs4SYgM6 github.com/kkdai/bstream v1.0.0/go.mod h1:FDnDOHt5Yx4p3FaHcioFT0QjDOtgUpvjeZqAs+NVZZA= github.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= github.com/konsorten/go-windows-terminal-sequences v1.0.3/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= +github.com/kr/fs v0.1.0/go.mod h1:FFnZGqtBN9Gxj7eW1uZ42v5BccTP0vu6NEaFoC2HwRg= github.com/kr/logfmt v0.0.0-20140226030751-b84e30acd515/go.mod h1:+0opPa2QZZtGFBFZlji/RkVcI2GknAs/DXo4wKdlNEc= github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo= github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= @@ -327,7 +339,6 @@ github.com/matttproud/golang_protobuf_extensions v1.0.1/go.mod h1:D8He9yQNgCq6Z5 github.com/miekg/dns v1.0.14/go.mod h1:W1PPwlIAgtquWBMBEV9nkV9Cazfe8ScdGz/Lj7v3Nrg= github.com/mimoo/StrobeGo v0.0.0-20181016162300-f8f6d4d2b643 h1:hLDRPB66XQT/8+wG9WsDpiCvZf1yKO7sz7scAjSlBa0= github.com/mimoo/StrobeGo v0.0.0-20181016162300-f8f6d4d2b643/go.mod h1:43+3pMjjKimDBf5Kr4ZFNGbLql1zKkbImw+fZbw3geM= -github.com/minio/highwayhash v1.0.0/go.mod h1:xQboMTeM9nY9v/LlAOxFctujiv5+Aq2hR5dxBpaMbdc= github.com/minio/highwayhash v1.0.1/go.mod h1:BQskDq+xkJ12lmlUUi7U0M5Swg3EWR+dLTk+kldvVxY= github.com/mitchellh/cli v1.0.0/go.mod h1:hNIlj7HEI86fIcpObd7a0FcrxTWetlwJDGcceTlRvqc= github.com/mitchellh/go-homedir v1.0.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0= @@ -377,11 +388,11 @@ github.com/openzipkin-contrib/zipkin-go-opentracing v0.4.5/go.mod h1:/wsWhb9smxS github.com/openzipkin/zipkin-go v0.1.6/go.mod h1:QgAqvLzwWbR/WpD4A3cGpPtJrZXNIiJc5AZX7/PBEpw= github.com/openzipkin/zipkin-go v0.2.1/go.mod h1:NaW6tEwdmWMaCDZzg8sh+IBNOxHMPnhQw8ySjnjRyN4= github.com/openzipkin/zipkin-go v0.2.2/go.mod h1:NaW6tEwdmWMaCDZzg8sh+IBNOxHMPnhQw8ySjnjRyN4= -github.com/otiai10/copy v1.2.0/go.mod h1:rrF5dJ5F0t/EWSYODDu4j9/vEeYHMkc8jt0zJChqQWw= +github.com/otiai10/copy v1.4.2/go.mod h1:XWfuS3CrI0R6IE0FbgHsEazaXO8G0LpMp9o8tos0x4E= github.com/otiai10/curr v0.0.0-20150429015615-9b4961190c95/go.mod h1:9qAhocn7zKJG+0mI8eUu6xqkFDYS2kb2saOteoSB3cE= github.com/otiai10/curr v1.0.0/go.mod h1:LskTG5wDwr8Rs+nNQ+1LlxRjAtTZZjtJW4rMXl6j4vs= github.com/otiai10/mint v1.3.0/go.mod h1:F5AjcsTsWUqX+Na9fpHb52P8pcRX2CI6A3ctIT91xUo= -github.com/otiai10/mint v1.3.1/go.mod h1:/yxELlJQ0ufhjUwhshSj+wFjZ78CnZ48/1wtmBH1OTc= +github.com/otiai10/mint v1.3.2/go.mod h1:/yxELlJQ0ufhjUwhshSj+wFjZ78CnZ48/1wtmBH1OTc= github.com/pact-foundation/pact-go v1.0.4/go.mod h1:uExwJY4kCzNPcHRj+hCR/HBbOOIwwtUjcrb0b5/5kLM= github.com/pascaldekloe/goe v0.0.0-20180627143212-57f6aae5913c/go.mod h1:lzWF7FIEvWOWxwDKqyGYQf6ZUaNfKdP144TG7ZOy1lc= github.com/pascaldekloe/goe v0.1.0/go.mod h1:lzWF7FIEvWOWxwDKqyGYQf6ZUaNfKdP144TG7ZOy1lc= @@ -399,6 +410,7 @@ github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINE github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4= github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/pkg/profile v1.2.1/go.mod h1:hJw3o1OdXxsrSjjVksARp5W95eeEaEfptyVZyv6JUPA= +github.com/pkg/sftp v1.10.1/go.mod h1:lYOWFsE0bwd1+KfKJaKeuokY15vzFx25BLbzYYoAxZI= github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= github.com/posener/complete v1.1.1/go.mod h1:em0nMJCgc9GFtwrmVmEMR/ZL6WyhyjMBndrE9hABlRI= @@ -408,8 +420,9 @@ github.com/prometheus/client_golang v0.9.3/go.mod h1:/TN21ttK/J9q6uSwhBd54HahCDf github.com/prometheus/client_golang v1.0.0/go.mod h1:db9x61etRT2tGnBNRi70OPL5FsnadC4Ky3P0J6CfImo= github.com/prometheus/client_golang v1.3.0/go.mod h1:hJaj2vgQTGQmVCsAACORcieXFeDPbaTKGT+JTgUa3og= github.com/prometheus/client_golang v1.4.0/go.mod h1:e9GMxYsXl05ICDXkRhurwBS4Q3OK1iX/F2sw+iXX5zU= -github.com/prometheus/client_golang v1.7.1 h1:NTGy1Ja9pByO+xAeH/qiWnLrKtr3hJPNjaVUwnjpdpA= github.com/prometheus/client_golang v1.7.1/go.mod h1:PY5Wy2awLA44sXw4AOSfFBetzPP4j5+D6mVACh+pe2M= +github.com/prometheus/client_golang v1.8.0 h1:zvJNkoCFAnYFNC24FV8nW4JdRJ3GIFcLbg65lL/JDcw= +github.com/prometheus/client_golang v1.8.0/go.mod h1:O9VU6huf47PktckDQfMTX0Y8tY0/7TSWwj+ITvv0TnM= github.com/prometheus/client_model v0.0.0-20180712105110-5c3871d89910/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo= github.com/prometheus/client_model v0.0.0-20190115171406-56726106282f/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo= github.com/prometheus/client_model v0.0.0-20190129233127-fd36f4220a90/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= @@ -424,15 +437,17 @@ github.com/prometheus/common v0.4.1/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y8 github.com/prometheus/common v0.7.0/go.mod h1:DjGbpBbp5NYNiECxcL/VnbXCCaQpKd3tt26CguLLsqA= github.com/prometheus/common v0.9.1/go.mod h1:yhUN8i9wzaXS3w1O07YhxHEBxD+W35wd8bs7vj7HSQ4= github.com/prometheus/common v0.10.0/go.mod h1:Tlit/dnDKsSWFlCLTWaA1cyBgKHSMdTB80sz/V91rCo= -github.com/prometheus/common v0.14.0 h1:RHRyE8UocrbjU+6UvRzwi6HjiDfxrrBU91TtbKzkGp4= github.com/prometheus/common v0.14.0/go.mod h1:U+gB1OBLb1lF3O42bTCL+FK18tX9Oar16Clt/msog/s= +github.com/prometheus/common v0.15.0 h1:4fgOnadei3EZvgRwxJ7RMpG1k1pOZth5Pc13tyspaKM= +github.com/prometheus/common v0.15.0/go.mod h1:U+gB1OBLb1lF3O42bTCL+FK18tX9Oar16Clt/msog/s= github.com/prometheus/procfs v0.0.0-20181005140218-185b4288413d/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= github.com/prometheus/procfs v0.0.0-20190117184657-bf6a532e95b1/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= github.com/prometheus/procfs v0.0.0-20190507164030-5867b95ac084/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA= github.com/prometheus/procfs v0.0.2/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA= github.com/prometheus/procfs v0.0.8/go.mod h1:7Qr8sr6344vo1JqZ6HhLceV9o3AJ1Ff+GxbHq6oeK9A= -github.com/prometheus/procfs v0.1.3 h1:F0+tqvhOksq22sc6iCHF5WGlWjdwj92p0udFh1VFBS8= github.com/prometheus/procfs v0.1.3/go.mod h1:lV6e/gmhEcM9IjHGsFOCxxuZ+z1YqCvr4OA4YeYWdaU= +github.com/prometheus/procfs v0.2.0 h1:wH4vA7pcjKuZzjF7lM8awk4fnuJO6idemZXoKnULUx4= +github.com/prometheus/procfs v0.2.0/go.mod h1:lV6e/gmhEcM9IjHGsFOCxxuZ+z1YqCvr4OA4YeYWdaU= github.com/prometheus/tsdb v0.7.1/go.mod h1:qhTCs0VvXwvX/y3TZrWD7rabWM+ijKTux40TwIPHuXU= github.com/rakyll/statik v0.1.7/go.mod h1:AlZONWzMtEnMs7W4e/1LURLiI49pIMmp6V9Unghqrcc= github.com/rcrowley/go-metrics v0.0.0-20181016184325-3113b8401b8a/go.mod h1:bCqnVzQkZxMG4s8nGwiZ5l3QUCyqpo9Y+/ZMZ9VjZe4= @@ -446,6 +461,8 @@ github.com/rogpeppe/fastuuid v0.0.0-20150106093220-6724a57986af/go.mod h1:XWv6So github.com/rogpeppe/fastuuid v1.2.0/go.mod h1:jVj6XXZzXRy/MSR5jhDC/2q6DgLz+nrA6LYCDYWNEvQ= github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4= github.com/rs/cors v1.7.0/go.mod h1:gFx+x8UowdsKA9AchylcLynDq+nNFfI8FkUZdN/jGCU= +github.com/rs/xid v1.2.1/go.mod h1:+uKXf+4Djp6Md1KODXJxgGQPKngRmWyn10oCKFzNHOQ= +github.com/rs/zerolog v1.20.0/go.mod h1:IzD0RJ65iWH0w97OQQebJEvTZYvsCUm9WVLWBQrJRjo= github.com/russross/blackfriday v1.5.2/go.mod h1:JO/DiYxRf+HjHt06OyowR9PTA263kcR/rfWxYHBV53g= github.com/russross/blackfriday/v2 v2.0.1/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= github.com/ryanuber/columnize v0.0.0-20160712163229-9b3edd62028f/go.mod h1:sm1tb6uqfes/u+d4ooFouqFdy9/2g9QGwK3SQygK0Ts= @@ -465,15 +482,16 @@ github.com/sony/gobreaker v0.4.1/go.mod h1:ZKptC7FHNvhBz7dN2LGjPVBz2sZJmc0/PkyDJ github.com/spaolacci/murmur3 v0.0.0-20180118202830-f09979ecbc72/go.mod h1:JwIasOWyU6f++ZhiEuf87xNszmSA2myDM2Kzu9HwQUA= github.com/spaolacci/murmur3 v1.1.0/go.mod h1:JwIasOWyU6f++ZhiEuf87xNszmSA2myDM2Kzu9HwQUA= github.com/spf13/afero v1.1.2/go.mod h1:j4pytiNVoe2o6bmDsKpLACNPDBIoEAkihy7loJ1B0CQ= -github.com/spf13/afero v1.2.2 h1:5jhuqJyZCZf2JRofRvN/nIFgIWNzPa3/Vz8mYylgbWc= -github.com/spf13/afero v1.2.2/go.mod h1:9ZxEEn6pIJ8Rxe320qSDBk6AsU0r9pR7Q4OcevTdifk= +github.com/spf13/afero v1.3.4 h1:8q6vk3hthlpb2SouZcnBVKboxWQWMDNF38bwholZrJc= +github.com/spf13/afero v1.3.4/go.mod h1:Ai8FlHk4v/PARR026UzYexafAt9roJ7LcLMAmO6Z93I= github.com/spf13/cast v1.3.0/go.mod h1:Qx5cxh0v+4UWYiBimWS+eyWzqEqokIECu5etghLkUJE= github.com/spf13/cast v1.3.1 h1:nFm6S0SMdyzrzcmThSipiEubIDy8WEXKNZ0UOgiRpng= github.com/spf13/cast v1.3.1/go.mod h1:Qx5cxh0v+4UWYiBimWS+eyWzqEqokIECu5etghLkUJE= github.com/spf13/cobra v0.0.3/go.mod h1:1l0Ry5zgKvJasoi3XT1TypsSe7PqH0Sj9dhYf7v3XqQ= github.com/spf13/cobra v0.0.5/go.mod h1:3K3wKZymM7VvHMDS9+Akkh4K60UwM26emMESw8tLCHU= -github.com/spf13/cobra v1.0.0 h1:6m/oheQuQ13N9ks4hubMG6BnvwOeaJrqSPLahSnczz8= github.com/spf13/cobra v1.0.0/go.mod h1:/6GTrnGXV9HjY+aR4k0oJ5tcvakLuG6EuKReYlHNrgE= +github.com/spf13/cobra v1.1.1 h1:KfztREH0tPxJJ+geloSLaAkaPkr4ki2Er5quFV1TDo4= +github.com/spf13/cobra v1.1.1/go.mod h1:WnodtKOvamDL/PwE2M4iKs8aMDBZ5Q5klgD3qfVJQMI= github.com/spf13/jwalterweatherman v1.0.0/go.mod h1:cQK4TGJAtQXfYWX+Ddv3mKDzgVb68N+wFjFa4jdeBTo= github.com/spf13/jwalterweatherman v1.1.0 h1:ue6voC5bR5F8YxI5S67j9i582FU4Qvo2bmqnqMYADFk= github.com/spf13/jwalterweatherman v1.1.0/go.mod h1:aNWZUN0dPAAO/Ljvb5BEdw96iTZ0EXowPYD95IqWIGo= @@ -483,6 +501,7 @@ github.com/spf13/pflag v1.0.5 h1:iy+VFUOCP1a+8yFto/drg2CJ5u0yRoB7fZw3DKv/JXA= github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= github.com/spf13/viper v1.3.2/go.mod h1:ZiWeW+zYFKm7srdB9IoDzzZXaJaI5eL9QjNiN/DMA2s= github.com/spf13/viper v1.4.0/go.mod h1:PTJ7Z/lr49W6bUbkmS1V3by4uWynFiR9p7+dSq/yZzE= +github.com/spf13/viper v1.7.0/go.mod h1:8WkrPz2fc9jxqZNCJI/76HCieCp4Q8HaLFoCha5qpdg= github.com/spf13/viper v1.7.1 h1:pM5oEahlgWv/WnHXpgbKz7iLIxRf65tye2Ci+XFK5sk= github.com/spf13/viper v1.7.1/go.mod h1:8WkrPz2fc9jxqZNCJI/76HCieCp4Q8HaLFoCha5qpdg= github.com/streadway/amqp v0.0.0-20190404075320-75d898a42a94/go.mod h1:AZpEONHx3DKn8O/DFsRAY58/XVQiIPMTMB1SddzLXVw= @@ -498,7 +517,6 @@ github.com/stretchr/testify v1.6.1 h1:hDPOHmpOpP40lSULcqw7IrRb/u7w6RpDC9399XyoNd github.com/stretchr/testify v1.6.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= github.com/subosito/gotenv v1.2.0 h1:Slr1R9HxAlEKefgq5jn9U+DnETlIUa6HfgEzj0g5d7s= github.com/subosito/gotenv v1.2.0/go.mod h1:N0PQaV/YGNqwC0u51sEeR/aUtSLEXKX9iv69rRypqCw= -github.com/syndtr/goleveldb v1.0.1-0.20190923125748-758128399b1d/go.mod h1:9OrXJhf154huy1nPWmuSrkgjPUtUNhA+Zmy+6AESzuA= github.com/syndtr/goleveldb v1.0.1-0.20200815110645-5c35d600f0ca h1:Ld/zXl5t4+D69SiV4JoN7kkfvJdOWlPpfxrzxpLMoUk= github.com/syndtr/goleveldb v1.0.1-0.20200815110645-5c35d600f0ca/go.mod h1:u2MKkTVTVJWe5D1rCvame8WqhBd88EuIwODJZ1VHCPM= github.com/tecbot/gorocksdb v0.0.0-20191217155057-f0fad39f321c h1:g+WoO5jjkqGAzHWCjJB1zZfXPIAaDpzXIEJ0eS6B5Ok= @@ -509,12 +527,15 @@ github.com/tendermint/crypto v0.0.0-20191022145703-50d29ede1e15 h1:hqAk8riJvK4RM github.com/tendermint/crypto v0.0.0-20191022145703-50d29ede1e15/go.mod h1:z4YtwM70uOnk8h0pjJYlj3zdYwi9l03By6iAIF5j/Pk= github.com/tendermint/go-amino v0.16.0 h1:GyhmgQKvqF82e2oZeuMSp9JTN0N09emoSZlb2lyGa2E= github.com/tendermint/go-amino v0.16.0/go.mod h1:TQU0M1i/ImAo+tYpZi73AU3V/dKeCoMC9Sphe2ZwGME= -github.com/tendermint/tendermint v0.34.0-rc3/go.mod h1:BoHcEpjfpBHc1Be7RQz3AHaXFNObcDG7SNHCev6Or4g= -github.com/tendermint/tendermint v0.34.0-rc4.0.20201005135527-d7d0ffea13c6 h1:gqZ0WDpDYgMm/iaiMEXvI1nt/GoWCuwtBomVpUMiAIs= -github.com/tendermint/tendermint v0.34.0-rc4.0.20201005135527-d7d0ffea13c6/go.mod h1:BSXqR6vWbOecet726v66qVwSkFDLfEeBrq+EhkKbij4= -github.com/tendermint/tm-db v0.6.1/go.mod h1:m3x9kRP4UFd7JODJL0yBAZqE7wTw+S37uAE90cTx7OA= -github.com/tendermint/tm-db v0.6.2 h1:DOn8jwCdjJblrCFJbtonEIPD1IuJWpbRUUdR8GWE4RM= +github.com/tendermint/tendermint v0.34.0-rc4/go.mod h1:yotsojf2C1QBOw4dZrTcxbyxmPUrT4hNuOQWX9XUwB4= +github.com/tendermint/tendermint v0.34.0-rc6/go.mod h1:ugzyZO5foutZImv0Iyx/gOFCX6mjJTgbLHTwi17VDVg= +github.com/tendermint/tendermint v0.34.0/go.mod h1:Aj3PIipBFSNO21r+Lq3TtzQ+uKESxkbA3yo/INM4QwQ= +github.com/tendermint/tendermint v0.34.1 h1:TsJXY8+1NThc/XIENMv1ENzazriHBJJjeP6hN3kpC8g= +github.com/tendermint/tendermint v0.34.1/go.mod h1:Aj3PIipBFSNO21r+Lq3TtzQ+uKESxkbA3yo/INM4QwQ= github.com/tendermint/tm-db v0.6.2/go.mod h1:GYtQ67SUvATOcoY8/+x6ylk8Qo02BQyLrAs+yAcLvGI= +github.com/tendermint/tm-db v0.6.3 h1:ZkhQcKnB8/2jr5EaZwGndN4owkPsGezW2fSisS9zGbg= +github.com/tendermint/tm-db v0.6.3/go.mod h1:lfA1dL9/Y/Y8wwyPp2NMLyn5P5Ptr/gvDFNWtrCWSf8= +github.com/tendermint/tmlibs v0.9.0/go.mod h1:4L0tAKpLTioy14VnmbXYTLIJN0pCMiehxDMdN6zZfM8= github.com/tidwall/gjson v1.6.0 h1:9VEQWz6LLMUsUl6PueE49ir4Ka6CzLymOAZDxpFsTDc= github.com/tidwall/gjson v1.6.0/go.mod h1:P256ACg0Mn+j1RXIDXoss50DeIABTYK1PULOJHhxOls= github.com/tidwall/match v1.0.1 h1:PnKP62LPNxHKTwvHHZZzdOAOCtsJTjo6dZLCwpKm5xc= @@ -568,15 +589,19 @@ golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACk golang.org/x/crypto v0.0.0-20190510104115-cbcb75029529/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20190605123033-f99c8df09eb5/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20190701094942-4def268fd1a4/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= +golang.org/x/crypto v0.0.0-20190820162420-60c769a6c586/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20191206172530-e9b2fee46413/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20200115085410-6d4e4cb37c7d/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= -golang.org/x/crypto v0.0.0-20200406173513-056763e48d71/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20200510223506-06a226fb4e37/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20200709230013-948cd5f35899/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= -golang.org/x/crypto v0.0.0-20200820211705-5c72a883971a h1:vclmkQCjlDX5OydZ9wv8rBCcS0QyQY66Mpf/7BZbInM= +golang.org/x/crypto v0.0.0-20200728195943-123391ffb6de/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20200820211705-5c72a883971a/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= +golang.org/x/crypto v0.0.0-20201016220609-9e8e0b390897/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= +golang.org/x/crypto v0.0.0-20201117144127-c1f2f97bffc9/go.mod h1:jdWPYTVW3xRLrWPugEBEK3UY2ZEsg3UU495nc5E+M+I= +golang.org/x/crypto v0.0.0-20201221181555-eec23a3978ad h1:DN0cp81fZ3njFcrLCytUHRSUkqBjfTo4Tx9RJTWs0EY= +golang.org/x/crypto v0.0.0-20201221181555-eec23a3978ad/go.mod h1:jdWPYTVW3xRLrWPugEBEK3UY2ZEsg3UU495nc5E+M+I= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190306152737-a1d7652674e8/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190510132918-efd6b22b2522/go.mod h1:ZjyILWgesfNpC6sMxTJOJm9Kp84zZh5NQWvqDGG3Qr8= @@ -624,8 +649,10 @@ golang.org/x/net v0.0.0-20200324143707-d3edc9973b7e/go.mod h1:qpuaurCH72eLCgpAm/ golang.org/x/net v0.0.0-20200421231249-e086a090c8fd/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= golang.org/x/net v0.0.0-20200520004742-59133d7f0dd7/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= golang.org/x/net v0.0.0-20200625001655-4c5254603344/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= -golang.org/x/net v0.0.0-20200813134508-3edf25e44fcc h1:zK/HqS5bZxDptfPJNq8v7vJfXtkU7r9TLIoSr1bXaP4= golang.org/x/net v0.0.0-20200813134508-3edf25e44fcc/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= +golang.org/x/net v0.0.0-20200822124328-c89045814202/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= +golang.org/x/net v0.0.0-20200930145003-4acb6c075d10 h1:YfxMZzv3PjGonQYNUaeU2+DhAdqOxerQ30JFB6WgAXo= +golang.org/x/net v0.0.0-20200930145003-4acb6c075d10/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= @@ -661,6 +688,7 @@ golang.org/x/sys v0.0.0-20190826190057-c7b8b68b1456/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20190904154756-749cb33beabd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191001151750-bb3f8db39f24/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191005200804-aed5e4c7ecf9/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20191026070338-33540a1f6037/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191120155948-bd437916bb0e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191220142924-d4481acd189f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200106162015-b016eb3dc98e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= @@ -672,8 +700,11 @@ golang.org/x/sys v0.0.0-20200420163511-1957bb5e6d1f/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20200519105757-fe76b779f299/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200615200032-f1bc736245b1/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200625212154-ddb9806d33ae/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200814200057-3d37ad5750ed h1:J22ig1FUekjjkmZUM7pTKixYm8DvrYsvrBZdunYeIuQ= golang.org/x/sys v0.0.0-20200814200057-3d37ad5750ed/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20201015000850-e3ed0017c211 h1:9UQO31fZ+0aKQOFldThf7BKPMJTiBfWycGh/u3UoO88= +golang.org/x/sys v0.0.0-20201015000850-e3ed0017c211/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/term v0.0.0-20201117132131-f5c789dd3221 h1:/ZHdbVpdR/jk3g30/d4yUL0JU9kksj8+F/bnQUVLGDM= +golang.org/x/term v0.0.0-20201117132131-f5c789dd3221/go.mod h1:Nr5EML6q2oocZ2LXRh80K7BxOlk5/8JxuGnuhpl+muw= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk= @@ -699,6 +730,7 @@ golang.org/x/tools v0.0.0-20190606124116-d0a3d012864b/go.mod h1:/rFqwRUd4F7ZHNgw golang.org/x/tools v0.0.0-20190621195816-6e04913cbbac/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= golang.org/x/tools v0.0.0-20190628153133-6cdbf07be9d0/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= golang.org/x/tools v0.0.0-20190816200558-6889da9d5479/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20190828213141-aed303cbaa74/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20190911174233-4f2ddba30aff/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191012152004-8de300cfc20a/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191029041327-9cc4af7d6b2c/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= @@ -739,8 +771,10 @@ google.golang.org/genproto v0.0.0-20200423170343-7949de9c1215/go.mod h1:55QSHmfG google.golang.org/genproto v0.0.0-20200513103714-09dca8ec2884/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= google.golang.org/genproto v0.0.0-20200526211855-cb27e3aa2013/go.mod h1:NbSheEEYHJ7i3ixzK3sjbqSGDJWnxyFXZblF3eUsNvo= google.golang.org/genproto v0.0.0-20200825200019-8632dd797987/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20200911024640-645f7a48b24f h1:Yv4xsIx7HZOoyUGSJ2ksDyWE2qIBXROsZKt2ny3hCGM= -google.golang.org/genproto v0.0.0-20200911024640-645f7a48b24f/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20201111145450-ac7456db90a6/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20201119123407-9b1e624d6bc4/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20201214200347-8c77b98c765d h1:HV9Z9qMhQEsdlvxNFELgQ11RkMzO3CMkjEySjCtuLes= +google.golang.org/genproto v0.0.0-20201214200347-8c77b98c765d/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/grpc v1.17.0/go.mod h1:6QZJwpn2B+Zp71q/5VxRsJ6NXXVCE5NRUHRo+f3cWCs= google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= google.golang.org/grpc v1.19.1/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= @@ -758,8 +792,10 @@ google.golang.org/grpc v1.28.0/go.mod h1:rpkK4SK4GF4Ach/+MFLZUBavHOvF2JJB5uozKKa google.golang.org/grpc v1.29.1/go.mod h1:itym6AZVZYACWQqET3MqgPpjcuV5QH3BxFS3IjizoKk= google.golang.org/grpc v1.31.0/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak= google.golang.org/grpc v1.31.1/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak= -google.golang.org/grpc v1.32.0 h1:zWTV+LMdc3kaiJMSTOFz2UgSBgx8RNQoTGiZu3fR9S0= google.golang.org/grpc v1.32.0/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak= +google.golang.org/grpc v1.33.1/go.mod h1:fr5YgcSWrqhRRxogOsw7RzIpsmvOZ6IcH4kBYTpR3n0= +google.golang.org/grpc v1.33.2 h1:EQyQC3sa8M+p6Ulc8yy9SWSS2GVwyRc83gAbG8lrl4o= +google.golang.org/grpc v1.33.2/go.mod h1:JMHMWHQWaTccqQQlmk3MJZS+GWXOdAesneDmEnv2fbc= google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8= google.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0= google.golang.org/protobuf v0.0.0-20200228230310-ab0ca4ff8a60/go.mod h1:cfTl7dwQJ+fmap5saPgwCLgHXTUD7jkjRqWcaiX5VyM= @@ -776,6 +812,7 @@ gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8 gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20200227125254-8fa46927fb4f/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/check.v1 v1.0.0-20200902074654-038fdea0a05b/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/cheggaaa/pb.v1 v1.0.25/go.mod h1:V/YB90LKu/1FcN3WVnfiiE5oMCibMjukxqG/qStrOgw= gopkg.in/errgo.v2 v2.1.0/go.mod h1:hNsd1EY+bozCKY1Ytp96fpM3vjJbqLJn88ws8XvfDNI= gopkg.in/fsnotify.v1 v1.4.7/go.mod h1:Tz8NjZHkW78fSQdbUxIjBTcgA1z1m8ZHf0WmKUhAMys= @@ -796,8 +833,10 @@ gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.2.3/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.2.4/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.2.5/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= -gopkg.in/yaml.v2 v2.3.0 h1:clyUAQHOM3G0M3f5vQj7LuJrETvjVot3Z5el9nffUtU= +gopkg.in/yaml.v2 v2.2.8/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.3.0/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +gopkg.in/yaml.v2 v2.4.0 h1:D8xgwECY7CYvx+Y2n4sBz93Jn9JRvxdiyyo8CTfuKaY= +gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ= gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c h1:dUUwHk2QECo/6vqA44rthZ8ie2QXMNeKRTHCNY2nXvo= gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= honnef.co/go/tools v0.0.0-20180728063816-88497007e858/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= diff --git a/lib/cdc/cdc.go b/lib/cdc/cdc.go index 9faf3bf..d9b6ac0 100644 --- a/lib/cdc/cdc.go +++ b/lib/cdc/cdc.go @@ -72,3 +72,7 @@ func init() { func GetTxDecoder() sdk.TxDecoder { return encodecfg.TxConfig.TxDecoder() } + +func GetMarshaler() codec.Marshaler { + return encodecfg.Marshaler +} diff --git a/model/tx.go b/model/tx.go index 61af505..d670e8c 100644 --- a/model/tx.go +++ b/model/tx.go @@ -27,13 +27,18 @@ type Tx struct { type ( Event struct { - Type string `bson:"type"` - Attributes []KvPair `bson:"attributes"` + Type string `bson:"type" json:"type"` + Attributes []KvPair `bson:"attributes" json:"attributes"` } KvPair struct { - Key string `bson:"key"` - Value string `bson:"value"` + Key string `bson:"key" json:"key"` + Value string `bson:"value" json:"value"` + } + + MsgEvent struct { + MsgIndex int `bson:"msg_index" json:"msg_index"` + Events []Event `bson:"events" json:"events"` } ) diff --git a/model/tx_msg.go b/model/tx_msg.go new file mode 100644 index 0000000..cf0c339 --- /dev/null +++ b/model/tx_msg.go @@ -0,0 +1,60 @@ +package model + +import ( + "github.com/irisnet/rainbow-sync/db" + "gopkg.in/mgo.v2" + "gopkg.in/mgo.v2/bson" +) + +type TxMsg struct { + Height int64 `bson:"height"` + TxHash string `bson:"tx_hash"` + Type string `bson:"type"` + MsgIndex int `bson:"msg_index"` + TxIndex uint32 `bson:"tx_index"` + Status string `bson:"status"` + TxMemo string `bson:"tx_memo"` + TxLog string `bson:"tx_log"` + GasUsed int64 `json:"gas_used"` + GasWanted int64 `json:"gas_wanted"` + Events []Event `bson:"events"` + Msg DocTxMsg `bson:"msg"` + Addrs []string `bson:"addrs"` + Signers []string `bson:"signers"` +} + +const ( + CollectionNameIrisTxMsg = "sync_iris_tx_msg" +) + +func (d TxMsg) Name() string { + return CollectionNameIrisTxMsg +} + +func (d TxMsg) PkKvPair() map[string]interface{} { + return bson.M{"tx_hash": d.TxHash, "msg_index": d.MsgIndex} +} + +func (d TxMsg) EnsureIndexes() { + var indexes []mgo.Index + indexes = append(indexes, + mgo.Index{ + Key: []string{"-height"}, + Background: true}, + mgo.Index{ + Key: []string{"-tx_hash", "-msg_index"}, + Unique: true, + Background: true}, + mgo.Index{ + Key: []string{"-type"}, + Background: true}, + mgo.Index{ + Key: []string{"-signers"}, + Background: true}, + mgo.Index{ + Key: []string{"-addrs"}, + Background: true}, + ) + + db.EnsureIndexes(d.Name(), indexes) +} diff --git a/model/types.go b/model/types.go index 99b6ffc..a63f60e 100644 --- a/model/types.go +++ b/model/types.go @@ -11,6 +11,7 @@ var ( SyncTaskModel, BlockModel, TxModel, + new(TxMsg), } ) diff --git a/msgs/coinswap/coinswap.go b/msgs/coinswap/coinswap.go index 4eb695d..be324e5 100644 --- a/msgs/coinswap/coinswap.go +++ b/msgs/coinswap/coinswap.go @@ -20,7 +20,7 @@ func (doctx *DocTxMsgAddLiquidity) GetType() string { func (doctx *DocTxMsgAddLiquidity) BuildMsg(txMsg interface{}) { msg := txMsg.(*MsgAddLiquidity) - doctx.Sender = msg.Sender.String() + doctx.Sender = msg.Sender doctx.MinLiquidity = msg.MinLiquidity.String() doctx.ExactIrisAmt = msg.ExactStandardAmt.String() doctx.Deadline = msg.Deadline @@ -35,7 +35,7 @@ func (m *DocTxMsgAddLiquidity) HandleTxMsg(v sdk.Msg) MsgDocInfo { ) ConvertMsg(v, &msg) - addrs = append(addrs, msg.Sender.String()) + addrs = append(addrs, msg.Sender) handler := func() (Msg, []string) { return m, addrs } @@ -57,7 +57,7 @@ func (doctx *DocTxMsgRemoveLiquidity) GetType() string { func (doctx *DocTxMsgRemoveLiquidity) BuildMsg(txMsg interface{}) { msg := txMsg.(*MsgRemoveLiquidity) - doctx.Sender = msg.Sender.String() + doctx.Sender = msg.Sender doctx.MinIrisAmt = msg.MinStandardAmt.String() doctx.MinToken = msg.MinToken.String() doctx.Deadline = msg.Deadline @@ -70,7 +70,7 @@ func (m *DocTxMsgRemoveLiquidity) HandleTxMsg(v sdk.Msg) MsgDocInfo { msg MsgRemoveLiquidity ) ConvertMsg(v, &msg) - addrs = append(addrs, msg.Sender.String()) + addrs = append(addrs, msg.Sender) handler := func() (Msg, []string) { return m, addrs } @@ -104,11 +104,11 @@ func (doctx *DocTxMsgSwapOrder) BuildMsg(txMsg interface{}) { doctx.Deadline = msg.Deadline doctx.IsBuyOrder = msg.IsBuyOrder doctx.Input = Input{ - Address: msg.Input.Address.String(), + Address: msg.Input.Address, Coin: model.BuildDocCoin(msg.Input.Coin), } doctx.Output = Output{ - Address: msg.Output.Address.String(), + Address: msg.Output.Address, Coin: model.BuildDocCoin(msg.Output.Coin), } } @@ -120,7 +120,7 @@ func (m *DocTxMsgSwapOrder) HandleTxMsg(v sdk.Msg) MsgDocInfo { ) ConvertMsg(v, &msg) - addrs = append(addrs, msg.Output.Address.String(), msg.Input.Address.String()) + addrs = append(addrs, msg.Output.Address, msg.Input.Address) handler := func() (Msg, []string) { return m, addrs } diff --git a/msgs/gov/gov.go b/msgs/gov/gov.go index 72fbf67..7706fd3 100644 --- a/msgs/gov/gov.go +++ b/msgs/gov/gov.go @@ -1,6 +1,7 @@ package gov import ( + "github.com/irisnet/rainbow-sync/lib/cdc" "github.com/irisnet/rainbow-sync/model" . "github.com/irisnet/rainbow-sync/msgs" "github.com/irisnet/rainbow-sync/utils" @@ -58,11 +59,11 @@ func (m *DocTxMsgSubmitProposal) HandleTxMsg(v SdkMsg) MsgDocInfo { var ( addrs []string - //msg MsgSubmitProposal + msg MsgSubmitProposal ) - //ConvertMsg(v, &msg) - //addrs = append(addrs, msg.Proposer) + data, _ := cdc.GetMarshaler().MarshalJSON(v) + cdc.GetMarshaler().UnmarshalJSON(data, &msg) handler := func() (Msg, []string) { return m, addrs } diff --git a/msgs/htlc/htlc.go b/msgs/htlc/htlc.go index b4181ce..908651e 100644 --- a/msgs/htlc/htlc.go +++ b/msgs/htlc/htlc.go @@ -1,7 +1,6 @@ package htlc import ( - "encoding/hex" sdk "github.com/cosmos/cosmos-sdk/types" "github.com/irisnet/rainbow-sync/model" . "github.com/irisnet/rainbow-sync/msgs" @@ -23,11 +22,11 @@ func (doctx *DocTxMsgCreateHTLC) GetType() string { func (doctx *DocTxMsgCreateHTLC) BuildMsg(txMsg interface{}) { msg := txMsg.(*MsgCreateHTLC) - doctx.Sender = msg.Sender.String() - doctx.To = msg.To.String() + doctx.Sender = msg.Sender + doctx.To = msg.To doctx.Amount = model.BuildDocCoins(msg.Amount) doctx.Timestamp = msg.Timestamp - doctx.HashLock = hex.EncodeToString(msg.HashLock) + doctx.HashLock = msg.HashLock doctx.TimeLock = msg.TimeLock doctx.ReceiverOnOtherChain = msg.ReceiverOnOtherChain } @@ -60,9 +59,9 @@ func (doctx *DocTxMsgClaimHTLC) GetType() string { func (doctx *DocTxMsgClaimHTLC) BuildMsg(txMsg interface{}) { msg := txMsg.(*MsgClaimHTLC) - doctx.Sender = msg.Sender.String() - doctx.Secret = hex.EncodeToString(msg.Secret) - doctx.HashLock = hex.EncodeToString(msg.HashLock) + doctx.Sender = msg.Sender + doctx.Secret = msg.Secret + doctx.HashLock = msg.HashLock } func (m *DocTxMsgClaimHTLC) HandleTxMsg(v sdk.Msg) MsgDocInfo { @@ -73,7 +72,7 @@ func (m *DocTxMsgClaimHTLC) HandleTxMsg(v sdk.Msg) MsgDocInfo { ) ConvertMsg(v, &msg) - addrs = append(addrs, msg.Sender.String()) + addrs = append(addrs, msg.Sender) handler := func() (Msg, []string) { return m, addrs } @@ -92,8 +91,8 @@ func (doctx *DocTxMsgRefundHTLC) GetType() string { func (doctx *DocTxMsgRefundHTLC) BuildMsg(txMsg interface{}) { msg := txMsg.(*MsgRefundHTLC) - doctx.Sender = msg.Sender.String() - doctx.HashLock = hex.EncodeToString(msg.HashLock) + doctx.Sender = msg.Sender + doctx.HashLock = msg.HashLock } func (m *DocTxMsgRefundHTLC) HandleTxMsg(v sdk.Msg) MsgDocInfo { @@ -104,7 +103,7 @@ func (m *DocTxMsgRefundHTLC) HandleTxMsg(v sdk.Msg) MsgDocInfo { ) ConvertMsg(v, &msg) - addrs = append(addrs, msg.Sender.String()) + addrs = append(addrs, msg.Sender) handler := func() (Msg, []string) { return m, addrs } diff --git a/msgs/ibc/client_create.go b/msgs/ibc/client_create.go index fd858f2..3825853 100644 --- a/msgs/ibc/client_create.go +++ b/msgs/ibc/client_create.go @@ -19,7 +19,7 @@ func (m *DocMsgCreateClient) GetType() string { func (m *DocMsgCreateClient) BuildMsg(v interface{}) { msg := v.(*MsgCreateClient) - m.ClientID = msg.ClientId + //m.ClientID = msg.ClientId m.Signer = msg.Signer if msg.ClientState != nil { m.ClientState = msg.ClientState.String() diff --git a/msgs/ibc/ibc_transfer.go b/msgs/ibc/ibc_transfer.go index 83bec03..3a7e371 100644 --- a/msgs/ibc/ibc_transfer.go +++ b/msgs/ibc/ibc_transfer.go @@ -35,7 +35,7 @@ func (m *DocMsgTransfer) BuildMsg(v interface{}) { m.SourceChannel = msg.SourceChannel m.Sender = msg.Sender m.Receiver = msg.Receiver - m.TimeoutHeight = Height{VersionNumber: msg.TimeoutHeight.VersionNumber, VersionHeight: msg.TimeoutHeight.VersionHeight} + m.TimeoutHeight = Height{RevisionNumber: msg.TimeoutHeight.RevisionNumber, RevisionHeight: msg.TimeoutHeight.RevisionHeight} m.TimeoutTimestamp = msg.TimeoutTimestamp } diff --git a/msgs/ibc/recv_packet.go b/msgs/ibc/recv_packet.go index 5807785..efdbf7f 100644 --- a/msgs/ibc/recv_packet.go +++ b/msgs/ibc/recv_packet.go @@ -6,17 +6,17 @@ import ( ) type DocMsgRecvPacket struct { - Packet Packet `bson:"packet"` - Proof string `bson:"proof"` - ProofHeight Height `bson:"proof_height"` - Signer string `bson:"signer"` + Packet Packet `bson:"packet"` + ProofCommitment string `bson:"proof_commitment"` + ProofHeight Height `bson:"proof_height"` + Signer string `bson:"signer"` } type Height struct { // the epoch that the client is currently on - VersionNumber uint64 `bson:"version_number"` + RevisionNumber uint64 `bson:"revision_number"` // the height within the given epoch - VersionHeight uint64 `bson:"version_height"` + RevisionHeight uint64 `bson:"revision_height"` } type Packet struct { @@ -47,8 +47,8 @@ func (m *DocMsgRecvPacket) GetType() string { func (m *DocMsgRecvPacket) BuildMsg(v interface{}) { msg := v.(*MsgRecvPacket) - m.Proof = string(msg.Proof) - m.ProofHeight = Height{VersionHeight: msg.ProofHeight.VersionHeight, VersionNumber: msg.ProofHeight.VersionNumber} + m.ProofCommitment = string(msg.ProofCommitment) + m.ProofHeight = Height{RevisionHeight: msg.ProofHeight.RevisionHeight, RevisionNumber: msg.ProofHeight.RevisionNumber} m.Signer = msg.Signer m.Packet = DecodeToIBCRecord(msg.Packet) @@ -61,7 +61,7 @@ func DecodeToIBCRecord(packet types.Packet) Packet { DestinationChannel: packet.DestinationChannel, DestinationPort: packet.DestinationPort, Data: string(packet.Data), - TimeoutHeight: Height{VersionHeight: packet.TimeoutHeight.VersionHeight, VersionNumber: packet.TimeoutHeight.VersionNumber}, + TimeoutHeight: Height{RevisionHeight: packet.TimeoutHeight.RevisionHeight, RevisionNumber: packet.TimeoutHeight.RevisionNumber}, TimeoutTimestamp: packet.TimeoutTimestamp, } } diff --git a/msgs/nft/issue_denom.go b/msgs/nft/issue_denom.go index c037663..897ffca 100644 --- a/msgs/nft/issue_denom.go +++ b/msgs/nft/issue_denom.go @@ -20,7 +20,7 @@ func (m *DocMsgIssueDenom) GetType() string { func (m *DocMsgIssueDenom) BuildMsg(v interface{}) { msg := v.(*MsgIssueDenom) - m.Sender = msg.Sender.String() + m.Sender = msg.Sender m.Schema = msg.Schema m.Id = strings.ToLower(msg.Id) m.Name = msg.Name @@ -33,7 +33,7 @@ func (m *DocMsgIssueDenom) HandleTxMsg(v SdkMsg) MsgDocInfo { ) utils.UnMarshalJsonIgnoreErr(utils.MarshalJsonIgnoreErr(v), &msg) - addrs = append(addrs, msg.Sender.String()) + addrs = append(addrs, msg.Sender) handler := func() (Msg, []string) { return m, addrs } diff --git a/msgs/nft/nft_burn.go b/msgs/nft/nft_burn.go index ea5c24a..eaf5d47 100644 --- a/msgs/nft/nft_burn.go +++ b/msgs/nft/nft_burn.go @@ -21,9 +21,9 @@ func (m *DocMsgNFTBurn) GetType() string { func (m *DocMsgNFTBurn) BuildMsg(v interface{}) { msg := v.(*MsgNFTBurn) - m.Sender = msg.Sender.String() + m.Sender = msg.Sender m.Id = strings.ToLower(msg.Id) - m.Denom = strings.ToLower(msg.Denom) + m.Denom = strings.ToLower(msg.DenomId) } func (m *DocMsgNFTBurn) HandleTxMsg(v SdkMsg) MsgDocInfo { @@ -33,7 +33,7 @@ func (m *DocMsgNFTBurn) HandleTxMsg(v SdkMsg) MsgDocInfo { ) utils.UnMarshalJsonIgnoreErr(utils.MarshalJsonIgnoreErr(v), &msg) - addrs = append(addrs, msg.Sender.String()) + addrs = append(addrs, msg.Sender) handler := func() (Msg, []string) { return m, addrs } diff --git a/msgs/nft/nft_edit.go b/msgs/nft/nft_edit.go index 9a7fcf5..574c31d 100644 --- a/msgs/nft/nft_edit.go +++ b/msgs/nft/nft_edit.go @@ -24,9 +24,9 @@ func (m *DocMsgNFTEdit) GetType() string { func (m *DocMsgNFTEdit) BuildMsg(v interface{}) { msg := v.(*MsgNFTEdit) - m.Sender = msg.Sender.String() + m.Sender = msg.Sender m.Id = strings.ToLower(msg.Id) - m.Denom = strings.ToLower(msg.Denom) + m.Denom = strings.ToLower(msg.DenomId) m.URI = msg.URI m.Data = msg.Data m.Name = msg.Name @@ -39,7 +39,7 @@ func (m *DocMsgNFTEdit) HandleTxMsg(v SdkMsg) MsgDocInfo { ) utils.UnMarshalJsonIgnoreErr(utils.MarshalJsonIgnoreErr(v), &msg) - addrs = append(addrs, msg.Sender.String()) + addrs = append(addrs, msg.Sender) handler := func() (Msg, []string) { return m, addrs } diff --git a/msgs/nft/nft_mint.go b/msgs/nft/nft_mint.go index 301947d..99b34ab 100644 --- a/msgs/nft/nft_mint.go +++ b/msgs/nft/nft_mint.go @@ -23,10 +23,10 @@ func (m *DocMsgNFTMint) GetType() string { func (m *DocMsgNFTMint) BuildMsg(v interface{}) { msg := v.(*MsgNFTMint) - m.Sender = msg.Sender.String() - m.Recipient = msg.Recipient.String() + m.Sender = msg.Sender + m.Recipient = msg.Recipient m.Id = strings.ToLower(msg.Id) - m.Denom = strings.ToLower(msg.Denom) + m.Denom = strings.ToLower(msg.DenomId) m.URI = msg.URI m.Data = msg.Data m.Name = msg.Name @@ -38,7 +38,7 @@ func (m *DocMsgNFTMint) HandleTxMsg(v SdkMsg) MsgDocInfo { msg MsgNFTMint ) utils.UnMarshalJsonIgnoreErr(utils.MarshalJsonIgnoreErr(v), &msg) - addrs = append(addrs, msg.Sender.String(), msg.Recipient.String()) + addrs = append(addrs, msg.Sender, msg.Recipient) handler := func() (Msg, []string) { return m, addrs } diff --git a/msgs/nft/nft_transfer.go b/msgs/nft/nft_transfer.go index eb13e42..7cbf2fc 100644 --- a/msgs/nft/nft_transfer.go +++ b/msgs/nft/nft_transfer.go @@ -25,10 +25,10 @@ func (m *DocMsgNFTTransfer) GetType() string { func (m *DocMsgNFTTransfer) BuildMsg(v interface{}) { msg := v.(*MsgNFTTransfer) - m.Sender = msg.Sender.String() - m.Recipient = msg.Recipient.String() + m.Sender = msg.Sender + m.Recipient = msg.Recipient m.Id = strings.ToLower(msg.Id) - m.Denom = strings.ToLower(msg.Denom) + m.Denom = strings.ToLower(msg.DenomId) m.URI = msg.URI m.Data = msg.Data m.Name = msg.Name @@ -41,7 +41,7 @@ func (m *DocMsgNFTTransfer) HandleTxMsg(v SdkMsg) MsgDocInfo { ) utils.UnMarshalJsonIgnoreErr(utils.MarshalJsonIgnoreErr(v), &msg) - addrs = append(addrs, msg.Sender.String(), msg.Recipient.String()) + addrs = append(addrs, msg.Sender, msg.Recipient) handler := func() (Msg, []string) { return m, addrs } diff --git a/msgs/record/record_create.go b/msgs/record/record_create.go index 0029df6..ce7dddc 100644 --- a/msgs/record/record_create.go +++ b/msgs/record/record_create.go @@ -39,7 +39,7 @@ func (d *DocMsgRecordCreate) BuildMsg(msg interface{}) { } d.Contents = docContents - d.Creator = m.Creator.String() + d.Creator = m.Creator } func (m *DocMsgRecordCreate) HandleTxMsg(v SdkMsg) MsgDocInfo { @@ -49,7 +49,7 @@ func (m *DocMsgRecordCreate) HandleTxMsg(v SdkMsg) MsgDocInfo { ) utils.UnMarshalJsonIgnoreErr(utils.MarshalJsonIgnoreErr(v), &msg) - addrs = append(addrs, msg.Creator.String()) + addrs = append(addrs, msg.Creator) handler := func() (Msg, []string) { return m, addrs } diff --git a/msgs/service/service_bind.go b/msgs/service/service_bind.go index 2c48931..5978daa 100644 --- a/msgs/service/service_bind.go +++ b/msgs/service/service_bind.go @@ -28,11 +28,11 @@ func (m *DocMsgBindService) BuildMsg(v interface{}) { coins = append(coins, &Coin{Denom: one.Denom, Amount: one.Amount.String()}) } m.ServiceName = msg.ServiceName - m.Provider = msg.Provider.String() + m.Provider = msg.Provider m.Deposit = coins m.Pricing = msg.Pricing m.QoS = msg.QoS - m.Owner = msg.Owner.String() + m.Owner = msg.Owner } func (m *DocMsgBindService) HandleTxMsg(v SdkMsg) MsgDocInfo { @@ -43,7 +43,7 @@ func (m *DocMsgBindService) HandleTxMsg(v SdkMsg) MsgDocInfo { utils.UnMarshalJsonIgnoreErr(utils.MarshalJsonIgnoreErr(v), &msg) - addrs = append(addrs, msg.Owner.String(), msg.Provider.String()) + addrs = append(addrs, msg.Owner, msg.Provider) handler := func() (Msg, []string) { return m, addrs } diff --git a/msgs/service/service_def.go b/msgs/service/service_def.go index d1264b3..84bf595 100644 --- a/msgs/service/service_def.go +++ b/msgs/service/service_def.go @@ -26,7 +26,7 @@ func (m *DocMsgDefineService) BuildMsg(v interface{}) { m.Name = msg.Name m.Description = msg.Description m.Tags = msg.Tags - m.Author = msg.Author.String() + m.Author = msg.Author m.AuthorDescription = msg.AuthorDescription m.Schemas = msg.Schemas } @@ -39,7 +39,7 @@ func (m *DocMsgDefineService) HandleTxMsg(v SdkMsg) MsgDocInfo { utils.UnMarshalJsonIgnoreErr(utils.MarshalJsonIgnoreErr(v), &msg) - addrs = append(addrs, msg.Author.String()) + addrs = append(addrs, msg.Author) handler := func() (Msg, []string) { return m, addrs } diff --git a/msgs/service/service_disable_bind.go b/msgs/service/service_disable_bind.go index df6a71b..110630c 100644 --- a/msgs/service/service_disable_bind.go +++ b/msgs/service/service_disable_bind.go @@ -21,8 +21,8 @@ func (m *DocMsgDisableServiceBinding) BuildMsg(v interface{}) { msg := v.(*MsgDisableServiceBinding) m.ServiceName = msg.ServiceName - m.Provider = msg.Provider.String() - m.Owner = msg.Owner.String() + m.Provider = msg.Provider + m.Owner = msg.Owner } func (m *DocMsgDisableServiceBinding) HandleTxMsg(v SdkMsg) MsgDocInfo { @@ -32,7 +32,7 @@ func (m *DocMsgDisableServiceBinding) HandleTxMsg(v SdkMsg) MsgDocInfo { ) utils.UnMarshalJsonIgnoreErr(utils.MarshalJsonIgnoreErr(v), &msg) - addrs = append(addrs, msg.Owner.String(), msg.Provider.String()) + addrs = append(addrs, msg.Owner, msg.Provider) handler := func() (Msg, []string) { return m, addrs } diff --git a/msgs/service/service_enable_bind.go b/msgs/service/service_enable_bind.go index c59b403..2ce7571 100644 --- a/msgs/service/service_enable_bind.go +++ b/msgs/service/service_enable_bind.go @@ -28,9 +28,9 @@ func (m *DocMsgEnableServiceBinding) BuildMsg(v interface{}) { } m.ServiceName = msg.ServiceName - m.Provider = msg.Provider.String() + m.Provider = msg.Provider m.Deposit = coins - m.Owner = msg.Owner.String() + m.Owner = msg.Owner } func (m *DocMsgEnableServiceBinding) HandleTxMsg(v SdkMsg) MsgDocInfo { @@ -40,7 +40,7 @@ func (m *DocMsgEnableServiceBinding) HandleTxMsg(v SdkMsg) MsgDocInfo { ) utils.UnMarshalJsonIgnoreErr(utils.MarshalJsonIgnoreErr(v), &msg) - addrs = append(addrs, msg.Owner.String(), msg.Provider.String()) + addrs = append(addrs, msg.Owner, msg.Provider) handler := func() (Msg, []string) { return m, addrs } diff --git a/msgs/service/service_kill_request_context.go b/msgs/service/service_kill_request_context.go index 01f761b..22a5a4a 100644 --- a/msgs/service/service_kill_request_context.go +++ b/msgs/service/service_kill_request_context.go @@ -1,7 +1,6 @@ package service import ( - "encoding/hex" . "github.com/irisnet/rainbow-sync/msgs" "github.com/irisnet/rainbow-sync/utils" "strings" @@ -21,8 +20,8 @@ func (m *DocMsgKillRequestContext) GetType() string { func (m *DocMsgKillRequestContext) BuildMsg(v interface{}) { msg := v.(*MsgKillRequestContext) - m.RequestContextId = strings.ToUpper(hex.EncodeToString(msg.RequestContextId)) - m.Consumer = msg.Consumer.String() + m.RequestContextId = strings.ToUpper(msg.RequestContextId) + m.Consumer = msg.Consumer } func (m *DocMsgKillRequestContext) HandleTxMsg(v SdkMsg) MsgDocInfo { @@ -32,7 +31,7 @@ func (m *DocMsgKillRequestContext) HandleTxMsg(v SdkMsg) MsgDocInfo { ) utils.UnMarshalJsonIgnoreErr(utils.MarshalJsonIgnoreErr(v), &msg) - addrs = append(addrs, msg.Consumer.String()) + addrs = append(addrs, msg.Consumer) handler := func() (Msg, []string) { return m, addrs } diff --git a/msgs/service/service_pause_request_context.go b/msgs/service/service_pause_request_context.go index 1453e6e..d37337b 100644 --- a/msgs/service/service_pause_request_context.go +++ b/msgs/service/service_pause_request_context.go @@ -1,7 +1,6 @@ package service import ( - "encoding/hex" . "github.com/irisnet/rainbow-sync/msgs" "github.com/irisnet/rainbow-sync/utils" "strings" @@ -21,8 +20,8 @@ func (m *DocMsgPauseRequestContext) GetType() string { func (m *DocMsgPauseRequestContext) BuildMsg(v interface{}) { msg := v.(*MsgPauseRequestContext) - m.RequestContextId = strings.ToUpper(hex.EncodeToString(msg.RequestContextId)) - m.Consumer = msg.Consumer.String() + m.RequestContextId = strings.ToUpper(msg.RequestContextId) + m.Consumer = msg.Consumer } func (m *DocMsgPauseRequestContext) HandleTxMsg(v SdkMsg) MsgDocInfo { @@ -32,7 +31,7 @@ func (m *DocMsgPauseRequestContext) HandleTxMsg(v SdkMsg) MsgDocInfo { ) utils.UnMarshalJsonIgnoreErr(utils.MarshalJsonIgnoreErr(v), &msg) - addrs = append(addrs, msg.Consumer.String()) + addrs = append(addrs, msg.Consumer) handler := func() (Msg, []string) { return m, addrs } diff --git a/msgs/service/service_refund_deposit.go b/msgs/service/service_refund_deposit.go index ef1b514..c792725 100644 --- a/msgs/service/service_refund_deposit.go +++ b/msgs/service/service_refund_deposit.go @@ -21,8 +21,8 @@ func (m *DocMsgRefundServiceDeposit) BuildMsg(v interface{}) { msg := v.(*MsgRefundServiceDeposit) m.ServiceName = msg.ServiceName - m.Provider = msg.Provider.String() - m.Owner = msg.Owner.String() + m.Provider = msg.Provider + m.Owner = msg.Owner } func (m *DocMsgRefundServiceDeposit) HandleTxMsg(v SdkMsg) MsgDocInfo { @@ -32,7 +32,7 @@ func (m *DocMsgRefundServiceDeposit) HandleTxMsg(v SdkMsg) MsgDocInfo { ) utils.UnMarshalJsonIgnoreErr(utils.MarshalJsonIgnoreErr(v), &msg) - addrs = append(addrs, msg.Owner.String(), msg.Provider.String()) + addrs = append(addrs, msg.Owner, msg.Provider) handler := func() (Msg, []string) { return m, addrs } diff --git a/msgs/service/service_request.go b/msgs/service/service_request.go index b0a9219..4f1135b 100644 --- a/msgs/service/service_request.go +++ b/msgs/service/service_request.go @@ -33,25 +33,18 @@ func (m *DocMsgCallService) BuildMsg(msg interface{}) { coins = append(coins, &model.Coin{Denom: one.Denom, Amount: one.Amount.String()}) } m.ServiceName = v.ServiceName - m.Providers = m.loadProviders(v) - m.Consumer = v.Consumer.String() + m.Providers = v.Providers + m.Consumer = v.Consumer m.Input = v.Input m.ServiceFeeCap = coins m.Timeout = v.Timeout - //m.Input = hex.EncodeToString(v.Input) + //m.Input = v.Input m.SuperMode = v.SuperMode m.Repeated = v.Repeated m.RepeatedFrequency = v.RepeatedFrequency m.RepeatedTotal = v.RepeatedTotal } -func (m *DocMsgCallService) loadProviders(v *MsgCallService) (ret []string) { - for _, one := range v.Providers { - ret = append(ret, one.String()) - } - return -} - func (m *DocMsgCallService) HandleTxMsg(v SdkMsg) MsgDocInfo { var ( addrs []string @@ -60,8 +53,8 @@ func (m *DocMsgCallService) HandleTxMsg(v SdkMsg) MsgDocInfo { utils.UnMarshalJsonIgnoreErr(utils.MarshalJsonIgnoreErr(v), &msg) - addrs = append(addrs, m.loadProviders(&msg)...) - addrs = append(addrs, msg.Consumer.String()) + addrs = append(addrs, msg.Providers...) + addrs = append(addrs, msg.Consumer) handler := func() (Msg, []string) { return m, addrs } diff --git a/msgs/service/service_response.go b/msgs/service/service_response.go index 3d89049..767ce58 100644 --- a/msgs/service/service_response.go +++ b/msgs/service/service_response.go @@ -1,7 +1,6 @@ package service import ( - "encoding/hex" . "github.com/irisnet/rainbow-sync/msgs" "github.com/irisnet/rainbow-sync/utils" ) @@ -22,9 +21,9 @@ func (m *DocMsgServiceResponse) GetType() string { func (m *DocMsgServiceResponse) BuildMsg(msg interface{}) { v := msg.(*MsgRespondService) - m.RequestId = hex.EncodeToString(v.RequestId) - m.Provider = v.Provider.String() - //m.Output = hex.EncodeToString(v.Output) + m.RequestId = v.RequestId + m.Provider = v.Provider + //m.Output = v.Output m.Output = v.Output m.Result = v.Result } @@ -37,7 +36,7 @@ func (m *DocMsgServiceResponse) HandleTxMsg(v SdkMsg) MsgDocInfo { utils.UnMarshalJsonIgnoreErr(utils.MarshalJsonIgnoreErr(v), &msg) - addrs = append(addrs, msg.Provider.String(), msg.Provider.String()) + addrs = append(addrs, msg.Provider) handler := func() (Msg, []string) { return m, addrs } diff --git a/msgs/service/service_set_withdraw_address.go b/msgs/service/service_set_withdraw_address.go index 63bb1df..f032f77 100644 --- a/msgs/service/service_set_withdraw_address.go +++ b/msgs/service/service_set_withdraw_address.go @@ -19,8 +19,8 @@ func (m *DocMsgSetWithdrawAddress) GetType() string { func (m *DocMsgSetWithdrawAddress) BuildMsg(v interface{}) { msg := v.(*MsgSetWithdrawAddress) - m.Owner = msg.Owner.String() - m.WithdrawAddress = msg.WithdrawAddress.String() + m.Owner = msg.Owner + m.WithdrawAddress = msg.WithdrawAddress } func (m *DocMsgSetWithdrawAddress) HandleTxMsg(v SdkMsg) MsgDocInfo { @@ -30,7 +30,7 @@ func (m *DocMsgSetWithdrawAddress) HandleTxMsg(v SdkMsg) MsgDocInfo { ) utils.UnMarshalJsonIgnoreErr(utils.MarshalJsonIgnoreErr(v), &msg) - addrs = append(addrs, msg.Owner.String(), msg.WithdrawAddress.String()) + addrs = append(addrs, msg.Owner, msg.WithdrawAddress) handler := func() (Msg, []string) { return m, addrs } diff --git a/msgs/service/service_start_request_context.go b/msgs/service/service_start_request_context.go index 879d663..bc83f4e 100644 --- a/msgs/service/service_start_request_context.go +++ b/msgs/service/service_start_request_context.go @@ -1,7 +1,6 @@ package service import ( - "encoding/hex" . "github.com/irisnet/rainbow-sync/msgs" "github.com/irisnet/rainbow-sync/utils" "strings" @@ -21,8 +20,8 @@ func (m *DocMsgStartRequestContext) GetType() string { func (m *DocMsgStartRequestContext) BuildMsg(v interface{}) { msg := v.(*MsgStartRequestContext) - m.RequestContextId = strings.ToUpper(hex.EncodeToString(msg.RequestContextId)) - m.Consumer = msg.Consumer.String() + m.RequestContextId = strings.ToUpper(msg.RequestContextId) + m.Consumer = msg.Consumer } func (m *DocMsgStartRequestContext) HandleTxMsg(v SdkMsg) MsgDocInfo { @@ -32,7 +31,7 @@ func (m *DocMsgStartRequestContext) HandleTxMsg(v SdkMsg) MsgDocInfo { ) utils.UnMarshalJsonIgnoreErr(utils.MarshalJsonIgnoreErr(v), &msg) - addrs = append(addrs, msg.Consumer.String()) + addrs = append(addrs, msg.Consumer) handler := func() (Msg, []string) { return m, addrs } diff --git a/msgs/service/service_update_bind.go b/msgs/service/service_update_bind.go index fccf1db..d7093a5 100644 --- a/msgs/service/service_update_bind.go +++ b/msgs/service/service_update_bind.go @@ -30,11 +30,11 @@ func (m *DocMsgUpdateServiceBinding) BuildMsg(v interface{}) { } m.ServiceName = msg.ServiceName - m.Provider = msg.Provider.String() + m.Provider = msg.Provider m.Deposit = coins m.Pricing = msg.Pricing m.QoS = msg.QoS - m.Owner = msg.Owner.String() + m.Owner = msg.Owner } func (m *DocMsgUpdateServiceBinding) HandleTxMsg(v SdkMsg) MsgDocInfo { @@ -44,7 +44,7 @@ func (m *DocMsgUpdateServiceBinding) HandleTxMsg(v SdkMsg) MsgDocInfo { ) utils.UnMarshalJsonIgnoreErr(utils.MarshalJsonIgnoreErr(v), &msg) - addrs = append(addrs, msg.Owner.String(), msg.Provider.String()) + addrs = append(addrs, msg.Owner, msg.Provider) handler := func() (Msg, []string) { return m, addrs } diff --git a/msgs/service/service_update_request_context.go b/msgs/service/service_update_request_context.go index c6f6429..7eb01b9 100644 --- a/msgs/service/service_update_request_context.go +++ b/msgs/service/service_update_request_context.go @@ -1,7 +1,6 @@ package service import ( - "encoding/hex" "github.com/irisnet/rainbow-sync/model" . "github.com/irisnet/rainbow-sync/msgs" "github.com/irisnet/rainbow-sync/utils" @@ -32,20 +31,15 @@ func (m *DocMsgUpdateRequestContext) BuildMsg(v interface{}) { coins = append(coins, &model.Coin{Denom: one.Denom, Amount: one.Amount.String()}) } - m.RequestContextID = strings.ToUpper(hex.EncodeToString(msg.RequestContextId)) - m.Providers = m.loadProviders(msg) - m.Consumer = msg.Consumer.String() + m.RequestContextID = strings.ToUpper(msg.RequestContextId) + m.Providers = msg.Providers + m.Consumer = msg.Consumer m.ServiceFeeCap = coins m.Timeout = msg.Timeout m.RepeatedFrequency = msg.RepeatedFrequency m.RepeatedTotal = msg.RepeatedTotal } -func (m *DocMsgUpdateRequestContext) loadProviders(msg *MsgUpdateRequestContext) (ret []string) { - for _, one := range msg.Providers { - ret = append(ret, one.String()) - } - return -} + func (m *DocMsgUpdateRequestContext) HandleTxMsg(v SdkMsg) MsgDocInfo { var ( addrs []string @@ -53,8 +47,8 @@ func (m *DocMsgUpdateRequestContext) HandleTxMsg(v SdkMsg) MsgDocInfo { ) utils.UnMarshalJsonIgnoreErr(utils.MarshalJsonIgnoreErr(v), &msg) - addrs = append(addrs, m.loadProviders(&msg)...) - addrs = append(addrs, msg.Consumer.String()) + addrs = append(addrs, msg.Providers...) + addrs = append(addrs, msg.Consumer) handler := func() (Msg, []string) { return m, addrs } diff --git a/msgs/service/service_withdraw_earn_fee.go b/msgs/service/service_withdraw_earn_fee.go index aab7b23..066d766 100644 --- a/msgs/service/service_withdraw_earn_fee.go +++ b/msgs/service/service_withdraw_earn_fee.go @@ -19,8 +19,8 @@ func (m *DocMsgWithdrawEarnedFees) GetType() string { func (m *DocMsgWithdrawEarnedFees) BuildMsg(v interface{}) { msg := v.(*MsgWithdrawEarnedFees) - m.Owner = msg.Owner.String() - m.Provider = msg.Provider.String() + m.Owner = msg.Owner + m.Provider = msg.Provider } func (m *DocMsgWithdrawEarnedFees) HandleTxMsg(v SdkMsg) MsgDocInfo { @@ -31,7 +31,7 @@ func (m *DocMsgWithdrawEarnedFees) HandleTxMsg(v SdkMsg) MsgDocInfo { utils.UnMarshalJsonIgnoreErr(utils.MarshalJsonIgnoreErr(v), &msg) - addrs = append(addrs, msg.Owner.String(), msg.Provider.String()) + addrs = append(addrs, msg.Owner, msg.Provider) handler := func() (Msg, []string) { return m, addrs } diff --git a/msgs/staking/stake.go b/msgs/staking/stake.go index f9d5047..7afd003 100644 --- a/msgs/staking/stake.go +++ b/msgs/staking/stake.go @@ -2,6 +2,7 @@ package staking import ( stake "github.com/cosmos/cosmos-sdk/x/staking/types" + "github.com/irisnet/rainbow-sync/lib/cdc" "github.com/irisnet/rainbow-sync/model" . "github.com/irisnet/rainbow-sync/msgs" ) @@ -181,7 +182,7 @@ func (doctx *DocTxMsgCreateValidator) GetType() string { func (doctx *DocTxMsgCreateValidator) BuildMsg(txMsg interface{}) { msg := txMsg.(*MsgCreateValidator) doctx.ValidatorAddress = msg.ValidatorAddress - doctx.Pubkey = msg.Pubkey + doctx.Pubkey = msg.Pubkey.String() doctx.DelegatorAddress = msg.DelegatorAddress doctx.MinSelfDelegation = msg.MinSelfDelegation.String() doctx.Commission = CommissionRates{ @@ -199,7 +200,8 @@ func (m *DocTxMsgCreateValidator) HandleTxMsg(v SdkMsg) MsgDocInfo { msg MsgCreateValidator ) - ConvertMsg(v, &msg) + data, _ := cdc.GetMarshaler().MarshalJSON(v) + cdc.GetMarshaler().UnmarshalJSON(data, &msg) addrs = append(addrs, msg.DelegatorAddress, msg.ValidatorAddress) handler := func() (Msg, []string) { return m, addrs diff --git a/msgs/token/edit_token.go b/msgs/token/edit_token.go index 1b9f179..c499038 100644 --- a/msgs/token/edit_token.go +++ b/msgs/token/edit_token.go @@ -21,7 +21,7 @@ func (m *DocMsgEditToken) BuildMsg(v interface{}) { msg := v.(*MsgEditToken) m.Symbol = msg.Symbol - m.Owner = msg.Owner.String() + m.Owner = msg.Owner m.Name = msg.Name m.MaxSupply = msg.MaxSupply m.Mintable = msg.Mintable.ToBool() @@ -34,7 +34,7 @@ func (m *DocMsgEditToken) HandleTxMsg(v SdkMsg) MsgDocInfo { ) utils.UnMarshalJsonIgnoreErr(utils.MarshalJsonIgnoreErr(v), &msg) - addrs = append(addrs, msg.Owner.String()) + addrs = append(addrs, msg.Owner) handler := func() (Msg, []string) { return m, addrs } diff --git a/msgs/token/issue_token.go b/msgs/token/issue_token.go index cf39c36..3201e53 100644 --- a/msgs/token/issue_token.go +++ b/msgs/token/issue_token.go @@ -28,7 +28,7 @@ func (m *DocMsgIssueToken) BuildMsg(v interface{}) { m.Scale = msg.Scale m.MinUnit = msg.MinUnit m.InitialSupply = msg.InitialSupply - m.Owner = msg.Owner.String() + m.Owner = msg.Owner m.MaxSupply = msg.MaxSupply m.Mintable = msg.Mintable } @@ -40,7 +40,7 @@ func (m *DocMsgIssueToken) HandleTxMsg(v SdkMsg) MsgDocInfo { ) utils.UnMarshalJsonIgnoreErr(utils.MarshalJsonIgnoreErr(v), &msg) - addrs = append(addrs, msg.Owner.String()) + addrs = append(addrs, msg.Owner) handler := func() (Msg, []string) { return m, addrs } diff --git a/msgs/token/mint_token.go b/msgs/token/mint_token.go index 3a0d1ea..880a4af 100644 --- a/msgs/token/mint_token.go +++ b/msgs/token/mint_token.go @@ -21,8 +21,8 @@ func (m *DocMsgMintToken) BuildMsg(v interface{}) { m.Symbol = msg.Symbol m.Amount = msg.Amount - m.To = msg.To.String() - m.Owner = msg.Owner.String() + m.To = msg.To + m.Owner = msg.Owner } func (m *DocMsgMintToken) HandleTxMsg(v SdkMsg) MsgDocInfo { @@ -32,7 +32,7 @@ func (m *DocMsgMintToken) HandleTxMsg(v SdkMsg) MsgDocInfo { ) utils.UnMarshalJsonIgnoreErr(utils.MarshalJsonIgnoreErr(v), &msg) - addrs = append(addrs, msg.Owner.String(), msg.To.String()) + addrs = append(addrs, msg.Owner, msg.To) handler := func() (Msg, []string) { return m, addrs } diff --git a/msgs/token/transfer_tokenowner.go b/msgs/token/transfer_tokenowner.go index a1c85f0..7a027d0 100644 --- a/msgs/token/transfer_tokenowner.go +++ b/msgs/token/transfer_tokenowner.go @@ -19,8 +19,8 @@ func (m *DocMsgTransferTokenOwner) BuildMsg(v interface{}) { msg := v.(*MsgTransferTokenOwner) m.Symbol = msg.Symbol - m.SrcOwner = msg.SrcOwner.String() - m.DstOwner = msg.DstOwner.String() + m.SrcOwner = msg.SrcOwner + m.DstOwner = msg.DstOwner } func (m *DocMsgTransferTokenOwner) HandleTxMsg(v SdkMsg) MsgDocInfo { @@ -30,7 +30,7 @@ func (m *DocMsgTransferTokenOwner) HandleTxMsg(v SdkMsg) MsgDocInfo { ) utils.UnMarshalJsonIgnoreErr(utils.MarshalJsonIgnoreErr(v), &msg) - addrs = append(addrs, msg.SrcOwner.String(), msg.DstOwner.String()) + addrs = append(addrs, msg.SrcOwner, msg.DstOwner) handler := func() (Msg, []string) { return m, addrs } diff --git a/task/execute.go b/task/execute.go index 04e248e..a213903 100644 --- a/task/execute.go +++ b/task/execute.go @@ -173,7 +173,7 @@ func (s *TaskIrisService) executeTask(blockNumPerWorkerHandle, maxWorkerSleepTim } // parse data from block - blockDoc, txDocs, err := block.ParseBlock(inProcessBlock, client) + blockDoc, txDocs, txMsgs, err := block.ParseBlock(inProcessBlock, client) if err != nil { logger.Error("Parse block fail", logger.Int64("block", inProcessBlock), logger.String("err", err.Error())) @@ -194,7 +194,7 @@ func (s *TaskIrisService) executeTask(blockNumPerWorkerHandle, maxWorkerSleepTim taskDoc.Status = model.SyncTaskStatusCompleted } - err := block.SaveDocsWithTxn(blockDoc, txDocs, taskDoc) + err := block.SaveDocsWithTxn(blockDoc, txDocs, txMsgs, taskDoc) if err != nil { logger.Error("save docs fail", logger.String("err", err.Error())) } else { From ce5e67c2951ae918731363d1f60bcbd184e4e885 Mon Sep 17 00:00:00 2001 From: huangweichang Date: Tue, 12 Jan 2021 09:39:43 +0800 Subject: [PATCH 19/49] adjust gasused value --- block/parse_tx.go | 2 +- block/parse_tx_test.go | 6 ++++-- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/block/parse_tx.go b/block/parse_tx.go index f6d842b..d355399 100644 --- a/block/parse_tx.go +++ b/block/parse_tx.go @@ -226,7 +226,7 @@ func ParseTx(txBytes types.Tx, block *types.Block, client *pool.Client) (model.T Status: docTx.Status, TxMemo: memo, TxLog: docTx.Log, - GasUsed: gasUsed, + GasUsed: res.TxResult.GasUsed, GasWanted: res.TxResult.GasWanted, } docMsg.Msg = msgDocInfo.DocTxMsg diff --git a/block/parse_tx_test.go b/block/parse_tx_test.go index 801f063..3811983 100644 --- a/block/parse_tx_test.go +++ b/block/parse_tx_test.go @@ -24,19 +24,21 @@ func TestIris_Block_ParseIrisTx(t *testing.T) { { name: "test parse iris tx", args: args{ - b: 857, + b: 9952, client: client, }, }, } for _, tt := range tests { t.Run(tt.name, func(t *testing.T) { - res, _, err := ParseTxs(tt.args.b, tt.args.client) + res, msg, err := ParseTxs(tt.args.b, tt.args.client) if err != nil { t.Fatal(err) } resBytes, _ := json.Marshal(res) t.Log(string(resBytes)) + resBytes, _ = json.Marshal(msg) + t.Log(string(resBytes)) }) } } From 7230d702c05b9ba2dc19b39069e6a3ee1f430c3f Mon Sep 17 00:00:00 2001 From: huangweichang Date: Tue, 12 Jan 2021 10:39:06 +0800 Subject: [PATCH 20/49] rename segment --- block/parse_tx.go | 4 ++-- cron/cron_task.go | 2 +- model/tx_msg.go | 8 +++++--- 3 files changed, 8 insertions(+), 6 deletions(-) diff --git a/block/parse_tx.go b/block/parse_tx.go index d355399..9e93773 100644 --- a/block/parse_tx.go +++ b/block/parse_tx.go @@ -223,7 +223,7 @@ func ParseTx(txBytes types.Tx, block *types.Block, client *pool.Client) (model.T Type: msgDocInfo.DocTxMsg.Type, MsgIndex: i, TxIndex: res.Index, - Status: docTx.Status, + TxStatus: docTx.Status, TxMemo: memo, TxLog: docTx.Log, GasUsed: res.TxResult.GasUsed, @@ -234,7 +234,7 @@ func ParseTx(txBytes types.Tx, block *types.Block, client *pool.Client) (model.T docMsg.Events = val.Events } docMsg.Addrs = removeDuplicatesFromSlice(msgDocInfo.Addrs) - docMsg.Signers = removeDuplicatesFromSlice(msgDocInfo.Signers) + docMsg.TxSigners = removeDuplicatesFromSlice(msgDocInfo.Signers) docMsgs = append(docMsgs, docMsg) } diff --git a/cron/cron_task.go b/cron/cron_task.go index 09585fa..8f6c08d 100644 --- a/cron/cron_task.go +++ b/cron/cron_task.go @@ -141,7 +141,7 @@ func UpdateUnknowMsgs(iristx []model.TxMsg) error { update_fn := func(txmsg *model.TxMsg) error { fn := func(c *mgo.Collection) error { return c.Update(bson.M{"tx_hash": txmsg.TxHash, "msg_index": txmsg.MsgIndex}, - bson.M{"$set": bson.M{"status": txmsg.Status, "events": txmsg.Events}}) + bson.M{"$set": bson.M{model.IrisTxMsgStatus: txmsg.TxStatus, "events": txmsg.Events}}) } if err := db.ExecCollection(model.CollectionNameIrisTxMsg, fn); err != nil { diff --git a/model/tx_msg.go b/model/tx_msg.go index cf0c339..bb7e287 100644 --- a/model/tx_msg.go +++ b/model/tx_msg.go @@ -12,7 +12,7 @@ type TxMsg struct { Type string `bson:"type"` MsgIndex int `bson:"msg_index"` TxIndex uint32 `bson:"tx_index"` - Status string `bson:"status"` + TxStatus string `bson:"tx_status"` TxMemo string `bson:"tx_memo"` TxLog string `bson:"tx_log"` GasUsed int64 `json:"gas_used"` @@ -20,10 +20,12 @@ type TxMsg struct { Events []Event `bson:"events"` Msg DocTxMsg `bson:"msg"` Addrs []string `bson:"addrs"` - Signers []string `bson:"signers"` + TxSigners []string `bson:"tx_signers"` } const ( + IrisTxMsgStatus = "tx_status" + IrisTxMsgSigners = "tx_signers" CollectionNameIrisTxMsg = "sync_iris_tx_msg" ) @@ -49,7 +51,7 @@ func (d TxMsg) EnsureIndexes() { Key: []string{"-type"}, Background: true}, mgo.Index{ - Key: []string{"-signers"}, + Key: []string{"-" + IrisTxMsgSigners}, Background: true}, mgo.Index{ Key: []string{"-addrs"}, From adf9b8058269112645d054183a537b5f335aee14 Mon Sep 17 00:00:00 2001 From: huangweichang Date: Tue, 12 Jan 2021 11:32:49 +0800 Subject: [PATCH 21/49] add fee and time in txmsg --- block/parse_tx.go | 8 ++++---- model/tx.go | 7 +------ model/tx_msg.go | 6 ++++-- 3 files changed, 9 insertions(+), 12 deletions(-) diff --git a/block/parse_tx.go b/block/parse_tx.go index 9e93773..4f1c0dd 100644 --- a/block/parse_tx.go +++ b/block/parse_tx.go @@ -141,7 +141,7 @@ func ParseTx(txBytes types.Tx, block *types.Block, client *pool.Client) (model.T docMsgs []model.TxMsg docTxMsgs []model.DocTxMsg docTx model.Tx - actualFee *model.ActualFee + actualFee model.Coin ) Tx, err := cdc.GetTxDecoder()(txBytes) if err != nil { @@ -173,12 +173,10 @@ func ParseTx(txBytes types.Tx, block *types.Block, client *pool.Client) (model.T gasUsed := utils.Min(res.TxResult.GasUsed, fee.Gas) if len(fee.Amount) > 0 { gasPrice := utils.ParseFloat(fee.Amount[0].Amount) / float64(fee.Gas) - actualFee = &model.ActualFee{ + actualFee = model.Coin{ Denom: fee.Amount[0].Denom, Amount: fmt.Sprint(float64(gasUsed) * gasPrice), } - } else { - actualFee = &model.ActualFee{} } docTx = model.Tx{ @@ -218,6 +216,8 @@ func ParseTx(txBytes types.Tx, block *types.Block, client *pool.Client) (model.T docTx.Types = append(docTx.Types, msgDocInfo.DocTxMsg.Type) docMsg := model.TxMsg{ + Time: docTx.Time, + TxFee: docTx.ActualFee, Height: docTx.Height, TxHash: docTx.TxHash, Type: msgDocInfo.DocTxMsg.Type, diff --git a/model/tx.go b/model/tx.go index d670e8c..03a7de4 100644 --- a/model/tx.go +++ b/model/tx.go @@ -12,7 +12,7 @@ type Tx struct { Height int64 `bson:"height"` TxHash string `bson:"tx_hash"` Fee *Fee `bson:"fee"` - ActualFee *ActualFee `bson:"actual_fee"` + ActualFee Coin `bson:"actual_fee"` Memo string `bson:"memo"` Status string `bson:"status"` Log string `bson:"log"` @@ -101,11 +101,6 @@ type Fee struct { Gas int64 `bson:"gas"` } -type ActualFee struct { - Denom string `bson:"denom"` - Amount string `bson:"amount"` -} - func BuildDocCoins(coins sdk.Coins) []Coin { var ( res []Coin diff --git a/model/tx_msg.go b/model/tx_msg.go index bb7e287..7267879 100644 --- a/model/tx_msg.go +++ b/model/tx_msg.go @@ -7,6 +7,8 @@ import ( ) type TxMsg struct { + Time int64 `bson:"time"` + TxFee Coin `bson:"tx_fee"` Height int64 `bson:"height"` TxHash string `bson:"tx_hash"` Type string `bson:"type"` @@ -15,8 +17,8 @@ type TxMsg struct { TxStatus string `bson:"tx_status"` TxMemo string `bson:"tx_memo"` TxLog string `bson:"tx_log"` - GasUsed int64 `json:"gas_used"` - GasWanted int64 `json:"gas_wanted"` + GasUsed int64 `bson:"gas_used"` + GasWanted int64 `bson:"gas_wanted"` Events []Event `bson:"events"` Msg DocTxMsg `bson:"msg"` Addrs []string `bson:"addrs"` From 6963eb4644d87630c52c1b29990db2ec946cf73b Mon Sep 17 00:00:00 2001 From: huangweichang Date: Tue, 12 Jan 2021 14:18:53 +0800 Subject: [PATCH 22/49] rename variable --- block/parse_tx.go | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/block/parse_tx.go b/block/parse_tx.go index 4f1c0dd..e2df136 100644 --- a/block/parse_tx.go +++ b/block/parse_tx.go @@ -18,9 +18,9 @@ import ( "time" ) -func SaveDocsWithTxn(blockDoc *model.Block, irisTxs []*model.Tx, irisMsgs []model.TxMsg, taskDoc model.SyncTask) error { +func SaveDocsWithTxn(blockDoc *model.Block, txs []*model.Tx, txMsgs []model.TxMsg, taskDoc model.SyncTask) error { var ( - ops, irisTxsOps []txn.Op + ops, insertOps []txn.Op ) if blockDoc.Height == 0 { @@ -33,25 +33,25 @@ func SaveDocsWithTxn(blockDoc *model.Block, irisTxs []*model.Tx, irisMsgs []mode Insert: blockDoc, } - length_txs := len(irisTxs) + len(irisMsgs) - if length_txs > 0 { - irisTxsOps = make([]txn.Op, 0, length_txs) - for _, v := range irisTxs { + txAndMsgNum := len(txs) + len(txMsgs) + if txAndMsgNum > 0 { + insertOps = make([]txn.Op, 0, txAndMsgNum) + for _, v := range txs { op := txn.Op{ C: model.CollectionNameIrisTx, Id: bson.NewObjectId(), Insert: v, } - irisTxsOps = append(irisTxsOps, op) + insertOps = append(insertOps, op) } - for _, v := range irisMsgs { + for _, v := range txMsgs { op := txn.Op{ C: model.CollectionNameIrisTxMsg, Id: bson.NewObjectId(), Insert: v, } - irisTxsOps = append(irisTxsOps, op) + insertOps = append(insertOps, op) } } @@ -68,8 +68,8 @@ func SaveDocsWithTxn(blockDoc *model.Block, irisTxs []*model.Tx, irisMsgs []mode }, } - ops = make([]txn.Op, 0, length_txs+2) - ops = append(append(ops, blockOp, updateOp), irisTxsOps...) + ops = make([]txn.Op, 0, txAndMsgNum+2) + ops = append(append(ops, blockOp, updateOp), insertOps...) if len(ops) > 0 { err := db.Txn(ops) From 53af78317bf9b087ef9b9b1aba7482574574bc5d Mon Sep 17 00:00:00 2001 From: huangweichang Date: Tue, 12 Jan 2021 17:01:07 +0800 Subject: [PATCH 23/49] update go mod file --- go.mod | 2 +- go.sum | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/go.mod b/go.mod index 4779434..9a829be 100644 --- a/go.mod +++ b/go.mod @@ -4,7 +4,7 @@ go 1.14 require ( github.com/cosmos/cosmos-sdk v0.40.0 - github.com/irisnet/irismod v1.1.1-0.20210110094232-8d48f9a795f4 + github.com/irisnet/irismod v1.1.1-0.20210111090024-463e3e11dc14 github.com/jolestar/go-commons-pool v2.0.0+incompatible github.com/tendermint/tendermint v0.34.1 go.uber.org/zap v1.13.0 diff --git a/go.sum b/go.sum index 73eb803..a4011a6 100644 --- a/go.sum +++ b/go.sum @@ -285,8 +285,8 @@ github.com/hudl/fargo v1.3.0/go.mod h1:y3CKSmjA+wD2gak7sUSXTAoopbhU08POFhmITJgmK github.com/inconshreveable/mousetrap v1.0.0 h1:Z8tu5sraLXCXIcARxBp/8cbvlwVa7Z1NHg9XEKhtSvM= github.com/inconshreveable/mousetrap v1.0.0/go.mod h1:PxqpIevigyE2G7u3NXJIT2ANytuPF1OarO4DADm73n8= github.com/influxdata/influxdb1-client v0.0.0-20191209144304-8bf82d3c094d/go.mod h1:qj24IKcXYK6Iy9ceXlo3Tc+vtHo9lIhSX5JddghvEPo= -github.com/irisnet/irismod v1.1.1-0.20210110094232-8d48f9a795f4 h1:yATUgeN/8GE4TJC37Z1xibj0hh2wHgD1qgGclA8udTQ= -github.com/irisnet/irismod v1.1.1-0.20210110094232-8d48f9a795f4/go.mod h1:j7coXR8hg12Jp6B9MlvrnYdjoPGf8vTV/GIyZeL8x9I= +github.com/irisnet/irismod v1.1.1-0.20210111090024-463e3e11dc14 h1:bIwEg3HTAjKtHvUPIQ/RXEzig7cd1VE8PSM7OVqNFws= +github.com/irisnet/irismod v1.1.1-0.20210111090024-463e3e11dc14/go.mod h1:j7coXR8hg12Jp6B9MlvrnYdjoPGf8vTV/GIyZeL8x9I= github.com/jessevdk/go-flags v0.0.0-20141203071132-1679536dcc89/go.mod h1:4FA24M0QyGHXBuZZK/XkWh8h0e1EYbRYJSGM75WSRxI= github.com/jessevdk/go-flags v1.4.0/go.mod h1:4FA24M0QyGHXBuZZK/XkWh8h0e1EYbRYJSGM75WSRxI= github.com/jmespath/go-jmespath v0.0.0-20180206201540-c2b33e8439af/go.mod h1:Nht3zPeWKUH0NzdCt2Blrr5ys8VGpn0CEB0cQHVjt7k= From e620d4548f60643f970e585669e43b8e756f6f54 Mon Sep 17 00:00:00 2001 From: huangweichang Date: Tue, 12 Jan 2021 17:15:19 +0800 Subject: [PATCH 24/49] update Dockerfile content --- Dockerfile | 4 ++-- go.mod | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/Dockerfile b/Dockerfile index 75ec2bc..0a98cd3 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,4 +1,4 @@ -FROM golang:1.13.1-alpine3.10 as builder +FROM golang:1.15.5-alpine3.12 as builder # Set up dependencies ENV PACKAGES go make git libc-dev bash @@ -16,7 +16,7 @@ WORKDIR $REPO_PATH RUN apk add --no-cache $PACKAGES && \ cd $REPO_PATH && make all -FROM alpine:3.10 +FROM alpine:3.12 ENV BINARY_NAME rainbow-sync-iris COPY --from=builder /go/src/$BINARY_NAME /usr/local/bin/$BINARY_NAME diff --git a/go.mod b/go.mod index 9a829be..b4181d0 100644 --- a/go.mod +++ b/go.mod @@ -1,6 +1,6 @@ module github.com/irisnet/rainbow-sync -go 1.14 +go 1.15 require ( github.com/cosmos/cosmos-sdk v0.40.0 From c7eb99690fa549da09e6665c1f94d2e3e43434b0 Mon Sep 17 00:00:00 2001 From: huangweichang Date: Tue, 12 Jan 2021 18:48:32 +0800 Subject: [PATCH 25/49] add tx_addrs segment --- block/parse_tx.go | 3 +++ model/tx.go | 9 --------- model/tx_msg.go | 14 +------------- 3 files changed, 4 insertions(+), 22 deletions(-) diff --git a/block/parse_tx.go b/block/parse_tx.go index e2df136..30e35b7 100644 --- a/block/parse_tx.go +++ b/block/parse_tx.go @@ -248,6 +248,9 @@ func ParseTx(txBytes types.Tx, block *types.Block, client *pool.Client) (model.T return model.Tx{}, docMsgs } + for i, _ := range docMsgs { + docMsgs[i].TxAddrs = docTx.Addrs + } return docTx, docMsgs } diff --git a/model/tx.go b/model/tx.go index 03a7de4..887028f 100644 --- a/model/tx.go +++ b/model/tx.go @@ -75,15 +75,6 @@ func (d Tx) EnsureIndexes() { Key: []string{"-tx_hash"}, Unique: true, Background: true}, - mgo.Index{ - Key: []string{"-types"}, - Background: true}, - mgo.Index{ - Key: []string{"-signers"}, - Background: true}, - mgo.Index{ - Key: []string{"-addrs"}, - Background: true}, ) db.EnsureIndexes(d.Name(), indexes) diff --git a/model/tx_msg.go b/model/tx_msg.go index 7267879..d01f18b 100644 --- a/model/tx_msg.go +++ b/model/tx_msg.go @@ -22,12 +22,12 @@ type TxMsg struct { Events []Event `bson:"events"` Msg DocTxMsg `bson:"msg"` Addrs []string `bson:"addrs"` + TxAddrs []string `bson:"tx_addrs"` TxSigners []string `bson:"tx_signers"` } const ( IrisTxMsgStatus = "tx_status" - IrisTxMsgSigners = "tx_signers" CollectionNameIrisTxMsg = "sync_iris_tx_msg" ) @@ -42,22 +42,10 @@ func (d TxMsg) PkKvPair() map[string]interface{} { func (d TxMsg) EnsureIndexes() { var indexes []mgo.Index indexes = append(indexes, - mgo.Index{ - Key: []string{"-height"}, - Background: true}, mgo.Index{ Key: []string{"-tx_hash", "-msg_index"}, Unique: true, Background: true}, - mgo.Index{ - Key: []string{"-type"}, - Background: true}, - mgo.Index{ - Key: []string{"-" + IrisTxMsgSigners}, - Background: true}, - mgo.Index{ - Key: []string{"-addrs"}, - Background: true}, ) db.EnsureIndexes(d.Name(), indexes) From cc53e3816de319960cc1680702c0af3e305a136c Mon Sep 17 00:00:00 2001 From: huangweichang Date: Wed, 13 Jan 2021 11:40:59 +0800 Subject: [PATCH 26/49] add and rename about signers of tx and msg --- block/parse_tx.go | 3 ++- model/tx_msg.go | 1 + 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/block/parse_tx.go b/block/parse_tx.go index 30e35b7..693d832 100644 --- a/block/parse_tx.go +++ b/block/parse_tx.go @@ -234,7 +234,7 @@ func ParseTx(txBytes types.Tx, block *types.Block, client *pool.Client) (model.T docMsg.Events = val.Events } docMsg.Addrs = removeDuplicatesFromSlice(msgDocInfo.Addrs) - docMsg.TxSigners = removeDuplicatesFromSlice(msgDocInfo.Signers) + docMsg.Signers = removeDuplicatesFromSlice(msgDocInfo.Signers) docMsgs = append(docMsgs, docMsg) } @@ -250,6 +250,7 @@ func ParseTx(txBytes types.Tx, block *types.Block, client *pool.Client) (model.T for i, _ := range docMsgs { docMsgs[i].TxAddrs = docTx.Addrs + docMsgs[i].TxSigners = docTx.Signers } return docTx, docMsgs diff --git a/model/tx_msg.go b/model/tx_msg.go index d01f18b..9071eba 100644 --- a/model/tx_msg.go +++ b/model/tx_msg.go @@ -23,6 +23,7 @@ type TxMsg struct { Msg DocTxMsg `bson:"msg"` Addrs []string `bson:"addrs"` TxAddrs []string `bson:"tx_addrs"` + Signers []string `bson:"signers"` TxSigners []string `bson:"tx_signers"` } From 48c5db6d7e27a8c6b554dcb82b0c8c97024141ae Mon Sep 17 00:00:00 2001 From: huangweichang Date: Wed, 13 Jan 2021 14:08:22 +0800 Subject: [PATCH 27/49] adjust actualfee value --- block/parse_tx.go | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/block/parse_tx.go b/block/parse_tx.go index 693d832..01f794e 100644 --- a/block/parse_tx.go +++ b/block/parse_tx.go @@ -170,12 +170,10 @@ func ParseTx(txBytes types.Tx, block *types.Block, client *pool.Client) (model.T } } - gasUsed := utils.Min(res.TxResult.GasUsed, fee.Gas) if len(fee.Amount) > 0 { - gasPrice := utils.ParseFloat(fee.Amount[0].Amount) / float64(fee.Gas) actualFee = model.Coin{ Denom: fee.Amount[0].Denom, - Amount: fmt.Sprint(float64(gasUsed) * gasPrice), + Amount: fee.Amount[0].Amount, } } From bac1b2b79d813145b2fbbdae2955432430f550ef Mon Sep 17 00:00:00 2001 From: huangweichang Date: Wed, 13 Jan 2021 20:33:29 +0800 Subject: [PATCH 28/49] fix amount type --- msgs/staking/stake.go | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/msgs/staking/stake.go b/msgs/staking/stake.go index 7afd003..b092aba 100644 --- a/msgs/staking/stake.go +++ b/msgs/staking/stake.go @@ -9,10 +9,10 @@ import ( // MsgDelegate - struct for bonding transactions type DocTxMsgBeginRedelegate struct { - DelegatorAddress string `bson:"delegator_address"` - ValidatorSrcAddress string `bson:"validator_src_address"` - ValidatorDstAddress string `bson:"validator_dst_address"` - Amount string `bson:"amount"` + DelegatorAddress string `bson:"delegator_address"` + ValidatorSrcAddress string `bson:"validator_src_address"` + ValidatorDstAddress string `bson:"validator_dst_address"` + Amount model.Coin `bson:"amount"` } type Description struct { @@ -38,7 +38,7 @@ func (doctx *DocTxMsgBeginRedelegate) BuildMsg(txMsg interface{}) { doctx.DelegatorAddress = msg.DelegatorAddress doctx.ValidatorSrcAddress = msg.ValidatorSrcAddress doctx.ValidatorDstAddress = msg.ValidatorDstAddress - doctx.Amount = msg.Amount.String() + doctx.Amount = model.BuildDocCoin(msg.Amount) } func (m *DocTxMsgBeginRedelegate) HandleTxMsg(v SdkMsg) MsgDocInfo { @@ -58,9 +58,9 @@ func (m *DocTxMsgBeginRedelegate) HandleTxMsg(v SdkMsg) MsgDocInfo { // MsgBeginUnbonding - struct for unbonding transactions type DocTxMsgBeginUnbonding struct { - DelegatorAddress string `bson:"delegator_address"` - ValidatorAddress string `bson:"validator_address"` - Amount string `bson:"amount"` + DelegatorAddress string `bson:"delegator_address"` + ValidatorAddress string `bson:"validator_address"` + Amount model.Coin `bson:"amount"` } func (doctx *DocTxMsgBeginUnbonding) GetType() string { @@ -71,7 +71,7 @@ func (doctx *DocTxMsgBeginUnbonding) BuildMsg(txMsg interface{}) { msg := txMsg.(*MsgUndelegate) doctx.ValidatorAddress = msg.ValidatorAddress doctx.DelegatorAddress = msg.DelegatorAddress - doctx.Amount = msg.Amount.String() + doctx.Amount = model.BuildDocCoin(msg.Amount) } func (m *DocTxMsgBeginUnbonding) HandleTxMsg(v SdkMsg) MsgDocInfo { From c8f9a24b38bf53a4cfda9cdea9d59b6248bfd129 Mon Sep 17 00:00:00 2001 From: huangweichang Date: Sat, 16 Jan 2021 15:25:24 +0800 Subject: [PATCH 29/49] add burn_token msg parse --- msgs/token/burn_token.go | 39 +++++++++++++++++++++++++++++++++++++++ msgs/token/token.go | 4 ++++ msgs/types.go | 2 ++ 3 files changed, 45 insertions(+) create mode 100644 msgs/token/burn_token.go diff --git a/msgs/token/burn_token.go b/msgs/token/burn_token.go new file mode 100644 index 0000000..ca857cf --- /dev/null +++ b/msgs/token/burn_token.go @@ -0,0 +1,39 @@ +package token + +import ( + . "github.com/irisnet/rainbow-sync/msgs" +) + +// MsgBurnToken defines an SDK message for burning some tokens. +type DocMsgBurnToken struct { + Symbol string `bson:"symbol"` + Amount uint64 `bson:"amount"` + Sender string `bson:"sender"` +} + +func (m *DocMsgBurnToken) GetType() string { + return MsgTypeBurnToken +} + +func (m *DocMsgBurnToken) BuildMsg(v interface{}) { + msg := v.(*MsgBurnToken) + + m.Symbol = msg.Symbol + m.Amount = msg.Amount + m.Sender = msg.Sender +} + +func (m *DocMsgBurnToken) HandleTxMsg(v SdkMsg) MsgDocInfo { + var ( + addrs []string + msg MsgBurnToken + ) + + ConvertMsg(v, &msg) + addrs = append(addrs, msg.Sender) + handler := func() (Msg, []string) { + return m, addrs + } + + return CreateMsgDocInfo(v, handler) +} diff --git a/msgs/token/token.go b/msgs/token/token.go index 9812cdc..b11d53b 100644 --- a/msgs/token/token.go +++ b/msgs/token/token.go @@ -15,6 +15,10 @@ func HandleTxMsg(v types.Msg) (MsgDocInfo, bool) { docMsg := DocMsgMintToken{} msgDocInfo = docMsg.HandleTxMsg(v) break + case new(MsgBurnToken).Type(): + docMsg := DocMsgBurnToken{} + msgDocInfo = docMsg.HandleTxMsg(v) + break case new(MsgEditToken).Type(): docMsg := DocMsgEditToken{} msgDocInfo = docMsg.HandleTxMsg(v) diff --git a/msgs/types.go b/msgs/types.go index 8f9fbad..82255f8 100644 --- a/msgs/types.go +++ b/msgs/types.go @@ -32,6 +32,7 @@ const ( MsgTypeRecordCreate = "create_record" MsgTypeMintToken = "mint_token" + MsgTypeBurnToken = "burn_token" MsgTypeEditToken = "edit_token" MsgTypeIssueToken = "issue_token" MsgTypeTransferTokenOwner = "transfer_token_owner" @@ -136,6 +137,7 @@ type ( MsgIssueToken = token.MsgIssueToken MsgEditToken = token.MsgEditToken MsgMintToken = token.MsgMintToken + MsgBurnToken = token.MsgBurnToken MsgTransferTokenOwner = token.MsgTransferTokenOwner MsgCreateValidator = stake.MsgCreateValidator From fe3f734fa9f051264b7b12aa00d51caf88066f96 Mon Sep 17 00:00:00 2001 From: huangweichang Date: Thu, 21 Jan 2021 10:28:13 +0800 Subject: [PATCH 30/49] add BEHIND_BLOCK_NUM env --- README.md | 1 + msgs/service/service_bind.go | 2 ++ msgs/staking/stake.go | 5 ++++- task/execute.go | 5 +++-- 4 files changed, 10 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index a9edd09..1233621 100644 --- a/README.md +++ b/README.md @@ -53,6 +53,7 @@ docker run --name rainbow-sync \& | WORKER_NUM_EXECUTE_TASK | string | 30 | number of threads executing synchronization TX task | 30 | | WORKER_MAX_SLEEP_TIME | string | 120 | the maximum time (in seconds) that synchronization TX threads are allowed to be out of work | 120 | | BLOCK_NUM_PER_WORKER_HANDLE | string | 50 | number of blocks per sync TX task | 50 | +| BEHIND_BLOCK_NUM | string | 0 | wait block num to handle tx | 0 | - Remarks - synchronizes irishub data from specify block height(such as:17908 current time:1576208532) diff --git a/msgs/service/service_bind.go b/msgs/service/service_bind.go index 5978daa..18d81fb 100644 --- a/msgs/service/service_bind.go +++ b/msgs/service/service_bind.go @@ -13,6 +13,7 @@ type ( Pricing string `bson:"pricing"` QoS uint64 `bson:"qos"` Owner string `bson:"owner"` + Options string `bson:"options"` } ) @@ -33,6 +34,7 @@ func (m *DocMsgBindService) BuildMsg(v interface{}) { m.Pricing = msg.Pricing m.QoS = msg.QoS m.Owner = msg.Owner + m.Options = msg.Options } func (m *DocMsgBindService) HandleTxMsg(v SdkMsg) MsgDocInfo { diff --git a/msgs/staking/stake.go b/msgs/staking/stake.go index b092aba..9996c12 100644 --- a/msgs/staking/stake.go +++ b/msgs/staking/stake.go @@ -5,6 +5,7 @@ import ( "github.com/irisnet/rainbow-sync/lib/cdc" "github.com/irisnet/rainbow-sync/model" . "github.com/irisnet/rainbow-sync/msgs" + "github.com/irisnet/rainbow-sync/utils" ) // MsgDelegate - struct for bonding transactions @@ -182,7 +183,9 @@ func (doctx *DocTxMsgCreateValidator) GetType() string { func (doctx *DocTxMsgCreateValidator) BuildMsg(txMsg interface{}) { msg := txMsg.(*MsgCreateValidator) doctx.ValidatorAddress = msg.ValidatorAddress - doctx.Pubkey = msg.Pubkey.String() + if msg.Pubkey != nil { + doctx.Pubkey = utils.MarshalJsonIgnoreErr(msg.Pubkey) + } doctx.DelegatorAddress = msg.DelegatorAddress doctx.MinSelfDelegation = msg.MinSelfDelegation.String() doctx.Commission = CommissionRates{ diff --git a/task/execute.go b/task/execute.go index a213903..76b48d5 100644 --- a/task/execute.go +++ b/task/execute.go @@ -162,8 +162,9 @@ func (s *TaskIrisService) executeTask(blockNumPerWorkerHandle, maxWorkerSleepTim } // if inProcessBlock > blockChainLatestHeight, should wait blockChainLatestHeight update - if taskType == model.SyncTaskTypeFollow && inProcessBlock > blockChainLatestHeight { - logger.Info("wait blockChain latest height update.", + if taskType == model.SyncTaskTypeFollow && inProcessBlock+int64(conf.SvrConf.BehindBlockNum) > blockChainLatestHeight { + logger.Info(fmt.Sprintf("wait blockChain latest height update, must interval %v block", + conf.SvrConf.BehindBlockNum), logger.Int64("curSyncedHeight", inProcessBlock-1), logger.Int64("blockChainLatestHeight", blockChainLatestHeight)) time.Sleep(2 * time.Second) From 6dbfa864703e11deab41a711b7c44a38d588d6c6 Mon Sep 17 00:00:00 2001 From: huangweichang Date: Thu, 21 Jan 2021 10:29:22 +0800 Subject: [PATCH 31/49] add behindblocknum get method --- conf/types.go | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/conf/types.go b/conf/types.go index d825b78..d791042 100644 --- a/conf/types.go +++ b/conf/types.go @@ -19,6 +19,7 @@ var ( initConnectionNum = 50 // fast init num of tendermint client pool maxConnectionNum = 100 // max size of tendermint client pool + behindBlockNum = 0 ) type ServerConf struct { @@ -30,6 +31,7 @@ type ServerConf struct { MaxConnectionNum int InitConnectionNum int + BehindBlockNum int } const ( @@ -42,6 +44,7 @@ const ( EnvNameWorkerNumExecuteTask = "WORKER_NUM_EXECUTE_TASK" EnvNameWorkerMaxSleepTime = "WORKER_MAX_SLEEP_TIME" EnvNameBlockNumPerWorkerHandle = "BLOCK_NUM_PER_WORKER_HANDLE" + EnvNameBehindBlockNum = "BEHIND_BLOCK_NUM" ) // get value of env var @@ -73,6 +76,13 @@ func init() { logger.Fatal("Can't convert str to int", logger.String(EnvNameBlockNumPerWorkerHandle, v)) } } + if v, ok := os.LookupEnv(EnvNameBehindBlockNum); ok { + if n, err := strconv.Atoi(v); err != nil { + logger.Fatal("convert str to int fail", logger.String(EnvNameBehindBlockNum, v)) + } else { + behindBlockNum = n + } + } SvrConf = &ServerConf{ NodeUrls: blockChainMonitorUrl, WorkerNumCreateTask: workerNumCreateTask, @@ -82,6 +92,7 @@ func init() { MaxConnectionNum: maxConnectionNum, InitConnectionNum: initConnectionNum, + BehindBlockNum: behindBlockNum, } logger.Debug("print server config", logger.String("serverConf", utils.MarshalJsonIgnoreErr(SvrConf))) } From 92393c73bdce55eb20fa6bb65bb9d48865f38e58 Mon Sep 17 00:00:00 2001 From: huangweichang Date: Thu, 21 Jan 2021 14:20:05 +0800 Subject: [PATCH 32/49] adjust the retry time --- block/parse_tx.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/block/parse_tx.go b/block/parse_tx.go index 01f794e..f518301 100644 --- a/block/parse_tx.go +++ b/block/parse_tx.go @@ -112,7 +112,7 @@ func ParseTxs(b int64, client *pool.Client) ([]*model.Tx, []model.TxMsg, error) ctx := context.Background() resblock, err := client.Block(ctx, &b) if err != nil { - time.Sleep(500 * time.Millisecond) + time.Sleep(1 * time.Second) // there is possible parse block fail when in iterator var err2 error client2 := pool.GetClient() @@ -157,7 +157,7 @@ func ParseTx(txBytes types.Tx, block *types.Block, client *pool.Client) (model.T ctx := context.Background() res, err := client.Tx(ctx, txBytes.Hash(), false) if err != nil { - time.Sleep(500 * time.Millisecond) + time.Sleep(1 * time.Second) var err1 error client2 := pool.GetClient() res, err1 = client2.Tx(ctx, txBytes.Hash(), false) From 77e802b8bfc3c2e3fb78ef8e8138fec482f84050 Mon Sep 17 00:00:00 2001 From: huangweichang Date: Mon, 25 Jan 2021 15:13:48 +0800 Subject: [PATCH 33/49] add check node status before sync --- task/create.go | 9 ++++++++- task/execute.go | 21 +++++++++++++++++++++ 2 files changed, 29 insertions(+), 1 deletion(-) diff --git a/task/create.go b/task/create.go index 478ce47..de04bc9 100644 --- a/task/create.go +++ b/task/create.go @@ -46,7 +46,14 @@ func (s *TaskIrisService) createTask(blockNumPerWorkerHandle int64, chanLimit ch } <-chanLimit }() - + catchingup, err := isCatchingUp() + if err != nil { + logger.Error("Get node status failed", logger.String("err", err.Error())) + return + } + if catchingup { + return + } // check valid follow task if exist // status of valid follow task is unhandled or underway validFollowTasks, err := s.syncIrisModel.QueryAll( diff --git a/task/execute.go b/task/execute.go index 76b48d5..4820878 100644 --- a/task/execute.go +++ b/task/execute.go @@ -65,6 +65,14 @@ func (s *TaskIrisService) executeTask(blockNumPerWorkerHandle, maxWorkerSleepTim client.Release() }() + catchingup, err := isCatchingUp() + if err != nil { + logger.Error("Get node status failed", logger.String("err", err.Error())) + return + } + if catchingup { + return + } // check whether exist executable task // status = unhandled or // status = underway and now - lastUpdateTime > confTime @@ -287,3 +295,16 @@ func getBlockChainLatestHeight() (int64, error) { return status.SyncInfo.LatestBlockHeight, nil } + +func isCatchingUp() (bool, error) { + client := pool.GetClient() + defer func() { + client.Release() + }() + status, err := client.Status(context.Background()) + if err != nil { + return true, err + } + + return status.SyncInfo.CatchingUp, nil +} From ceed984d2f2579d415a40c62e5ab62c86e5854f2 Mon Sep 17 00:00:00 2001 From: huangweichang Date: Mon, 25 Jan 2021 16:24:33 +0800 Subject: [PATCH 34/49] refactor about pool init --- task/create.go | 8 ++++++++ task/execute.go | 4 ---- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/task/create.go b/task/create.go index de04bc9..42ed01a 100644 --- a/task/create.go +++ b/task/create.go @@ -4,6 +4,7 @@ import ( "fmt" "github.com/irisnet/rainbow-sync/conf" model "github.com/irisnet/rainbow-sync/db" + "github.com/irisnet/rainbow-sync/lib/pool" "github.com/irisnet/rainbow-sync/logger" imodel "github.com/irisnet/rainbow-sync/model" "gopkg.in/mgo.v2/bson" @@ -11,6 +12,13 @@ import ( "time" ) +func init() { + pool.Init(conf.SvrConf.NodeUrls, conf.SvrConf.MaxConnectionNum, conf.SvrConf.InitConnectionNum) + defer func() { + pool.ClosePool() + }() +} + type TaskIrisService struct { syncIrisModel imodel.SyncTask } diff --git a/task/execute.go b/task/execute.go index 4820878..99da048 100644 --- a/task/execute.go +++ b/task/execute.go @@ -29,10 +29,6 @@ func (s *TaskIrisService) StartExecuteTask() { // buffer channel to limit goroutine num chanLimit := make(chan bool, conf.SvrConf.WorkerNumExecuteTask) - pool.Init(conf.SvrConf.NodeUrls, conf.SvrConf.MaxConnectionNum, conf.SvrConf.InitConnectionNum) - defer func() { - pool.ClosePool() - }() for { chanLimit <- true From 2582f2b262693d0d28475b9388b6ad569fe8a627 Mon Sep 17 00:00:00 2001 From: huangweichang Date: Mon, 25 Jan 2021 16:29:26 +0800 Subject: [PATCH 35/49] refactor about pool init --- lib/pool/pool_factory.go | 11 ++++++----- main.go | 10 ++++++---- task/create.go | 8 -------- 3 files changed, 12 insertions(+), 17 deletions(-) diff --git a/lib/pool/pool_factory.go b/lib/pool/pool_factory.go index e36654b..30efc74 100644 --- a/lib/pool/pool_factory.go +++ b/lib/pool/pool_factory.go @@ -2,6 +2,7 @@ package pool import ( "context" + "github.com/irisnet/rainbow-sync/conf" "github.com/irisnet/rainbow-sync/logger" commonPool "github.com/jolestar/go-commons-pool" "math/rand" @@ -24,9 +25,9 @@ var ( ctx = context.Background() ) -func Init(BlockChainMonitorUrl []string, MaxConnectionNum, InitConnectionNum int) { +func init() { var syncMap sync.Map - for _, url := range BlockChainMonitorUrl { + for _, url := range conf.SvrConf.NodeUrls { key := generateId(url) endPoint := EndPoint{ Address: url, @@ -40,9 +41,9 @@ func Init(BlockChainMonitorUrl []string, MaxConnectionNum, InitConnectionNum int } config := commonPool.NewDefaultPoolConfig() - config.MaxTotal = MaxConnectionNum - config.MaxIdle = InitConnectionNum - config.MinIdle = InitConnectionNum + config.MaxTotal = conf.SvrConf.MaxConnectionNum + config.MaxIdle = conf.SvrConf.InitConnectionNum + config.MinIdle = conf.SvrConf.InitConnectionNum config.TestOnBorrow = true config.TestOnCreate = true config.TestWhileIdle = true diff --git a/main.go b/main.go index 9b4e66f..95b7767 100644 --- a/main.go +++ b/main.go @@ -1,13 +1,14 @@ package main import ( + "github.com/irisnet/rainbow-sync/db" + "github.com/irisnet/rainbow-sync/lib/pool" + "github.com/irisnet/rainbow-sync/logger" + "github.com/irisnet/rainbow-sync/model" + "github.com/irisnet/rainbow-sync/task" "os" "os/signal" "syscall" - "github.com/irisnet/rainbow-sync/logger" - "github.com/irisnet/rainbow-sync/db" - "github.com/irisnet/rainbow-sync/task" - "github.com/irisnet/rainbow-sync/model" "runtime" ) @@ -20,6 +21,7 @@ func main() { logger.Info("System Exit") db.Stop() + pool.ClosePool() if err := recover(); err != nil { logger.Error("", logger.Any("err", err)) diff --git a/task/create.go b/task/create.go index 42ed01a..de04bc9 100644 --- a/task/create.go +++ b/task/create.go @@ -4,7 +4,6 @@ import ( "fmt" "github.com/irisnet/rainbow-sync/conf" model "github.com/irisnet/rainbow-sync/db" - "github.com/irisnet/rainbow-sync/lib/pool" "github.com/irisnet/rainbow-sync/logger" imodel "github.com/irisnet/rainbow-sync/model" "gopkg.in/mgo.v2/bson" @@ -12,13 +11,6 @@ import ( "time" ) -func init() { - pool.Init(conf.SvrConf.NodeUrls, conf.SvrConf.MaxConnectionNum, conf.SvrConf.InitConnectionNum) - defer func() { - pool.ClosePool() - }() -} - type TaskIrisService struct { syncIrisModel imodel.SyncTask } From 76666069375a884bb6a5ba310581528d6f862f3b Mon Sep 17 00:00:00 2001 From: huangweichang Date: Mon, 25 Jan 2021 19:20:41 +0800 Subject: [PATCH 36/49] refactor about check node way --- lib/pool/pool_factory.go | 7 +++++++ task/create.go | 8 -------- task/execute.go | 22 ---------------------- 3 files changed, 7 insertions(+), 30 deletions(-) diff --git a/lib/pool/pool_factory.go b/lib/pool/pool_factory.go index 30efc74..98518e8 100644 --- a/lib/pool/pool_factory.go +++ b/lib/pool/pool_factory.go @@ -88,6 +88,13 @@ func (f *PoolFactory) ValidateObject(ctx context.Context, object *commonPool.Poo } return false } + stat, err := c.Status(ctx) + if err != nil { + return false + } + if stat.SyncInfo.CatchingUp { + return false + } return true } diff --git a/task/create.go b/task/create.go index de04bc9..dafa144 100644 --- a/task/create.go +++ b/task/create.go @@ -46,14 +46,6 @@ func (s *TaskIrisService) createTask(blockNumPerWorkerHandle int64, chanLimit ch } <-chanLimit }() - catchingup, err := isCatchingUp() - if err != nil { - logger.Error("Get node status failed", logger.String("err", err.Error())) - return - } - if catchingup { - return - } // check valid follow task if exist // status of valid follow task is unhandled or underway validFollowTasks, err := s.syncIrisModel.QueryAll( diff --git a/task/execute.go b/task/execute.go index 99da048..cb62dfe 100644 --- a/task/execute.go +++ b/task/execute.go @@ -60,15 +60,6 @@ func (s *TaskIrisService) executeTask(blockNumPerWorkerHandle, maxWorkerSleepTim <-chanLimit client.Release() }() - - catchingup, err := isCatchingUp() - if err != nil { - logger.Error("Get node status failed", logger.String("err", err.Error())) - return - } - if catchingup { - return - } // check whether exist executable task // status = unhandled or // status = underway and now - lastUpdateTime > confTime @@ -291,16 +282,3 @@ func getBlockChainLatestHeight() (int64, error) { return status.SyncInfo.LatestBlockHeight, nil } - -func isCatchingUp() (bool, error) { - client := pool.GetClient() - defer func() { - client.Release() - }() - status, err := client.Status(context.Background()) - if err != nil { - return true, err - } - - return status.SyncInfo.CatchingUp, nil -} From 6bbfb075cf24656ba53ac0915e088ea0eb707c14 Mon Sep 17 00:00:00 2001 From: huangweichang Date: Wed, 27 Jan 2021 17:50:48 +0800 Subject: [PATCH 37/49] add Bech32ChainPrefix env params --- block/config.go | 15 ++++++++------- conf/types.go | 8 +++++++- 2 files changed, 15 insertions(+), 8 deletions(-) diff --git a/block/config.go b/block/config.go index 3ed3a0c..d856bcc 100644 --- a/block/config.go +++ b/block/config.go @@ -2,9 +2,10 @@ package block import ( sdk "github.com/cosmos/cosmos-sdk/types" + "github.com/irisnet/rainbow-sync/conf" ) -const ( +var ( // Bech32ChainPrefix defines the prefix of this chain Bech32ChainPrefix = "i" @@ -25,17 +26,17 @@ const ( PrefixAddress = "a" // Bech32PrefixAccAddr defines the Bech32 prefix of an account's address - Bech32PrefixAccAddr = Bech32ChainPrefix + PrefixAcc + PrefixAddress + Bech32PrefixAccAddr = conf.SvrConf.Bech32ChainPrefix + PrefixAcc + PrefixAddress // Bech32PrefixAccPub defines the Bech32 prefix of an account's public key - Bech32PrefixAccPub = Bech32ChainPrefix + PrefixAcc + PrefixPublic + Bech32PrefixAccPub = conf.SvrConf.Bech32ChainPrefix + PrefixAcc + PrefixPublic // Bech32PrefixValAddr defines the Bech32 prefix of a validator's operator address - Bech32PrefixValAddr = Bech32ChainPrefix + PrefixValidator + PrefixAddress + Bech32PrefixValAddr = conf.SvrConf.Bech32ChainPrefix + PrefixValidator + PrefixAddress // Bech32PrefixValPub defines the Bech32 prefix of a validator's operator public key - Bech32PrefixValPub = Bech32ChainPrefix + PrefixValidator + PrefixPublic + Bech32PrefixValPub = conf.SvrConf.Bech32ChainPrefix + PrefixValidator + PrefixPublic // Bech32PrefixConsAddr defines the Bech32 prefix of a consensus node address - Bech32PrefixConsAddr = Bech32ChainPrefix + PrefixConsensus + PrefixAddress + Bech32PrefixConsAddr = conf.SvrConf.Bech32ChainPrefix + PrefixConsensus + PrefixAddress // Bech32PrefixConsPub defines the Bech32 prefix of a consensus node public key - Bech32PrefixConsPub = Bech32ChainPrefix + PrefixConsensus + PrefixPublic + Bech32PrefixConsPub = conf.SvrConf.Bech32ChainPrefix + PrefixConsensus + PrefixPublic TxStatusSuccess = "success" TxStatusFail = "fail" diff --git a/conf/types.go b/conf/types.go index d791042..90cc109 100644 --- a/conf/types.go +++ b/conf/types.go @@ -20,6 +20,7 @@ var ( initConnectionNum = 50 // fast init num of tendermint client pool maxConnectionNum = 100 // max size of tendermint client pool behindBlockNum = 0 + bech32ChainPrefix = "i" ) type ServerConf struct { @@ -32,6 +33,7 @@ type ServerConf struct { MaxConnectionNum int InitConnectionNum int BehindBlockNum int + Bech32ChainPrefix string } const ( @@ -45,6 +47,7 @@ const ( EnvNameWorkerMaxSleepTime = "WORKER_MAX_SLEEP_TIME" EnvNameBlockNumPerWorkerHandle = "BLOCK_NUM_PER_WORKER_HANDLE" EnvNameBehindBlockNum = "BEHIND_BLOCK_NUM" + EnvNameBech32ChainPrefix = "BECH32_CHAIN_PREFIX" ) // get value of env var @@ -69,7 +72,9 @@ func init() { logger.Fatal("Can't convert str to int", logger.String(EnvNameWorkerMaxSleepTime, v)) } } - + if v, ok := os.LookupEnv(EnvNameBech32ChainPrefix); ok { + bech32ChainPrefix = v + } if v, found := os.LookupEnv(EnvNameBlockNumPerWorkerHandle); found { blockNumPerWorkerHandle, err = strconv.Atoi(v) if err != nil { @@ -93,6 +98,7 @@ func init() { MaxConnectionNum: maxConnectionNum, InitConnectionNum: initConnectionNum, BehindBlockNum: behindBlockNum, + Bech32ChainPrefix: bech32ChainPrefix, } logger.Debug("print server config", logger.String("serverConf", utils.MarshalJsonIgnoreErr(SvrConf))) } From 37880a8d2c092ea8f6e57e8f20540f97cb5da014 Mon Sep 17 00:00:00 2001 From: huangweichang Date: Wed, 27 Jan 2021 18:54:57 +0800 Subject: [PATCH 38/49] refactor code about parse import msg sdk --- block/handler.go | 45 ++-- block/parse_tx.go | 18 +- block/parse_tx_test.go | 4 +- conf/db/types.go | 2 +- conf/types.go | 4 +- cron/cron_task.go | 158 ------------ cron/cron_task_test.go | 28 --- db/db.go | 2 +- go.mod | 2 +- go.sum | 6 +- lib/cdc/cdc.go | 78 ------ {logger => lib/logger}/zap_logger.go | 0 lib/msgsdk/msgsdk.go | 11 + lib/pool/pool_client.go | 2 +- lib/pool/pool_factory.go | 2 +- main.go | 2 +- model/tx.go | 77 ++---- model/tx_msg.go | 37 +-- msgs/bank/bank.go | 26 -- msgs/bank/msg_multisend.go | 58 ----- msgs/bank/msg_send.go | 43 ---- msgs/coinswap/coinswap.go | 129 ---------- msgs/coinswap/handler.go | 24 -- msgs/common.go | 49 ---- msgs/crisis/crisis.go | 18 -- msgs/crisis/verify_invariant.go | 39 --- msgs/distribution/distribution.go | 129 ---------- msgs/distribution/handler.go | 27 --- msgs/evidence/evidence.go | 18 -- msgs/evidence/submit_evidence.go | 41 ---- msgs/gov/gov.go | 140 ----------- msgs/gov/handler.go | 24 -- msgs/gov/proposal.go | 60 ----- msgs/htlc/handler.go | 24 -- msgs/htlc/htlc.go | 112 --------- msgs/ibc/client_create.go | 41 ---- msgs/ibc/client_update.go | 38 --- msgs/ibc/ibc.go | 30 --- msgs/ibc/ibc_transfer.go | 56 ----- msgs/ibc/recv_packet.go | 79 ------ msgs/nft/issue_denom.go | 42 ---- msgs/nft/nft.go | 38 --- msgs/nft/nft_burn.go | 42 ---- msgs/nft/nft_edit.go | 48 ---- msgs/nft/nft_mint.go | 47 ---- msgs/nft/nft_transfer.go | 50 ---- msgs/record/record.go | 22 -- msgs/record/record_create.go | 58 ----- msgs/service/service.go | 79 ------ msgs/service/service_bind.go | 54 ----- msgs/service/service_def.go | 48 ---- msgs/service/service_disable_bind.go | 41 ---- msgs/service/service_enable_bind.go | 49 ---- msgs/service/service_kill_request_context.go | 40 ---- msgs/service/service_pause_request_context.go | 40 ---- msgs/service/service_refund_deposit.go | 41 ---- msgs/service/service_request.go | 63 ----- msgs/service/service_response.go | 45 ---- msgs/service/service_set_withdraw_address.go | 39 --- msgs/service/service_start_request_context.go | 40 ---- msgs/service/service_update_bind.go | 53 ----- .../service/service_update_request_context.go | 57 ----- msgs/service/service_withdraw_earn_fee.go | 40 ---- msgs/slashing/slashing.go | 19 -- msgs/slashing/unjail.go | 34 --- msgs/staking/handler.go | 30 --- msgs/staking/stake.go | 224 ------------------ msgs/token/burn_token.go | 39 --- msgs/token/edit_token.go | 43 ---- msgs/token/issue_token.go | 49 ---- msgs/token/mint_token.go | 41 ---- msgs/token/token.go | 38 --- msgs/token/transfer_tokenowner.go | 39 --- msgs/types.go | 182 -------------- task/create.go | 2 +- task/execute.go | 2 +- task/start.go | 3 - utils/utils.go | 2 +- 78 files changed, 88 insertions(+), 3418 deletions(-) delete mode 100644 cron/cron_task.go delete mode 100644 cron/cron_task_test.go delete mode 100644 lib/cdc/cdc.go rename {logger => lib/logger}/zap_logger.go (100%) create mode 100644 lib/msgsdk/msgsdk.go delete mode 100644 msgs/bank/bank.go delete mode 100644 msgs/bank/msg_multisend.go delete mode 100644 msgs/bank/msg_send.go delete mode 100644 msgs/coinswap/coinswap.go delete mode 100644 msgs/coinswap/handler.go delete mode 100644 msgs/common.go delete mode 100644 msgs/crisis/crisis.go delete mode 100644 msgs/crisis/verify_invariant.go delete mode 100644 msgs/distribution/distribution.go delete mode 100644 msgs/distribution/handler.go delete mode 100644 msgs/evidence/evidence.go delete mode 100644 msgs/evidence/submit_evidence.go delete mode 100644 msgs/gov/gov.go delete mode 100644 msgs/gov/handler.go delete mode 100644 msgs/gov/proposal.go delete mode 100644 msgs/htlc/handler.go delete mode 100644 msgs/htlc/htlc.go delete mode 100644 msgs/ibc/client_create.go delete mode 100644 msgs/ibc/client_update.go delete mode 100644 msgs/ibc/ibc.go delete mode 100644 msgs/ibc/ibc_transfer.go delete mode 100644 msgs/ibc/recv_packet.go delete mode 100644 msgs/nft/issue_denom.go delete mode 100644 msgs/nft/nft.go delete mode 100644 msgs/nft/nft_burn.go delete mode 100644 msgs/nft/nft_edit.go delete mode 100644 msgs/nft/nft_mint.go delete mode 100644 msgs/nft/nft_transfer.go delete mode 100644 msgs/record/record.go delete mode 100644 msgs/record/record_create.go delete mode 100644 msgs/service/service.go delete mode 100644 msgs/service/service_bind.go delete mode 100644 msgs/service/service_def.go delete mode 100644 msgs/service/service_disable_bind.go delete mode 100644 msgs/service/service_enable_bind.go delete mode 100644 msgs/service/service_kill_request_context.go delete mode 100644 msgs/service/service_pause_request_context.go delete mode 100644 msgs/service/service_refund_deposit.go delete mode 100644 msgs/service/service_request.go delete mode 100644 msgs/service/service_response.go delete mode 100644 msgs/service/service_set_withdraw_address.go delete mode 100644 msgs/service/service_start_request_context.go delete mode 100644 msgs/service/service_update_bind.go delete mode 100644 msgs/service/service_update_request_context.go delete mode 100644 msgs/service/service_withdraw_earn_fee.go delete mode 100644 msgs/slashing/slashing.go delete mode 100644 msgs/slashing/unjail.go delete mode 100644 msgs/staking/handler.go delete mode 100644 msgs/staking/stake.go delete mode 100644 msgs/token/burn_token.go delete mode 100644 msgs/token/edit_token.go delete mode 100644 msgs/token/issue_token.go delete mode 100644 msgs/token/mint_token.go delete mode 100644 msgs/token/token.go delete mode 100644 msgs/token/transfer_tokenowner.go delete mode 100644 msgs/types.go diff --git a/block/handler.go b/block/handler.go index e22128c..1265092 100644 --- a/block/handler.go +++ b/block/handler.go @@ -2,64 +2,51 @@ package block import ( "github.com/cosmos/cosmos-sdk/types" - . "github.com/irisnet/rainbow-sync/msgs" - "github.com/irisnet/rainbow-sync/msgs/bank" - "github.com/irisnet/rainbow-sync/msgs/coinswap" - "github.com/irisnet/rainbow-sync/msgs/crisis" - "github.com/irisnet/rainbow-sync/msgs/distribution" - "github.com/irisnet/rainbow-sync/msgs/evidence" - "github.com/irisnet/rainbow-sync/msgs/gov" - "github.com/irisnet/rainbow-sync/msgs/htlc" - "github.com/irisnet/rainbow-sync/msgs/ibc" - "github.com/irisnet/rainbow-sync/msgs/nft" - "github.com/irisnet/rainbow-sync/msgs/record" - "github.com/irisnet/rainbow-sync/msgs/service" - "github.com/irisnet/rainbow-sync/msgs/slashing" - "github.com/irisnet/rainbow-sync/msgs/staking" - "github.com/irisnet/rainbow-sync/msgs/token" + "github.com/irisnet/rainbow-sync/lib/msgsdk" + . "github.com/weichang-bianjie/msg-sdk/modules" ) func HandleTxMsg(v types.Msg) MsgDocInfo { - if BankDocInfo, ok := bank.HandleTxMsg(v); ok { + if BankDocInfo, ok := msgsdk.MsgClient.Bank.HandleTxMsg(v); ok { return BankDocInfo } - if IServiceDocInfo, ok := service.HandleTxMsg(v); ok { + if IServiceDocInfo, ok := msgsdk.MsgClient.Service.HandleTxMsg(v); ok { return IServiceDocInfo } - if NftDocInfo, ok := nft.HandleTxMsg(v); ok { + if NftDocInfo, ok := msgsdk.MsgClient.Nft.HandleTxMsg(v); ok { return NftDocInfo } - if RecordDocInfo, ok := record.HandleTxMsg(v); ok { + if RecordDocInfo, ok := msgsdk.MsgClient.Record.HandleTxMsg(v); ok { return RecordDocInfo } - if TokenDocInfo, ok := token.HandleTxMsg(v); ok { + if TokenDocInfo, ok := msgsdk.MsgClient.Token.HandleTxMsg(v); ok { return TokenDocInfo } - if CoinswapDocInfo, ok := coinswap.HandleTxMsg(v); ok { + if CoinswapDocInfo, ok := msgsdk.MsgClient.Coinswap.HandleTxMsg(v); ok { return CoinswapDocInfo } - if CrisisDocInfo, ok := crisis.HandleTxMsg(v); ok { + if CrisisDocInfo, ok := msgsdk.MsgClient.Crisis.HandleTxMsg(v); ok { return CrisisDocInfo } - if DistrubutionDocInfo, ok := distribution.HandleTxMsg(v); ok { + if DistrubutionDocInfo, ok := msgsdk.MsgClient.Distribution.HandleTxMsg(v); ok { return DistrubutionDocInfo } - if SlashingDocInfo, ok := slashing.HandleTxMsg(v); ok { + if SlashingDocInfo, ok := msgsdk.MsgClient.Slashing.HandleTxMsg(v); ok { return SlashingDocInfo } - if EvidenceDocInfo, ok := evidence.HandleTxMsg(v); ok { + if EvidenceDocInfo, ok := msgsdk.MsgClient.Evidence.HandleTxMsg(v); ok { return EvidenceDocInfo } - if HtlcDocInfo, ok := htlc.HandleTxMsg(v); ok { + if HtlcDocInfo, ok := msgsdk.MsgClient.Htlc.HandleTxMsg(v); ok { return HtlcDocInfo } - if StakingDocInfo, ok := staking.HandleTxMsg(v); ok { + if StakingDocInfo, ok := msgsdk.MsgClient.Staking.HandleTxMsg(v); ok { return StakingDocInfo } - if GovDocInfo, ok := gov.HandleTxMsg(v); ok { + if GovDocInfo, ok := msgsdk.MsgClient.Gov.HandleTxMsg(v); ok { return GovDocInfo } - if IbcDocInfo, ok := ibc.HandleTxMsg(v); ok { + if IbcDocInfo, ok := msgsdk.MsgClient.Ibc.HandleTxMsg(v); ok { return IbcDocInfo } return MsgDocInfo{} diff --git a/block/parse_tx.go b/block/parse_tx.go index f518301..84a5917 100644 --- a/block/parse_tx.go +++ b/block/parse_tx.go @@ -5,13 +5,14 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" "github.com/cosmos/cosmos-sdk/x/auth/signing" "github.com/irisnet/rainbow-sync/db" - "github.com/irisnet/rainbow-sync/lib/cdc" + "github.com/irisnet/rainbow-sync/lib/logger" "github.com/irisnet/rainbow-sync/lib/pool" - "github.com/irisnet/rainbow-sync/logger" "github.com/irisnet/rainbow-sync/model" "github.com/irisnet/rainbow-sync/utils" aTypes "github.com/tendermint/tendermint/abci/types" "github.com/tendermint/tendermint/types" + "github.com/weichang-bianjie/msg-sdk/codec" + msgsdktypes "github.com/weichang-bianjie/msg-sdk/types" "golang.org/x/net/context" "gopkg.in/mgo.v2/bson" "gopkg.in/mgo.v2/txn" @@ -139,11 +140,11 @@ func ParseTx(txBytes types.Tx, block *types.Block, client *pool.Client) (model.T var ( docMsgs []model.TxMsg - docTxMsgs []model.DocTxMsg + docTxMsgs []msgsdktypes.DocTxMsg docTx model.Tx - actualFee model.Coin + actualFee msgsdktypes.Coin ) - Tx, err := cdc.GetTxDecoder()(txBytes) + Tx, err := codec.GetTxDecoder()(txBytes) if err != nil { logger.Error("TxDecoder have error", logger.String("err", err.Error()), logger.Int64("height", block.Height)) @@ -171,10 +172,7 @@ func ParseTx(txBytes types.Tx, block *types.Block, client *pool.Client) (model.T } if len(fee.Amount) > 0 { - actualFee = model.Coin{ - Denom: fee.Amount[0].Denom, - Amount: fee.Amount[0].Amount, - } + actualFee = fee.Amount[0] } docTx = model.Tx{ @@ -256,7 +254,7 @@ func ParseTx(txBytes types.Tx, block *types.Block, client *pool.Client) (model.T func BuildFee(fee sdk.Coins, gas uint64) *model.Fee { return &model.Fee{ - Amount: model.BuildDocCoins(fee), + Amount: msgsdktypes.BuildDocCoins(fee), Gas: int64(gas), } } diff --git a/block/parse_tx_test.go b/block/parse_tx_test.go index 3811983..4e21144 100644 --- a/block/parse_tx_test.go +++ b/block/parse_tx_test.go @@ -2,13 +2,11 @@ package block import ( "encoding/json" - irisConf "github.com/irisnet/rainbow-sync/conf" "github.com/irisnet/rainbow-sync/lib/pool" "testing" ) func TestIris_Block_ParseIrisTx(t *testing.T) { - pool.Init(irisConf.SvrConf.NodeUrls, irisConf.SvrConf.MaxConnectionNum, irisConf.SvrConf.InitConnectionNum) client := pool.GetClient() defer func() { client.Release() @@ -24,7 +22,7 @@ func TestIris_Block_ParseIrisTx(t *testing.T) { { name: "test parse iris tx", args: args{ - b: 9952, + b: 1995, client: client, }, }, diff --git a/conf/db/types.go b/conf/db/types.go index 74b5a4a..0c5ce7a 100644 --- a/conf/db/types.go +++ b/conf/db/types.go @@ -2,7 +2,7 @@ package db import ( constant "github.com/irisnet/rainbow-sync/conf" - "github.com/irisnet/rainbow-sync/logger" + "github.com/irisnet/rainbow-sync/lib/logger" "os" ) diff --git a/conf/types.go b/conf/types.go index 90cc109..a4b382c 100644 --- a/conf/types.go +++ b/conf/types.go @@ -1,7 +1,7 @@ package conf import ( - "github.com/irisnet/rainbow-sync/logger" + "github.com/irisnet/rainbow-sync/lib/logger" "github.com/irisnet/rainbow-sync/utils" "os" "strconv" @@ -10,7 +10,7 @@ import ( var ( SvrConf *ServerConf - blockChainMonitorUrl = []string{"tcp://192.168.150.31:16657"} + blockChainMonitorUrl = []string{"tcp://192.168.150.60:21657"} workerNumCreateTask = 1 workerNumExecuteTask = 30 diff --git a/cron/cron_task.go b/cron/cron_task.go deleted file mode 100644 index 8f6c08d..0000000 --- a/cron/cron_task.go +++ /dev/null @@ -1,158 +0,0 @@ -package cron - -import ( - "github.com/irisnet/rainbow-sync/block" - "github.com/irisnet/rainbow-sync/db" - "github.com/irisnet/rainbow-sync/lib/pool" - "github.com/irisnet/rainbow-sync/logger" - "github.com/irisnet/rainbow-sync/model" - "gopkg.in/mgo.v2" - "gopkg.in/mgo.v2/bson" - "os" - "os/signal" - "time" -) - -type CronService struct{} - -func (s *CronService) StartCronService() { - fn := func() { - logger.Debug("Start CronService ...") - ticker := time.NewTicker(5 * time.Minute) - defer ticker.Stop() - stop := make(chan os.Signal) - signal.Notify(stop, os.Interrupt) - - fn_update := func() { - defer func() { - if r := recover(); r != nil { - logger.Error("CronService have error", logger.Any("err", r)) - } - }() - - runValue := true - skip := 0 - for runValue { - total, err := GetUnknownTxsByPage(skip, 20) - if err != nil { - logger.Error("GetUnknownTxsByPage have error", logger.String("err", err.Error())) - } - if total < 20 { - runValue = false - logger.Debug("finish GetUnknownTxsByPage.") - } else { - skip = skip + total - logger.Debug("continue GetUnknownTxsByPage", logger.Int("skip", skip)) - } - } - - logger.Debug("finish update txs.") - } - fn_update() - for { - select { - case <-ticker.C: - fn_update() - case <-stop: - close(stop) - logger.Debug(" CronService Quit...") - return - } - - } - } - - go fn() -} - -func GetUnknownTxsByPage(skip, limit int) (int, error) { - - var res []model.Tx - q := bson.M{"status": "unknown"} - sorts := []string{"-height"} - - fn := func(c *mgo.Collection) error { - return c.Find(q).Sort(sorts...).Skip(skip).Limit(limit).All(&res) - } - - if err := db.ExecCollection(model.CollectionNameIrisTx, fn); err != nil { - return 0, err - } - - if len(res) > 0 { - doWork(res) - } - - return len(res), nil -} - -func doWork(iristxs []model.Tx) { - client := pool.GetClient() - defer func() { - client.Release() - }() - - for _, val := range iristxs { - txs, msgs, err := ParseUnknownTxs(val.Height, client) - if err != nil { - continue - } - if err := UpdateUnknowTxs(txs); err != nil { - logger.Warn("UpdateUnknowTxs have error", logger.String("error", err.Error())) - } - if err := UpdateUnknowMsgs(msgs); err != nil { - logger.Warn("UpdateUnknowMsgs have error", logger.String("error", err.Error())) - } - } - -} - -func ParseUnknownTxs(height int64, client *pool.Client) (resTxs []*model.Tx, txMsgs []model.TxMsg, err error) { - resTxs, txMsgs, err = block.ParseTxs(height, client) - if err != nil { - logger.Error("Parse block txs fail", logger.Int64("block", height), - logger.String("err", err.Error())) - } - return -} - -func UpdateUnknowTxs(iristx []*model.Tx) error { - - update_fn := func(tx *model.Tx) error { - fn := func(c *mgo.Collection) error { - return c.Update(bson.M{"tx_hash": tx.TxHash}, - bson.M{"$set": bson.M{"actual_fee": tx.ActualFee, "status": tx.Status, "events": tx.Events}}) - } - - if err := db.ExecCollection(model.CollectionNameIrisTx, fn); err != nil { - return err - } - return nil - } - - for _, dbval := range iristx { - update_fn(dbval) - } - - return nil -} -func UpdateUnknowMsgs(iristx []model.TxMsg) error { - - update_fn := func(txmsg *model.TxMsg) error { - fn := func(c *mgo.Collection) error { - return c.Update(bson.M{"tx_hash": txmsg.TxHash, "msg_index": txmsg.MsgIndex}, - bson.M{"$set": bson.M{model.IrisTxMsgStatus: txmsg.TxStatus, "events": txmsg.Events}}) - } - - if err := db.ExecCollection(model.CollectionNameIrisTxMsg, fn); err != nil { - return err - } - return nil - } - - for _, dbval := range iristx { - update_fn(&dbval) - } - - return nil -} diff --git a/cron/cron_task_test.go b/cron/cron_task_test.go deleted file mode 100644 index aa79b02..0000000 --- a/cron/cron_task_test.go +++ /dev/null @@ -1,28 +0,0 @@ -package cron - -import ( - "github.com/irisnet/rainbow-sync/conf" - "github.com/irisnet/rainbow-sync/db" - "github.com/irisnet/rainbow-sync/lib/pool" - "testing" - "time" -) - -func TestGetUnknownTxsByPage(t *testing.T) { - pool.Init(conf.SvrConf.NodeUrls, conf.SvrConf.MaxConnectionNum, conf.SvrConf.InitConnectionNum) - db.Start() - defer func() { - db.Stop() - }() - GetUnknownTxsByPage(0, 2) -} - -func TestCronService_StartCronService(t *testing.T) { - pool.Init(conf.SvrConf.NodeUrls, conf.SvrConf.MaxConnectionNum, conf.SvrConf.InitConnectionNum) - db.Start() - defer func() { - db.Stop() - }() - new(CronService).StartCronService() - time.Sleep(1 * time.Minute) -} diff --git a/db/db.go b/db/db.go index eca033e..6e60bbc 100644 --- a/db/db.go +++ b/db/db.go @@ -3,7 +3,7 @@ package db import ( "fmt" conf "github.com/irisnet/rainbow-sync/conf/db" - "github.com/irisnet/rainbow-sync/logger" + "github.com/irisnet/rainbow-sync/lib/logger" "gopkg.in/mgo.v2" "gopkg.in/mgo.v2/bson" "gopkg.in/mgo.v2/txn" diff --git a/go.mod b/go.mod index b4181d0..b65e042 100644 --- a/go.mod +++ b/go.mod @@ -4,9 +4,9 @@ go 1.15 require ( github.com/cosmos/cosmos-sdk v0.40.0 - github.com/irisnet/irismod v1.1.1-0.20210111090024-463e3e11dc14 github.com/jolestar/go-commons-pool v2.0.0+incompatible github.com/tendermint/tendermint v0.34.1 + github.com/weichang-bianjie/msg-sdk v0.0.0-20210127095957-c6c9a54ce1f2 go.uber.org/zap v1.13.0 golang.org/x/net v0.0.0-20200930145003-4acb6c075d10 gopkg.in/mgo.v2 v2.0.0-20190816093944-a6b53ec6cb22 diff --git a/go.sum b/go.sum index a4011a6..77b2064 100644 --- a/go.sum +++ b/go.sum @@ -285,8 +285,8 @@ github.com/hudl/fargo v1.3.0/go.mod h1:y3CKSmjA+wD2gak7sUSXTAoopbhU08POFhmITJgmK github.com/inconshreveable/mousetrap v1.0.0 h1:Z8tu5sraLXCXIcARxBp/8cbvlwVa7Z1NHg9XEKhtSvM= github.com/inconshreveable/mousetrap v1.0.0/go.mod h1:PxqpIevigyE2G7u3NXJIT2ANytuPF1OarO4DADm73n8= github.com/influxdata/influxdb1-client v0.0.0-20191209144304-8bf82d3c094d/go.mod h1:qj24IKcXYK6Iy9ceXlo3Tc+vtHo9lIhSX5JddghvEPo= -github.com/irisnet/irismod v1.1.1-0.20210111090024-463e3e11dc14 h1:bIwEg3HTAjKtHvUPIQ/RXEzig7cd1VE8PSM7OVqNFws= -github.com/irisnet/irismod v1.1.1-0.20210111090024-463e3e11dc14/go.mod h1:j7coXR8hg12Jp6B9MlvrnYdjoPGf8vTV/GIyZeL8x9I= +github.com/irisnet/irismod v1.2.0 h1:he8+LatwBcoIQ2qX7lTpEJLQFhfgISNpHOkB+ETyTFU= +github.com/irisnet/irismod v1.2.0/go.mod h1:j7coXR8hg12Jp6B9MlvrnYdjoPGf8vTV/GIyZeL8x9I= github.com/jessevdk/go-flags v0.0.0-20141203071132-1679536dcc89/go.mod h1:4FA24M0QyGHXBuZZK/XkWh8h0e1EYbRYJSGM75WSRxI= github.com/jessevdk/go-flags v1.4.0/go.mod h1:4FA24M0QyGHXBuZZK/XkWh8h0e1EYbRYJSGM75WSRxI= github.com/jmespath/go-jmespath v0.0.0-20180206201540-c2b33e8439af/go.mod h1:Nht3zPeWKUH0NzdCt2Blrr5ys8VGpn0CEB0cQHVjt7k= @@ -549,6 +549,8 @@ github.com/ugorji/go v1.1.4/go.mod h1:uQMGLiO92mf5W77hV/PUCpI3pbzQx3CRekS0kk+RGr github.com/ugorji/go/codec v0.0.0-20181204163529-d75b2dcb6bc8/go.mod h1:VFNgLljTbGfSG7qAOspJ7OScBnGdDN/yBr0sguwnwf0= github.com/urfave/cli v1.20.0/go.mod h1:70zkFmudgCuE/ngEzBv17Jvp/497gISqfk5gWijbERA= github.com/urfave/cli v1.22.1/go.mod h1:Gos4lmkARVdJ6EkW0WaNv/tZAAMe9V7XWyB60NtXRu0= +github.com/weichang-bianjie/msg-sdk v0.0.0-20210127095957-c6c9a54ce1f2 h1:ZqcjPzs972uxtqcSsoAj8ZkmjNeQ8DjQFKt3f4PG/rA= +github.com/weichang-bianjie/msg-sdk v0.0.0-20210127095957-c6c9a54ce1f2/go.mod h1:hy84on4Kw7q5WiiyD2LjBYcQblr5UYDwqxPW2oL2Tik= github.com/xeipuuv/gojsonpointer v0.0.0-20180127040702-4e3ac2762d5f h1:J9EGpcZtP0E/raorCMxlFGSTBrsSlaDGf3jU/qvAE2c= github.com/xeipuuv/gojsonpointer v0.0.0-20180127040702-4e3ac2762d5f/go.mod h1:N2zxlSyiKSe5eX1tZViRH5QA0qijqEDrYZiPEAiq3wU= github.com/xeipuuv/gojsonreference v0.0.0-20180127040603-bd5ef7bd5415 h1:EzJWgHovont7NscjpAxXsDA8S8BMYve8Y5+7cuRE7R0= diff --git a/lib/cdc/cdc.go b/lib/cdc/cdc.go deleted file mode 100644 index d9b6ac0..0000000 --- a/lib/cdc/cdc.go +++ /dev/null @@ -1,78 +0,0 @@ -package cdc - -import ( - "github.com/cosmos/cosmos-sdk/codec" - ctypes "github.com/cosmos/cosmos-sdk/codec/types" - "github.com/cosmos/cosmos-sdk/simapp/params" - "github.com/cosmos/cosmos-sdk/std" - sdk "github.com/cosmos/cosmos-sdk/types" - "github.com/cosmos/cosmos-sdk/types/module" - "github.com/cosmos/cosmos-sdk/x/auth" - "github.com/cosmos/cosmos-sdk/x/auth/tx" - "github.com/cosmos/cosmos-sdk/x/bank" - "github.com/cosmos/cosmos-sdk/x/crisis" - "github.com/cosmos/cosmos-sdk/x/distribution" - "github.com/cosmos/cosmos-sdk/x/evidence" - "github.com/cosmos/cosmos-sdk/x/gov" - sdkparams "github.com/cosmos/cosmos-sdk/x/params" - "github.com/cosmos/cosmos-sdk/x/slashing" - "github.com/cosmos/cosmos-sdk/x/staking" - "github.com/cosmos/cosmos-sdk/x/upgrade" - "github.com/irisnet/irismod/modules/coinswap" - "github.com/irisnet/irismod/modules/htlc" - "github.com/irisnet/irismod/modules/nft" - "github.com/irisnet/irismod/modules/record" - "github.com/irisnet/irismod/modules/service" - "github.com/irisnet/irismod/modules/token" -) - -var ( - encodecfg params.EncodingConfig - moduleBasics = module.NewBasicManager( - auth.AppModuleBasic{}, - bank.AppModuleBasic{}, - service.AppModuleBasic{}, - nft.AppModuleBasic{}, - htlc.AppModuleBasic{}, - coinswap.AppModuleBasic{}, - record.AppModuleBasic{}, - token.AppModuleBasic{}, - gov.AppModuleBasic{}, - sdkparams.AppModuleBasic{}, - upgrade.AppModuleBasic{}, - staking.AppModuleBasic{}, - distribution.AppModuleBasic{}, - slashing.AppModuleBasic{}, - evidence.AppModuleBasic{}, - crisis.AppModuleBasic{}, - htlc.AppModuleBasic{}, - coinswap.AppModuleBasic{}, - ) -) - -// 初始化账户地址前缀 -func init() { - var cdc = codec.NewLegacyAmino() - - interfaceRegistry := ctypes.NewInterfaceRegistry() - marshaler := codec.NewProtoCodec(interfaceRegistry) - txCfg := tx.NewTxConfig(marshaler, tx.DefaultSignModes) - - encodecfg = params.EncodingConfig{ - InterfaceRegistry: interfaceRegistry, - Marshaler: marshaler, - TxConfig: txCfg, - Amino: cdc, - } - std.RegisterLegacyAminoCodec(encodecfg.Amino) - std.RegisterInterfaces(encodecfg.InterfaceRegistry) - moduleBasics.RegisterLegacyAminoCodec(encodecfg.Amino) - moduleBasics.RegisterInterfaces(encodecfg.InterfaceRegistry) -} -func GetTxDecoder() sdk.TxDecoder { - return encodecfg.TxConfig.TxDecoder() -} - -func GetMarshaler() codec.Marshaler { - return encodecfg.Marshaler -} diff --git a/logger/zap_logger.go b/lib/logger/zap_logger.go similarity index 100% rename from logger/zap_logger.go rename to lib/logger/zap_logger.go diff --git a/lib/msgsdk/msgsdk.go b/lib/msgsdk/msgsdk.go new file mode 100644 index 0000000..a651077 --- /dev/null +++ b/lib/msgsdk/msgsdk.go @@ -0,0 +1,11 @@ +package msgsdk + +import "github.com/weichang-bianjie/msg-sdk" + +var ( + MsgClient msg_sdk.MsgClient +) + +func init() { + MsgClient = msg_sdk.NewMsgClient() +} diff --git a/lib/pool/pool_client.go b/lib/pool/pool_client.go index ab9c239..08b8667 100644 --- a/lib/pool/pool_client.go +++ b/lib/pool/pool_client.go @@ -6,7 +6,7 @@ package pool import ( "context" "fmt" - "github.com/irisnet/rainbow-sync/logger" + "github.com/irisnet/rainbow-sync/lib/logger" rpcClient "github.com/tendermint/tendermint/rpc/client/http" "time" ) diff --git a/lib/pool/pool_factory.go b/lib/pool/pool_factory.go index 98518e8..f78fe84 100644 --- a/lib/pool/pool_factory.go +++ b/lib/pool/pool_factory.go @@ -3,7 +3,7 @@ package pool import ( "context" "github.com/irisnet/rainbow-sync/conf" - "github.com/irisnet/rainbow-sync/logger" + "github.com/irisnet/rainbow-sync/lib/logger" commonPool "github.com/jolestar/go-commons-pool" "math/rand" "sync" diff --git a/main.go b/main.go index 95b7767..f839dff 100644 --- a/main.go +++ b/main.go @@ -2,8 +2,8 @@ package main import ( "github.com/irisnet/rainbow-sync/db" + "github.com/irisnet/rainbow-sync/lib/logger" "github.com/irisnet/rainbow-sync/lib/pool" - "github.com/irisnet/rainbow-sync/logger" "github.com/irisnet/rainbow-sync/model" "github.com/irisnet/rainbow-sync/task" "os" diff --git a/model/tx.go b/model/tx.go index 887028f..e1c52b4 100644 --- a/model/tx.go +++ b/model/tx.go @@ -1,28 +1,28 @@ package model import ( - sdk "github.com/cosmos/cosmos-sdk/types" "github.com/irisnet/rainbow-sync/db" + "github.com/weichang-bianjie/msg-sdk/types" "gopkg.in/mgo.v2" "gopkg.in/mgo.v2/bson" ) type Tx struct { - Time int64 `bson:"time"` - Height int64 `bson:"height"` - TxHash string `bson:"tx_hash"` - Fee *Fee `bson:"fee"` - ActualFee Coin `bson:"actual_fee"` - Memo string `bson:"memo"` - Status string `bson:"status"` - Log string `bson:"log"` - Types []string `bson:"types"` - Events []Event `bson:"events"` - Msgs []DocTxMsg `bson:"msgs"` - Signers []string `bson:"signers"` - Addrs []string `bson:"addrs"` - TxIndex uint32 `bson:"tx_index"` - Ext interface{} `bson:"ext"` + Time int64 `bson:"time"` + Height int64 `bson:"height"` + TxHash string `bson:"tx_hash"` + Fee *Fee `bson:"fee"` + ActualFee types.Coin `bson:"actual_fee"` + Memo string `bson:"memo"` + Status string `bson:"status"` + Log string `bson:"log"` + Types []string `bson:"types"` + Events []Event `bson:"events"` + Msgs []types.DocTxMsg `bson:"msgs"` + Signers []string `bson:"signers"` + Addrs []string `bson:"addrs"` + TxIndex uint32 `bson:"tx_index"` + Ext interface{} `bson:"ext"` } type ( @@ -42,16 +42,6 @@ type ( } ) -type DocTxMsg struct { - Type string `bson:"type"` - Msg Msg `bson:"msg"` -} - -type Msg interface { - GetType() string - BuildMsg(msg interface{}) -} - const ( CollectionNameIrisTx = "sync_iris_tx" ) @@ -80,38 +70,7 @@ func (d Tx) EnsureIndexes() { db.EnsureIndexes(d.Name(), indexes) } -type Coin struct { - Denom string `bson:"denom"` - Amount string `bson:"amount"` -} - -type Coins []*Coin - type Fee struct { - Amount []Coin `bson:"amount"` - Gas int64 `bson:"gas"` -} - -func BuildDocCoins(coins sdk.Coins) []Coin { - var ( - res []Coin - ) - if len(coins) > 0 { - for _, v := range coins { - c := Coin{ - Denom: v.Denom, - Amount: v.Amount.String(), - } - res = append(res, c) - } - } - - return res -} - -func BuildDocCoin(coin sdk.Coin) Coin { - return Coin{ - Denom: coin.Denom, - Amount: coin.Amount.String(), - } + Amount []types.Coin `bson:"amount"` + Gas int64 `bson:"gas"` } diff --git a/model/tx_msg.go b/model/tx_msg.go index 9071eba..2b45151 100644 --- a/model/tx_msg.go +++ b/model/tx_msg.go @@ -2,29 +2,30 @@ package model import ( "github.com/irisnet/rainbow-sync/db" + "github.com/weichang-bianjie/msg-sdk/types" "gopkg.in/mgo.v2" "gopkg.in/mgo.v2/bson" ) type TxMsg struct { - Time int64 `bson:"time"` - TxFee Coin `bson:"tx_fee"` - Height int64 `bson:"height"` - TxHash string `bson:"tx_hash"` - Type string `bson:"type"` - MsgIndex int `bson:"msg_index"` - TxIndex uint32 `bson:"tx_index"` - TxStatus string `bson:"tx_status"` - TxMemo string `bson:"tx_memo"` - TxLog string `bson:"tx_log"` - GasUsed int64 `bson:"gas_used"` - GasWanted int64 `bson:"gas_wanted"` - Events []Event `bson:"events"` - Msg DocTxMsg `bson:"msg"` - Addrs []string `bson:"addrs"` - TxAddrs []string `bson:"tx_addrs"` - Signers []string `bson:"signers"` - TxSigners []string `bson:"tx_signers"` + Time int64 `bson:"time"` + TxFee types.Coin `bson:"tx_fee"` + Height int64 `bson:"height"` + TxHash string `bson:"tx_hash"` + Type string `bson:"type"` + MsgIndex int `bson:"msg_index"` + TxIndex uint32 `bson:"tx_index"` + TxStatus string `bson:"tx_status"` + TxMemo string `bson:"tx_memo"` + TxLog string `bson:"tx_log"` + GasUsed int64 `bson:"gas_used"` + GasWanted int64 `bson:"gas_wanted"` + Events []Event `bson:"events"` + Msg types.DocTxMsg `bson:"msg"` + Addrs []string `bson:"addrs"` + TxAddrs []string `bson:"tx_addrs"` + Signers []string `bson:"signers"` + TxSigners []string `bson:"tx_signers"` } const ( diff --git a/msgs/bank/bank.go b/msgs/bank/bank.go deleted file mode 100644 index 940bfce..0000000 --- a/msgs/bank/bank.go +++ /dev/null @@ -1,26 +0,0 @@ -package bank - -import ( - "github.com/cosmos/cosmos-sdk/types" - . "github.com/irisnet/rainbow-sync/msgs" -) - -func HandleTxMsg(v types.Msg) (MsgDocInfo, bool) { - var ( - msgDocInfo MsgDocInfo - ) - ok := true - switch v.Type() { - case new(MsgSend).Type(): - docMsg := DocMsgSend{} - msgDocInfo = docMsg.HandleTxMsg(v) - break - case new(MsgMultiSend).Type(): - docMsg := DocMsgMultiSend{} - msgDocInfo = docMsg.HandleTxMsg(v) - break - default: - ok = false - } - return msgDocInfo, ok -} diff --git a/msgs/bank/msg_multisend.go b/msgs/bank/msg_multisend.go deleted file mode 100644 index 1dd3003..0000000 --- a/msgs/bank/msg_multisend.go +++ /dev/null @@ -1,58 +0,0 @@ -package bank - -import ( - "github.com/irisnet/rainbow-sync/model" - . "github.com/irisnet/rainbow-sync/msgs" - "github.com/irisnet/rainbow-sync/utils" -) - -type ( - DocMsgMultiSend struct { - Inputs []Item `bson:"inputs"` - Outputs []Item `bson:"outputs"` - TempData []string `bson:"-"` - } - Item struct { - Address string `bson:"address"` - Coins []model.Coin `bson:"coins"` - } -) - -func (m *DocMsgMultiSend) GetType() string { - return MsgTypeMultiSend -} - -func (m *DocMsgMultiSend) BuildMsg(v interface{}) { - msg := v.(*MsgMultiSend) - for _, one := range msg.Inputs { - m.Inputs = append(m.Inputs, Item{Address: one.Address, Coins: model.BuildDocCoins(one.Coins)}) - m.TempData = append(m.TempData, one.Address) - } - for _, one := range msg.Outputs { - m.Outputs = append(m.Outputs, Item{Address: one.Address, Coins: model.BuildDocCoins(one.Coins)}) - m.TempData = append(m.TempData, one.Address) - } - -} - -func (m *DocMsgMultiSend) HandleTxMsg(v SdkMsg) MsgDocInfo { - var ( - addrs []string - msg MsgMultiSend - ) - - utils.UnMarshalJsonIgnoreErr(utils.MarshalJsonIgnoreErr(v), &msg) - - for _, one := range msg.Inputs { - addrs = append(addrs, one.Address) - } - for _, one := range msg.Outputs { - addrs = append(addrs, one.Address) - } - - handler := func() (Msg, []string) { - return m, addrs - } - - return CreateMsgDocInfo(v, handler) -} diff --git a/msgs/bank/msg_send.go b/msgs/bank/msg_send.go deleted file mode 100644 index a72fd44..0000000 --- a/msgs/bank/msg_send.go +++ /dev/null @@ -1,43 +0,0 @@ -package bank - -import ( - "github.com/irisnet/rainbow-sync/model" - . "github.com/irisnet/rainbow-sync/msgs" - "github.com/irisnet/rainbow-sync/utils" -) - -type ( - DocMsgSend struct { - FromAddress string `bson:"from_address"` - ToAddress string `bson:"to_address"` - Amount []model.Coin `bson:"amount"` - } -) - -func (m *DocMsgSend) GetType() string { - return MsgTypeSend -} - -func (m *DocMsgSend) BuildMsg(v interface{}) { - msg := v.(*MsgSend) - m.FromAddress = msg.FromAddress - m.ToAddress = msg.ToAddress - m.Amount = model.BuildDocCoins(msg.Amount) -} - -func (m *DocMsgSend) HandleTxMsg(v SdkMsg) MsgDocInfo { - var ( - addrs []string - msg MsgSend - ) - - utils.UnMarshalJsonIgnoreErr(utils.MarshalJsonIgnoreErr(v), &msg) - - addrs = append(addrs, msg.FromAddress, msg.ToAddress) - - handler := func() (Msg, []string) { - return m, addrs - } - - return CreateMsgDocInfo(v, handler) -} diff --git a/msgs/coinswap/coinswap.go b/msgs/coinswap/coinswap.go deleted file mode 100644 index be324e5..0000000 --- a/msgs/coinswap/coinswap.go +++ /dev/null @@ -1,129 +0,0 @@ -package coinswap - -import ( - sdk "github.com/cosmos/cosmos-sdk/types" - "github.com/irisnet/rainbow-sync/model" - . "github.com/irisnet/rainbow-sync/msgs" -) - -type DocTxMsgAddLiquidity struct { - MaxToken model.Coin `bson:"max_token"` // coin to be deposited as liquidity with an upper bound for its amount - ExactIrisAmt string `bson:"exact_iris_amt"` // exact amount of native asset being add to the liquidity pool - MinLiquidity string `bson:"min_liquidity"` // lower bound UNI sender is willing to accept for deposited coins - Deadline int64 `bson:"deadline"` - Sender string `bson:"sender"` -} - -func (doctx *DocTxMsgAddLiquidity) GetType() string { - return MsgTypeAddLiquidity -} - -func (doctx *DocTxMsgAddLiquidity) BuildMsg(txMsg interface{}) { - msg := txMsg.(*MsgAddLiquidity) - doctx.Sender = msg.Sender - doctx.MinLiquidity = msg.MinLiquidity.String() - doctx.ExactIrisAmt = msg.ExactStandardAmt.String() - doctx.Deadline = msg.Deadline - doctx.MaxToken = model.BuildDocCoin(msg.MaxToken) -} - -func (m *DocTxMsgAddLiquidity) HandleTxMsg(v sdk.Msg) MsgDocInfo { - - var ( - addrs []string - msg MsgAddLiquidity - ) - - ConvertMsg(v, &msg) - addrs = append(addrs, msg.Sender) - handler := func() (Msg, []string) { - return m, addrs - } - - return CreateMsgDocInfo(v, handler) -} - -type DocTxMsgRemoveLiquidity struct { - MinToken string `bson:"min_token"` // coin to be withdrawn with a lower bound for its amount - WithdrawLiquidity model.Coin `bson:"withdraw_liquidity"` // amount of UNI to be burned to withdraw liquidity from a reserve pool - MinIrisAmt string `bson:"min_iris_amt"` // minimum amount of the native asset the sender is willing to accept - Deadline int64 `bson:"deadline"` - Sender string `bson:"sender"` -} - -func (doctx *DocTxMsgRemoveLiquidity) GetType() string { - return MsgTypeRemoveLiquidity -} - -func (doctx *DocTxMsgRemoveLiquidity) BuildMsg(txMsg interface{}) { - msg := txMsg.(*MsgRemoveLiquidity) - doctx.Sender = msg.Sender - doctx.MinIrisAmt = msg.MinStandardAmt.String() - doctx.MinToken = msg.MinToken.String() - doctx.Deadline = msg.Deadline - doctx.WithdrawLiquidity = model.BuildDocCoin(msg.WithdrawLiquidity) -} -func (m *DocTxMsgRemoveLiquidity) HandleTxMsg(v sdk.Msg) MsgDocInfo { - - var ( - addrs []string - msg MsgRemoveLiquidity - ) - ConvertMsg(v, &msg) - addrs = append(addrs, msg.Sender) - handler := func() (Msg, []string) { - return m, addrs - } - - return CreateMsgDocInfo(v, handler) -} - -type DocTxMsgSwapOrder struct { - Input Input `bson:"input"` // the amount the sender is trading - Output Output `bson:"output"` // the amount the sender is receiving - Deadline int64 `bson:"deadline"` // deadline for the transaction to still be considered valid - IsBuyOrder bool `bson:"is_buy_order"` // boolean indicating whether the order should be treated as a buy or sell -} - -type Input struct { - Address string `bson:"address"` - Coin model.Coin `bson:"coin"` -} - -type Output struct { - Address string `bson:"address"` - Coin model.Coin `bson:"coin"` -} - -func (doctx *DocTxMsgSwapOrder) GetType() string { - return MsgTypeSwapOrder -} - -func (doctx *DocTxMsgSwapOrder) BuildMsg(txMsg interface{}) { - msg := txMsg.(*MsgSwapOrder) - doctx.Deadline = msg.Deadline - doctx.IsBuyOrder = msg.IsBuyOrder - doctx.Input = Input{ - Address: msg.Input.Address, - Coin: model.BuildDocCoin(msg.Input.Coin), - } - doctx.Output = Output{ - Address: msg.Output.Address, - Coin: model.BuildDocCoin(msg.Output.Coin), - } -} -func (m *DocTxMsgSwapOrder) HandleTxMsg(v sdk.Msg) MsgDocInfo { - - var ( - addrs []string - msg MsgSwapOrder - ) - - ConvertMsg(v, &msg) - addrs = append(addrs, msg.Output.Address, msg.Input.Address) - handler := func() (Msg, []string) { - return m, addrs - } - - return CreateMsgDocInfo(v, handler) -} diff --git a/msgs/coinswap/handler.go b/msgs/coinswap/handler.go deleted file mode 100644 index 71dc21c..0000000 --- a/msgs/coinswap/handler.go +++ /dev/null @@ -1,24 +0,0 @@ -package coinswap - -import ( - sdk "github.com/cosmos/cosmos-sdk/types" - . "github.com/irisnet/rainbow-sync/msgs" -) - -func HandleTxMsg(msg sdk.Msg) (MsgDocInfo, bool) { - ok := true - switch msg.Type() { - case new(MsgAddLiquidity).Type(): - docMsg := DocTxMsgAddLiquidity{} - return docMsg.HandleTxMsg(msg), ok - case new(MsgRemoveLiquidity).Type(): - docMsg := DocTxMsgRemoveLiquidity{} - return docMsg.HandleTxMsg(msg), ok - case new(MsgSwapOrder).Type(): - docMsg := DocTxMsgSwapOrder{} - return docMsg.HandleTxMsg(msg), ok - default: - ok = false - } - return MsgDocInfo{}, ok -} diff --git a/msgs/common.go b/msgs/common.go deleted file mode 100644 index 93f4c15..0000000 --- a/msgs/common.go +++ /dev/null @@ -1,49 +0,0 @@ -package msgs - -import ( - sdk "github.com/cosmos/cosmos-sdk/types" - "github.com/irisnet/rainbow-sync/model" - "github.com/irisnet/rainbow-sync/utils" -) - -func CreateMsgDocInfo(msg sdk.Msg, handler func() (Msg, []string)) MsgDocInfo { - var ( - docTxMsg model.DocTxMsg - signers []string - addrs []string - ) - - m, addrcollections := handler() - - m.BuildMsg(msg) - docTxMsg = model.DocTxMsg{ - Type: m.GetType(), - Msg: m, - } - - signers = BuildDocSigners(msg.GetSigners()) - addrs = append(addrs, signers...) - addrs = append(addrs, addrcollections...) - - return MsgDocInfo{ - DocTxMsg: docTxMsg, - Signers: signers, - Addrs: addrs, - } -} -func BuildDocSigners(signers []sdk.AccAddress) []string { - var ( - allSigners []string - ) - if len(signers) == 0 { - return allSigners - } - for _, v := range signers { - allSigners = append(allSigners, v.String()) - } - - return allSigners -} -func ConvertMsg(v interface{}, msg interface{}) { - utils.UnMarshalJsonIgnoreErr(utils.MarshalJsonIgnoreErr(v), &msg) -} diff --git a/msgs/crisis/crisis.go b/msgs/crisis/crisis.go deleted file mode 100644 index e32bd51..0000000 --- a/msgs/crisis/crisis.go +++ /dev/null @@ -1,18 +0,0 @@ -package crisis - -import ( - sdk "github.com/cosmos/cosmos-sdk/types" - . "github.com/irisnet/rainbow-sync/msgs" -) - -func HandleTxMsg(msg sdk.Msg) (MsgDocInfo, bool) { - ok := true - switch msg.Type() { - case new(MsgVerifyInvariant).Type(): - docMsg := DocMsgVerifyInvariant{} - return docMsg.HandleTxMsg(msg), ok - default: - ok = false - } - return MsgDocInfo{}, ok -} diff --git a/msgs/crisis/verify_invariant.go b/msgs/crisis/verify_invariant.go deleted file mode 100644 index 8446447..0000000 --- a/msgs/crisis/verify_invariant.go +++ /dev/null @@ -1,39 +0,0 @@ -package crisis - -import ( - . "github.com/irisnet/rainbow-sync/msgs" -) - -type DocMsgVerifyInvariant struct { - Sender string `bson:"sender"` - InvariantModuleName string `bson:"invariant_module_name" yaml:"invariant_module_name"` - InvariantRoute string `bson:"invariant_route" yaml:"invariant_route"` -} - -func (m *DocMsgVerifyInvariant) GetType() string { - return MsgTypeVerifyInvariant -} - -func (m *DocMsgVerifyInvariant) BuildMsg(v interface{}) { - msg := v.(*MsgVerifyInvariant) - m.Sender = msg.Sender - m.InvariantModuleName = msg.InvariantModuleName - m.InvariantRoute = msg.InvariantRoute - -} - -func (m *DocMsgVerifyInvariant) HandleTxMsg(v SdkMsg) MsgDocInfo { - - var ( - addrs []string - msg MsgVerifyInvariant - ) - - ConvertMsg(v, &msg) - addrs = append(addrs, msg.Sender) - handler := func() (Msg, []string) { - return m, addrs - } - - return CreateMsgDocInfo(v, handler) -} diff --git a/msgs/distribution/distribution.go b/msgs/distribution/distribution.go deleted file mode 100644 index cc90717..0000000 --- a/msgs/distribution/distribution.go +++ /dev/null @@ -1,129 +0,0 @@ -package distribution - -import ( - "github.com/irisnet/rainbow-sync/model" - . "github.com/irisnet/rainbow-sync/msgs" -) - -type DocTxMsgSetWithdrawAddress struct { - DelegatorAddress string `bson:"delegator_address"` - WithdrawAddress string `bson:"withdraw_address"` -} - -func (doctx *DocTxMsgSetWithdrawAddress) GetType() string { - return MsgTypeSetWithdrawAddress -} - -func (doctx *DocTxMsgSetWithdrawAddress) BuildMsg(txMsg interface{}) { - msg := txMsg.(*MsgStakeSetWithdrawAddress) - doctx.DelegatorAddress = msg.DelegatorAddress - doctx.WithdrawAddress = msg.WithdrawAddress -} - -func (m *DocTxMsgSetWithdrawAddress) HandleTxMsg(v SdkMsg) MsgDocInfo { - - var ( - addrs []string - msg MsgStakeSetWithdrawAddress - ) - - ConvertMsg(v, &msg) - addrs = append(addrs, msg.DelegatorAddress, msg.WithdrawAddress) - handler := func() (Msg, []string) { - return m, addrs - } - - return CreateMsgDocInfo(v, handler) -} - -// msg struct for delegation withdraw from a single validator -type DocTxMsgWithdrawDelegatorReward struct { - DelegatorAddress string `bson:"delegator_address"` - ValidatorAddress string `bson:"validator_address"` -} - -func (doctx *DocTxMsgWithdrawDelegatorReward) GetType() string { - return MsgTypeWithdrawDelegatorReward -} - -func (doctx *DocTxMsgWithdrawDelegatorReward) BuildMsg(txMsg interface{}) { - msg := txMsg.(*MsgWithdrawDelegatorReward) - doctx.DelegatorAddress = msg.DelegatorAddress - doctx.ValidatorAddress = msg.ValidatorAddress -} -func (m *DocTxMsgWithdrawDelegatorReward) HandleTxMsg(v SdkMsg) MsgDocInfo { - - var ( - addrs []string - msg MsgWithdrawDelegatorReward - ) - - ConvertMsg(v, &msg) - addrs = append(addrs, msg.DelegatorAddress, msg.ValidatorAddress) - handler := func() (Msg, []string) { - return m, addrs - } - - return CreateMsgDocInfo(v, handler) -} - -// msg struct for delegation withdraw for all of the delegator's delegations -type DocTxMsgFundCommunityPool struct { - Amount []model.Coin `bson:"amount"` - Depositor string `bson:"depositor"` -} - -func (doctx *DocTxMsgFundCommunityPool) GetType() string { - return MsgTypeMsgFundCommunityPool -} - -func (doctx *DocTxMsgFundCommunityPool) BuildMsg(txMsg interface{}) { - msg := txMsg.(*MsgFundCommunityPool) - doctx.Depositor = msg.Depositor - doctx.Amount = model.BuildDocCoins(msg.Amount) -} -func (m *DocTxMsgFundCommunityPool) HandleTxMsg(v SdkMsg) MsgDocInfo { - - var ( - addrs []string - msg MsgFundCommunityPool - ) - - ConvertMsg(v, &msg) - addrs = append(addrs, msg.Depositor) - handler := func() (Msg, []string) { - return m, addrs - } - - return CreateMsgDocInfo(v, handler) -} - -// msg struct for validator withdraw -type DocTxMsgWithdrawValidatorCommission struct { - ValidatorAddress string `bson:"validator_address"` -} - -func (doctx *DocTxMsgWithdrawValidatorCommission) GetType() string { - return MsgTypeMsgWithdrawValidatorCommission -} - -func (doctx *DocTxMsgWithdrawValidatorCommission) BuildMsg(txMsg interface{}) { - msg := txMsg.(*MsgWithdrawValidatorCommission) - doctx.ValidatorAddress = msg.ValidatorAddress -} - -func (m *DocTxMsgWithdrawValidatorCommission) HandleTxMsg(v SdkMsg) MsgDocInfo { - - var ( - addrs []string - msg MsgWithdrawValidatorCommission - ) - - ConvertMsg(v, &msg) - addrs = append(addrs, msg.ValidatorAddress) - handler := func() (Msg, []string) { - return m, addrs - } - - return CreateMsgDocInfo(v, handler) -} diff --git a/msgs/distribution/handler.go b/msgs/distribution/handler.go deleted file mode 100644 index 7b31c73..0000000 --- a/msgs/distribution/handler.go +++ /dev/null @@ -1,27 +0,0 @@ -package distribution - -import ( - sdk "github.com/cosmos/cosmos-sdk/types" - . "github.com/irisnet/rainbow-sync/msgs" -) - -func HandleTxMsg(msg sdk.Msg) (MsgDocInfo, bool) { - ok := true - switch msg.Type() { - case new(MsgStakeSetWithdrawAddress).Type(): - docMsg := DocTxMsgSetWithdrawAddress{} - return docMsg.HandleTxMsg(msg), ok - case new(MsgWithdrawDelegatorReward).Type(): - docMsg := DocTxMsgWithdrawDelegatorReward{} - return docMsg.HandleTxMsg(msg), ok - case new(MsgWithdrawValidatorCommission).Type(): - docMsg := DocTxMsgWithdrawValidatorCommission{} - return docMsg.HandleTxMsg(msg), ok - case new(MsgFundCommunityPool).Type(): - docMsg := DocTxMsgFundCommunityPool{} - return docMsg.HandleTxMsg(msg), ok - default: - ok = false - } - return MsgDocInfo{}, ok -} diff --git a/msgs/evidence/evidence.go b/msgs/evidence/evidence.go deleted file mode 100644 index e54776a..0000000 --- a/msgs/evidence/evidence.go +++ /dev/null @@ -1,18 +0,0 @@ -package evidence - -import ( - sdk "github.com/cosmos/cosmos-sdk/types" - . "github.com/irisnet/rainbow-sync/msgs" -) - -func HandleTxMsg(msg sdk.Msg) (MsgDocInfo, bool) { - ok := true - switch msg.Type() { - case new(MsgSubmitEvidence).Type(): - docMsg := DocMsgSubmitEvidence{} - return docMsg.HandleTxMsg(msg), ok - default: - ok = false - } - return MsgDocInfo{}, ok -} diff --git a/msgs/evidence/submit_evidence.go b/msgs/evidence/submit_evidence.go deleted file mode 100644 index a4f2032..0000000 --- a/msgs/evidence/submit_evidence.go +++ /dev/null @@ -1,41 +0,0 @@ -package evidence - -import ( - "encoding/json" - . "github.com/irisnet/rainbow-sync/msgs" -) - -// MsgSubmitEvidence defines an sdk.Msg type that supports submitting arbitrary -// Evidence. -type DocMsgSubmitEvidence struct { - Submitter string `bson:"submitter"` - Evidence string `bson:"evidence"` -} - -func (m *DocMsgSubmitEvidence) GetType() string { - return MsgTypeSubmitEvidence -} - -func (m *DocMsgSubmitEvidence) BuildMsg(v interface{}) { - msg := v.(*MsgSubmitEvidence) - m.Submitter = msg.Submitter - evidence, _ := json.Marshal(msg.Evidence) - m.Evidence = string(evidence) - -} - -func (m *DocMsgSubmitEvidence) HandleTxMsg(v SdkMsg) MsgDocInfo { - - var ( - addrs []string - msg MsgSubmitEvidence - ) - - ConvertMsg(v, &msg) - addrs = append(addrs, msg.Submitter) - handler := func() (Msg, []string) { - return m, addrs - } - - return CreateMsgDocInfo(v, handler) -} diff --git a/msgs/gov/gov.go b/msgs/gov/gov.go deleted file mode 100644 index 7706fd3..0000000 --- a/msgs/gov/gov.go +++ /dev/null @@ -1,140 +0,0 @@ -package gov - -import ( - "github.com/irisnet/rainbow-sync/lib/cdc" - "github.com/irisnet/rainbow-sync/model" - . "github.com/irisnet/rainbow-sync/msgs" - "github.com/irisnet/rainbow-sync/utils" -) - -type DocTxMsgSubmitProposal struct { - Proposer string `bson:"proposer"` // Address of the proposer - InitialDeposit []model.Coin `bson:"initial_deposit"` // Initial deposit paid by sender. Must be strictly positive. - Content interface{} `bson:"content"` -} - -func (doctx *DocTxMsgSubmitProposal) GetType() string { - return MsgTypeSubmitProposal -} - -func (doctx *DocTxMsgSubmitProposal) BuildMsg(txMsg interface{}) { - msg := txMsg.(*MsgSubmitProposal) - - doctx.Content = CovertContent(msg.GetContent()) - doctx.Proposer = msg.Proposer - doctx.InitialDeposit = model.BuildDocCoins(msg.InitialDeposit) -} - -func CovertContent(content GovContent) interface{} { - switch content.ProposalType() { - case ProposalTypeCancelSoftwareUpgrade: - var data ContentCancelSoftwareUpgradeProposal - utils.UnMarshalJsonIgnoreErr(utils.MarshalJsonIgnoreErr(content), &data) - return data - case ProposalTypeSoftwareUpgrade: - var data ContentSoftwareUpgradeProposal - utils.UnMarshalJsonIgnoreErr(utils.MarshalJsonIgnoreErr(content), &data) - return data - case ProposalTypeCommunityPoolSpend: - var data ContentCommunityPoolSpendProposal - utils.UnMarshalJsonIgnoreErr(utils.MarshalJsonIgnoreErr(content), &data) - return data - case ProposalTypeClientUpdate: - var data ContentClientUpdateProposal - utils.UnMarshalJsonIgnoreErr(utils.MarshalJsonIgnoreErr(content), &data) - return data - case ProposalTypeText: - var data ContentTextProposal - utils.UnMarshalJsonIgnoreErr(utils.MarshalJsonIgnoreErr(content), &data) - return data - case ProposalTypeParameterChange: - var data ContentParameterChangeProposal - utils.UnMarshalJsonIgnoreErr(utils.MarshalJsonIgnoreErr(content), &data) - return data - } - return content -} - -func (m *DocTxMsgSubmitProposal) HandleTxMsg(v SdkMsg) MsgDocInfo { - - var ( - addrs []string - msg MsgSubmitProposal - ) - - data, _ := cdc.GetMarshaler().MarshalJSON(v) - cdc.GetMarshaler().UnmarshalJSON(data, &msg) - handler := func() (Msg, []string) { - return m, addrs - } - - return CreateMsgDocInfo(v, handler) -} - -// MsgVote -type DocTxMsgVote struct { - ProposalID uint64 `bson:"proposal_id"` // ID of the proposal - Voter string `bson:"voter"` // address of the voter - Option string `bson:"option"` // option from OptionSet chosen by the voter -} - -func (doctx *DocTxMsgVote) GetType() string { - return MsgTypeVote -} - -func (doctx *DocTxMsgVote) BuildMsg(txMsg interface{}) { - msg := txMsg.(*MsgVote) - doctx.Voter = msg.Voter - doctx.Option = msg.Option.String() - doctx.ProposalID = msg.ProposalId -} - -func (m *DocTxMsgVote) HandleTxMsg(v SdkMsg) MsgDocInfo { - - var ( - addrs []string - msg MsgVote - ) - - ConvertMsg(v, &msg) - addrs = append(addrs, msg.Voter) - handler := func() (Msg, []string) { - return m, addrs - } - - return CreateMsgDocInfo(v, handler) -} - -// MsgDeposit -type DocTxMsgDeposit struct { - ProposalID uint64 `bson:"proposal_id"` // ID of the proposal - Depositor string `bson:"depositor"` // Address of the depositor - Amount []model.Coin `bson:"amount"` // Coins to add to the proposal's deposit -} - -func (doctx *DocTxMsgDeposit) GetType() string { - return MsgTypeDeposit -} - -func (doctx *DocTxMsgDeposit) BuildMsg(txMsg interface{}) { - msg := txMsg.(*MsgDeposit) - doctx.Depositor = msg.Depositor - doctx.Amount = model.BuildDocCoins(msg.Amount) - doctx.ProposalID = msg.ProposalId -} - -func (m *DocTxMsgDeposit) HandleTxMsg(v SdkMsg) MsgDocInfo { - - var ( - addrs []string - msg MsgDeposit - ) - - ConvertMsg(v, &msg) - addrs = append(addrs, msg.Depositor) - handler := func() (Msg, []string) { - return m, addrs - } - - return CreateMsgDocInfo(v, handler) -} diff --git a/msgs/gov/handler.go b/msgs/gov/handler.go deleted file mode 100644 index a763035..0000000 --- a/msgs/gov/handler.go +++ /dev/null @@ -1,24 +0,0 @@ -package gov - -import ( - sdk "github.com/cosmos/cosmos-sdk/types" - . "github.com/irisnet/rainbow-sync/msgs" -) - -func HandleTxMsg(msg sdk.Msg) (MsgDocInfo, bool) { - ok := true - switch msg.Type() { - case new(MsgSubmitProposal).Type(): - docMsg := DocTxMsgSubmitProposal{} - return docMsg.HandleTxMsg(msg), ok - case new(MsgVote).Type(): - docMsg := DocTxMsgVote{} - return docMsg.HandleTxMsg(msg), ok - case new(MsgDeposit).Type(): - docMsg := DocTxMsgDeposit{} - return docMsg.HandleTxMsg(msg), ok - default: - ok = false - } - return MsgDocInfo{}, ok -} diff --git a/msgs/gov/proposal.go b/msgs/gov/proposal.go deleted file mode 100644 index 268520a..0000000 --- a/msgs/gov/proposal.go +++ /dev/null @@ -1,60 +0,0 @@ -package gov - -import ( - "github.com/irisnet/rainbow-sync/model" - "time" -) - -const ( - ProposalTypeSoftwareUpgrade = "SoftwareUpgrade" - ProposalTypeCancelSoftwareUpgrade = "CancelSoftwareUpgrade" - ProposalTypeParameterChange = "ParameterChange" - ProposalTypeCommunityPoolSpend = "CommunityPoolSpend" - ProposalTypeText = "Text" - ProposalTypeClientUpdate = "ClientUpdate" -) - -type ( - ContentTextProposal struct { - Title string `json:"title" bson:"title"` - Description string `json:"description" bson:"description"` - } - ContentParameterChangeProposal struct { - Title string `json:"title" bson:"title"` - Description string `json:"description" bson:"description"` - Changes []ParamChange `json:"changes" bson:"changes"` - } - ParamChange struct { - Subspace string `json:"subspace" bson:"subspace"` - Key string `json:"key" bson:"key"` - Value string `json:"value" bson:"value"` - } - ContentCommunityPoolSpendProposal struct { - Title string `json:"title" bson:"title"` - Description string `json:"description" bson:"description"` - Recipient string `json:"recipient" bson:"recipient"` - Amount []model.Coin `json:"amount" bson:"amount"` - } - ContentSoftwareUpgradeProposal struct { - Title string `json:"title" bson:"title"` - Description string `json:"description" bson:"description"` - Plan Plan `json:"plan" bson:"plan"` - } - Plan struct { - Name string `json:"name" bson:"name"` - Time time.Time `json:"time" bson:"time"` - Height int64 `json:"height" bson:"height"` - Info string `json:"info" bson:"info"` - UpgradedClientState string `json:"upgraded_client_state" bson:"upgraded_client_state"` - } - ContentCancelSoftwareUpgradeProposal struct { - Title string `json:"title" bson:"title"` - Description string `json:"description" bson:"description"` - } - ContentClientUpdateProposal struct { - Title string `json:"title" bson:"title"` - Description string `json:"description" bson:"description"` - ClientId string `json:"client_id" bson:"client_id"` - Header string `json:"header" bson:"header"` - } -) diff --git a/msgs/htlc/handler.go b/msgs/htlc/handler.go deleted file mode 100644 index 181cfd8..0000000 --- a/msgs/htlc/handler.go +++ /dev/null @@ -1,24 +0,0 @@ -package htlc - -import ( - sdk "github.com/cosmos/cosmos-sdk/types" - . "github.com/irisnet/rainbow-sync/msgs" -) - -func HandleTxMsg(msg sdk.Msg) (MsgDocInfo, bool) { - ok := true - switch msg.Type() { - case new(MsgClaimHTLC).Type(): - docMsg := DocTxMsgClaimHTLC{} - return docMsg.HandleTxMsg(msg), ok - case new(MsgCreateHTLC).Type(): - docMsg := DocTxMsgCreateHTLC{} - return docMsg.HandleTxMsg(msg), ok - case new(MsgRefundHTLC).Type(): - docMsg := DocTxMsgRefundHTLC{} - return docMsg.HandleTxMsg(msg), ok - default: - ok = false - } - return MsgDocInfo{}, ok -} diff --git a/msgs/htlc/htlc.go b/msgs/htlc/htlc.go deleted file mode 100644 index 908651e..0000000 --- a/msgs/htlc/htlc.go +++ /dev/null @@ -1,112 +0,0 @@ -package htlc - -import ( - sdk "github.com/cosmos/cosmos-sdk/types" - "github.com/irisnet/rainbow-sync/model" - . "github.com/irisnet/rainbow-sync/msgs" -) - -type DocTxMsgCreateHTLC struct { - Sender string `bson:"sender"` // the initiator address - To string `bson:"to"` // the destination address - ReceiverOnOtherChain string `bson:"receiver_on_other_chain"` // the claim receiving address on the other chain - Amount []model.Coin `bson:"amount"` // the amount to be transferred - HashLock string `bson:"hash_lock"` // the hash lock generated from secret (and timestamp if provided) - Timestamp uint64 `bson:"timestamp"` // if provided, used to generate the hash lock together with secret - TimeLock uint64 `bson:"time_lock"` // the time span after which the HTLC will expire -} - -func (doctx *DocTxMsgCreateHTLC) GetType() string { - return MsgTypeCreateHTLC -} - -func (doctx *DocTxMsgCreateHTLC) BuildMsg(txMsg interface{}) { - msg := txMsg.(*MsgCreateHTLC) - doctx.Sender = msg.Sender - doctx.To = msg.To - doctx.Amount = model.BuildDocCoins(msg.Amount) - doctx.Timestamp = msg.Timestamp - doctx.HashLock = msg.HashLock - doctx.TimeLock = msg.TimeLock - doctx.ReceiverOnOtherChain = msg.ReceiverOnOtherChain -} - -func (m *DocTxMsgCreateHTLC) HandleTxMsg(v sdk.Msg) MsgDocInfo { - - var ( - addrs []string - msg MsgCreateHTLC - ) - - ConvertMsg(v, &msg) - addrs = append(addrs, m.Sender, m.To) - handler := func() (Msg, []string) { - return m, addrs - } - - return CreateMsgDocInfo(v, handler) -} - -type DocTxMsgClaimHTLC struct { - Sender string `bson:"sender"` // the initiator address - HashLock string `bson:"hash_lock"` // the hash lock identifying the HTLC to be claimed - Secret string `bson:"secret"` // the secret with which to claim -} - -func (doctx *DocTxMsgClaimHTLC) GetType() string { - return MsgTypeClaimHTLC -} - -func (doctx *DocTxMsgClaimHTLC) BuildMsg(txMsg interface{}) { - msg := txMsg.(*MsgClaimHTLC) - doctx.Sender = msg.Sender - doctx.Secret = msg.Secret - doctx.HashLock = msg.HashLock -} - -func (m *DocTxMsgClaimHTLC) HandleTxMsg(v sdk.Msg) MsgDocInfo { - - var ( - addrs []string - msg MsgClaimHTLC - ) - - ConvertMsg(v, &msg) - addrs = append(addrs, msg.Sender) - handler := func() (Msg, []string) { - return m, addrs - } - - return CreateMsgDocInfo(v, handler) -} - -type DocTxMsgRefundHTLC struct { - Sender string `bson:"sender"` // the initiator address - HashLock string `bson:"hash_lock"` // the hash lock identifying the HTLC to be refunded -} - -func (doctx *DocTxMsgRefundHTLC) GetType() string { - return MsgTypeRefundHTLC -} - -func (doctx *DocTxMsgRefundHTLC) BuildMsg(txMsg interface{}) { - msg := txMsg.(*MsgRefundHTLC) - doctx.Sender = msg.Sender - doctx.HashLock = msg.HashLock -} - -func (m *DocTxMsgRefundHTLC) HandleTxMsg(v sdk.Msg) MsgDocInfo { - - var ( - addrs []string - msg MsgRefundHTLC - ) - - ConvertMsg(v, &msg) - addrs = append(addrs, msg.Sender) - handler := func() (Msg, []string) { - return m, addrs - } - - return CreateMsgDocInfo(v, handler) -} diff --git a/msgs/ibc/client_create.go b/msgs/ibc/client_create.go deleted file mode 100644 index 3825853..0000000 --- a/msgs/ibc/client_create.go +++ /dev/null @@ -1,41 +0,0 @@ -package ibc - -import ( - . "github.com/irisnet/rainbow-sync/msgs" -) - -// MsgCreateClient defines a message to create an IBC client -type DocMsgCreateClient struct { - ClientID string `bson:"client_id" yaml:"client_id"` - ClientState string `bson:"client_state"` - ConsensusState string `bson:"consensus_state"` - Signer string `bson:"signer" yaml:"signer"` -} - -func (m *DocMsgCreateClient) GetType() string { - return MsgTypeCreateClient -} - -func (m *DocMsgCreateClient) BuildMsg(v interface{}) { - msg := v.(*MsgCreateClient) - - //m.ClientID = msg.ClientId - m.Signer = msg.Signer - if msg.ClientState != nil { - m.ClientState = msg.ClientState.String() - } - if msg.ConsensusState != nil { - m.ConsensusState = msg.ConsensusState.String() - } -} - -func (m *DocMsgCreateClient) HandleTxMsg(v SdkMsg) MsgDocInfo { - var ( - addrs []string - ) - handler := func() (Msg, []string) { - return m, addrs - } - - return CreateMsgDocInfo(v, handler) -} diff --git a/msgs/ibc/client_update.go b/msgs/ibc/client_update.go deleted file mode 100644 index af53bf2..0000000 --- a/msgs/ibc/client_update.go +++ /dev/null @@ -1,38 +0,0 @@ -package ibc - -import ( - . "github.com/irisnet/rainbow-sync/msgs" -) - -// MsgUpdateClient defines a message to update an IBC client -type DocMsgUpdateClient struct { - ClientID string `bson:"client_id" yaml:"client_id"` - Header string `bson:"header" yaml:"header"` - Signer string `bson:"signer" yaml:"signer"` -} - -func (m *DocMsgUpdateClient) GetType() string { - return MsgTypeUpdateClient -} - -func (m *DocMsgUpdateClient) BuildMsg(v interface{}) { - msg := v.(*MsgUpdateClient) - - m.ClientID = msg.ClientId - m.Signer = msg.Signer - if msg.Header != nil { - m.Header = msg.Header.String() - } -} - -func (m *DocMsgUpdateClient) HandleTxMsg(v SdkMsg) MsgDocInfo { - var ( - addrs []string - ) - - handler := func() (Msg, []string) { - return m, addrs - } - - return CreateMsgDocInfo(v, handler) -} diff --git a/msgs/ibc/ibc.go b/msgs/ibc/ibc.go deleted file mode 100644 index e610e90..0000000 --- a/msgs/ibc/ibc.go +++ /dev/null @@ -1,30 +0,0 @@ -package ibc - -import ( - "github.com/cosmos/cosmos-sdk/types" - . "github.com/irisnet/rainbow-sync/msgs" -) - -func HandleTxMsg(v types.Msg) (MsgDocInfo, bool) { - var ( - msgDocInfo MsgDocInfo - ) - ok := true - switch v.Type() { - case new(MsgTransfer).Type(): - docMsg := DocMsgTransfer{} - msgDocInfo = docMsg.HandleTxMsg(v) - case new(MsgRecvPacket).Type(): - docMsg := DocMsgRecvPacket{} - msgDocInfo = docMsg.HandleTxMsg(v) - case new(MsgCreateClient).Type(): - docMsg := DocMsgCreateClient{} - msgDocInfo = docMsg.HandleTxMsg(v) - case new(MsgUpdateClient).Type(): - docMsg := DocMsgUpdateClient{} - msgDocInfo = docMsg.HandleTxMsg(v) - default: - ok = false - } - return msgDocInfo, ok -} diff --git a/msgs/ibc/ibc_transfer.go b/msgs/ibc/ibc_transfer.go deleted file mode 100644 index 3a7e371..0000000 --- a/msgs/ibc/ibc_transfer.go +++ /dev/null @@ -1,56 +0,0 @@ -package ibc - -import ( - "github.com/irisnet/rainbow-sync/model" - . "github.com/irisnet/rainbow-sync/msgs" -) - -type DocMsgTransfer struct { - // the port on which the packet will be sent - SourcePort string `bson:"source_port"` - // the channel by which the packet will be sent - SourceChannel string `bson:"source_channel"` - // the tokens to be transferred - Token model.Coin `bson:"token"` - // the sender address - Sender string `bson:"sender"` - // the recipient address on the destination chain - Receiver string `bson:"receiver"` - // Timeout height relative to the current block height. - // The timeout is disabled when set to 0. - TimeoutHeight Height `bson:"timeout_height"` - // Timeout timestamp (in nanoseconds) relative to the current block timestamp. - // The timeout is disabled when set to 0. - TimeoutTimestamp uint64 `bson:"timeout_timestamp"` -} - -func (m *DocMsgTransfer) GetType() string { - return MsgTypeIbcTransfer -} - -func (m *DocMsgTransfer) BuildMsg(v interface{}) { - msg := v.(*MsgTransfer) - m.Token = model.BuildDocCoin(msg.Token) - m.SourcePort = msg.SourcePort - m.SourceChannel = msg.SourceChannel - m.Sender = msg.Sender - m.Receiver = msg.Receiver - m.TimeoutHeight = Height{RevisionNumber: msg.TimeoutHeight.RevisionNumber, RevisionHeight: msg.TimeoutHeight.RevisionHeight} - m.TimeoutTimestamp = msg.TimeoutTimestamp - -} - -func (m *DocMsgTransfer) HandleTxMsg(v SdkMsg) MsgDocInfo { - var ( - addrs []string - msg MsgTransfer - ) - - ConvertMsg(v, &msg) - addrs = append(addrs, msg.Sender, msg.Receiver) - handler := func() (Msg, []string) { - return m, addrs - } - - return CreateMsgDocInfo(v, handler) -} diff --git a/msgs/ibc/recv_packet.go b/msgs/ibc/recv_packet.go deleted file mode 100644 index efdbf7f..0000000 --- a/msgs/ibc/recv_packet.go +++ /dev/null @@ -1,79 +0,0 @@ -package ibc - -import ( - "github.com/cosmos/cosmos-sdk/x/ibc/core/04-channel/types" - . "github.com/irisnet/rainbow-sync/msgs" -) - -type DocMsgRecvPacket struct { - Packet Packet `bson:"packet"` - ProofCommitment string `bson:"proof_commitment"` - ProofHeight Height `bson:"proof_height"` - Signer string `bson:"signer"` -} - -type Height struct { - // the epoch that the client is currently on - RevisionNumber uint64 `bson:"revision_number"` - // the height within the given epoch - RevisionHeight uint64 `bson:"revision_height"` -} - -type Packet struct { - // number corresponds to the order of sends and receives, where a Packet - // with an earlier sequence number must be sent and received before a Packet - // with a later sequence number. - Sequence uint64 `bson:"sequence"` - // identifies the port on the sending chain. - SourcePort string `bson:"source_port"` - // identifies the channel end on the sending chain. - SourceChannel string `bson:"source_channel"` - // identifies the port on the receiving chain. - DestinationPort string `bson:"destination_port"` - // identifies the channel end on the receiving chain. - DestinationChannel string `bson:"destination_channel"` - // actual opaque bytes transferred directly to the application module - Data string `bson:"data"` - // block height after which the packet times out - TimeoutHeight Height `bson:"timeout_height"` - // block timestamp (in nanoseconds) after which the packet times out - TimeoutTimestamp uint64 `bson:"timeout_timestamp"` -} - -func (m *DocMsgRecvPacket) GetType() string { - return MsgTypeRecvPacket -} - -func (m *DocMsgRecvPacket) BuildMsg(v interface{}) { - msg := v.(*MsgRecvPacket) - - m.ProofCommitment = string(msg.ProofCommitment) - m.ProofHeight = Height{RevisionHeight: msg.ProofHeight.RevisionHeight, RevisionNumber: msg.ProofHeight.RevisionNumber} - m.Signer = msg.Signer - - m.Packet = DecodeToIBCRecord(msg.Packet) -} -func DecodeToIBCRecord(packet types.Packet) Packet { - return Packet{ - Sequence: packet.Sequence, - SourcePort: packet.SourcePort, - SourceChannel: packet.SourceChannel, - DestinationChannel: packet.DestinationChannel, - DestinationPort: packet.DestinationPort, - Data: string(packet.Data), - TimeoutHeight: Height{RevisionHeight: packet.TimeoutHeight.RevisionHeight, RevisionNumber: packet.TimeoutHeight.RevisionNumber}, - TimeoutTimestamp: packet.TimeoutTimestamp, - } -} - -func (m *DocMsgRecvPacket) HandleTxMsg(v SdkMsg) MsgDocInfo { - var ( - addrs []string - ) - - handler := func() (Msg, []string) { - return m, addrs - } - - return CreateMsgDocInfo(v, handler) -} diff --git a/msgs/nft/issue_denom.go b/msgs/nft/issue_denom.go deleted file mode 100644 index 897ffca..0000000 --- a/msgs/nft/issue_denom.go +++ /dev/null @@ -1,42 +0,0 @@ -package nft - -import ( - . "github.com/irisnet/rainbow-sync/msgs" - "github.com/irisnet/rainbow-sync/utils" - "strings" -) - -type DocMsgIssueDenom struct { - Id string `bson:"id"` - Name string `bson:"name"` - Sender string `bson:"sender"` - Schema string `bson:"schema"` -} - -func (m *DocMsgIssueDenom) GetType() string { - return MsgTypeIssueDenom -} - -func (m *DocMsgIssueDenom) BuildMsg(v interface{}) { - msg := v.(*MsgIssueDenom) - - m.Sender = msg.Sender - m.Schema = msg.Schema - m.Id = strings.ToLower(msg.Id) - m.Name = msg.Name -} - -func (m *DocMsgIssueDenom) HandleTxMsg(v SdkMsg) MsgDocInfo { - var ( - addrs []string - msg MsgIssueDenom - ) - - utils.UnMarshalJsonIgnoreErr(utils.MarshalJsonIgnoreErr(v), &msg) - addrs = append(addrs, msg.Sender) - handler := func() (Msg, []string) { - return m, addrs - } - - return CreateMsgDocInfo(v, handler) -} diff --git a/msgs/nft/nft.go b/msgs/nft/nft.go deleted file mode 100644 index 3be7ed3..0000000 --- a/msgs/nft/nft.go +++ /dev/null @@ -1,38 +0,0 @@ -package nft - -import ( - "github.com/cosmos/cosmos-sdk/types" - . "github.com/irisnet/rainbow-sync/msgs" -) - -func HandleTxMsg(v types.Msg) (MsgDocInfo, bool) { - var ( - msgDocInfo MsgDocInfo - ) - ok := true - switch v.Type() { - case new(MsgNFTMint).Type(): - docMsg := DocMsgNFTMint{} - msgDocInfo = docMsg.HandleTxMsg(v) - break - case new(MsgNFTEdit).Type(): - docMsg := DocMsgNFTEdit{} - msgDocInfo = docMsg.HandleTxMsg(v) - break - case new(MsgNFTTransfer).Type(): - docMsg := DocMsgNFTTransfer{} - msgDocInfo = docMsg.HandleTxMsg(v) - break - case new(MsgNFTBurn).Type(): - docMsg := DocMsgNFTBurn{} - msgDocInfo = docMsg.HandleTxMsg(v) - break - case new(MsgIssueDenom).Type(): - docMsg := DocMsgIssueDenom{} - msgDocInfo = docMsg.HandleTxMsg(v) - break - default: - ok = false - } - return msgDocInfo, ok -} diff --git a/msgs/nft/nft_burn.go b/msgs/nft/nft_burn.go deleted file mode 100644 index eaf5d47..0000000 --- a/msgs/nft/nft_burn.go +++ /dev/null @@ -1,42 +0,0 @@ -package nft - -import ( - . "github.com/irisnet/rainbow-sync/msgs" - "github.com/irisnet/rainbow-sync/utils" - "strings" -) - -type ( - DocMsgNFTBurn struct { - Sender string `bson:"sender"` - Id string `bson:"id"` - Denom string `bson:"denom"` - } -) - -func (m *DocMsgNFTBurn) GetType() string { - return MsgTypeNFTBurn -} - -func (m *DocMsgNFTBurn) BuildMsg(v interface{}) { - msg := v.(*MsgNFTBurn) - - m.Sender = msg.Sender - m.Id = strings.ToLower(msg.Id) - m.Denom = strings.ToLower(msg.DenomId) -} - -func (m *DocMsgNFTBurn) HandleTxMsg(v SdkMsg) MsgDocInfo { - var ( - addrs []string - msg MsgNFTBurn - ) - - utils.UnMarshalJsonIgnoreErr(utils.MarshalJsonIgnoreErr(v), &msg) - addrs = append(addrs, msg.Sender) - handler := func() (Msg, []string) { - return m, addrs - } - - return CreateMsgDocInfo(v, handler) -} diff --git a/msgs/nft/nft_edit.go b/msgs/nft/nft_edit.go deleted file mode 100644 index 574c31d..0000000 --- a/msgs/nft/nft_edit.go +++ /dev/null @@ -1,48 +0,0 @@ -package nft - -import ( - . "github.com/irisnet/rainbow-sync/msgs" - "github.com/irisnet/rainbow-sync/utils" - "strings" -) - -type ( - DocMsgNFTEdit struct { - Sender string `bson:"sender"` - Id string `bson:"id"` - Denom string `bson:"denom"` - URI string `bson:"uri"` - Data string `bson:"data"` - Name string `bson:"name"` - } -) - -func (m *DocMsgNFTEdit) GetType() string { - return MsgTypeNFTEdit -} - -func (m *DocMsgNFTEdit) BuildMsg(v interface{}) { - msg := v.(*MsgNFTEdit) - - m.Sender = msg.Sender - m.Id = strings.ToLower(msg.Id) - m.Denom = strings.ToLower(msg.DenomId) - m.URI = msg.URI - m.Data = msg.Data - m.Name = msg.Name -} - -func (m *DocMsgNFTEdit) HandleTxMsg(v SdkMsg) MsgDocInfo { - var ( - addrs []string - msg MsgNFTEdit - ) - - utils.UnMarshalJsonIgnoreErr(utils.MarshalJsonIgnoreErr(v), &msg) - addrs = append(addrs, msg.Sender) - handler := func() (Msg, []string) { - return m, addrs - } - - return CreateMsgDocInfo(v, handler) -} diff --git a/msgs/nft/nft_mint.go b/msgs/nft/nft_mint.go deleted file mode 100644 index 99b34ab..0000000 --- a/msgs/nft/nft_mint.go +++ /dev/null @@ -1,47 +0,0 @@ -package nft - -import ( - . "github.com/irisnet/rainbow-sync/msgs" - "github.com/irisnet/rainbow-sync/utils" - "strings" -) - -type DocMsgNFTMint struct { - Sender string `bson:"sender"` - Recipient string `bson:"recipient"` - Denom string `bson:"denom"` - Id string `bson:"id"` - URI string `bson:"uri"` - Data string `bson:"data"` - Name string `bson:"name"` -} - -func (m *DocMsgNFTMint) GetType() string { - return MsgTypeNFTMint -} - -func (m *DocMsgNFTMint) BuildMsg(v interface{}) { - msg := v.(*MsgNFTMint) - - m.Sender = msg.Sender - m.Recipient = msg.Recipient - m.Id = strings.ToLower(msg.Id) - m.Denom = strings.ToLower(msg.DenomId) - m.URI = msg.URI - m.Data = msg.Data - m.Name = msg.Name -} - -func (m *DocMsgNFTMint) HandleTxMsg(v SdkMsg) MsgDocInfo { - var ( - addrs []string - msg MsgNFTMint - ) - utils.UnMarshalJsonIgnoreErr(utils.MarshalJsonIgnoreErr(v), &msg) - addrs = append(addrs, msg.Sender, msg.Recipient) - handler := func() (Msg, []string) { - return m, addrs - } - - return CreateMsgDocInfo(v, handler) -} diff --git a/msgs/nft/nft_transfer.go b/msgs/nft/nft_transfer.go deleted file mode 100644 index 7cbf2fc..0000000 --- a/msgs/nft/nft_transfer.go +++ /dev/null @@ -1,50 +0,0 @@ -package nft - -import ( - . "github.com/irisnet/rainbow-sync/msgs" - "github.com/irisnet/rainbow-sync/utils" - "strings" -) - -type ( - DocMsgNFTTransfer struct { - Sender string `bson:"sender"` - Recipient string `bson:"recipient"` - URI string `bson:"uri"` - Name string `bson:"name"` - Denom string `bson:"denom"` - Id string `bson:"id"` - Data string `bson:"data"` - } -) - -func (m *DocMsgNFTTransfer) GetType() string { - return MsgTypeNFTTransfer -} - -func (m *DocMsgNFTTransfer) BuildMsg(v interface{}) { - msg := v.(*MsgNFTTransfer) - - m.Sender = msg.Sender - m.Recipient = msg.Recipient - m.Id = strings.ToLower(msg.Id) - m.Denom = strings.ToLower(msg.DenomId) - m.URI = msg.URI - m.Data = msg.Data - m.Name = msg.Name -} - -func (m *DocMsgNFTTransfer) HandleTxMsg(v SdkMsg) MsgDocInfo { - var ( - addrs []string - msg MsgNFTTransfer - ) - - utils.UnMarshalJsonIgnoreErr(utils.MarshalJsonIgnoreErr(v), &msg) - addrs = append(addrs, msg.Sender, msg.Recipient) - handler := func() (Msg, []string) { - return m, addrs - } - - return CreateMsgDocInfo(v, handler) -} diff --git a/msgs/record/record.go b/msgs/record/record.go deleted file mode 100644 index 0f4a034..0000000 --- a/msgs/record/record.go +++ /dev/null @@ -1,22 +0,0 @@ -package record - -import ( - "github.com/cosmos/cosmos-sdk/types" - . "github.com/irisnet/rainbow-sync/msgs" -) - -func HandleTxMsg(v types.Msg) (MsgDocInfo, bool) { - var ( - msgDocInfo MsgDocInfo - ) - ok := true - switch v.Type() { - case new(MsgRecordCreate).Type(): - docMsg := DocMsgRecordCreate{} - msgDocInfo = docMsg.HandleTxMsg(v) - break - default: - ok = false - } - return msgDocInfo, ok -} diff --git a/msgs/record/record_create.go b/msgs/record/record_create.go deleted file mode 100644 index ce7dddc..0000000 --- a/msgs/record/record_create.go +++ /dev/null @@ -1,58 +0,0 @@ -package record - -import ( - . "github.com/irisnet/rainbow-sync/msgs" - "github.com/irisnet/rainbow-sync/utils" -) - -type ( - DocMsgRecordCreate struct { - Contents []Content `bson:"contents"` - Creator string `bson:"creator"` - } - - Content struct { - Digest string `bson:"digest"` - DigestAlgo string `bson:"digest_algo"` - URI string `bson:"uri"` - Meta string `bson:"meta"` - } -) - -func (d *DocMsgRecordCreate) GetType() string { - return MsgTypeRecordCreate -} - -func (d *DocMsgRecordCreate) BuildMsg(msg interface{}) { - m := msg.(*MsgRecordCreate) - - var docContents []Content - if len(m.Contents) > 0 { - for _, v := range m.Contents { - docContents = append(docContents, Content{ - Digest: v.Digest, - DigestAlgo: v.DigestAlgo, - URI: v.URI, - Meta: v.Meta, - }) - } - } - - d.Contents = docContents - d.Creator = m.Creator -} - -func (m *DocMsgRecordCreate) HandleTxMsg(v SdkMsg) MsgDocInfo { - var ( - addrs []string - msg MsgRecordCreate - ) - - utils.UnMarshalJsonIgnoreErr(utils.MarshalJsonIgnoreErr(v), &msg) - addrs = append(addrs, msg.Creator) - handler := func() (Msg, []string) { - return m, addrs - } - - return CreateMsgDocInfo(v, handler) -} diff --git a/msgs/service/service.go b/msgs/service/service.go deleted file mode 100644 index dc4a7d4..0000000 --- a/msgs/service/service.go +++ /dev/null @@ -1,79 +0,0 @@ -package service - -import ( - "github.com/cosmos/cosmos-sdk/types" - . "github.com/irisnet/rainbow-sync/msgs" -) - -func HandleTxMsg(v types.Msg) (MsgDocInfo, bool) { - var ( - msgDocInfo MsgDocInfo - ) - ok := true - switch v.Type() { - case new(MsgDefineService).Type(): - docMsg := DocMsgDefineService{} - msgDocInfo = docMsg.HandleTxMsg(v) - break - case new(MsgBindService).Type(): - docMsg := DocMsgBindService{} - msgDocInfo = docMsg.HandleTxMsg(v) - break - case new(MsgCallService).Type(): - docMsg := DocMsgCallService{} - msgDocInfo = docMsg.HandleTxMsg(v) - break - case new(MsgRespondService).Type(): - docMsg := DocMsgServiceResponse{} - msgDocInfo = docMsg.HandleTxMsg(v) - break - case new(MsgUpdateServiceBinding).Type(): - docMsg := DocMsgUpdateServiceBinding{} - msgDocInfo = docMsg.HandleTxMsg(v) - break - case new(MsgSetWithdrawAddress).Type(): - docMsg := DocMsgSetWithdrawAddress{} - ConvertMsg(v, &docMsg) - if docMsg.WithdrawAddress == "" { - ok = false - return msgDocInfo, ok - } - msgDocInfo = docMsg.HandleTxMsg(v) - break - case new(MsgDisableServiceBinding).Type(): - docMsg := DocMsgDisableServiceBinding{} - msgDocInfo = docMsg.HandleTxMsg(v) - break - case new(MsgEnableServiceBinding).Type(): - docMsg := DocMsgEnableServiceBinding{} - msgDocInfo = docMsg.HandleTxMsg(v) - break - case new(MsgRefundServiceDeposit).Type(): - docMsg := DocMsgRefundServiceDeposit{} - msgDocInfo = docMsg.HandleTxMsg(v) - break - case new(MsgUpdateRequestContext).Type(): - docMsg := DocMsgUpdateRequestContext{} - msgDocInfo = docMsg.HandleTxMsg(v) - break - case new(MsgPauseRequestContext).Type(): - docMsg := DocMsgPauseRequestContext{} - msgDocInfo = docMsg.HandleTxMsg(v) - break - case new(MsgStartRequestContext).Type(): - docMsg := DocMsgStartRequestContext{} - msgDocInfo = docMsg.HandleTxMsg(v) - break - case new(MsgKillRequestContext).Type(): - docMsg := DocMsgKillRequestContext{} - msgDocInfo = docMsg.HandleTxMsg(v) - break - case new(MsgWithdrawEarnedFees).Type(): - docMsg := DocMsgWithdrawEarnedFees{} - msgDocInfo = docMsg.HandleTxMsg(v) - break - default: - ok = false - } - return msgDocInfo, ok -} diff --git a/msgs/service/service_bind.go b/msgs/service/service_bind.go deleted file mode 100644 index 18d81fb..0000000 --- a/msgs/service/service_bind.go +++ /dev/null @@ -1,54 +0,0 @@ -package service - -import ( - . "github.com/irisnet/rainbow-sync/msgs" - "github.com/irisnet/rainbow-sync/utils" -) - -type ( - DocMsgBindService struct { - ServiceName string `bson:"service_name"` - Provider string `bson:"provider"` - Deposit Coins `bson:"deposit"` - Pricing string `bson:"pricing"` - QoS uint64 `bson:"qos"` - Owner string `bson:"owner"` - Options string `bson:"options"` - } -) - -func (m *DocMsgBindService) GetType() string { - return MsgTypeBindService -} - -func (m *DocMsgBindService) BuildMsg(v interface{}) { - msg := v.(*MsgBindService) - - var coins Coins - for _, one := range msg.Deposit { - coins = append(coins, &Coin{Denom: one.Denom, Amount: one.Amount.String()}) - } - m.ServiceName = msg.ServiceName - m.Provider = msg.Provider - m.Deposit = coins - m.Pricing = msg.Pricing - m.QoS = msg.QoS - m.Owner = msg.Owner - m.Options = msg.Options -} - -func (m *DocMsgBindService) HandleTxMsg(v SdkMsg) MsgDocInfo { - var ( - addrs []string - msg MsgBindService - ) - - utils.UnMarshalJsonIgnoreErr(utils.MarshalJsonIgnoreErr(v), &msg) - - addrs = append(addrs, msg.Owner, msg.Provider) - handler := func() (Msg, []string) { - return m, addrs - } - - return CreateMsgDocInfo(v, handler) -} diff --git a/msgs/service/service_def.go b/msgs/service/service_def.go deleted file mode 100644 index 84bf595..0000000 --- a/msgs/service/service_def.go +++ /dev/null @@ -1,48 +0,0 @@ -package service - -import ( - . "github.com/irisnet/rainbow-sync/msgs" - "github.com/irisnet/rainbow-sync/utils" -) - -type ( - DocMsgDefineService struct { - Name string `bson:"name" yaml:"name"` - Description string `bson:"description" yaml:"description"` - Tags []string `bson:"tags" yaml:"tags"` - Author string `bson:"author" yaml:"author"` - AuthorDescription string `bson:"author_description" yaml:"author_description"` - Schemas string `bson:"schemas"` - } -) - -func (m *DocMsgDefineService) GetType() string { - return MsgTypeDefineService -} - -func (m *DocMsgDefineService) BuildMsg(v interface{}) { - msg := v.(*MsgDefineService) - - m.Name = msg.Name - m.Description = msg.Description - m.Tags = msg.Tags - m.Author = msg.Author - m.AuthorDescription = msg.AuthorDescription - m.Schemas = msg.Schemas -} - -func (m *DocMsgDefineService) HandleTxMsg(v SdkMsg) MsgDocInfo { - var ( - addrs []string - msg MsgDefineService - ) - - utils.UnMarshalJsonIgnoreErr(utils.MarshalJsonIgnoreErr(v), &msg) - - addrs = append(addrs, msg.Author) - handler := func() (Msg, []string) { - return m, addrs - } - - return CreateMsgDocInfo(v, handler) -} diff --git a/msgs/service/service_disable_bind.go b/msgs/service/service_disable_bind.go deleted file mode 100644 index 110630c..0000000 --- a/msgs/service/service_disable_bind.go +++ /dev/null @@ -1,41 +0,0 @@ -package service - -import ( - . "github.com/irisnet/rainbow-sync/msgs" - "github.com/irisnet/rainbow-sync/utils" -) - -type ( - DocMsgDisableServiceBinding struct { - ServiceName string `bson:"service_name" yaml:"service_name"` - Provider string `bson:"provider" yaml:"provider"` - Owner string `bson:"owner" yaml:"owner"` - } -) - -func (m *DocMsgDisableServiceBinding) GetType() string { - return MsgTypeDisableServiceBinding -} - -func (m *DocMsgDisableServiceBinding) BuildMsg(v interface{}) { - msg := v.(*MsgDisableServiceBinding) - - m.ServiceName = msg.ServiceName - m.Provider = msg.Provider - m.Owner = msg.Owner -} - -func (m *DocMsgDisableServiceBinding) HandleTxMsg(v SdkMsg) MsgDocInfo { - var ( - addrs []string - msg MsgDisableServiceBinding - ) - utils.UnMarshalJsonIgnoreErr(utils.MarshalJsonIgnoreErr(v), &msg) - - addrs = append(addrs, msg.Owner, msg.Provider) - handler := func() (Msg, []string) { - return m, addrs - } - - return CreateMsgDocInfo(v, handler) -} diff --git a/msgs/service/service_enable_bind.go b/msgs/service/service_enable_bind.go deleted file mode 100644 index 2ce7571..0000000 --- a/msgs/service/service_enable_bind.go +++ /dev/null @@ -1,49 +0,0 @@ -package service - -import ( - "github.com/irisnet/rainbow-sync/model" - . "github.com/irisnet/rainbow-sync/msgs" - "github.com/irisnet/rainbow-sync/utils" -) - -type ( - DocMsgEnableServiceBinding struct { - ServiceName string `bson:"service_name" yaml:"service_name"` - Provider string `bson:"provider" yaml:"provider"` - Deposit model.Coins `bson:"deposit" yaml:"deposit"` - Owner string `bson:"owner" yaml:"owner"` - } -) - -func (m *DocMsgEnableServiceBinding) GetType() string { - return MsgTypeEnableServiceBinding -} - -func (m *DocMsgEnableServiceBinding) BuildMsg(v interface{}) { - msg := v.(*MsgEnableServiceBinding) - - var coins model.Coins - for _, one := range msg.Deposit { - coins = append(coins, &model.Coin{Denom: one.Denom, Amount: one.Amount.String()}) - } - - m.ServiceName = msg.ServiceName - m.Provider = msg.Provider - m.Deposit = coins - m.Owner = msg.Owner -} - -func (m *DocMsgEnableServiceBinding) HandleTxMsg(v SdkMsg) MsgDocInfo { - var ( - addrs []string - msg MsgEnableServiceBinding - ) - - utils.UnMarshalJsonIgnoreErr(utils.MarshalJsonIgnoreErr(v), &msg) - addrs = append(addrs, msg.Owner, msg.Provider) - handler := func() (Msg, []string) { - return m, addrs - } - - return CreateMsgDocInfo(v, handler) -} diff --git a/msgs/service/service_kill_request_context.go b/msgs/service/service_kill_request_context.go deleted file mode 100644 index 22a5a4a..0000000 --- a/msgs/service/service_kill_request_context.go +++ /dev/null @@ -1,40 +0,0 @@ -package service - -import ( - . "github.com/irisnet/rainbow-sync/msgs" - "github.com/irisnet/rainbow-sync/utils" - "strings" -) - -type ( - DocMsgKillRequestContext struct { - RequestContextId string `bson:"request_context_id" yaml:"request_context_id"` - Consumer string `bson:"consumer" yaml:"consumer"` - } -) - -func (m *DocMsgKillRequestContext) GetType() string { - return MsgTypeKillRequestContext -} - -func (m *DocMsgKillRequestContext) BuildMsg(v interface{}) { - msg := v.(*MsgKillRequestContext) - - m.RequestContextId = strings.ToUpper(msg.RequestContextId) - m.Consumer = msg.Consumer -} - -func (m *DocMsgKillRequestContext) HandleTxMsg(v SdkMsg) MsgDocInfo { - var ( - addrs []string - msg MsgKillRequestContext - ) - - utils.UnMarshalJsonIgnoreErr(utils.MarshalJsonIgnoreErr(v), &msg) - addrs = append(addrs, msg.Consumer) - handler := func() (Msg, []string) { - return m, addrs - } - - return CreateMsgDocInfo(v, handler) -} diff --git a/msgs/service/service_pause_request_context.go b/msgs/service/service_pause_request_context.go deleted file mode 100644 index d37337b..0000000 --- a/msgs/service/service_pause_request_context.go +++ /dev/null @@ -1,40 +0,0 @@ -package service - -import ( - . "github.com/irisnet/rainbow-sync/msgs" - "github.com/irisnet/rainbow-sync/utils" - "strings" -) - -type ( - DocMsgPauseRequestContext struct { - RequestContextId string `bson:"request_context_id" yaml:"request_context_id"` - Consumer string `bson:"consumer" yaml:"consumer"` - } -) - -func (m *DocMsgPauseRequestContext) GetType() string { - return MsgTypePauseRequestContext -} - -func (m *DocMsgPauseRequestContext) BuildMsg(v interface{}) { - msg := v.(*MsgPauseRequestContext) - - m.RequestContextId = strings.ToUpper(msg.RequestContextId) - m.Consumer = msg.Consumer -} - -func (m *DocMsgPauseRequestContext) HandleTxMsg(v SdkMsg) MsgDocInfo { - var ( - addrs []string - msg MsgPauseRequestContext - ) - - utils.UnMarshalJsonIgnoreErr(utils.MarshalJsonIgnoreErr(v), &msg) - addrs = append(addrs, msg.Consumer) - handler := func() (Msg, []string) { - return m, addrs - } - - return CreateMsgDocInfo(v, handler) -} diff --git a/msgs/service/service_refund_deposit.go b/msgs/service/service_refund_deposit.go deleted file mode 100644 index c792725..0000000 --- a/msgs/service/service_refund_deposit.go +++ /dev/null @@ -1,41 +0,0 @@ -package service - -import ( - . "github.com/irisnet/rainbow-sync/msgs" - "github.com/irisnet/rainbow-sync/utils" -) - -type ( - DocMsgRefundServiceDeposit struct { - ServiceName string `bson:"service_name" yaml:"service_name"` - Provider string `bson:"provider" yaml:"provider"` - Owner string `bson:"owner" yaml:"owner"` - } -) - -func (m *DocMsgRefundServiceDeposit) GetType() string { - return MsgTypeRefundServiceDeposit -} - -func (m *DocMsgRefundServiceDeposit) BuildMsg(v interface{}) { - msg := v.(*MsgRefundServiceDeposit) - - m.ServiceName = msg.ServiceName - m.Provider = msg.Provider - m.Owner = msg.Owner -} - -func (m *DocMsgRefundServiceDeposit) HandleTxMsg(v SdkMsg) MsgDocInfo { - var ( - addrs []string - msg MsgRefundServiceDeposit - ) - - utils.UnMarshalJsonIgnoreErr(utils.MarshalJsonIgnoreErr(v), &msg) - addrs = append(addrs, msg.Owner, msg.Provider) - handler := func() (Msg, []string) { - return m, addrs - } - - return CreateMsgDocInfo(v, handler) -} diff --git a/msgs/service/service_request.go b/msgs/service/service_request.go deleted file mode 100644 index 4f1135b..0000000 --- a/msgs/service/service_request.go +++ /dev/null @@ -1,63 +0,0 @@ -package service - -import ( - "github.com/irisnet/rainbow-sync/model" - . "github.com/irisnet/rainbow-sync/msgs" - "github.com/irisnet/rainbow-sync/utils" -) - -type ( - DocMsgCallService struct { - ServiceName string `bson:"service_name"` - Providers []string `bson:"providers"` - Consumer string `bson:"consumer"` - Input string `bson:"input"` - ServiceFeeCap model.Coins `bson:"service_fee_cap"` - Timeout int64 `bson:"timeout"` - SuperMode bool `bson:"super_mode"` - Repeated bool `bson:"repeated"` - RepeatedFrequency uint64 `bson:"repeated_frequency"` - RepeatedTotal int64 `bson:"repeated_total"` - } -) - -func (m *DocMsgCallService) GetType() string { - return MsgTypeCallService -} - -func (m *DocMsgCallService) BuildMsg(msg interface{}) { - v := msg.(*MsgCallService) - - var coins model.Coins - for _, one := range v.ServiceFeeCap { - coins = append(coins, &model.Coin{Denom: one.Denom, Amount: one.Amount.String()}) - } - m.ServiceName = v.ServiceName - m.Providers = v.Providers - m.Consumer = v.Consumer - m.Input = v.Input - m.ServiceFeeCap = coins - m.Timeout = v.Timeout - //m.Input = v.Input - m.SuperMode = v.SuperMode - m.Repeated = v.Repeated - m.RepeatedFrequency = v.RepeatedFrequency - m.RepeatedTotal = v.RepeatedTotal -} - -func (m *DocMsgCallService) HandleTxMsg(v SdkMsg) MsgDocInfo { - var ( - addrs []string - msg MsgCallService - ) - - utils.UnMarshalJsonIgnoreErr(utils.MarshalJsonIgnoreErr(v), &msg) - - addrs = append(addrs, msg.Providers...) - addrs = append(addrs, msg.Consumer) - handler := func() (Msg, []string) { - return m, addrs - } - - return CreateMsgDocInfo(v, handler) -} diff --git a/msgs/service/service_response.go b/msgs/service/service_response.go deleted file mode 100644 index 767ce58..0000000 --- a/msgs/service/service_response.go +++ /dev/null @@ -1,45 +0,0 @@ -package service - -import ( - . "github.com/irisnet/rainbow-sync/msgs" - "github.com/irisnet/rainbow-sync/utils" -) - -type ( - DocMsgServiceResponse struct { - RequestId string `bson:"request_id" yaml:"request_id"` - Provider string `bson:"provider" yaml:"provider"` - Output string `bson:"output" yaml:"output"` - Result string `bson:"result"` - } -) - -func (m *DocMsgServiceResponse) GetType() string { - return MsgTypeRespondService -} - -func (m *DocMsgServiceResponse) BuildMsg(msg interface{}) { - v := msg.(*MsgRespondService) - - m.RequestId = v.RequestId - m.Provider = v.Provider - //m.Output = v.Output - m.Output = v.Output - m.Result = v.Result -} - -func (m *DocMsgServiceResponse) HandleTxMsg(v SdkMsg) MsgDocInfo { - var ( - addrs []string - msg MsgRespondService - ) - - utils.UnMarshalJsonIgnoreErr(utils.MarshalJsonIgnoreErr(v), &msg) - - addrs = append(addrs, msg.Provider) - handler := func() (Msg, []string) { - return m, addrs - } - - return CreateMsgDocInfo(v, handler) -} diff --git a/msgs/service/service_set_withdraw_address.go b/msgs/service/service_set_withdraw_address.go deleted file mode 100644 index f032f77..0000000 --- a/msgs/service/service_set_withdraw_address.go +++ /dev/null @@ -1,39 +0,0 @@ -package service - -import ( - . "github.com/irisnet/rainbow-sync/msgs" - "github.com/irisnet/rainbow-sync/utils" -) - -type ( - DocMsgSetWithdrawAddress struct { - Owner string `bson:"owner" yaml:"owner"` - WithdrawAddress string `bson:"withdraw_address" yaml:"withdraw_address"` - } -) - -func (m *DocMsgSetWithdrawAddress) GetType() string { - return MsgTypeServiceSetWithdrawAddress -} - -func (m *DocMsgSetWithdrawAddress) BuildMsg(v interface{}) { - msg := v.(*MsgSetWithdrawAddress) - - m.Owner = msg.Owner - m.WithdrawAddress = msg.WithdrawAddress -} - -func (m *DocMsgSetWithdrawAddress) HandleTxMsg(v SdkMsg) MsgDocInfo { - var ( - addrs []string - msg MsgSetWithdrawAddress - ) - - utils.UnMarshalJsonIgnoreErr(utils.MarshalJsonIgnoreErr(v), &msg) - addrs = append(addrs, msg.Owner, msg.WithdrawAddress) - handler := func() (Msg, []string) { - return m, addrs - } - - return CreateMsgDocInfo(v, handler) -} diff --git a/msgs/service/service_start_request_context.go b/msgs/service/service_start_request_context.go deleted file mode 100644 index bc83f4e..0000000 --- a/msgs/service/service_start_request_context.go +++ /dev/null @@ -1,40 +0,0 @@ -package service - -import ( - . "github.com/irisnet/rainbow-sync/msgs" - "github.com/irisnet/rainbow-sync/utils" - "strings" -) - -type ( - DocMsgStartRequestContext struct { - RequestContextId string `bson:"request_context_id" yaml:"request_context_id"` - Consumer string `bson:"consumer" yaml:"consumer"` - } -) - -func (m *DocMsgStartRequestContext) GetType() string { - return MsgTypeStartRequestContext -} - -func (m *DocMsgStartRequestContext) BuildMsg(v interface{}) { - msg := v.(*MsgStartRequestContext) - - m.RequestContextId = strings.ToUpper(msg.RequestContextId) - m.Consumer = msg.Consumer -} - -func (m *DocMsgStartRequestContext) HandleTxMsg(v SdkMsg) MsgDocInfo { - var ( - addrs []string - msg MsgStartRequestContext - ) - - utils.UnMarshalJsonIgnoreErr(utils.MarshalJsonIgnoreErr(v), &msg) - addrs = append(addrs, msg.Consumer) - handler := func() (Msg, []string) { - return m, addrs - } - - return CreateMsgDocInfo(v, handler) -} diff --git a/msgs/service/service_update_bind.go b/msgs/service/service_update_bind.go deleted file mode 100644 index d7093a5..0000000 --- a/msgs/service/service_update_bind.go +++ /dev/null @@ -1,53 +0,0 @@ -package service - -import ( - "github.com/irisnet/rainbow-sync/model" - . "github.com/irisnet/rainbow-sync/msgs" - "github.com/irisnet/rainbow-sync/utils" -) - -type ( - DocMsgUpdateServiceBinding struct { - ServiceName string `bson:"service_name" yaml:"service_name"` - Provider string `bson:"provider" yaml:"provider"` - Deposit model.Coins `bson:"deposit" yaml:"deposit"` - Pricing string `bson:"pricing" yaml:"pricing"` - QoS uint64 `bson:"qos" yaml:"qos"` - Owner string `bson:"owner" yaml:"owner"` - } -) - -func (m *DocMsgUpdateServiceBinding) GetType() string { - return MsgTypeUpdateServiceBinding -} - -func (m *DocMsgUpdateServiceBinding) BuildMsg(v interface{}) { - msg := v.(*MsgUpdateServiceBinding) - - var coins model.Coins - for _, one := range msg.Deposit { - coins = append(coins, &model.Coin{Denom: one.Denom, Amount: one.Amount.String()}) - } - - m.ServiceName = msg.ServiceName - m.Provider = msg.Provider - m.Deposit = coins - m.Pricing = msg.Pricing - m.QoS = msg.QoS - m.Owner = msg.Owner -} - -func (m *DocMsgUpdateServiceBinding) HandleTxMsg(v SdkMsg) MsgDocInfo { - var ( - addrs []string - msg MsgUpdateServiceBinding - ) - - utils.UnMarshalJsonIgnoreErr(utils.MarshalJsonIgnoreErr(v), &msg) - addrs = append(addrs, msg.Owner, msg.Provider) - handler := func() (Msg, []string) { - return m, addrs - } - - return CreateMsgDocInfo(v, handler) -} diff --git a/msgs/service/service_update_request_context.go b/msgs/service/service_update_request_context.go deleted file mode 100644 index 7eb01b9..0000000 --- a/msgs/service/service_update_request_context.go +++ /dev/null @@ -1,57 +0,0 @@ -package service - -import ( - "github.com/irisnet/rainbow-sync/model" - . "github.com/irisnet/rainbow-sync/msgs" - "github.com/irisnet/rainbow-sync/utils" - "strings" -) - -type ( - DocMsgUpdateRequestContext struct { - RequestContextID string `bson:"request_context_id" yaml:"request_context_id"` - Providers []string `bson:"providers" yaml:"providers"` - Consumer string `bson:"consumer" yaml:"consumer"` - ServiceFeeCap model.Coins `bson:"service_fee_cap" yaml:"service_fee_cap"` - Timeout int64 `bson:"timeout" yaml:"timeout"` - RepeatedFrequency uint64 `bson:"repeated_frequency" yaml:"repeated_frequency"` - RepeatedTotal int64 `bson:"repeated_total" yaml:"repeated_total"` - } -) - -func (m *DocMsgUpdateRequestContext) GetType() string { - return MsgTypeUpdateRequestContext -} - -func (m *DocMsgUpdateRequestContext) BuildMsg(v interface{}) { - msg := v.(*MsgUpdateRequestContext) - - var coins model.Coins - for _, one := range msg.ServiceFeeCap { - coins = append(coins, &model.Coin{Denom: one.Denom, Amount: one.Amount.String()}) - } - - m.RequestContextID = strings.ToUpper(msg.RequestContextId) - m.Providers = msg.Providers - m.Consumer = msg.Consumer - m.ServiceFeeCap = coins - m.Timeout = msg.Timeout - m.RepeatedFrequency = msg.RepeatedFrequency - m.RepeatedTotal = msg.RepeatedTotal -} - -func (m *DocMsgUpdateRequestContext) HandleTxMsg(v SdkMsg) MsgDocInfo { - var ( - addrs []string - msg MsgUpdateRequestContext - ) - - utils.UnMarshalJsonIgnoreErr(utils.MarshalJsonIgnoreErr(v), &msg) - addrs = append(addrs, msg.Providers...) - addrs = append(addrs, msg.Consumer) - handler := func() (Msg, []string) { - return m, addrs - } - - return CreateMsgDocInfo(v, handler) -} diff --git a/msgs/service/service_withdraw_earn_fee.go b/msgs/service/service_withdraw_earn_fee.go deleted file mode 100644 index 066d766..0000000 --- a/msgs/service/service_withdraw_earn_fee.go +++ /dev/null @@ -1,40 +0,0 @@ -package service - -import ( - . "github.com/irisnet/rainbow-sync/msgs" - "github.com/irisnet/rainbow-sync/utils" -) - -type ( - DocMsgWithdrawEarnedFees struct { - Owner string - Provider string - } -) - -func (m *DocMsgWithdrawEarnedFees) GetType() string { - return MsgTypeWithdrawEarnedFees -} - -func (m *DocMsgWithdrawEarnedFees) BuildMsg(v interface{}) { - msg := v.(*MsgWithdrawEarnedFees) - - m.Owner = msg.Owner - m.Provider = msg.Provider -} - -func (m *DocMsgWithdrawEarnedFees) HandleTxMsg(v SdkMsg) MsgDocInfo { - var ( - addrs []string - msg MsgWithdrawEarnedFees - ) - - utils.UnMarshalJsonIgnoreErr(utils.MarshalJsonIgnoreErr(v), &msg) - - addrs = append(addrs, msg.Owner, msg.Provider) - handler := func() (Msg, []string) { - return m, addrs - } - - return CreateMsgDocInfo(v, handler) -} diff --git a/msgs/slashing/slashing.go b/msgs/slashing/slashing.go deleted file mode 100644 index c275b7c..0000000 --- a/msgs/slashing/slashing.go +++ /dev/null @@ -1,19 +0,0 @@ -package slashing - -import ( - sdk "github.com/cosmos/cosmos-sdk/types" - . "github.com/irisnet/rainbow-sync/msgs" -) - -func HandleTxMsg(msg sdk.Msg) (MsgDocInfo, bool) { - ok := true - switch msg.Type() { - case new(MsgUnjail).Type(): - docMsg := DocTxMsgUnjail{} - return docMsg.HandleTxMsg(msg), ok - - default: - ok = false - } - return MsgDocInfo{}, ok -} diff --git a/msgs/slashing/unjail.go b/msgs/slashing/unjail.go deleted file mode 100644 index 2a7c04f..0000000 --- a/msgs/slashing/unjail.go +++ /dev/null @@ -1,34 +0,0 @@ -package slashing - -import ( - . "github.com/irisnet/rainbow-sync/msgs" -) - -// MsgUnjail - struct for unjailing jailed validator -type DocTxMsgUnjail struct { - ValidatorAddr string `bson:"address"` // address of the validator operator -} - -func (doctx *DocTxMsgUnjail) GetType() string { - return MsgTypeUnjail -} - -func (doctx *DocTxMsgUnjail) BuildMsg(txMsg interface{}) { - msg := txMsg.(*MsgUnjail) - doctx.ValidatorAddr = msg.ValidatorAddr -} -func (m *DocTxMsgUnjail) HandleTxMsg(v SdkMsg) MsgDocInfo { - - var ( - addrs []string - msg MsgUnjail - ) - - ConvertMsg(v, &msg) - addrs = append(addrs, msg.ValidatorAddr) - handler := func() (Msg, []string) { - return m, addrs - } - - return CreateMsgDocInfo(v, handler) -} diff --git a/msgs/staking/handler.go b/msgs/staking/handler.go deleted file mode 100644 index 571614f..0000000 --- a/msgs/staking/handler.go +++ /dev/null @@ -1,30 +0,0 @@ -package staking - -import ( - sdk "github.com/cosmos/cosmos-sdk/types" - . "github.com/irisnet/rainbow-sync/msgs" -) - -func HandleTxMsg(msg sdk.Msg) (MsgDocInfo, bool) { - ok := true - switch msg.Type() { - case new(MsgBeginRedelegate).Type(): - docMsg := DocTxMsgBeginRedelegate{} - return docMsg.HandleTxMsg(msg), ok - case new(MsgUndelegate).Type(): - docMsg := DocTxMsgBeginUnbonding{} - return docMsg.HandleTxMsg(msg), ok - case new(MsgDelegate).Type(): - docMsg := DocTxMsgDelegate{} - return docMsg.HandleTxMsg(msg), ok - case new(MsgEditValidator).Type(): - docMsg := DocMsgEditValidator{} - return docMsg.HandleTxMsg(msg), ok - case new(MsgCreateValidator).Type(): - docMsg := DocTxMsgCreateValidator{} - return docMsg.HandleTxMsg(msg), ok - default: - ok = false - } - return MsgDocInfo{}, ok -} diff --git a/msgs/staking/stake.go b/msgs/staking/stake.go deleted file mode 100644 index 9996c12..0000000 --- a/msgs/staking/stake.go +++ /dev/null @@ -1,224 +0,0 @@ -package staking - -import ( - stake "github.com/cosmos/cosmos-sdk/x/staking/types" - "github.com/irisnet/rainbow-sync/lib/cdc" - "github.com/irisnet/rainbow-sync/model" - . "github.com/irisnet/rainbow-sync/msgs" - "github.com/irisnet/rainbow-sync/utils" -) - -// MsgDelegate - struct for bonding transactions -type DocTxMsgBeginRedelegate struct { - DelegatorAddress string `bson:"delegator_address"` - ValidatorSrcAddress string `bson:"validator_src_address"` - ValidatorDstAddress string `bson:"validator_dst_address"` - Amount model.Coin `bson:"amount"` -} - -type Description struct { - Moniker string `bson:"moniker"` - Identity string `bson:"identity"` - Website string `bson:"website"` - SecurityContact string `bson:"security_contact"` - Details string `bson:"details"` -} - -type CommissionRates struct { - Rate string `bson:"rate"` // the commission rate charged to delegators - MaxRate string `bson:"max_rate"` // maximum commission rate which validator can ever charge - MaxChangeRate string `bson:"max_change_rate"` // maximum daily increase of the validator commission -} - -func (doctx *DocTxMsgBeginRedelegate) GetType() string { - return MsgTypeBeginRedelegate -} - -func (doctx *DocTxMsgBeginRedelegate) BuildMsg(txMsg interface{}) { - msg := txMsg.(*MsgBeginRedelegate) - doctx.DelegatorAddress = msg.DelegatorAddress - doctx.ValidatorSrcAddress = msg.ValidatorSrcAddress - doctx.ValidatorDstAddress = msg.ValidatorDstAddress - doctx.Amount = model.BuildDocCoin(msg.Amount) -} -func (m *DocTxMsgBeginRedelegate) HandleTxMsg(v SdkMsg) MsgDocInfo { - - var ( - addrs []string - msg MsgBeginRedelegate - ) - - ConvertMsg(v, &msg) - addrs = append(addrs, msg.DelegatorAddress, msg.ValidatorDstAddress, msg.ValidatorSrcAddress) - handler := func() (Msg, []string) { - return m, addrs - } - - return CreateMsgDocInfo(v, handler) -} - -// MsgBeginUnbonding - struct for unbonding transactions -type DocTxMsgBeginUnbonding struct { - DelegatorAddress string `bson:"delegator_address"` - ValidatorAddress string `bson:"validator_address"` - Amount model.Coin `bson:"amount"` -} - -func (doctx *DocTxMsgBeginUnbonding) GetType() string { - return MsgTypeStakeBeginUnbonding -} - -func (doctx *DocTxMsgBeginUnbonding) BuildMsg(txMsg interface{}) { - msg := txMsg.(*MsgUndelegate) - doctx.ValidatorAddress = msg.ValidatorAddress - doctx.DelegatorAddress = msg.DelegatorAddress - doctx.Amount = model.BuildDocCoin(msg.Amount) -} -func (m *DocTxMsgBeginUnbonding) HandleTxMsg(v SdkMsg) MsgDocInfo { - - var ( - addrs []string - msg MsgUndelegate - ) - - ConvertMsg(v, &msg) - addrs = append(addrs, msg.DelegatorAddress, msg.ValidatorAddress) - handler := func() (Msg, []string) { - return m, addrs - } - - return CreateMsgDocInfo(v, handler) -} - -// MsgDelegate - struct for bonding transactions -type DocTxMsgDelegate struct { - DelegatorAddress string `bson:"delegator_address"` - ValidatorAddress string `bson:"validator_address"` - Amount model.Coin `bson:"amount"` -} - -func (doctx *DocTxMsgDelegate) GetType() string { - return MsgTypeStakeDelegate -} - -func (doctx *DocTxMsgDelegate) BuildMsg(txMsg interface{}) { - msg := txMsg.(*MsgDelegate) - doctx.ValidatorAddress = msg.ValidatorAddress - doctx.DelegatorAddress = msg.DelegatorAddress - doctx.Amount = model.BuildDocCoin(msg.Amount) -} -func (m *DocTxMsgDelegate) HandleTxMsg(v SdkMsg) MsgDocInfo { - - var ( - addrs []string - msg MsgDelegate - ) - - ConvertMsg(v, &msg) - addrs = append(addrs, msg.DelegatorAddress, msg.ValidatorAddress) - handler := func() (Msg, []string) { - return m, addrs - } - - return CreateMsgDocInfo(v, handler) -} - -// MsgEditValidator - struct for editing a validator -type DocMsgEditValidator struct { - Description Description `bson:"description"` - ValidatorAddress string `bson:"validator_address"` - CommissionRate string `bson:"commission_rate"` - MinSelfDelegation string `bson:"min_self_delegation"` -} - -func (doctx *DocMsgEditValidator) GetType() string { - return MsgTypeStakeEditValidator -} - -func (doctx *DocMsgEditValidator) BuildMsg(txMsg interface{}) { - msg := txMsg.(*MsgEditValidator) - doctx.ValidatorAddress = msg.ValidatorAddress - commissionRate := msg.CommissionRate - if commissionRate == nil { - doctx.CommissionRate = "" - } else { - doctx.CommissionRate = commissionRate.String() - } - doctx.Description = loadDescription(msg.Description) - if msg.MinSelfDelegation != nil { - doctx.MinSelfDelegation = msg.MinSelfDelegation.String() - } -} -func (m *DocMsgEditValidator) HandleTxMsg(v SdkMsg) MsgDocInfo { - - var ( - addrs []string - msg MsgEditValidator - ) - - ConvertMsg(v, &msg) - addrs = append(addrs, msg.ValidatorAddress) - handler := func() (Msg, []string) { - return m, addrs - } - - return CreateMsgDocInfo(v, handler) -} - -// MsgCreateValidator defines an SDK message for creating a new validator. -type DocTxMsgCreateValidator struct { - Description Description `bson:"description"` - Commission CommissionRates `bson:"commission"` - MinSelfDelegation string `bson:"min_self_delegation"` - DelegatorAddress string `bson:"delegator_address"` - ValidatorAddress string `bson:"validator_address"` - Pubkey string `bson:"pubkey"` - Value model.Coin `bson:"value"` -} - -func (doctx *DocTxMsgCreateValidator) GetType() string { - return MsgTypeStakeCreateValidator -} - -func (doctx *DocTxMsgCreateValidator) BuildMsg(txMsg interface{}) { - msg := txMsg.(*MsgCreateValidator) - doctx.ValidatorAddress = msg.ValidatorAddress - if msg.Pubkey != nil { - doctx.Pubkey = utils.MarshalJsonIgnoreErr(msg.Pubkey) - } - doctx.DelegatorAddress = msg.DelegatorAddress - doctx.MinSelfDelegation = msg.MinSelfDelegation.String() - doctx.Commission = CommissionRates{ - Rate: msg.Commission.Rate.String(), - MaxChangeRate: msg.Commission.MaxChangeRate.String(), - MaxRate: msg.Commission.MaxRate.String(), - } - doctx.Description = loadDescription(msg.Description) - doctx.Value = model.BuildDocCoin(msg.Value) -} -func (m *DocTxMsgCreateValidator) HandleTxMsg(v SdkMsg) MsgDocInfo { - - var ( - addrs []string - msg MsgCreateValidator - ) - - data, _ := cdc.GetMarshaler().MarshalJSON(v) - cdc.GetMarshaler().UnmarshalJSON(data, &msg) - addrs = append(addrs, msg.DelegatorAddress, msg.ValidatorAddress) - handler := func() (Msg, []string) { - return m, addrs - } - - return CreateMsgDocInfo(v, handler) -} - -func loadDescription(description stake.Description) Description { - return Description{ - Moniker: description.Moniker, - Details: description.Details, - Identity: description.Identity, - Website: description.Website, - SecurityContact: description.SecurityContact, - } -} diff --git a/msgs/token/burn_token.go b/msgs/token/burn_token.go deleted file mode 100644 index ca857cf..0000000 --- a/msgs/token/burn_token.go +++ /dev/null @@ -1,39 +0,0 @@ -package token - -import ( - . "github.com/irisnet/rainbow-sync/msgs" -) - -// MsgBurnToken defines an SDK message for burning some tokens. -type DocMsgBurnToken struct { - Symbol string `bson:"symbol"` - Amount uint64 `bson:"amount"` - Sender string `bson:"sender"` -} - -func (m *DocMsgBurnToken) GetType() string { - return MsgTypeBurnToken -} - -func (m *DocMsgBurnToken) BuildMsg(v interface{}) { - msg := v.(*MsgBurnToken) - - m.Symbol = msg.Symbol - m.Amount = msg.Amount - m.Sender = msg.Sender -} - -func (m *DocMsgBurnToken) HandleTxMsg(v SdkMsg) MsgDocInfo { - var ( - addrs []string - msg MsgBurnToken - ) - - ConvertMsg(v, &msg) - addrs = append(addrs, msg.Sender) - handler := func() (Msg, []string) { - return m, addrs - } - - return CreateMsgDocInfo(v, handler) -} diff --git a/msgs/token/edit_token.go b/msgs/token/edit_token.go deleted file mode 100644 index c499038..0000000 --- a/msgs/token/edit_token.go +++ /dev/null @@ -1,43 +0,0 @@ -package token - -import ( - . "github.com/irisnet/rainbow-sync/msgs" - "github.com/irisnet/rainbow-sync/utils" -) - -type DocMsgEditToken struct { - Symbol string `bson:"symbol"` - Name string `bson:"name"` - MaxSupply uint64 `bson:"max_supply"` - Mintable bool `bson:"mintable"` - Owner string `bson:"owner"` -} - -func (m *DocMsgEditToken) GetType() string { - return MsgTypeEditToken -} - -func (m *DocMsgEditToken) BuildMsg(v interface{}) { - msg := v.(*MsgEditToken) - - m.Symbol = msg.Symbol - m.Owner = msg.Owner - m.Name = msg.Name - m.MaxSupply = msg.MaxSupply - m.Mintable = msg.Mintable.ToBool() -} - -func (m *DocMsgEditToken) HandleTxMsg(v SdkMsg) MsgDocInfo { - var ( - addrs []string - msg MsgEditToken - ) - - utils.UnMarshalJsonIgnoreErr(utils.MarshalJsonIgnoreErr(v), &msg) - addrs = append(addrs, msg.Owner) - handler := func() (Msg, []string) { - return m, addrs - } - - return CreateMsgDocInfo(v, handler) -} diff --git a/msgs/token/issue_token.go b/msgs/token/issue_token.go deleted file mode 100644 index 3201e53..0000000 --- a/msgs/token/issue_token.go +++ /dev/null @@ -1,49 +0,0 @@ -package token - -import ( - . "github.com/irisnet/rainbow-sync/msgs" - "github.com/irisnet/rainbow-sync/utils" -) - -type DocMsgIssueToken struct { - Symbol string `bson:"symbol"` - Name string `bson:"name"` - Scale uint32 `bson:"scale"` - MinUnit string `bson:"min_unit"` - InitialSupply uint64 `bson:"initial_supply"` - MaxSupply uint64 `bson:"max_supply"` - Mintable bool `bson:"mintable"` - Owner string `bson:"owner"` -} - -func (m *DocMsgIssueToken) GetType() string { - return MsgTypeIssueToken -} - -func (m *DocMsgIssueToken) BuildMsg(v interface{}) { - msg := v.(*MsgIssueToken) - - m.Symbol = msg.Symbol - m.Name = msg.Name - m.Scale = msg.Scale - m.MinUnit = msg.MinUnit - m.InitialSupply = msg.InitialSupply - m.Owner = msg.Owner - m.MaxSupply = msg.MaxSupply - m.Mintable = msg.Mintable -} - -func (m *DocMsgIssueToken) HandleTxMsg(v SdkMsg) MsgDocInfo { - var ( - addrs []string - msg MsgIssueToken - ) - - utils.UnMarshalJsonIgnoreErr(utils.MarshalJsonIgnoreErr(v), &msg) - addrs = append(addrs, msg.Owner) - handler := func() (Msg, []string) { - return m, addrs - } - - return CreateMsgDocInfo(v, handler) -} diff --git a/msgs/token/mint_token.go b/msgs/token/mint_token.go deleted file mode 100644 index 880a4af..0000000 --- a/msgs/token/mint_token.go +++ /dev/null @@ -1,41 +0,0 @@ -package token - -import ( - . "github.com/irisnet/rainbow-sync/msgs" - "github.com/irisnet/rainbow-sync/utils" -) - -type DocMsgMintToken struct { - Symbol string `bson:"symbol"` - Amount uint64 `bson:"amount"` - To string `bson:"to"` - Owner string `bson:"owner"` -} - -func (m *DocMsgMintToken) GetType() string { - return MsgTypeMintToken -} - -func (m *DocMsgMintToken) BuildMsg(v interface{}) { - msg := v.(*MsgMintToken) - - m.Symbol = msg.Symbol - m.Amount = msg.Amount - m.To = msg.To - m.Owner = msg.Owner -} - -func (m *DocMsgMintToken) HandleTxMsg(v SdkMsg) MsgDocInfo { - var ( - addrs []string - msg MsgMintToken - ) - - utils.UnMarshalJsonIgnoreErr(utils.MarshalJsonIgnoreErr(v), &msg) - addrs = append(addrs, msg.Owner, msg.To) - handler := func() (Msg, []string) { - return m, addrs - } - - return CreateMsgDocInfo(v, handler) -} diff --git a/msgs/token/token.go b/msgs/token/token.go deleted file mode 100644 index b11d53b..0000000 --- a/msgs/token/token.go +++ /dev/null @@ -1,38 +0,0 @@ -package token - -import ( - "github.com/cosmos/cosmos-sdk/types" - . "github.com/irisnet/rainbow-sync/msgs" -) - -func HandleTxMsg(v types.Msg) (MsgDocInfo, bool) { - var ( - msgDocInfo MsgDocInfo - ) - ok := true - switch v.Type() { - case new(MsgMintToken).Type(): - docMsg := DocMsgMintToken{} - msgDocInfo = docMsg.HandleTxMsg(v) - break - case new(MsgBurnToken).Type(): - docMsg := DocMsgBurnToken{} - msgDocInfo = docMsg.HandleTxMsg(v) - break - case new(MsgEditToken).Type(): - docMsg := DocMsgEditToken{} - msgDocInfo = docMsg.HandleTxMsg(v) - break - case new(MsgIssueToken).Type(): - docMsg := DocMsgIssueToken{} - msgDocInfo = docMsg.HandleTxMsg(v) - break - case new(MsgTransferTokenOwner).Type(): - docMsg := DocMsgTransferTokenOwner{} - msgDocInfo = docMsg.HandleTxMsg(v) - break - default: - ok = false - } - return msgDocInfo, ok -} diff --git a/msgs/token/transfer_tokenowner.go b/msgs/token/transfer_tokenowner.go deleted file mode 100644 index 7a027d0..0000000 --- a/msgs/token/transfer_tokenowner.go +++ /dev/null @@ -1,39 +0,0 @@ -package token - -import ( - . "github.com/irisnet/rainbow-sync/msgs" - "github.com/irisnet/rainbow-sync/utils" -) - -type DocMsgTransferTokenOwner struct { - SrcOwner string `bson:"src_owner"` - DstOwner string `bson:"dst_owner"` - Symbol string `bson:"symbol"` -} - -func (m *DocMsgTransferTokenOwner) GetType() string { - return MsgTypeTransferTokenOwner -} - -func (m *DocMsgTransferTokenOwner) BuildMsg(v interface{}) { - msg := v.(*MsgTransferTokenOwner) - - m.Symbol = msg.Symbol - m.SrcOwner = msg.SrcOwner - m.DstOwner = msg.DstOwner -} - -func (m *DocMsgTransferTokenOwner) HandleTxMsg(v SdkMsg) MsgDocInfo { - var ( - addrs []string - msg MsgTransferTokenOwner - ) - - utils.UnMarshalJsonIgnoreErr(utils.MarshalJsonIgnoreErr(v), &msg) - addrs = append(addrs, msg.SrcOwner, msg.DstOwner) - handler := func() (Msg, []string) { - return m, addrs - } - - return CreateMsgDocInfo(v, handler) -} diff --git a/msgs/types.go b/msgs/types.go deleted file mode 100644 index 82255f8..0000000 --- a/msgs/types.go +++ /dev/null @@ -1,182 +0,0 @@ -package msgs - -import ( - sdk "github.com/cosmos/cosmos-sdk/types" - bank "github.com/cosmos/cosmos-sdk/x/bank/types" - crisis "github.com/cosmos/cosmos-sdk/x/crisis/types" - distribution "github.com/cosmos/cosmos-sdk/x/distribution/types" - evidence "github.com/cosmos/cosmos-sdk/x/evidence/types" - gov "github.com/cosmos/cosmos-sdk/x/gov/types" - ibctransfer "github.com/cosmos/cosmos-sdk/x/ibc/applications/transfer/types" - ibcclient "github.com/cosmos/cosmos-sdk/x/ibc/core/02-client/types" - ibc "github.com/cosmos/cosmos-sdk/x/ibc/core/04-channel/types" - slashing "github.com/cosmos/cosmos-sdk/x/slashing/types" - stake "github.com/cosmos/cosmos-sdk/x/staking/types" - coinswap "github.com/irisnet/irismod/modules/coinswap/types" - htlc "github.com/irisnet/irismod/modules/htlc/types" - nft "github.com/irisnet/irismod/modules/nft/types" - record "github.com/irisnet/irismod/modules/record/types" - service "github.com/irisnet/irismod/modules/service/types" - token "github.com/irisnet/irismod/modules/token/types" - "github.com/irisnet/rainbow-sync/model" -) - -const ( - MsgTypeSend = "send" - MsgTypeMultiSend = "multisend" - MsgTypeNFTMint = "mint_nft" - MsgTypeNFTEdit = "edit_nft" - MsgTypeNFTTransfer = "transfer_nft" - MsgTypeNFTBurn = "burn_nft" - MsgTypeIssueDenom = "issue_denom" - MsgTypeRecordCreate = "create_record" - - MsgTypeMintToken = "mint_token" - MsgTypeBurnToken = "burn_token" - MsgTypeEditToken = "edit_token" - MsgTypeIssueToken = "issue_token" - MsgTypeTransferTokenOwner = "transfer_token_owner" - - MsgTypeDefineService = "define_service" // type for MsgDefineService - MsgTypeBindService = "bind_service" // type for MsgBindService - MsgTypeUpdateServiceBinding = "update_service_binding" // type for MsgUpdateServiceBinding - MsgTypeServiceSetWithdrawAddress = "service/set_withdraw_address" // type for MsgSetWithdrawAddress - MsgTypeDisableServiceBinding = "disable_service_binding" // type for MsgDisableServiceBinding - MsgTypeEnableServiceBinding = "enable_service_binding" // type for MsgEnableServiceBinding - MsgTypeRefundServiceDeposit = "refund_service_deposit" // type for MsgRefundServiceDeposit - MsgTypeCallService = "call_service" // type for MsgCallService - MsgTypeRespondService = "respond_service" // type for MsgRespondService - MsgTypePauseRequestContext = "pause_request_context" // type for MsgPauseRequestContext - MsgTypeStartRequestContext = "start_request_context" // type for MsgStartRequestContext - MsgTypeKillRequestContext = "kill_request_context" // type for MsgKillRequestContext - MsgTypeUpdateRequestContext = "update_request_context" // type for MsgUpdateRequestContext - MsgTypeWithdrawEarnedFees = "withdraw_earned_fees" // type for MsgWithdrawEarnedFees - - MsgTypeStakeCreateValidator = "create_validator" - MsgTypeStakeEditValidator = "edit_validator" - MsgTypeStakeDelegate = "delegate" - MsgTypeStakeBeginUnbonding = "begin_unbonding" - MsgTypeBeginRedelegate = "begin_redelegate" - MsgTypeUnjail = "unjail" - MsgTypeSetWithdrawAddress = "set_withdraw_address" - MsgTypeWithdrawDelegatorReward = "withdraw_delegator_reward" - MsgTypeMsgFundCommunityPool = "fund_community_pool" - MsgTypeMsgWithdrawValidatorCommission = "withdraw_validator_commission" - MsgTypeSubmitProposal = "submit_proposal" - MsgTypeDeposit = "deposit" - MsgTypeVote = "vote" - - MsgTypeCreateHTLC = "create_htlc" - MsgTypeClaimHTLC = "claim_htlc" - MsgTypeRefundHTLC = "refund_htlc" - - MsgTypeAddLiquidity = "add_liquidity" - MsgTypeRemoveLiquidity = "remove_liquidity" - MsgTypeSwapOrder = "swap_order" - - MsgTypeSubmitEvidence = "submit_evidence" - MsgTypeVerifyInvariant = "verify_invariant" - - MsgTypeCreateClient = "create_client" - MsgTypeUpdateClient = "update_client" - - MsgTypeRecvPacket = "recv_packet" - MsgTypeIbcTransfer = "transfer" - - //MsgTypeUpdateIdentity = "update_identity" - //MsgTypeCreateIdentity = "create_identity" - // - //TxTypeRequestRand = "request_rand" - // - //TxTypeCreateFeed = "create_feed" - //TxTypeEditFeed = "edit_feed" - //TxTypePauseFeed = "pause_feed" - //TxTypeStartFeed = "start_feed" -) - -type ( - MsgDocInfo struct { - DocTxMsg model.DocTxMsg - Addrs []string - Signers []string - } - Msg model.Msg - SdkMsg sdk.Msg - - Coin model.Coin - - Coins []*Coin - - MsgSend = bank.MsgSend - MsgMultiSend = bank.MsgMultiSend - - MsgNFTMint = nft.MsgMintNFT - MsgNFTEdit = nft.MsgEditNFT - MsgNFTTransfer = nft.MsgTransferNFT - MsgNFTBurn = nft.MsgBurnNFT - MsgIssueDenom = nft.MsgIssueDenom - - MsgDefineService = service.MsgDefineService - MsgBindService = service.MsgBindService - MsgCallService = service.MsgCallService - MsgRespondService = service.MsgRespondService - - MsgUpdateServiceBinding = service.MsgUpdateServiceBinding - MsgSetWithdrawAddress = service.MsgSetWithdrawAddress - MsgDisableServiceBinding = service.MsgDisableServiceBinding - MsgEnableServiceBinding = service.MsgEnableServiceBinding - MsgRefundServiceDeposit = service.MsgRefundServiceDeposit - MsgPauseRequestContext = service.MsgPauseRequestContext - MsgStartRequestContext = service.MsgStartRequestContext - MsgKillRequestContext = service.MsgKillRequestContext - MsgUpdateRequestContext = service.MsgUpdateRequestContext - MsgWithdrawEarnedFees = service.MsgWithdrawEarnedFees - - MsgRecordCreate = record.MsgCreateRecord - - MsgIssueToken = token.MsgIssueToken - MsgEditToken = token.MsgEditToken - MsgMintToken = token.MsgMintToken - MsgBurnToken = token.MsgBurnToken - MsgTransferTokenOwner = token.MsgTransferTokenOwner - - MsgCreateValidator = stake.MsgCreateValidator - MsgEditValidator = stake.MsgEditValidator - MsgDelegate = stake.MsgDelegate - MsgUndelegate = stake.MsgUndelegate - MsgBeginRedelegate = stake.MsgBeginRedelegate - MsgUnjail = slashing.MsgUnjail - MsgStakeSetWithdrawAddress = distribution.MsgSetWithdrawAddress - MsgWithdrawDelegatorReward = distribution.MsgWithdrawDelegatorReward - MsgFundCommunityPool = distribution.MsgFundCommunityPool - MsgWithdrawValidatorCommission = distribution.MsgWithdrawValidatorCommission - StakeValidator = stake.Validator - Delegation = stake.Delegation - UnbondingDelegation = stake.UnbondingDelegation - - MsgDeposit = gov.MsgDeposit - MsgSubmitProposal = gov.MsgSubmitProposal - TextProposal = gov.TextProposal - MsgVote = gov.MsgVote - Proposal = gov.Proposal - SdkVote = gov.Vote - GovContent = gov.Content - - MsgSwapOrder = coinswap.MsgSwapOrder - MsgAddLiquidity = coinswap.MsgAddLiquidity - MsgRemoveLiquidity = coinswap.MsgRemoveLiquidity - - MsgClaimHTLC = htlc.MsgClaimHTLC - MsgCreateHTLC = htlc.MsgCreateHTLC - MsgRefundHTLC = htlc.MsgRefundHTLC - - MsgSubmitEvidence = evidence.MsgSubmitEvidence - MsgVerifyInvariant = crisis.MsgVerifyInvariant - - MsgRecvPacket = ibc.MsgRecvPacket - MsgTransfer = ibctransfer.MsgTransfer - //MsgTransferResponse = ibctransfer.MsgTransferResponse - - MsgCreateClient = ibcclient.MsgCreateClient - MsgUpdateClient = ibcclient.MsgUpdateClient -) diff --git a/task/create.go b/task/create.go index dafa144..260c0b9 100644 --- a/task/create.go +++ b/task/create.go @@ -4,7 +4,7 @@ import ( "fmt" "github.com/irisnet/rainbow-sync/conf" model "github.com/irisnet/rainbow-sync/db" - "github.com/irisnet/rainbow-sync/logger" + "github.com/irisnet/rainbow-sync/lib/logger" imodel "github.com/irisnet/rainbow-sync/model" "gopkg.in/mgo.v2/bson" "gopkg.in/mgo.v2/txn" diff --git a/task/execute.go b/task/execute.go index cb62dfe..24f4cf7 100644 --- a/task/execute.go +++ b/task/execute.go @@ -6,8 +6,8 @@ import ( "github.com/irisnet/rainbow-sync/block" "github.com/irisnet/rainbow-sync/conf" model "github.com/irisnet/rainbow-sync/db" + "github.com/irisnet/rainbow-sync/lib/logger" "github.com/irisnet/rainbow-sync/lib/pool" - "github.com/irisnet/rainbow-sync/logger" imodel "github.com/irisnet/rainbow-sync/model" "github.com/irisnet/rainbow-sync/utils" "gopkg.in/mgo.v2" diff --git a/task/start.go b/task/start.go index 781401f..7528655 100644 --- a/task/start.go +++ b/task/start.go @@ -1,10 +1,7 @@ package task -import "github.com/irisnet/rainbow-sync/cron" - func Start() { synctask := new(TaskIrisService) go synctask.StartCreateTask() go synctask.StartExecuteTask() - go new(cron.CronService).StartCronService() } diff --git a/utils/utils.go b/utils/utils.go index aaa248c..c34b946 100644 --- a/utils/utils.go +++ b/utils/utils.go @@ -4,7 +4,7 @@ import ( "encoding/hex" "encoding/json" "fmt" - "github.com/irisnet/rainbow-sync/logger" + "github.com/irisnet/rainbow-sync/lib/logger" "math/rand" "strconv" "strings" From e9120808fcd0517aa540560a622f7341500e91ab Mon Sep 17 00:00:00 2001 From: huangweichang Date: Fri, 29 Jan 2021 17:11:39 +0800 Subject: [PATCH 39/49] refactor code about remove cosmos sdk --- README.md | 2 +- block/config.go | 8 ++------ block/handler.go | 4 ++-- block/parse_tx.go | 14 ++------------ block/parse_tx_test.go | 2 +- conf/types.go | 2 +- go.mod | 7 +++---- go.sum | 42 ++++++++++++++++++++++++------------------ model/tx.go | 7 +------ 9 files changed, 37 insertions(+), 51 deletions(-) diff --git a/README.md b/README.md index 1233621..c3df147 100644 --- a/README.md +++ b/README.md @@ -56,7 +56,7 @@ docker run --name rainbow-sync \& | BEHIND_BLOCK_NUM | string | 0 | wait block num to handle tx | 0 | - Remarks - - synchronizes irishub data from specify block height(such as:17908 current time:1576208532) + - synchronizes block chain data from specify block height(such as:17908 current time:1576208532) At first,stop the rainbow-sync and create the task. Run: ```bash diff --git a/block/config.go b/block/config.go index d856bcc..589bfca 100644 --- a/block/config.go +++ b/block/config.go @@ -1,8 +1,8 @@ package block import ( - sdk "github.com/cosmos/cosmos-sdk/types" "github.com/irisnet/rainbow-sync/conf" + "github.com/weichang-bianjie/msg-sdk/codec" ) var ( @@ -43,9 +43,5 @@ var ( ) func init() { - config := sdk.GetConfig() - config.SetBech32PrefixForAccount(Bech32PrefixAccAddr, Bech32PrefixAccPub) - config.SetBech32PrefixForValidator(Bech32PrefixValAddr, Bech32PrefixValPub) - config.SetBech32PrefixForConsensusNode(Bech32PrefixConsAddr, Bech32PrefixConsPub) - config.Seal() + codec.SetBech32Prefix(Bech32PrefixAccAddr, Bech32PrefixAccPub, Bech32PrefixValAddr, Bech32PrefixValPub, Bech32PrefixConsAddr, Bech32PrefixConsPub) } diff --git a/block/handler.go b/block/handler.go index 1265092..f4fe53f 100644 --- a/block/handler.go +++ b/block/handler.go @@ -1,12 +1,12 @@ package block import ( - "github.com/cosmos/cosmos-sdk/types" "github.com/irisnet/rainbow-sync/lib/msgsdk" . "github.com/weichang-bianjie/msg-sdk/modules" + "github.com/weichang-bianjie/msg-sdk/types" ) -func HandleTxMsg(v types.Msg) MsgDocInfo { +func HandleTxMsg(v types.SdkMsg) MsgDocInfo { if BankDocInfo, ok := msgsdk.MsgClient.Bank.HandleTxMsg(v); ok { return BankDocInfo } diff --git a/block/parse_tx.go b/block/parse_tx.go index 84a5917..5a3a9d8 100644 --- a/block/parse_tx.go +++ b/block/parse_tx.go @@ -2,8 +2,6 @@ package block import ( "fmt" - sdk "github.com/cosmos/cosmos-sdk/types" - "github.com/cosmos/cosmos-sdk/x/auth/signing" "github.com/irisnet/rainbow-sync/db" "github.com/irisnet/rainbow-sync/lib/logger" "github.com/irisnet/rainbow-sync/lib/pool" @@ -144,14 +142,13 @@ func ParseTx(txBytes types.Tx, block *types.Block, client *pool.Client) (model.T docTx model.Tx actualFee msgsdktypes.Coin ) - Tx, err := codec.GetTxDecoder()(txBytes) + authTx, err := codec.GetSigningTx(txBytes) if err != nil { logger.Error("TxDecoder have error", logger.String("err", err.Error()), logger.Int64("height", block.Height)) return docTx, docMsgs } - authTx := Tx.(signing.Tx) - fee := BuildFee(authTx.GetFee(), authTx.GetGas()) + fee := msgsdktypes.BuildFee(authTx.GetFee(), authTx.GetGas()) memo := authTx.GetMemo() height := block.Height txHash := utils.BuildHex(txBytes.Hash()) @@ -252,13 +249,6 @@ func ParseTx(txBytes types.Tx, block *types.Block, client *pool.Client) (model.T } -func BuildFee(fee sdk.Coins, gas uint64) *model.Fee { - return &model.Fee{ - Amount: msgsdktypes.BuildDocCoins(fee), - Gas: int64(gas), - } -} - func parseEvents(events []aTypes.Event) []model.Event { var eventDocs []model.Event if len(events) > 0 { diff --git a/block/parse_tx_test.go b/block/parse_tx_test.go index 4e21144..36506b6 100644 --- a/block/parse_tx_test.go +++ b/block/parse_tx_test.go @@ -22,7 +22,7 @@ func TestIris_Block_ParseIrisTx(t *testing.T) { { name: "test parse iris tx", args: args{ - b: 1995, + b: 4435, client: client, }, }, diff --git a/conf/types.go b/conf/types.go index a4b382c..2cc3f88 100644 --- a/conf/types.go +++ b/conf/types.go @@ -10,7 +10,7 @@ import ( var ( SvrConf *ServerConf - blockChainMonitorUrl = []string{"tcp://192.168.150.60:21657"} + blockChainMonitorUrl = []string{"tcp://192.168.150.31:56657"} workerNumCreateTask = 1 workerNumExecuteTask = 30 diff --git a/go.mod b/go.mod index b65e042..ac33de0 100644 --- a/go.mod +++ b/go.mod @@ -3,12 +3,11 @@ module github.com/irisnet/rainbow-sync go 1.15 require ( - github.com/cosmos/cosmos-sdk v0.40.0 github.com/jolestar/go-commons-pool v2.0.0+incompatible - github.com/tendermint/tendermint v0.34.1 - github.com/weichang-bianjie/msg-sdk v0.0.0-20210127095957-c6c9a54ce1f2 + github.com/tendermint/tendermint v0.34.3 + github.com/weichang-bianjie/msg-sdk v0.0.0-20210129082404-2c9bcb6903a0 go.uber.org/zap v1.13.0 - golang.org/x/net v0.0.0-20200930145003-4acb6c075d10 + golang.org/x/net v0.0.0-20201021035429-f5854403a974 gopkg.in/mgo.v2 v2.0.0-20190816093944-a6b53ec6cb22 gopkg.in/natefinch/lumberjack.v2 v2.0.0 gopkg.in/tomb.v2 v2.0.0-20161208151619-d5d1b5820637 // indirect diff --git a/go.sum b/go.sum index 77b2064..440f1b4 100644 --- a/go.sum +++ b/go.sum @@ -41,8 +41,8 @@ github.com/apache/thrift v0.13.0/go.mod h1:cp2SuWMxlEZw2r+iP2GNCdIi4C1qmUzdZFSVb github.com/armon/circbuf v0.0.0-20150827004946-bbbad097214e/go.mod h1:3U/XgcO3hCbHZ8TKRvWD2dDTCfh9M9ya+I9JpbB7O8o= github.com/armon/consul-api v0.0.0-20180202201655-eb2c6b5be1b6/go.mod h1:grANhF5doyWs3UAsr3K4I6qtAmlQcZDesFNEHPZAzj8= github.com/armon/go-metrics v0.0.0-20180917152333-f0300d1749da/go.mod h1:Q73ZrmVTwzkszR9V5SSuryQ31EELlFMUz1kKyl939pY= -github.com/armon/go-metrics v0.3.5 h1:uq4txK6NAUvLQ60rotN+K+JuTnf3XP4TdQmcs9ma5mk= -github.com/armon/go-metrics v0.3.5/go.mod h1:4O98XIr/9W0sxpJ8UaYkvjk10Iff7SnFrb4QAOwNTFc= +github.com/armon/go-metrics v0.3.6 h1:x/tmtOF9cDBoXH7XoAGOz2qqm1DknFD1590XmD/DUJ8= +github.com/armon/go-metrics v0.3.6/go.mod h1:4O98XIr/9W0sxpJ8UaYkvjk10Iff7SnFrb4QAOwNTFc= github.com/armon/go-radix v0.0.0-20180808171621-7fddfc383310/go.mod h1:ufUuZ+zHj4x4TnLV4JWEpy2hxWSpsRywHrMgIH9cCH8= github.com/aryann/difflib v0.0.0-20170710044230-e206f873d14a/go.mod h1:DAHtR1m6lCRdSC2Tm3DSWRPvIPr6xNKyeHdqDQSQT+A= github.com/aws/aws-lambda-go v1.13.3/go.mod h1:4UKl9IzQMoD+QF79YdCuzCwp8VbmG4VAQwij/eHl5CU= @@ -82,6 +82,7 @@ github.com/circonus-labs/circonusllhist v0.1.3/go.mod h1:kMXHVDlOchFAehlya5ePtbp github.com/clbanning/x2j v0.0.0-20191024224557-825249438eec/go.mod h1:jMjuTZXRI4dUb/I5gc9Hdhagfvm9+RyrPryS/auMzxE= github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw= github.com/cncf/udpa/go v0.0.0-20191209042840-269d4d468f6f/go.mod h1:M8M6+tZqaGXZJjfX53e64911xZQV5JYwmTeXPW+k8Sc= +github.com/cncf/udpa/go v0.0.0-20201120205902-5459f2c99403/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk= github.com/cockroachdb/datadriven v0.0.0-20190809214429-80d97fb3cbaa/go.mod h1:zn76sxSg3SzpJ0PPJaLDCu+Bu0Lg3sKTORVIj19EIF8= github.com/codahale/hdrhistogram v0.0.0-20161010025455-3a0bb77429bd/go.mod h1:sE/e/2PUdi/liOCUjSTXgM1o87ZssimdTWN964YiIeI= github.com/confio/ics23/go v0.0.0-20200817220745-f173e6211efb/go.mod h1:E45NqnlpxGnpfTWL/xauN7MRwEE28T4Dd4uraToOaKg= @@ -97,8 +98,8 @@ github.com/coreos/go-systemd v0.0.0-20180511133405-39ca1b05acc7/go.mod h1:F5haX7 github.com/coreos/go-systemd v0.0.0-20190321100706-95778dfbb74e/go.mod h1:F5haX7vjVVG0kc13fIWeqUViNPyEJxv/OmvnBo0Yme4= github.com/coreos/pkg v0.0.0-20160727233714-3ac0863d7acf/go.mod h1:E3G3o1h8I7cfcXa63jLwjI0eiQQMgzzUDFVpN/nH/eA= github.com/coreos/pkg v0.0.0-20180928190104-399ea9e2e55f/go.mod h1:E3G3o1h8I7cfcXa63jLwjI0eiQQMgzzUDFVpN/nH/eA= -github.com/cosmos/cosmos-sdk v0.40.0 h1:nMPdGr5lly9HOENghgr5IRx2QDieqAncHKCSsCdEJSU= -github.com/cosmos/cosmos-sdk v0.40.0/go.mod h1:MMEVnorMyci71WQopgvFmfz2SrDCdWgq5lBjpVclFrg= +github.com/cosmos/cosmos-sdk v0.40.1 h1:gjrtV3MQj/CMeyXN4+sosHMG6Xwa2uH6HITSjSNL/0E= +github.com/cosmos/cosmos-sdk v0.40.1/go.mod h1:vlgqdPpUGSxgqSbZea6fjszoLkPKwCuiqSBySLlv4ro= github.com/cosmos/go-bip39 v0.0.0-20180819234021-555e2067c45d/go.mod h1:tSxLoYXyBmiFeKpvmq4dzayMdCjCnu8uqmCysIGBT2Y= github.com/cosmos/go-bip39 v1.0.0 h1:pcomnQdrdH22njcAatO0yWojsUnCO3y2tNoV1cb6hHY= github.com/cosmos/go-bip39 v1.0.0/go.mod h1:RNJv0H/pOIVgxw6KS7QeX2a0Uo0aKUlfhZ4xuwvCdJw= @@ -147,6 +148,7 @@ github.com/envoyproxy/go-control-plane v0.6.9/go.mod h1:SBwIajubJHhxtWwsL9s8ss4s github.com/envoyproxy/go-control-plane v0.9.0/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= github.com/envoyproxy/go-control-plane v0.9.1-0.20191026205805-5f8ba28d4473/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= github.com/envoyproxy/go-control-plane v0.9.4/go.mod h1:6rpuAdCZL397s3pYoYcLgu1mIlRU8Am5FuJP05cCM98= +github.com/envoyproxy/go-control-plane v0.9.9-0.20201210154907-fd9021fe5dad/go.mod h1:cXg6YxExXjJnVBQHBLXeUAgxn2UodCpnH306RInaBQk= github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c= github.com/facebookgo/ensure v0.0.0-20160127193407-b4ab57deab51/go.mod h1:Yg+htXGokKKdzcwhuNDwVvN+uBxDGXJ7G/VN1d8fa64= github.com/facebookgo/stack v0.0.0-20160209184415-751773369052/go.mod h1:UbMTZqLaRiH3MsBH8va0n7s1pQYcu3uTb8G4tygF4Zg= @@ -285,8 +287,8 @@ github.com/hudl/fargo v1.3.0/go.mod h1:y3CKSmjA+wD2gak7sUSXTAoopbhU08POFhmITJgmK github.com/inconshreveable/mousetrap v1.0.0 h1:Z8tu5sraLXCXIcARxBp/8cbvlwVa7Z1NHg9XEKhtSvM= github.com/inconshreveable/mousetrap v1.0.0/go.mod h1:PxqpIevigyE2G7u3NXJIT2ANytuPF1OarO4DADm73n8= github.com/influxdata/influxdb1-client v0.0.0-20191209144304-8bf82d3c094d/go.mod h1:qj24IKcXYK6Iy9ceXlo3Tc+vtHo9lIhSX5JddghvEPo= -github.com/irisnet/irismod v1.2.0 h1:he8+LatwBcoIQ2qX7lTpEJLQFhfgISNpHOkB+ETyTFU= -github.com/irisnet/irismod v1.2.0/go.mod h1:j7coXR8hg12Jp6B9MlvrnYdjoPGf8vTV/GIyZeL8x9I= +github.com/irisnet/irismod v1.2.1 h1:MWFLpG9gq82ArA2/2WwYEJ0eGb8AHFpal38hMDHwYKc= +github.com/irisnet/irismod v1.2.1/go.mod h1:wVU9KNSJwWgJ/jVroGENDe96QOk690EisCi9jPo+9m4= github.com/jessevdk/go-flags v0.0.0-20141203071132-1679536dcc89/go.mod h1:4FA24M0QyGHXBuZZK/XkWh8h0e1EYbRYJSGM75WSRxI= github.com/jessevdk/go-flags v1.4.0/go.mod h1:4FA24M0QyGHXBuZZK/XkWh8h0e1EYbRYJSGM75WSRxI= github.com/jmespath/go-jmespath v0.0.0-20180206201540-c2b33e8439af/go.mod h1:Nht3zPeWKUH0NzdCt2Blrr5ys8VGpn0CEB0cQHVjt7k= @@ -453,8 +455,8 @@ github.com/rakyll/statik v0.1.7/go.mod h1:AlZONWzMtEnMs7W4e/1LURLiI49pIMmp6V9Ung github.com/rcrowley/go-metrics v0.0.0-20181016184325-3113b8401b8a/go.mod h1:bCqnVzQkZxMG4s8nGwiZ5l3QUCyqpo9Y+/ZMZ9VjZe4= github.com/rcrowley/go-metrics v0.0.0-20200313005456-10cdbea86bc0 h1:MkV+77GLUNo5oJ0jf870itWm3D0Sjh7+Za9gazKc5LQ= github.com/rcrowley/go-metrics v0.0.0-20200313005456-10cdbea86bc0/go.mod h1:bCqnVzQkZxMG4s8nGwiZ5l3QUCyqpo9Y+/ZMZ9VjZe4= -github.com/regen-network/cosmos-proto v0.3.0 h1:24dVpPrPi0GDoPVLesf2Ug98iK5QgVscPl0ga4Eoub0= -github.com/regen-network/cosmos-proto v0.3.0/go.mod h1:zuP2jVPHab6+IIyOx3nXHFN+euFNeS3W8XQkcdd4s7A= +github.com/regen-network/cosmos-proto v0.3.1 h1:rV7iM4SSFAagvy8RiyhiACbWEGotmqzywPxOvwMdxcg= +github.com/regen-network/cosmos-proto v0.3.1/go.mod h1:jO0sVX6a1B36nmE8C9xBFXpNwWejXC7QqCOnH3O0+YM= github.com/regen-network/protobuf v1.3.2-alpha.regen.4 h1:c9jEnU+xm6vqyrQe3M94UFWqiXxRIKKnqBOh2EACmBE= github.com/regen-network/protobuf v1.3.2-alpha.regen.4/go.mod h1:/J8/bR1T/NXyIdQDLUaq15LjNE83nRzkyrLAMcPewig= github.com/rogpeppe/fastuuid v0.0.0-20150106093220-6724a57986af/go.mod h1:XWv6SoW27p1b0cqNHllgS5HIMJraePCO15w5zCzIWYg= @@ -513,8 +515,10 @@ github.com/stretchr/objx v0.2.0/go.mod h1:qt09Ya8vawLte6SNmTgCsAVtYtaKzEcn8ATUoH github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4= -github.com/stretchr/testify v1.6.1 h1:hDPOHmpOpP40lSULcqw7IrRb/u7w6RpDC9399XyoNd0= +github.com/stretchr/testify v1.5.1/go.mod h1:5W2xD1RspED5o8YsWQXVCued0rvSQ+mT+I5cxcmMvtA= github.com/stretchr/testify v1.6.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= +github.com/stretchr/testify v1.7.0 h1:nwc3DEeHmmLAfoZucVR881uASk0Mfjw8xYJ99tb5CcY= +github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= github.com/subosito/gotenv v1.2.0 h1:Slr1R9HxAlEKefgq5jn9U+DnETlIUa6HfgEzj0g5d7s= github.com/subosito/gotenv v1.2.0/go.mod h1:N0PQaV/YGNqwC0u51sEeR/aUtSLEXKX9iv69rRypqCw= github.com/syndtr/goleveldb v1.0.1-0.20200815110645-5c35d600f0ca h1:Ld/zXl5t4+D69SiV4JoN7kkfvJdOWlPpfxrzxpLMoUk= @@ -530,8 +534,8 @@ github.com/tendermint/go-amino v0.16.0/go.mod h1:TQU0M1i/ImAo+tYpZi73AU3V/dKeCoM github.com/tendermint/tendermint v0.34.0-rc4/go.mod h1:yotsojf2C1QBOw4dZrTcxbyxmPUrT4hNuOQWX9XUwB4= github.com/tendermint/tendermint v0.34.0-rc6/go.mod h1:ugzyZO5foutZImv0Iyx/gOFCX6mjJTgbLHTwi17VDVg= github.com/tendermint/tendermint v0.34.0/go.mod h1:Aj3PIipBFSNO21r+Lq3TtzQ+uKESxkbA3yo/INM4QwQ= -github.com/tendermint/tendermint v0.34.1 h1:TsJXY8+1NThc/XIENMv1ENzazriHBJJjeP6hN3kpC8g= -github.com/tendermint/tendermint v0.34.1/go.mod h1:Aj3PIipBFSNO21r+Lq3TtzQ+uKESxkbA3yo/INM4QwQ= +github.com/tendermint/tendermint v0.34.3 h1:9yEsf3WO5VAwPVwrmM+RffDMiijmNfWaBwNttHm0q5w= +github.com/tendermint/tendermint v0.34.3/go.mod h1:h57vnXeOlrdvvNFCqPBSaOrpOivl+2swWEtlUAqStYE= github.com/tendermint/tm-db v0.6.2/go.mod h1:GYtQ67SUvATOcoY8/+x6ylk8Qo02BQyLrAs+yAcLvGI= github.com/tendermint/tm-db v0.6.3 h1:ZkhQcKnB8/2jr5EaZwGndN4owkPsGezW2fSisS9zGbg= github.com/tendermint/tm-db v0.6.3/go.mod h1:lfA1dL9/Y/Y8wwyPp2NMLyn5P5Ptr/gvDFNWtrCWSf8= @@ -549,8 +553,8 @@ github.com/ugorji/go v1.1.4/go.mod h1:uQMGLiO92mf5W77hV/PUCpI3pbzQx3CRekS0kk+RGr github.com/ugorji/go/codec v0.0.0-20181204163529-d75b2dcb6bc8/go.mod h1:VFNgLljTbGfSG7qAOspJ7OScBnGdDN/yBr0sguwnwf0= github.com/urfave/cli v1.20.0/go.mod h1:70zkFmudgCuE/ngEzBv17Jvp/497gISqfk5gWijbERA= github.com/urfave/cli v1.22.1/go.mod h1:Gos4lmkARVdJ6EkW0WaNv/tZAAMe9V7XWyB60NtXRu0= -github.com/weichang-bianjie/msg-sdk v0.0.0-20210127095957-c6c9a54ce1f2 h1:ZqcjPzs972uxtqcSsoAj8ZkmjNeQ8DjQFKt3f4PG/rA= -github.com/weichang-bianjie/msg-sdk v0.0.0-20210127095957-c6c9a54ce1f2/go.mod h1:hy84on4Kw7q5WiiyD2LjBYcQblr5UYDwqxPW2oL2Tik= +github.com/weichang-bianjie/msg-sdk v0.0.0-20210129082404-2c9bcb6903a0 h1:qCh/YRT/03k/UEaPhUYMo0GYxjOv1Rt6g7OMpe/GF7Q= +github.com/weichang-bianjie/msg-sdk v0.0.0-20210129082404-2c9bcb6903a0/go.mod h1:4o0tSQgeqBzdgptohP+IjqK1V2ItZziLHLkmnS6mvBE= github.com/xeipuuv/gojsonpointer v0.0.0-20180127040702-4e3ac2762d5f h1:J9EGpcZtP0E/raorCMxlFGSTBrsSlaDGf3jU/qvAE2c= github.com/xeipuuv/gojsonpointer v0.0.0-20180127040702-4e3ac2762d5f/go.mod h1:N2zxlSyiKSe5eX1tZViRH5QA0qijqEDrYZiPEAiq3wU= github.com/xeipuuv/gojsonreference v0.0.0-20180127040603-bd5ef7bd5415 h1:EzJWgHovont7NscjpAxXsDA8S8BMYve8Y5+7cuRE7R0= @@ -653,8 +657,8 @@ golang.org/x/net v0.0.0-20200520004742-59133d7f0dd7/go.mod h1:qpuaurCH72eLCgpAm/ golang.org/x/net v0.0.0-20200625001655-4c5254603344/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= golang.org/x/net v0.0.0-20200813134508-3edf25e44fcc/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= golang.org/x/net v0.0.0-20200822124328-c89045814202/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= -golang.org/x/net v0.0.0-20200930145003-4acb6c075d10 h1:YfxMZzv3PjGonQYNUaeU2+DhAdqOxerQ30JFB6WgAXo= -golang.org/x/net v0.0.0-20200930145003-4acb6c075d10/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= +golang.org/x/net v0.0.0-20201021035429-f5854403a974 h1:IX6qOQeG5uLjB/hjjwjedwfjND0hgjPMMyO1RoIXQNI= +golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= @@ -703,6 +707,7 @@ golang.org/x/sys v0.0.0-20200519105757-fe76b779f299/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20200615200032-f1bc736245b1/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200625212154-ddb9806d33ae/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200814200057-3d37ad5750ed/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20201015000850-e3ed0017c211 h1:9UQO31fZ+0aKQOFldThf7BKPMJTiBfWycGh/u3UoO88= golang.org/x/sys v0.0.0-20201015000850-e3ed0017c211/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/term v0.0.0-20201117132131-f5c789dd3221 h1:/ZHdbVpdR/jk3g30/d4yUL0JU9kksj8+F/bnQUVLGDM= @@ -775,8 +780,8 @@ google.golang.org/genproto v0.0.0-20200526211855-cb27e3aa2013/go.mod h1:NbSheEEY google.golang.org/genproto v0.0.0-20200825200019-8632dd797987/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/genproto v0.0.0-20201111145450-ac7456db90a6/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/genproto v0.0.0-20201119123407-9b1e624d6bc4/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20201214200347-8c77b98c765d h1:HV9Z9qMhQEsdlvxNFELgQ11RkMzO3CMkjEySjCtuLes= -google.golang.org/genproto v0.0.0-20201214200347-8c77b98c765d/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20210114201628-6edceaf6022f h1:izedQ6yVIc5mZsRuXzmSreCOlzI0lCU1HpG8yEdMiKw= +google.golang.org/genproto v0.0.0-20210114201628-6edceaf6022f/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/grpc v1.17.0/go.mod h1:6QZJwpn2B+Zp71q/5VxRsJ6NXXVCE5NRUHRo+f3cWCs= google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= google.golang.org/grpc v1.19.1/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= @@ -796,8 +801,9 @@ google.golang.org/grpc v1.31.0/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM google.golang.org/grpc v1.31.1/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak= google.golang.org/grpc v1.32.0/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak= google.golang.org/grpc v1.33.1/go.mod h1:fr5YgcSWrqhRRxogOsw7RzIpsmvOZ6IcH4kBYTpR3n0= -google.golang.org/grpc v1.33.2 h1:EQyQC3sa8M+p6Ulc8yy9SWSS2GVwyRc83gAbG8lrl4o= google.golang.org/grpc v1.33.2/go.mod h1:JMHMWHQWaTccqQQlmk3MJZS+GWXOdAesneDmEnv2fbc= +google.golang.org/grpc v1.35.0 h1:TwIQcH3es+MojMVojxxfQ3l3OF2KzlRxML2xZq0kRo8= +google.golang.org/grpc v1.35.0/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAGRRjU= google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8= google.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0= google.golang.org/protobuf v0.0.0-20200228230310-ab0ca4ff8a60/go.mod h1:cfTl7dwQJ+fmap5saPgwCLgHXTUD7jkjRqWcaiX5VyM= diff --git a/model/tx.go b/model/tx.go index e1c52b4..064ca5b 100644 --- a/model/tx.go +++ b/model/tx.go @@ -11,7 +11,7 @@ type Tx struct { Time int64 `bson:"time"` Height int64 `bson:"height"` TxHash string `bson:"tx_hash"` - Fee *Fee `bson:"fee"` + Fee *types.Fee `bson:"fee"` ActualFee types.Coin `bson:"actual_fee"` Memo string `bson:"memo"` Status string `bson:"status"` @@ -69,8 +69,3 @@ func (d Tx) EnsureIndexes() { db.EnsureIndexes(d.Name(), indexes) } - -type Fee struct { - Amount []types.Coin `bson:"amount"` - Gas int64 `bson:"gas"` -} From 9b18f668ea3814580d63ce5f9f68616b61e1845a Mon Sep 17 00:00:00 2001 From: huangweichang Date: Mon, 1 Feb 2021 19:24:08 +0800 Subject: [PATCH 40/49] fix option type --- msgs/gov/gov.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/msgs/gov/gov.go b/msgs/gov/gov.go index 7706fd3..f6741a2 100644 --- a/msgs/gov/gov.go +++ b/msgs/gov/gov.go @@ -75,7 +75,7 @@ func (m *DocTxMsgSubmitProposal) HandleTxMsg(v SdkMsg) MsgDocInfo { type DocTxMsgVote struct { ProposalID uint64 `bson:"proposal_id"` // ID of the proposal Voter string `bson:"voter"` // address of the voter - Option string `bson:"option"` // option from OptionSet chosen by the voter + Option int32 `bson:"option"` // option from OptionSet chosen by the voter } func (doctx *DocTxMsgVote) GetType() string { @@ -85,7 +85,7 @@ func (doctx *DocTxMsgVote) GetType() string { func (doctx *DocTxMsgVote) BuildMsg(txMsg interface{}) { msg := txMsg.(*MsgVote) doctx.Voter = msg.Voter - doctx.Option = msg.Option.String() + doctx.Option = int32(msg.Option) doctx.ProposalID = msg.ProposalId } From e5d496a64e42fd80707b138082b497e01d94533c Mon Sep 17 00:00:00 2001 From: huangweichang Date: Tue, 2 Feb 2021 20:20:33 +0800 Subject: [PATCH 41/49] adjust parser package path --- block/config.go | 2 +- block/handler.go | 34 +++++++++++++++++----------------- block/parse_tx.go | 6 +++--- go.mod | 2 +- go.sum | 6 ++++-- lib/msgparser/msgparser.go | 11 +++++++++++ lib/msgsdk/msgsdk.go | 11 ----------- model/tx.go | 32 ++++++++++++++++---------------- model/tx_msg.go | 38 +++++++++++++++++++------------------- 9 files changed, 72 insertions(+), 70 deletions(-) create mode 100644 lib/msgparser/msgparser.go delete mode 100644 lib/msgsdk/msgsdk.go diff --git a/block/config.go b/block/config.go index 589bfca..3073ef2 100644 --- a/block/config.go +++ b/block/config.go @@ -2,7 +2,7 @@ package block import ( "github.com/irisnet/rainbow-sync/conf" - "github.com/weichang-bianjie/msg-sdk/codec" + "github.com/kaifei-bianjie/msg-parser/codec" ) var ( diff --git a/block/handler.go b/block/handler.go index f4fe53f..67f5766 100644 --- a/block/handler.go +++ b/block/handler.go @@ -1,52 +1,52 @@ package block import ( - "github.com/irisnet/rainbow-sync/lib/msgsdk" - . "github.com/weichang-bianjie/msg-sdk/modules" - "github.com/weichang-bianjie/msg-sdk/types" + "github.com/irisnet/rainbow-sync/lib/msgparser" + . "github.com/kaifei-bianjie/msg-parser/modules" + "github.com/kaifei-bianjie/msg-parser/types" ) func HandleTxMsg(v types.SdkMsg) MsgDocInfo { - if BankDocInfo, ok := msgsdk.MsgClient.Bank.HandleTxMsg(v); ok { + if BankDocInfo, ok := msgparser.MsgClient.Bank.HandleTxMsg(v); ok { return BankDocInfo } - if IServiceDocInfo, ok := msgsdk.MsgClient.Service.HandleTxMsg(v); ok { + if IServiceDocInfo, ok := msgparser.MsgClient.Service.HandleTxMsg(v); ok { return IServiceDocInfo } - if NftDocInfo, ok := msgsdk.MsgClient.Nft.HandleTxMsg(v); ok { + if NftDocInfo, ok := msgparser.MsgClient.Nft.HandleTxMsg(v); ok { return NftDocInfo } - if RecordDocInfo, ok := msgsdk.MsgClient.Record.HandleTxMsg(v); ok { + if RecordDocInfo, ok := msgparser.MsgClient.Record.HandleTxMsg(v); ok { return RecordDocInfo } - if TokenDocInfo, ok := msgsdk.MsgClient.Token.HandleTxMsg(v); ok { + if TokenDocInfo, ok := msgparser.MsgClient.Token.HandleTxMsg(v); ok { return TokenDocInfo } - if CoinswapDocInfo, ok := msgsdk.MsgClient.Coinswap.HandleTxMsg(v); ok { + if CoinswapDocInfo, ok := msgparser.MsgClient.Coinswap.HandleTxMsg(v); ok { return CoinswapDocInfo } - if CrisisDocInfo, ok := msgsdk.MsgClient.Crisis.HandleTxMsg(v); ok { + if CrisisDocInfo, ok := msgparser.MsgClient.Crisis.HandleTxMsg(v); ok { return CrisisDocInfo } - if DistrubutionDocInfo, ok := msgsdk.MsgClient.Distribution.HandleTxMsg(v); ok { + if DistrubutionDocInfo, ok := msgparser.MsgClient.Distribution.HandleTxMsg(v); ok { return DistrubutionDocInfo } - if SlashingDocInfo, ok := msgsdk.MsgClient.Slashing.HandleTxMsg(v); ok { + if SlashingDocInfo, ok := msgparser.MsgClient.Slashing.HandleTxMsg(v); ok { return SlashingDocInfo } - if EvidenceDocInfo, ok := msgsdk.MsgClient.Evidence.HandleTxMsg(v); ok { + if EvidenceDocInfo, ok := msgparser.MsgClient.Evidence.HandleTxMsg(v); ok { return EvidenceDocInfo } - if HtlcDocInfo, ok := msgsdk.MsgClient.Htlc.HandleTxMsg(v); ok { + if HtlcDocInfo, ok := msgparser.MsgClient.Htlc.HandleTxMsg(v); ok { return HtlcDocInfo } - if StakingDocInfo, ok := msgsdk.MsgClient.Staking.HandleTxMsg(v); ok { + if StakingDocInfo, ok := msgparser.MsgClient.Staking.HandleTxMsg(v); ok { return StakingDocInfo } - if GovDocInfo, ok := msgsdk.MsgClient.Gov.HandleTxMsg(v); ok { + if GovDocInfo, ok := msgparser.MsgClient.Gov.HandleTxMsg(v); ok { return GovDocInfo } - if IbcDocInfo, ok := msgsdk.MsgClient.Ibc.HandleTxMsg(v); ok { + if IbcDocInfo, ok := msgparser.MsgClient.Ibc.HandleTxMsg(v); ok { return IbcDocInfo } return MsgDocInfo{} diff --git a/block/parse_tx.go b/block/parse_tx.go index 5a3a9d8..77452dd 100644 --- a/block/parse_tx.go +++ b/block/parse_tx.go @@ -7,10 +7,10 @@ import ( "github.com/irisnet/rainbow-sync/lib/pool" "github.com/irisnet/rainbow-sync/model" "github.com/irisnet/rainbow-sync/utils" + "github.com/kaifei-bianjie/msg-parser/codec" + msgsdktypes "github.com/kaifei-bianjie/msg-parser/types" aTypes "github.com/tendermint/tendermint/abci/types" "github.com/tendermint/tendermint/types" - "github.com/weichang-bianjie/msg-sdk/codec" - msgsdktypes "github.com/weichang-bianjie/msg-sdk/types" "golang.org/x/net/context" "gopkg.in/mgo.v2/bson" "gopkg.in/mgo.v2/txn" @@ -138,7 +138,7 @@ func ParseTx(txBytes types.Tx, block *types.Block, client *pool.Client) (model.T var ( docMsgs []model.TxMsg - docTxMsgs []msgsdktypes.DocTxMsg + docTxMsgs []msgsdktypes.TxMsg docTx model.Tx actualFee msgsdktypes.Coin ) diff --git a/go.mod b/go.mod index ac33de0..28af3ed 100644 --- a/go.mod +++ b/go.mod @@ -5,7 +5,7 @@ go 1.15 require ( github.com/jolestar/go-commons-pool v2.0.0+incompatible github.com/tendermint/tendermint v0.34.3 - github.com/weichang-bianjie/msg-sdk v0.0.0-20210129082404-2c9bcb6903a0 + github.com/kaifei-bianjie/msg-parser v0.0.0-20210202102810-65924f17d0bc go.uber.org/zap v1.13.0 golang.org/x/net v0.0.0-20201021035429-f5854403a974 gopkg.in/mgo.v2 v2.0.0-20190816093944-a6b53ec6cb22 diff --git a/go.sum b/go.sum index 440f1b4..0e01549 100644 --- a/go.sum +++ b/go.sum @@ -308,6 +308,10 @@ github.com/jstemmer/go-junit-report v0.0.0-20190106144839-af01ea7f8024/go.mod h1 github.com/jtolds/gls v4.20.0+incompatible/go.mod h1:QJZ7F/aHp+rZTRtaJ1ow/lLfFfVYBRgL+9YlvaHOwJU= github.com/julienschmidt/httprouter v1.2.0/go.mod h1:SYymIcj16QtmaHHD7aYtjjsJG7VTCxuUUipMqKk8s4w= github.com/julienschmidt/httprouter v1.3.0/go.mod h1:JR6WtHb+2LUe8TCKY3cZOxFyyO8IZAc4RVcycCCAKdM= +github.com/kaifei-bianjie/msg-parser v0.0.0-20210129082404-2c9bcb6903a0 h1:qCh/YRT/03k/UEaPhUYMo0GYxjOv1Rt6g7OMpe/GF7Q= +github.com/kaifei-bianjie/msg-parser v0.0.0-20210129082404-2c9bcb6903a0/go.mod h1:4o0tSQgeqBzdgptohP+IjqK1V2ItZziLHLkmnS6mvBE= +github.com/kaifei-bianjie/msg-parser v0.0.0-20210202102810-65924f17d0bc h1:40qxmyecwWDh9rxgFwLBx8JmmTKQ+bqChj6oPQzagJQ= +github.com/kaifei-bianjie/msg-parser v0.0.0-20210202102810-65924f17d0bc/go.mod h1:6hD28imVMlfwHOzwBa5maA7IwLgbtTcF6FpFx1XgPN4= github.com/keybase/go-keychain v0.0.0-20190712205309-48d3d31d256d h1:Z+RDyXzjKE0i2sTjZ/b1uxiGtPhFy34Ou/Tk0qwN0kM= github.com/keybase/go-keychain v0.0.0-20190712205309-48d3d31d256d/go.mod h1:JJNrCn9otv/2QP4D7SMJBgaleKpOf66PnW6F5WGNRIc= github.com/kisielk/errcheck v1.2.0/go.mod h1:/BMXB+zMLi60iA8Vv6Ksmxu/1UDYcXs4uQLJ+jE2L00= @@ -553,8 +557,6 @@ github.com/ugorji/go v1.1.4/go.mod h1:uQMGLiO92mf5W77hV/PUCpI3pbzQx3CRekS0kk+RGr github.com/ugorji/go/codec v0.0.0-20181204163529-d75b2dcb6bc8/go.mod h1:VFNgLljTbGfSG7qAOspJ7OScBnGdDN/yBr0sguwnwf0= github.com/urfave/cli v1.20.0/go.mod h1:70zkFmudgCuE/ngEzBv17Jvp/497gISqfk5gWijbERA= github.com/urfave/cli v1.22.1/go.mod h1:Gos4lmkARVdJ6EkW0WaNv/tZAAMe9V7XWyB60NtXRu0= -github.com/weichang-bianjie/msg-sdk v0.0.0-20210129082404-2c9bcb6903a0 h1:qCh/YRT/03k/UEaPhUYMo0GYxjOv1Rt6g7OMpe/GF7Q= -github.com/weichang-bianjie/msg-sdk v0.0.0-20210129082404-2c9bcb6903a0/go.mod h1:4o0tSQgeqBzdgptohP+IjqK1V2ItZziLHLkmnS6mvBE= github.com/xeipuuv/gojsonpointer v0.0.0-20180127040702-4e3ac2762d5f h1:J9EGpcZtP0E/raorCMxlFGSTBrsSlaDGf3jU/qvAE2c= github.com/xeipuuv/gojsonpointer v0.0.0-20180127040702-4e3ac2762d5f/go.mod h1:N2zxlSyiKSe5eX1tZViRH5QA0qijqEDrYZiPEAiq3wU= github.com/xeipuuv/gojsonreference v0.0.0-20180127040603-bd5ef7bd5415 h1:EzJWgHovont7NscjpAxXsDA8S8BMYve8Y5+7cuRE7R0= diff --git a/lib/msgparser/msgparser.go b/lib/msgparser/msgparser.go new file mode 100644 index 0000000..ad3cd68 --- /dev/null +++ b/lib/msgparser/msgparser.go @@ -0,0 +1,11 @@ +package msgparser + +import "github.com/kaifei-bianjie/msg-parser" + +var ( + MsgClient msg_parser.MsgClient +) + +func init() { + MsgClient = msg_parser.NewMsgClient() +} diff --git a/lib/msgsdk/msgsdk.go b/lib/msgsdk/msgsdk.go deleted file mode 100644 index a651077..0000000 --- a/lib/msgsdk/msgsdk.go +++ /dev/null @@ -1,11 +0,0 @@ -package msgsdk - -import "github.com/weichang-bianjie/msg-sdk" - -var ( - MsgClient msg_sdk.MsgClient -) - -func init() { - MsgClient = msg_sdk.NewMsgClient() -} diff --git a/model/tx.go b/model/tx.go index 064ca5b..37ff45f 100644 --- a/model/tx.go +++ b/model/tx.go @@ -2,27 +2,27 @@ package model import ( "github.com/irisnet/rainbow-sync/db" - "github.com/weichang-bianjie/msg-sdk/types" + "github.com/kaifei-bianjie/msg-parser/types" "gopkg.in/mgo.v2" "gopkg.in/mgo.v2/bson" ) type Tx struct { - Time int64 `bson:"time"` - Height int64 `bson:"height"` - TxHash string `bson:"tx_hash"` - Fee *types.Fee `bson:"fee"` - ActualFee types.Coin `bson:"actual_fee"` - Memo string `bson:"memo"` - Status string `bson:"status"` - Log string `bson:"log"` - Types []string `bson:"types"` - Events []Event `bson:"events"` - Msgs []types.DocTxMsg `bson:"msgs"` - Signers []string `bson:"signers"` - Addrs []string `bson:"addrs"` - TxIndex uint32 `bson:"tx_index"` - Ext interface{} `bson:"ext"` + Time int64 `bson:"time"` + Height int64 `bson:"height"` + TxHash string `bson:"tx_hash"` + Fee *types.Fee `bson:"fee"` + ActualFee types.Coin `bson:"actual_fee"` + Memo string `bson:"memo"` + Status string `bson:"status"` + Log string `bson:"log"` + Types []string `bson:"types"` + Events []Event `bson:"events"` + Msgs []types.TxMsg `bson:"msgs"` + Signers []string `bson:"signers"` + Addrs []string `bson:"addrs"` + TxIndex uint32 `bson:"tx_index"` + Ext interface{} `bson:"ext"` } type ( diff --git a/model/tx_msg.go b/model/tx_msg.go index 2b45151..cae2a18 100644 --- a/model/tx_msg.go +++ b/model/tx_msg.go @@ -2,30 +2,30 @@ package model import ( "github.com/irisnet/rainbow-sync/db" - "github.com/weichang-bianjie/msg-sdk/types" + "github.com/kaifei-bianjie/msg-parser/types" "gopkg.in/mgo.v2" "gopkg.in/mgo.v2/bson" ) type TxMsg struct { - Time int64 `bson:"time"` - TxFee types.Coin `bson:"tx_fee"` - Height int64 `bson:"height"` - TxHash string `bson:"tx_hash"` - Type string `bson:"type"` - MsgIndex int `bson:"msg_index"` - TxIndex uint32 `bson:"tx_index"` - TxStatus string `bson:"tx_status"` - TxMemo string `bson:"tx_memo"` - TxLog string `bson:"tx_log"` - GasUsed int64 `bson:"gas_used"` - GasWanted int64 `bson:"gas_wanted"` - Events []Event `bson:"events"` - Msg types.DocTxMsg `bson:"msg"` - Addrs []string `bson:"addrs"` - TxAddrs []string `bson:"tx_addrs"` - Signers []string `bson:"signers"` - TxSigners []string `bson:"tx_signers"` + Time int64 `bson:"time"` + TxFee types.Coin `bson:"tx_fee"` + Height int64 `bson:"height"` + TxHash string `bson:"tx_hash"` + Type string `bson:"type"` + MsgIndex int `bson:"msg_index"` + TxIndex uint32 `bson:"tx_index"` + TxStatus string `bson:"tx_status"` + TxMemo string `bson:"tx_memo"` + TxLog string `bson:"tx_log"` + GasUsed int64 `bson:"gas_used"` + GasWanted int64 `bson:"gas_wanted"` + Events []Event `bson:"events"` + Msg types.TxMsg `bson:"msg"` + Addrs []string `bson:"addrs"` + TxAddrs []string `bson:"tx_addrs"` + Signers []string `bson:"signers"` + TxSigners []string `bson:"tx_signers"` } const ( From b36603ef1b87b2af247b9b9a475f3650532646ec Mon Sep 17 00:00:00 2001 From: huangweichang Date: Wed, 3 Feb 2021 09:49:40 +0800 Subject: [PATCH 42/49] adjust parser package path --- msgs/gov/gov.go | 0 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 msgs/gov/gov.go diff --git a/msgs/gov/gov.go b/msgs/gov/gov.go deleted file mode 100644 index e69de29..0000000 From 0bf160b00d25de4ebde15ea499fd81ff2d370c38 Mon Sep 17 00:00:00 2001 From: huangweichang Date: Fri, 5 Feb 2021 10:59:25 +0800 Subject: [PATCH 43/49] update msg parser commit hash --- go.mod | 2 +- go.sum | 6 ++---- 2 files changed, 3 insertions(+), 5 deletions(-) diff --git a/go.mod b/go.mod index 28af3ed..178f8ff 100644 --- a/go.mod +++ b/go.mod @@ -5,7 +5,7 @@ go 1.15 require ( github.com/jolestar/go-commons-pool v2.0.0+incompatible github.com/tendermint/tendermint v0.34.3 - github.com/kaifei-bianjie/msg-parser v0.0.0-20210202102810-65924f17d0bc + github.com/kaifei-bianjie/msg-parser v0.0.0-20210205025444-68411682d9a1 go.uber.org/zap v1.13.0 golang.org/x/net v0.0.0-20201021035429-f5854403a974 gopkg.in/mgo.v2 v2.0.0-20190816093944-a6b53ec6cb22 diff --git a/go.sum b/go.sum index 0e01549..2de05a4 100644 --- a/go.sum +++ b/go.sum @@ -308,10 +308,8 @@ github.com/jstemmer/go-junit-report v0.0.0-20190106144839-af01ea7f8024/go.mod h1 github.com/jtolds/gls v4.20.0+incompatible/go.mod h1:QJZ7F/aHp+rZTRtaJ1ow/lLfFfVYBRgL+9YlvaHOwJU= github.com/julienschmidt/httprouter v1.2.0/go.mod h1:SYymIcj16QtmaHHD7aYtjjsJG7VTCxuUUipMqKk8s4w= github.com/julienschmidt/httprouter v1.3.0/go.mod h1:JR6WtHb+2LUe8TCKY3cZOxFyyO8IZAc4RVcycCCAKdM= -github.com/kaifei-bianjie/msg-parser v0.0.0-20210129082404-2c9bcb6903a0 h1:qCh/YRT/03k/UEaPhUYMo0GYxjOv1Rt6g7OMpe/GF7Q= -github.com/kaifei-bianjie/msg-parser v0.0.0-20210129082404-2c9bcb6903a0/go.mod h1:4o0tSQgeqBzdgptohP+IjqK1V2ItZziLHLkmnS6mvBE= -github.com/kaifei-bianjie/msg-parser v0.0.0-20210202102810-65924f17d0bc h1:40qxmyecwWDh9rxgFwLBx8JmmTKQ+bqChj6oPQzagJQ= -github.com/kaifei-bianjie/msg-parser v0.0.0-20210202102810-65924f17d0bc/go.mod h1:6hD28imVMlfwHOzwBa5maA7IwLgbtTcF6FpFx1XgPN4= +github.com/kaifei-bianjie/msg-parser v0.0.0-20210205025444-68411682d9a1 h1:l9zWJSv6W4UBNI+WlYXAcezCeswcEqQ9HkXX4Vhgnio= +github.com/kaifei-bianjie/msg-parser v0.0.0-20210205025444-68411682d9a1/go.mod h1:6hD28imVMlfwHOzwBa5maA7IwLgbtTcF6FpFx1XgPN4= github.com/keybase/go-keychain v0.0.0-20190712205309-48d3d31d256d h1:Z+RDyXzjKE0i2sTjZ/b1uxiGtPhFy34Ou/Tk0qwN0kM= github.com/keybase/go-keychain v0.0.0-20190712205309-48d3d31d256d/go.mod h1:JJNrCn9otv/2QP4D7SMJBgaleKpOf66PnW6F5WGNRIc= github.com/kisielk/errcheck v1.2.0/go.mod h1:/BMXB+zMLi60iA8Vv6Ksmxu/1UDYcXs4uQLJ+jE2L00= From e0a65037dbfb5b2333496ee1681090a3868ea704 Mon Sep 17 00:00:00 2001 From: huangweichang Date: Sun, 7 Feb 2021 15:39:39 +0800 Subject: [PATCH 44/49] raise err and add sync logic about error resolve --- block/config.go | 3 -- block/parse_tx.go | 69 ++++++++++++++++++------------------------ block/parse_tx_test.go | 6 ++-- script/mongodb.js | 34 --------------------- task/execute.go | 22 ++++++++++++-- utils/constant.go | 12 ++++++++ utils/utils.go | 15 +++++++++ 7 files changed, 79 insertions(+), 82 deletions(-) delete mode 100644 script/mongodb.js create mode 100644 utils/constant.go diff --git a/block/config.go b/block/config.go index 3073ef2..e143cd3 100644 --- a/block/config.go +++ b/block/config.go @@ -37,9 +37,6 @@ var ( Bech32PrefixConsAddr = conf.SvrConf.Bech32ChainPrefix + PrefixConsensus + PrefixAddress // Bech32PrefixConsPub defines the Bech32 prefix of a consensus node public key Bech32PrefixConsPub = conf.SvrConf.Bech32ChainPrefix + PrefixConsensus + PrefixPublic - - TxStatusSuccess = "success" - TxStatusFail = "fail" ) func init() { diff --git a/block/parse_tx.go b/block/parse_tx.go index 77452dd..468490e 100644 --- a/block/parse_tx.go +++ b/block/parse_tx.go @@ -80,34 +80,14 @@ func SaveDocsWithTxn(blockDoc *model.Block, txs []*model.Tx, txMsgs []model.TxMs return nil } -func ParseBlock(b int64, client *pool.Client) (resBlock *model.Block, resTxs []*model.Tx, resTxMsgs []model.TxMsg, resErr error) { +func ParseBlock(b int64, client *pool.Client) (*model.Block, []*model.Tx, []model.TxMsg, error) { defer func() { if err := recover(); err != nil { logger.Error("parse block fail", logger.Int64("height", b), logger.Any("err", err)) - resErr = fmt.Errorf("%v", err) } }() - - resBlock = &model.Block{ - Height: b, - CreateTime: time.Now().Unix(), - } - - txs, msgs, err := ParseTxs(b, client) - if err != nil { - resErr = err - return - } - - resTxs = txs - resTxMsgs = msgs - - return -} - -func ParseTxs(b int64, client *pool.Client) ([]*model.Tx, []model.TxMsg, error) { ctx := context.Background() resblock, err := client.Block(ctx, &b) if err != nil { @@ -118,23 +98,37 @@ func ParseTxs(b int64, client *pool.Client) ([]*model.Tx, []model.TxMsg, error) resblock, err2 = client2.Block(ctx, &b) client2.Release() if err2 != nil { - return nil, nil, err2 + return nil, nil, nil, utils.ConvertErr(b, "", "ParseBlock", err2) } } + blockDoc := model.Block{ + Height: b, + CreateTime: time.Now().Unix(), + } txs := make([]*model.Tx, 0, len(resblock.Block.Txs)) var docMsgs []model.TxMsg - for _, tx := range resblock.Block.Txs { - tx, msgs := ParseTx(tx, resblock.Block, client) + for i, tx := range resblock.Block.Txs { + tx, msgs, err := ParseTx(tx, resblock.Block, client) + if err != nil { + if !utils.CheckSkipErr(err, utils.NoSupportMsgTypeTag) && + !utils.CheckSkipErr(err, utils.ErrNoSupportTxPrefix) { + return &blockDoc, txs, docMsgs, err + } + logger.Warn("skip no support txs", + logger.String("err", err.Error()), + logger.Int("tx_index", i), + logger.Int64("height", b)) + } if tx.Height > 0 { txs = append(txs, &tx) docMsgs = append(docMsgs, msgs...) } } - return txs, docMsgs, nil + return &blockDoc, txs, docMsgs, nil } // parse iris tx from iris block result tx -func ParseTx(txBytes types.Tx, block *types.Block, client *pool.Client) (model.Tx, []model.TxMsg) { +func ParseTx(txBytes types.Tx, block *types.Block, client *pool.Client) (model.Tx, []model.TxMsg, error) { var ( docMsgs []model.TxMsg @@ -142,16 +136,14 @@ func ParseTx(txBytes types.Tx, block *types.Block, client *pool.Client) (model.T docTx model.Tx actualFee msgsdktypes.Coin ) + height := block.Height + txHash := utils.BuildHex(txBytes.Hash()) authTx, err := codec.GetSigningTx(txBytes) if err != nil { - logger.Error("TxDecoder have error", logger.String("err", err.Error()), - logger.Int64("height", block.Height)) - return docTx, docMsgs + return docTx, docMsgs, utils.ConvertErr(block.Height, txHash, "TxDecoder", err) } fee := msgsdktypes.BuildFee(authTx.GetFee(), authTx.GetGas()) memo := authTx.GetMemo() - height := block.Height - txHash := utils.BuildHex(txBytes.Hash()) ctx := context.Background() res, err := client.Tx(ctx, txBytes.Hash(), false) if err != nil { @@ -161,10 +153,7 @@ func ParseTx(txBytes types.Tx, block *types.Block, client *pool.Client) (model.T res, err1 = client2.Tx(ctx, txBytes.Hash(), false) client2.Release() if err1 != nil { - logger.Error("get txResult err", - logger.String("txHash", txHash), - logger.String("err", err1.Error())) - return docTx, docMsgs + return docTx, docMsgs, utils.ConvertErr(block.Height, txHash, "TxResult", err1) } } @@ -181,9 +170,9 @@ func ParseTx(txBytes types.Tx, block *types.Block, client *pool.Client) (model.T Memo: memo, TxIndex: res.Index, } - docTx.Status = TxStatusSuccess + docTx.Status = utils.TxStatusSuccess if res.TxResult.Code != 0 { - docTx.Status = TxStatusFail + docTx.Status = utils.TxStatusFail docTx.Log = res.TxResult.Log } @@ -195,7 +184,7 @@ func ParseTx(txBytes types.Tx, block *types.Block, client *pool.Client) (model.T msgs := authTx.GetMsgs() if len(msgs) == 0 { - return docTx, docMsgs + return docTx, docMsgs, nil } for i, v := range msgs { msgDocInfo := HandleTxMsg(v) @@ -238,14 +227,14 @@ func ParseTx(txBytes types.Tx, block *types.Block, client *pool.Client) (model.T // don't save txs which have not parsed if docTx.TxHash == "" { - return model.Tx{}, docMsgs + return model.Tx{}, docMsgs, utils.ConvertErr(block.Height, txHash, "TxMsg", fmt.Errorf(utils.NoSupportMsgTypeTag)) } for i, _ := range docMsgs { docMsgs[i].TxAddrs = docTx.Addrs docMsgs[i].TxSigners = docTx.Signers } - return docTx, docMsgs + return docTx, docMsgs, nil } diff --git a/block/parse_tx_test.go b/block/parse_tx_test.go index 36506b6..3d99802 100644 --- a/block/parse_tx_test.go +++ b/block/parse_tx_test.go @@ -29,11 +29,13 @@ func TestIris_Block_ParseIrisTx(t *testing.T) { } for _, tt := range tests { t.Run(tt.name, func(t *testing.T) { - res, msg, err := ParseTxs(tt.args.b, tt.args.client) + block, res, msg, err := ParseBlock(tt.args.b, tt.args.client) if err != nil { t.Fatal(err) } - resBytes, _ := json.Marshal(res) + resBytes, _ := json.Marshal(block) + t.Log(string(resBytes)) + resBytes, _ = json.Marshal(res) t.Log(string(resBytes)) resBytes, _ = json.Marshal(msg) t.Log(string(resBytes)) diff --git a/script/mongodb.js b/script/mongodb.js deleted file mode 100644 index 672484e..0000000 --- a/script/mongodb.js +++ /dev/null @@ -1,34 +0,0 @@ -// create database and user -// use rainbow-server -// db.createUser( -// { -// user:"iris", -// pwd:"irispassword", -// roles:[{role:"root",db:"admin"}] -// } -// ) -// create table -// db.createCollection("sync_iris_asset_detail"); -// db.createCollection("sync_iris_block"); -// db.createCollection("sync_iris_task"); -// db.createCollection("sync_iris_tx"); - - -// create index -// db.sync_iris_task.createIndex({"status": 1}, {"background": true}); -// db.sync_iris_tx.createIndex({"to": -1, "height": -1}); -// db.sync_iris_asset_detail.createIndex({"to": -1, "height": -1}); -// db.sync_iris_asset_detail.createIndex({"to": -1, "subject": -1}); -// db.sync_iris_block.createIndex({"height": -1}, {"unique": true}); -// db.sync_iris_task.createIndex({"start_height": 1, "end_height": 1}, {"unique": true}); -// -// -// db.sync_iris_tx.createIndex({'from': 1}, {'background': true}); -// db.sync_iris_tx.createIndex({'initiator': 1}, {'background': true}); -// db.sync_iris_tx.createIndex({"type": 1}, {"background": true}); -/* - * remove collection data - */ -// db.sync_iris_asset_detail.deleteMany({}); -// db.sync_block.deleteMany({}); -// db.sync_task.deleteMany({}); \ No newline at end of file diff --git a/task/execute.go b/task/execute.go index 24f4cf7..972f95c 100644 --- a/task/execute.go +++ b/task/execute.go @@ -13,6 +13,7 @@ import ( "gopkg.in/mgo.v2" "gopkg.in/mgo.v2/bson" "os" + "strings" "time" ) @@ -171,8 +172,16 @@ func (s *TaskIrisService) executeTask(blockNumPerWorkerHandle, maxWorkerSleepTim // parse data from block blockDoc, txDocs, txMsgs, err := block.ParseBlock(inProcessBlock, client) if err != nil { - logger.Error("Parse block fail", logger.Int64("block", inProcessBlock), - logger.String("err", err.Error())) + if !utils.CheckSkipErr(err, utils.NoSupportMsgTypeTag) && + !utils.CheckSkipErr(err, utils.ErrNoSupportTxPrefix) { + logger.Error("Parse block fail", + logger.Int64("height", inProcessBlock), + logger.String("errTag", utils.GetErrTag(err)), + logger.String("err", err.Error())) + //continue to assert task is valid + blockChainLatestHeight, isValid = assertTaskValid(task, blockNumPerWorkerHandle) + continue + } } // check task owner @@ -192,7 +201,14 @@ func (s *TaskIrisService) executeTask(blockNumPerWorkerHandle, maxWorkerSleepTim err := block.SaveDocsWithTxn(blockDoc, txDocs, txMsgs, taskDoc) if err != nil { - logger.Error("save docs fail", logger.String("err", err.Error())) + if !strings.Contains(err.Error(), utils.ErrDbNotFindTransaction) { + logger.Error("save docs fail", + logger.Int64("height", inProcessBlock), + logger.String("err", err.Error())) + //continue to assert task is valid + blockChainLatestHeight, isValid = assertTaskValid(task, blockNumPerWorkerHandle) + continue + } } else { task.CurrentHeight = inProcessBlock } diff --git a/utils/constant.go b/utils/constant.go new file mode 100644 index 0000000..8662d80 --- /dev/null +++ b/utils/constant.go @@ -0,0 +1,12 @@ +package utils + +const ( + TxStatusSuccess = "success" + TxStatusFail = "fail" + NoSupportMsgTypeTag = "no support msg parse" + //unable to resolve type URL /cosmos.bank.v1beta1.MsgSend + ErrNoSupportTxPrefix = "unable to resolve type URL" + + //cannot find transaction 601bf70ccdee4dde1c8be0d2_f018677a in queue for document {sync_task ObjectIdHex(\"601bdb0ccdee4dd7c214d167\")} + ErrDbNotFindTransaction = "cannot find transaction" +) diff --git a/utils/utils.go b/utils/utils.go index c34b946..7e70cda 100644 --- a/utils/utils.go +++ b/utils/utils.go @@ -15,6 +15,21 @@ func BuildHex(bytes []byte) string { return strings.ToUpper(hex.EncodeToString(bytes)) } +func ConvertErr(height int64, txHash, errTag string, err error) error { + return fmt.Errorf("%v-%v-%v-%v", err.Error(), errTag, height, txHash) +} + +func CheckSkipErr(err error, tag string) bool { + return strings.Contains(err.Error(), tag) +} +func GetErrTag(err error) string { + slice := strings.Split(err.Error(), "-") + if len(slice) == 4 { + return slice[2] + } + return "" +} + func Min(x, y int64) int64 { if x < y { return x From 066d1c98a636393b0aa950ca2e7b7ccda647856d Mon Sep 17 00:00:00 2001 From: huangweichang Date: Mon, 8 Feb 2021 11:08:17 +0800 Subject: [PATCH 45/49] adjust output err logic --- block/parse_tx.go | 24 ++++++++++++------------ task/execute.go | 17 +++++++---------- 2 files changed, 19 insertions(+), 22 deletions(-) diff --git a/block/parse_tx.go b/block/parse_tx.go index 468490e..84e2d3a 100644 --- a/block/parse_tx.go +++ b/block/parse_tx.go @@ -107,17 +107,10 @@ func ParseBlock(b int64, client *pool.Client) (*model.Block, []*model.Tx, []mode } txs := make([]*model.Tx, 0, len(resblock.Block.Txs)) var docMsgs []model.TxMsg - for i, tx := range resblock.Block.Txs { + for _, tx := range resblock.Block.Txs { tx, msgs, err := ParseTx(tx, resblock.Block, client) if err != nil { - if !utils.CheckSkipErr(err, utils.NoSupportMsgTypeTag) && - !utils.CheckSkipErr(err, utils.ErrNoSupportTxPrefix) { - return &blockDoc, txs, docMsgs, err - } - logger.Warn("skip no support txs", - logger.String("err", err.Error()), - logger.Int("tx_index", i), - logger.Int64("height", b)) + return &blockDoc, txs, docMsgs, err } if tx.Height > 0 { txs = append(txs, &tx) @@ -140,7 +133,11 @@ func ParseTx(txBytes types.Tx, block *types.Block, client *pool.Client) (model.T txHash := utils.BuildHex(txBytes.Hash()) authTx, err := codec.GetSigningTx(txBytes) if err != nil { - return docTx, docMsgs, utils.ConvertErr(block.Height, txHash, "TxDecoder", err) + logger.Warn("TxDecoder have error", + logger.String("txhash", txHash), + logger.Int64("height", block.Height), + logger.String("err", err.Error())) + return docTx, docMsgs, nil } fee := msgsdktypes.BuildFee(authTx.GetFee(), authTx.GetGas()) memo := authTx.GetMemo() @@ -226,8 +223,11 @@ func ParseTx(txBytes types.Tx, block *types.Block, client *pool.Client) (model.T docTx.Msgs = docTxMsgs // don't save txs which have not parsed - if docTx.TxHash == "" { - return model.Tx{}, docMsgs, utils.ConvertErr(block.Height, txHash, "TxMsg", fmt.Errorf(utils.NoSupportMsgTypeTag)) + if len(docTx.Addrs) == 0 { + logger.Warn(utils.NoSupportMsgTypeTag, + logger.String("txhash", txHash), + logger.Int64("height", height)) + return model.Tx{}, docMsgs, nil } for i, _ := range docMsgs { diff --git a/task/execute.go b/task/execute.go index 972f95c..f939afb 100644 --- a/task/execute.go +++ b/task/execute.go @@ -172,16 +172,13 @@ func (s *TaskIrisService) executeTask(blockNumPerWorkerHandle, maxWorkerSleepTim // parse data from block blockDoc, txDocs, txMsgs, err := block.ParseBlock(inProcessBlock, client) if err != nil { - if !utils.CheckSkipErr(err, utils.NoSupportMsgTypeTag) && - !utils.CheckSkipErr(err, utils.ErrNoSupportTxPrefix) { - logger.Error("Parse block fail", - logger.Int64("height", inProcessBlock), - logger.String("errTag", utils.GetErrTag(err)), - logger.String("err", err.Error())) - //continue to assert task is valid - blockChainLatestHeight, isValid = assertTaskValid(task, blockNumPerWorkerHandle) - continue - } + logger.Error("Parse block fail", + logger.Int64("height", inProcessBlock), + logger.String("errTag", utils.GetErrTag(err)), + logger.String("err", err.Error())) + //continue to assert task is valid + blockChainLatestHeight, isValid = assertTaskValid(task, blockNumPerWorkerHandle) + continue } // check task owner From 876cb5539ea36ece61c48ec7c9db0dee396de908 Mon Sep 17 00:00:00 2001 From: huangweichang Date: Mon, 8 Feb 2021 11:44:28 +0800 Subject: [PATCH 46/49] fix log output --- block/parse_tx.go | 8 ++++---- block/parse_tx_test.go | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/block/parse_tx.go b/block/parse_tx.go index 84e2d3a..a31389b 100644 --- a/block/parse_tx.go +++ b/block/parse_tx.go @@ -133,10 +133,10 @@ func ParseTx(txBytes types.Tx, block *types.Block, client *pool.Client) (model.T txHash := utils.BuildHex(txBytes.Hash()) authTx, err := codec.GetSigningTx(txBytes) if err != nil { - logger.Warn("TxDecoder have error", + logger.Warn(err.Error(), + logger.String("errTag", "TxDecoder"), logger.String("txhash", txHash), - logger.Int64("height", block.Height), - logger.String("err", err.Error())) + logger.Int64("height", block.Height)) return docTx, docMsgs, nil } fee := msgsdktypes.BuildFee(authTx.GetFee(), authTx.GetGas()) @@ -227,7 +227,7 @@ func ParseTx(txBytes types.Tx, block *types.Block, client *pool.Client) (model.T logger.Warn(utils.NoSupportMsgTypeTag, logger.String("txhash", txHash), logger.Int64("height", height)) - return model.Tx{}, docMsgs, nil + return docTx, docMsgs, nil } for i, _ := range docMsgs { diff --git a/block/parse_tx_test.go b/block/parse_tx_test.go index 3d99802..46f13bb 100644 --- a/block/parse_tx_test.go +++ b/block/parse_tx_test.go @@ -22,7 +22,7 @@ func TestIris_Block_ParseIrisTx(t *testing.T) { { name: "test parse iris tx", args: args{ - b: 4435, + b: 559216, client: client, }, }, From 0d308c7701a53a16514b379e8db2c961e278a8f9 Mon Sep 17 00:00:00 2001 From: huangweichang Date: Mon, 8 Feb 2021 11:55:26 +0800 Subject: [PATCH 47/49] add errTag in log --- block/parse_tx.go | 1 + 1 file changed, 1 insertion(+) diff --git a/block/parse_tx.go b/block/parse_tx.go index a31389b..0a34a14 100644 --- a/block/parse_tx.go +++ b/block/parse_tx.go @@ -225,6 +225,7 @@ func ParseTx(txBytes types.Tx, block *types.Block, client *pool.Client) (model.T // don't save txs which have not parsed if len(docTx.Addrs) == 0 { logger.Warn(utils.NoSupportMsgTypeTag, + logger.String("errTag", "TxMsg"), logger.String("txhash", txHash), logger.Int64("height", height)) return docTx, docMsgs, nil From 13421918a39de68ee179e200cffc8dbe7b4bb03a Mon Sep 17 00:00:00 2001 From: huangweichang Date: Mon, 8 Feb 2021 15:03:22 +0800 Subject: [PATCH 48/49] update code --- utils/constant.go | 2 -- utils/utils.go | 3 --- 2 files changed, 5 deletions(-) diff --git a/utils/constant.go b/utils/constant.go index 8662d80..a6f94e7 100644 --- a/utils/constant.go +++ b/utils/constant.go @@ -4,8 +4,6 @@ const ( TxStatusSuccess = "success" TxStatusFail = "fail" NoSupportMsgTypeTag = "no support msg parse" - //unable to resolve type URL /cosmos.bank.v1beta1.MsgSend - ErrNoSupportTxPrefix = "unable to resolve type URL" //cannot find transaction 601bf70ccdee4dde1c8be0d2_f018677a in queue for document {sync_task ObjectIdHex(\"601bdb0ccdee4dd7c214d167\")} ErrDbNotFindTransaction = "cannot find transaction" diff --git a/utils/utils.go b/utils/utils.go index 7e70cda..ac09d09 100644 --- a/utils/utils.go +++ b/utils/utils.go @@ -19,9 +19,6 @@ func ConvertErr(height int64, txHash, errTag string, err error) error { return fmt.Errorf("%v-%v-%v-%v", err.Error(), errTag, height, txHash) } -func CheckSkipErr(err error, tag string) bool { - return strings.Contains(err.Error(), tag) -} func GetErrTag(err error) string { slice := strings.Split(err.Error(), "-") if len(slice) == 4 { From 80f9eb7407b644b5f36380328d005e446ebf4c30 Mon Sep 17 00:00:00 2001 From: huangweichang Date: Thu, 18 Feb 2021 20:08:15 +0800 Subject: [PATCH 49/49] fix about getting log errtag --- utils/utils.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/utils/utils.go b/utils/utils.go index ac09d09..5e43418 100644 --- a/utils/utils.go +++ b/utils/utils.go @@ -22,7 +22,7 @@ func ConvertErr(height int64, txHash, errTag string, err error) error { func GetErrTag(err error) string { slice := strings.Split(err.Error(), "-") if len(slice) == 4 { - return slice[2] + return slice[1] } return "" }