Skip to content

Commit

Permalink
Merge pull request #6398 from onflow/gregor/evm/decode-legacy-block
Browse files Browse the repository at this point in the history
[EVM] Decode legacy block event
  • Loading branch information
devbugging authored Aug 29, 2024
2 parents 51a9497 + dde0133 commit e3d9d29
Showing 1 changed file with 39 additions and 2 deletions.
41 changes: 39 additions & 2 deletions fvm/evm/events/events.go
Original file line number Diff line number Diff line change
Expand Up @@ -143,11 +143,48 @@ type BlockEventPayload struct {
PrevRandao gethCommon.Hash `cadence:"prevrandao"`
}

// blockEventPayloadV0 legacy format of the block without prevrando field
type blockEventPayloadV0 struct {
Height uint64 `cadence:"height"`
Hash gethCommon.Hash `cadence:"hash"`
Timestamp uint64 `cadence:"timestamp"`
TotalSupply cadence.Int `cadence:"totalSupply"`
TotalGasUsed uint64 `cadence:"totalGasUsed"`
ParentBlockHash gethCommon.Hash `cadence:"parentHash"`
ReceiptRoot gethCommon.Hash `cadence:"receiptRoot"`
TransactionHashRoot gethCommon.Hash `cadence:"transactionHashRoot"`
}

// decodeLegacyBlockEventPayload decodes any legacy block formats into
// current version of the block event payload.
func decodeLegacyBlockEventPayload(event cadence.Event) (*BlockEventPayload, error) {
var lb blockEventPayloadV0
if err := cadence.DecodeFields(event, &lb); err != nil {
return nil, err
}

return &BlockEventPayload{
Height: lb.Height,
Hash: lb.Hash,
Timestamp: lb.Timestamp,
TotalSupply: lb.TotalSupply,
TotalGasUsed: lb.TotalGasUsed,
ParentBlockHash: lb.ParentBlockHash,
ReceiptRoot: lb.ReceiptRoot,
TransactionHashRoot: lb.TransactionHashRoot,
}, nil
}

// DecodeBlockEventPayload decodes Cadence event into block event payload.
func DecodeBlockEventPayload(event cadence.Event) (*BlockEventPayload, error) {
var block BlockEventPayload
err := cadence.DecodeFields(event, &block)
return &block, err
if err := cadence.DecodeFields(event, &block); err != nil {
if block, err := decodeLegacyBlockEventPayload(event); err == nil {
return block, nil
}
return nil, err
}
return &block, nil
}

type TransactionEventPayload struct {
Expand Down

0 comments on commit e3d9d29

Please sign in to comment.