mirror of
https://gitlab.com/pulsechaincom/erigon-pulse.git
synced 2024-12-22 11:41:19 +00:00
Added BLS_TO_EXECUTION_CHANGES pool (#8332)
Adds BLS_TO_EXECUTION_CHANGES
This commit is contained in:
parent
0427b162c4
commit
10746eb376
@ -59,6 +59,8 @@ func (a *ApiHandler) init() {
|
||||
r.Get("/voluntary_exits", beaconHandlerWrapper(a.poolVoluntaryExits, false))
|
||||
r.Get("/attester_slashings", beaconHandlerWrapper(a.poolAttesterSlashings, false))
|
||||
r.Get("/proposer_slashings", beaconHandlerWrapper(a.poolProposerSlashings, false))
|
||||
r.Get("/bls_to_execution_changes", beaconHandlerWrapper(a.poolBlsToExecutionChanges, false))
|
||||
r.Get("/attestations", beaconHandlerWrapper(a.poolAttestations, false))
|
||||
r.Post("/sync_committees", nil)
|
||||
})
|
||||
r.Get("/node/syncing", nil)
|
||||
|
@ -23,3 +23,15 @@ func (a *ApiHandler) poolProposerSlashings(r *http.Request) (data any, finalized
|
||||
data = a.operationsPool.ProposerSlashingsPool.Raw()
|
||||
return
|
||||
}
|
||||
|
||||
func (a *ApiHandler) poolBlsToExecutionChanges(r *http.Request) (data any, finalized *bool, version *clparams.StateVersion, httpStatus int, err error) {
|
||||
httpStatus = http.StatusAccepted
|
||||
data = a.operationsPool.BLSToExecutionChangesPool.Raw()
|
||||
return
|
||||
}
|
||||
|
||||
func (a *ApiHandler) poolAttestations(r *http.Request) (data any, finalized *bool, version *clparams.StateVersion, httpStatus int, err error) {
|
||||
httpStatus = http.StatusAccepted
|
||||
data = a.operationsPool.AttestationsPool.Raw()
|
||||
return
|
||||
}
|
||||
|
@ -96,5 +96,12 @@ func TestForkChoiceBasic(t *testing.T) {
|
||||
},
|
||||
}, true)
|
||||
require.NoError(t, err)
|
||||
// Try processing a bls execution change exit
|
||||
err = store.OnBlsToExecutionChange(&cltypes.SignedBLSToExecutionChange{
|
||||
Message: &cltypes.BLSToExecutionChange{
|
||||
ValidatorIndex: 0,
|
||||
},
|
||||
}, true)
|
||||
require.NoError(t, err)
|
||||
require.Equal(t, len(pool.VoluntaryExistsPool.Raw()), 1)
|
||||
}
|
||||
|
@ -1,6 +1,7 @@
|
||||
package forkchoice
|
||||
|
||||
import (
|
||||
"bytes"
|
||||
"errors"
|
||||
"fmt"
|
||||
|
||||
@ -9,6 +10,7 @@ import (
|
||||
"github.com/ledgerwatch/erigon/cl/fork"
|
||||
"github.com/ledgerwatch/erigon/cl/phase1/core/state"
|
||||
"github.com/ledgerwatch/erigon/cl/pool"
|
||||
"github.com/ledgerwatch/erigon/cl/utils"
|
||||
)
|
||||
|
||||
// NOTE: This file implements non-official handlers for other types of iterations. what it does is,using the forkchoices
|
||||
@ -150,3 +152,66 @@ func (f *ForkChoiceStore) OnProposerSlashing(proposerSlashing *cltypes.ProposerS
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
func (f *ForkChoiceStore) OnBlsToExecutionChange(signedChange *cltypes.SignedBLSToExecutionChange, test bool) error {
|
||||
if f.operationsPool.BLSToExecutionChangesPool.Has(signedChange.Signature) {
|
||||
return nil
|
||||
}
|
||||
change := signedChange.Message
|
||||
|
||||
beaconConfig := f.forkGraph.Config()
|
||||
// Take lock as we interact with state.
|
||||
f.mu.Lock()
|
||||
|
||||
headHash, _, err := f.getHead()
|
||||
if err != nil {
|
||||
f.mu.Unlock()
|
||||
return err
|
||||
}
|
||||
s, _, err := f.forkGraph.GetState(headHash, false)
|
||||
if err != nil {
|
||||
f.mu.Unlock()
|
||||
return err
|
||||
}
|
||||
validator, err := s.ValidatorForValidatorIndex(int(change.ValidatorIndex))
|
||||
if err != nil {
|
||||
f.mu.Unlock()
|
||||
return fmt.Errorf("unable to retrieve state: %v", err)
|
||||
}
|
||||
wc := validator.WithdrawalCredentials()
|
||||
|
||||
if wc[0] != beaconConfig.BLSWithdrawalPrefixByte {
|
||||
f.mu.Unlock()
|
||||
return fmt.Errorf("invalid withdrawal credentials prefix")
|
||||
}
|
||||
genesisValidatorRoot := s.GenesisValidatorsRoot()
|
||||
f.mu.Unlock()
|
||||
// Perform full validation if requested.
|
||||
if !test {
|
||||
// Check the validator's withdrawal credentials against the provided message.
|
||||
hashedFrom := utils.Keccak256(change.From[:])
|
||||
if !bytes.Equal(hashedFrom[1:], wc[1:]) {
|
||||
return fmt.Errorf("invalid withdrawal credentials")
|
||||
}
|
||||
|
||||
// Compute the signing domain and verify the message signature.
|
||||
domain, err := fork.ComputeDomain(beaconConfig.DomainBLSToExecutionChange[:], utils.Uint32ToBytes4(beaconConfig.GenesisForkVersion), genesisValidatorRoot)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
signedRoot, err := fork.ComputeSigningRoot(change, domain)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
valid, err := bls.Verify(signedChange.Signature[:], signedRoot[:], change.From[:])
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
if !valid {
|
||||
return fmt.Errorf("invalid signature")
|
||||
}
|
||||
}
|
||||
|
||||
f.operationsPool.BLSToExecutionChangesPool.Insert(signedChange.Signature, signedChange)
|
||||
return nil
|
||||
}
|
||||
|
@ -154,8 +154,10 @@ func (g *GossipManager) onRecv(ctx context.Context, data *sentinel.GossipData, l
|
||||
if err := operationsContract[*cltypes.AttesterSlashing](ctx, g, l, data, int(version), "attester slashing", g.forkChoice.OnAttesterSlashing); err != nil {
|
||||
return err
|
||||
}
|
||||
//case sentinel.GossipType_AggregateAndProofGossipType:
|
||||
// TODO: implement
|
||||
case sentinel.GossipType_BlsToExecutionChangeType:
|
||||
if err := operationsContract[*cltypes.SignedBLSToExecutionChange](ctx, g, l, data, int(version), "bls to execution change", g.forkChoice.OnBlsToExecutionChange); err != nil {
|
||||
return err
|
||||
}
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
@ -55,4 +55,8 @@ func (o *OperationsPool) NotifyBlock(blk *cltypes.BeaconBlock) {
|
||||
o.ProposerSlashingsPool.DeleteIfExist(ComputeKeyForProposerSlashing(ps))
|
||||
return true
|
||||
})
|
||||
blk.Body.ExecutionChanges.Range(func(_ int, c *cltypes.SignedBLSToExecutionChange, _ int) bool {
|
||||
o.BLSToExecutionChangesPool.DeleteIfExist(c.Signature)
|
||||
return true
|
||||
})
|
||||
}
|
||||
|
@ -43,6 +43,7 @@ const (
|
||||
VoluntaryExitTopic TopicName = "voluntary_exit"
|
||||
ProposerSlashingTopic TopicName = "proposer_slashing"
|
||||
AttesterSlashingTopic TopicName = "attester_slashing"
|
||||
BlsToExecutionChangeTopic TopicName = "bls_to_execution_change"
|
||||
BlobSidecarTopic TopicName = "blob_sidecar_%d" // This topic needs an index
|
||||
)
|
||||
|
||||
@ -55,23 +56,32 @@ var BeaconBlockSsz = GossipTopic{
|
||||
Name: BeaconBlockTopic,
|
||||
CodecStr: SSZSnappyCodec,
|
||||
}
|
||||
|
||||
var BeaconAggregateAndProofSsz = GossipTopic{
|
||||
Name: BeaconAggregateAndProofTopic,
|
||||
CodecStr: SSZSnappyCodec,
|
||||
}
|
||||
|
||||
var VoluntaryExitSsz = GossipTopic{
|
||||
Name: VoluntaryExitTopic,
|
||||
CodecStr: SSZSnappyCodec,
|
||||
}
|
||||
|
||||
var ProposerSlashingSsz = GossipTopic{
|
||||
Name: ProposerSlashingTopic,
|
||||
CodecStr: SSZSnappyCodec,
|
||||
}
|
||||
|
||||
var AttesterSlashingSsz = GossipTopic{
|
||||
Name: AttesterSlashingTopic,
|
||||
CodecStr: SSZSnappyCodec,
|
||||
}
|
||||
|
||||
var BlsToExecutionChangeSsz = GossipTopic{
|
||||
Name: BlsToExecutionChangeTopic,
|
||||
CodecStr: SSZSnappyCodec,
|
||||
}
|
||||
|
||||
type GossipManager struct {
|
||||
ch chan *pubsub.Message
|
||||
subscriptions map[string]*GossipSubscription
|
||||
|
@ -282,9 +282,10 @@ func (s *SentinelServer) handleGossipPacket(pkt *pubsub.Message) error {
|
||||
s.gossipNotifier.notify(sentinelrpc.GossipType_ProposerSlashingGossipType, data, string(textPid))
|
||||
} else if strings.Contains(*pkt.Topic, string(sentinel.AttesterSlashingTopic)) {
|
||||
s.gossipNotifier.notify(sentinelrpc.GossipType_AttesterSlashingGossipType, data, string(textPid))
|
||||
} else if strings.Contains(*pkt.Topic, string(sentinel.BlsToExecutionChangeTopic)) {
|
||||
s.gossipNotifier.notify(sentinelrpc.GossipType_BlsToExecutionChangeType, data, string(textPid))
|
||||
} else if strings.Contains(*pkt.Topic, string(sentinel.BlobSidecarTopic)) {
|
||||
// extract the index
|
||||
|
||||
s.gossipNotifier.notifyBlob(sentinelrpc.GossipType_BlobSidecarType, data, string(textPid), extractBlobSideCarIndex(*pkt.Topic))
|
||||
}
|
||||
return nil
|
||||
|
@ -33,6 +33,7 @@ func createSentinel(cfg *sentinel.SentinelConfig, db persistence.RawBeaconBlockC
|
||||
sentinel.VoluntaryExitSsz,
|
||||
sentinel.ProposerSlashingSsz,
|
||||
sentinel.AttesterSlashingSsz,
|
||||
sentinel.BlsToExecutionChangeSsz,
|
||||
}
|
||||
// gossipTopics = append(gossipTopics, sentinel.GossipSidecarTopics(chain.MaxBlobsPerBlock)...)
|
||||
|
||||
|
@ -4,7 +4,7 @@ go 1.19
|
||||
|
||||
require (
|
||||
github.com/erigontech/mdbx-go v0.27.17
|
||||
github.com/ledgerwatch/interfaces v0.0.0-20230912104607-5501cfd6e5af
|
||||
github.com/ledgerwatch/interfaces v0.0.0-20230929215128-3300a167cce0
|
||||
github.com/ledgerwatch/log/v3 v3.9.0
|
||||
github.com/ledgerwatch/secp256k1 v1.0.0
|
||||
)
|
||||
|
@ -237,8 +237,8 @@ github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI=
|
||||
github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY=
|
||||
github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE=
|
||||
github.com/leanovate/gopter v0.2.9 h1:fQjYxZaynp97ozCzfOyOuAGOU4aU/z37zf/tOujFk7c=
|
||||
github.com/ledgerwatch/interfaces v0.0.0-20230912104607-5501cfd6e5af h1:gGWTa4p8npycnK9gVBbZxMSOBvUgM80lsDU9rnFqyHU=
|
||||
github.com/ledgerwatch/interfaces v0.0.0-20230912104607-5501cfd6e5af/go.mod h1:ugQv1QllJzBny3cKZKxUrSnykkjkBgm27eQM6dnGAcc=
|
||||
github.com/ledgerwatch/interfaces v0.0.0-20230929215128-3300a167cce0 h1:pCLKf3lanroMo1SpA/idi5RyGOIBwvwVRLNwV0suHQU=
|
||||
github.com/ledgerwatch/interfaces v0.0.0-20230929215128-3300a167cce0/go.mod h1:ugQv1QllJzBny3cKZKxUrSnykkjkBgm27eQM6dnGAcc=
|
||||
github.com/ledgerwatch/log/v3 v3.9.0 h1:iDwrXe0PVwBC68Dd94YSsHbMgQ3ufsgjzXtFNFVZFRk=
|
||||
github.com/ledgerwatch/log/v3 v3.9.0/go.mod h1:EiAY6upmI/6LkNhOVxb4eVsmsP11HZCnZ3PlJMjYiqE=
|
||||
github.com/ledgerwatch/secp256k1 v1.0.0 h1:Usvz87YoTG0uePIV8woOof5cQnLXGYa162rFf3YnwaQ=
|
||||
|
@ -31,6 +31,7 @@ const (
|
||||
GossipType_ProposerSlashingGossipType GossipType = 3
|
||||
GossipType_AttesterSlashingGossipType GossipType = 4
|
||||
GossipType_BlobSidecarType GossipType = 5
|
||||
GossipType_BlsToExecutionChangeType GossipType = 6
|
||||
)
|
||||
|
||||
// Enum value maps for GossipType.
|
||||
@ -42,6 +43,7 @@ var (
|
||||
3: "ProposerSlashingGossipType",
|
||||
4: "AttesterSlashingGossipType",
|
||||
5: "BlobSidecarType",
|
||||
6: "BlsToExecutionChangeType",
|
||||
}
|
||||
GossipType_value = map[string]int32{
|
||||
"BeaconBlockGossipType": 0,
|
||||
@ -50,6 +52,7 @@ var (
|
||||
"ProposerSlashingGossipType": 3,
|
||||
"AttesterSlashingGossipType": 4,
|
||||
"BlobSidecarType": 5,
|
||||
"BlsToExecutionChangeType": 6,
|
||||
}
|
||||
)
|
||||
|
||||
@ -525,7 +528,7 @@ var file_p2psentinel_sentinel_proto_rawDesc = []byte{
|
||||
0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x12, 0x22, 0x0a,
|
||||
0x04, 0x70, 0x65, 0x65, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x73, 0x65,
|
||||
0x6e, 0x74, 0x69, 0x6e, 0x65, 0x6c, 0x2e, 0x50, 0x65, 0x65, 0x72, 0x52, 0x04, 0x70, 0x65, 0x65,
|
||||
0x72, 0x2a, 0xba, 0x01, 0x0a, 0x0a, 0x47, 0x6f, 0x73, 0x73, 0x69, 0x70, 0x54, 0x79, 0x70, 0x65,
|
||||
0x72, 0x2a, 0xd8, 0x01, 0x0a, 0x0a, 0x47, 0x6f, 0x73, 0x73, 0x69, 0x70, 0x54, 0x79, 0x70, 0x65,
|
||||
0x12, 0x19, 0x0a, 0x15, 0x42, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x47,
|
||||
0x6f, 0x73, 0x73, 0x69, 0x70, 0x54, 0x79, 0x70, 0x65, 0x10, 0x00, 0x12, 0x1f, 0x0a, 0x1b, 0x41,
|
||||
0x67, 0x67, 0x72, 0x65, 0x67, 0x61, 0x74, 0x65, 0x41, 0x6e, 0x64, 0x50, 0x72, 0x6f, 0x6f, 0x66,
|
||||
@ -536,42 +539,44 @@ var file_p2psentinel_sentinel_proto_rawDesc = []byte{
|
||||
0x73, 0x69, 0x70, 0x54, 0x79, 0x70, 0x65, 0x10, 0x03, 0x12, 0x1e, 0x0a, 0x1a, 0x41, 0x74, 0x74,
|
||||
0x65, 0x73, 0x74, 0x65, 0x72, 0x53, 0x6c, 0x61, 0x73, 0x68, 0x69, 0x6e, 0x67, 0x47, 0x6f, 0x73,
|
||||
0x73, 0x69, 0x70, 0x54, 0x79, 0x70, 0x65, 0x10, 0x04, 0x12, 0x13, 0x0a, 0x0f, 0x42, 0x6c, 0x6f,
|
||||
0x62, 0x53, 0x69, 0x64, 0x65, 0x63, 0x61, 0x72, 0x54, 0x79, 0x70, 0x65, 0x10, 0x05, 0x32, 0x90,
|
||||
0x04, 0x0a, 0x08, 0x53, 0x65, 0x6e, 0x74, 0x69, 0x6e, 0x65, 0x6c, 0x12, 0x41, 0x0a, 0x0f, 0x53,
|
||||
0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x47, 0x6f, 0x73, 0x73, 0x69, 0x70, 0x12, 0x16,
|
||||
0x2e, 0x73, 0x65, 0x6e, 0x74, 0x69, 0x6e, 0x65, 0x6c, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x4d,
|
||||
0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x1a, 0x14, 0x2e, 0x73, 0x65, 0x6e, 0x74, 0x69, 0x6e, 0x65,
|
||||
0x6c, 0x2e, 0x47, 0x6f, 0x73, 0x73, 0x69, 0x70, 0x44, 0x61, 0x74, 0x61, 0x30, 0x01, 0x12, 0x3c,
|
||||
0x0a, 0x0b, 0x53, 0x65, 0x6e, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x15, 0x2e,
|
||||
0x73, 0x65, 0x6e, 0x74, 0x69, 0x6e, 0x65, 0x6c, 0x2e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74,
|
||||
0x44, 0x61, 0x74, 0x61, 0x1a, 0x16, 0x2e, 0x73, 0x65, 0x6e, 0x74, 0x69, 0x6e, 0x65, 0x6c, 0x2e,
|
||||
0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x44, 0x61, 0x74, 0x61, 0x12, 0x35, 0x0a, 0x09,
|
||||
0x53, 0x65, 0x74, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x10, 0x2e, 0x73, 0x65, 0x6e, 0x74,
|
||||
0x69, 0x6e, 0x65, 0x6c, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x1a, 0x16, 0x2e, 0x73, 0x65,
|
||||
0x6e, 0x74, 0x69, 0x6e, 0x65, 0x6c, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x4d, 0x65, 0x73, 0x73,
|
||||
0x61, 0x67, 0x65, 0x12, 0x37, 0x0a, 0x08, 0x47, 0x65, 0x74, 0x50, 0x65, 0x65, 0x72, 0x73, 0x12,
|
||||
0x16, 0x2e, 0x73, 0x65, 0x6e, 0x74, 0x69, 0x6e, 0x65, 0x6c, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79,
|
||||
0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x1a, 0x13, 0x2e, 0x73, 0x65, 0x6e, 0x74, 0x69, 0x6e,
|
||||
0x65, 0x6c, 0x2e, 0x50, 0x65, 0x65, 0x72, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x31, 0x0a, 0x07,
|
||||
0x42, 0x61, 0x6e, 0x50, 0x65, 0x65, 0x72, 0x12, 0x0e, 0x2e, 0x73, 0x65, 0x6e, 0x74, 0x69, 0x6e,
|
||||
0x65, 0x6c, 0x2e, 0x50, 0x65, 0x65, 0x72, 0x1a, 0x16, 0x2e, 0x73, 0x65, 0x6e, 0x74, 0x69, 0x6e,
|
||||
0x65, 0x6c, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12,
|
||||
0x33, 0x0a, 0x09, 0x55, 0x6e, 0x62, 0x61, 0x6e, 0x50, 0x65, 0x65, 0x72, 0x12, 0x0e, 0x2e, 0x73,
|
||||
0x65, 0x6e, 0x74, 0x69, 0x6e, 0x65, 0x6c, 0x2e, 0x50, 0x65, 0x65, 0x72, 0x1a, 0x16, 0x2e, 0x73,
|
||||
0x62, 0x53, 0x69, 0x64, 0x65, 0x63, 0x61, 0x72, 0x54, 0x79, 0x70, 0x65, 0x10, 0x05, 0x12, 0x1c,
|
||||
0x0a, 0x18, 0x42, 0x6c, 0x73, 0x54, 0x6f, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e,
|
||||
0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x54, 0x79, 0x70, 0x65, 0x10, 0x06, 0x32, 0x90, 0x04, 0x0a,
|
||||
0x08, 0x53, 0x65, 0x6e, 0x74, 0x69, 0x6e, 0x65, 0x6c, 0x12, 0x41, 0x0a, 0x0f, 0x53, 0x75, 0x62,
|
||||
0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x47, 0x6f, 0x73, 0x73, 0x69, 0x70, 0x12, 0x16, 0x2e, 0x73,
|
||||
0x65, 0x6e, 0x74, 0x69, 0x6e, 0x65, 0x6c, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x4d, 0x65, 0x73,
|
||||
0x73, 0x61, 0x67, 0x65, 0x12, 0x36, 0x0a, 0x0c, 0x50, 0x65, 0x6e, 0x61, 0x6c, 0x69, 0x7a, 0x65,
|
||||
0x50, 0x65, 0x65, 0x72, 0x12, 0x0e, 0x2e, 0x73, 0x65, 0x6e, 0x74, 0x69, 0x6e, 0x65, 0x6c, 0x2e,
|
||||
0x50, 0x65, 0x65, 0x72, 0x1a, 0x16, 0x2e, 0x73, 0x65, 0x6e, 0x74, 0x69, 0x6e, 0x65, 0x6c, 0x2e,
|
||||
0x45, 0x6d, 0x70, 0x74, 0x79, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x34, 0x0a, 0x0a,
|
||||
0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x50, 0x65, 0x65, 0x72, 0x12, 0x0e, 0x2e, 0x73, 0x65, 0x6e,
|
||||
0x73, 0x61, 0x67, 0x65, 0x1a, 0x14, 0x2e, 0x73, 0x65, 0x6e, 0x74, 0x69, 0x6e, 0x65, 0x6c, 0x2e,
|
||||
0x47, 0x6f, 0x73, 0x73, 0x69, 0x70, 0x44, 0x61, 0x74, 0x61, 0x30, 0x01, 0x12, 0x3c, 0x0a, 0x0b,
|
||||
0x53, 0x65, 0x6e, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x15, 0x2e, 0x73, 0x65,
|
||||
0x6e, 0x74, 0x69, 0x6e, 0x65, 0x6c, 0x2e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x44, 0x61,
|
||||
0x74, 0x61, 0x1a, 0x16, 0x2e, 0x73, 0x65, 0x6e, 0x74, 0x69, 0x6e, 0x65, 0x6c, 0x2e, 0x52, 0x65,
|
||||
0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x44, 0x61, 0x74, 0x61, 0x12, 0x35, 0x0a, 0x09, 0x53, 0x65,
|
||||
0x74, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x10, 0x2e, 0x73, 0x65, 0x6e, 0x74, 0x69, 0x6e,
|
||||
0x65, 0x6c, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x1a, 0x16, 0x2e, 0x73, 0x65, 0x6e, 0x74,
|
||||
0x69, 0x6e, 0x65, 0x6c, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67,
|
||||
0x65, 0x12, 0x37, 0x0a, 0x08, 0x47, 0x65, 0x74, 0x50, 0x65, 0x65, 0x72, 0x73, 0x12, 0x16, 0x2e,
|
||||
0x73, 0x65, 0x6e, 0x74, 0x69, 0x6e, 0x65, 0x6c, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x4d, 0x65,
|
||||
0x73, 0x73, 0x61, 0x67, 0x65, 0x1a, 0x13, 0x2e, 0x73, 0x65, 0x6e, 0x74, 0x69, 0x6e, 0x65, 0x6c,
|
||||
0x2e, 0x50, 0x65, 0x65, 0x72, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x31, 0x0a, 0x07, 0x42, 0x61,
|
||||
0x6e, 0x50, 0x65, 0x65, 0x72, 0x12, 0x0e, 0x2e, 0x73, 0x65, 0x6e, 0x74, 0x69, 0x6e, 0x65, 0x6c,
|
||||
0x2e, 0x50, 0x65, 0x65, 0x72, 0x1a, 0x16, 0x2e, 0x73, 0x65, 0x6e, 0x74, 0x69, 0x6e, 0x65, 0x6c,
|
||||
0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x33, 0x0a,
|
||||
0x09, 0x55, 0x6e, 0x62, 0x61, 0x6e, 0x50, 0x65, 0x65, 0x72, 0x12, 0x0e, 0x2e, 0x73, 0x65, 0x6e,
|
||||
0x74, 0x69, 0x6e, 0x65, 0x6c, 0x2e, 0x50, 0x65, 0x65, 0x72, 0x1a, 0x16, 0x2e, 0x73, 0x65, 0x6e,
|
||||
0x74, 0x69, 0x6e, 0x65, 0x6c, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x4d, 0x65, 0x73, 0x73, 0x61,
|
||||
0x67, 0x65, 0x12, 0x3d, 0x0a, 0x0d, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x47, 0x6f, 0x73,
|
||||
0x73, 0x69, 0x70, 0x12, 0x14, 0x2e, 0x73, 0x65, 0x6e, 0x74, 0x69, 0x6e, 0x65, 0x6c, 0x2e, 0x47,
|
||||
0x6f, 0x73, 0x73, 0x69, 0x70, 0x44, 0x61, 0x74, 0x61, 0x1a, 0x16, 0x2e, 0x73, 0x65, 0x6e, 0x74,
|
||||
0x69, 0x6e, 0x65, 0x6c, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67,
|
||||
0x65, 0x42, 0x15, 0x5a, 0x13, 0x2e, 0x2f, 0x73, 0x65, 0x6e, 0x74, 0x69, 0x6e, 0x65, 0x6c, 0x3b,
|
||||
0x73, 0x65, 0x6e, 0x74, 0x69, 0x6e, 0x65, 0x6c, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
|
||||
0x67, 0x65, 0x12, 0x36, 0x0a, 0x0c, 0x50, 0x65, 0x6e, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x50, 0x65,
|
||||
0x65, 0x72, 0x12, 0x0e, 0x2e, 0x73, 0x65, 0x6e, 0x74, 0x69, 0x6e, 0x65, 0x6c, 0x2e, 0x50, 0x65,
|
||||
0x65, 0x72, 0x1a, 0x16, 0x2e, 0x73, 0x65, 0x6e, 0x74, 0x69, 0x6e, 0x65, 0x6c, 0x2e, 0x45, 0x6d,
|
||||
0x70, 0x74, 0x79, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x34, 0x0a, 0x0a, 0x52, 0x65,
|
||||
0x77, 0x61, 0x72, 0x64, 0x50, 0x65, 0x65, 0x72, 0x12, 0x0e, 0x2e, 0x73, 0x65, 0x6e, 0x74, 0x69,
|
||||
0x6e, 0x65, 0x6c, 0x2e, 0x50, 0x65, 0x65, 0x72, 0x1a, 0x16, 0x2e, 0x73, 0x65, 0x6e, 0x74, 0x69,
|
||||
0x6e, 0x65, 0x6c, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65,
|
||||
0x12, 0x3d, 0x0a, 0x0d, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x47, 0x6f, 0x73, 0x73, 0x69,
|
||||
0x70, 0x12, 0x14, 0x2e, 0x73, 0x65, 0x6e, 0x74, 0x69, 0x6e, 0x65, 0x6c, 0x2e, 0x47, 0x6f, 0x73,
|
||||
0x73, 0x69, 0x70, 0x44, 0x61, 0x74, 0x61, 0x1a, 0x16, 0x2e, 0x73, 0x65, 0x6e, 0x74, 0x69, 0x6e,
|
||||
0x65, 0x6c, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x42,
|
||||
0x15, 0x5a, 0x13, 0x2e, 0x2f, 0x73, 0x65, 0x6e, 0x74, 0x69, 0x6e, 0x65, 0x6c, 0x3b, 0x73, 0x65,
|
||||
0x6e, 0x74, 0x69, 0x6e, 0x65, 0x6c, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
|
||||
}
|
||||
|
||||
var (
|
||||
|
Loading…
Reference in New Issue
Block a user