check bor chain id for commit span and state

This commit is contained in:
Jaynti Kanani 2020-02-15 15:36:53 +05:30
parent b343bd10c6
commit cfac491edb
No known key found for this signature in database
GPG key ID: 4396982C976BAE5E
2 changed files with 21 additions and 0 deletions

View file

@ -1048,6 +1048,15 @@ func (c *Bor) commitSpan(
return err
}
// check if chain id matches with heimdall span
if heimdallSpan.ChainID != c.chainConfig.ChainID.String() {
return fmt.Errorf(
"Chain id proposed span, %s, and bor chain id, %s, doesn't match",
heimdallSpan.ChainID,
c.chainConfig.ChainID,
)
}
// get validators bytes
var validators []MinimalVal
for _, val := range heimdallSpan.ValidatorSet.Validators {
@ -1167,11 +1176,22 @@ func (c *Bor) CommitStates(
if err := json.Unmarshal(response.Result, &eventRecord); err != nil {
return err
}
// check if chain id matches with event record
if eventRecord.ChainID != "" && eventRecord.ChainID != c.chainConfig.ChainID.String() {
return fmt.Errorf(
"Chain id proposed state in span, %s, and bor chain id, %s, doesn't match",
eventRecord.ChainID,
c.chainConfig.ChainID,
)
}
log.Info("→ committing new state",
"id", eventRecord.ID,
"contract", eventRecord.Contract,
"data", hex.EncodeToString(eventRecord.Data),
"txHash", eventRecord.TxHash,
"chainID", eventRecord.ChainID,
)
recordBytes, err := rlp.EncodeToBytes(eventRecord)

View file

@ -12,4 +12,5 @@ type EventRecord struct {
Data hexutil.Bytes `json:"data" yaml:"data"`
TxHash common.Hash `json:"tx_hash" yaml:"tx_hash"`
LogIndex uint64 `json:"log_index" yaml:"log_index"`
ChainID string `json:"bor_chain_id" yaml:"bor_chain_id"`
}