Skip to content

Commit

Permalink
feat: support for Conway protocol parameter updates
Browse files Browse the repository at this point in the history
Fixes #592
  • Loading branch information
agaffney committed Jul 17, 2024
1 parent 45ddd42 commit aeefac7
Showing 1 changed file with 65 additions and 1 deletion.
66 changes: 65 additions & 1 deletion ledger/conway.go
Original file line number Diff line number Diff line change
Expand Up @@ -206,6 +206,70 @@ func (b *ConwayTransactionBody) Donation() uint64 {
return b.TxDonation
}

type ConwayProtocolParameters struct {
BabbageProtocolParameters
PoolVotingThresholds PoolVotingThresholds
DRepVotingThresholds DRepVotingThresholds
MinCommitteeSize uint
CommitteeTermLimit uint64
GovActionValidityPeriod uint64
GovActionDeposit uint64
DRepDeposit uint64
DRepInactivityPeriod uint64
MinFeeRefScriptCostPerByte *cbor.Rat
}

type ConwayProtocolParameterUpdate struct {
BabbageProtocolParameterUpdate
PoolVotingThresholds PoolVotingThresholds `cbor:"25,keyasint"`
DRepVotingThresholds DRepVotingThresholds `cbor:"26,keyasint"`
MinCommitteeSize uint `cbor:"27,keyasint"`
CommitteeTermLimit uint64 `cbor:"28,keyasint"`
GovActionValidityPeriod uint64 `cbor:"29,keyasint"`
GovActionDeposit uint64 `cbor:"30,keyasint"`
DRepDeposit uint64 `cbor:"31,keyasint"`
DRepInactivityPeriod uint64 `cbor:"32,keyasint"`
MinFeeRefScriptCostPerByte *cbor.Rat `cbor:"33,keyasint"`
}

type PoolVotingThresholds struct {
cbor.StructAsArray
MotionNoConfidence cbor.Rat
CommitteeNormal cbor.Rat
CommitteeNoConfidence cbor.Rat
HardForkInitiation cbor.Rat
SecurityRelevantParameterVotingThreshold cbor.Rat
}

// TODO
/*
drep_voting_thresholds =
[ unit_interval ; motion no confidence
, unit_interval ; committee normal
, unit_interval ; committee no confidence
, unit_interval ; update constitution
, unit_interval ; hard fork initiation
, unit_interval ; PP network group
, unit_interval ; PP economic group
, unit_interval ; PP technical group
, unit_interval ; PP governance group
, unit_interval ; treasury withdrawal
]
*/
type DRepVotingThresholds struct {
cbor.StructAsArray
MotionNoConfidence cbor.Rat
CommitteeNormal cbor.Rat
CommitteeNoConfidence cbor.Rat
UpdateConstitution cbor.Rat
HardForkInitiation cbor.Rat
PPNetworkGroup cbor.Rat
PPEconomicGroup cbor.Rat
PPTechnicalGroup cbor.Rat
PPGovGroup cbor.Rat
TreasureWithdrawal cbor.Rat
}

// VotingProcedures is a convenience type to avoid needing to duplicate the full type definition everywhere
type VotingProcedures map[*Voter]map[*GovActionId]VotingProcedure

Expand Down Expand Up @@ -316,7 +380,7 @@ type ParameterChangeGovAction struct {
cbor.StructAsArray
Type uint
ActionId *GovActionId
ParamUpdate BabbageProtocolParameterUpdate // TODO: use Conway params update type
ParamUpdate ConwayProtocolParameterUpdate
PolicyHash []byte
}

Expand Down

0 comments on commit aeefac7

Please sign in to comment.