Skip to content

Commit 545a4dd

Browse files
authored
Merge pull request #449 from blinklabs-io/feat/ledger-determine-block-type
feat: function to determine block type
2 parents cf1bd95 + 0362ac5 commit 545a4dd

File tree

1 file changed

+28
-0
lines changed

1 file changed

+28
-0
lines changed

ledger/block.go

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -74,6 +74,34 @@ func NewBlockHeaderFromCbor(blockType uint, data []byte) (BlockHeader, error) {
7474
return nil, fmt.Errorf("unknown node-to-node block type: %d", blockType)
7575
}
7676

77+
func DetermineBlockType(data []byte) (uint, error) {
78+
if _, err := NewByronEpochBoundaryBlockFromCbor(data); err == nil {
79+
return BlockTypeByronEbb, nil
80+
}
81+
if _, err := NewByronMainBlockFromCbor(data); err == nil {
82+
return BlockTypeByronMain, nil
83+
}
84+
if _, err := NewShelleyBlockFromCbor(data); err == nil {
85+
return BlockTypeShelley, nil
86+
}
87+
if _, err := NewAllegraBlockFromCbor(data); err == nil {
88+
return BlockTypeAllegra, nil
89+
}
90+
if _, err := NewMaryBlockFromCbor(data); err == nil {
91+
return BlockTypeMary, nil
92+
}
93+
if _, err := NewAlonzoBlockFromCbor(data); err == nil {
94+
return BlockTypeAlonzo, nil
95+
}
96+
if _, err := NewBabbageBlockFromCbor(data); err == nil {
97+
return BlockTypeBabbage, nil
98+
}
99+
if _, err := NewConwayBlockFromCbor(data); err == nil {
100+
return BlockTypeConway, nil
101+
}
102+
return 0, fmt.Errorf("unknown block type")
103+
}
104+
77105
func generateBlockHeaderHash(data []byte, prefix []byte) string {
78106
// We can ignore the error return here because our fixed size/key arguments will
79107
// never trigger an error

0 commit comments

Comments
 (0)