From 9fb129a912dea5f3897f5b88b2a37468212d9a3a Mon Sep 17 00:00:00 2001 From: Aurora Gaffney Date: Thu, 16 May 2024 06:53:21 -0500 Subject: [PATCH] feat: TX validity interval start attribute (#633) This adds a method for retrieving the validity interval start from a TX Fixes #335 --- ledger/allegra.go | 10 +++++++++- ledger/alonzo.go | 4 ++++ ledger/babbage.go | 4 ++++ ledger/byron.go | 5 +++++ ledger/conway.go | 4 ++++ ledger/mary.go | 4 ++++ ledger/shelley.go | 9 +++++++++ ledger/tx.go | 1 + 8 files changed, 40 insertions(+), 1 deletion(-) diff --git a/ledger/allegra.go b/ledger/allegra.go index e566f166..1c6870d1 100644 --- a/ledger/allegra.go +++ b/ledger/allegra.go @@ -119,13 +119,17 @@ type AllegraTransactionBody struct { ProtocolParamUpdates map[Blake2b224]AllegraProtocolParameterUpdate Epoch uint64 } `cbor:"6,keyasint,omitempty"` - ValidityIntervalStart uint64 `cbor:"8,keyasint,omitempty"` + TxValidityIntervalStart uint64 `cbor:"8,keyasint,omitempty"` } func (b *AllegraTransactionBody) UnmarshalCBOR(cborData []byte) error { return b.UnmarshalCbor(cborData, b) } +func (b *AllegraTransactionBody) ValidityIntervalStart() uint64 { + return b.TxValidityIntervalStart +} + type AllegraTransaction struct { cbor.StructAsArray cbor.DecodeStoreCbor @@ -154,6 +158,10 @@ func (t AllegraTransaction) TTL() uint64 { return t.Body.TTL() } +func (t AllegraTransaction) ValidityIntervalStart() uint64 { + return t.Body.ValidityIntervalStart() +} + func (t AllegraTransaction) ReferenceInputs() []TransactionInput { return t.Body.ReferenceInputs() } diff --git a/ledger/alonzo.go b/ledger/alonzo.go index 62b8beaa..6c445f5c 100644 --- a/ledger/alonzo.go +++ b/ledger/alonzo.go @@ -272,6 +272,10 @@ func (t AlonzoTransaction) TTL() uint64 { return t.Body.TTL() } +func (t AlonzoTransaction) ValidityIntervalStart() uint64 { + return t.Body.ValidityIntervalStart() +} + func (t AlonzoTransaction) ReferenceInputs() []TransactionInput { return t.Body.ReferenceInputs() } diff --git a/ledger/babbage.go b/ledger/babbage.go index ed82a9de..889903ac 100644 --- a/ledger/babbage.go +++ b/ledger/babbage.go @@ -440,6 +440,10 @@ func (t BabbageTransaction) TTL() uint64 { return t.Body.TTL() } +func (t BabbageTransaction) ValidityIntervalStart() uint64 { + return t.Body.ValidityIntervalStart() +} + func (t BabbageTransaction) ReferenceInputs() []TransactionInput { return t.Body.ReferenceInputs() } diff --git a/ledger/byron.go b/ledger/byron.go index e3cc5100..62e0be22 100644 --- a/ledger/byron.go +++ b/ledger/byron.go @@ -170,6 +170,11 @@ func (t *ByronTransaction) TTL() uint64 { return 0 } +func (t *ByronTransaction) ValidityIntervalStart() uint64 { + // No validity interval start in Byron + return 0 +} + func (t *ByronTransaction) ReferenceInputs() []TransactionInput { // No reference inputs in Byron return nil diff --git a/ledger/conway.go b/ledger/conway.go index 3fefd4dd..ba43e275 100644 --- a/ledger/conway.go +++ b/ledger/conway.go @@ -345,6 +345,10 @@ func (t ConwayTransaction) TTL() uint64 { return t.Body.TTL() } +func (t ConwayTransaction) ValidityIntervalStart() uint64 { + return t.Body.ValidityIntervalStart() +} + func (t ConwayTransaction) ReferenceInputs() []TransactionInput { return t.Body.ReferenceInputs() } diff --git a/ledger/mary.go b/ledger/mary.go index c7ee4853..b8e800de 100644 --- a/ledger/mary.go +++ b/ledger/mary.go @@ -175,6 +175,10 @@ func (t MaryTransaction) TTL() uint64 { return t.Body.TTL() } +func (t MaryTransaction) ValidityIntervalStart() uint64 { + return t.Body.ValidityIntervalStart() +} + func (t MaryTransaction) ReferenceInputs() []TransactionInput { return t.Body.ReferenceInputs() } diff --git a/ledger/shelley.go b/ledger/shelley.go index 5a8feaee..46708354 100644 --- a/ledger/shelley.go +++ b/ledger/shelley.go @@ -213,6 +213,11 @@ func (b *ShelleyTransactionBody) TTL() uint64 { return b.Ttl } +func (b *ShelleyTransactionBody) ValidityIntervalStart() uint64 { + // No validity interval start in Shelley + return 0 +} + func (b *ShelleyTransactionBody) ReferenceInputs() []TransactionInput { return []TransactionInput{} } @@ -403,6 +408,10 @@ func (t ShelleyTransaction) TTL() uint64 { return t.Body.TTL() } +func (t ShelleyTransaction) ValidityIntervalStart() uint64 { + return t.Body.ValidityIntervalStart() +} + func (t ShelleyTransaction) ReferenceInputs() []TransactionInput { return t.Body.ReferenceInputs() } diff --git a/ledger/tx.go b/ledger/tx.go index cd9dfc40..af98ee6c 100644 --- a/ledger/tx.go +++ b/ledger/tx.go @@ -40,6 +40,7 @@ type TransactionBody interface { Inputs() []TransactionInput Outputs() []TransactionOutput TTL() uint64 + ValidityIntervalStart() uint64 ReferenceInputs() []TransactionInput Collateral() []TransactionInput CollateralReturn() TransactionOutput