diff --git a/internal/pkg/chainsdk/core/chain.go b/internal/pkg/chainsdk/core/chain.go index 8672d4ae..4999885b 100644 --- a/internal/pkg/chainsdk/core/chain.go +++ b/internal/pkg/chainsdk/core/chain.go @@ -232,7 +232,6 @@ func (chain *Chain) HandleTrxPsConn(trx *quorumpb.Trx) error { switch trx.Type { case quorumpb.TrxType_POST, - quorumpb.TrxType_ANNOUNCE, quorumpb.TrxType_UPD_GRP_USER, quorumpb.TrxType_CHAIN_CONFIG, quorumpb.TrxType_APP_CONFIG, @@ -724,11 +723,8 @@ func (chain *Chain) ApplyTrxsFullNode(trxs []*quorumpb.Trx, nodename string) err nodectx.GetNodeCtx().GetChainStorage().AddPost(trx, decodedData, nodename) case quorumpb.TrxType_UPD_GRP_USER: chain_log.Debugf("<%s> apply UpdGroupUser trx", chain.groupItem.GroupId) - nodectx.GetNodeCtx().GetChainStorage().UpdateGroupUser(trx.TrxId, decodedData, nodename) + //nodectx.GetNodeCtx().GetChainStorage().UpdateGroupUser(trx.TrxId, decodedData, nodename) chain.updUserList() - case quorumpb.TrxType_ANNOUNCE: - chain_log.Debugf("<%s> apply ANNOUNCE trx", chain.groupItem.GroupId) - nodectx.GetNodeCtx().GetChainStorage().UpdateAnnounce(decodedData, nodename) case quorumpb.TrxType_APP_CONFIG: chain_log.Debugf("<%s> apply APP_CONFIG trx", chain.groupItem.GroupId) nodectx.GetNodeCtx().GetChainStorage().UpdateAppConfig(decodedData, nodename) @@ -803,11 +799,8 @@ func (chain *Chain) ApplyTrxsProducerNode(trxs []*quorumpb.Trx, nodename string) switch trx.Type { case quorumpb.TrxType_UPD_GRP_USER: chain_log.Debugf("<%s> apply USER trx", chain.groupItem.GroupId) - nodectx.GetNodeCtx().GetChainStorage().UpdateGroupUser(trx.TrxId, decodedData, nodename) + //nodectx.GetNodeCtx().GetChainStorage().UpdateGroupUser(trx.TrxId, decodedData, nodename) chain.updUserList() - case quorumpb.TrxType_ANNOUNCE: - chain_log.Debugf("<%s> apply ANNOUNCE trx", chain.groupItem.GroupId) - nodectx.GetNodeCtx().GetChainStorage().UpdateAnnounce(decodedData, nodename) case quorumpb.TrxType_CHAIN_CONFIG: chain_log.Debugf("<%s> apply CHAIN_CONFIG trx", chain.groupItem.GroupId) nodectx.GetNodeCtx().GetChainStorage().UpdateChainConfig(decodedData, nodename) diff --git a/internal/pkg/chainsdk/core/group.go b/internal/pkg/chainsdk/core/group.go index 1574afd0..2e59eef5 100644 --- a/internal/pkg/chainsdk/core/group.go +++ b/internal/pkg/chainsdk/core/group.go @@ -80,41 +80,6 @@ func (grp *Group) NewGroup(item *quorumpb.GroupItem) (*quorumpb.Block, error) { return nil, err } - //owner announce as the first group producer - group_log.Debugf("<%s> owner announce as the first group producer", grp.Item.GroupId) - aContent := &quorumpb.AnnounceContent{ - Type: quorumpb.AnnounceType_AS_PRODUCER, - SignPubkey: item.OwnerPubKey, - EncryptPubkey: item.UserEncryptPubkey, - Memo: "owner announce as the first group producer", - } - - aItem := &quorumpb.AnnounceItem{ - GroupId: item.GroupId, - Action: quorumpb.ActionType_ADD, - Content: aContent, - AnnouncerPubkey: item.OwnerPubKey, - } - - //create hash - byts, err := proto.Marshal(aItem) - if err != nil { - return nil, err - } - aItem.Hash = localcrypto.Hash(byts) - signature, err := ks.EthSignByKeyName(item.GroupId, aItem.Hash) - if err != nil { - return nil, err - } - - aItem.Signature = signature - - //save announce item to db - err = nodectx.GetNodeCtx().GetChainStorage().AddAnnounceItem(aItem, grp.Nodename) - if err != nil { - return nil, err - } - //add group owner as the first group producer group_log.Debugf("<%s> add owner as the first producer", grp.Item.GroupId) pItem := &quorumpb.ProducerItem{} @@ -165,8 +130,6 @@ func (grp *Group) JoinGroup(item *quorumpb.GroupItem) error { grp.ChainCtx = &Chain{} grp.ChainCtx.NewChain(item, grp.Nodename, false) - ks := nodectx.GetNodeCtx().Keystore - //get consensusInfo from genesis block //check there is only 1 trx(FORK) in genesis block if len(item.GenesisBlock.Trxs) != 1 { @@ -204,41 +167,6 @@ func (grp *Group) JoinGroup(item *quorumpb.GroupItem) error { return err } - //owner announce as the first group producer - group_log.Debugf("<%s> owner announce as the first group producer", grp.Item.GroupId) - aContent := &quorumpb.AnnounceContent{ - Type: quorumpb.AnnounceType_AS_PRODUCER, - SignPubkey: item.OwnerPubKey, - EncryptPubkey: item.UserEncryptPubkey, - Memo: "owner announce as the first group producer", - } - - aItem := &quorumpb.AnnounceItem{ - GroupId: item.GroupId, - Action: quorumpb.ActionType_ADD, - Content: aContent, - AnnouncerPubkey: item.OwnerPubKey, - } - - //create hash - byts, err := proto.Marshal(aItem) - if err != nil { - return err - } - aItem.Hash = localcrypto.Hash(byts) - signature, err := ks.EthSignByKeyName(item.GroupId, aItem.Hash) - if err != nil { - return err - } - - aItem.Signature = signature - - //save announce item to db - err = nodectx.GetNodeCtx().GetChainStorage().AddAnnounceItem(aItem, grp.Nodename) - if err != nil { - return err - } - //add group owner as the first group producer group_log.Debugf("<%s> add owner as the first producer", grp.Item.GroupId) pItem := &quorumpb.ProducerItem{} @@ -411,16 +339,6 @@ func (grp *Group) GetProducers() ([]*quorumpb.ProducerItem, error) { return nodectx.GetNodeCtx().GetChainStorage().GetProducers(grp.Item.GroupId, grp.Nodename) } -func (grp *Group) GetAnnouncedProducer(pubkey string) (*quorumpb.AnnounceItem, error) { - group_log.Debugf("<%s> GetAnnouncedProducer called", grp.Item.GroupId) - return nodectx.GetNodeCtx().GetChainStorage().GetAnnouncedProducer(grp.Item.GroupId, pubkey, grp.Nodename) -} - -func (grp *Group) GetAnnouncedUser(pubkey string) (*quorumpb.AnnounceItem, error) { - group_log.Debugf("<%s> GetAnnouncedUser called", grp.Item.GroupId) - return nodectx.GetNodeCtx().GetChainStorage().GetAnnouncedUser(grp.Item.GroupId, pubkey, grp.Nodename) -} - func (grp *Group) GetAppConfigKeyList() (keyName []string, itemType []string, err error) { group_log.Debugf("<%s> GetAppConfigKeyList called", grp.Item.GroupId) return nodectx.GetNodeCtx().GetChainStorage().GetAppConfigKey(grp.Item.GroupId, grp.Nodename) @@ -435,16 +353,6 @@ func (grp *Group) GetCurrentTrxProposeInterval() (uint64, error) { return nodectx.GetNodeCtx().GetChainStorage().GetProducerConsensusConfInterval(grp.Item.GroupId, grp.Nodename) } -// send update announce trx -func (grp *Group) UpdAnnounce(item *quorumpb.AnnounceItem) (string, error) { - group_log.Debugf("<%s> UpdAnnounce called", grp.Item.GroupId) - trx, err := grp.ChainCtx.GetTrxFactory().GetAnnounceTrx("", item) - if err != nil { - return "", nil - } - return grp.sendTrx(trx) -} - // send POST trx func (grp *Group) PostToGroup(content []byte) (string, error) { group_log.Debugf("<%s> PostToGroup called", grp.Item.GroupId) diff --git a/internal/pkg/chainsdk/def/trxfactory.go b/internal/pkg/chainsdk/def/trxfactory.go index ac66d267..41738b85 100644 --- a/internal/pkg/chainsdk/def/trxfactory.go +++ b/internal/pkg/chainsdk/def/trxfactory.go @@ -5,7 +5,6 @@ import ( ) type TrxFactoryIface interface { - GetAnnounceTrx(keyalias string, item *quorumpb.AnnounceItem) (*quorumpb.Trx, error) GetChainConfigTrx(keyalias string, item *quorumpb.ChainConfigItem) (*quorumpb.Trx, error) GetUpdAppConfigTrx(keyalias string, item *quorumpb.AppConfigItem) (*quorumpb.Trx, error) GetUpdGroupUserTrx(keyalias string, item *quorumpb.UpdGroupUserItem) (*quorumpb.Trx, error) diff --git a/internal/pkg/storage/chain/chaindb.go b/internal/pkg/storage/chain/chaindb.go index 1904d4bd..d4ed730c 100644 --- a/internal/pkg/storage/chain/chaindb.go +++ b/internal/pkg/storage/chain/chaindb.go @@ -23,81 +23,6 @@ func NewChainStorage(dbmgr *s.DbMgr) (storage *Storage) { return storage } -func (cs *Storage) AddAnnounceItem(item *quorumpb.AnnounceItem, prefix ...string) (err error) { - var key string - if item.Content.Type == quorumpb.AnnounceType_AS_USER { - key = s.GetAnnounceAsUserKey(item.GroupId, item.Content.SignPubkey, prefix...) - } else if item.Content.Type == quorumpb.AnnounceType_AS_PRODUCER { - key = s.GetAnnounceAsProducerKey(item.GroupId, item.Content.SignPubkey, prefix...) - } else { - return fmt.Errorf("unknown announce type %d", item.Content.Type) - } - - data, err := proto.Marshal(item) - if err != nil { - chaindb_log.Debugf(err.Error()) - return err - } - - err = cs.dbmgr.Db.Set([]byte(key), data) - if err != nil { - chaindb_log.Debugf(err.Error()) - return err - } - - return nil -} - -func (cs *Storage) UpdateAnnounce(data []byte, prefix ...string) (err error) { - item := &quorumpb.AnnounceItem{} - if err := proto.Unmarshal(data, item); err != nil { - chaindb_log.Debugf(err.Error()) - return err - } - - var key string - if item.Content.Type == quorumpb.AnnounceType_AS_USER { - key = s.GetAnnounceAsUserKey(item.GroupId, item.Content.SignPubkey, prefix...) - } else if item.Content.Type == quorumpb.AnnounceType_AS_PRODUCER { - key = s.GetAnnounceAsProducerKey(item.GroupId, item.Content.SignPubkey, prefix...) - } else { - return fmt.Errorf("unknown announce type %d", item.Content.Type) - } - - if item.Action == quorumpb.ActionType_ADD { - //check if already exist - exist, err := cs.dbmgr.Db.IsExist([]byte(key)) - if exist { - if err != nil { - return err - } - return fmt.Errorf("announce item already exist") - } - //add item to db - err = cs.dbmgr.Db.Set([]byte(key), data) - if err != nil { - chaindb_log.Debugf("error %s", err.Error()) - } - } else if item.Action == quorumpb.ActionType_REMOVE { - exist, err := cs.dbmgr.Db.IsExist([]byte(key)) - if !exist { - if err != nil { - return err - } - return fmt.Errorf("announce item not exist") - } - //remove item from db - err = cs.dbmgr.Db.Delete([]byte(key)) - if err != nil { - chaindb_log.Debugf("error %s", err.Error()) - } - } else { - return fmt.Errorf("unknown action type %d", item.Action.Type()) - } - - return nil -} - func (cs *Storage) AddPost(trx *quorumpb.Trx, decodedData []byte, prefix ...string) error { key := s.GetPostKey(trx.GroupId, fmt.Sprint(trx.TimeStamp), trx.TrxId, prefix...) diff --git a/internal/pkg/storage/chain/groupdb.go b/internal/pkg/storage/chain/groupdb.go index 41bef2ec..55580eba 100644 --- a/internal/pkg/storage/chain/groupdb.go +++ b/internal/pkg/storage/chain/groupdb.go @@ -94,14 +94,6 @@ func RemoveGroupData(db s.QuorumStorage, groupId string, prefix ...string) error key = s.GetUserPrefix(groupId, prefix...) keys = append(keys, key) - //all group announced item - key = s.GetAnnouncedPrefix(groupId, prefix...) - keys = append(keys, key) - - //all group schema item - key = s.GetSchemaPrefix(groupId, prefix...) - keys = append(keys, key) - //all group chain_config item key = s.GetChainConfigPrefix(groupId, prefix...) keys = append(keys, key) diff --git a/internal/pkg/storage/chain/producerdb.go b/internal/pkg/storage/chain/producerdb.go index afdda3ce..47d04a54 100644 --- a/internal/pkg/storage/chain/producerdb.go +++ b/internal/pkg/storage/chain/producerdb.go @@ -29,42 +29,6 @@ func (cs *Storage) RemoveAllProducers(groupId string, prefix ...string) error { return err } -func (cs *Storage) GetAnnouncedProducer(groupId string, pubkey string, prefix ...string) (*quorumpb.AnnounceItem, error) { - key := s.GetAnnounceAsProducerKey(groupId, pubkey, prefix...) - - value, err := cs.dbmgr.Db.Get([]byte(key)) - if err != nil { - return nil, err - } - - var ann quorumpb.AnnounceItem - err = proto.Unmarshal(value, &ann) - if err != nil { - return nil, err - } - - return &ann, err -} - -func (cs *Storage) GetAnnouncedProducers(groupId string, prefix ...string) ([]*quorumpb.AnnounceItem, error) { - var aList []*quorumpb.AnnounceItem - key := s.GetAnnounceAsProducerPrefix(groupId, prefix...) - err := cs.dbmgr.Db.PrefixForeach([]byte(key), func(k []byte, v []byte, err error) error { - if err != nil { - return err - } - item := quorumpb.AnnounceItem{} - perr := proto.Unmarshal(v, &item) - if perr != nil { - return perr - } - aList = append(aList, &item) - return nil - }) - - return aList, err -} - func (cs *Storage) GetProducers(groupId string, prefix ...string) ([]*quorumpb.ProducerItem, error) { var pList []*quorumpb.ProducerItem key := s.GetProducerPrefix(groupId, prefix...) @@ -107,11 +71,6 @@ func (cs *Storage) IsProducer(groupId, pubkey string, prefix ...string) (bool, e return cs.dbmgr.Db.IsExist([]byte(key)) } -func (cs *Storage) IsProducerAnnounced(groupId, pubkey string, prefix ...string) (bool, error) { - key := s.GetAnnounceAsProducerKey(groupId, pubkey, prefix...) - return cs.dbmgr.Db.IsExist([]byte(key)) -} - func (cs *Storage) GetProducerConsensusConfInterval(groupId string, prefix ...string) (uint64, error) { key := s.GetProducerConsensusConfInterval(groupId, prefix...) value, err := cs.dbmgr.Db.Get([]byte(key)) diff --git a/internal/pkg/storage/chain/userdb.go b/internal/pkg/storage/chain/userdb.go index 2de84984..3d0b9edc 100644 --- a/internal/pkg/storage/chain/userdb.go +++ b/internal/pkg/storage/chain/userdb.go @@ -1,109 +1,11 @@ package chainstorage import ( - "errors" - s "github.com/rumsystem/quorum/internal/pkg/storage" quorumpb "github.com/rumsystem/quorum/pkg/pb" "google.golang.org/protobuf/proto" ) -func (cs *Storage) UpdateGroupUser(trxId string, data []byte, prefix ...string) (err error) { - item := &quorumpb.UpdGroupUserItem{} - if err := proto.Unmarshal(data, item); err != nil { - return err - } - - if item.Action == quorumpb.ActionType_ADD { - announceItemKey := s.GetAnnounceAsUserKey(item.GroupId, item.UserPubkey, prefix...) - exist, err := cs.dbmgr.Db.IsExist([]byte(announceItemKey)) - if !exist { - if err != nil { - return err - } - return errors.New("announce item not found") - } - - announcedItemBytes, err := cs.dbmgr.Db.Get([]byte(announceItemKey)) - if err != nil { - return err - } - - announcedItem := &quorumpb.AnnounceItem{} - if err := proto.Unmarshal(announcedItemBytes, announcedItem); err != nil { - return err - } - - userItem := &quorumpb.UserItem{ - GroupId: announcedItem.GroupId, - UserPubkey: announcedItem.Content.SignPubkey, - EncryptPubkey: announcedItem.Content.EncryptPubkey, - ProofTrxId: trxId, - TxCnt: 0, - Memo: announcedItem.Content.Memo, - } - - data, err := proto.Marshal(userItem) - if err != nil { - return err - } - - key := s.GetUserKey(item.GroupId, item.UserPubkey, prefix...) - return cs.dbmgr.Db.Set([]byte(key), data) - } else if item.Action == quorumpb.ActionType_REMOVE { - - userKey := s.GetUserKey(item.GroupId, item.UserPubkey, prefix...) - exist, err := cs.dbmgr.Db.IsExist([]byte(userKey)) - if !exist { - if err != nil { - return err - } - return errors.New("user not found") - } - - return cs.dbmgr.Db.Delete([]byte(userKey)) - } else { - chaindb_log.Infof("unknow msgType") - return errors.New("unknow msgType") - } -} - -func (cs *Storage) GetAnnouncedUsers(groupId string, prefix ...string) ([]*quorumpb.AnnounceItem, error) { - var aList []*quorumpb.AnnounceItem - - key := s.GetAnnounceAsUserPrefix(groupId, prefix...) - err := cs.dbmgr.Db.PrefixForeach([]byte(key), func(k []byte, v []byte, err error) error { - if err != nil { - return err - } - item := quorumpb.AnnounceItem{} - perr := proto.Unmarshal(v, &item) - if perr != nil { - return perr - } - aList = append(aList, &item) - return nil - }) - - return aList, err -} - -func (cs *Storage) GetAnnouncedUser(groupId string, pubkey string, prefix ...string) (*quorumpb.AnnounceItem, error) { - key := s.GetAnnounceAsUserKey(groupId, pubkey, prefix...) - value, err := cs.dbmgr.Db.Get([]byte(key)) - if err != nil { - return nil, err - } - - var ann quorumpb.AnnounceItem - err = proto.Unmarshal(value, &ann) - if err != nil { - return nil, err - } - - return &ann, err -} - func (cs *Storage) GetUsers(groupId string, prefix ...string) ([]*quorumpb.UserItem, error) { var uList []*quorumpb.UserItem @@ -144,8 +46,3 @@ func (cs *Storage) IsUser(groupId, userSignPubkey string, prefix ...string) (boo key := s.GetUserKey(groupId, userSignPubkey, prefix...) return cs.dbmgr.Db.IsExist([]byte(key)) } - -func (cs *Storage) IsUserAnnounced(groupId, userSignPubkey string, prefix ...string) (bool, error) { - key := s.GetAnnounceAsUserKey(groupId, userSignPubkey, prefix...) - return cs.dbmgr.Db.IsExist([]byte(key)) -} diff --git a/internal/pkg/storage/dbmgr.go b/internal/pkg/storage/dbmgr.go index 497d7c4b..14e844c7 100644 --- a/internal/pkg/storage/dbmgr.go +++ b/internal/pkg/storage/dbmgr.go @@ -180,21 +180,6 @@ func (dbMgr *DbMgr) GetGroupsBytes() ([][]byte, error) { return groupItemList, err } -func (dbMgr *DbMgr) GetAllAnnounceInBytes(groupId string, Prefix ...string) ([][]byte, error) { - key := GetAnnouncedPrefix(groupId, Prefix...) - var announceByteList [][]byte - - err := dbMgr.Db.PrefixForeach([]byte(key), func(k []byte, v []byte, err error) error { - if err != nil { - return err - } - announceByteList = append(announceByteList, v) - return nil - }) - - return announceByteList, err -} - func (dbMgr *DbMgr) GetAppConfigItemInt(itemKey string, groupId string, prefix ...string) (int, error) { key := GetAppConfigKey(groupId, itemKey, prefix...) value, err := dbMgr.Db.Get([]byte(key)) diff --git a/internal/pkg/storage/def/chainstorage.go b/internal/pkg/storage/def/chainstorage.go index 31c13175..668a63c1 100644 --- a/internal/pkg/storage/def/chainstorage.go +++ b/internal/pkg/storage/def/chainstorage.go @@ -16,16 +16,10 @@ type TrxStorageIface interface { } type APIHandlerIface interface { - IsUserAnnounced(groupId, userSignPubkey string, prefix ...string) (bool, error) - IsProducerAnnounced(groupId, producerSignPubkey string, prefix ...string) (bool, error) IsUser(groupId, userSignPubkey string, prefix ...string) (bool, error) IsProducer(groupId, producerSignPubkey string, prefix ...string) (bool, error) GetSendTrxAuthListByGroupId(groupId string, listType quorumpb.AuthListType, prefix ...string) ([]*quorumpb.ChainConfigItem, []*quorumpb.ChainSendTrxRuleListItem, error) GetTrxAuthModeByGroupId(groupId string, trxType quorumpb.TrxType, prefix ...string) (quorumpb.TrxAuthMode, error) - GetAnnouncedProducers(groupId string, prefix ...string) ([]*quorumpb.AnnounceItem, error) - GetAnnouncedUsers(groupId string, prefix ...string) ([]*quorumpb.AnnounceItem, error) - GetAnnouncedProducer(groupId, producerSignPubkey string, prefix ...string) (*quorumpb.AnnounceItem, error) - GetAnnouncedUser(groupId, userSignPubkey string, prefix ...string) (*quorumpb.AnnounceItem, error) GetUsers(groupId string, prefix ...string) ([]*quorumpb.UserItem, error) GetProducers(groupId string, prefix ...string) ([]*quorumpb.ProducerItem, error) GetUser(groupId, userSignPubkey string, prefix ...string) (*quorumpb.UserItem, error) diff --git a/internal/pkg/storage/prefix.go b/internal/pkg/storage/prefix.go index 7dc2ce7f..aaa9e7f6 100644 --- a/internal/pkg/storage/prefix.go +++ b/internal/pkg/storage/prefix.go @@ -6,7 +6,6 @@ import ( "github.com/rumsystem/quorum/internal/pkg/utils" localcrypto "github.com/rumsystem/quorum/pkg/crypto" - quorumpb "github.com/rumsystem/quorum/pkg/pb" ) const ( @@ -17,8 +16,6 @@ const ( CNT_PREFIX = "cnt" //content PRD_PREFIX = "prd" //producer USR_PREFIX = "usr" //user - ANN_PREFIX = "ann" //announce - SMA_PREFIX = "sma" //schema CHD_PREFIX = "chd" //cached APP_CONFIG_PREFIX = "app_conf" //group configuration CHAIN_CONFIG_PREFIX = "chn_conf" //chain configuration @@ -150,42 +147,6 @@ func GetUserKey(groupId string, pubkey string, prefix ...string) string { return _prefix + pk } -func GetAnnouncedPrefix(groupId string, prefix ...string) string { - nodeprefix := utils.GetPrefix(prefix...) - return nodeprefix + ANN_PREFIX + "_" + groupId + "_" -} -func GetAnnounceAsProducerPrefix(groupId string, prefix ...string) string { - _prefix := GetAnnouncedPrefix(groupId, prefix...) - return _prefix + quorumpb.AnnounceType_AS_PRODUCER.String() -} - -func GetAnnounceAsProducerKey(groupId string, pubkey string, prefix ...string) string { - _prefix := GetAnnounceAsProducerPrefix(groupId, prefix...) - pk := _getEthPubkey(pubkey) - return _prefix + "_" + pk -} - -func GetAnnounceAsUserPrefix(groupId string, prefix ...string) string { - _prefix := GetAnnouncedPrefix(groupId, prefix...) - return _prefix + quorumpb.AnnounceType_AS_USER.String() -} - -func GetAnnounceAsUserKey(groupId string, pubkey string, prefix ...string) string { - _prefix := GetAnnounceAsUserPrefix(groupId, prefix...) - pk := _getEthPubkey(pubkey) - return _prefix + "_" + pk -} - -func GetAnnouncedKey(groupId string, _type string, pk string, prefix ...string) string { - _prefix := GetAnnouncedPrefix(groupId, prefix...) - return _prefix + _type + "_" + pk -} - -func GetSchemaPrefix(groupId string, prefix ...string) string { - nodeprefix := utils.GetPrefix(prefix...) - return nodeprefix + SMA_PREFIX + "_" + groupId -} - func GetChainConfigPrefix(groupId string, prefix ...string) string { nodeprefix := utils.GetPrefix(prefix...) return nodeprefix + CHAIN_CONFIG_PREFIX + "_" + groupId diff --git a/pkg/chainapi/api/announce.go b/pkg/chainapi/api/announce.go deleted file mode 100644 index 0b386c8e..00000000 --- a/pkg/chainapi/api/announce.go +++ /dev/null @@ -1,33 +0,0 @@ -package api - -import ( - "net/http" - - "github.com/labstack/echo/v4" - rumerrors "github.com/rumsystem/quorum/internal/pkg/errors" - "github.com/rumsystem/quorum/internal/pkg/utils" - handlers "github.com/rumsystem/quorum/pkg/chainapi/handlers" -) - -// @Tags User -// @Summary Announce -// @Description user/producer self announce it sign pubkey/encrypt key to the group -// @Accept json -// @Produce json -// @Param data body handlers.AnnounceParam true "AnnounceParam" -// @Success 200 {object} handlers.AnnounceResult -// @Router /api/v1/group/announce [post] -func (h *Handler) Announce(c echo.Context) (err error) { - cc := c.(*utils.CustomContext) - params := new(handlers.AnnounceParam) - if err := cc.BindAndValidate(params); err != nil { - return err - } - - res, err := handlers.AnnounceHandler(params) - if err != nil { - return rumerrors.NewBadRequestError(err) - } - - return c.JSON(http.StatusOK, res) -} diff --git a/pkg/chainapi/api/announce_sdk_test.go b/pkg/chainapi/api/announce_sdk_test.go deleted file mode 100644 index 987205eb..00000000 --- a/pkg/chainapi/api/announce_sdk_test.go +++ /dev/null @@ -1,90 +0,0 @@ -package api - -import ( - "encoding/hex" - "fmt" - "testing" - "time" - - ethcrypto "github.com/ethereum/go-ethereum/crypto" - "github.com/rumsystem/quorum/pkg/chainapi/handlers" - localcrypto "github.com/rumsystem/quorum/pkg/crypto" - quorumpb "github.com/rumsystem/quorum/pkg/pb" -) - -func announceNSdk(urls []string, payload NSdkAnnounceParams) (*handlers.AnnounceResult, error) { - path := fmt.Sprintf("/api/v1/node/%s/announce", payload.GroupId) - var result handlers.AnnounceResult - if _, _, err := requestNSdk(urls, path, "POST", payload, nil, &result, false); err != nil { - return nil, err - } - - return &result, nil -} - -func TestAnnounceNSdk(t *testing.T) { - // create group - createGroupParam := handlers.CreateGroupParam{ - GroupName: "test-sync", - ConsensusType: "poa", - EncryptionType: "public", - AppKey: "default", - IncludeChainUrl: true, - } - group, err := createGroup(peerapi, createGroupParam) - if err != nil { - t.Fatalf("createGroup failed: %s, payload: %+v", err, createGroupParam) - } - - _, urls, err := handlers.UrlToGroupSeed(group.Seed) - if err != nil { - t.Errorf("convert group send url failed: %s", err) - } - - item := quorumpb.AnnounceItem{ - GroupId: group.GroupId, - Type: quorumpb.AnnounceType_AS_PRODUCER, - Action: quorumpb.ActionType_ADD, - SignPubkey: ethPubkey, - Result: quorumpb.ApproveType_ANNOUNCED, - Memo: "test announce producer", - } - if item.Type == quorumpb.AnnounceType_AS_USER { - item.EncryptPubkey = ageIdentity.Recipient().String() - } - - data := item.GroupId + item.SignPubkey + item.EncryptPubkey + item.Type.String() - hashed := localcrypto.Hash([]byte(data)) - signature, err := ethcrypto.Sign(hashed, ethPrivkey) - if err != nil { - t.Errorf("generate eth signature failed: %s", err) - } - - item.AnnouncerSignature = hex.EncodeToString(signature) - item.TimeStamp = time.Now().UnixMicro() - - payload := NSdkAnnounceParams{ - GroupId: group.GroupId, - Data: &item, - } - - if _, err := announceNSdk(urls, payload); err != nil { - t.Errorf("announceNSdk failed: %s", err) - } - - time.Sleep(25 * time.Second) - producers, err := getChainDataByAnnouncedProducer(urls, GetNSdkAnnouncedProducerParams{GroupId: group.GroupId}) - if err != nil { - t.Errorf("getChainDataByAnnouncedProducer failed: %s", err) - } - - found := false - for _, item := range producers { - if item.AnnouncedPubkey == ethPubkey { - found = true - } - } - if !found { - t.Errorf("can not find announced user: %s", ethPubkey) - } -} diff --git a/pkg/chainapi/api/announcesdk.go b/pkg/chainapi/api/announcesdk.go deleted file mode 100644 index 0c2c8f60..00000000 --- a/pkg/chainapi/api/announcesdk.go +++ /dev/null @@ -1,76 +0,0 @@ -package api - -import ( - "encoding/hex" - "net/http" - - "github.com/labstack/echo/v4" - chain "github.com/rumsystem/quorum/internal/pkg/chainsdk/core" - rumerrors "github.com/rumsystem/quorum/internal/pkg/errors" - "github.com/rumsystem/quorum/internal/pkg/utils" - "github.com/rumsystem/quorum/pkg/chainapi/handlers" - localcrypto "github.com/rumsystem/quorum/pkg/crypto" - quorumpb "github.com/rumsystem/quorum/pkg/pb" - "google.golang.org/protobuf/proto" -) - -type ( - AnnounceNodeSDKParam struct { - GroupId string `param:"group_id" json:"-" validate:"required"` - Req []byte `json:"Req" validate:"required" swaggertype:"primitive,string"` // base64 encoded req - } -) - -// @Tags LightNode -// @Summary AnnounceUserPubkey -// @Description User/producer announce itself to the group (for light node) -// @Accept json -// @Produce json -// @Param data body AnnounceNodeSDKParam true "AnnounceParam" -// @Success 200 {object} handlers.AnnounceResult -// @Router /api/v1/node/announce/{group_id} [post] -func (h *Handler) AnnounceNodeSDK(c echo.Context) (err error) { - cc := c.(*utils.CustomContext) - params := new(AnnounceNodeSDKParam) - if err := cc.BindAndValidate(params); err != nil { - return err - } - - groupmgr := chain.GetGroupMgr() - group, ok := groupmgr.Groups[params.GroupId] - if !ok { - return rumerrors.NewBadRequestError("INVALID_GROUP") - } - - ciperKey, err := hex.DecodeString(group.Item.CipherKey) - if err != nil { - return rumerrors.NewBadRequestError("CHAINSDK_INTERNAL_ERROR") - } - - decryptData, err := localcrypto.AesDecode(params.Req, ciperKey) - if err != nil { - return rumerrors.NewBadRequestError("DECRYPT_DATA_FAILED") - } - - var item quorumpb.AnnounceItem - if err := proto.Unmarshal(decryptData, &item); err != nil { - return rumerrors.NewBadRequestError("Req is not quorumpb.AnnounceItem object") - } - - trxId, err := group.UpdAnnounce(&item) - if err != nil { - return err - } - - result := &handlers.AnnounceResult{ - GroupId: item.GroupId, - SignPubkey: item.Content.SignPubkey, - EncryptPubkey: item.Content.EncryptPubkey, - Type: item.Content.Type.String(), - Action: item.Action.String(), - Sign: hex.EncodeToString(item.Signature), - TrxId: trxId, - } - - return c.JSON(http.StatusOK, result) -} diff --git a/pkg/chainapi/api/getannouncedproducer.go b/pkg/chainapi/api/getannouncedproducer.go deleted file mode 100644 index fc6021fe..00000000 --- a/pkg/chainapi/api/getannouncedproducer.go +++ /dev/null @@ -1,28 +0,0 @@ -package api - -import ( - "net/http" - - "github.com/labstack/echo/v4" - rumerrors "github.com/rumsystem/quorum/internal/pkg/errors" - "github.com/rumsystem/quorum/pkg/chainapi/handlers" -) - -// @Tags User -// @Summary GetAnnouncedGroupProducer -// @Description Get the list of announced group producers -// @Accept json -// @Produce json -// @Param group_id path string true "Group Id" -// @Success 200 {array} handlers.AnnouncedProducers -// @Router /api/v1/group/{group_id}/announced/producers [get] -func (h *Handler) GetAnnouncedProducers(c echo.Context) (err error) { - groupid := c.Param("group_id") - - res, err := handlers.GetAnnouncedProducers(h.ChainAPIdb, groupid) - if err != nil { - return rumerrors.NewBadRequestError(err) - } - - return c.JSON(http.StatusOK, res) -} diff --git a/pkg/chainapi/api/getannounceduser.go b/pkg/chainapi/api/getannounceduser.go deleted file mode 100644 index 4817c90b..00000000 --- a/pkg/chainapi/api/getannounceduser.go +++ /dev/null @@ -1,47 +0,0 @@ -package api - -import ( - "net/http" - - "github.com/labstack/echo/v4" - rumerrors "github.com/rumsystem/quorum/internal/pkg/errors" - "github.com/rumsystem/quorum/pkg/chainapi/handlers" -) - -// @Tags User -// @Summary GetAnnouncedGroupUsers -// @Description Get the list of announced group users -// @Produce json -// @Param group_id path string true "Group Id" -// @Success 200 {array} handlers.AnnouncedUsers -// @Router /api/v1/group/{group_id}/announced/users [get] -func (h *Handler) GetAnnouncedUsers(c echo.Context) error { - groupid := c.Param("group_id") - - res, err := handlers.GetAnnouncedUsers(h.ChainAPIdb, groupid) - if err != nil { - return rumerrors.NewBadRequestError(err) - } - - return c.JSON(http.StatusOK, res) -} - -// @Tags User -// @Summary GetAnnouncedGroupUser -// @Description Get one announce user by sign_pubkey -// @Produce json -// @Param group_id path string true "Group Id" -// @Param sign_pubkey path string true "User SignPubkey" -// @Success 200 {object} handlers.AnnouncedUsers -// @Router /api/v1/group/{group_id}/announced/user/{sign_pubkey} [get] -func (h *Handler) GetAnnouncedUser(c echo.Context) error { - groupid := c.Param("group_id") - sign_pubkey := c.Param("sign_pubkey") - - res, err := handlers.GetAnnouncedUser(h.ChainAPIdb, groupid, sign_pubkey) - if err != nil { - return rumerrors.NewBadRequestError(err) - } - - return c.JSON(http.StatusOK, res) -} diff --git a/pkg/chainapi/api/getdatanodesdk.go b/pkg/chainapi/api/getdatanodesdk.go index 3e57843d..db4223f4 100644 --- a/pkg/chainapi/api/getdatanodesdk.go +++ b/pkg/chainapi/api/getdatanodesdk.go @@ -23,8 +23,6 @@ const AUTH_DENYLIST string = "auth_denylist" const APPCONFIG_KEYLIST string = "appconfig_listlist" const APPCONFIG_ITEM_BYKEY string = "appconfig_item_bykey" -const ANNOUNCED_PRODUCER string = "announced_producer" -const ANNOUNCED_USER string = "announced_user" const GROUP_PRODUCER string = "group_producer" type GetDataNodeSDKItem struct { @@ -175,36 +173,6 @@ func (h *Handler) GetDataNSdk(c echo.Context) (err error) { return rumerrors.NewBadRequestError(err) } return c.JSON(http.StatusOK, res) - case ANNOUNCED_PRODUCER: - item := new(AnnGrpProducer) - err = json.Unmarshal(decryptData, item) - if err != nil { - return rumerrors.NewBadRequestError("INVALID_DATA") - } - res, err := handlers.GetAnnouncedProducers(h.ChainAPIdb, item.GroupId) - if err != nil { - return rumerrors.NewBadRequestError(err) - } - return c.JSON(http.StatusOK, res) - case ANNOUNCED_USER: - item := new(AnnGrpUser) - err = json.Unmarshal(decryptData, item) - if err != nil { - return rumerrors.NewBadRequestError("INVALID_DATA") - } - if item.SignPubkey == "" { - res, err := handlers.GetAnnouncedUsers(h.ChainAPIdb, item.GroupId) - if err != nil { - return rumerrors.NewBadRequestError(err) - } - return c.JSON(http.StatusOK, res) - } else { - res, err := handlers.GetAnnouncedUser(h.ChainAPIdb, item.GroupId, item.SignPubkey) - if err != nil { - return rumerrors.NewBadRequestError(err) - } - return c.JSON(http.StatusOK, res) - } case GROUP_PRODUCER: item := new(GrpProducer) err = json.Unmarshal(decryptData, item) diff --git a/pkg/chainapi/api/nsdk_announce.go b/pkg/chainapi/api/nsdk_announce.go deleted file mode 100644 index 2eddc1ed..00000000 --- a/pkg/chainapi/api/nsdk_announce.go +++ /dev/null @@ -1,61 +0,0 @@ -package api - -import ( - "encoding/hex" - "net/http" - - "github.com/labstack/echo/v4" - chain "github.com/rumsystem/quorum/internal/pkg/chainsdk/core" - rumerrors "github.com/rumsystem/quorum/internal/pkg/errors" - "github.com/rumsystem/quorum/internal/pkg/utils" - "github.com/rumsystem/quorum/pkg/chainapi/handlers" - quorumpb "github.com/rumsystem/quorum/pkg/pb" -) - -type ( - NSdkAnnounceParams struct { - GroupId string `param:"group_id" json:"-" validate:"required"` - Data *quorumpb.AnnounceItem `json:"data" validate:"required"` - } -) - -// @Tags LightNode -// @Summary NSdkAnnounce -// @Description Announce User's encryption Pubkey to the group for light node -// @Accept json -// @Produce json -// @Param group_id path string true "Group Id" -// @Param data body NSdkAnnounceParams true "AnnounceParam" -// @Success 200 {object} handlers.AnnounceResult -// @Router /api/v1/node/{group_id}/announce [post] -func (h *Handler) NSdkAnnounce(c echo.Context) (err error) { - cc := c.(*utils.CustomContext) - payload := new(NSdkAnnounceParams) - if err := cc.BindAndValidate(payload); err != nil { - return err - } - - groupmgr := chain.GetGroupMgr() - group, ok := groupmgr.Groups[payload.GroupId] - if !ok { - return rumerrors.NewBadRequestError("INVALID_GROUP") - } - - item := payload.Data - trxId, err := group.UpdAnnounce(item) - if err != nil { - return err - } - var result *handlers.AnnounceResult - result = &handlers.AnnounceResult{ - GroupId: item.GroupId, - SignPubkey: item.Content.SignPubkey, - EncryptPubkey: item.Content.EncryptPubkey, - Type: item.Content.Type.String(), - Action: item.Action.String(), - Sign: hex.EncodeToString(item.Signature), - TrxId: trxId, - } - - return c.JSON(http.StatusOK, result) -} diff --git a/pkg/chainapi/api/nsdk_producer.go b/pkg/chainapi/api/nsdk_producer.go index edf410e1..2e0061df 100644 --- a/pkg/chainapi/api/nsdk_producer.go +++ b/pkg/chainapi/api/nsdk_producer.go @@ -24,58 +24,6 @@ type ( } ) -// @Tags LightNode -// @Summary GetNSdkAnnouncedProducer -// @Description get announced producer from chain data -// @Accept json -// @Produce json -// @Param group_id path string true "Group Id" -// @Success 200 {object} []handlers.AppConfigKeyItem -// @Router /api/v1/node/{group_id}/announced/producer [get] -func (h *Handler) GetNSdkAnnouncedProducer(c echo.Context) (err error) { - cc := c.(*utils.CustomContext) - params := new(GetNSdkAnnouncedProducerParams) - if err := cc.BindAndValidate(params); err != nil { - return rumerrors.NewBadRequestError(err) - } - res, err := handlers.GetAnnouncedProducers(h.ChainAPIdb, params.GroupId) - if err != nil { - return rumerrors.NewBadRequestError(err) - } - return c.JSON(http.StatusOK, res) -} - -// @Tags LightNode -// @Summary GetNSdkAnnouncedUser -// @Description get announced user from chain data -// @Accept json -// @Produce json -// @Param group_id path string true "Group Id" -// @Param get_announced_user_params query GetNSdkAnnouncedUserParams true "get announced user params" -// @Success 200 {object} []handlers.AnnouncedUsers -// @Router /api/v1/node/{group_id}/announced/user [get] -func (h *Handler) GetNSdkAnnouncedUser(c echo.Context) (err error) { - cc := c.(*utils.CustomContext) - params := new(GetNSdkAnnouncedUserParams) - if err := cc.BindAndValidate(params); err != nil { - return rumerrors.NewBadRequestError(err) - } - - var res = &handlers.AnnouncedUsers{} - if params.PubKey == "" { - res, err = handlers.GetAnnouncedUsers(h.ChainAPIdb, params.GroupId) - if err != nil { - return rumerrors.NewBadRequestError(err) - } - } else { - res, err = handlers.GetAnnouncedUser(h.ChainAPIdb, params.GroupId, params.PubKey) - if err != nil { - return rumerrors.NewBadRequestError(err) - } - } - return c.JSON(http.StatusOK, res) -} - // @Tags LightNode // @Summary GetNSdkGroupProducers // @Description get group producers from chain data diff --git a/pkg/chainapi/api/producer_test.go b/pkg/chainapi/api/producer_test.go index 38093f0d..0c518d01 100644 --- a/pkg/chainapi/api/producer_test.go +++ b/pkg/chainapi/api/producer_test.go @@ -47,34 +47,6 @@ func announceProducer(api string, payload handlers.AnnounceParam) (*handlers.Ann return &result, nil } -func getAnnouncedProducers(api string, groupID string) ([]handlers.AnnouncedProducerListItem, error) { - urlSuffix := fmt.Sprintf("/api/v1/group/%s/announced/producers", groupID) - - _, resp, err := testnode.RequestAPI(api, urlSuffix, "GET", "") - if err != nil { - return nil, err - } - - if err := getResponseError(resp); err != nil { - return nil, err - } - - var result []handlers.AnnouncedProducerListItem - if err := json.Unmarshal(resp, &result); err != nil { - return nil, err - } - - for _, item := range result { - validate := validator.New() - if err := validate.Struct(item); err != nil { - e := fmt.Errorf("validate.Struct failed: %s, result: %+v", err, item) - return nil, e - } - } - - return result, nil -} - func getProducers(api string, groupID string) ([]handlers.ProducerListItem, error) { urlSuffix := fmt.Sprintf("/api/v1/group/%s/producers", groupID) _, resp, err := testnode.RequestAPI(api, urlSuffix, "GET", "") diff --git a/pkg/chainapi/api/server.go b/pkg/chainapi/api/server.go index 0f302852..57db79fd 100644 --- a/pkg/chainapi/api/server.go +++ b/pkg/chainapi/api/server.go @@ -97,7 +97,6 @@ func StartRumLiteNodeServer(config StartServerParam, signalch chan os.Signal, h r.POST("/v1/group/chainconfig", h.MgrChainConfig) r.POST("/v1/group/upduser", h.UpdGroupUser) - r.POST("/v1/group/announce", h.Announce) r.GET("/v1/node", h.GetNodeInfo) r.GET("/v1/network", h.GetNetwork(&node.Host, node.Info, nodeopt, ethaddr)) @@ -109,9 +108,6 @@ func StartRumLiteNodeServer(config StartServerParam, signalch chan os.Signal, h r.GET("/v1/group/:group_id/trx/denylist", h.GetChainTrxDenyList) r.GET("/v1/group/:group_id/trx/auth/:trx_type", h.GetChainTrxAuthMode) - r.GET("/v1/group/:group_id/announced/users", h.GetAnnouncedUsers) - r.GET("/v1/group/:group_id/announced/user/:sign_pubkey", h.GetAnnouncedUser) - r.GET("/v1/group/:group_id/announced/producers", h.GetAnnouncedProducers) r.GET("/v1/group/:group_id/appconfig/keylist", h.GetAppConfigKey) r.GET("/v1/group/:group_id/appconfig/:key", h.GetAppConfigItem) r.GET("/v1/group/:group_id/seed", h.GetGroupSeedHandler) @@ -151,12 +147,7 @@ func StartRumLiteNodeServer(config StartServerParam, signalch chan os.Signal, h n.GET("/:group_id/appconfig/keylist", h.GetNSdkAppconfigKeylist) n.GET("/:group_id/appconfig/by/:key", h.GetNSdkAppconfigByKey) - // announce - n.POST("/:group_id/announce", h.NSdkAnnounce) - n.GET("/:group_id/announced/producer", h.GetNSdkAnnouncedProducer) - n.GET("/:group_id/announced/user", h.GetNSdkAnnouncedUser) n.GET("/:group_id/producers", h.GetNSdkGroupProducers) - n.GET("/:group_id/info", h.GetNSdkGroupInfo) n.GET("/:group_id/encryptpubkeys", h.GetNSdkUserEncryptPubKeys) } diff --git a/pkg/chainapi/api/updgroupuser.go b/pkg/chainapi/api/updgroupuser.go index 274686fc..eb6e8dc6 100644 --- a/pkg/chainapi/api/updgroupuser.go +++ b/pkg/chainapi/api/updgroupuser.go @@ -59,15 +59,6 @@ func (h *Handler) UpdGroupUser(c echo.Context) (err error) { return rumerrors.NewBadRequestError("Invalid action") } - isAnnounced, err := h.ChainAPIdb.IsUserAnnounced(group.Item.GroupId, params.UserPubkey, group.Nodename) - if err != nil { - return rumerrors.NewBadRequestError(err) - } - - if action == quorumpb.ActionType_ADD && !isAnnounced { - return rumerrors.NewBadRequestError("update group user failed, user is not announced") - } - item := &quorumpb.UpdGroupUserItem{ GroupId: params.GroupId, UserPubkey: params.UserPubkey, diff --git a/pkg/chainapi/handlers/announce.go b/pkg/chainapi/handlers/announce.go deleted file mode 100644 index 400131b1..00000000 --- a/pkg/chainapi/handlers/announce.go +++ /dev/null @@ -1,114 +0,0 @@ -package handlers - -import ( - "encoding/hex" - "errors" - - chain "github.com/rumsystem/quorum/internal/pkg/chainsdk/core" - rumerrors "github.com/rumsystem/quorum/internal/pkg/errors" - "github.com/rumsystem/quorum/internal/pkg/nodectx" - localcrypto "github.com/rumsystem/quorum/pkg/crypto" - quorumpb "github.com/rumsystem/quorum/pkg/pb" - "google.golang.org/protobuf/proto" -) - -type AnnounceResult struct { - GroupId string `json:"group_id" validate:"required,uuid4" example:"17a598a0-274b-45e7-a4b5-b81f9f274d50"` - SignPubkey string `json:"sign_pubkey" validate:"required" example:"CAISIQOxCH2yVZPR8t6gVvZapxcIPBwMh9jB80pDLNeuA5s8hQ=="` - EncryptPubkey string `json:"encrypt_pubkey" example:"age1fx3ju9a2f3kpdh76375dect95wmvk084p8wxczeqdw8q2m0jtfks2k8pm9"` - Type string `json:"type" validate:"required" example:"AS_USER"` - Action string `json:"action" validate:"required" example:"ADD"` - Sign string `json:"sign" validate:"required" example:"3046022100a853ca31f6f6719be213231b6428cecf64de5b1042dd8af1e140499507c85c40022100abd6828478f56da213ec10d361be8709333ff44cd0fa037409af9c0b67e6d0f5"` - TrxId string `json:"trx_id" validate:"required,uuid4" example:"2e86c7fb-908e-4528-8f87-d3548e0137ab"` -} - -type AnnounceParam struct { - GroupId string `from:"group_id" json:"group_id" validate:"required,uuid4" example:"17a598a0-274b-45e7-a4b5-b81f9f274d50"` - Action string `from:"action" json:"action" validate:"required,oneof=add remove" example:"add"` - Type string `from:"type" json:"type" validate:"required,oneof=user producer" example:"user"` - Contract string `from:"contract" json:"contract" example:"PRS_CONTACT"` - Memo string `from:"memo" json:"memo" example:"comment/remark"` -} - -func AnnounceHandler(params *AnnounceParam) (*AnnounceResult, error) { - groupmgr := chain.GetGroupMgr() - if group, ok := groupmgr.Groups[params.GroupId]; !ok { - return nil, rumerrors.ErrGroupNotFound - } else { - //check announce type according to node type, see document for more details - if nodectx.GetNodeCtx().NodeType == nodectx.PRODUCER_NODE { - if params.Type != "producer" { - return nil, errors.New("producer node can only announced as \"producer\"") - } - - } else if nodectx.GetNodeCtx().NodeType == nodectx.FULL_NODE { - if params.Type == "producer" { - return nil, errors.New("full node can not announce as producer") - } - } - - var announceType quorumpb.AnnounceType - if params.Type == "producer" { - announceType = quorumpb.AnnounceType_AS_PRODUCER - } else { - announceType = quorumpb.AnnounceType_AS_USER - } - - var action quorumpb.ActionType - if params.Action == "add" { - action = quorumpb.ActionType_ADD - } else if params.Action == "remove" { - action = quorumpb.ActionType_REMOVE - } else { - return nil, errors.New("unknown action") - } - - ctn := &quorumpb.AnnounceContent{ - Type: announceType, - SignPubkey: group.Item.UserSignPubkey, - EncryptPubkey: group.Item.UserEncryptPubkey, - Memo: params.Memo, - } - - item := &quorumpb.AnnounceItem{ - GroupId: params.GroupId, - Action: action, - Content: ctn, - AnnouncerPubkey: group.Item.UserSignPubkey, - } - - byts, err := proto.Marshal(item) - if err != nil { - return nil, err - } - - hash := localcrypto.Hash(byts) - ks := nodectx.GetNodeCtx().Keystore - signature, err := ks.EthSignByKeyName(params.GroupId, hash) - - if err != nil { - return nil, err - } - - item.Hash = hash - item.Signature = signature - - trxId, err := group.UpdAnnounce(item) - - if err != nil { - return nil, err - } - - announceResult := &AnnounceResult{ - GroupId: item.GroupId, - SignPubkey: ctn.SignPubkey, - EncryptPubkey: ctn.EncryptPubkey, - Type: ctn.Type.String(), - Action: item.Action.String(), - Sign: hex.EncodeToString(item.Signature), - TrxId: trxId, - } - - return announceResult, nil - } -} diff --git a/pkg/chainapi/handlers/getannouncedproducer.go b/pkg/chainapi/handlers/getannouncedproducer.go deleted file mode 100644 index 430a53c7..00000000 --- a/pkg/chainapi/handlers/getannouncedproducer.go +++ /dev/null @@ -1,58 +0,0 @@ -package handlers - -import ( - "errors" - "fmt" - - chain "github.com/rumsystem/quorum/internal/pkg/chainsdk/core" - "github.com/rumsystem/quorum/internal/pkg/storage/def" - - quorumpb "github.com/rumsystem/quorum/pkg/pb" -) - -type AnnouncedProducers struct { - Producers []*quorumpb.AnnounceItem `json:"producers"` -} - -func GetAnnouncedProducers(chainapidb def.APIHandlerIface, groupid string) (*AnnouncedProducers, error) { - if groupid == "" { - return nil, errors.New("group_id can't be nil.") - } - - groupmgr := chain.GetGroupMgr() - if group, ok := groupmgr.Groups[groupid]; ok { - prdList, err := chainapidb.GetAnnouncedProducers(group.GroupId, group.Nodename) - if err != nil { - return nil, err - } - - result := &AnnouncedProducers{ - Producers: prdList, - } - - return result, nil - } else { - return nil, fmt.Errorf("group <%s> not exist", groupid) - } -} - -func GetAnnouncedProducer(chainapidb def.APIHandlerIface, groupid string, pubkey string) (*AnnouncedProducers, error) { - if groupid == "" || pubkey == "" { - return nil, errors.New("group_id or sign_pubkey can't be nil.") - } - - groupmgr := chain.GetGroupMgr() - if group, ok := groupmgr.Groups[groupid]; ok { - prd, err := group.GetAnnouncedProducer(pubkey) - if err != nil { - return nil, err - } - - result := &AnnouncedProducers{ - Producers: []*quorumpb.AnnounceItem{prd}, - } - return result, nil - } else { - return nil, fmt.Errorf("group <%s> not exist", groupid) - } -} diff --git a/pkg/chainapi/handlers/getannounceduser.go b/pkg/chainapi/handlers/getannounceduser.go deleted file mode 100644 index 53ba2791..00000000 --- a/pkg/chainapi/handlers/getannounceduser.go +++ /dev/null @@ -1,57 +0,0 @@ -package handlers - -import ( - "errors" - "fmt" - - chain "github.com/rumsystem/quorum/internal/pkg/chainsdk/core" - "github.com/rumsystem/quorum/internal/pkg/storage/def" - - quorumpb "github.com/rumsystem/quorum/pkg/pb" -) - -type AnnouncedUsers struct { - Users []*quorumpb.AnnounceItem `json:"users"` -} - -func GetAnnouncedUsers(chainapidb def.APIHandlerIface, groupid string) (*AnnouncedUsers, error) { - if groupid == "" { - return nil, errors.New("group_id can't be nil") - } - - groupmgr := chain.GetGroupMgr() - if group, ok := groupmgr.Groups[groupid]; ok { - usrList, err := chainapidb.GetAnnouncedUsers(group.GroupId, group.Nodename) - if err != nil { - return nil, err - } - - result := &AnnouncedUsers{ - Users: usrList, - } - return result, nil - } else { - return nil, fmt.Errorf("group <%s> not exist", groupid) - } -} - -func GetAnnouncedUser(chainapidb def.APIHandlerIface, groupid string, pubkey string) (*AnnouncedUsers, error) { - if groupid == "" || pubkey == "" { - return nil, errors.New("group_id or sign_pubkey can't be nil") - } - - groupmgr := chain.GetGroupMgr() - if group, ok := groupmgr.Groups[groupid]; ok { - usr, err := group.GetAnnouncedUser(pubkey) - if err != nil { - return nil, err - } - - result := &AnnouncedUsers{ - Users: []*quorumpb.AnnounceItem{usr}, - } - return result, nil - } else { - return nil, fmt.Errorf("group <%s> not exist", groupid) - } -} diff --git a/pkg/chainapi/handlers/mgrchainconfig.go b/pkg/chainapi/handlers/mgrchainconfig.go index 7e6a7ac8..f1289948 100644 --- a/pkg/chainapi/handlers/mgrchainconfig.go +++ b/pkg/chainapi/handlers/mgrchainconfig.go @@ -182,8 +182,6 @@ func getTrxTypeByString(typ string) (quorumpb.TrxType, error) { switch strings.ToUpper(typ) { case "POST": return quorumpb.TrxType_POST, nil - case "ANNOUNCE": - return quorumpb.TrxType_ANNOUNCE, nil case "PRODUCER": return -1, errors.New("this trx type can not be configured") case "USER": diff --git a/pkg/data/trxfactory.go b/pkg/data/trxfactory.go index 0c211b17..696788c5 100644 --- a/pkg/data/trxfactory.go +++ b/pkg/data/trxfactory.go @@ -49,15 +49,6 @@ func (factory *TrxFactory) GetUpdGroupUserTrx(keyalias string, item *quorumpb.Up return factory.CreateTrxByEthKey(quorumpb.TrxType_UPD_GRP_USER, encodedcontent, keyalias) } -func (factory *TrxFactory) GetAnnounceTrx(keyalias string, item *quorumpb.AnnounceItem) (*quorumpb.Trx, error) { - encodedcontent, err := proto.Marshal(item) - if err != nil { - return nil, err - } - - return factory.CreateTrxByEthKey(quorumpb.TrxType_ANNOUNCE, encodedcontent, keyalias) -} - func (factory *TrxFactory) GetPostAnyTrx(keyalias string, content []byte, encryptto ...[]string) (*quorumpb.Trx, error) { if _, err := IsTrxDataWithinSizeLimit(content); err != nil { return nil, err diff --git a/pkg/pb/chain.pb.go b/pkg/pb/chain.pb.go index ba352933..f72cec96 100644 --- a/pkg/pb/chain.pb.go +++ b/pkg/pb/chain.pb.go @@ -75,53 +75,6 @@ func (PackageType) EnumDescriptor() ([]byte, []int) { return file_chain_proto_rawDescGZIP(), []int{0} } -//TRX -type AnnounceType int32 - -const ( - AnnounceType_AS_USER AnnounceType = 0 - AnnounceType_AS_PRODUCER AnnounceType = 1 -) - -// Enum value maps for AnnounceType. -var ( - AnnounceType_name = map[int32]string{ - 0: "AS_USER", - 1: "AS_PRODUCER", - } - AnnounceType_value = map[string]int32{ - "AS_USER": 0, - "AS_PRODUCER": 1, - } -) - -func (x AnnounceType) Enum() *AnnounceType { - p := new(AnnounceType) - *p = x - return p -} - -func (x AnnounceType) String() string { - return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) -} - -func (AnnounceType) Descriptor() protoreflect.EnumDescriptor { - return file_chain_proto_enumTypes[1].Descriptor() -} - -func (AnnounceType) Type() protoreflect.EnumType { - return &file_chain_proto_enumTypes[1] -} - -func (x AnnounceType) Number() protoreflect.EnumNumber { - return protoreflect.EnumNumber(x) -} - -// Deprecated: Use AnnounceType.Descriptor instead. -func (AnnounceType) EnumDescriptor() ([]byte, []int) { - return file_chain_proto_rawDescGZIP(), []int{1} -} - type ActionType int32 const ( @@ -152,11 +105,11 @@ func (x ActionType) String() string { } func (ActionType) Descriptor() protoreflect.EnumDescriptor { - return file_chain_proto_enumTypes[2].Descriptor() + return file_chain_proto_enumTypes[1].Descriptor() } func (ActionType) Type() protoreflect.EnumType { - return &file_chain_proto_enumTypes[2] + return &file_chain_proto_enumTypes[1] } func (x ActionType) Number() protoreflect.EnumNumber { @@ -165,7 +118,7 @@ func (x ActionType) Number() protoreflect.EnumNumber { // Deprecated: Use ActionType.Descriptor instead. func (ActionType) EnumDescriptor() ([]byte, []int) { - return file_chain_proto_rawDescGZIP(), []int{2} + return file_chain_proto_rawDescGZIP(), []int{1} } type TrxStroageType int32 @@ -198,11 +151,11 @@ func (x TrxStroageType) String() string { } func (TrxStroageType) Descriptor() protoreflect.EnumDescriptor { - return file_chain_proto_enumTypes[3].Descriptor() + return file_chain_proto_enumTypes[2].Descriptor() } func (TrxStroageType) Type() protoreflect.EnumType { - return &file_chain_proto_enumTypes[3] + return &file_chain_proto_enumTypes[2] } func (x TrxStroageType) Number() protoreflect.EnumNumber { @@ -211,37 +164,34 @@ func (x TrxStroageType) Number() protoreflect.EnumNumber { // Deprecated: Use TrxStroageType.Descriptor instead. func (TrxStroageType) EnumDescriptor() ([]byte, []int) { - return file_chain_proto_rawDescGZIP(), []int{3} + return file_chain_proto_rawDescGZIP(), []int{2} } type TrxType int32 const ( TrxType_POST TrxType = 0 // post to group - TrxType_ANNOUNCE TrxType = 1 // producer or user self announce - TrxType_UPD_GRP_USER TrxType = 2 // owner update group user - TrxType_CHAIN_CONFIG TrxType = 3 // chain configuration - TrxType_APP_CONFIG TrxType = 4 // app configuration - TrxType_FORK TrxType = 5 // fork chain + TrxType_UPD_GRP_USER TrxType = 1 // owner update group user + TrxType_CHAIN_CONFIG TrxType = 2 // chain configuration + TrxType_APP_CONFIG TrxType = 3 // app configuration + TrxType_FORK TrxType = 4 // fork chain ) // Enum value maps for TrxType. var ( TrxType_name = map[int32]string{ 0: "POST", - 1: "ANNOUNCE", - 2: "UPD_GRP_USER", - 3: "CHAIN_CONFIG", - 4: "APP_CONFIG", - 5: "FORK", + 1: "UPD_GRP_USER", + 2: "CHAIN_CONFIG", + 3: "APP_CONFIG", + 4: "FORK", } TrxType_value = map[string]int32{ "POST": 0, - "ANNOUNCE": 1, - "UPD_GRP_USER": 2, - "CHAIN_CONFIG": 3, - "APP_CONFIG": 4, - "FORK": 5, + "UPD_GRP_USER": 1, + "CHAIN_CONFIG": 2, + "APP_CONFIG": 3, + "FORK": 4, } ) @@ -256,11 +206,11 @@ func (x TrxType) String() string { } func (TrxType) Descriptor() protoreflect.EnumDescriptor { - return file_chain_proto_enumTypes[4].Descriptor() + return file_chain_proto_enumTypes[3].Descriptor() } func (TrxType) Type() protoreflect.EnumType { - return &file_chain_proto_enumTypes[4] + return &file_chain_proto_enumTypes[3] } func (x TrxType) Number() protoreflect.EnumNumber { @@ -269,7 +219,7 @@ func (x TrxType) Number() protoreflect.EnumNumber { // Deprecated: Use TrxType.Descriptor instead. func (TrxType) EnumDescriptor() ([]byte, []int) { - return file_chain_proto_rawDescGZIP(), []int{4} + return file_chain_proto_rawDescGZIP(), []int{3} } type ChainConfigType int32 @@ -305,11 +255,11 @@ func (x ChainConfigType) String() string { } func (ChainConfigType) Descriptor() protoreflect.EnumDescriptor { - return file_chain_proto_enumTypes[5].Descriptor() + return file_chain_proto_enumTypes[4].Descriptor() } func (ChainConfigType) Type() protoreflect.EnumType { - return &file_chain_proto_enumTypes[5] + return &file_chain_proto_enumTypes[4] } func (x ChainConfigType) Number() protoreflect.EnumNumber { @@ -318,7 +268,7 @@ func (x ChainConfigType) Number() protoreflect.EnumNumber { // Deprecated: Use ChainConfigType.Descriptor instead. func (ChainConfigType) EnumDescriptor() ([]byte, []int) { - return file_chain_proto_rawDescGZIP(), []int{5} + return file_chain_proto_rawDescGZIP(), []int{4} } type TrxAuthMode int32 @@ -351,11 +301,11 @@ func (x TrxAuthMode) String() string { } func (TrxAuthMode) Descriptor() protoreflect.EnumDescriptor { - return file_chain_proto_enumTypes[6].Descriptor() + return file_chain_proto_enumTypes[5].Descriptor() } func (TrxAuthMode) Type() protoreflect.EnumType { - return &file_chain_proto_enumTypes[6] + return &file_chain_proto_enumTypes[5] } func (x TrxAuthMode) Number() protoreflect.EnumNumber { @@ -364,7 +314,7 @@ func (x TrxAuthMode) Number() protoreflect.EnumNumber { // Deprecated: Use TrxAuthMode.Descriptor instead. func (TrxAuthMode) EnumDescriptor() ([]byte, []int) { - return file_chain_proto_rawDescGZIP(), []int{6} + return file_chain_proto_rawDescGZIP(), []int{5} } type AuthListType int32 @@ -397,11 +347,11 @@ func (x AuthListType) String() string { } func (AuthListType) Descriptor() protoreflect.EnumDescriptor { - return file_chain_proto_enumTypes[7].Descriptor() + return file_chain_proto_enumTypes[6].Descriptor() } func (AuthListType) Type() protoreflect.EnumType { - return &file_chain_proto_enumTypes[7] + return &file_chain_proto_enumTypes[6] } func (x AuthListType) Number() protoreflect.EnumNumber { @@ -410,7 +360,7 @@ func (x AuthListType) Number() protoreflect.EnumNumber { // Deprecated: Use AuthListType.Descriptor instead. func (AuthListType) EnumDescriptor() ([]byte, []int) { - return file_chain_proto_rawDescGZIP(), []int{7} + return file_chain_proto_rawDescGZIP(), []int{6} } type AppConfigType int32 @@ -446,11 +396,11 @@ func (x AppConfigType) String() string { } func (AppConfigType) Descriptor() protoreflect.EnumDescriptor { - return file_chain_proto_enumTypes[8].Descriptor() + return file_chain_proto_enumTypes[7].Descriptor() } func (AppConfigType) Type() protoreflect.EnumType { - return &file_chain_proto_enumTypes[8] + return &file_chain_proto_enumTypes[7] } func (x AppConfigType) Number() protoreflect.EnumNumber { @@ -459,7 +409,7 @@ func (x AppConfigType) Number() protoreflect.EnumNumber { // Deprecated: Use AppConfigType.Descriptor instead. func (AppConfigType) EnumDescriptor() ([]byte, []int) { - return file_chain_proto_rawDescGZIP(), []int{8} + return file_chain_proto_rawDescGZIP(), []int{7} } //BFT_MSG @@ -490,11 +440,11 @@ func (x BftMsgType) String() string { } func (BftMsgType) Descriptor() protoreflect.EnumDescriptor { - return file_chain_proto_enumTypes[9].Descriptor() + return file_chain_proto_enumTypes[8].Descriptor() } func (BftMsgType) Type() protoreflect.EnumType { - return &file_chain_proto_enumTypes[9] + return &file_chain_proto_enumTypes[8] } func (x BftMsgType) Number() protoreflect.EnumNumber { @@ -503,7 +453,7 @@ func (x BftMsgType) Number() protoreflect.EnumNumber { // Deprecated: Use BftMsgType.Descriptor instead. func (BftMsgType) EnumDescriptor() ([]byte, []int) { - return file_chain_proto_rawDescGZIP(), []int{9} + return file_chain_proto_rawDescGZIP(), []int{8} } //SYNC_MSG @@ -537,11 +487,11 @@ func (x SyncMsgType) String() string { } func (SyncMsgType) Descriptor() protoreflect.EnumDescriptor { - return file_chain_proto_enumTypes[10].Descriptor() + return file_chain_proto_enumTypes[9].Descriptor() } func (SyncMsgType) Type() protoreflect.EnumType { - return &file_chain_proto_enumTypes[10] + return &file_chain_proto_enumTypes[9] } func (x SyncMsgType) Number() protoreflect.EnumNumber { @@ -550,7 +500,7 @@ func (x SyncMsgType) Number() protoreflect.EnumNumber { // Deprecated: Use SyncMsgType.Descriptor instead. func (SyncMsgType) EnumDescriptor() ([]byte, []int) { - return file_chain_proto_rawDescGZIP(), []int{10} + return file_chain_proto_rawDescGZIP(), []int{9} } type ReqBlkResult int32 @@ -586,11 +536,11 @@ func (x ReqBlkResult) String() string { } func (ReqBlkResult) Descriptor() protoreflect.EnumDescriptor { - return file_chain_proto_enumTypes[11].Descriptor() + return file_chain_proto_enumTypes[10].Descriptor() } func (ReqBlkResult) Type() protoreflect.EnumType { - return &file_chain_proto_enumTypes[11] + return &file_chain_proto_enumTypes[10] } func (x ReqBlkResult) Number() protoreflect.EnumNumber { @@ -599,7 +549,7 @@ func (x ReqBlkResult) Number() protoreflect.EnumNumber { // Deprecated: Use ReqBlkResult.Descriptor instead. func (ReqBlkResult) EnumDescriptor() ([]byte, []int) { - return file_chain_proto_rawDescGZIP(), []int{11} + return file_chain_proto_rawDescGZIP(), []int{10} } //BROADCAST_MSG @@ -630,11 +580,11 @@ func (x BroadcastType) String() string { } func (BroadcastType) Descriptor() protoreflect.EnumDescriptor { - return file_chain_proto_enumTypes[12].Descriptor() + return file_chain_proto_enumTypes[11].Descriptor() } func (BroadcastType) Type() protoreflect.EnumType { - return &file_chain_proto_enumTypes[12] + return &file_chain_proto_enumTypes[11] } func (x BroadcastType) Number() protoreflect.EnumNumber { @@ -643,7 +593,7 @@ func (x BroadcastType) Number() protoreflect.EnumNumber { // Deprecated: Use BroadcastType.Descriptor instead. func (BroadcastType) EnumDescriptor() ([]byte, []int) { - return file_chain_proto_rawDescGZIP(), []int{12} + return file_chain_proto_rawDescGZIP(), []int{11} } type GroupEncryptType int32 @@ -676,11 +626,11 @@ func (x GroupEncryptType) String() string { } func (GroupEncryptType) Descriptor() protoreflect.EnumDescriptor { - return file_chain_proto_enumTypes[13].Descriptor() + return file_chain_proto_enumTypes[12].Descriptor() } func (GroupEncryptType) Type() protoreflect.EnumType { - return &file_chain_proto_enumTypes[13] + return &file_chain_proto_enumTypes[12] } func (x GroupEncryptType) Number() protoreflect.EnumNumber { @@ -689,7 +639,7 @@ func (x GroupEncryptType) Number() protoreflect.EnumNumber { // Deprecated: Use GroupEncryptType.Descriptor instead. func (GroupEncryptType) EnumDescriptor() ([]byte, []int) { - return file_chain_proto_rawDescGZIP(), []int{13} + return file_chain_proto_rawDescGZIP(), []int{12} } type GroupConsenseType int32 @@ -722,11 +672,11 @@ func (x GroupConsenseType) String() string { } func (GroupConsenseType) Descriptor() protoreflect.EnumDescriptor { - return file_chain_proto_enumTypes[14].Descriptor() + return file_chain_proto_enumTypes[13].Descriptor() } func (GroupConsenseType) Type() protoreflect.EnumType { - return &file_chain_proto_enumTypes[14] + return &file_chain_proto_enumTypes[13] } func (x GroupConsenseType) Number() protoreflect.EnumNumber { @@ -735,7 +685,7 @@ func (x GroupConsenseType) Number() protoreflect.EnumNumber { // Deprecated: Use GroupConsenseType.Descriptor instead. func (GroupConsenseType) EnumDescriptor() ([]byte, []int) { - return file_chain_proto_rawDescGZIP(), []int{14} + return file_chain_proto_rawDescGZIP(), []int{13} } type HBMsgPayloadType int32 @@ -768,11 +718,11 @@ func (x HBMsgPayloadType) String() string { } func (HBMsgPayloadType) Descriptor() protoreflect.EnumDescriptor { - return file_chain_proto_enumTypes[15].Descriptor() + return file_chain_proto_enumTypes[14].Descriptor() } func (HBMsgPayloadType) Type() protoreflect.EnumType { - return &file_chain_proto_enumTypes[15] + return &file_chain_proto_enumTypes[14] } func (x HBMsgPayloadType) Number() protoreflect.EnumNumber { @@ -781,7 +731,7 @@ func (x HBMsgPayloadType) Number() protoreflect.EnumNumber { // Deprecated: Use HBMsgPayloadType.Descriptor instead. func (HBMsgPayloadType) EnumDescriptor() ([]byte, []int) { - return file_chain_proto_rawDescGZIP(), []int{15} + return file_chain_proto_rawDescGZIP(), []int{14} } type RBCMsgType int32 @@ -817,11 +767,11 @@ func (x RBCMsgType) String() string { } func (RBCMsgType) Descriptor() protoreflect.EnumDescriptor { - return file_chain_proto_enumTypes[16].Descriptor() + return file_chain_proto_enumTypes[15].Descriptor() } func (RBCMsgType) Type() protoreflect.EnumType { - return &file_chain_proto_enumTypes[16] + return &file_chain_proto_enumTypes[15] } func (x RBCMsgType) Number() protoreflect.EnumNumber { @@ -830,7 +780,7 @@ func (x RBCMsgType) Number() protoreflect.EnumNumber { // Deprecated: Use RBCMsgType.Descriptor instead. func (RBCMsgType) EnumDescriptor() ([]byte, []int) { - return file_chain_proto_rawDescGZIP(), []int{16} + return file_chain_proto_rawDescGZIP(), []int{15} } type BBAMsgType int32 @@ -863,11 +813,11 @@ func (x BBAMsgType) String() string { } func (BBAMsgType) Descriptor() protoreflect.EnumDescriptor { - return file_chain_proto_enumTypes[17].Descriptor() + return file_chain_proto_enumTypes[16].Descriptor() } func (BBAMsgType) Type() protoreflect.EnumType { - return &file_chain_proto_enumTypes[17] + return &file_chain_proto_enumTypes[16] } func (x BBAMsgType) Number() protoreflect.EnumNumber { @@ -876,7 +826,7 @@ func (x BBAMsgType) Number() protoreflect.EnumNumber { // Deprecated: Use BBAMsgType.Descriptor instead. func (BBAMsgType) EnumDescriptor() ([]byte, []int) { - return file_chain_proto_rawDescGZIP(), []int{17} + return file_chain_proto_rawDescGZIP(), []int{16} } type Package struct { @@ -1242,164 +1192,6 @@ func (x *UserItem) GetMemo() string { return "" } -type AnnounceItem struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - GroupId string `protobuf:"bytes,1,opt,name=GroupId,proto3" json:"GroupId,omitempty"` - Action ActionType `protobuf:"varint,2,opt,name=Action,proto3,enum=quorum.pb.ActionType" json:"Action,omitempty"` - Content *AnnounceContent `protobuf:"bytes,3,opt,name=Content,proto3" json:"Content,omitempty"` - AnnouncerPubkey string `protobuf:"bytes,4,opt,name=AnnouncerPubkey,proto3" json:"AnnouncerPubkey,omitempty"` - Hash []byte `protobuf:"bytes,5,opt,name=Hash,proto3" json:"Hash,omitempty"` - Signature []byte `protobuf:"bytes,6,opt,name=Signature,proto3" json:"Signature,omitempty"` -} - -func (x *AnnounceItem) Reset() { - *x = AnnounceItem{} - if protoimpl.UnsafeEnabled { - mi := &file_chain_proto_msgTypes[5] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *AnnounceItem) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*AnnounceItem) ProtoMessage() {} - -func (x *AnnounceItem) ProtoReflect() protoreflect.Message { - mi := &file_chain_proto_msgTypes[5] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use AnnounceItem.ProtoReflect.Descriptor instead. -func (*AnnounceItem) Descriptor() ([]byte, []int) { - return file_chain_proto_rawDescGZIP(), []int{5} -} - -func (x *AnnounceItem) GetGroupId() string { - if x != nil { - return x.GroupId - } - return "" -} - -func (x *AnnounceItem) GetAction() ActionType { - if x != nil { - return x.Action - } - return ActionType_ADD -} - -func (x *AnnounceItem) GetContent() *AnnounceContent { - if x != nil { - return x.Content - } - return nil -} - -func (x *AnnounceItem) GetAnnouncerPubkey() string { - if x != nil { - return x.AnnouncerPubkey - } - return "" -} - -func (x *AnnounceItem) GetHash() []byte { - if x != nil { - return x.Hash - } - return nil -} - -func (x *AnnounceItem) GetSignature() []byte { - if x != nil { - return x.Signature - } - return nil -} - -type AnnounceContent struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Type AnnounceType `protobuf:"varint,1,opt,name=Type,proto3,enum=quorum.pb.AnnounceType" json:"Type,omitempty"` - SignPubkey string `protobuf:"bytes,2,opt,name=SignPubkey,proto3" json:"SignPubkey,omitempty"` - EncryptPubkey string `protobuf:"bytes,3,opt,name=EncryptPubkey,proto3" json:"EncryptPubkey,omitempty"` - Memo string `protobuf:"bytes,4,opt,name=Memo,proto3" json:"Memo,omitempty"` -} - -func (x *AnnounceContent) Reset() { - *x = AnnounceContent{} - if protoimpl.UnsafeEnabled { - mi := &file_chain_proto_msgTypes[6] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *AnnounceContent) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*AnnounceContent) ProtoMessage() {} - -func (x *AnnounceContent) ProtoReflect() protoreflect.Message { - mi := &file_chain_proto_msgTypes[6] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use AnnounceContent.ProtoReflect.Descriptor instead. -func (*AnnounceContent) Descriptor() ([]byte, []int) { - return file_chain_proto_rawDescGZIP(), []int{6} -} - -func (x *AnnounceContent) GetType() AnnounceType { - if x != nil { - return x.Type - } - return AnnounceType_AS_USER -} - -func (x *AnnounceContent) GetSignPubkey() string { - if x != nil { - return x.SignPubkey - } - return "" -} - -func (x *AnnounceContent) GetEncryptPubkey() string { - if x != nil { - return x.EncryptPubkey - } - return "" -} - -func (x *AnnounceContent) GetMemo() string { - if x != nil { - return x.Memo - } - return "" -} - type ChainConfigItem struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -1417,7 +1209,7 @@ type ChainConfigItem struct { func (x *ChainConfigItem) Reset() { *x = ChainConfigItem{} if protoimpl.UnsafeEnabled { - mi := &file_chain_proto_msgTypes[7] + mi := &file_chain_proto_msgTypes[5] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1430,7 +1222,7 @@ func (x *ChainConfigItem) String() string { func (*ChainConfigItem) ProtoMessage() {} func (x *ChainConfigItem) ProtoReflect() protoreflect.Message { - mi := &file_chain_proto_msgTypes[7] + mi := &file_chain_proto_msgTypes[5] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1443,7 +1235,7 @@ func (x *ChainConfigItem) ProtoReflect() protoreflect.Message { // Deprecated: Use ChainConfigItem.ProtoReflect.Descriptor instead. func (*ChainConfigItem) Descriptor() ([]byte, []int) { - return file_chain_proto_rawDescGZIP(), []int{7} + return file_chain_proto_rawDescGZIP(), []int{5} } func (x *ChainConfigItem) GetGroupId() string { @@ -1508,7 +1300,7 @@ type ChainSendTrxRuleListItem struct { func (x *ChainSendTrxRuleListItem) Reset() { *x = ChainSendTrxRuleListItem{} if protoimpl.UnsafeEnabled { - mi := &file_chain_proto_msgTypes[8] + mi := &file_chain_proto_msgTypes[6] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1521,7 +1313,7 @@ func (x *ChainSendTrxRuleListItem) String() string { func (*ChainSendTrxRuleListItem) ProtoMessage() {} func (x *ChainSendTrxRuleListItem) ProtoReflect() protoreflect.Message { - mi := &file_chain_proto_msgTypes[8] + mi := &file_chain_proto_msgTypes[6] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1534,7 +1326,7 @@ func (x *ChainSendTrxRuleListItem) ProtoReflect() protoreflect.Message { // Deprecated: Use ChainSendTrxRuleListItem.ProtoReflect.Descriptor instead. func (*ChainSendTrxRuleListItem) Descriptor() ([]byte, []int) { - return file_chain_proto_rawDescGZIP(), []int{8} + return file_chain_proto_rawDescGZIP(), []int{6} } func (x *ChainSendTrxRuleListItem) GetAction() ActionType { @@ -1570,7 +1362,7 @@ type SetTrxAuthModeItem struct { func (x *SetTrxAuthModeItem) Reset() { *x = SetTrxAuthModeItem{} if protoimpl.UnsafeEnabled { - mi := &file_chain_proto_msgTypes[9] + mi := &file_chain_proto_msgTypes[7] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1583,7 +1375,7 @@ func (x *SetTrxAuthModeItem) String() string { func (*SetTrxAuthModeItem) ProtoMessage() {} func (x *SetTrxAuthModeItem) ProtoReflect() protoreflect.Message { - mi := &file_chain_proto_msgTypes[9] + mi := &file_chain_proto_msgTypes[7] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1596,7 +1388,7 @@ func (x *SetTrxAuthModeItem) ProtoReflect() protoreflect.Message { // Deprecated: Use SetTrxAuthModeItem.ProtoReflect.Descriptor instead. func (*SetTrxAuthModeItem) Descriptor() ([]byte, []int) { - return file_chain_proto_rawDescGZIP(), []int{9} + return file_chain_proto_rawDescGZIP(), []int{7} } func (x *SetTrxAuthModeItem) GetType() TrxType { @@ -1632,7 +1424,7 @@ type AppConfigItem struct { func (x *AppConfigItem) Reset() { *x = AppConfigItem{} if protoimpl.UnsafeEnabled { - mi := &file_chain_proto_msgTypes[10] + mi := &file_chain_proto_msgTypes[8] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1645,7 +1437,7 @@ func (x *AppConfigItem) String() string { func (*AppConfigItem) ProtoMessage() {} func (x *AppConfigItem) ProtoReflect() protoreflect.Message { - mi := &file_chain_proto_msgTypes[10] + mi := &file_chain_proto_msgTypes[8] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1658,7 +1450,7 @@ func (x *AppConfigItem) ProtoReflect() protoreflect.Message { // Deprecated: Use AppConfigItem.ProtoReflect.Descriptor instead. func (*AppConfigItem) Descriptor() ([]byte, []int) { - return file_chain_proto_rawDescGZIP(), []int{10} + return file_chain_proto_rawDescGZIP(), []int{8} } func (x *AppConfigItem) GetGroupId() string { @@ -1738,7 +1530,7 @@ type ConsensusInfo struct { func (x *ConsensusInfo) Reset() { *x = ConsensusInfo{} if protoimpl.UnsafeEnabled { - mi := &file_chain_proto_msgTypes[11] + mi := &file_chain_proto_msgTypes[9] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1751,7 +1543,7 @@ func (x *ConsensusInfo) String() string { func (*ConsensusInfo) ProtoMessage() {} func (x *ConsensusInfo) ProtoReflect() protoreflect.Message { - mi := &file_chain_proto_msgTypes[11] + mi := &file_chain_proto_msgTypes[9] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1764,7 +1556,7 @@ func (x *ConsensusInfo) ProtoReflect() protoreflect.Message { // Deprecated: Use ConsensusInfo.ProtoReflect.Descriptor instead. func (*ConsensusInfo) Descriptor() ([]byte, []int) { - return file_chain_proto_rawDescGZIP(), []int{11} + return file_chain_proto_rawDescGZIP(), []int{9} } func (x *ConsensusInfo) GetConsensusId() string { @@ -1812,7 +1604,7 @@ type ForkItem struct { func (x *ForkItem) Reset() { *x = ForkItem{} if protoimpl.UnsafeEnabled { - mi := &file_chain_proto_msgTypes[12] + mi := &file_chain_proto_msgTypes[10] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1825,7 +1617,7 @@ func (x *ForkItem) String() string { func (*ForkItem) ProtoMessage() {} func (x *ForkItem) ProtoReflect() protoreflect.Message { - mi := &file_chain_proto_msgTypes[12] + mi := &file_chain_proto_msgTypes[10] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1838,7 +1630,7 @@ func (x *ForkItem) ProtoReflect() protoreflect.Message { // Deprecated: Use ForkItem.ProtoReflect.Descriptor instead. func (*ForkItem) Descriptor() ([]byte, []int) { - return file_chain_proto_rawDescGZIP(), []int{12} + return file_chain_proto_rawDescGZIP(), []int{10} } func (x *ForkItem) GetGroupId() string { @@ -1911,7 +1703,7 @@ type Trx struct { func (x *Trx) Reset() { *x = Trx{} if protoimpl.UnsafeEnabled { - mi := &file_chain_proto_msgTypes[13] + mi := &file_chain_proto_msgTypes[11] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1924,7 +1716,7 @@ func (x *Trx) String() string { func (*Trx) ProtoMessage() {} func (x *Trx) ProtoReflect() protoreflect.Message { - mi := &file_chain_proto_msgTypes[13] + mi := &file_chain_proto_msgTypes[11] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1937,7 +1729,7 @@ func (x *Trx) ProtoReflect() protoreflect.Message { // Deprecated: Use Trx.ProtoReflect.Descriptor instead. func (*Trx) Descriptor() ([]byte, []int) { - return file_chain_proto_rawDescGZIP(), []int{13} + return file_chain_proto_rawDescGZIP(), []int{11} } func (x *Trx) GetTrxId() string { @@ -2037,7 +1829,7 @@ type Block struct { func (x *Block) Reset() { *x = Block{} if protoimpl.UnsafeEnabled { - mi := &file_chain_proto_msgTypes[14] + mi := &file_chain_proto_msgTypes[12] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2050,7 +1842,7 @@ func (x *Block) String() string { func (*Block) ProtoMessage() {} func (x *Block) ProtoReflect() protoreflect.Message { - mi := &file_chain_proto_msgTypes[14] + mi := &file_chain_proto_msgTypes[12] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2063,7 +1855,7 @@ func (x *Block) ProtoReflect() protoreflect.Message { // Deprecated: Use Block.ProtoReflect.Descriptor instead. func (*Block) Descriptor() ([]byte, []int) { - return file_chain_proto_rawDescGZIP(), []int{14} + return file_chain_proto_rawDescGZIP(), []int{12} } func (x *Block) GetGroupId() string { @@ -2141,7 +1933,7 @@ type BftMsg struct { func (x *BftMsg) Reset() { *x = BftMsg{} if protoimpl.UnsafeEnabled { - mi := &file_chain_proto_msgTypes[15] + mi := &file_chain_proto_msgTypes[13] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2154,7 +1946,7 @@ func (x *BftMsg) String() string { func (*BftMsg) ProtoMessage() {} func (x *BftMsg) ProtoReflect() protoreflect.Message { - mi := &file_chain_proto_msgTypes[15] + mi := &file_chain_proto_msgTypes[13] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2167,7 +1959,7 @@ func (x *BftMsg) ProtoReflect() protoreflect.Message { // Deprecated: Use BftMsg.ProtoReflect.Descriptor instead. func (*BftMsg) Descriptor() ([]byte, []int) { - return file_chain_proto_rawDescGZIP(), []int{15} + return file_chain_proto_rawDescGZIP(), []int{13} } func (x *BftMsg) GetType() BftMsgType { @@ -2197,7 +1989,7 @@ type SyncMsg struct { func (x *SyncMsg) Reset() { *x = SyncMsg{} if protoimpl.UnsafeEnabled { - mi := &file_chain_proto_msgTypes[16] + mi := &file_chain_proto_msgTypes[14] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2210,7 +2002,7 @@ func (x *SyncMsg) String() string { func (*SyncMsg) ProtoMessage() {} func (x *SyncMsg) ProtoReflect() protoreflect.Message { - mi := &file_chain_proto_msgTypes[16] + mi := &file_chain_proto_msgTypes[14] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2223,7 +2015,7 @@ func (x *SyncMsg) ProtoReflect() protoreflect.Message { // Deprecated: Use SyncMsg.ProtoReflect.Descriptor instead. func (*SyncMsg) Descriptor() ([]byte, []int) { - return file_chain_proto_rawDescGZIP(), []int{16} + return file_chain_proto_rawDescGZIP(), []int{14} } func (x *SyncMsg) GetGroupId() string { @@ -2263,7 +2055,7 @@ type ReqBlock struct { func (x *ReqBlock) Reset() { *x = ReqBlock{} if protoimpl.UnsafeEnabled { - mi := &file_chain_proto_msgTypes[17] + mi := &file_chain_proto_msgTypes[15] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2276,7 +2068,7 @@ func (x *ReqBlock) String() string { func (*ReqBlock) ProtoMessage() {} func (x *ReqBlock) ProtoReflect() protoreflect.Message { - mi := &file_chain_proto_msgTypes[17] + mi := &file_chain_proto_msgTypes[15] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2289,7 +2081,7 @@ func (x *ReqBlock) ProtoReflect() protoreflect.Message { // Deprecated: Use ReqBlock.ProtoReflect.Descriptor instead. func (*ReqBlock) Descriptor() ([]byte, []int) { - return file_chain_proto_rawDescGZIP(), []int{17} + return file_chain_proto_rawDescGZIP(), []int{15} } func (x *ReqBlock) GetGroupId() string { @@ -2354,7 +2146,7 @@ type ReqBlockResp struct { func (x *ReqBlockResp) Reset() { *x = ReqBlockResp{} if protoimpl.UnsafeEnabled { - mi := &file_chain_proto_msgTypes[18] + mi := &file_chain_proto_msgTypes[16] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2367,7 +2159,7 @@ func (x *ReqBlockResp) String() string { func (*ReqBlockResp) ProtoMessage() {} func (x *ReqBlockResp) ProtoReflect() protoreflect.Message { - mi := &file_chain_proto_msgTypes[18] + mi := &file_chain_proto_msgTypes[16] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2380,7 +2172,7 @@ func (x *ReqBlockResp) ProtoReflect() protoreflect.Message { // Deprecated: Use ReqBlockResp.ProtoReflect.Descriptor instead. func (*ReqBlockResp) Descriptor() ([]byte, []int) { - return file_chain_proto_rawDescGZIP(), []int{18} + return file_chain_proto_rawDescGZIP(), []int{16} } func (x *ReqBlockResp) GetGroupId() string { @@ -2464,7 +2256,7 @@ type BlocksBundle struct { func (x *BlocksBundle) Reset() { *x = BlocksBundle{} if protoimpl.UnsafeEnabled { - mi := &file_chain_proto_msgTypes[19] + mi := &file_chain_proto_msgTypes[17] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2477,7 +2269,7 @@ func (x *BlocksBundle) String() string { func (*BlocksBundle) ProtoMessage() {} func (x *BlocksBundle) ProtoReflect() protoreflect.Message { - mi := &file_chain_proto_msgTypes[19] + mi := &file_chain_proto_msgTypes[17] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2490,7 +2282,7 @@ func (x *BlocksBundle) ProtoReflect() protoreflect.Message { // Deprecated: Use BlocksBundle.ProtoReflect.Descriptor instead. func (*BlocksBundle) Descriptor() ([]byte, []int) { - return file_chain_proto_rawDescGZIP(), []int{19} + return file_chain_proto_rawDescGZIP(), []int{17} } func (x *BlocksBundle) GetBlocks() []*Block { @@ -2512,7 +2304,7 @@ type BroadcastMsg struct { func (x *BroadcastMsg) Reset() { *x = BroadcastMsg{} if protoimpl.UnsafeEnabled { - mi := &file_chain_proto_msgTypes[20] + mi := &file_chain_proto_msgTypes[18] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2525,7 +2317,7 @@ func (x *BroadcastMsg) String() string { func (*BroadcastMsg) ProtoMessage() {} func (x *BroadcastMsg) ProtoReflect() protoreflect.Message { - mi := &file_chain_proto_msgTypes[20] + mi := &file_chain_proto_msgTypes[18] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2538,7 +2330,7 @@ func (x *BroadcastMsg) ProtoReflect() protoreflect.Message { // Deprecated: Use BroadcastMsg.ProtoReflect.Descriptor instead. func (*BroadcastMsg) Descriptor() ([]byte, []int) { - return file_chain_proto_rawDescGZIP(), []int{20} + return file_chain_proto_rawDescGZIP(), []int{18} } func (x *BroadcastMsg) GetType() BroadcastType { @@ -2576,7 +2368,7 @@ type GroupItem struct { func (x *GroupItem) Reset() { *x = GroupItem{} if protoimpl.UnsafeEnabled { - mi := &file_chain_proto_msgTypes[21] + mi := &file_chain_proto_msgTypes[19] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2589,7 +2381,7 @@ func (x *GroupItem) String() string { func (*GroupItem) ProtoMessage() {} func (x *GroupItem) ProtoReflect() protoreflect.Message { - mi := &file_chain_proto_msgTypes[21] + mi := &file_chain_proto_msgTypes[19] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2602,7 +2394,7 @@ func (x *GroupItem) ProtoReflect() protoreflect.Message { // Deprecated: Use GroupItem.ProtoReflect.Descriptor instead. func (*GroupItem) Descriptor() ([]byte, []int) { - return file_chain_proto_rawDescGZIP(), []int{21} + return file_chain_proto_rawDescGZIP(), []int{19} } func (x *GroupItem) GetGroupId() string { @@ -2701,7 +2493,7 @@ type GroupSeed struct { func (x *GroupSeed) Reset() { *x = GroupSeed{} if protoimpl.UnsafeEnabled { - mi := &file_chain_proto_msgTypes[22] + mi := &file_chain_proto_msgTypes[20] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2714,7 +2506,7 @@ func (x *GroupSeed) String() string { func (*GroupSeed) ProtoMessage() {} func (x *GroupSeed) ProtoReflect() protoreflect.Message { - mi := &file_chain_proto_msgTypes[22] + mi := &file_chain_proto_msgTypes[20] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2727,7 +2519,7 @@ func (x *GroupSeed) ProtoReflect() protoreflect.Message { // Deprecated: Use GroupSeed.ProtoReflect.Descriptor instead. func (*GroupSeed) Descriptor() ([]byte, []int) { - return file_chain_proto_rawDescGZIP(), []int{22} + return file_chain_proto_rawDescGZIP(), []int{20} } func (x *GroupSeed) GetGenesisBlock() *Block { @@ -2808,7 +2600,7 @@ type NodeSDKGroupItem struct { func (x *NodeSDKGroupItem) Reset() { *x = NodeSDKGroupItem{} if protoimpl.UnsafeEnabled { - mi := &file_chain_proto_msgTypes[23] + mi := &file_chain_proto_msgTypes[21] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2821,7 +2613,7 @@ func (x *NodeSDKGroupItem) String() string { func (*NodeSDKGroupItem) ProtoMessage() {} func (x *NodeSDKGroupItem) ProtoReflect() protoreflect.Message { - mi := &file_chain_proto_msgTypes[23] + mi := &file_chain_proto_msgTypes[21] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2834,7 +2626,7 @@ func (x *NodeSDKGroupItem) ProtoReflect() protoreflect.Message { // Deprecated: Use NodeSDKGroupItem.ProtoReflect.Descriptor instead. func (*NodeSDKGroupItem) Descriptor() ([]byte, []int) { - return file_chain_proto_rawDescGZIP(), []int{23} + return file_chain_proto_rawDescGZIP(), []int{21} } func (x *NodeSDKGroupItem) GetGroup() *GroupItem { @@ -2884,7 +2676,7 @@ type HBTrxBundle struct { func (x *HBTrxBundle) Reset() { *x = HBTrxBundle{} if protoimpl.UnsafeEnabled { - mi := &file_chain_proto_msgTypes[24] + mi := &file_chain_proto_msgTypes[22] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2897,7 +2689,7 @@ func (x *HBTrxBundle) String() string { func (*HBTrxBundle) ProtoMessage() {} func (x *HBTrxBundle) ProtoReflect() protoreflect.Message { - mi := &file_chain_proto_msgTypes[24] + mi := &file_chain_proto_msgTypes[22] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2910,7 +2702,7 @@ func (x *HBTrxBundle) ProtoReflect() protoreflect.Message { // Deprecated: Use HBTrxBundle.ProtoReflect.Descriptor instead. func (*HBTrxBundle) Descriptor() ([]byte, []int) { - return file_chain_proto_rawDescGZIP(), []int{24} + return file_chain_proto_rawDescGZIP(), []int{22} } func (x *HBTrxBundle) GetTrxs() []*Trx { @@ -2935,7 +2727,7 @@ type HBMsgv1 struct { func (x *HBMsgv1) Reset() { *x = HBMsgv1{} if protoimpl.UnsafeEnabled { - mi := &file_chain_proto_msgTypes[25] + mi := &file_chain_proto_msgTypes[23] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2948,7 +2740,7 @@ func (x *HBMsgv1) String() string { func (*HBMsgv1) ProtoMessage() {} func (x *HBMsgv1) ProtoReflect() protoreflect.Message { - mi := &file_chain_proto_msgTypes[25] + mi := &file_chain_proto_msgTypes[23] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2961,7 +2753,7 @@ func (x *HBMsgv1) ProtoReflect() protoreflect.Message { // Deprecated: Use HBMsgv1.ProtoReflect.Descriptor instead. func (*HBMsgv1) Descriptor() ([]byte, []int) { - return file_chain_proto_rawDescGZIP(), []int{25} + return file_chain_proto_rawDescGZIP(), []int{23} } func (x *HBMsgv1) GetMsgId() string { @@ -3012,7 +2804,7 @@ type RBCMsg struct { func (x *RBCMsg) Reset() { *x = RBCMsg{} if protoimpl.UnsafeEnabled { - mi := &file_chain_proto_msgTypes[26] + mi := &file_chain_proto_msgTypes[24] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3025,7 +2817,7 @@ func (x *RBCMsg) String() string { func (*RBCMsg) ProtoMessage() {} func (x *RBCMsg) ProtoReflect() protoreflect.Message { - mi := &file_chain_proto_msgTypes[26] + mi := &file_chain_proto_msgTypes[24] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3038,7 +2830,7 @@ func (x *RBCMsg) ProtoReflect() protoreflect.Message { // Deprecated: Use RBCMsg.ProtoReflect.Descriptor instead. func (*RBCMsg) Descriptor() ([]byte, []int) { - return file_chain_proto_rawDescGZIP(), []int{26} + return file_chain_proto_rawDescGZIP(), []int{24} } func (x *RBCMsg) GetType() RBCMsgType { @@ -3073,7 +2865,7 @@ type InitPropose struct { func (x *InitPropose) Reset() { *x = InitPropose{} if protoimpl.UnsafeEnabled { - mi := &file_chain_proto_msgTypes[27] + mi := &file_chain_proto_msgTypes[25] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3086,7 +2878,7 @@ func (x *InitPropose) String() string { func (*InitPropose) ProtoMessage() {} func (x *InitPropose) ProtoReflect() protoreflect.Message { - mi := &file_chain_proto_msgTypes[27] + mi := &file_chain_proto_msgTypes[25] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3099,7 +2891,7 @@ func (x *InitPropose) ProtoReflect() protoreflect.Message { // Deprecated: Use InitPropose.ProtoReflect.Descriptor instead. func (*InitPropose) Descriptor() ([]byte, []int) { - return file_chain_proto_rawDescGZIP(), []int{27} + return file_chain_proto_rawDescGZIP(), []int{25} } func (x *InitPropose) GetRootHash() []byte { @@ -3176,7 +2968,7 @@ type Echo struct { func (x *Echo) Reset() { *x = Echo{} if protoimpl.UnsafeEnabled { - mi := &file_chain_proto_msgTypes[28] + mi := &file_chain_proto_msgTypes[26] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3189,7 +2981,7 @@ func (x *Echo) String() string { func (*Echo) ProtoMessage() {} func (x *Echo) ProtoReflect() protoreflect.Message { - mi := &file_chain_proto_msgTypes[28] + mi := &file_chain_proto_msgTypes[26] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3202,7 +2994,7 @@ func (x *Echo) ProtoReflect() protoreflect.Message { // Deprecated: Use Echo.ProtoReflect.Descriptor instead. func (*Echo) Descriptor() ([]byte, []int) { - return file_chain_proto_rawDescGZIP(), []int{28} + return file_chain_proto_rawDescGZIP(), []int{26} } func (x *Echo) GetRootHash() []byte { @@ -3275,7 +3067,7 @@ type Ready struct { func (x *Ready) Reset() { *x = Ready{} if protoimpl.UnsafeEnabled { - mi := &file_chain_proto_msgTypes[29] + mi := &file_chain_proto_msgTypes[27] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3288,7 +3080,7 @@ func (x *Ready) String() string { func (*Ready) ProtoMessage() {} func (x *Ready) ProtoReflect() protoreflect.Message { - mi := &file_chain_proto_msgTypes[29] + mi := &file_chain_proto_msgTypes[27] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3301,7 +3093,7 @@ func (x *Ready) ProtoReflect() protoreflect.Message { // Deprecated: Use Ready.ProtoReflect.Descriptor instead. func (*Ready) Descriptor() ([]byte, []int) { - return file_chain_proto_rawDescGZIP(), []int{29} + return file_chain_proto_rawDescGZIP(), []int{27} } func (x *Ready) GetRootHash() []byte { @@ -3345,7 +3137,7 @@ type BBAMsg struct { func (x *BBAMsg) Reset() { *x = BBAMsg{} if protoimpl.UnsafeEnabled { - mi := &file_chain_proto_msgTypes[30] + mi := &file_chain_proto_msgTypes[28] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3358,7 +3150,7 @@ func (x *BBAMsg) String() string { func (*BBAMsg) ProtoMessage() {} func (x *BBAMsg) ProtoReflect() protoreflect.Message { - mi := &file_chain_proto_msgTypes[30] + mi := &file_chain_proto_msgTypes[28] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3371,7 +3163,7 @@ func (x *BBAMsg) ProtoReflect() protoreflect.Message { // Deprecated: Use BBAMsg.ProtoReflect.Descriptor instead. func (*BBAMsg) Descriptor() ([]byte, []int) { - return file_chain_proto_rawDescGZIP(), []int{30} + return file_chain_proto_rawDescGZIP(), []int{28} } func (x *BBAMsg) GetType() BBAMsgType { @@ -3402,7 +3194,7 @@ type Bval struct { func (x *Bval) Reset() { *x = Bval{} if protoimpl.UnsafeEnabled { - mi := &file_chain_proto_msgTypes[31] + mi := &file_chain_proto_msgTypes[29] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3415,7 +3207,7 @@ func (x *Bval) String() string { func (*Bval) ProtoMessage() {} func (x *Bval) ProtoReflect() protoreflect.Message { - mi := &file_chain_proto_msgTypes[31] + mi := &file_chain_proto_msgTypes[29] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3428,7 +3220,7 @@ func (x *Bval) ProtoReflect() protoreflect.Message { // Deprecated: Use Bval.ProtoReflect.Descriptor instead. func (*Bval) Descriptor() ([]byte, []int) { - return file_chain_proto_rawDescGZIP(), []int{31} + return file_chain_proto_rawDescGZIP(), []int{29} } func (x *Bval) GetProposerId() string { @@ -3473,7 +3265,7 @@ type Aux struct { func (x *Aux) Reset() { *x = Aux{} if protoimpl.UnsafeEnabled { - mi := &file_chain_proto_msgTypes[32] + mi := &file_chain_proto_msgTypes[30] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3486,7 +3278,7 @@ func (x *Aux) String() string { func (*Aux) ProtoMessage() {} func (x *Aux) ProtoReflect() protoreflect.Message { - mi := &file_chain_proto_msgTypes[32] + mi := &file_chain_proto_msgTypes[30] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3499,7 +3291,7 @@ func (x *Aux) ProtoReflect() protoreflect.Message { // Deprecated: Use Aux.ProtoReflect.Descriptor instead. func (*Aux) Descriptor() ([]byte, []int) { - return file_chain_proto_rawDescGZIP(), []int{32} + return file_chain_proto_rawDescGZIP(), []int{30} } func (x *Aux) GetProposerId() string { @@ -3577,298 +3369,257 @@ var file_chain_proto_rawDesc = []byte{ 0x01, 0x28, 0x09, 0x52, 0x0a, 0x50, 0x72, 0x6f, 0x6f, 0x66, 0x54, 0x72, 0x78, 0x49, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x54, 0x78, 0x43, 0x6e, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x54, 0x78, 0x43, 0x6e, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x4d, 0x65, 0x6d, 0x6f, 0x18, 0x06, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x04, 0x4d, 0x65, 0x6d, 0x6f, 0x22, 0xe9, 0x01, 0x0a, 0x0c, 0x41, 0x6e, - 0x6e, 0x6f, 0x75, 0x6e, 0x63, 0x65, 0x49, 0x74, 0x65, 0x6d, 0x12, 0x18, 0x0a, 0x07, 0x47, 0x72, - 0x6f, 0x75, 0x70, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x47, 0x72, 0x6f, - 0x75, 0x70, 0x49, 0x64, 0x12, 0x2d, 0x0a, 0x06, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, + 0x01, 0x28, 0x09, 0x52, 0x04, 0x4d, 0x65, 0x6d, 0x6f, 0x22, 0xeb, 0x01, 0x0a, 0x0f, 0x43, 0x68, + 0x61, 0x69, 0x6e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x49, 0x74, 0x65, 0x6d, 0x12, 0x18, 0x0a, + 0x07, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, + 0x47, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x64, 0x12, 0x2e, 0x0a, 0x04, 0x54, 0x79, 0x70, 0x65, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1a, 0x2e, 0x71, 0x75, 0x6f, 0x72, 0x75, 0x6d, 0x2e, 0x70, + 0x62, 0x2e, 0x43, 0x68, 0x61, 0x69, 0x6e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x54, 0x79, 0x70, + 0x65, 0x52, 0x04, 0x54, 0x79, 0x70, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x44, 0x61, 0x74, 0x61, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x04, 0x44, 0x61, 0x74, 0x61, 0x12, 0x20, 0x0a, 0x0b, 0x4f, + 0x77, 0x6e, 0x65, 0x72, 0x50, 0x75, 0x62, 0x6b, 0x65, 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x0b, 0x4f, 0x77, 0x6e, 0x65, 0x72, 0x50, 0x75, 0x62, 0x6b, 0x65, 0x79, 0x12, 0x26, 0x0a, + 0x0e, 0x4f, 0x77, 0x6e, 0x65, 0x72, 0x53, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x18, + 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x4f, 0x77, 0x6e, 0x65, 0x72, 0x53, 0x69, 0x67, 0x6e, + 0x61, 0x74, 0x75, 0x72, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x54, 0x69, 0x6d, 0x65, 0x53, 0x74, 0x61, + 0x6d, 0x70, 0x18, 0x06, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x54, 0x69, 0x6d, 0x65, 0x53, 0x74, + 0x61, 0x6d, 0x70, 0x12, 0x12, 0x0a, 0x04, 0x4d, 0x65, 0x6d, 0x6f, 0x18, 0x07, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x04, 0x4d, 0x65, 0x6d, 0x6f, 0x22, 0x89, 0x01, 0x0a, 0x18, 0x43, 0x68, 0x61, 0x69, + 0x6e, 0x53, 0x65, 0x6e, 0x64, 0x54, 0x72, 0x78, 0x52, 0x75, 0x6c, 0x65, 0x4c, 0x69, 0x73, 0x74, + 0x49, 0x74, 0x65, 0x6d, 0x12, 0x2d, 0x0a, 0x06, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x15, 0x2e, 0x71, 0x75, 0x6f, 0x72, 0x75, 0x6d, 0x2e, 0x70, 0x62, 0x2e, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x52, 0x06, 0x41, 0x63, 0x74, - 0x69, 0x6f, 0x6e, 0x12, 0x34, 0x0a, 0x07, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x18, 0x03, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x71, 0x75, 0x6f, 0x72, 0x75, 0x6d, 0x2e, 0x70, 0x62, - 0x2e, 0x41, 0x6e, 0x6e, 0x6f, 0x75, 0x6e, 0x63, 0x65, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, - 0x52, 0x07, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x12, 0x28, 0x0a, 0x0f, 0x41, 0x6e, 0x6e, - 0x6f, 0x75, 0x6e, 0x63, 0x65, 0x72, 0x50, 0x75, 0x62, 0x6b, 0x65, 0x79, 0x18, 0x04, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x0f, 0x41, 0x6e, 0x6e, 0x6f, 0x75, 0x6e, 0x63, 0x65, 0x72, 0x50, 0x75, 0x62, - 0x6b, 0x65, 0x79, 0x12, 0x12, 0x0a, 0x04, 0x48, 0x61, 0x73, 0x68, 0x18, 0x05, 0x20, 0x01, 0x28, - 0x0c, 0x52, 0x04, 0x48, 0x61, 0x73, 0x68, 0x12, 0x1c, 0x0a, 0x09, 0x53, 0x69, 0x67, 0x6e, 0x61, - 0x74, 0x75, 0x72, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x09, 0x53, 0x69, 0x67, 0x6e, - 0x61, 0x74, 0x75, 0x72, 0x65, 0x22, 0x98, 0x01, 0x0a, 0x0f, 0x41, 0x6e, 0x6e, 0x6f, 0x75, 0x6e, - 0x63, 0x65, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x12, 0x2b, 0x0a, 0x04, 0x54, 0x79, 0x70, - 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x17, 0x2e, 0x71, 0x75, 0x6f, 0x72, 0x75, 0x6d, - 0x2e, 0x70, 0x62, 0x2e, 0x41, 0x6e, 0x6e, 0x6f, 0x75, 0x6e, 0x63, 0x65, 0x54, 0x79, 0x70, 0x65, - 0x52, 0x04, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x53, 0x69, 0x67, 0x6e, 0x50, 0x75, - 0x62, 0x6b, 0x65, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x53, 0x69, 0x67, 0x6e, - 0x50, 0x75, 0x62, 0x6b, 0x65, 0x79, 0x12, 0x24, 0x0a, 0x0d, 0x45, 0x6e, 0x63, 0x72, 0x79, 0x70, - 0x74, 0x50, 0x75, 0x62, 0x6b, 0x65, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x45, - 0x6e, 0x63, 0x72, 0x79, 0x70, 0x74, 0x50, 0x75, 0x62, 0x6b, 0x65, 0x79, 0x12, 0x12, 0x0a, 0x04, - 0x4d, 0x65, 0x6d, 0x6f, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x4d, 0x65, 0x6d, 0x6f, - 0x22, 0xeb, 0x01, 0x0a, 0x0f, 0x43, 0x68, 0x61, 0x69, 0x6e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, - 0x49, 0x74, 0x65, 0x6d, 0x12, 0x18, 0x0a, 0x07, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x64, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x64, 0x12, 0x2e, - 0x0a, 0x04, 0x54, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1a, 0x2e, 0x71, - 0x75, 0x6f, 0x72, 0x75, 0x6d, 0x2e, 0x70, 0x62, 0x2e, 0x43, 0x68, 0x61, 0x69, 0x6e, 0x43, 0x6f, - 0x6e, 0x66, 0x69, 0x67, 0x54, 0x79, 0x70, 0x65, 0x52, 0x04, 0x54, 0x79, 0x70, 0x65, 0x12, 0x12, - 0x0a, 0x04, 0x44, 0x61, 0x74, 0x61, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x04, 0x44, 0x61, - 0x74, 0x61, 0x12, 0x20, 0x0a, 0x0b, 0x4f, 0x77, 0x6e, 0x65, 0x72, 0x50, 0x75, 0x62, 0x6b, 0x65, - 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x4f, 0x77, 0x6e, 0x65, 0x72, 0x50, 0x75, - 0x62, 0x6b, 0x65, 0x79, 0x12, 0x26, 0x0a, 0x0e, 0x4f, 0x77, 0x6e, 0x65, 0x72, 0x53, 0x69, 0x67, - 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x4f, 0x77, - 0x6e, 0x65, 0x72, 0x53, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x12, 0x1c, 0x0a, 0x09, - 0x54, 0x69, 0x6d, 0x65, 0x53, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x06, 0x20, 0x01, 0x28, 0x03, 0x52, - 0x09, 0x54, 0x69, 0x6d, 0x65, 0x53, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x12, 0x0a, 0x04, 0x4d, 0x65, - 0x6d, 0x6f, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x4d, 0x65, 0x6d, 0x6f, 0x22, 0x89, - 0x01, 0x0a, 0x18, 0x43, 0x68, 0x61, 0x69, 0x6e, 0x53, 0x65, 0x6e, 0x64, 0x54, 0x72, 0x78, 0x52, - 0x75, 0x6c, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x49, 0x74, 0x65, 0x6d, 0x12, 0x2d, 0x0a, 0x06, 0x41, - 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x15, 0x2e, 0x71, 0x75, - 0x6f, 0x72, 0x75, 0x6d, 0x2e, 0x70, 0x62, 0x2e, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, - 0x70, 0x65, 0x52, 0x06, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x16, 0x0a, 0x06, 0x50, 0x75, - 0x62, 0x6b, 0x65, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x50, 0x75, 0x62, 0x6b, - 0x65, 0x79, 0x12, 0x26, 0x0a, 0x04, 0x54, 0x79, 0x70, 0x65, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0e, - 0x32, 0x12, 0x2e, 0x71, 0x75, 0x6f, 0x72, 0x75, 0x6d, 0x2e, 0x70, 0x62, 0x2e, 0x54, 0x72, 0x78, - 0x54, 0x79, 0x70, 0x65, 0x52, 0x04, 0x54, 0x79, 0x70, 0x65, 0x22, 0x68, 0x0a, 0x12, 0x53, 0x65, - 0x74, 0x54, 0x72, 0x78, 0x41, 0x75, 0x74, 0x68, 0x4d, 0x6f, 0x64, 0x65, 0x49, 0x74, 0x65, 0x6d, - 0x12, 0x26, 0x0a, 0x04, 0x54, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x12, - 0x2e, 0x71, 0x75, 0x6f, 0x72, 0x75, 0x6d, 0x2e, 0x70, 0x62, 0x2e, 0x54, 0x72, 0x78, 0x54, 0x79, - 0x70, 0x65, 0x52, 0x04, 0x54, 0x79, 0x70, 0x65, 0x12, 0x2a, 0x0a, 0x04, 0x4d, 0x6f, 0x64, 0x65, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x16, 0x2e, 0x71, 0x75, 0x6f, 0x72, 0x75, 0x6d, 0x2e, - 0x70, 0x62, 0x2e, 0x54, 0x72, 0x78, 0x41, 0x75, 0x74, 0x68, 0x4d, 0x6f, 0x64, 0x65, 0x52, 0x04, - 0x4d, 0x6f, 0x64, 0x65, 0x22, 0xa2, 0x02, 0x0a, 0x0d, 0x41, 0x70, 0x70, 0x43, 0x6f, 0x6e, 0x66, - 0x69, 0x67, 0x49, 0x74, 0x65, 0x6d, 0x12, 0x18, 0x0a, 0x07, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x49, - 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x64, - 0x12, 0x2d, 0x0a, 0x06, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, - 0x32, 0x15, 0x2e, 0x71, 0x75, 0x6f, 0x72, 0x75, 0x6d, 0x2e, 0x70, 0x62, 0x2e, 0x41, 0x63, 0x74, - 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x52, 0x06, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, - 0x12, 0x0a, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x4e, - 0x61, 0x6d, 0x65, 0x12, 0x2c, 0x0a, 0x04, 0x54, 0x79, 0x70, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, - 0x0e, 0x32, 0x18, 0x2e, 0x71, 0x75, 0x6f, 0x72, 0x75, 0x6d, 0x2e, 0x70, 0x62, 0x2e, 0x41, 0x70, - 0x70, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x54, 0x79, 0x70, 0x65, 0x52, 0x04, 0x54, 0x79, 0x70, - 0x65, 0x12, 0x14, 0x0a, 0x05, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x05, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x4f, 0x77, 0x6e, 0x65, 0x72, - 0x50, 0x75, 0x62, 0x6b, 0x65, 0x79, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x4f, 0x77, - 0x6e, 0x65, 0x72, 0x50, 0x75, 0x62, 0x6b, 0x65, 0x79, 0x12, 0x1c, 0x0a, 0x09, 0x4f, 0x77, 0x6e, - 0x65, 0x72, 0x53, 0x69, 0x67, 0x6e, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x4f, 0x77, - 0x6e, 0x65, 0x72, 0x53, 0x69, 0x67, 0x6e, 0x12, 0x12, 0x0a, 0x04, 0x4d, 0x65, 0x6d, 0x6f, 0x18, - 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x4d, 0x65, 0x6d, 0x6f, 0x12, 0x1c, 0x0a, 0x09, 0x54, - 0x69, 0x6d, 0x65, 0x53, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x09, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, - 0x54, 0x69, 0x6d, 0x65, 0x53, 0x74, 0x61, 0x6d, 0x70, 0x22, 0x89, 0x01, 0x0a, 0x0d, 0x43, 0x6f, - 0x6e, 0x73, 0x65, 0x6e, 0x73, 0x75, 0x73, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x20, 0x0a, 0x0b, 0x43, - 0x6f, 0x6e, 0x73, 0x65, 0x6e, 0x73, 0x75, 0x73, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x0b, 0x43, 0x6f, 0x6e, 0x73, 0x65, 0x6e, 0x73, 0x75, 0x73, 0x49, 0x64, 0x12, 0x1a, 0x0a, - 0x08, 0x43, 0x68, 0x61, 0x69, 0x6e, 0x56, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, - 0x08, 0x43, 0x68, 0x61, 0x69, 0x6e, 0x56, 0x65, 0x72, 0x12, 0x14, 0x0a, 0x05, 0x49, 0x6e, 0x54, - 0x72, 0x78, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x49, 0x6e, 0x54, 0x72, 0x78, 0x12, - 0x24, 0x0a, 0x0d, 0x46, 0x6f, 0x72, 0x6b, 0x46, 0x72, 0x6f, 0x6d, 0x42, 0x6c, 0x6f, 0x63, 0x6b, - 0x18, 0x04, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0d, 0x46, 0x6f, 0x72, 0x6b, 0x46, 0x72, 0x6f, 0x6d, - 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x22, 0x84, 0x02, 0x0a, 0x08, 0x46, 0x6f, 0x72, 0x6b, 0x49, 0x74, - 0x65, 0x6d, 0x12, 0x18, 0x0a, 0x07, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x64, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x07, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x64, 0x12, 0x36, 0x0a, 0x09, - 0x43, 0x6f, 0x6e, 0x73, 0x65, 0x6e, 0x73, 0x75, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x18, 0x2e, 0x71, 0x75, 0x6f, 0x72, 0x75, 0x6d, 0x2e, 0x70, 0x62, 0x2e, 0x43, 0x6f, 0x6e, 0x73, - 0x65, 0x6e, 0x73, 0x75, 0x73, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x09, 0x43, 0x6f, 0x6e, 0x73, 0x65, - 0x6e, 0x73, 0x75, 0x73, 0x12, 0x26, 0x0a, 0x0e, 0x53, 0x74, 0x61, 0x72, 0x74, 0x46, 0x72, 0x6f, - 0x6d, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0e, 0x53, 0x74, - 0x61, 0x72, 0x74, 0x46, 0x72, 0x6f, 0x6d, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x12, 0x26, 0x0a, 0x0e, - 0x53, 0x74, 0x61, 0x72, 0x74, 0x46, 0x72, 0x6f, 0x6d, 0x45, 0x70, 0x6f, 0x63, 0x68, 0x18, 0x04, - 0x20, 0x01, 0x28, 0x04, 0x52, 0x0e, 0x53, 0x74, 0x61, 0x72, 0x74, 0x46, 0x72, 0x6f, 0x6d, 0x45, - 0x70, 0x6f, 0x63, 0x68, 0x12, 0x24, 0x0a, 0x0d, 0x45, 0x70, 0x6f, 0x63, 0x68, 0x44, 0x75, 0x72, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0d, 0x45, 0x70, 0x6f, - 0x63, 0x68, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1c, 0x0a, 0x09, 0x70, 0x72, - 0x6f, 0x64, 0x75, 0x63, 0x65, 0x72, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x09, 0x52, 0x09, 0x70, - 0x72, 0x6f, 0x64, 0x75, 0x63, 0x65, 0x72, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x4d, 0x65, 0x6d, 0x6f, - 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x4d, 0x65, 0x6d, 0x6f, 0x22, 0xe2, 0x02, 0x0a, - 0x03, 0x54, 0x72, 0x78, 0x12, 0x14, 0x0a, 0x05, 0x54, 0x72, 0x78, 0x49, 0x64, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x05, 0x54, 0x72, 0x78, 0x49, 0x64, 0x12, 0x26, 0x0a, 0x04, 0x54, 0x79, - 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x12, 0x2e, 0x71, 0x75, 0x6f, 0x72, 0x75, - 0x6d, 0x2e, 0x70, 0x62, 0x2e, 0x54, 0x72, 0x78, 0x54, 0x79, 0x70, 0x65, 0x52, 0x04, 0x54, 0x79, - 0x70, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x64, 0x18, 0x03, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x07, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, - 0x44, 0x61, 0x74, 0x61, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x04, 0x44, 0x61, 0x74, 0x61, - 0x12, 0x1c, 0x0a, 0x09, 0x54, 0x69, 0x6d, 0x65, 0x53, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x05, 0x20, - 0x01, 0x28, 0x03, 0x52, 0x09, 0x54, 0x69, 0x6d, 0x65, 0x53, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x18, - 0x0a, 0x07, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x07, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x20, 0x0a, 0x0b, 0x52, 0x65, 0x73, 0x65, - 0x6e, 0x64, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0b, 0x52, - 0x65, 0x73, 0x65, 0x6e, 0x64, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x4e, 0x6f, - 0x6e, 0x63, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x4e, 0x6f, 0x6e, 0x63, 0x65, - 0x12, 0x22, 0x0a, 0x0c, 0x53, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x50, 0x75, 0x62, 0x6b, 0x65, 0x79, - 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x53, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x50, 0x75, - 0x62, 0x6b, 0x65, 0x79, 0x12, 0x1e, 0x0a, 0x0a, 0x53, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x53, 0x69, - 0x67, 0x6e, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0a, 0x53, 0x65, 0x6e, 0x64, 0x65, 0x72, - 0x53, 0x69, 0x67, 0x6e, 0x12, 0x3b, 0x0a, 0x0b, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x54, - 0x79, 0x70, 0x65, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x19, 0x2e, 0x71, 0x75, 0x6f, 0x72, - 0x75, 0x6d, 0x2e, 0x70, 0x62, 0x2e, 0x54, 0x72, 0x78, 0x53, 0x74, 0x72, 0x6f, 0x61, 0x67, 0x65, - 0x54, 0x79, 0x70, 0x65, 0x52, 0x0b, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x54, 0x79, 0x70, - 0x65, 0x22, 0xbb, 0x02, 0x0a, 0x05, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x12, 0x18, 0x0a, 0x07, 0x47, - 0x72, 0x6f, 0x75, 0x70, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x47, 0x72, - 0x6f, 0x75, 0x70, 0x49, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x49, 0x64, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x07, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x49, 0x64, 0x12, - 0x1a, 0x0a, 0x08, 0x50, 0x72, 0x65, 0x76, 0x48, 0x61, 0x73, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, - 0x0c, 0x52, 0x08, 0x50, 0x72, 0x65, 0x76, 0x48, 0x61, 0x73, 0x68, 0x12, 0x26, 0x0a, 0x0e, 0x50, - 0x72, 0x6f, 0x64, 0x75, 0x63, 0x65, 0x72, 0x50, 0x75, 0x62, 0x6b, 0x65, 0x79, 0x18, 0x04, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x0e, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x65, 0x72, 0x50, 0x75, 0x62, - 0x6b, 0x65, 0x79, 0x12, 0x22, 0x0a, 0x04, 0x54, 0x72, 0x78, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, - 0x0b, 0x32, 0x0e, 0x2e, 0x71, 0x75, 0x6f, 0x72, 0x75, 0x6d, 0x2e, 0x70, 0x62, 0x2e, 0x54, 0x72, - 0x78, 0x52, 0x04, 0x54, 0x72, 0x78, 0x73, 0x12, 0x1c, 0x0a, 0x09, 0x54, 0x69, 0x6d, 0x65, 0x53, - 0x74, 0x61, 0x6d, 0x70, 0x18, 0x06, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x54, 0x69, 0x6d, 0x65, - 0x53, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x36, 0x0a, 0x09, 0x43, 0x6f, 0x6e, 0x73, 0x65, 0x6e, 0x73, - 0x75, 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x71, 0x75, 0x6f, 0x72, 0x75, - 0x6d, 0x2e, 0x70, 0x62, 0x2e, 0x43, 0x6f, 0x6e, 0x73, 0x65, 0x6e, 0x73, 0x75, 0x73, 0x49, 0x6e, - 0x66, 0x6f, 0x52, 0x09, 0x43, 0x6f, 0x6e, 0x73, 0x65, 0x6e, 0x73, 0x75, 0x73, 0x12, 0x1c, 0x0a, - 0x09, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x48, 0x61, 0x73, 0x68, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0c, - 0x52, 0x09, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x48, 0x61, 0x73, 0x68, 0x12, 0x22, 0x0a, 0x0c, 0x50, - 0x72, 0x6f, 0x64, 0x75, 0x63, 0x65, 0x72, 0x53, 0x69, 0x67, 0x6e, 0x18, 0x09, 0x20, 0x01, 0x28, - 0x0c, 0x52, 0x0c, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x65, 0x72, 0x53, 0x69, 0x67, 0x6e, 0x22, - 0x47, 0x0a, 0x06, 0x42, 0x66, 0x74, 0x4d, 0x73, 0x67, 0x12, 0x29, 0x0a, 0x04, 0x54, 0x79, 0x70, - 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x15, 0x2e, 0x71, 0x75, 0x6f, 0x72, 0x75, 0x6d, - 0x2e, 0x70, 0x62, 0x2e, 0x42, 0x66, 0x74, 0x4d, 0x73, 0x67, 0x54, 0x79, 0x70, 0x65, 0x52, 0x04, - 0x54, 0x79, 0x70, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x44, 0x61, 0x74, 0x61, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x0c, 0x52, 0x04, 0x44, 0x61, 0x74, 0x61, 0x22, 0x63, 0x0a, 0x07, 0x53, 0x79, 0x6e, 0x63, - 0x4d, 0x73, 0x67, 0x12, 0x18, 0x0a, 0x07, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x64, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x64, 0x12, 0x2a, 0x0a, - 0x04, 0x54, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x16, 0x2e, 0x71, 0x75, - 0x6f, 0x72, 0x75, 0x6d, 0x2e, 0x70, 0x62, 0x2e, 0x53, 0x79, 0x6e, 0x63, 0x4d, 0x73, 0x67, 0x54, - 0x79, 0x70, 0x65, 0x52, 0x04, 0x54, 0x79, 0x70, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x44, 0x61, 0x74, - 0x61, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x04, 0x44, 0x61, 0x74, 0x61, 0x22, 0xae, 0x01, - 0x0a, 0x08, 0x52, 0x65, 0x71, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x12, 0x18, 0x0a, 0x07, 0x47, 0x72, - 0x6f, 0x75, 0x70, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x47, 0x72, 0x6f, - 0x75, 0x70, 0x49, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x46, 0x72, 0x6f, 0x6d, 0x42, 0x6c, 0x6f, 0x63, - 0x6b, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x09, 0x46, 0x72, 0x6f, 0x6d, 0x42, 0x6c, 0x6f, - 0x63, 0x6b, 0x12, 0x24, 0x0a, 0x0d, 0x42, 0x6c, 0x6b, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x65, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0d, 0x42, 0x6c, 0x6b, 0x73, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x65, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x52, 0x65, 0x71, 0x50, - 0x75, 0x62, 0x6b, 0x65, 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x52, 0x65, 0x71, - 0x50, 0x75, 0x62, 0x6b, 0x65, 0x79, 0x12, 0x12, 0x0a, 0x04, 0x48, 0x61, 0x73, 0x68, 0x18, 0x05, - 0x20, 0x01, 0x28, 0x0c, 0x52, 0x04, 0x48, 0x61, 0x73, 0x68, 0x12, 0x12, 0x0a, 0x04, 0x53, 0x69, - 0x67, 0x6e, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x04, 0x53, 0x69, 0x67, 0x6e, 0x22, 0xec, - 0x02, 0x0a, 0x0c, 0x52, 0x65, 0x71, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x12, + 0x69, 0x6f, 0x6e, 0x12, 0x16, 0x0a, 0x06, 0x50, 0x75, 0x62, 0x6b, 0x65, 0x79, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x06, 0x50, 0x75, 0x62, 0x6b, 0x65, 0x79, 0x12, 0x26, 0x0a, 0x04, 0x54, + 0x79, 0x70, 0x65, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0e, 0x32, 0x12, 0x2e, 0x71, 0x75, 0x6f, 0x72, + 0x75, 0x6d, 0x2e, 0x70, 0x62, 0x2e, 0x54, 0x72, 0x78, 0x54, 0x79, 0x70, 0x65, 0x52, 0x04, 0x54, + 0x79, 0x70, 0x65, 0x22, 0x68, 0x0a, 0x12, 0x53, 0x65, 0x74, 0x54, 0x72, 0x78, 0x41, 0x75, 0x74, + 0x68, 0x4d, 0x6f, 0x64, 0x65, 0x49, 0x74, 0x65, 0x6d, 0x12, 0x26, 0x0a, 0x04, 0x54, 0x79, 0x70, + 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x12, 0x2e, 0x71, 0x75, 0x6f, 0x72, 0x75, 0x6d, + 0x2e, 0x70, 0x62, 0x2e, 0x54, 0x72, 0x78, 0x54, 0x79, 0x70, 0x65, 0x52, 0x04, 0x54, 0x79, 0x70, + 0x65, 0x12, 0x2a, 0x0a, 0x04, 0x4d, 0x6f, 0x64, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, + 0x16, 0x2e, 0x71, 0x75, 0x6f, 0x72, 0x75, 0x6d, 0x2e, 0x70, 0x62, 0x2e, 0x54, 0x72, 0x78, 0x41, + 0x75, 0x74, 0x68, 0x4d, 0x6f, 0x64, 0x65, 0x52, 0x04, 0x4d, 0x6f, 0x64, 0x65, 0x22, 0xa2, 0x02, + 0x0a, 0x0d, 0x41, 0x70, 0x70, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x49, 0x74, 0x65, 0x6d, 0x12, 0x18, 0x0a, 0x07, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x07, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x64, 0x12, 0x28, 0x0a, 0x0f, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x65, 0x72, 0x50, 0x75, 0x62, 0x6b, 0x65, 0x79, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x0f, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x65, 0x72, 0x50, 0x75, 0x62, - 0x6b, 0x65, 0x79, 0x12, 0x26, 0x0a, 0x0e, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x50, - 0x75, 0x62, 0x6b, 0x65, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x50, 0x72, 0x6f, - 0x76, 0x69, 0x64, 0x65, 0x72, 0x50, 0x75, 0x62, 0x6b, 0x65, 0x79, 0x12, 0x2f, 0x0a, 0x06, 0x52, - 0x65, 0x73, 0x75, 0x6c, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x17, 0x2e, 0x71, 0x75, - 0x6f, 0x72, 0x75, 0x6d, 0x2e, 0x70, 0x62, 0x2e, 0x52, 0x65, 0x71, 0x42, 0x6c, 0x6b, 0x52, 0x65, - 0x73, 0x75, 0x6c, 0x74, 0x52, 0x06, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x1c, 0x0a, 0x09, - 0x46, 0x72, 0x6f, 0x6d, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x18, 0x05, 0x20, 0x01, 0x28, 0x04, 0x52, - 0x09, 0x46, 0x72, 0x6f, 0x6d, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x12, 0x24, 0x0a, 0x0d, 0x42, 0x6c, - 0x6b, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x65, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, - 0x05, 0x52, 0x0d, 0x42, 0x6c, 0x6b, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x65, 0x64, - 0x12, 0x22, 0x0a, 0x0c, 0x42, 0x6c, 0x6b, 0x73, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x64, - 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, 0x42, 0x6c, 0x6b, 0x73, 0x50, 0x72, 0x6f, 0x76, - 0x69, 0x64, 0x65, 0x64, 0x12, 0x2f, 0x0a, 0x06, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x73, 0x18, 0x08, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x71, 0x75, 0x6f, 0x72, 0x75, 0x6d, 0x2e, 0x70, 0x62, - 0x2e, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x73, 0x42, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x52, 0x06, 0x42, - 0x6c, 0x6f, 0x63, 0x6b, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x48, 0x61, 0x73, 0x68, 0x18, 0x09, 0x20, - 0x01, 0x28, 0x0c, 0x52, 0x04, 0x48, 0x61, 0x73, 0x68, 0x12, 0x12, 0x0a, 0x04, 0x53, 0x69, 0x67, - 0x6e, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x04, 0x53, 0x69, 0x67, 0x6e, 0x22, 0x38, 0x0a, - 0x0c, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x73, 0x42, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x12, 0x28, 0x0a, - 0x06, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x10, 0x2e, - 0x71, 0x75, 0x6f, 0x72, 0x75, 0x6d, 0x2e, 0x70, 0x62, 0x2e, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x52, - 0x06, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x73, 0x22, 0x50, 0x0a, 0x0c, 0x42, 0x72, 0x6f, 0x61, 0x64, - 0x63, 0x61, 0x73, 0x74, 0x4d, 0x73, 0x67, 0x12, 0x2c, 0x0a, 0x04, 0x54, 0x79, 0x70, 0x65, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x18, 0x2e, 0x71, 0x75, 0x6f, 0x72, 0x75, 0x6d, 0x2e, 0x70, - 0x62, 0x2e, 0x42, 0x72, 0x6f, 0x61, 0x64, 0x63, 0x61, 0x73, 0x74, 0x54, 0x79, 0x70, 0x65, 0x52, - 0x04, 0x54, 0x79, 0x70, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x44, 0x61, 0x74, 0x61, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x0c, 0x52, 0x04, 0x44, 0x61, 0x74, 0x61, 0x22, 0xc8, 0x03, 0x0a, 0x09, 0x47, 0x72, - 0x6f, 0x75, 0x70, 0x49, 0x74, 0x65, 0x6d, 0x12, 0x18, 0x0a, 0x07, 0x47, 0x72, 0x6f, 0x75, 0x70, - 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x49, - 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x4e, 0x61, 0x6d, 0x65, 0x12, - 0x20, 0x0a, 0x0b, 0x4f, 0x77, 0x6e, 0x65, 0x72, 0x50, 0x75, 0x62, 0x4b, 0x65, 0x79, 0x18, 0x03, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x4f, 0x77, 0x6e, 0x65, 0x72, 0x50, 0x75, 0x62, 0x4b, 0x65, - 0x79, 0x12, 0x26, 0x0a, 0x0e, 0x55, 0x73, 0x65, 0x72, 0x53, 0x69, 0x67, 0x6e, 0x50, 0x75, 0x62, - 0x6b, 0x65, 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x55, 0x73, 0x65, 0x72, 0x53, - 0x69, 0x67, 0x6e, 0x50, 0x75, 0x62, 0x6b, 0x65, 0x79, 0x12, 0x2c, 0x0a, 0x11, 0x55, 0x73, 0x65, - 0x72, 0x45, 0x6e, 0x63, 0x72, 0x79, 0x70, 0x74, 0x50, 0x75, 0x62, 0x6b, 0x65, 0x79, 0x18, 0x05, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x11, 0x55, 0x73, 0x65, 0x72, 0x45, 0x6e, 0x63, 0x72, 0x79, 0x70, - 0x74, 0x50, 0x75, 0x62, 0x6b, 0x65, 0x79, 0x12, 0x1e, 0x0a, 0x0a, 0x4c, 0x61, 0x73, 0x74, 0x55, - 0x70, 0x64, 0x61, 0x74, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x4c, 0x61, 0x73, - 0x74, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x12, 0x34, 0x0a, 0x0c, 0x47, 0x65, 0x6e, 0x65, 0x73, - 0x69, 0x73, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x10, 0x2e, - 0x71, 0x75, 0x6f, 0x72, 0x75, 0x6d, 0x2e, 0x70, 0x62, 0x2e, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x52, - 0x0c, 0x47, 0x65, 0x6e, 0x65, 0x73, 0x69, 0x73, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x12, 0x3d, 0x0a, - 0x0b, 0x45, 0x6e, 0x63, 0x72, 0x79, 0x70, 0x74, 0x54, 0x79, 0x70, 0x65, 0x18, 0x08, 0x20, 0x01, - 0x28, 0x0e, 0x32, 0x1b, 0x2e, 0x71, 0x75, 0x6f, 0x72, 0x75, 0x6d, 0x2e, 0x70, 0x62, 0x2e, 0x47, - 0x72, 0x6f, 0x75, 0x70, 0x45, 0x6e, 0x63, 0x72, 0x79, 0x70, 0x74, 0x54, 0x79, 0x70, 0x65, 0x52, - 0x0b, 0x45, 0x6e, 0x63, 0x72, 0x79, 0x70, 0x74, 0x54, 0x79, 0x70, 0x65, 0x12, 0x40, 0x0a, 0x0c, - 0x43, 0x6f, 0x6e, 0x73, 0x65, 0x6e, 0x73, 0x65, 0x54, 0x79, 0x70, 0x65, 0x18, 0x09, 0x20, 0x01, - 0x28, 0x0e, 0x32, 0x1c, 0x2e, 0x71, 0x75, 0x6f, 0x72, 0x75, 0x6d, 0x2e, 0x70, 0x62, 0x2e, 0x47, - 0x72, 0x6f, 0x75, 0x70, 0x43, 0x6f, 0x6e, 0x73, 0x65, 0x6e, 0x73, 0x65, 0x54, 0x79, 0x70, 0x65, - 0x52, 0x0c, 0x43, 0x6f, 0x6e, 0x73, 0x65, 0x6e, 0x73, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1c, - 0x0a, 0x09, 0x43, 0x69, 0x70, 0x68, 0x65, 0x72, 0x4b, 0x65, 0x79, 0x18, 0x0a, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x09, 0x43, 0x69, 0x70, 0x68, 0x65, 0x72, 0x4b, 0x65, 0x79, 0x12, 0x16, 0x0a, 0x06, - 0x41, 0x70, 0x70, 0x4b, 0x65, 0x79, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x41, 0x70, - 0x70, 0x4b, 0x65, 0x79, 0x22, 0xbd, 0x02, 0x0a, 0x09, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x53, 0x65, - 0x65, 0x64, 0x12, 0x34, 0x0a, 0x0c, 0x47, 0x65, 0x6e, 0x65, 0x73, 0x69, 0x73, 0x42, 0x6c, 0x6f, - 0x63, 0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x71, 0x75, 0x6f, 0x72, 0x75, - 0x6d, 0x2e, 0x70, 0x62, 0x2e, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x52, 0x0c, 0x47, 0x65, 0x6e, 0x65, - 0x73, 0x69, 0x73, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x12, 0x18, 0x0a, 0x07, 0x47, 0x72, 0x6f, 0x75, - 0x70, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x47, 0x72, 0x6f, 0x75, 0x70, - 0x49, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x4e, 0x61, 0x6d, 0x65, 0x18, - 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x4e, 0x61, 0x6d, 0x65, + 0x52, 0x07, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x64, 0x12, 0x2d, 0x0a, 0x06, 0x41, 0x63, 0x74, + 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x15, 0x2e, 0x71, 0x75, 0x6f, 0x72, + 0x75, 0x6d, 0x2e, 0x70, 0x62, 0x2e, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, + 0x52, 0x06, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x12, 0x0a, 0x04, 0x4e, 0x61, 0x6d, 0x65, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x2c, 0x0a, 0x04, + 0x54, 0x79, 0x70, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x18, 0x2e, 0x71, 0x75, 0x6f, + 0x72, 0x75, 0x6d, 0x2e, 0x70, 0x62, 0x2e, 0x41, 0x70, 0x70, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, + 0x54, 0x79, 0x70, 0x65, 0x52, 0x04, 0x54, 0x79, 0x70, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x56, 0x61, + 0x6c, 0x75, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x4f, 0x77, 0x6e, 0x65, 0x72, 0x50, 0x75, 0x62, 0x6b, 0x65, 0x79, 0x18, - 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x4f, 0x77, 0x6e, 0x65, 0x72, 0x50, 0x75, 0x62, 0x6b, - 0x65, 0x79, 0x12, 0x24, 0x0a, 0x0d, 0x43, 0x6f, 0x6e, 0x73, 0x65, 0x6e, 0x73, 0x75, 0x73, 0x54, - 0x79, 0x70, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x43, 0x6f, 0x6e, 0x73, 0x65, - 0x6e, 0x73, 0x75, 0x73, 0x54, 0x79, 0x70, 0x65, 0x12, 0x26, 0x0a, 0x0e, 0x45, 0x6e, 0x63, 0x72, - 0x79, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x0e, 0x45, 0x6e, 0x63, 0x72, 0x79, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, - 0x12, 0x1c, 0x0a, 0x09, 0x43, 0x69, 0x70, 0x68, 0x65, 0x72, 0x4b, 0x65, 0x79, 0x18, 0x07, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x09, 0x43, 0x69, 0x70, 0x68, 0x65, 0x72, 0x4b, 0x65, 0x79, 0x12, 0x16, - 0x0a, 0x06, 0x41, 0x70, 0x70, 0x4b, 0x65, 0x79, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, - 0x41, 0x70, 0x70, 0x4b, 0x65, 0x79, 0x12, 0x1c, 0x0a, 0x09, 0x53, 0x69, 0x67, 0x6e, 0x61, 0x74, - 0x75, 0x72, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x53, 0x69, 0x67, 0x6e, 0x61, - 0x74, 0x75, 0x72, 0x65, 0x22, 0xb6, 0x01, 0x0a, 0x10, 0x4e, 0x6f, 0x64, 0x65, 0x53, 0x44, 0x4b, - 0x47, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x74, 0x65, 0x6d, 0x12, 0x2a, 0x0a, 0x05, 0x47, 0x72, 0x6f, - 0x75, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x71, 0x75, 0x6f, 0x72, 0x75, - 0x6d, 0x2e, 0x70, 0x62, 0x2e, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x74, 0x65, 0x6d, 0x52, 0x05, - 0x47, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x22, 0x0a, 0x0c, 0x45, 0x6e, 0x63, 0x72, 0x79, 0x70, 0x74, - 0x41, 0x6c, 0x69, 0x61, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x45, 0x6e, 0x63, - 0x72, 0x79, 0x70, 0x74, 0x41, 0x6c, 0x69, 0x61, 0x73, 0x12, 0x1c, 0x0a, 0x09, 0x53, 0x69, 0x67, - 0x6e, 0x41, 0x6c, 0x69, 0x61, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x53, 0x69, - 0x67, 0x6e, 0x41, 0x6c, 0x69, 0x61, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x41, 0x70, 0x69, 0x55, 0x72, - 0x6c, 0x18, 0x04, 0x20, 0x03, 0x28, 0x09, 0x52, 0x06, 0x41, 0x70, 0x69, 0x55, 0x72, 0x6c, 0x12, - 0x1c, 0x0a, 0x09, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x53, 0x65, 0x65, 0x64, 0x18, 0x05, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x09, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x53, 0x65, 0x65, 0x64, 0x22, 0x31, 0x0a, - 0x0b, 0x48, 0x42, 0x54, 0x72, 0x78, 0x42, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x12, 0x22, 0x0a, 0x04, - 0x54, 0x72, 0x78, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x71, 0x75, 0x6f, + 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x4f, 0x77, 0x6e, 0x65, 0x72, 0x50, 0x75, 0x62, 0x6b, + 0x65, 0x79, 0x12, 0x1c, 0x0a, 0x09, 0x4f, 0x77, 0x6e, 0x65, 0x72, 0x53, 0x69, 0x67, 0x6e, 0x18, + 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x4f, 0x77, 0x6e, 0x65, 0x72, 0x53, 0x69, 0x67, 0x6e, + 0x12, 0x12, 0x0a, 0x04, 0x4d, 0x65, 0x6d, 0x6f, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, + 0x4d, 0x65, 0x6d, 0x6f, 0x12, 0x1c, 0x0a, 0x09, 0x54, 0x69, 0x6d, 0x65, 0x53, 0x74, 0x61, 0x6d, + 0x70, 0x18, 0x09, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x54, 0x69, 0x6d, 0x65, 0x53, 0x74, 0x61, + 0x6d, 0x70, 0x22, 0x89, 0x01, 0x0a, 0x0d, 0x43, 0x6f, 0x6e, 0x73, 0x65, 0x6e, 0x73, 0x75, 0x73, + 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x20, 0x0a, 0x0b, 0x43, 0x6f, 0x6e, 0x73, 0x65, 0x6e, 0x73, 0x75, + 0x73, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x43, 0x6f, 0x6e, 0x73, 0x65, + 0x6e, 0x73, 0x75, 0x73, 0x49, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x43, 0x68, 0x61, 0x69, 0x6e, 0x56, + 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x08, 0x43, 0x68, 0x61, 0x69, 0x6e, 0x56, + 0x65, 0x72, 0x12, 0x14, 0x0a, 0x05, 0x49, 0x6e, 0x54, 0x72, 0x78, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x05, 0x49, 0x6e, 0x54, 0x72, 0x78, 0x12, 0x24, 0x0a, 0x0d, 0x46, 0x6f, 0x72, 0x6b, + 0x46, 0x72, 0x6f, 0x6d, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x18, 0x04, 0x20, 0x01, 0x28, 0x04, 0x52, + 0x0d, 0x46, 0x6f, 0x72, 0x6b, 0x46, 0x72, 0x6f, 0x6d, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x22, 0x84, + 0x02, 0x0a, 0x08, 0x46, 0x6f, 0x72, 0x6b, 0x49, 0x74, 0x65, 0x6d, 0x12, 0x18, 0x0a, 0x07, 0x47, + 0x72, 0x6f, 0x75, 0x70, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x47, 0x72, + 0x6f, 0x75, 0x70, 0x49, 0x64, 0x12, 0x36, 0x0a, 0x09, 0x43, 0x6f, 0x6e, 0x73, 0x65, 0x6e, 0x73, + 0x75, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x71, 0x75, 0x6f, 0x72, 0x75, + 0x6d, 0x2e, 0x70, 0x62, 0x2e, 0x43, 0x6f, 0x6e, 0x73, 0x65, 0x6e, 0x73, 0x75, 0x73, 0x49, 0x6e, + 0x66, 0x6f, 0x52, 0x09, 0x43, 0x6f, 0x6e, 0x73, 0x65, 0x6e, 0x73, 0x75, 0x73, 0x12, 0x26, 0x0a, + 0x0e, 0x53, 0x74, 0x61, 0x72, 0x74, 0x46, 0x72, 0x6f, 0x6d, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0e, 0x53, 0x74, 0x61, 0x72, 0x74, 0x46, 0x72, 0x6f, 0x6d, + 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x12, 0x26, 0x0a, 0x0e, 0x53, 0x74, 0x61, 0x72, 0x74, 0x46, 0x72, + 0x6f, 0x6d, 0x45, 0x70, 0x6f, 0x63, 0x68, 0x18, 0x04, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0e, 0x53, + 0x74, 0x61, 0x72, 0x74, 0x46, 0x72, 0x6f, 0x6d, 0x45, 0x70, 0x6f, 0x63, 0x68, 0x12, 0x24, 0x0a, + 0x0d, 0x45, 0x70, 0x6f, 0x63, 0x68, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x05, + 0x20, 0x01, 0x28, 0x04, 0x52, 0x0d, 0x45, 0x70, 0x6f, 0x63, 0x68, 0x44, 0x75, 0x72, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x12, 0x1c, 0x0a, 0x09, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x65, 0x72, 0x73, + 0x18, 0x06, 0x20, 0x03, 0x28, 0x09, 0x52, 0x09, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x65, 0x72, + 0x73, 0x12, 0x12, 0x0a, 0x04, 0x4d, 0x65, 0x6d, 0x6f, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x04, 0x4d, 0x65, 0x6d, 0x6f, 0x22, 0xe2, 0x02, 0x0a, 0x03, 0x54, 0x72, 0x78, 0x12, 0x14, 0x0a, + 0x05, 0x54, 0x72, 0x78, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x54, 0x72, + 0x78, 0x49, 0x64, 0x12, 0x26, 0x0a, 0x04, 0x54, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x0e, 0x32, 0x12, 0x2e, 0x71, 0x75, 0x6f, 0x72, 0x75, 0x6d, 0x2e, 0x70, 0x62, 0x2e, 0x54, 0x72, + 0x78, 0x54, 0x79, 0x70, 0x65, 0x52, 0x04, 0x54, 0x79, 0x70, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x47, + 0x72, 0x6f, 0x75, 0x70, 0x49, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x47, 0x72, + 0x6f, 0x75, 0x70, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x44, 0x61, 0x74, 0x61, 0x18, 0x04, 0x20, + 0x01, 0x28, 0x0c, 0x52, 0x04, 0x44, 0x61, 0x74, 0x61, 0x12, 0x1c, 0x0a, 0x09, 0x54, 0x69, 0x6d, + 0x65, 0x53, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x05, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x54, 0x69, + 0x6d, 0x65, 0x53, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x18, 0x0a, 0x07, 0x56, 0x65, 0x72, 0x73, 0x69, + 0x6f, 0x6e, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, + 0x6e, 0x12, 0x20, 0x0a, 0x0b, 0x52, 0x65, 0x73, 0x65, 0x6e, 0x64, 0x43, 0x6f, 0x75, 0x6e, 0x74, + 0x18, 0x07, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0b, 0x52, 0x65, 0x73, 0x65, 0x6e, 0x64, 0x43, 0x6f, + 0x75, 0x6e, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x4e, 0x6f, 0x6e, 0x63, 0x65, 0x18, 0x08, 0x20, 0x01, + 0x28, 0x03, 0x52, 0x05, 0x4e, 0x6f, 0x6e, 0x63, 0x65, 0x12, 0x22, 0x0a, 0x0c, 0x53, 0x65, 0x6e, + 0x64, 0x65, 0x72, 0x50, 0x75, 0x62, 0x6b, 0x65, 0x79, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x0c, 0x53, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x50, 0x75, 0x62, 0x6b, 0x65, 0x79, 0x12, 0x1e, 0x0a, + 0x0a, 0x53, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x53, 0x69, 0x67, 0x6e, 0x18, 0x0a, 0x20, 0x01, 0x28, + 0x0c, 0x52, 0x0a, 0x53, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x53, 0x69, 0x67, 0x6e, 0x12, 0x3b, 0x0a, + 0x0b, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x54, 0x79, 0x70, 0x65, 0x18, 0x0b, 0x20, 0x01, + 0x28, 0x0e, 0x32, 0x19, 0x2e, 0x71, 0x75, 0x6f, 0x72, 0x75, 0x6d, 0x2e, 0x70, 0x62, 0x2e, 0x54, + 0x72, 0x78, 0x53, 0x74, 0x72, 0x6f, 0x61, 0x67, 0x65, 0x54, 0x79, 0x70, 0x65, 0x52, 0x0b, 0x53, + 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x54, 0x79, 0x70, 0x65, 0x22, 0xbb, 0x02, 0x0a, 0x05, 0x42, + 0x6c, 0x6f, 0x63, 0x6b, 0x12, 0x18, 0x0a, 0x07, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x64, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x64, 0x12, 0x18, + 0x0a, 0x07, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, + 0x07, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x49, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x50, 0x72, 0x65, 0x76, + 0x48, 0x61, 0x73, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x08, 0x50, 0x72, 0x65, 0x76, + 0x48, 0x61, 0x73, 0x68, 0x12, 0x26, 0x0a, 0x0e, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x65, 0x72, + 0x50, 0x75, 0x62, 0x6b, 0x65, 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x50, 0x72, + 0x6f, 0x64, 0x75, 0x63, 0x65, 0x72, 0x50, 0x75, 0x62, 0x6b, 0x65, 0x79, 0x12, 0x22, 0x0a, 0x04, + 0x54, 0x72, 0x78, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x71, 0x75, 0x6f, 0x72, 0x75, 0x6d, 0x2e, 0x70, 0x62, 0x2e, 0x54, 0x72, 0x78, 0x52, 0x04, 0x54, 0x72, 0x78, 0x73, - 0x22, 0xa8, 0x01, 0x0a, 0x07, 0x48, 0x42, 0x4d, 0x73, 0x67, 0x76, 0x31, 0x12, 0x14, 0x0a, 0x05, - 0x4d, 0x73, 0x67, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x4d, 0x73, 0x67, - 0x49, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x53, 0x63, 0x6f, 0x70, 0x65, 0x49, 0x64, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x07, 0x53, 0x63, 0x6f, 0x70, 0x65, 0x49, 0x64, 0x12, 0x14, 0x0a, 0x05, - 0x45, 0x70, 0x6f, 0x63, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x52, 0x05, 0x45, 0x70, 0x6f, - 0x63, 0x68, 0x12, 0x3d, 0x0a, 0x0b, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x54, 0x79, 0x70, - 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1b, 0x2e, 0x71, 0x75, 0x6f, 0x72, 0x75, 0x6d, - 0x2e, 0x70, 0x62, 0x2e, 0x48, 0x42, 0x4d, 0x73, 0x67, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, - 0x54, 0x79, 0x70, 0x65, 0x52, 0x0b, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x54, 0x79, 0x70, - 0x65, 0x12, 0x18, 0x0a, 0x07, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x18, 0x05, 0x20, 0x01, - 0x28, 0x0c, 0x52, 0x07, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x22, 0x4d, 0x0a, 0x06, 0x52, - 0x42, 0x43, 0x4d, 0x73, 0x67, 0x12, 0x29, 0x0a, 0x04, 0x54, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x0e, 0x32, 0x15, 0x2e, 0x71, 0x75, 0x6f, 0x72, 0x75, 0x6d, 0x2e, 0x70, 0x62, 0x2e, - 0x52, 0x42, 0x43, 0x4d, 0x73, 0x67, 0x54, 0x79, 0x70, 0x65, 0x52, 0x04, 0x54, 0x79, 0x70, 0x65, - 0x12, 0x18, 0x0a, 0x07, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x0c, 0x52, 0x07, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x22, 0x8d, 0x02, 0x0a, 0x0b, 0x49, - 0x6e, 0x69, 0x74, 0x50, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x52, 0x6f, - 0x6f, 0x74, 0x48, 0x61, 0x73, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x08, 0x52, 0x6f, - 0x6f, 0x74, 0x48, 0x61, 0x73, 0x68, 0x12, 0x14, 0x0a, 0x05, 0x50, 0x72, 0x6f, 0x6f, 0x66, 0x18, - 0x02, 0x20, 0x03, 0x28, 0x0c, 0x52, 0x05, 0x50, 0x72, 0x6f, 0x6f, 0x66, 0x12, 0x14, 0x0a, 0x05, - 0x49, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x49, 0x6e, 0x64, - 0x65, 0x78, 0x12, 0x16, 0x0a, 0x06, 0x4c, 0x65, 0x61, 0x76, 0x65, 0x73, 0x18, 0x04, 0x20, 0x01, - 0x28, 0x03, 0x52, 0x06, 0x4c, 0x65, 0x61, 0x76, 0x65, 0x73, 0x12, 0x2a, 0x0a, 0x10, 0x4f, 0x72, - 0x69, 0x67, 0x69, 0x6e, 0x61, 0x6c, 0x44, 0x61, 0x74, 0x61, 0x53, 0x69, 0x7a, 0x65, 0x18, 0x05, - 0x20, 0x01, 0x28, 0x03, 0x52, 0x10, 0x4f, 0x72, 0x69, 0x67, 0x69, 0x6e, 0x61, 0x6c, 0x44, 0x61, - 0x74, 0x61, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x26, 0x0a, 0x0e, 0x52, 0x65, 0x63, 0x76, 0x4e, 0x6f, - 0x64, 0x65, 0x50, 0x75, 0x62, 0x6b, 0x65, 0x79, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, - 0x52, 0x65, 0x63, 0x76, 0x4e, 0x6f, 0x64, 0x65, 0x50, 0x75, 0x62, 0x6b, 0x65, 0x79, 0x12, 0x26, - 0x0a, 0x0e, 0x50, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x65, 0x72, 0x50, 0x75, 0x62, 0x6b, 0x65, 0x79, - 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x50, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x65, 0x72, - 0x50, 0x75, 0x62, 0x6b, 0x65, 0x79, 0x12, 0x22, 0x0a, 0x0c, 0x50, 0x72, 0x6f, 0x70, 0x6f, 0x73, - 0x65, 0x72, 0x53, 0x69, 0x67, 0x6e, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0c, 0x50, 0x72, - 0x6f, 0x70, 0x6f, 0x73, 0x65, 0x72, 0x53, 0x69, 0x67, 0x6e, 0x22, 0xa6, 0x02, 0x0a, 0x04, 0x45, - 0x63, 0x68, 0x6f, 0x12, 0x1a, 0x0a, 0x08, 0x52, 0x6f, 0x6f, 0x74, 0x48, 0x61, 0x73, 0x68, 0x18, + 0x12, 0x1c, 0x0a, 0x09, 0x54, 0x69, 0x6d, 0x65, 0x53, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x06, 0x20, + 0x01, 0x28, 0x03, 0x52, 0x09, 0x54, 0x69, 0x6d, 0x65, 0x53, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x36, + 0x0a, 0x09, 0x43, 0x6f, 0x6e, 0x73, 0x65, 0x6e, 0x73, 0x75, 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x18, 0x2e, 0x71, 0x75, 0x6f, 0x72, 0x75, 0x6d, 0x2e, 0x70, 0x62, 0x2e, 0x43, 0x6f, + 0x6e, 0x73, 0x65, 0x6e, 0x73, 0x75, 0x73, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x09, 0x43, 0x6f, 0x6e, + 0x73, 0x65, 0x6e, 0x73, 0x75, 0x73, 0x12, 0x1c, 0x0a, 0x09, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x48, + 0x61, 0x73, 0x68, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x09, 0x42, 0x6c, 0x6f, 0x63, 0x6b, + 0x48, 0x61, 0x73, 0x68, 0x12, 0x22, 0x0a, 0x0c, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x65, 0x72, + 0x53, 0x69, 0x67, 0x6e, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0c, 0x50, 0x72, 0x6f, 0x64, + 0x75, 0x63, 0x65, 0x72, 0x53, 0x69, 0x67, 0x6e, 0x22, 0x47, 0x0a, 0x06, 0x42, 0x66, 0x74, 0x4d, + 0x73, 0x67, 0x12, 0x29, 0x0a, 0x04, 0x54, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, + 0x32, 0x15, 0x2e, 0x71, 0x75, 0x6f, 0x72, 0x75, 0x6d, 0x2e, 0x70, 0x62, 0x2e, 0x42, 0x66, 0x74, + 0x4d, 0x73, 0x67, 0x54, 0x79, 0x70, 0x65, 0x52, 0x04, 0x54, 0x79, 0x70, 0x65, 0x12, 0x12, 0x0a, + 0x04, 0x44, 0x61, 0x74, 0x61, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x04, 0x44, 0x61, 0x74, + 0x61, 0x22, 0x63, 0x0a, 0x07, 0x53, 0x79, 0x6e, 0x63, 0x4d, 0x73, 0x67, 0x12, 0x18, 0x0a, 0x07, + 0x47, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x47, + 0x72, 0x6f, 0x75, 0x70, 0x49, 0x64, 0x12, 0x2a, 0x0a, 0x04, 0x54, 0x79, 0x70, 0x65, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x0e, 0x32, 0x16, 0x2e, 0x71, 0x75, 0x6f, 0x72, 0x75, 0x6d, 0x2e, 0x70, 0x62, + 0x2e, 0x53, 0x79, 0x6e, 0x63, 0x4d, 0x73, 0x67, 0x54, 0x79, 0x70, 0x65, 0x52, 0x04, 0x54, 0x79, + 0x70, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x44, 0x61, 0x74, 0x61, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0c, + 0x52, 0x04, 0x44, 0x61, 0x74, 0x61, 0x22, 0xae, 0x01, 0x0a, 0x08, 0x52, 0x65, 0x71, 0x42, 0x6c, + 0x6f, 0x63, 0x6b, 0x12, 0x18, 0x0a, 0x07, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x64, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x64, 0x12, 0x1c, 0x0a, + 0x09, 0x46, 0x72, 0x6f, 0x6d, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, + 0x52, 0x09, 0x46, 0x72, 0x6f, 0x6d, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x12, 0x24, 0x0a, 0x0d, 0x42, + 0x6c, 0x6b, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x65, 0x64, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x05, 0x52, 0x0d, 0x42, 0x6c, 0x6b, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x65, + 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x52, 0x65, 0x71, 0x50, 0x75, 0x62, 0x6b, 0x65, 0x79, 0x18, 0x04, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x52, 0x65, 0x71, 0x50, 0x75, 0x62, 0x6b, 0x65, 0x79, 0x12, + 0x12, 0x0a, 0x04, 0x48, 0x61, 0x73, 0x68, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x04, 0x48, + 0x61, 0x73, 0x68, 0x12, 0x12, 0x0a, 0x04, 0x53, 0x69, 0x67, 0x6e, 0x18, 0x06, 0x20, 0x01, 0x28, + 0x0c, 0x52, 0x04, 0x53, 0x69, 0x67, 0x6e, 0x22, 0xec, 0x02, 0x0a, 0x0c, 0x52, 0x65, 0x71, 0x42, + 0x6c, 0x6f, 0x63, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x12, 0x18, 0x0a, 0x07, 0x47, 0x72, 0x6f, 0x75, + 0x70, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x47, 0x72, 0x6f, 0x75, 0x70, + 0x49, 0x64, 0x12, 0x28, 0x0a, 0x0f, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x65, 0x72, 0x50, + 0x75, 0x62, 0x6b, 0x65, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x65, 0x72, 0x50, 0x75, 0x62, 0x6b, 0x65, 0x79, 0x12, 0x26, 0x0a, 0x0e, + 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x50, 0x75, 0x62, 0x6b, 0x65, 0x79, 0x18, 0x03, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x50, 0x75, + 0x62, 0x6b, 0x65, 0x79, 0x12, 0x2f, 0x0a, 0x06, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x18, 0x04, + 0x20, 0x01, 0x28, 0x0e, 0x32, 0x17, 0x2e, 0x71, 0x75, 0x6f, 0x72, 0x75, 0x6d, 0x2e, 0x70, 0x62, + 0x2e, 0x52, 0x65, 0x71, 0x42, 0x6c, 0x6b, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x52, 0x06, 0x52, + 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x46, 0x72, 0x6f, 0x6d, 0x42, 0x6c, 0x6f, + 0x63, 0x6b, 0x18, 0x05, 0x20, 0x01, 0x28, 0x04, 0x52, 0x09, 0x46, 0x72, 0x6f, 0x6d, 0x42, 0x6c, + 0x6f, 0x63, 0x6b, 0x12, 0x24, 0x0a, 0x0d, 0x42, 0x6c, 0x6b, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x65, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0d, 0x42, 0x6c, 0x6b, 0x73, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x65, 0x64, 0x12, 0x22, 0x0a, 0x0c, 0x42, 0x6c, 0x6b, + 0x73, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x64, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, + 0x0c, 0x42, 0x6c, 0x6b, 0x73, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x64, 0x12, 0x2f, 0x0a, + 0x06, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x73, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, + 0x71, 0x75, 0x6f, 0x72, 0x75, 0x6d, 0x2e, 0x70, 0x62, 0x2e, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x73, + 0x42, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x52, 0x06, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x73, 0x12, 0x12, + 0x0a, 0x04, 0x48, 0x61, 0x73, 0x68, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x04, 0x48, 0x61, + 0x73, 0x68, 0x12, 0x12, 0x0a, 0x04, 0x53, 0x69, 0x67, 0x6e, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0c, + 0x52, 0x04, 0x53, 0x69, 0x67, 0x6e, 0x22, 0x38, 0x0a, 0x0c, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x73, + 0x42, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x12, 0x28, 0x0a, 0x06, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x73, + 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x71, 0x75, 0x6f, 0x72, 0x75, 0x6d, 0x2e, + 0x70, 0x62, 0x2e, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x52, 0x06, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x73, + 0x22, 0x50, 0x0a, 0x0c, 0x42, 0x72, 0x6f, 0x61, 0x64, 0x63, 0x61, 0x73, 0x74, 0x4d, 0x73, 0x67, + 0x12, 0x2c, 0x0a, 0x04, 0x54, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x18, + 0x2e, 0x71, 0x75, 0x6f, 0x72, 0x75, 0x6d, 0x2e, 0x70, 0x62, 0x2e, 0x42, 0x72, 0x6f, 0x61, 0x64, + 0x63, 0x61, 0x73, 0x74, 0x54, 0x79, 0x70, 0x65, 0x52, 0x04, 0x54, 0x79, 0x70, 0x65, 0x12, 0x12, + 0x0a, 0x04, 0x44, 0x61, 0x74, 0x61, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x04, 0x44, 0x61, + 0x74, 0x61, 0x22, 0xc8, 0x03, 0x0a, 0x09, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x74, 0x65, 0x6d, + 0x12, 0x18, 0x0a, 0x07, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x07, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x47, 0x72, + 0x6f, 0x75, 0x70, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x47, + 0x72, 0x6f, 0x75, 0x70, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x4f, 0x77, 0x6e, 0x65, + 0x72, 0x50, 0x75, 0x62, 0x4b, 0x65, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x4f, + 0x77, 0x6e, 0x65, 0x72, 0x50, 0x75, 0x62, 0x4b, 0x65, 0x79, 0x12, 0x26, 0x0a, 0x0e, 0x55, 0x73, + 0x65, 0x72, 0x53, 0x69, 0x67, 0x6e, 0x50, 0x75, 0x62, 0x6b, 0x65, 0x79, 0x18, 0x04, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x0e, 0x55, 0x73, 0x65, 0x72, 0x53, 0x69, 0x67, 0x6e, 0x50, 0x75, 0x62, 0x6b, + 0x65, 0x79, 0x12, 0x2c, 0x0a, 0x11, 0x55, 0x73, 0x65, 0x72, 0x45, 0x6e, 0x63, 0x72, 0x79, 0x70, + 0x74, 0x50, 0x75, 0x62, 0x6b, 0x65, 0x79, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x11, 0x55, + 0x73, 0x65, 0x72, 0x45, 0x6e, 0x63, 0x72, 0x79, 0x70, 0x74, 0x50, 0x75, 0x62, 0x6b, 0x65, 0x79, + 0x12, 0x1e, 0x0a, 0x0a, 0x4c, 0x61, 0x73, 0x74, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x18, 0x06, + 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x4c, 0x61, 0x73, 0x74, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, + 0x12, 0x34, 0x0a, 0x0c, 0x47, 0x65, 0x6e, 0x65, 0x73, 0x69, 0x73, 0x42, 0x6c, 0x6f, 0x63, 0x6b, + 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x71, 0x75, 0x6f, 0x72, 0x75, 0x6d, 0x2e, + 0x70, 0x62, 0x2e, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x52, 0x0c, 0x47, 0x65, 0x6e, 0x65, 0x73, 0x69, + 0x73, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x12, 0x3d, 0x0a, 0x0b, 0x45, 0x6e, 0x63, 0x72, 0x79, 0x70, + 0x74, 0x54, 0x79, 0x70, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1b, 0x2e, 0x71, 0x75, + 0x6f, 0x72, 0x75, 0x6d, 0x2e, 0x70, 0x62, 0x2e, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x45, 0x6e, 0x63, + 0x72, 0x79, 0x70, 0x74, 0x54, 0x79, 0x70, 0x65, 0x52, 0x0b, 0x45, 0x6e, 0x63, 0x72, 0x79, 0x70, + 0x74, 0x54, 0x79, 0x70, 0x65, 0x12, 0x40, 0x0a, 0x0c, 0x43, 0x6f, 0x6e, 0x73, 0x65, 0x6e, 0x73, + 0x65, 0x54, 0x79, 0x70, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1c, 0x2e, 0x71, 0x75, + 0x6f, 0x72, 0x75, 0x6d, 0x2e, 0x70, 0x62, 0x2e, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x43, 0x6f, 0x6e, + 0x73, 0x65, 0x6e, 0x73, 0x65, 0x54, 0x79, 0x70, 0x65, 0x52, 0x0c, 0x43, 0x6f, 0x6e, 0x73, 0x65, + 0x6e, 0x73, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x43, 0x69, 0x70, 0x68, 0x65, + 0x72, 0x4b, 0x65, 0x79, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x43, 0x69, 0x70, 0x68, + 0x65, 0x72, 0x4b, 0x65, 0x79, 0x12, 0x16, 0x0a, 0x06, 0x41, 0x70, 0x70, 0x4b, 0x65, 0x79, 0x18, + 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x41, 0x70, 0x70, 0x4b, 0x65, 0x79, 0x22, 0xbd, 0x02, + 0x0a, 0x09, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x53, 0x65, 0x65, 0x64, 0x12, 0x34, 0x0a, 0x0c, 0x47, + 0x65, 0x6e, 0x65, 0x73, 0x69, 0x73, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x10, 0x2e, 0x71, 0x75, 0x6f, 0x72, 0x75, 0x6d, 0x2e, 0x70, 0x62, 0x2e, 0x42, 0x6c, + 0x6f, 0x63, 0x6b, 0x52, 0x0c, 0x47, 0x65, 0x6e, 0x65, 0x73, 0x69, 0x73, 0x42, 0x6c, 0x6f, 0x63, + 0x6b, 0x12, 0x18, 0x0a, 0x07, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x07, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x47, + 0x72, 0x6f, 0x75, 0x70, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, + 0x47, 0x72, 0x6f, 0x75, 0x70, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x4f, 0x77, 0x6e, + 0x65, 0x72, 0x50, 0x75, 0x62, 0x6b, 0x65, 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, + 0x4f, 0x77, 0x6e, 0x65, 0x72, 0x50, 0x75, 0x62, 0x6b, 0x65, 0x79, 0x12, 0x24, 0x0a, 0x0d, 0x43, + 0x6f, 0x6e, 0x73, 0x65, 0x6e, 0x73, 0x75, 0x73, 0x54, 0x79, 0x70, 0x65, 0x18, 0x05, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x0d, 0x43, 0x6f, 0x6e, 0x73, 0x65, 0x6e, 0x73, 0x75, 0x73, 0x54, 0x79, 0x70, + 0x65, 0x12, 0x26, 0x0a, 0x0e, 0x45, 0x6e, 0x63, 0x72, 0x79, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x54, + 0x79, 0x70, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x45, 0x6e, 0x63, 0x72, 0x79, + 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x43, 0x69, 0x70, + 0x68, 0x65, 0x72, 0x4b, 0x65, 0x79, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x43, 0x69, + 0x70, 0x68, 0x65, 0x72, 0x4b, 0x65, 0x79, 0x12, 0x16, 0x0a, 0x06, 0x41, 0x70, 0x70, 0x4b, 0x65, + 0x79, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x41, 0x70, 0x70, 0x4b, 0x65, 0x79, 0x12, + 0x1c, 0x0a, 0x09, 0x53, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x18, 0x09, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x09, 0x53, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x22, 0xb6, 0x01, + 0x0a, 0x10, 0x4e, 0x6f, 0x64, 0x65, 0x53, 0x44, 0x4b, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x74, + 0x65, 0x6d, 0x12, 0x2a, 0x0a, 0x05, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x14, 0x2e, 0x71, 0x75, 0x6f, 0x72, 0x75, 0x6d, 0x2e, 0x70, 0x62, 0x2e, 0x47, 0x72, + 0x6f, 0x75, 0x70, 0x49, 0x74, 0x65, 0x6d, 0x52, 0x05, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x22, + 0x0a, 0x0c, 0x45, 0x6e, 0x63, 0x72, 0x79, 0x70, 0x74, 0x41, 0x6c, 0x69, 0x61, 0x73, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x45, 0x6e, 0x63, 0x72, 0x79, 0x70, 0x74, 0x41, 0x6c, 0x69, + 0x61, 0x73, 0x12, 0x1c, 0x0a, 0x09, 0x53, 0x69, 0x67, 0x6e, 0x41, 0x6c, 0x69, 0x61, 0x73, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x53, 0x69, 0x67, 0x6e, 0x41, 0x6c, 0x69, 0x61, 0x73, + 0x12, 0x16, 0x0a, 0x06, 0x41, 0x70, 0x69, 0x55, 0x72, 0x6c, 0x18, 0x04, 0x20, 0x03, 0x28, 0x09, + 0x52, 0x06, 0x41, 0x70, 0x69, 0x55, 0x72, 0x6c, 0x12, 0x1c, 0x0a, 0x09, 0x47, 0x72, 0x6f, 0x75, + 0x70, 0x53, 0x65, 0x65, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x47, 0x72, 0x6f, + 0x75, 0x70, 0x53, 0x65, 0x65, 0x64, 0x22, 0x31, 0x0a, 0x0b, 0x48, 0x42, 0x54, 0x72, 0x78, 0x42, + 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x12, 0x22, 0x0a, 0x04, 0x54, 0x72, 0x78, 0x73, 0x18, 0x01, 0x20, + 0x03, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x71, 0x75, 0x6f, 0x72, 0x75, 0x6d, 0x2e, 0x70, 0x62, 0x2e, + 0x54, 0x72, 0x78, 0x52, 0x04, 0x54, 0x72, 0x78, 0x73, 0x22, 0xa8, 0x01, 0x0a, 0x07, 0x48, 0x42, + 0x4d, 0x73, 0x67, 0x76, 0x31, 0x12, 0x14, 0x0a, 0x05, 0x4d, 0x73, 0x67, 0x49, 0x64, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x4d, 0x73, 0x67, 0x49, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x53, + 0x63, 0x6f, 0x70, 0x65, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x53, 0x63, + 0x6f, 0x70, 0x65, 0x49, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x45, 0x70, 0x6f, 0x63, 0x68, 0x18, 0x03, + 0x20, 0x01, 0x28, 0x04, 0x52, 0x05, 0x45, 0x70, 0x6f, 0x63, 0x68, 0x12, 0x3d, 0x0a, 0x0b, 0x50, + 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x54, 0x79, 0x70, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0e, + 0x32, 0x1b, 0x2e, 0x71, 0x75, 0x6f, 0x72, 0x75, 0x6d, 0x2e, 0x70, 0x62, 0x2e, 0x48, 0x42, 0x4d, + 0x73, 0x67, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x54, 0x79, 0x70, 0x65, 0x52, 0x0b, 0x50, + 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x54, 0x79, 0x70, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x50, 0x61, + 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x07, 0x50, 0x61, 0x79, + 0x6c, 0x6f, 0x61, 0x64, 0x22, 0x4d, 0x0a, 0x06, 0x52, 0x42, 0x43, 0x4d, 0x73, 0x67, 0x12, 0x29, + 0x0a, 0x04, 0x54, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x15, 0x2e, 0x71, + 0x75, 0x6f, 0x72, 0x75, 0x6d, 0x2e, 0x70, 0x62, 0x2e, 0x52, 0x42, 0x43, 0x4d, 0x73, 0x67, 0x54, + 0x79, 0x70, 0x65, 0x52, 0x04, 0x54, 0x79, 0x70, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x50, 0x61, 0x79, + 0x6c, 0x6f, 0x61, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x07, 0x50, 0x61, 0x79, 0x6c, + 0x6f, 0x61, 0x64, 0x22, 0x8d, 0x02, 0x0a, 0x0b, 0x49, 0x6e, 0x69, 0x74, 0x50, 0x72, 0x6f, 0x70, + 0x6f, 0x73, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x52, 0x6f, 0x6f, 0x74, 0x48, 0x61, 0x73, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x08, 0x52, 0x6f, 0x6f, 0x74, 0x48, 0x61, 0x73, 0x68, 0x12, 0x14, 0x0a, 0x05, 0x50, 0x72, 0x6f, 0x6f, 0x66, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0c, 0x52, 0x05, 0x50, 0x72, 0x6f, 0x6f, 0x66, 0x12, 0x14, 0x0a, 0x05, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x03, @@ -3877,108 +3628,121 @@ var file_chain_proto_rawDesc = []byte{ 0x76, 0x65, 0x73, 0x12, 0x2a, 0x0a, 0x10, 0x4f, 0x72, 0x69, 0x67, 0x69, 0x6e, 0x61, 0x6c, 0x44, 0x61, 0x74, 0x61, 0x53, 0x69, 0x7a, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x03, 0x52, 0x10, 0x4f, 0x72, 0x69, 0x67, 0x69, 0x6e, 0x61, 0x6c, 0x44, 0x61, 0x74, 0x61, 0x53, 0x69, 0x7a, 0x65, 0x12, - 0x36, 0x0a, 0x16, 0x4f, 0x72, 0x69, 0x67, 0x69, 0x6e, 0x61, 0x6c, 0x50, 0x72, 0x6f, 0x70, 0x6f, - 0x73, 0x65, 0x72, 0x50, 0x75, 0x62, 0x6b, 0x65, 0x79, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x16, 0x4f, 0x72, 0x69, 0x67, 0x69, 0x6e, 0x61, 0x6c, 0x50, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x65, - 0x72, 0x50, 0x75, 0x62, 0x6b, 0x65, 0x79, 0x12, 0x2e, 0x0a, 0x12, 0x45, 0x63, 0x68, 0x6f, 0x50, - 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x50, 0x75, 0x62, 0x6b, 0x65, 0x79, 0x18, 0x07, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x12, 0x45, 0x63, 0x68, 0x6f, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, - 0x72, 0x50, 0x75, 0x62, 0x6b, 0x65, 0x79, 0x12, 0x2a, 0x0a, 0x10, 0x45, 0x63, 0x68, 0x6f, 0x50, - 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x53, 0x69, 0x67, 0x6e, 0x18, 0x08, 0x20, 0x01, 0x28, - 0x0c, 0x52, 0x10, 0x45, 0x63, 0x68, 0x6f, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x53, - 0x69, 0x67, 0x6e, 0x22, 0xbb, 0x01, 0x0a, 0x05, 0x52, 0x65, 0x61, 0x64, 0x79, 0x12, 0x1a, 0x0a, - 0x08, 0x52, 0x6f, 0x6f, 0x74, 0x48, 0x61, 0x73, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, - 0x08, 0x52, 0x6f, 0x6f, 0x74, 0x48, 0x61, 0x73, 0x68, 0x12, 0x36, 0x0a, 0x16, 0x4f, 0x72, 0x69, - 0x67, 0x69, 0x6e, 0x61, 0x6c, 0x50, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x65, 0x72, 0x50, 0x75, 0x62, - 0x6b, 0x65, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x16, 0x4f, 0x72, 0x69, 0x67, 0x69, - 0x6e, 0x61, 0x6c, 0x50, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x65, 0x72, 0x50, 0x75, 0x62, 0x6b, 0x65, - 0x79, 0x12, 0x30, 0x0a, 0x13, 0x52, 0x65, 0x61, 0x64, 0x79, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, - 0x65, 0x72, 0x50, 0x75, 0x62, 0x6b, 0x65, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x13, - 0x52, 0x65, 0x61, 0x64, 0x79, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x50, 0x75, 0x62, - 0x6b, 0x65, 0x79, 0x12, 0x2c, 0x0a, 0x11, 0x52, 0x65, 0x61, 0x64, 0x79, 0x50, 0x72, 0x6f, 0x76, - 0x69, 0x64, 0x65, 0x72, 0x53, 0x69, 0x67, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x11, + 0x26, 0x0a, 0x0e, 0x52, 0x65, 0x63, 0x76, 0x4e, 0x6f, 0x64, 0x65, 0x50, 0x75, 0x62, 0x6b, 0x65, + 0x79, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x52, 0x65, 0x63, 0x76, 0x4e, 0x6f, 0x64, + 0x65, 0x50, 0x75, 0x62, 0x6b, 0x65, 0x79, 0x12, 0x26, 0x0a, 0x0e, 0x50, 0x72, 0x6f, 0x70, 0x6f, + 0x73, 0x65, 0x72, 0x50, 0x75, 0x62, 0x6b, 0x65, 0x79, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x0e, 0x50, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x65, 0x72, 0x50, 0x75, 0x62, 0x6b, 0x65, 0x79, 0x12, + 0x22, 0x0a, 0x0c, 0x50, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x65, 0x72, 0x53, 0x69, 0x67, 0x6e, 0x18, + 0x08, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0c, 0x50, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x65, 0x72, 0x53, + 0x69, 0x67, 0x6e, 0x22, 0xa6, 0x02, 0x0a, 0x04, 0x45, 0x63, 0x68, 0x6f, 0x12, 0x1a, 0x0a, 0x08, + 0x52, 0x6f, 0x6f, 0x74, 0x48, 0x61, 0x73, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x08, + 0x52, 0x6f, 0x6f, 0x74, 0x48, 0x61, 0x73, 0x68, 0x12, 0x14, 0x0a, 0x05, 0x50, 0x72, 0x6f, 0x6f, + 0x66, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0c, 0x52, 0x05, 0x50, 0x72, 0x6f, 0x6f, 0x66, 0x12, 0x14, + 0x0a, 0x05, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x49, + 0x6e, 0x64, 0x65, 0x78, 0x12, 0x16, 0x0a, 0x06, 0x4c, 0x65, 0x61, 0x76, 0x65, 0x73, 0x18, 0x04, + 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x4c, 0x65, 0x61, 0x76, 0x65, 0x73, 0x12, 0x2a, 0x0a, 0x10, + 0x4f, 0x72, 0x69, 0x67, 0x69, 0x6e, 0x61, 0x6c, 0x44, 0x61, 0x74, 0x61, 0x53, 0x69, 0x7a, 0x65, + 0x18, 0x05, 0x20, 0x01, 0x28, 0x03, 0x52, 0x10, 0x4f, 0x72, 0x69, 0x67, 0x69, 0x6e, 0x61, 0x6c, + 0x44, 0x61, 0x74, 0x61, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x36, 0x0a, 0x16, 0x4f, 0x72, 0x69, 0x67, + 0x69, 0x6e, 0x61, 0x6c, 0x50, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x65, 0x72, 0x50, 0x75, 0x62, 0x6b, + 0x65, 0x79, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x16, 0x4f, 0x72, 0x69, 0x67, 0x69, 0x6e, + 0x61, 0x6c, 0x50, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x65, 0x72, 0x50, 0x75, 0x62, 0x6b, 0x65, 0x79, + 0x12, 0x2e, 0x0a, 0x12, 0x45, 0x63, 0x68, 0x6f, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, + 0x50, 0x75, 0x62, 0x6b, 0x65, 0x79, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x12, 0x45, 0x63, + 0x68, 0x6f, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x50, 0x75, 0x62, 0x6b, 0x65, 0x79, + 0x12, 0x2a, 0x0a, 0x10, 0x45, 0x63, 0x68, 0x6f, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, + 0x53, 0x69, 0x67, 0x6e, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x10, 0x45, 0x63, 0x68, 0x6f, + 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x53, 0x69, 0x67, 0x6e, 0x22, 0xbb, 0x01, 0x0a, + 0x05, 0x52, 0x65, 0x61, 0x64, 0x79, 0x12, 0x1a, 0x0a, 0x08, 0x52, 0x6f, 0x6f, 0x74, 0x48, 0x61, + 0x73, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x08, 0x52, 0x6f, 0x6f, 0x74, 0x48, 0x61, + 0x73, 0x68, 0x12, 0x36, 0x0a, 0x16, 0x4f, 0x72, 0x69, 0x67, 0x69, 0x6e, 0x61, 0x6c, 0x50, 0x72, + 0x6f, 0x70, 0x6f, 0x73, 0x65, 0x72, 0x50, 0x75, 0x62, 0x6b, 0x65, 0x79, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x16, 0x4f, 0x72, 0x69, 0x67, 0x69, 0x6e, 0x61, 0x6c, 0x50, 0x72, 0x6f, 0x70, + 0x6f, 0x73, 0x65, 0x72, 0x50, 0x75, 0x62, 0x6b, 0x65, 0x79, 0x12, 0x30, 0x0a, 0x13, 0x52, 0x65, + 0x61, 0x64, 0x79, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x50, 0x75, 0x62, 0x6b, 0x65, + 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x13, 0x52, 0x65, 0x61, 0x64, 0x79, 0x50, 0x72, + 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x50, 0x75, 0x62, 0x6b, 0x65, 0x79, 0x12, 0x2c, 0x0a, 0x11, 0x52, 0x65, 0x61, 0x64, 0x79, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x53, 0x69, 0x67, - 0x6e, 0x22, 0x4d, 0x0a, 0x06, 0x42, 0x42, 0x41, 0x4d, 0x73, 0x67, 0x12, 0x29, 0x0a, 0x04, 0x54, - 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x15, 0x2e, 0x71, 0x75, 0x6f, 0x72, - 0x75, 0x6d, 0x2e, 0x70, 0x62, 0x2e, 0x42, 0x42, 0x41, 0x4d, 0x73, 0x67, 0x54, 0x79, 0x70, 0x65, - 0x52, 0x04, 0x54, 0x79, 0x70, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, - 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x07, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, - 0x22, 0x76, 0x0a, 0x04, 0x42, 0x76, 0x61, 0x6c, 0x12, 0x1e, 0x0a, 0x0a, 0x50, 0x72, 0x6f, 0x70, + 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x11, 0x52, 0x65, 0x61, 0x64, 0x79, 0x50, 0x72, + 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x53, 0x69, 0x67, 0x6e, 0x22, 0x4d, 0x0a, 0x06, 0x42, 0x42, + 0x41, 0x4d, 0x73, 0x67, 0x12, 0x29, 0x0a, 0x04, 0x54, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x0e, 0x32, 0x15, 0x2e, 0x71, 0x75, 0x6f, 0x72, 0x75, 0x6d, 0x2e, 0x70, 0x62, 0x2e, 0x42, + 0x42, 0x41, 0x4d, 0x73, 0x67, 0x54, 0x79, 0x70, 0x65, 0x52, 0x04, 0x54, 0x79, 0x70, 0x65, 0x12, + 0x18, 0x0a, 0x07, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, + 0x52, 0x07, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x22, 0x76, 0x0a, 0x04, 0x42, 0x76, 0x61, + 0x6c, 0x12, 0x1e, 0x0a, 0x0a, 0x50, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x65, 0x72, 0x49, 0x64, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x50, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x65, 0x72, 0x49, + 0x64, 0x12, 0x22, 0x0a, 0x0c, 0x53, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x50, 0x75, 0x62, 0x6b, 0x65, + 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x53, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x50, + 0x75, 0x62, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x45, 0x70, 0x6f, 0x63, 0x68, 0x18, 0x03, + 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x45, 0x70, 0x6f, 0x63, 0x68, 0x12, 0x14, 0x0a, 0x05, 0x56, + 0x61, 0x6c, 0x75, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x05, 0x56, 0x61, 0x6c, 0x75, + 0x65, 0x22, 0x75, 0x0a, 0x03, 0x41, 0x75, 0x78, 0x12, 0x1e, 0x0a, 0x0a, 0x50, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x65, 0x72, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x50, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x65, 0x72, 0x49, 0x64, 0x12, 0x22, 0x0a, 0x0c, 0x53, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x50, 0x75, 0x62, 0x6b, 0x65, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x53, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x50, 0x75, 0x62, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, - 0x45, 0x70, 0x6f, 0x63, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x45, 0x70, 0x6f, + 0x45, 0x70, 0x6f, 0x63, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x52, 0x05, 0x45, 0x70, 0x6f, 0x63, 0x68, 0x12, 0x14, 0x0a, 0x05, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, - 0x08, 0x52, 0x05, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x75, 0x0a, 0x03, 0x41, 0x75, 0x78, 0x12, - 0x1e, 0x0a, 0x0a, 0x50, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x65, 0x72, 0x49, 0x64, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x0a, 0x50, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x65, 0x72, 0x49, 0x64, 0x12, - 0x22, 0x0a, 0x0c, 0x53, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x50, 0x75, 0x62, 0x6b, 0x65, 0x79, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x53, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x50, 0x75, 0x62, - 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x45, 0x70, 0x6f, 0x63, 0x68, 0x18, 0x03, 0x20, 0x01, - 0x28, 0x04, 0x52, 0x05, 0x45, 0x70, 0x6f, 0x63, 0x68, 0x12, 0x14, 0x0a, 0x05, 0x56, 0x61, 0x6c, - 0x75, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x05, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x2a, - 0x4b, 0x0a, 0x0b, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x07, - 0x0a, 0x03, 0x54, 0x52, 0x58, 0x10, 0x00, 0x12, 0x09, 0x0a, 0x05, 0x42, 0x4c, 0x4f, 0x43, 0x4b, - 0x10, 0x01, 0x12, 0x0b, 0x0a, 0x07, 0x42, 0x46, 0x54, 0x5f, 0x4d, 0x53, 0x47, 0x10, 0x02, 0x12, - 0x08, 0x0a, 0x04, 0x53, 0x59, 0x4e, 0x43, 0x10, 0x03, 0x12, 0x11, 0x0a, 0x0d, 0x42, 0x52, 0x4f, - 0x41, 0x44, 0x43, 0x41, 0x53, 0x54, 0x5f, 0x4d, 0x53, 0x47, 0x10, 0x04, 0x2a, 0x2c, 0x0a, 0x0c, - 0x41, 0x6e, 0x6e, 0x6f, 0x75, 0x6e, 0x63, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x0b, 0x0a, 0x07, - 0x41, 0x53, 0x5f, 0x55, 0x53, 0x45, 0x52, 0x10, 0x00, 0x12, 0x0f, 0x0a, 0x0b, 0x41, 0x53, 0x5f, - 0x50, 0x52, 0x4f, 0x44, 0x55, 0x43, 0x45, 0x52, 0x10, 0x01, 0x2a, 0x21, 0x0a, 0x0a, 0x41, 0x63, - 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x12, 0x07, 0x0a, 0x03, 0x41, 0x44, 0x44, 0x10, - 0x00, 0x12, 0x0a, 0x0a, 0x06, 0x52, 0x45, 0x4d, 0x4f, 0x56, 0x45, 0x10, 0x01, 0x2a, 0x26, 0x0a, - 0x0e, 0x54, 0x72, 0x78, 0x53, 0x74, 0x72, 0x6f, 0x61, 0x67, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, - 0x09, 0x0a, 0x05, 0x43, 0x48, 0x41, 0x49, 0x4e, 0x10, 0x00, 0x12, 0x09, 0x0a, 0x05, 0x43, 0x41, - 0x43, 0x48, 0x45, 0x10, 0x01, 0x2a, 0x5f, 0x0a, 0x07, 0x54, 0x72, 0x78, 0x54, 0x79, 0x70, 0x65, - 0x12, 0x08, 0x0a, 0x04, 0x50, 0x4f, 0x53, 0x54, 0x10, 0x00, 0x12, 0x0c, 0x0a, 0x08, 0x41, 0x4e, - 0x4e, 0x4f, 0x55, 0x4e, 0x43, 0x45, 0x10, 0x01, 0x12, 0x10, 0x0a, 0x0c, 0x55, 0x50, 0x44, 0x5f, - 0x47, 0x52, 0x50, 0x5f, 0x55, 0x53, 0x45, 0x52, 0x10, 0x02, 0x12, 0x10, 0x0a, 0x0c, 0x43, 0x48, - 0x41, 0x49, 0x4e, 0x5f, 0x43, 0x4f, 0x4e, 0x46, 0x49, 0x47, 0x10, 0x03, 0x12, 0x0e, 0x0a, 0x0a, - 0x41, 0x50, 0x50, 0x5f, 0x43, 0x4f, 0x4e, 0x46, 0x49, 0x47, 0x10, 0x04, 0x12, 0x08, 0x0a, 0x04, - 0x46, 0x4f, 0x52, 0x4b, 0x10, 0x05, 0x2a, 0x4c, 0x0a, 0x0f, 0x43, 0x68, 0x61, 0x69, 0x6e, 0x43, - 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x54, 0x79, 0x70, 0x65, 0x12, 0x15, 0x0a, 0x11, 0x53, 0x45, 0x54, - 0x5f, 0x54, 0x52, 0x58, 0x5f, 0x41, 0x55, 0x54, 0x48, 0x5f, 0x4d, 0x4f, 0x44, 0x45, 0x10, 0x00, - 0x12, 0x10, 0x0a, 0x0c, 0x55, 0x50, 0x44, 0x5f, 0x44, 0x4e, 0x59, 0x5f, 0x4c, 0x49, 0x53, 0x54, - 0x10, 0x01, 0x12, 0x10, 0x0a, 0x0c, 0x55, 0x50, 0x44, 0x5f, 0x41, 0x4c, 0x57, 0x5f, 0x4c, 0x49, - 0x53, 0x54, 0x10, 0x02, 0x2a, 0x37, 0x0a, 0x0b, 0x54, 0x72, 0x78, 0x41, 0x75, 0x74, 0x68, 0x4d, - 0x6f, 0x64, 0x65, 0x12, 0x13, 0x0a, 0x0f, 0x46, 0x4f, 0x4c, 0x4c, 0x4f, 0x57, 0x5f, 0x41, 0x4c, - 0x57, 0x5f, 0x4c, 0x49, 0x53, 0x54, 0x10, 0x00, 0x12, 0x13, 0x0a, 0x0f, 0x46, 0x4f, 0x4c, 0x4c, - 0x4f, 0x57, 0x5f, 0x44, 0x4e, 0x59, 0x5f, 0x4c, 0x49, 0x53, 0x54, 0x10, 0x01, 0x2a, 0x2d, 0x0a, - 0x0c, 0x41, 0x75, 0x74, 0x68, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x79, 0x70, 0x65, 0x12, 0x0e, 0x0a, - 0x0a, 0x41, 0x4c, 0x4c, 0x4f, 0x57, 0x5f, 0x4c, 0x49, 0x53, 0x54, 0x10, 0x00, 0x12, 0x0d, 0x0a, - 0x09, 0x44, 0x45, 0x4e, 0x59, 0x5f, 0x4c, 0x49, 0x53, 0x54, 0x10, 0x01, 0x2a, 0x2e, 0x0a, 0x0d, - 0x41, 0x70, 0x70, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x54, 0x79, 0x70, 0x65, 0x12, 0x07, 0x0a, - 0x03, 0x49, 0x4e, 0x54, 0x10, 0x00, 0x12, 0x08, 0x0a, 0x04, 0x42, 0x4f, 0x4f, 0x4c, 0x10, 0x01, - 0x12, 0x0a, 0x0a, 0x06, 0x53, 0x54, 0x52, 0x49, 0x4e, 0x47, 0x10, 0x02, 0x2a, 0x18, 0x0a, 0x0a, - 0x42, 0x66, 0x74, 0x4d, 0x73, 0x67, 0x54, 0x79, 0x70, 0x65, 0x12, 0x0a, 0x0a, 0x06, 0x48, 0x42, - 0x5f, 0x42, 0x46, 0x54, 0x10, 0x00, 0x2a, 0x30, 0x0a, 0x0b, 0x53, 0x79, 0x6e, 0x63, 0x4d, 0x73, - 0x67, 0x54, 0x79, 0x70, 0x65, 0x12, 0x0d, 0x0a, 0x09, 0x52, 0x45, 0x51, 0x5f, 0x42, 0x4c, 0x4f, - 0x43, 0x4b, 0x10, 0x00, 0x12, 0x12, 0x0a, 0x0e, 0x52, 0x45, 0x51, 0x5f, 0x42, 0x4c, 0x4f, 0x43, - 0x4b, 0x5f, 0x52, 0x45, 0x53, 0x50, 0x10, 0x01, 0x2a, 0x50, 0x0a, 0x0c, 0x52, 0x65, 0x71, 0x42, - 0x6c, 0x6b, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x11, 0x0a, 0x0d, 0x42, 0x4c, 0x4f, 0x43, - 0x4b, 0x5f, 0x49, 0x4e, 0x5f, 0x52, 0x45, 0x53, 0x50, 0x10, 0x00, 0x12, 0x18, 0x0a, 0x14, 0x42, - 0x4c, 0x4f, 0x43, 0x4b, 0x5f, 0x49, 0x4e, 0x5f, 0x52, 0x45, 0x53, 0x50, 0x5f, 0x4f, 0x4e, 0x5f, - 0x54, 0x4f, 0x50, 0x10, 0x01, 0x12, 0x13, 0x0a, 0x0f, 0x42, 0x4c, 0x4f, 0x43, 0x4b, 0x5f, 0x4e, - 0x4f, 0x54, 0x5f, 0x46, 0x4f, 0x55, 0x4e, 0x44, 0x10, 0x02, 0x2a, 0x1c, 0x0a, 0x0d, 0x42, 0x72, - 0x6f, 0x61, 0x64, 0x63, 0x61, 0x73, 0x74, 0x54, 0x79, 0x70, 0x65, 0x12, 0x0b, 0x0a, 0x07, 0x47, - 0x45, 0x4e, 0x45, 0x52, 0x41, 0x4c, 0x10, 0x00, 0x2a, 0x2b, 0x0a, 0x10, 0x47, 0x72, 0x6f, 0x75, - 0x70, 0x45, 0x6e, 0x63, 0x72, 0x79, 0x70, 0x74, 0x54, 0x79, 0x70, 0x65, 0x12, 0x0a, 0x0a, 0x06, - 0x50, 0x55, 0x42, 0x4c, 0x49, 0x43, 0x10, 0x00, 0x12, 0x0b, 0x0a, 0x07, 0x50, 0x52, 0x49, 0x56, - 0x41, 0x54, 0x45, 0x10, 0x01, 0x2a, 0x25, 0x0a, 0x11, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x43, 0x6f, - 0x6e, 0x73, 0x65, 0x6e, 0x73, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x07, 0x0a, 0x03, 0x50, 0x4f, - 0x41, 0x10, 0x00, 0x12, 0x07, 0x0a, 0x03, 0x50, 0x4f, 0x53, 0x10, 0x01, 0x2a, 0x24, 0x0a, 0x10, - 0x48, 0x42, 0x4d, 0x73, 0x67, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x54, 0x79, 0x70, 0x65, - 0x12, 0x07, 0x0a, 0x03, 0x52, 0x42, 0x43, 0x10, 0x00, 0x12, 0x07, 0x0a, 0x03, 0x42, 0x42, 0x41, - 0x10, 0x01, 0x2a, 0x33, 0x0a, 0x0a, 0x52, 0x42, 0x43, 0x4d, 0x73, 0x67, 0x54, 0x79, 0x70, 0x65, - 0x12, 0x10, 0x0a, 0x0c, 0x49, 0x4e, 0x49, 0x54, 0x5f, 0x50, 0x52, 0x4f, 0x50, 0x4f, 0x53, 0x45, - 0x10, 0x00, 0x12, 0x08, 0x0a, 0x04, 0x45, 0x43, 0x48, 0x4f, 0x10, 0x01, 0x12, 0x09, 0x0a, 0x05, - 0x52, 0x45, 0x41, 0x44, 0x59, 0x10, 0x02, 0x2a, 0x1f, 0x0a, 0x0a, 0x42, 0x42, 0x41, 0x4d, 0x73, - 0x67, 0x54, 0x79, 0x70, 0x65, 0x12, 0x08, 0x0a, 0x04, 0x42, 0x56, 0x41, 0x4c, 0x10, 0x00, 0x12, - 0x07, 0x0a, 0x03, 0x41, 0x55, 0x58, 0x10, 0x01, 0x42, 0x24, 0x5a, 0x22, 0x67, 0x69, 0x74, 0x68, - 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x72, 0x75, 0x6d, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, - 0x2f, 0x71, 0x75, 0x6f, 0x72, 0x75, 0x6d, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x70, 0x62, 0x62, 0x06, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x08, 0x52, 0x05, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x2a, 0x4b, 0x0a, 0x0b, 0x50, 0x61, 0x63, 0x6b, + 0x61, 0x67, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x07, 0x0a, 0x03, 0x54, 0x52, 0x58, 0x10, 0x00, + 0x12, 0x09, 0x0a, 0x05, 0x42, 0x4c, 0x4f, 0x43, 0x4b, 0x10, 0x01, 0x12, 0x0b, 0x0a, 0x07, 0x42, + 0x46, 0x54, 0x5f, 0x4d, 0x53, 0x47, 0x10, 0x02, 0x12, 0x08, 0x0a, 0x04, 0x53, 0x59, 0x4e, 0x43, + 0x10, 0x03, 0x12, 0x11, 0x0a, 0x0d, 0x42, 0x52, 0x4f, 0x41, 0x44, 0x43, 0x41, 0x53, 0x54, 0x5f, + 0x4d, 0x53, 0x47, 0x10, 0x04, 0x2a, 0x21, 0x0a, 0x0a, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x54, + 0x79, 0x70, 0x65, 0x12, 0x07, 0x0a, 0x03, 0x41, 0x44, 0x44, 0x10, 0x00, 0x12, 0x0a, 0x0a, 0x06, + 0x52, 0x45, 0x4d, 0x4f, 0x56, 0x45, 0x10, 0x01, 0x2a, 0x26, 0x0a, 0x0e, 0x54, 0x72, 0x78, 0x53, + 0x74, 0x72, 0x6f, 0x61, 0x67, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x09, 0x0a, 0x05, 0x43, 0x48, + 0x41, 0x49, 0x4e, 0x10, 0x00, 0x12, 0x09, 0x0a, 0x05, 0x43, 0x41, 0x43, 0x48, 0x45, 0x10, 0x01, + 0x2a, 0x51, 0x0a, 0x07, 0x54, 0x72, 0x78, 0x54, 0x79, 0x70, 0x65, 0x12, 0x08, 0x0a, 0x04, 0x50, + 0x4f, 0x53, 0x54, 0x10, 0x00, 0x12, 0x10, 0x0a, 0x0c, 0x55, 0x50, 0x44, 0x5f, 0x47, 0x52, 0x50, + 0x5f, 0x55, 0x53, 0x45, 0x52, 0x10, 0x01, 0x12, 0x10, 0x0a, 0x0c, 0x43, 0x48, 0x41, 0x49, 0x4e, + 0x5f, 0x43, 0x4f, 0x4e, 0x46, 0x49, 0x47, 0x10, 0x02, 0x12, 0x0e, 0x0a, 0x0a, 0x41, 0x50, 0x50, + 0x5f, 0x43, 0x4f, 0x4e, 0x46, 0x49, 0x47, 0x10, 0x03, 0x12, 0x08, 0x0a, 0x04, 0x46, 0x4f, 0x52, + 0x4b, 0x10, 0x04, 0x2a, 0x4c, 0x0a, 0x0f, 0x43, 0x68, 0x61, 0x69, 0x6e, 0x43, 0x6f, 0x6e, 0x66, + 0x69, 0x67, 0x54, 0x79, 0x70, 0x65, 0x12, 0x15, 0x0a, 0x11, 0x53, 0x45, 0x54, 0x5f, 0x54, 0x52, + 0x58, 0x5f, 0x41, 0x55, 0x54, 0x48, 0x5f, 0x4d, 0x4f, 0x44, 0x45, 0x10, 0x00, 0x12, 0x10, 0x0a, + 0x0c, 0x55, 0x50, 0x44, 0x5f, 0x44, 0x4e, 0x59, 0x5f, 0x4c, 0x49, 0x53, 0x54, 0x10, 0x01, 0x12, + 0x10, 0x0a, 0x0c, 0x55, 0x50, 0x44, 0x5f, 0x41, 0x4c, 0x57, 0x5f, 0x4c, 0x49, 0x53, 0x54, 0x10, + 0x02, 0x2a, 0x37, 0x0a, 0x0b, 0x54, 0x72, 0x78, 0x41, 0x75, 0x74, 0x68, 0x4d, 0x6f, 0x64, 0x65, + 0x12, 0x13, 0x0a, 0x0f, 0x46, 0x4f, 0x4c, 0x4c, 0x4f, 0x57, 0x5f, 0x41, 0x4c, 0x57, 0x5f, 0x4c, + 0x49, 0x53, 0x54, 0x10, 0x00, 0x12, 0x13, 0x0a, 0x0f, 0x46, 0x4f, 0x4c, 0x4c, 0x4f, 0x57, 0x5f, + 0x44, 0x4e, 0x59, 0x5f, 0x4c, 0x49, 0x53, 0x54, 0x10, 0x01, 0x2a, 0x2d, 0x0a, 0x0c, 0x41, 0x75, + 0x74, 0x68, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x79, 0x70, 0x65, 0x12, 0x0e, 0x0a, 0x0a, 0x41, 0x4c, + 0x4c, 0x4f, 0x57, 0x5f, 0x4c, 0x49, 0x53, 0x54, 0x10, 0x00, 0x12, 0x0d, 0x0a, 0x09, 0x44, 0x45, + 0x4e, 0x59, 0x5f, 0x4c, 0x49, 0x53, 0x54, 0x10, 0x01, 0x2a, 0x2e, 0x0a, 0x0d, 0x41, 0x70, 0x70, + 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x54, 0x79, 0x70, 0x65, 0x12, 0x07, 0x0a, 0x03, 0x49, 0x4e, + 0x54, 0x10, 0x00, 0x12, 0x08, 0x0a, 0x04, 0x42, 0x4f, 0x4f, 0x4c, 0x10, 0x01, 0x12, 0x0a, 0x0a, + 0x06, 0x53, 0x54, 0x52, 0x49, 0x4e, 0x47, 0x10, 0x02, 0x2a, 0x18, 0x0a, 0x0a, 0x42, 0x66, 0x74, + 0x4d, 0x73, 0x67, 0x54, 0x79, 0x70, 0x65, 0x12, 0x0a, 0x0a, 0x06, 0x48, 0x42, 0x5f, 0x42, 0x46, + 0x54, 0x10, 0x00, 0x2a, 0x30, 0x0a, 0x0b, 0x53, 0x79, 0x6e, 0x63, 0x4d, 0x73, 0x67, 0x54, 0x79, + 0x70, 0x65, 0x12, 0x0d, 0x0a, 0x09, 0x52, 0x45, 0x51, 0x5f, 0x42, 0x4c, 0x4f, 0x43, 0x4b, 0x10, + 0x00, 0x12, 0x12, 0x0a, 0x0e, 0x52, 0x45, 0x51, 0x5f, 0x42, 0x4c, 0x4f, 0x43, 0x4b, 0x5f, 0x52, + 0x45, 0x53, 0x50, 0x10, 0x01, 0x2a, 0x50, 0x0a, 0x0c, 0x52, 0x65, 0x71, 0x42, 0x6c, 0x6b, 0x52, + 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x11, 0x0a, 0x0d, 0x42, 0x4c, 0x4f, 0x43, 0x4b, 0x5f, 0x49, + 0x4e, 0x5f, 0x52, 0x45, 0x53, 0x50, 0x10, 0x00, 0x12, 0x18, 0x0a, 0x14, 0x42, 0x4c, 0x4f, 0x43, + 0x4b, 0x5f, 0x49, 0x4e, 0x5f, 0x52, 0x45, 0x53, 0x50, 0x5f, 0x4f, 0x4e, 0x5f, 0x54, 0x4f, 0x50, + 0x10, 0x01, 0x12, 0x13, 0x0a, 0x0f, 0x42, 0x4c, 0x4f, 0x43, 0x4b, 0x5f, 0x4e, 0x4f, 0x54, 0x5f, + 0x46, 0x4f, 0x55, 0x4e, 0x44, 0x10, 0x02, 0x2a, 0x1c, 0x0a, 0x0d, 0x42, 0x72, 0x6f, 0x61, 0x64, + 0x63, 0x61, 0x73, 0x74, 0x54, 0x79, 0x70, 0x65, 0x12, 0x0b, 0x0a, 0x07, 0x47, 0x45, 0x4e, 0x45, + 0x52, 0x41, 0x4c, 0x10, 0x00, 0x2a, 0x2b, 0x0a, 0x10, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x45, 0x6e, + 0x63, 0x72, 0x79, 0x70, 0x74, 0x54, 0x79, 0x70, 0x65, 0x12, 0x0a, 0x0a, 0x06, 0x50, 0x55, 0x42, + 0x4c, 0x49, 0x43, 0x10, 0x00, 0x12, 0x0b, 0x0a, 0x07, 0x50, 0x52, 0x49, 0x56, 0x41, 0x54, 0x45, + 0x10, 0x01, 0x2a, 0x25, 0x0a, 0x11, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x43, 0x6f, 0x6e, 0x73, 0x65, + 0x6e, 0x73, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x07, 0x0a, 0x03, 0x50, 0x4f, 0x41, 0x10, 0x00, + 0x12, 0x07, 0x0a, 0x03, 0x50, 0x4f, 0x53, 0x10, 0x01, 0x2a, 0x24, 0x0a, 0x10, 0x48, 0x42, 0x4d, + 0x73, 0x67, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x54, 0x79, 0x70, 0x65, 0x12, 0x07, 0x0a, + 0x03, 0x52, 0x42, 0x43, 0x10, 0x00, 0x12, 0x07, 0x0a, 0x03, 0x42, 0x42, 0x41, 0x10, 0x01, 0x2a, + 0x33, 0x0a, 0x0a, 0x52, 0x42, 0x43, 0x4d, 0x73, 0x67, 0x54, 0x79, 0x70, 0x65, 0x12, 0x10, 0x0a, + 0x0c, 0x49, 0x4e, 0x49, 0x54, 0x5f, 0x50, 0x52, 0x4f, 0x50, 0x4f, 0x53, 0x45, 0x10, 0x00, 0x12, + 0x08, 0x0a, 0x04, 0x45, 0x43, 0x48, 0x4f, 0x10, 0x01, 0x12, 0x09, 0x0a, 0x05, 0x52, 0x45, 0x41, + 0x44, 0x59, 0x10, 0x02, 0x2a, 0x1f, 0x0a, 0x0a, 0x42, 0x42, 0x41, 0x4d, 0x73, 0x67, 0x54, 0x79, + 0x70, 0x65, 0x12, 0x08, 0x0a, 0x04, 0x42, 0x56, 0x41, 0x4c, 0x10, 0x00, 0x12, 0x07, 0x0a, 0x03, + 0x41, 0x55, 0x58, 0x10, 0x01, 0x42, 0x24, 0x5a, 0x22, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, + 0x63, 0x6f, 0x6d, 0x2f, 0x72, 0x75, 0x6d, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x2f, 0x71, 0x75, + 0x6f, 0x72, 0x75, 0x6d, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x70, 0x62, 0x62, 0x06, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x33, } var ( @@ -3993,99 +3757,93 @@ func file_chain_proto_rawDescGZIP() []byte { return file_chain_proto_rawDescData } -var file_chain_proto_enumTypes = make([]protoimpl.EnumInfo, 18) -var file_chain_proto_msgTypes = make([]protoimpl.MessageInfo, 33) +var file_chain_proto_enumTypes = make([]protoimpl.EnumInfo, 17) +var file_chain_proto_msgTypes = make([]protoimpl.MessageInfo, 31) var file_chain_proto_goTypes = []interface{}{ (PackageType)(0), // 0: quorum.pb.PackageType - (AnnounceType)(0), // 1: quorum.pb.AnnounceType - (ActionType)(0), // 2: quorum.pb.ActionType - (TrxStroageType)(0), // 3: quorum.pb.TrxStroageType - (TrxType)(0), // 4: quorum.pb.TrxType - (ChainConfigType)(0), // 5: quorum.pb.ChainConfigType - (TrxAuthMode)(0), // 6: quorum.pb.TrxAuthMode - (AuthListType)(0), // 7: quorum.pb.AuthListType - (AppConfigType)(0), // 8: quorum.pb.AppConfigType - (BftMsgType)(0), // 9: quorum.pb.BftMsgType - (SyncMsgType)(0), // 10: quorum.pb.SyncMsgType - (ReqBlkResult)(0), // 11: quorum.pb.ReqBlkResult - (BroadcastType)(0), // 12: quorum.pb.BroadcastType - (GroupEncryptType)(0), // 13: quorum.pb.GroupEncryptType - (GroupConsenseType)(0), // 14: quorum.pb.GroupConsenseType - (HBMsgPayloadType)(0), // 15: quorum.pb.HBMsgPayloadType - (RBCMsgType)(0), // 16: quorum.pb.RBCMsgType - (BBAMsgType)(0), // 17: quorum.pb.BBAMsgType - (*Package)(nil), // 18: quorum.pb.Package - (*PostItem)(nil), // 19: quorum.pb.PostItem - (*ProducerItem)(nil), // 20: quorum.pb.ProducerItem - (*UpdGroupUserItem)(nil), // 21: quorum.pb.UpdGroupUserItem - (*UserItem)(nil), // 22: quorum.pb.UserItem - (*AnnounceItem)(nil), // 23: quorum.pb.AnnounceItem - (*AnnounceContent)(nil), // 24: quorum.pb.AnnounceContent - (*ChainConfigItem)(nil), // 25: quorum.pb.ChainConfigItem - (*ChainSendTrxRuleListItem)(nil), // 26: quorum.pb.ChainSendTrxRuleListItem - (*SetTrxAuthModeItem)(nil), // 27: quorum.pb.SetTrxAuthModeItem - (*AppConfigItem)(nil), // 28: quorum.pb.AppConfigItem - (*ConsensusInfo)(nil), // 29: quorum.pb.ConsensusInfo - (*ForkItem)(nil), // 30: quorum.pb.ForkItem - (*Trx)(nil), // 31: quorum.pb.Trx - (*Block)(nil), // 32: quorum.pb.Block - (*BftMsg)(nil), // 33: quorum.pb.BftMsg - (*SyncMsg)(nil), // 34: quorum.pb.SyncMsg - (*ReqBlock)(nil), // 35: quorum.pb.ReqBlock - (*ReqBlockResp)(nil), // 36: quorum.pb.ReqBlockResp - (*BlocksBundle)(nil), // 37: quorum.pb.BlocksBundle - (*BroadcastMsg)(nil), // 38: quorum.pb.BroadcastMsg - (*GroupItem)(nil), // 39: quorum.pb.GroupItem - (*GroupSeed)(nil), // 40: quorum.pb.GroupSeed - (*NodeSDKGroupItem)(nil), // 41: quorum.pb.NodeSDKGroupItem - (*HBTrxBundle)(nil), // 42: quorum.pb.HBTrxBundle - (*HBMsgv1)(nil), // 43: quorum.pb.HBMsgv1 - (*RBCMsg)(nil), // 44: quorum.pb.RBCMsg - (*InitPropose)(nil), // 45: quorum.pb.InitPropose - (*Echo)(nil), // 46: quorum.pb.Echo - (*Ready)(nil), // 47: quorum.pb.Ready - (*BBAMsg)(nil), // 48: quorum.pb.BBAMsg - (*Bval)(nil), // 49: quorum.pb.Bval - (*Aux)(nil), // 50: quorum.pb.Aux + (ActionType)(0), // 1: quorum.pb.ActionType + (TrxStroageType)(0), // 2: quorum.pb.TrxStroageType + (TrxType)(0), // 3: quorum.pb.TrxType + (ChainConfigType)(0), // 4: quorum.pb.ChainConfigType + (TrxAuthMode)(0), // 5: quorum.pb.TrxAuthMode + (AuthListType)(0), // 6: quorum.pb.AuthListType + (AppConfigType)(0), // 7: quorum.pb.AppConfigType + (BftMsgType)(0), // 8: quorum.pb.BftMsgType + (SyncMsgType)(0), // 9: quorum.pb.SyncMsgType + (ReqBlkResult)(0), // 10: quorum.pb.ReqBlkResult + (BroadcastType)(0), // 11: quorum.pb.BroadcastType + (GroupEncryptType)(0), // 12: quorum.pb.GroupEncryptType + (GroupConsenseType)(0), // 13: quorum.pb.GroupConsenseType + (HBMsgPayloadType)(0), // 14: quorum.pb.HBMsgPayloadType + (RBCMsgType)(0), // 15: quorum.pb.RBCMsgType + (BBAMsgType)(0), // 16: quorum.pb.BBAMsgType + (*Package)(nil), // 17: quorum.pb.Package + (*PostItem)(nil), // 18: quorum.pb.PostItem + (*ProducerItem)(nil), // 19: quorum.pb.ProducerItem + (*UpdGroupUserItem)(nil), // 20: quorum.pb.UpdGroupUserItem + (*UserItem)(nil), // 21: quorum.pb.UserItem + (*ChainConfigItem)(nil), // 22: quorum.pb.ChainConfigItem + (*ChainSendTrxRuleListItem)(nil), // 23: quorum.pb.ChainSendTrxRuleListItem + (*SetTrxAuthModeItem)(nil), // 24: quorum.pb.SetTrxAuthModeItem + (*AppConfigItem)(nil), // 25: quorum.pb.AppConfigItem + (*ConsensusInfo)(nil), // 26: quorum.pb.ConsensusInfo + (*ForkItem)(nil), // 27: quorum.pb.ForkItem + (*Trx)(nil), // 28: quorum.pb.Trx + (*Block)(nil), // 29: quorum.pb.Block + (*BftMsg)(nil), // 30: quorum.pb.BftMsg + (*SyncMsg)(nil), // 31: quorum.pb.SyncMsg + (*ReqBlock)(nil), // 32: quorum.pb.ReqBlock + (*ReqBlockResp)(nil), // 33: quorum.pb.ReqBlockResp + (*BlocksBundle)(nil), // 34: quorum.pb.BlocksBundle + (*BroadcastMsg)(nil), // 35: quorum.pb.BroadcastMsg + (*GroupItem)(nil), // 36: quorum.pb.GroupItem + (*GroupSeed)(nil), // 37: quorum.pb.GroupSeed + (*NodeSDKGroupItem)(nil), // 38: quorum.pb.NodeSDKGroupItem + (*HBTrxBundle)(nil), // 39: quorum.pb.HBTrxBundle + (*HBMsgv1)(nil), // 40: quorum.pb.HBMsgv1 + (*RBCMsg)(nil), // 41: quorum.pb.RBCMsg + (*InitPropose)(nil), // 42: quorum.pb.InitPropose + (*Echo)(nil), // 43: quorum.pb.Echo + (*Ready)(nil), // 44: quorum.pb.Ready + (*BBAMsg)(nil), // 45: quorum.pb.BBAMsg + (*Bval)(nil), // 46: quorum.pb.Bval + (*Aux)(nil), // 47: quorum.pb.Aux } var file_chain_proto_depIdxs = []int32{ 0, // 0: quorum.pb.Package.type:type_name -> quorum.pb.PackageType - 2, // 1: quorum.pb.UpdGroupUserItem.Action:type_name -> quorum.pb.ActionType - 2, // 2: quorum.pb.AnnounceItem.Action:type_name -> quorum.pb.ActionType - 24, // 3: quorum.pb.AnnounceItem.Content:type_name -> quorum.pb.AnnounceContent - 1, // 4: quorum.pb.AnnounceContent.Type:type_name -> quorum.pb.AnnounceType - 5, // 5: quorum.pb.ChainConfigItem.Type:type_name -> quorum.pb.ChainConfigType - 2, // 6: quorum.pb.ChainSendTrxRuleListItem.Action:type_name -> quorum.pb.ActionType - 4, // 7: quorum.pb.ChainSendTrxRuleListItem.Type:type_name -> quorum.pb.TrxType - 4, // 8: quorum.pb.SetTrxAuthModeItem.Type:type_name -> quorum.pb.TrxType - 6, // 9: quorum.pb.SetTrxAuthModeItem.Mode:type_name -> quorum.pb.TrxAuthMode - 2, // 10: quorum.pb.AppConfigItem.Action:type_name -> quorum.pb.ActionType - 8, // 11: quorum.pb.AppConfigItem.Type:type_name -> quorum.pb.AppConfigType - 29, // 12: quorum.pb.ForkItem.Consensus:type_name -> quorum.pb.ConsensusInfo - 4, // 13: quorum.pb.Trx.Type:type_name -> quorum.pb.TrxType - 3, // 14: quorum.pb.Trx.StorageType:type_name -> quorum.pb.TrxStroageType - 31, // 15: quorum.pb.Block.Trxs:type_name -> quorum.pb.Trx - 29, // 16: quorum.pb.Block.Consensus:type_name -> quorum.pb.ConsensusInfo - 9, // 17: quorum.pb.BftMsg.Type:type_name -> quorum.pb.BftMsgType - 10, // 18: quorum.pb.SyncMsg.Type:type_name -> quorum.pb.SyncMsgType - 11, // 19: quorum.pb.ReqBlockResp.Result:type_name -> quorum.pb.ReqBlkResult - 37, // 20: quorum.pb.ReqBlockResp.Blocks:type_name -> quorum.pb.BlocksBundle - 32, // 21: quorum.pb.BlocksBundle.Blocks:type_name -> quorum.pb.Block - 12, // 22: quorum.pb.BroadcastMsg.Type:type_name -> quorum.pb.BroadcastType - 32, // 23: quorum.pb.GroupItem.GenesisBlock:type_name -> quorum.pb.Block - 13, // 24: quorum.pb.GroupItem.EncryptType:type_name -> quorum.pb.GroupEncryptType - 14, // 25: quorum.pb.GroupItem.ConsenseType:type_name -> quorum.pb.GroupConsenseType - 32, // 26: quorum.pb.GroupSeed.GenesisBlock:type_name -> quorum.pb.Block - 39, // 27: quorum.pb.NodeSDKGroupItem.Group:type_name -> quorum.pb.GroupItem - 31, // 28: quorum.pb.HBTrxBundle.Trxs:type_name -> quorum.pb.Trx - 15, // 29: quorum.pb.HBMsgv1.PayloadType:type_name -> quorum.pb.HBMsgPayloadType - 16, // 30: quorum.pb.RBCMsg.Type:type_name -> quorum.pb.RBCMsgType - 17, // 31: quorum.pb.BBAMsg.Type:type_name -> quorum.pb.BBAMsgType - 32, // [32:32] is the sub-list for method output_type - 32, // [32:32] is the sub-list for method input_type - 32, // [32:32] is the sub-list for extension type_name - 32, // [32:32] is the sub-list for extension extendee - 0, // [0:32] is the sub-list for field type_name + 1, // 1: quorum.pb.UpdGroupUserItem.Action:type_name -> quorum.pb.ActionType + 4, // 2: quorum.pb.ChainConfigItem.Type:type_name -> quorum.pb.ChainConfigType + 1, // 3: quorum.pb.ChainSendTrxRuleListItem.Action:type_name -> quorum.pb.ActionType + 3, // 4: quorum.pb.ChainSendTrxRuleListItem.Type:type_name -> quorum.pb.TrxType + 3, // 5: quorum.pb.SetTrxAuthModeItem.Type:type_name -> quorum.pb.TrxType + 5, // 6: quorum.pb.SetTrxAuthModeItem.Mode:type_name -> quorum.pb.TrxAuthMode + 1, // 7: quorum.pb.AppConfigItem.Action:type_name -> quorum.pb.ActionType + 7, // 8: quorum.pb.AppConfigItem.Type:type_name -> quorum.pb.AppConfigType + 26, // 9: quorum.pb.ForkItem.Consensus:type_name -> quorum.pb.ConsensusInfo + 3, // 10: quorum.pb.Trx.Type:type_name -> quorum.pb.TrxType + 2, // 11: quorum.pb.Trx.StorageType:type_name -> quorum.pb.TrxStroageType + 28, // 12: quorum.pb.Block.Trxs:type_name -> quorum.pb.Trx + 26, // 13: quorum.pb.Block.Consensus:type_name -> quorum.pb.ConsensusInfo + 8, // 14: quorum.pb.BftMsg.Type:type_name -> quorum.pb.BftMsgType + 9, // 15: quorum.pb.SyncMsg.Type:type_name -> quorum.pb.SyncMsgType + 10, // 16: quorum.pb.ReqBlockResp.Result:type_name -> quorum.pb.ReqBlkResult + 34, // 17: quorum.pb.ReqBlockResp.Blocks:type_name -> quorum.pb.BlocksBundle + 29, // 18: quorum.pb.BlocksBundle.Blocks:type_name -> quorum.pb.Block + 11, // 19: quorum.pb.BroadcastMsg.Type:type_name -> quorum.pb.BroadcastType + 29, // 20: quorum.pb.GroupItem.GenesisBlock:type_name -> quorum.pb.Block + 12, // 21: quorum.pb.GroupItem.EncryptType:type_name -> quorum.pb.GroupEncryptType + 13, // 22: quorum.pb.GroupItem.ConsenseType:type_name -> quorum.pb.GroupConsenseType + 29, // 23: quorum.pb.GroupSeed.GenesisBlock:type_name -> quorum.pb.Block + 36, // 24: quorum.pb.NodeSDKGroupItem.Group:type_name -> quorum.pb.GroupItem + 28, // 25: quorum.pb.HBTrxBundle.Trxs:type_name -> quorum.pb.Trx + 14, // 26: quorum.pb.HBMsgv1.PayloadType:type_name -> quorum.pb.HBMsgPayloadType + 15, // 27: quorum.pb.RBCMsg.Type:type_name -> quorum.pb.RBCMsgType + 16, // 28: quorum.pb.BBAMsg.Type:type_name -> quorum.pb.BBAMsgType + 29, // [29:29] is the sub-list for method output_type + 29, // [29:29] is the sub-list for method input_type + 29, // [29:29] is the sub-list for extension type_name + 29, // [29:29] is the sub-list for extension extendee + 0, // [0:29] is the sub-list for field type_name } func init() { file_chain_proto_init() } @@ -4155,30 +3913,6 @@ func file_chain_proto_init() { } } file_chain_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*AnnounceItem); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_chain_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*AnnounceContent); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_chain_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ChainConfigItem); i { case 0: return &v.state @@ -4190,7 +3924,7 @@ func file_chain_proto_init() { return nil } } - file_chain_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} { + file_chain_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ChainSendTrxRuleListItem); i { case 0: return &v.state @@ -4202,7 +3936,7 @@ func file_chain_proto_init() { return nil } } - file_chain_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} { + file_chain_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*SetTrxAuthModeItem); i { case 0: return &v.state @@ -4214,7 +3948,7 @@ func file_chain_proto_init() { return nil } } - file_chain_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} { + file_chain_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*AppConfigItem); i { case 0: return &v.state @@ -4226,7 +3960,7 @@ func file_chain_proto_init() { return nil } } - file_chain_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} { + file_chain_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ConsensusInfo); i { case 0: return &v.state @@ -4238,7 +3972,7 @@ func file_chain_proto_init() { return nil } } - file_chain_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} { + file_chain_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ForkItem); i { case 0: return &v.state @@ -4250,7 +3984,7 @@ func file_chain_proto_init() { return nil } } - file_chain_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} { + file_chain_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*Trx); i { case 0: return &v.state @@ -4262,7 +3996,7 @@ func file_chain_proto_init() { return nil } } - file_chain_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} { + file_chain_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*Block); i { case 0: return &v.state @@ -4274,7 +4008,7 @@ func file_chain_proto_init() { return nil } } - file_chain_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} { + file_chain_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*BftMsg); i { case 0: return &v.state @@ -4286,7 +4020,7 @@ func file_chain_proto_init() { return nil } } - file_chain_proto_msgTypes[16].Exporter = func(v interface{}, i int) interface{} { + file_chain_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*SyncMsg); i { case 0: return &v.state @@ -4298,7 +4032,7 @@ func file_chain_proto_init() { return nil } } - file_chain_proto_msgTypes[17].Exporter = func(v interface{}, i int) interface{} { + file_chain_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ReqBlock); i { case 0: return &v.state @@ -4310,7 +4044,7 @@ func file_chain_proto_init() { return nil } } - file_chain_proto_msgTypes[18].Exporter = func(v interface{}, i int) interface{} { + file_chain_proto_msgTypes[16].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ReqBlockResp); i { case 0: return &v.state @@ -4322,7 +4056,7 @@ func file_chain_proto_init() { return nil } } - file_chain_proto_msgTypes[19].Exporter = func(v interface{}, i int) interface{} { + file_chain_proto_msgTypes[17].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*BlocksBundle); i { case 0: return &v.state @@ -4334,7 +4068,7 @@ func file_chain_proto_init() { return nil } } - file_chain_proto_msgTypes[20].Exporter = func(v interface{}, i int) interface{} { + file_chain_proto_msgTypes[18].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*BroadcastMsg); i { case 0: return &v.state @@ -4346,7 +4080,7 @@ func file_chain_proto_init() { return nil } } - file_chain_proto_msgTypes[21].Exporter = func(v interface{}, i int) interface{} { + file_chain_proto_msgTypes[19].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GroupItem); i { case 0: return &v.state @@ -4358,7 +4092,7 @@ func file_chain_proto_init() { return nil } } - file_chain_proto_msgTypes[22].Exporter = func(v interface{}, i int) interface{} { + file_chain_proto_msgTypes[20].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GroupSeed); i { case 0: return &v.state @@ -4370,7 +4104,7 @@ func file_chain_proto_init() { return nil } } - file_chain_proto_msgTypes[23].Exporter = func(v interface{}, i int) interface{} { + file_chain_proto_msgTypes[21].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*NodeSDKGroupItem); i { case 0: return &v.state @@ -4382,7 +4116,7 @@ func file_chain_proto_init() { return nil } } - file_chain_proto_msgTypes[24].Exporter = func(v interface{}, i int) interface{} { + file_chain_proto_msgTypes[22].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*HBTrxBundle); i { case 0: return &v.state @@ -4394,7 +4128,7 @@ func file_chain_proto_init() { return nil } } - file_chain_proto_msgTypes[25].Exporter = func(v interface{}, i int) interface{} { + file_chain_proto_msgTypes[23].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*HBMsgv1); i { case 0: return &v.state @@ -4406,7 +4140,7 @@ func file_chain_proto_init() { return nil } } - file_chain_proto_msgTypes[26].Exporter = func(v interface{}, i int) interface{} { + file_chain_proto_msgTypes[24].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*RBCMsg); i { case 0: return &v.state @@ -4418,7 +4152,7 @@ func file_chain_proto_init() { return nil } } - file_chain_proto_msgTypes[27].Exporter = func(v interface{}, i int) interface{} { + file_chain_proto_msgTypes[25].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*InitPropose); i { case 0: return &v.state @@ -4430,7 +4164,7 @@ func file_chain_proto_init() { return nil } } - file_chain_proto_msgTypes[28].Exporter = func(v interface{}, i int) interface{} { + file_chain_proto_msgTypes[26].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*Echo); i { case 0: return &v.state @@ -4442,7 +4176,7 @@ func file_chain_proto_init() { return nil } } - file_chain_proto_msgTypes[29].Exporter = func(v interface{}, i int) interface{} { + file_chain_proto_msgTypes[27].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*Ready); i { case 0: return &v.state @@ -4454,7 +4188,7 @@ func file_chain_proto_init() { return nil } } - file_chain_proto_msgTypes[30].Exporter = func(v interface{}, i int) interface{} { + file_chain_proto_msgTypes[28].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*BBAMsg); i { case 0: return &v.state @@ -4466,7 +4200,7 @@ func file_chain_proto_init() { return nil } } - file_chain_proto_msgTypes[31].Exporter = func(v interface{}, i int) interface{} { + file_chain_proto_msgTypes[29].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*Bval); i { case 0: return &v.state @@ -4478,7 +4212,7 @@ func file_chain_proto_init() { return nil } } - file_chain_proto_msgTypes[32].Exporter = func(v interface{}, i int) interface{} { + file_chain_proto_msgTypes[30].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*Aux); i { case 0: return &v.state @@ -4496,8 +4230,8 @@ func file_chain_proto_init() { File: protoimpl.DescBuilder{ GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_chain_proto_rawDesc, - NumEnums: 18, - NumMessages: 33, + NumEnums: 17, + NumMessages: 31, NumExtensions: 0, NumServices: 0, }, diff --git a/pkg/pb/chain.proto b/pkg/pb/chain.proto index 6e7ed281..88a64687 100644 --- a/pkg/pb/chain.proto +++ b/pkg/pb/chain.proto @@ -15,12 +15,6 @@ message Package { bytes Data = 2; } -//TRX -enum AnnounceType { - AS_USER = 0; - AS_PRODUCER = 1; -} - enum ActionType { ADD = 0; REMOVE = 1; @@ -33,11 +27,10 @@ enum TrxStroageType { enum TrxType { POST = 0; // post to group - ANNOUNCE = 1; // producer or user self announce - UPD_GRP_USER = 2; // owner update group user - CHAIN_CONFIG = 3; // chain configuration - APP_CONFIG = 4; // app configuration - FORK = 5; // fork chain + UPD_GRP_USER = 1; // owner update group user + CHAIN_CONFIG = 2; // chain configuration + APP_CONFIG = 3; // app configuration + FORK = 4; // fork chain } message PostItem { @@ -71,22 +64,6 @@ message UserItem { string Memo = 6; } -message AnnounceItem { - string GroupId = 1; - ActionType Action = 2; - AnnounceContent Content = 3; - string AnnouncerPubkey = 4; - bytes Hash = 5; - bytes Signature = 6; -} - -message AnnounceContent { - AnnounceType Type = 1; - string SignPubkey = 2; - string EncryptPubkey = 3; - string Memo = 4; -} - enum ChainConfigType { SET_TRX_AUTH_MODE = 0; UPD_DNY_LIST = 1;