@@ -10,6 +10,7 @@ open import Data.Product.Properties
1010open import Data.Nat.Properties using (m+1+n≢m)
1111open import Data.Rational using (ℚ)
1212open import Relation.Nullary.Decidable
13+ open import Data.List.Relation.Unary.Any using (Any; here; there)
1314
1415open import Tactic.Derive.DecEq
1516open import Tactic.Derive.Show
@@ -116,6 +117,10 @@ record PParams : Type where
116117 coinsPerUTxOByte : Coin
117118 prices : Prices
118119 minFeeRefScriptCoinsPerByte : ℚ
120+ maxRefScriptSizePerTx : ℕ
121+ maxRefScriptSizePerBlock : ℕ
122+ refScriptCostStride : ℕ
123+ refScriptCostMultiplier : ℚ
119124\end{code}
120125\begin{code}[hide]
121126 minUTxOValue : Coin -- retired, keep for now
@@ -149,14 +154,31 @@ record PParams : Type where
149154\label{fig:protocol-parameter-declarations}
150155\end{figure*}
151156\begin{figure*}
157+ \begin{AgdaMultiCode}
152158\begin{code}
153- paramsWellFormed : PParams → Type
154- paramsWellFormed pp =
155- 0 ∉ fromList ( maxBlockSize ∷ maxTxSize ∷ maxHeaderSize ∷ maxValSize
156- ∷ minUTxOValue ∷ poolDeposit ∷ collateralPercentage ∷ ccMaxTermLength
157- ∷ govActionLifetime ∷ govActionDeposit ∷ drepDeposit ∷ [] )
159+ positivePParams : PParams → List ℕ
160+ positivePParams pp = ( maxBlockSize ∷ maxTxSize ∷ maxHeaderSize ∷ maxValSize ∷ refScriptCostStride
161+ ∷ coinsPerUTxOByte ∷ poolDeposit ∷ collateralPercentage ∷ ccMaxTermLength
162+ ∷ govActionLifetime ∷ govActionDeposit ∷ drepDeposit ∷ [] )
163+ \end{code}
164+ \begin{code}[hide]
158165 where open PParams pp
159166\end{code}
167+ \begin{code}
168+
169+ paramsWellFormed : PParams → Type
170+ paramsWellFormed pp = 0 ∉ fromList (positivePParams pp)
171+ \end{code}
172+ \begin{code}[hide]
173+ paramsWF-elim : (pp : PParams) → paramsWellFormed pp → (n : ℕ) → n ∈ˡ (positivePParams pp) → n > 0
174+ paramsWF-elim pp pwf (suc n) x = z<s
175+ paramsWF-elim pp pwf 0 0∈ = ⊥-elim (pwf (to ∈-fromList 0∈))
176+ where open Equivalence
177+
178+ refScriptCostStride>0 : (pp : PParams) → paramsWellFormed pp → (PParams.refScriptCostStride pp) > 0
179+ refScriptCostStride>0 pp pwf = paramsWF-elim pp pwf (PParams.refScriptCostStride pp) (there (there (there (there (here refl)))))
180+ \end{code}
181+ \end{AgdaMultiCode}
160182\caption{Protocol parameter well-formedness}
161183\label{fig:protocol-parameter-well-formedness}
162184\end{figure*}
@@ -191,8 +213,12 @@ module PParamsUpdate where
191213 keyDeposit : Maybe Coin
192214 poolDeposit : Maybe Coin
193215 coinsPerUTxOByte : Maybe Coin
194- minFeeRefScriptCoinsPerByte : Maybe ℚ
195216 prices : Maybe Prices
217+ minFeeRefScriptCoinsPerByte : Maybe ℚ
218+ maxRefScriptSizePerTx : Maybe ℕ
219+ maxRefScriptSizePerBlock : Maybe ℕ
220+ refScriptCostStride : Maybe ℕ
221+ refScriptCostMultiplier : Maybe ℚ
196222 minUTxOValue : Maybe Coin -- retired, keep for now
197223 a0 : Maybe ℚ
198224 Emax : Maybe Epoch
@@ -209,7 +235,7 @@ module PParamsUpdate where
209235 paramsUpdateWellFormed : PParamsUpdate → Type
210236 paramsUpdateWellFormed ppu =
211237 just 0 ∉ fromList ( maxBlockSize ∷ maxTxSize ∷ maxHeaderSize ∷ maxValSize
212- ∷ minUTxOValue ∷ poolDeposit ∷ collateralPercentage ∷ ccMaxTermLength
238+ ∷ coinsPerUTxOByte ∷ poolDeposit ∷ collateralPercentage ∷ ccMaxTermLength
213239 ∷ govActionLifetime ∷ govActionDeposit ∷ drepDeposit ∷ [] )
214240 where open PParamsUpdate ppu
215241
@@ -238,6 +264,10 @@ module PParamsUpdate where
238264 ∷ is-just poolDeposit
239265 ∷ is-just coinsPerUTxOByte
240266 ∷ is-just minFeeRefScriptCoinsPerByte
267+ ∷ is-just maxRefScriptSizePerTx
268+ ∷ is-just maxRefScriptSizePerBlock
269+ ∷ is-just refScriptCostStride
270+ ∷ is-just refScriptCostMultiplier
241271 ∷ is-just prices
242272 ∷ is-just minUTxOValue
243273 ∷ [])
@@ -308,6 +338,10 @@ module PParamsUpdate where
308338 ; poolDeposit = U.poolDeposit ?↗ P.poolDeposit
309339 ; coinsPerUTxOByte = U.coinsPerUTxOByte ?↗ P.coinsPerUTxOByte
310340 ; minFeeRefScriptCoinsPerByte = U.minFeeRefScriptCoinsPerByte ?↗ P.minFeeRefScriptCoinsPerByte
341+ ; maxRefScriptSizePerTx = U.maxRefScriptSizePerTx ?↗ P.maxRefScriptSizePerTx
342+ ; maxRefScriptSizePerBlock = U.maxRefScriptSizePerBlock ?↗ P.maxRefScriptSizePerBlock
343+ ; refScriptCostStride = U.refScriptCostStride ?↗ P.refScriptCostStride
344+ ; refScriptCostMultiplier = U.refScriptCostMultiplier ?↗ P.refScriptCostMultiplier
311345 ; prices = U.prices ?↗ P.prices
312346 ; minUTxOValue = U.minUTxOValue ?↗ P.minUTxOValue
313347 ; a0 = U.a0 ?↗ P.a0
@@ -331,7 +365,6 @@ module PParamsUpdate where
331365 instance
332366 unquoteDecl DecEq-PParamsUpdate = derive-DecEq
333367 ((quote PParamsUpdate , DecEq-PParamsUpdate) ∷ [])
334-
335368\end{code}
336369% Retiring ProtVer's documentation since ProtVer is retired.
337370% \ProtVer represents the protocol version used in the Cardano ledger.
@@ -432,4 +465,5 @@ record GovParams : Type₁ where
432465 field ppHashingScheme : isHashableSet PParams
433466 open isHashableSet ppHashingScheme renaming (THash to PPHash) public
434467 field ⦃ DecEq-UpdT ⦄ : DecEq PParamsUpdate
468+ -- ⦃ Show-UpdT ⦄ : Show PParamsUpdate
435469\end{code}
0 commit comments