From 186e862c8c58a8d06ae0948a0393da7ffd544a7a Mon Sep 17 00:00:00 2001 From: Aurora Gaffney Date: Thu, 21 Nov 2024 12:15:26 -0600 Subject: [PATCH] feat: expose previous block hash in block interface Fixes #797 --- ledger/allegra/allegra.go | 4 ++++ ledger/alonzo/alonzo.go | 4 ++++ ledger/babbage/babbage.go | 8 ++++++++ ledger/block.go | 1 + ledger/byron/byron.go | 16 ++++++++++++++++ ledger/conway/conway.go | 4 ++++ ledger/mary/mary.go | 4 ++++ ledger/shelley/shelley.go | 8 ++++++++ 8 files changed, 49 insertions(+) diff --git a/ledger/allegra/allegra.go b/ledger/allegra/allegra.go index fb5084e9..ae45b1f3 100644 --- a/ledger/allegra/allegra.go +++ b/ledger/allegra/allegra.go @@ -68,6 +68,10 @@ func (b *AllegraBlock) Hash() string { return b.Header.Hash() } +func (b *AllegraBlock) PrevHash() string { + return b.Header.PrevHash() +} + func (b *AllegraBlock) BlockNumber() uint64 { return b.Header.BlockNumber() } diff --git a/ledger/alonzo/alonzo.go b/ledger/alonzo/alonzo.go index 2823e16d..345a1128 100644 --- a/ledger/alonzo/alonzo.go +++ b/ledger/alonzo/alonzo.go @@ -71,6 +71,10 @@ func (b *AlonzoBlock) Hash() string { return b.Header.Hash() } +func (b *AlonzoBlock) PrevHash() string { + return b.Header.PrevHash() +} + func (b *AlonzoBlock) BlockNumber() uint64 { return b.Header.BlockNumber() } diff --git a/ledger/babbage/babbage.go b/ledger/babbage/babbage.go index d8402f43..d52852bc 100644 --- a/ledger/babbage/babbage.go +++ b/ledger/babbage/babbage.go @@ -72,6 +72,10 @@ func (b *BabbageBlock) Hash() string { return b.Header.Hash() } +func (b *BabbageBlock) PrevHash() string { + return b.Header.PrevHash() +} + func (b *BabbageBlock) BlockNumber() uint64 { return b.Header.BlockNumber() } @@ -174,6 +178,10 @@ func (h *BabbageBlockHeader) Hash() string { return h.hash } +func (h *BabbageBlockHeader) PrevHash() string { + return h.Body.PrevHash.String() +} + func (h *BabbageBlockHeader) BlockNumber() uint64 { return h.Body.BlockNumber } diff --git a/ledger/block.go b/ledger/block.go index 967bb47a..be21a8a8 100644 --- a/ledger/block.go +++ b/ledger/block.go @@ -29,6 +29,7 @@ type Block interface { type BlockHeader interface { Hash() string + PrevHash() string BlockNumber() uint64 SlotNumber() uint64 IssuerVkey() IssuerVkey diff --git a/ledger/byron/byron.go b/ledger/byron/byron.go index 042d27d4..9a07d5a5 100644 --- a/ledger/byron/byron.go +++ b/ledger/byron/byron.go @@ -101,6 +101,10 @@ func (h *ByronMainBlockHeader) Hash() string { return h.hash } +func (h *ByronMainBlockHeader) PrevHash() string { + return h.PrevBlock.String() +} + func (h *ByronMainBlockHeader) BlockNumber() uint64 { // Byron blocks don't store the block number in the block return 0 @@ -525,6 +529,10 @@ func (h *ByronEpochBoundaryBlockHeader) Hash() string { return h.hash } +func (h *ByronEpochBoundaryBlockHeader) PrevHash() string { + return h.PrevBlock.String() +} + func (h *ByronEpochBoundaryBlockHeader) BlockNumber() uint64 { // Byron blocks don't store the block number in the block return 0 @@ -569,6 +577,10 @@ func (b *ByronMainBlock) Hash() string { return b.Header.Hash() } +func (b *ByronMainBlock) PrevHash() string { + return b.Header.PrevHash() +} + func (b *ByronMainBlock) BlockNumber() uint64 { return b.Header.BlockNumber() } @@ -623,6 +635,10 @@ func (b *ByronEpochBoundaryBlock) Hash() string { return b.Header.Hash() } +func (b *ByronEpochBoundaryBlock) PrevHash() string { + return b.Header.PrevHash() +} + func (b *ByronEpochBoundaryBlock) BlockNumber() uint64 { return b.Header.BlockNumber() } diff --git a/ledger/conway/conway.go b/ledger/conway/conway.go index 5c2e7b7c..de39e9cf 100644 --- a/ledger/conway/conway.go +++ b/ledger/conway/conway.go @@ -71,6 +71,10 @@ func (b *ConwayBlock) Hash() string { return b.Header.Hash() } +func (b *ConwayBlock) PrevHash() string { + return b.Header.PrevHash() +} + func (b *ConwayBlock) BlockNumber() uint64 { return b.Header.BlockNumber() } diff --git a/ledger/mary/mary.go b/ledger/mary/mary.go index 7d2ced51..967f4cd4 100644 --- a/ledger/mary/mary.go +++ b/ledger/mary/mary.go @@ -70,6 +70,10 @@ func (b *MaryBlock) Hash() string { return b.Header.Hash() } +func (b *MaryBlock) PrevHash() string { + return b.Header.PrevHash() +} + func (b *MaryBlock) BlockNumber() uint64 { return b.Header.BlockNumber() } diff --git a/ledger/shelley/shelley.go b/ledger/shelley/shelley.go index 226dafe4..3de1e6b2 100644 --- a/ledger/shelley/shelley.go +++ b/ledger/shelley/shelley.go @@ -67,6 +67,10 @@ func (b *ShelleyBlock) Hash() string { return b.Header.Hash() } +func (b *ShelleyBlock) PrevHash() string { + return b.Header.PrevHash() +} + func (b *ShelleyBlock) BlockNumber() uint64 { return b.Header.BlockNumber() } @@ -158,6 +162,10 @@ func (h *ShelleyBlockHeader) Hash() string { return h.hash } +func (h *ShelleyBlockHeader) PrevHash() string { + return h.Body.PrevHash.String() +} + func (h *ShelleyBlockHeader) BlockNumber() uint64 { return h.Body.BlockNumber }