Skip to content

Commit

Permalink
feat: upgrade pparams from previous eras (#775)
Browse files Browse the repository at this point in the history
  • Loading branch information
agaffney authored Oct 29, 2024
1 parent abd7850 commit d75eff5
Show file tree
Hide file tree
Showing 7 changed files with 88 additions and 5 deletions.
6 changes: 6 additions & 0 deletions ledger/allegra/pparams.go
Original file line number Diff line number Diff line change
Expand Up @@ -42,3 +42,9 @@ func (u *AllegraProtocolParameterUpdate) UnmarshalCBOR(data []byte) error {
func (p *AllegraProtocolParameters) Utxorpc() *cardano.PParams {
return p.ShelleyProtocolParameters.Utxorpc()
}

func UpgradePParams(prevPParams shelley.ShelleyProtocolParameters) AllegraProtocolParameters {
return AllegraProtocolParameters{
ShelleyProtocolParameters: prevPParams,
}
}
9 changes: 7 additions & 2 deletions ledger/alonzo/pparams.go
Original file line number Diff line number Diff line change
Expand Up @@ -73,8 +73,7 @@ func (p *AlonzoProtocolParameters) UpdateFromGenesis(genesis *AlonzoGenesis) {
if genesis == nil {
return
}
// XXX: do we need to convert this?
p.AdaPerUtxoByte = genesis.LovelacePerUtxoWord
p.AdaPerUtxoByte = genesis.LovelacePerUtxoWord / 8
p.MaxValueSize = genesis.MaxValueSize
p.CollateralPercentage = genesis.CollateralPercentage
p.MaxCollateralInputs = genesis.MaxCollateralInputs
Expand Down Expand Up @@ -170,3 +169,9 @@ func (p *AlonzoProtocolParameters) Utxorpc() *cardano.PParams {
},
}
}

func UpgradePParams(prevPParams mary.MaryProtocolParameters) AlonzoProtocolParameters {
return AlonzoProtocolParameters{
MaryProtocolParameters: prevPParams,
}
}
6 changes: 3 additions & 3 deletions ledger/alonzo/pparams_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -160,7 +160,7 @@ func TestAlonzoProtocolParamsUpdateFromGenesis(t *testing.T) {
},
},
},
AdaPerUtxoByte: 34482,
AdaPerUtxoByte: 34482 / 8,
},
},
}
Expand Down Expand Up @@ -205,7 +205,7 @@ func TestAlonzoUtxorpc(t *testing.T) {
},
},
},
AdaPerUtxoByte: 44,
AdaPerUtxoByte: 44 / 8,
MinPoolCost: 340000000,
MaxValueSize: 1024,
CollateralPercentage: 150,
Expand All @@ -230,7 +230,7 @@ func TestAlonzoUtxorpc(t *testing.T) {
}

expectedUtxorpc := &cardano.PParams{
CoinsPerUtxoByte: 44,
CoinsPerUtxoByte: 44 / 8,
MaxTxSize: 16384,
MinFeeCoefficient: 500,
MinFeeConstant: 2,
Expand Down
30 changes: 30 additions & 0 deletions ledger/babbage/pparams.go
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@ package babbage

import (
"github.com/blinklabs-io/gouroboros/cbor"
"github.com/blinklabs-io/gouroboros/ledger/alonzo"
"github.com/blinklabs-io/gouroboros/ledger/common"
"github.com/utxorpc/go-codegen/utxorpc/v1alpha/cardano"
)
Expand Down Expand Up @@ -207,3 +208,32 @@ func (p *BabbageProtocolParameters) Utxorpc() *cardano.PParams {
},
}
}

func UpgradePParams(prevPParams alonzo.AlonzoProtocolParameters) BabbageProtocolParameters {
ret := BabbageProtocolParameters{
MinFeeA: prevPParams.MinFeeA,
MinFeeB: prevPParams.MinFeeB,
MaxBlockBodySize: prevPParams.MaxBlockBodySize,
MaxTxSize: prevPParams.MaxTxSize,
MaxBlockHeaderSize: prevPParams.MaxBlockHeaderSize,
KeyDeposit: prevPParams.KeyDeposit,
PoolDeposit: prevPParams.PoolDeposit,
MaxEpoch: prevPParams.MaxEpoch,
NOpt: prevPParams.NOpt,
A0: prevPParams.A0,
Rho: prevPParams.Rho,
Tau: prevPParams.Tau,
ProtocolMajor: prevPParams.ProtocolMajor,
ProtocolMinor: prevPParams.ProtocolMinor,
MinPoolCost: prevPParams.MinPoolCost,
AdaPerUtxoByte: prevPParams.AdaPerUtxoByte,
CostModels: prevPParams.CostModels,
ExecutionCosts: prevPParams.ExecutionCosts,
MaxTxExUnits: prevPParams.MaxTxExUnits,
MaxBlockExUnits: prevPParams.MaxBlockExUnits,
MaxValueSize: prevPParams.MaxValueSize,
CollateralPercentage: prevPParams.CollateralPercentage,
MaxCollateralInputs: prevPParams.MaxCollateralInputs,
}
return ret
}
31 changes: 31 additions & 0 deletions ledger/conway/pparams.go
Original file line number Diff line number Diff line change
Expand Up @@ -344,3 +344,34 @@ type DRepVotingThresholds struct {
PpGovGroup cbor.Rat
TreasuryWithdrawal cbor.Rat
}

func UpgradePParams(prevPParams babbage.BabbageProtocolParameters) ConwayProtocolParameters {
ret := ConwayProtocolParameters{
MinFeeA: prevPParams.MinFeeA,
MinFeeB: prevPParams.MinFeeB,
MaxBlockBodySize: prevPParams.MaxBlockBodySize,
MaxTxSize: prevPParams.MaxTxSize,
MaxBlockHeaderSize: prevPParams.MaxBlockHeaderSize,
KeyDeposit: prevPParams.KeyDeposit,
PoolDeposit: prevPParams.PoolDeposit,
MaxEpoch: prevPParams.MaxEpoch,
NOpt: prevPParams.NOpt,
A0: prevPParams.A0,
Rho: prevPParams.Rho,
Tau: prevPParams.Tau,
ProtocolVersion: common.ProtocolParametersProtocolVersion{
Major: prevPParams.ProtocolMajor,
Minor: prevPParams.ProtocolMinor,
},
MinPoolCost: prevPParams.MinPoolCost,
AdaPerUtxoByte: prevPParams.AdaPerUtxoByte,
CostModels: prevPParams.CostModels,
ExecutionCosts: prevPParams.ExecutionCosts,
MaxTxExUnits: prevPParams.MaxTxExUnits,
MaxBlockExUnits: prevPParams.MaxBlockExUnits,
MaxValueSize: prevPParams.MaxValueSize,
CollateralPercentage: prevPParams.CollateralPercentage,
MaxCollateralInputs: prevPParams.MaxCollateralInputs,
}
return ret
}
6 changes: 6 additions & 0 deletions ledger/mary/pparams.go
Original file line number Diff line number Diff line change
Expand Up @@ -42,3 +42,9 @@ func (u *MaryProtocolParameterUpdate) UnmarshalCBOR(data []byte) error {
func (p *MaryProtocolParameters) Utxorpc() *cardano.PParams {
return p.AllegraProtocolParameters.Utxorpc()
}

func UpgradePParams(prevPParams allegra.AllegraProtocolParameters) MaryProtocolParameters {
return MaryProtocolParameters{
AllegraProtocolParameters: prevPParams,
}
}
5 changes: 5 additions & 0 deletions ledger/shelley/pparams.go
Original file line number Diff line number Diff line change
Expand Up @@ -187,3 +187,8 @@ func (p *ShelleyProtocolParameters) Utxorpc() *cardano.PParams {
},
}
}

func UpgradePParams(prevPParams any) ShelleyProtocolParameters {
// No upgrade from Byron
return ShelleyProtocolParameters{}
}

0 comments on commit d75eff5

Please sign in to comment.