Skip to content

Commit 631de5b

Browse files
committed
refactor(block-header): Added changes for decoding block headers of different shapes like Shelley/Allegra/Mary/Alonzo and Babbage/Conway.
Signed-off-by: Akhil Repala <[email protected]>
1 parent 98b40a0 commit 631de5b

File tree

7 files changed

+39
-3
lines changed

7 files changed

+39
-3
lines changed

ledger/allegra.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,7 @@ const (
3737
// Allegra functions
3838
var (
3939
NewAllegraBlockFromCbor = allegra.NewAllegraBlockFromCbor
40+
NewAllegraBlockHeaderFromCbor = allegra.NewAllegraBlockHeaderFromCbor
4041
NewAllegraTransactionFromCbor = allegra.NewAllegraTransactionFromCbor
4142
NewAllegraTransactionBodyFromCbor = allegra.NewAllegraTransactionBodyFromCbor
4243
)

ledger/allegra/allegra.go

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -329,6 +329,14 @@ func NewAllegraBlockFromCbor(data []byte) (*AllegraBlock, error) {
329329
return &allegraBlock, nil
330330
}
331331

332+
func NewAllegraBlockHeaderFromCbor(data []byte) (*AllegraBlockHeader, error) {
333+
var allegraBlockHeader AllegraBlockHeader
334+
if _, err := cbor.Decode(data, &allegraBlockHeader); err != nil {
335+
return nil, fmt.Errorf("Allegra block header decode error: %w", err)
336+
}
337+
return &allegraBlockHeader, nil
338+
}
339+
332340
func NewAllegraTransactionBodyFromCbor(
333341
data []byte,
334342
) (*AllegraTransactionBody, error) {

ledger/alonzo.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,7 @@ const (
4040
// Alonzo functions
4141
var (
4242
NewAlonzoBlockFromCbor = alonzo.NewAlonzoBlockFromCbor
43+
NewAlonzoBlockHeaderFromCbor = alonzo.NewAlonzoBlockFromCbor
4344
NewAlonzoTransactionFromCbor = alonzo.NewAlonzoTransactionFromCbor
4445
NewAlonzoTransactionBodyFromCbor = alonzo.NewAlonzoTransactionBodyFromCbor
4546
NewAlonzoTransactionOutputFromCbor = alonzo.NewAlonzoTransactionOutputFromCbor

ledger/alonzo/alonzo.go

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -532,6 +532,14 @@ func NewAlonzoBlockFromCbor(data []byte) (*AlonzoBlock, error) {
532532
return &alonzoBlock, nil
533533
}
534534

535+
func NewAlonzoBlockHeaderFromCbor(data []byte) (*AlonzoBlockHeader, error) {
536+
var alonzoBlockHeader AlonzoBlockHeader
537+
if _, err := cbor.Decode(data, &alonzoBlockHeader); err != nil {
538+
return nil, fmt.Errorf("Alonzo block header decode error: %w", err)
539+
}
540+
return &alonzoBlockHeader, nil
541+
}
542+
535543
func NewAlonzoTransactionBodyFromCbor(
536544
data []byte,
537545
) (*AlonzoTransactionBody, error) {

ledger/block.go

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -54,12 +54,21 @@ func NewBlockHeaderFromCbor(blockType uint, data []byte) (BlockHeader, error) {
5454
case BlockTypeByronMain:
5555
return NewByronMainBlockHeaderFromCbor(data)
5656
// TODO: break into separate cases and parse as specific block header types (#844)
57-
case BlockTypeShelley, BlockTypeAllegra, BlockTypeMary, BlockTypeAlonzo:
57+
case BlockTypeShelley:
5858
return NewShelleyBlockHeaderFromCbor(data)
59-
case BlockTypeBabbage, BlockTypeConway:
59+
case BlockTypeAllegra:
60+
return NewAllegraBlockHeaderFromCbor(data)
61+
case BlockTypeMary:
62+
return NewMaryBlockHeaderFromCbor(data)
63+
case BlockTypeAlonzo:
64+
return NewAlonzoBlockHeaderFromCbor(data)
65+
case BlockTypeBabbage:
6066
return NewBabbageBlockHeaderFromCbor(data)
67+
case BlockTypeConway:
68+
return NewConwayBlockHeaderFromCbor(data)
69+
default:
70+
return nil, fmt.Errorf("unknown node-to-node block type: %d", blockType)
6171
}
62-
return nil, fmt.Errorf("unknown node-to-node block type: %d", blockType)
6372
}
6473

6574
func DetermineBlockType(data []byte) (uint, error) {

ledger/mary.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,7 @@ const (
4040
// Mary functions
4141
var (
4242
NewMaryBlockFromCbor = mary.NewMaryBlockFromCbor
43+
NewMaryBlockHeaderFromCbor = mary.NewMaryBlockHeaderFromCbor
4344
NewMaryTransactionFromCbor = mary.NewMaryTransactionFromCbor
4445
NewMaryTransactionBodyFromCbor = mary.NewMaryTransactionBodyFromCbor
4546
NewMaryTransactionOutputFromCbor = mary.NewMaryTransactionOutputFromCbor

ledger/mary/mary.go

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -414,6 +414,14 @@ func NewMaryBlockFromCbor(data []byte) (*MaryBlock, error) {
414414
return &maryBlock, nil
415415
}
416416

417+
func NewMaryBlockHeaderFromCbor(data []byte) (*MaryBlockHeader, error) {
418+
var maryBlockHeader MaryBlockHeader
419+
if _, err := cbor.Decode(data, &maryBlockHeader); err != nil {
420+
return nil, fmt.Errorf("Mary block header decode error: %w", err)
421+
}
422+
return &maryBlockHeader, nil
423+
}
424+
417425
func NewMaryTransactionBodyFromCbor(data []byte) (*MaryTransactionBody, error) {
418426
var maryTx MaryTransactionBody
419427
if _, err := cbor.Decode(data, &maryTx); err != nil {

0 commit comments

Comments
 (0)