Triweekly parameter committee meeting - 23 Jan, 2025
These are the minutes of the PCs (Parameter Committee) triweekly meeting. The minutes and participants follow Chatham House Rules. This is a manually edited summary based on automatically generated notes.
The purpose of the Parameter Committee is to provide technical advice and recommendations relating to protocol parameters. It discusses all parameters relating to the Cardano protocol including network, technical, economic and governance parameters.
Members:
Chair: Kevin Hammond
Vice-Chairs: Alex Moser, Vijay Bhuvangiri
Advisory Group Network: Neil Davies, Karl Knutson, Marcin Szamotulski
Advisory Group Technical: Markus Gufler, Ruslan Dudin, Michael Peyton Jones, Ashish Prajapati
Advisory Group Economic: Sam Leathers, Sergio Sanchez, Philip Lazos, Gio Gargiulo, Sheng-Nan Li
Advisory Group Governance: Nicolas Cerny, Oscar West, Riley Kilgore, Jonny Kelly, Jenny Brito
Communications: Tommy Kammerer, Matthew Capps
Domain experts: Martin Lang, Andrew Westberg, Nathaniel Acton, Mike Hornan, Adam Rusch
(Permanent) Observers:
Secretary: Matt Davis
Agenda:
- Plutus V2 Primitive Enablement and Cost Model Update
- net change limit parameter
- GA type budget
- Secretary (Matthew Davis remains?)
- Parameter guardrail comments from Constitutional Convention (were not addressed the last time)
- other
Discussions
- Plutus V2 Primitive Enablement
The group discussed enabling two primitives (integer to byte stream and byte string to integer) in Plutus V2, mirroring Plutus V3. It was suggested to proceed given the flexibility it demonstrates and its value as a governance test. The TSC will prepare a GA with the PCs inputs, after circulating a rationale for the change and allowing time for consideration. The possibility of using the PCP process for suggesting the cost model change was raised and this approach was favoured to ensure transparency and community involvement. The team decided to have Dang create a PCP.
The proposal is to change the Plutus v2 cost model to enable integerToByteString and byteStringToInteger. Other cost models are unchanged.
Expand for full cost model. The diff is:
“integerToByteString-cpu-arguments-c0”: 1293828,
“integerToByteString-cpu-arguments-c1": 28716,
“integerToByteString-cpu-arguments-c2”: 63,
“integerToByteString-memory-arguments-intercept”: 0,
“integerToByteString-memory-arguments-slope”: 1,
“byteStringToInteger-cpu-arguments-c0": 1006041,
“byteStringToInteger-cpu-arguments-c1”: 43623,
“byteStringToInteger-cpu-arguments-c2": 251,
“byteStringToInteger-memory-arguments-intercept”: 0,
“byteStringToInteger-memory-arguments-slope”: 1,
“integerToByteString-cpu-arguments-c0”: 1293828,
“integerToByteString-cpu-arguments-c1": 28716,
“integerToByteString-cpu-arguments-c2”: 63,
“integerToByteString-memory-arguments-intercept”: 0,
“integerToByteString-memory-arguments-slope”: 1,
“byteStringToInteger-cpu-arguments-c0": 1006041,
“byteStringToInteger-cpu-arguments-c1”: 43623,
“byteStringToInteger-cpu-arguments-c2": 251,
“byteStringToInteger-memory-arguments-intercept”: 0,
“byteStringToInteger-memory-arguments-slope”: 1,
"PlutusScriptV2": {
"addInteger-cpu-arguments-intercept": 100788,
"addInteger-cpu-arguments-slope": 420,
"addInteger-memory-arguments-intercept": 1,
"addInteger-memory-arguments-slope": 1,
"appendByteString-cpu-arguments-intercept": 1000,
"appendByteString-cpu-arguments-slope": 173,
"appendByteString-memory-arguments-intercept": 0,
"appendByteString-memory-arguments-slope": 1,
"appendString-cpu-arguments-intercept": 1000,
"appendString-cpu-arguments-slope": 59957,
"appendString-memory-arguments-intercept": 4,
"appendString-memory-arguments-slope": 1,
"bData-cpu-arguments": 11183,
"bData-memory-arguments": 32,
"blake2b_256-cpu-arguments-intercept": 201305,
"blake2b_256-cpu-arguments-slope": 8356,
"blake2b_256-memory-arguments": 4,
"cekApplyCost-exBudgetCPU": 16000,
"cekApplyCost-exBudgetMemory": 100,
"cekBuiltinCost-exBudgetCPU": 16000,
"cekBuiltinCost-exBudgetMemory": 100,
"cekConstCost-exBudgetCPU": 16000,
"cekConstCost-exBudgetMemory": 100,
"cekDelayCost-exBudgetCPU": 16000,
"cekDelayCost-exBudgetMemory": 100,
"cekForceCost-exBudgetCPU": 16000,
"cekForceCost-exBudgetMemory": 100,
"cekLamCost-exBudgetCPU": 16000,
"cekLamCost-exBudgetMemory": 100,
"cekStartupCost-exBudgetCPU": 100,
"cekStartupCost-exBudgetMemory": 100,
"cekVarCost-exBudgetCPU": 16000,
"cekVarCost-exBudgetMemory": 100,
"chooseData-cpu-arguments": 94375,
"chooseData-memory-arguments": 32,
"chooseList-cpu-arguments": 132994,
"chooseList-memory-arguments": 32,
"chooseUnit-cpu-arguments": 61462,
"chooseUnit-memory-arguments": 4,
"consByteString-cpu-arguments-intercept": 72010,
"consByteString-cpu-arguments-slope": 178,
"consByteString-memory-arguments-intercept": 0,
"consByteString-memory-arguments-slope": 1,
"constrData-cpu-arguments": 22151,
"constrData-memory-arguments": 32,
"decodeUtf8-cpu-arguments-intercept": 91189,
"decodeUtf8-cpu-arguments-slope": 769,
"decodeUtf8-memory-arguments-intercept": 4,
"decodeUtf8-memory-arguments-slope": 2,
"divideInteger-cpu-arguments-constant": 85848,
"divideInteger-cpu-arguments-model-arguments-intercept": 228465,
"divideInteger-cpu-arguments-model-arguments-slope": 122,
"divideInteger-memory-arguments-intercept": 0,
"divideInteger-memory-arguments-minimum": 1,
"divideInteger-memory-arguments-slope": 1,
"encodeUtf8-cpu-arguments-intercept": 1000,
"encodeUtf8-cpu-arguments-slope": 42921,
"encodeUtf8-memory-arguments-intercept": 4,
"encodeUtf8-memory-arguments-slope": 2,
"equalsByteString-cpu-arguments-constant": 24548,
"equalsByteString-cpu-arguments-intercept": 29498,
"equalsByteString-cpu-arguments-slope": 38,
"equalsByteString-memory-arguments": 1,
"equalsData-cpu-arguments-intercept": 898148,
"equalsData-cpu-arguments-slope": 27279,
"equalsData-memory-arguments": 1,
"equalsInteger-cpu-arguments-intercept": 51775,
"equalsInteger-cpu-arguments-slope": 558,
"equalsInteger-memory-arguments": 1,
"equalsString-cpu-arguments-constant": 39184,
"equalsString-cpu-arguments-intercept": 1000,
"equalsString-cpu-arguments-slope": 60594,
"equalsString-memory-arguments": 1,
"fstPair-cpu-arguments": 141895,
"fstPair-memory-arguments": 32,
"headList-cpu-arguments": 83150,
"headList-memory-arguments": 32,
"iData-cpu-arguments": 15299,
"iData-memory-arguments": 32,
"ifThenElse-cpu-arguments": 76049,
"ifThenElse-memory-arguments": 1,
"indexByteString-cpu-arguments": 13169,
"indexByteString-memory-arguments": 4,
"lengthOfByteString-cpu-arguments": 22100,
"lengthOfByteString-memory-arguments": 10,
"lessThanByteString-cpu-arguments-intercept": 28999,
"lessThanByteString-cpu-arguments-slope": 74,
"lessThanByteString-memory-arguments": 1,
"lessThanEqualsByteString-cpu-arguments-intercept": 28999,
"lessThanEqualsByteString-cpu-arguments-slope": 74,
"lessThanEqualsByteString-memory-arguments": 1,
"lessThanEqualsInteger-cpu-arguments-intercept": 43285,
"lessThanEqualsInteger-cpu-arguments-slope": 552,
"lessThanEqualsInteger-memory-arguments": 1,
"lessThanInteger-cpu-arguments-intercept": 44749,
"lessThanInteger-cpu-arguments-slope": 541,
"lessThanInteger-memory-arguments": 1,
"listData-cpu-arguments": 33852,
"listData-memory-arguments": 32,
"mapData-cpu-arguments": 68246,
"mapData-memory-arguments": 32,
"mkCons-cpu-arguments": 72362,
"mkCons-memory-arguments": 32,
"mkNilData-cpu-arguments": 7243,
"mkNilData-memory-arguments": 32,
"mkNilPairData-cpu-arguments": 7391,
"mkNilPairData-memory-arguments": 32,
"mkPairData-cpu-arguments": 11546,
"mkPairData-memory-arguments": 32,
"modInteger-cpu-arguments-constant": 85848,
"modInteger-cpu-arguments-model-arguments-intercept": 228465,
"modInteger-cpu-arguments-model-arguments-slope": 122,
"modInteger-memory-arguments-intercept": 0,
"modInteger-memory-arguments-minimum": 1,
"modInteger-memory-arguments-slope": 1,
"multiplyInteger-cpu-arguments-intercept": 90434,
"multiplyInteger-cpu-arguments-slope": 519,
"multiplyInteger-memory-arguments-intercept": 0,
"multiplyInteger-memory-arguments-slope": 1,
"nullList-cpu-arguments": 74433,
"nullList-memory-arguments": 32,
"quotientInteger-cpu-arguments-constant": 85848,
"quotientInteger-cpu-arguments-model-arguments-intercept": 228465,
"quotientInteger-cpu-arguments-model-arguments-slope": 122,
"quotientInteger-memory-arguments-intercept": 0,
"quotientInteger-memory-arguments-minimum": 1,
"quotientInteger-memory-arguments-slope": 1,
"remainderInteger-cpu-arguments-constant": 85848,
"remainderInteger-cpu-arguments-model-arguments-intercept": 228465,
"remainderInteger-cpu-arguments-model-arguments-slope": 122,
"remainderInteger-memory-arguments-intercept": 0,
"remainderInteger-memory-arguments-minimum": 1,
"remainderInteger-memory-arguments-slope": 1,
"serialiseData-cpu-arguments-intercept": 955506,
"serialiseData-cpu-arguments-slope": 213312,
"serialiseData-memory-arguments-intercept": 0,
"serialiseData-memory-arguments-slope": 2,
"sha2_256-cpu-arguments-intercept": 270652,
"sha2_256-cpu-arguments-slope": 22588,
"sha2_256-memory-arguments": 4,
"sha3_256-cpu-arguments-intercept": 1457325,
"sha3_256-cpu-arguments-slope": 64566,
"sha3_256-memory-arguments": 4,
"sliceByteString-cpu-arguments-intercept": 20467,
"sliceByteString-cpu-arguments-slope": 1,
"sliceByteString-memory-arguments-intercept": 4,
"sliceByteString-memory-arguments-slope": 0,
"sndPair-cpu-arguments": 141992,
"sndPair-memory-arguments": 32,
"subtractInteger-cpu-arguments-intercept": 100788,
"subtractInteger-cpu-arguments-slope": 420,
"subtractInteger-memory-arguments-intercept": 1,
"subtractInteger-memory-arguments-slope": 1,
"tailList-cpu-arguments": 81663,
"tailList-memory-arguments": 32,
"trace-cpu-arguments": 59498,
"trace-memory-arguments": 32,
"unBData-cpu-arguments": 20142,
"unBData-memory-arguments": 32,
"unConstrData-cpu-arguments": 24588,
"unConstrData-memory-arguments": 32,
"unIData-cpu-arguments": 20744,
"unIData-memory-arguments": 32,
"unListData-cpu-arguments": 25933,
"unListData-memory-arguments": 32,
"unMapData-cpu-arguments": 24623,
"unMapData-memory-arguments": 32,
"verifyEcdsaSecp256k1Signature-cpu-arguments": 43053543,
"verifyEcdsaSecp256k1Signature-memory-arguments": 10,
"verifyEd25519Signature-cpu-arguments-intercept": 53384111,
"verifyEd25519Signature-cpu-arguments-slope": 14333,
"verifyEd25519Signature-memory-arguments": 10,
"verifySchnorrSecp256k1Signature-cpu-arguments-intercept": 43574283,
"verifySchnorrSecp256k1Signature-cpu-arguments-slope": 26308,
"verifySchnorrSecp256k1Signature-memory-arguments": 10,
"integerToByteString-cpu-arguments-c0": 1293828,
"integerToByteString-cpu-arguments-c1": 28716,
"integerToByteString-cpu-arguments-c2": 63,
"integerToByteString-memory-arguments-intercept": 0,
"integerToByteString-memory-arguments-slope": 1,
"byteStringToInteger-cpu-arguments-c0": 1006041,
"byteStringToInteger-cpu-arguments-c1": 43623,
"byteStringToInteger-cpu-arguments-c2": 251,
"byteStringToInteger-memory-arguments-intercept": 0,
"byteStringToInteger-memory-arguments-slope": 1,
}
-
Governance Group Head
A discussion arose regarding the selection of Jonathan Kelly to lead the governance working group. It was recalled that Jonathan Kelly’s appointment was presented as a recommendation , while Jonathan Kelly clarified they understood their selection as resulting from a unanimous vote within a smaller working group, a communication breakdown occurred. The group concluded that the working group should resolve its internal process for future leadership selections. -
Governance Parameter Discussions
The group determined that several agenda items, including net change limit parameters and new governance action types, were best handled by the Civics Committee and the Technical Steering Committee. They agreed to offer advice but defer decisions to these committees. -
Secretary Position
The group noted that the secretary position remained open due to Matthew Davis’s absence and Insect’s budgetary constraints in finding a replacement for Lewis. -
Parameter Guardrail Comments
Feedback on parameter guardrails was addressed, with the exception of the TFF01 (fixed fee guardrail), which may require future evaluation as a constitutional issue. The discussion around the fixed fee guardrail highlighted a potential need for flexibility as Cardano’s value increases. They decided not to make immediate changes, but rather address it through appropriate analysis if necessary. -
CIPs and Governance Updates
It was confirmed that CIP 1694, regarding auto-abstinence on proposals, had been implemented. The group suggested that future governance changes should follow the CPS, then the CIP process, with possible TSC funding for the work. -
Outstanding Actions and PCPs
The group identified outstanding actions, including Adam passing on governance documents to the new advisory group head and addressing PCP 003 concerning script execution limits after the hard fork. There was also mention of a potential future PCP related to SPO vote methodologies.