@@ -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+
77105func 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