Skip to content

Commit bf45597

Browse files
authored
feat:add Alonzo protocol parameters support (#594)
1 parent 62885c9 commit bf45597

File tree

2 files changed

+50
-1
lines changed

2 files changed

+50
-1
lines changed

ledger/alonzo.go

Lines changed: 44 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -122,7 +122,12 @@ func (h *AlonzoBlockHeader) Era() Era {
122122

123123
type AlonzoTransactionBody struct {
124124
MaryTransactionBody
125-
TxOutputs []AlonzoTransactionOutput `cbor:"1,keyasint,omitempty"`
125+
TxOutputs []AlonzoTransactionOutput `cbor:"1,keyasint,omitempty"`
126+
Update struct {
127+
cbor.StructAsArray
128+
ProtocolParamUpdates map[Blake2b224]AlonzoProtocolParameterUpdate
129+
Epoch uint64
130+
} `cbor:"6,keyasint,omitempty"`
126131
ScriptDataHash Blake2b256 `cbor:"11,keyasint,omitempty"`
127132
Collateral []ShelleyTransactionInput `cbor:"13,keyasint,omitempty"`
128133
RequiredSigners []Blake2b224 `cbor:"14,keyasint,omitempty"`
@@ -294,6 +299,44 @@ func (t *AlonzoTransaction) Utxorpc() *utxorpc.Tx {
294299
return t.Body.Utxorpc()
295300
}
296301

302+
type ExUnit struct {
303+
cbor.StructAsArray
304+
Mem uint
305+
Steps uint
306+
}
307+
308+
type ExUnitPrice struct {
309+
cbor.StructAsArray
310+
MemPrice uint
311+
StepPrice uint
312+
}
313+
314+
type AlonzoProtocolParameters struct {
315+
MaryProtocolParameters
316+
MinPoolCost uint
317+
AdaPerUtxoByte uint
318+
CostModels uint
319+
ExecutionCosts uint
320+
MaxTxExUnits uint
321+
MaxBlockExUnits uint
322+
MaxValueSize uint
323+
CollateralPercentage uint
324+
MaxCollateralInputs uint
325+
}
326+
327+
type AlonzoProtocolParameterUpdate struct {
328+
MaryProtocolParameterUpdate
329+
MinPoolCost uint `cbor:"16,keyasint"`
330+
AdaPerUtxoByte uint `cbor:"17,keyasint"`
331+
CostModels map[string][]uint `cbor:"18,keyasint"`
332+
ExecutionCosts *ExUnitPrice `cbor:"19,keyasint"`
333+
MaxTxExUnits *ExUnit `cbor:"20,keyasint"`
334+
MaxBlockExUnits *ExUnit `cbor:"21,keyasint"`
335+
MaxValueSize uint `cbor:"22,keyasint"`
336+
CollateralPercentage uint `cbor:"23,keyasint"`
337+
MaxCollateralInputs uint `cbor:"24,keyasint"`
338+
}
339+
297340
func NewAlonzoBlockFromCbor(data []byte) (*AlonzoBlock, error) {
298341
var alonzoBlock AlonzoBlock
299342
if _, err := cbor.Decode(data, &alonzoBlock); err != nil {

protocol/localstatequery/client.go

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -354,6 +354,12 @@ func (c *Client) GetCurrentProtocolParams() (CurrentProtocolParamsResult, error)
354354
return nil, err
355355
}
356356
return result[0], nil
357+
case ledger.EraIdAlonzo:
358+
result := []ledger.AlonzoProtocolParameters{}
359+
if err := c.runQuery(query, &result); err != nil {
360+
return nil, err
361+
}
362+
return result[0], nil
357363
case ledger.EraIdMary:
358364
result := []ledger.MaryProtocolParameters{}
359365
if err := c.runQuery(query, &result); err != nil {

0 commit comments

Comments
 (0)