Skip to content

Commit d75eff5

Browse files
authored
feat: upgrade pparams from previous eras (#775)
1 parent abd7850 commit d75eff5

File tree

7 files changed

+88
-5
lines changed

7 files changed

+88
-5
lines changed

ledger/allegra/pparams.go

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -42,3 +42,9 @@ func (u *AllegraProtocolParameterUpdate) UnmarshalCBOR(data []byte) error {
4242
func (p *AllegraProtocolParameters) Utxorpc() *cardano.PParams {
4343
return p.ShelleyProtocolParameters.Utxorpc()
4444
}
45+
46+
func UpgradePParams(prevPParams shelley.ShelleyProtocolParameters) AllegraProtocolParameters {
47+
return AllegraProtocolParameters{
48+
ShelleyProtocolParameters: prevPParams,
49+
}
50+
}

ledger/alonzo/pparams.go

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -73,8 +73,7 @@ func (p *AlonzoProtocolParameters) UpdateFromGenesis(genesis *AlonzoGenesis) {
7373
if genesis == nil {
7474
return
7575
}
76-
// XXX: do we need to convert this?
77-
p.AdaPerUtxoByte = genesis.LovelacePerUtxoWord
76+
p.AdaPerUtxoByte = genesis.LovelacePerUtxoWord / 8
7877
p.MaxValueSize = genesis.MaxValueSize
7978
p.CollateralPercentage = genesis.CollateralPercentage
8079
p.MaxCollateralInputs = genesis.MaxCollateralInputs
@@ -170,3 +169,9 @@ func (p *AlonzoProtocolParameters) Utxorpc() *cardano.PParams {
170169
},
171170
}
172171
}
172+
173+
func UpgradePParams(prevPParams mary.MaryProtocolParameters) AlonzoProtocolParameters {
174+
return AlonzoProtocolParameters{
175+
MaryProtocolParameters: prevPParams,
176+
}
177+
}

ledger/alonzo/pparams_test.go

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -160,7 +160,7 @@ func TestAlonzoProtocolParamsUpdateFromGenesis(t *testing.T) {
160160
},
161161
},
162162
},
163-
AdaPerUtxoByte: 34482,
163+
AdaPerUtxoByte: 34482 / 8,
164164
},
165165
},
166166
}
@@ -205,7 +205,7 @@ func TestAlonzoUtxorpc(t *testing.T) {
205205
},
206206
},
207207
},
208-
AdaPerUtxoByte: 44,
208+
AdaPerUtxoByte: 44 / 8,
209209
MinPoolCost: 340000000,
210210
MaxValueSize: 1024,
211211
CollateralPercentage: 150,
@@ -230,7 +230,7 @@ func TestAlonzoUtxorpc(t *testing.T) {
230230
}
231231

232232
expectedUtxorpc := &cardano.PParams{
233-
CoinsPerUtxoByte: 44,
233+
CoinsPerUtxoByte: 44 / 8,
234234
MaxTxSize: 16384,
235235
MinFeeCoefficient: 500,
236236
MinFeeConstant: 2,

ledger/babbage/pparams.go

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ package babbage
1616

1717
import (
1818
"github.com/blinklabs-io/gouroboros/cbor"
19+
"github.com/blinklabs-io/gouroboros/ledger/alonzo"
1920
"github.com/blinklabs-io/gouroboros/ledger/common"
2021
"github.com/utxorpc/go-codegen/utxorpc/v1alpha/cardano"
2122
)
@@ -207,3 +208,32 @@ func (p *BabbageProtocolParameters) Utxorpc() *cardano.PParams {
207208
},
208209
}
209210
}
211+
212+
func UpgradePParams(prevPParams alonzo.AlonzoProtocolParameters) BabbageProtocolParameters {
213+
ret := BabbageProtocolParameters{
214+
MinFeeA: prevPParams.MinFeeA,
215+
MinFeeB: prevPParams.MinFeeB,
216+
MaxBlockBodySize: prevPParams.MaxBlockBodySize,
217+
MaxTxSize: prevPParams.MaxTxSize,
218+
MaxBlockHeaderSize: prevPParams.MaxBlockHeaderSize,
219+
KeyDeposit: prevPParams.KeyDeposit,
220+
PoolDeposit: prevPParams.PoolDeposit,
221+
MaxEpoch: prevPParams.MaxEpoch,
222+
NOpt: prevPParams.NOpt,
223+
A0: prevPParams.A0,
224+
Rho: prevPParams.Rho,
225+
Tau: prevPParams.Tau,
226+
ProtocolMajor: prevPParams.ProtocolMajor,
227+
ProtocolMinor: prevPParams.ProtocolMinor,
228+
MinPoolCost: prevPParams.MinPoolCost,
229+
AdaPerUtxoByte: prevPParams.AdaPerUtxoByte,
230+
CostModels: prevPParams.CostModels,
231+
ExecutionCosts: prevPParams.ExecutionCosts,
232+
MaxTxExUnits: prevPParams.MaxTxExUnits,
233+
MaxBlockExUnits: prevPParams.MaxBlockExUnits,
234+
MaxValueSize: prevPParams.MaxValueSize,
235+
CollateralPercentage: prevPParams.CollateralPercentage,
236+
MaxCollateralInputs: prevPParams.MaxCollateralInputs,
237+
}
238+
return ret
239+
}

ledger/conway/pparams.go

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -344,3 +344,34 @@ type DRepVotingThresholds struct {
344344
PpGovGroup cbor.Rat
345345
TreasuryWithdrawal cbor.Rat
346346
}
347+
348+
func UpgradePParams(prevPParams babbage.BabbageProtocolParameters) ConwayProtocolParameters {
349+
ret := ConwayProtocolParameters{
350+
MinFeeA: prevPParams.MinFeeA,
351+
MinFeeB: prevPParams.MinFeeB,
352+
MaxBlockBodySize: prevPParams.MaxBlockBodySize,
353+
MaxTxSize: prevPParams.MaxTxSize,
354+
MaxBlockHeaderSize: prevPParams.MaxBlockHeaderSize,
355+
KeyDeposit: prevPParams.KeyDeposit,
356+
PoolDeposit: prevPParams.PoolDeposit,
357+
MaxEpoch: prevPParams.MaxEpoch,
358+
NOpt: prevPParams.NOpt,
359+
A0: prevPParams.A0,
360+
Rho: prevPParams.Rho,
361+
Tau: prevPParams.Tau,
362+
ProtocolVersion: common.ProtocolParametersProtocolVersion{
363+
Major: prevPParams.ProtocolMajor,
364+
Minor: prevPParams.ProtocolMinor,
365+
},
366+
MinPoolCost: prevPParams.MinPoolCost,
367+
AdaPerUtxoByte: prevPParams.AdaPerUtxoByte,
368+
CostModels: prevPParams.CostModels,
369+
ExecutionCosts: prevPParams.ExecutionCosts,
370+
MaxTxExUnits: prevPParams.MaxTxExUnits,
371+
MaxBlockExUnits: prevPParams.MaxBlockExUnits,
372+
MaxValueSize: prevPParams.MaxValueSize,
373+
CollateralPercentage: prevPParams.CollateralPercentage,
374+
MaxCollateralInputs: prevPParams.MaxCollateralInputs,
375+
}
376+
return ret
377+
}

ledger/mary/pparams.go

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -42,3 +42,9 @@ func (u *MaryProtocolParameterUpdate) UnmarshalCBOR(data []byte) error {
4242
func (p *MaryProtocolParameters) Utxorpc() *cardano.PParams {
4343
return p.AllegraProtocolParameters.Utxorpc()
4444
}
45+
46+
func UpgradePParams(prevPParams allegra.AllegraProtocolParameters) MaryProtocolParameters {
47+
return MaryProtocolParameters{
48+
AllegraProtocolParameters: prevPParams,
49+
}
50+
}

ledger/shelley/pparams.go

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -187,3 +187,8 @@ func (p *ShelleyProtocolParameters) Utxorpc() *cardano.PParams {
187187
},
188188
}
189189
}
190+
191+
func UpgradePParams(prevPParams any) ShelleyProtocolParameters {
192+
// No upgrade from Byron
193+
return ShelleyProtocolParameters{}
194+
}

0 commit comments

Comments
 (0)