github.com/palisadeinc/bor@v0.0.0-20230615125219-ab7196213d15/consensus/bor/heimdallgrpc/span.go (about)

     1  package heimdallgrpc
     2  
     3  import (
     4  	"context"
     5  
     6  	"github.com/ethereum/go-ethereum/consensus/bor/heimdall/span"
     7  	"github.com/ethereum/go-ethereum/consensus/bor/valset"
     8  	"github.com/ethereum/go-ethereum/log"
     9  
    10  	proto "github.com/maticnetwork/polyproto/heimdall"
    11  	protoutils "github.com/maticnetwork/polyproto/utils"
    12  )
    13  
    14  func (h *HeimdallGRPCClient) Span(ctx context.Context, spanID uint64) (*span.HeimdallSpan, error) {
    15  	req := &proto.SpanRequest{
    16  		ID: spanID,
    17  	}
    18  
    19  	log.Info("Fetching span", "spanID", spanID)
    20  
    21  	res, err := h.client.Span(ctx, req)
    22  	if err != nil {
    23  		return nil, err
    24  	}
    25  
    26  	log.Info("Fetched span", "spanID", spanID)
    27  
    28  	return parseSpan(res.Result), nil
    29  }
    30  
    31  func parseSpan(protoSpan *proto.Span) *span.HeimdallSpan {
    32  	resp := &span.HeimdallSpan{
    33  		Span: span.Span{
    34  			ID:         protoSpan.ID,
    35  			StartBlock: protoSpan.StartBlock,
    36  			EndBlock:   protoSpan.EndBlock,
    37  		},
    38  		ValidatorSet:      valset.ValidatorSet{},
    39  		SelectedProducers: []valset.Validator{},
    40  		ChainID:           protoSpan.ChainID,
    41  	}
    42  
    43  	for _, validator := range protoSpan.ValidatorSet.Validators {
    44  		resp.ValidatorSet.Validators = append(resp.ValidatorSet.Validators, parseValidator(validator))
    45  	}
    46  
    47  	resp.ValidatorSet.Proposer = parseValidator(protoSpan.ValidatorSet.Proposer)
    48  
    49  	for _, validator := range protoSpan.SelectedProducers {
    50  		resp.SelectedProducers = append(resp.SelectedProducers, *parseValidator(validator))
    51  	}
    52  
    53  	return resp
    54  }
    55  
    56  func parseValidator(validator *proto.Validator) *valset.Validator {
    57  	return &valset.Validator{
    58  		ID:               validator.ID,
    59  		Address:          protoutils.ConvertH160toAddress(validator.Address),
    60  		VotingPower:      validator.VotingPower,
    61  		ProposerPriority: validator.ProposerPriority,
    62  	}
    63  }