Skip to content

Commit a7f61ed

Browse files
committed
Synchronize local copy of PParams with the ledger spec
1 parent f90198c commit a7f61ed

File tree

1 file changed

+42
-8
lines changed

1 file changed

+42
-8
lines changed

docs/agda-spec/src/Ledger/PParams.lagda

Lines changed: 42 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ open import Data.Product.Properties
1010
open import Data.Nat.Properties using (m+1+n≢m)
1111
open import Data.Rational using (ℚ)
1212
open import Relation.Nullary.Decidable
13+
open import Data.List.Relation.Unary.Any using (Any; here; there)
1314

1415
open import Tactic.Derive.DecEq
1516
open 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

Comments
 (0)