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

     1  package heimdallapp
     2  
     3  import (
     4  	"context"
     5  
     6  	hmTypes "github.com/maticnetwork/heimdall/types"
     7  
     8  	"github.com/ethereum/go-ethereum/consensus/bor/heimdall/span"
     9  	"github.com/ethereum/go-ethereum/consensus/bor/valset"
    10  	"github.com/ethereum/go-ethereum/log"
    11  )
    12  
    13  func (h *HeimdallAppClient) Span(ctx context.Context, spanID uint64) (*span.HeimdallSpan, error) {
    14  	log.Info("Fetching span", "spanID", spanID)
    15  
    16  	res, err := h.hApp.BorKeeper.GetSpan(h.NewContext(), spanID)
    17  	if err != nil {
    18  		return nil, err
    19  	}
    20  
    21  	log.Info("Fetched span", "spanID", spanID)
    22  
    23  	return toSpan(res), nil
    24  }
    25  
    26  func toSpan(hdSpan *hmTypes.Span) *span.HeimdallSpan {
    27  	return &span.HeimdallSpan{
    28  		Span: span.Span{
    29  			ID:         hdSpan.ID,
    30  			StartBlock: hdSpan.StartBlock,
    31  			EndBlock:   hdSpan.EndBlock,
    32  		},
    33  		ValidatorSet:      toValidatorSet(hdSpan.ValidatorSet),
    34  		SelectedProducers: toValidators(hdSpan.SelectedProducers),
    35  		ChainID:           hdSpan.ChainID,
    36  	}
    37  }
    38  
    39  func toValidatorSet(vs hmTypes.ValidatorSet) valset.ValidatorSet {
    40  	return valset.ValidatorSet{
    41  		Validators: toValidatorsRef(vs.Validators),
    42  		Proposer:   toValidatorRef(vs.Proposer),
    43  	}
    44  }
    45  
    46  func toValidators(vs []hmTypes.Validator) []valset.Validator {
    47  	newVS := make([]valset.Validator, len(vs))
    48  
    49  	for i, v := range vs {
    50  		newVS[i] = toValidator(v)
    51  	}
    52  
    53  	return newVS
    54  }
    55  
    56  func toValidatorsRef(vs []*hmTypes.Validator) []*valset.Validator {
    57  	newVS := make([]*valset.Validator, len(vs))
    58  
    59  	for i, v := range vs {
    60  		if v == nil {
    61  			continue
    62  		}
    63  
    64  		newVS[i] = toValidatorRef(v)
    65  	}
    66  
    67  	return newVS
    68  }
    69  
    70  func toValidatorRef(v *hmTypes.Validator) *valset.Validator {
    71  	return &valset.Validator{
    72  		ID:               v.ID.Uint64(),
    73  		Address:          v.Signer.EthAddress(),
    74  		VotingPower:      v.VotingPower,
    75  		ProposerPriority: v.ProposerPriority,
    76  	}
    77  }
    78  
    79  func toValidator(v hmTypes.Validator) valset.Validator {
    80  	return valset.Validator{
    81  		ID:               v.ID.Uint64(),
    82  		Address:          v.Signer.EthAddress(),
    83  		VotingPower:      v.VotingPower,
    84  		ProposerPriority: v.ProposerPriority,
    85  	}
    86  }