Skip to content

Commit 7df13a3

Browse files
authored
feat: add Shelley protocol parameters support (#587)
Signed-off-by: Ales Verbic <[email protected]>
1 parent 5ac94a5 commit 7df13a3

File tree

2 files changed

+51
-1
lines changed

2 files changed

+51
-1
lines changed

ledger/shelley.go

Lines changed: 45 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -175,7 +175,7 @@ type ShelleyTransactionBody struct {
175175
Withdrawals cbor.Value `cbor:"5,keyasint,omitempty"`
176176
Update struct {
177177
cbor.StructAsArray
178-
ProtocolParamUpdates cbor.Value
178+
ProtocolParamUpdates map[Blake2b224]ShelleyProtocolParameterUpdate
179179
Epoch uint64
180180
} `cbor:"6,keyasint,omitempty"`
181181
MetadataHash Blake2b256 `cbor:"7,keyasint,omitempty"`
@@ -397,6 +397,50 @@ func (t *ShelleyTransaction) Cbor() []byte {
397397
return cborData
398398
}
399399

400+
type ShelleyProtocolParameters struct {
401+
cbor.StructAsArray
402+
MinFeeA uint
403+
MinFeeB uint
404+
MaxBlockBodySize uint
405+
MaxTxSize uint
406+
MaxBlockHeaderSize uint
407+
KeyDeposit uint
408+
PoolDeposit uint
409+
MaxEpoch uint
410+
NOpt uint
411+
A0 *cbor.Rat
412+
Rho *cbor.Rat
413+
Tau *cbor.Rat
414+
Decentralization *cbor.Rat
415+
Nonce *cbor.Rat
416+
ProtocolMajor uint
417+
ProtocolMinor uint
418+
MinUtxoValue uint
419+
}
420+
421+
type ShelleyProtocolParameterUpdate struct {
422+
MinFeeA uint `cbor:"0,keyasint"`
423+
MinFeeB uint `cbor:"1,keyasint"`
424+
MaxBlockBodySize uint `cbor:"2,keyasint"`
425+
MaxTxSize uint `cbor:"3,keyasint"`
426+
MaxBlockHeaderSize uint `cbor:"4,keyasint"`
427+
KeyDeposit uint `cbor:"5,keyasint"`
428+
PoolDeposit uint `cbor:"6,keyasint"`
429+
MaxEpoch uint `cbor:"7,keyasint"`
430+
NOpt uint `cbor:"8,keyasint"`
431+
A0 *cbor.Rat `cbor:"9,keyasint"`
432+
Rho *cbor.Rat `cbor:"10,keyasint"`
433+
Tau *cbor.Rat `cbor:"11,keyasint"`
434+
Decentralization *cbor.Rat `cbor:"12,keyasint"`
435+
Nonce *cbor.Rat `cbor:"13,keyasint"`
436+
ProtocolVersion struct {
437+
cbor.StructAsArray
438+
Major uint
439+
Minor uint
440+
} `cbor:"14,keyasint"`
441+
MinUtxoValue uint `cbor:"15,keyasint"`
442+
}
443+
400444
func NewShelleyBlockFromCbor(data []byte) (*ShelleyBlock, error) {
401445
var shelleyBlock ShelleyBlock
402446
if _, err := cbor.Decode(data, &shelleyBlock); 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.EraIdShelley:
358+
result := []ledger.ShelleyProtocolParameters{}
359+
if err := c.runQuery(query, &result); err != nil {
360+
return nil, err
361+
}
362+
return result[0], nil
357363
default:
358364
result := []any{}
359365
if err := c.runQuery(query, &result); err != nil {

0 commit comments

Comments
 (0)