Skip to content

Commit 14803ec

Browse files
Add additional check for ccreghot (#506)
* Add additional check for `ccreghot` --------- Co-authored-by: William DeMeo <williamdemeo@gmail.com>
1 parent 6393a9e commit 14803ec

File tree

11 files changed

+90
-77
lines changed

11 files changed

+90
-77
lines changed

CHANGELOG.md

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,9 @@
3636
- Check `proposal ≡ nothing` if action not `ChangePParams` or `TreasuryWdrl`
3737
- Implement proper vote counting for SPOs
3838
- Check a DRep exists before delegating to it.
39+
- Prevent older Plutus versions in transaction with Conway features
40+
- Allow reference scripts and inputs to be used with Plutus V1
41+
- Add sanity checks for delegating hot credentials
3942

4043
### V0.9
4144

src/Ledger/Certs.lagda

Lines changed: 20 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -57,10 +57,10 @@ data DCert : Type where
5757
ccreghot : Credential → Maybe Credential → DCert
5858
\end{code}
5959
\begin{code}[hide]
60-
-- The `reg` cert is deprecated in Conway, but it's still present in this era
61-
-- for backwards compatibility. This has been added to the spec to make
60+
-- The `reg` cert is deprecated in Conway, but it's still present in this era
61+
-- for backwards compatibility. This has been added to the spec to make
6262
-- conformance testing work properly. We don't talk about this certificate
63-
-- in the pdf because it has been deprecated and we want to discourage people
63+
-- in the pdf because it has been deprecated and we want to discourage people
6464
-- from using it.
6565
reg : Credential → Coin → DCert
6666
\end{code}
@@ -76,10 +76,10 @@ cwitness (deregdrep c _) = just c
7676
cwitness (ccreghot c _) = just c
7777
\end{code}
7878
\begin{code}[hide]
79-
-- The implementation requires the `reg` cert to be witnessed only if the
80-
-- deposit is set. There didn't use to be a field for the deposit, but that was
81-
-- added in the Conway era to make it easier to determine, just by looking at
82-
-- the transaction, how much deposit was paid for that certificate.
79+
-- The implementation requires the `reg` cert to be witnessed only if the
80+
-- deposit is set. There didn't use to be a field for the deposit, but that was
81+
-- added in the Conway era to make it easier to determine, just by looking at
82+
-- the transaction, how much deposit was paid for that certificate.
8383
cwitness (reg _ zero) = nothing
8484
cwitness (reg c (suc _)) = just c
8585
\end{code}
@@ -94,14 +94,15 @@ cwitness (reg c (suc _)) = just c
9494
record CertEnv : Type where
9595
\end{code}
9696
\begin{code}[hide]
97-
constructor ⟦_,_,_,_⟧ᶜ
97+
constructor ⟦_,_,_,_,_⟧ᶜ
9898
field
9999
\end{code}
100100
\begin{code}
101101
epoch : Epoch
102102
pp : PParams
103103
votes : List GovVote
104104
wdrls : RwdAddr ⇀ Coin
105+
coldCreds : ℙ Credential
105106

106107
record DState : Type where
107108
\end{code}
@@ -207,6 +208,7 @@ private variable
207208
stᵈ stᵈ' : DState
208209
stᵍ stᵍ' : GState
209210
stᵖ stᵖ' : PState
211+
cc : ℙ Credential
210212
\end{code}
211213

212214
\subsection{Removal of Pointer Addresses, Genesis Delegations and MIR Certificates}
@@ -270,10 +272,9 @@ constitutional committee.
270272
hot credential is more conveniently accessed. If the hot credential
271273
is compromised, it can be changed using the cold credential.}
272274
We check that the cold key did not previously
273-
resign from the committee. Note that we intentionally do not check
274-
if the cold key is actually part of the committee; if it isn't, then
275-
the corresponding hot key does not carry any voting power. By allowing
276-
this, a newly elected member of the constitutional committee can
275+
resign from the committee. We allow this delegation for any cold
276+
credential that is either part of \EnactState or is is a proposal.
277+
This allows a newly elected member of the constitutional committee to
277278
immediately delegate their vote to a hot key and use it to vote. Since
278279
votes are counted after previous actions have been enacted, this allows
279280
constitutional committee members to act without a delay of one epoch.
@@ -389,18 +390,19 @@ data _⊢_⇀⦇_,GOVCERT⦈_ where
389390
GOVCERT-regdrep : ∀ {pp} → let open PParams pp in
390391
∙ (d ≡ drepDeposit × c ∉ dom dReps) ⊎ (d ≡ 0 × c ∈ dom dReps)
391392
────────────────────────────────
392-
⟦ e , pp , vs , wdrls ⟧ᶜ ⊢ ⟦ dReps , ccKeys ⟧ᵛ ⇀⦇ regdrep c d an ,GOVCERT⦈
393+
⟦ e , pp , vs , wdrls , cc ⟧ᶜ ⊢ ⟦ dReps , ccKeys ⟧ᵛ ⇀⦇ regdrep c d an ,GOVCERT⦈
393394
⟦ ❴ c , e + drepActivity ❵ ∪ˡ dReps , ccKeys ⟧ᵛ
394395

395396
GOVCERT-deregdrep :
396397
∙ c ∈ dom dReps
397398
────────────────────────────────
398-
⟦ e , pp , vs , wdrls ⟧ᶜ ⊢ ⟦ dReps , ccKeys ⟧ᵛ ⇀⦇ deregdrep c d ,GOVCERT⦈ ⟦ dReps ∣ ❴ c ❵ ᶜ , ccKeys ⟧ᵛ
399+
⟦ e , pp , vs , wdrls , cc ⟧ᶜ ⊢ ⟦ dReps , ccKeys ⟧ᵛ ⇀⦇ deregdrep c d ,GOVCERT⦈ ⟦ dReps ∣ ❴ c ❵ ᶜ , ccKeys ⟧ᵛ
399400

400401
GOVCERT-ccreghot :
401402
∙ (c , nothing) ∉ ccKeys
403+
∙ c ∈ cc
402404
────────────────────────────────
403-
Γ ⊢ ⟦ dReps , ccKeys ⟧ᵛ ⇀⦇ ccreghot c mc ,GOVCERT⦈ ⟦ dReps , ❴ c , mc ❵ ∪ˡ ccKeys ⟧ᵛ
405+
⟦ e , pp , vs , wdrls , cc ⟧ᶜ ⊢ ⟦ dReps , ccKeys ⟧ᵛ ⇀⦇ ccreghot c mc ,GOVCERT⦈ ⟦ dReps , ❴ c , mc ❵ ∪ˡ ccKeys ⟧ᵛ
404406
\end{code}
405407
\end{AgdaSuppressSpace}
406408
\caption{Auxiliary GOVCERT transition system}
@@ -430,12 +432,12 @@ data _⊢_⇀⦇_,CERT⦈_ where
430432
CERT-deleg :
431433
∙ ⟦ pp , PState.pools stᵖ , dom (GState.dreps stᵍ) ⟧ᵈᵉ ⊢ stᵈ ⇀⦇ dCert ,DELEG⦈ stᵈ'
432434
────────────────────────────────
433-
⟦ e , pp , vs , wdrls ⟧ᶜ ⊢ ⟦ stᵈ , stᵖ , stᵍ ⟧ᶜˢ ⇀⦇ dCert ,CERT⦈ ⟦ stᵈ' , stᵖ , stᵍ ⟧ᶜˢ
435+
⟦ e , pp , vs , wdrls , cc ⟧ᶜ ⊢ ⟦ stᵈ , stᵖ , stᵍ ⟧ᶜˢ ⇀⦇ dCert ,CERT⦈ ⟦ stᵈ' , stᵖ , stᵍ ⟧ᶜˢ
434436

435437
CERT-pool :
436438
∙ pp ⊢ stᵖ ⇀⦇ dCert ,POOL⦈ stᵖ'
437439
────────────────────────────────
438-
⟦ e , pp , vs , wdrls ⟧ᶜ ⊢ ⟦ stᵈ , stᵖ , stᵍ ⟧ᶜˢ ⇀⦇ dCert ,CERT⦈ ⟦ stᵈ , stᵖ' , stᵍ ⟧ᶜˢ
440+
⟦ e , pp , vs , wdrls , cc ⟧ᶜ ⊢ ⟦ stᵈ , stᵖ , stᵍ ⟧ᶜˢ ⇀⦇ dCert ,CERT⦈ ⟦ stᵈ , stᵖ' , stᵍ ⟧ᶜˢ
439441

440442
CERT-vdel :
441443
∙ Γ ⊢ stᵍ ⇀⦇ dCert ,GOVCERT⦈ stᵍ'
@@ -460,7 +462,7 @@ data _⊢_⇀⦇_,CERTBASE⦈_ where
460462
∙ filter isKeyHash wdrlCreds ⊆ dom voteDelegs
461463
∙ mapˢ (map₁ stake) (wdrls ˢ) ⊆ rewards ˢ
462464
────────────────────────────────
463-
⟦ e , pp , vs , wdrls ⟧ᶜ ⊢
465+
⟦ e , pp , vs , wdrls , cc ⟧ᶜ ⊢
464466
⟦ ⟦ voteDelegs , stakeDelegs , rewards ⟧ᵈ
465467
, stᵖ
466468
, ⟦ dReps , ccHotKeys ⟧ᵛ

src/Ledger/Certs/Properties.agda

Lines changed: 24 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -43,12 +43,11 @@ instance
4343
_ failure "Unexpected certificate in DELEG"
4444
Computational-DELEG .completeness ⟦ pp , pools , delegatees ⟧ᵈᵉ ⟦ _ , _ , rwds ⟧ᵈ (delegate c mv mc d)
4545
s' (DELEG-delegate p) rewrite dec-yes (¿ (c ∉ dom rwds d ≡ pp .PParams.keyDeposit)
46-
× (c ∈ dom rwds d ≡ 0)
47-
× mv ∈ mapˢ (just ∘ credVoter DRep) delegatees ∪
48-
fromList ( nothing ∷ just abstainRep ∷ just noConfidenceRep ∷ [] )
49-
× mc ∈ mapˢ just (dom pools) ∪ ❴ nothing ❵
46+
× (c ∈ dom rwds d ≡ 0)
47+
× mv ∈ mapˢ (just ∘ credVoter DRep) delegatees ∪ fromList ( nothing ∷ just abstainRep ∷ just noConfidenceRep ∷ [] )
48+
× mc ∈ mapˢ just (dom pools) ∪ ❴ nothing ❵
5049
¿) p .proj₂ = refl
51-
Computational-DELEG .completeness ⟦ _ , _ , _ ⟧ᵈᵉ ⟦ _ , _ , rwds ⟧ᵈ (dereg c d) _ (DELEG-dereg p)
50+
Computational-DELEG .completeness ⟦ _ , _ , deps ⟧ᵈᵉ ⟦ _ , _ , rwds ⟧ᵈ (dereg c d) _ (DELEG-dereg p)
5251
rewrite dec-yes (¿ (c , 0) ∈ rwds ¿) p .proj₂ = refl
5352
Computational-DELEG .completeness ⟦ pp , _ , _ ⟧ᵈᵉ ⟦ _ , _ , rwds ⟧ᵈ (reg c d) _ (DELEG-reg p)
5453
rewrite dec-yes (¿ c ∉ dom rwds × (d ≡ pp .PParams.keyDeposit ⊎ d ≡ 0) ¿) p .proj₂ = refl
@@ -65,60 +64,60 @@ instance
6564
Computational-POOL .completeness _ _ (retirepool _ _) _ POOL-retirepool = refl
6665

6766
Computational-GOVCERT : Computational _⊢_⇀⦇_,GOVCERT⦈_ String
68-
Computational-GOVCERT .computeProof ⟦ _ , pp , _ , _ ⟧ᶜ ⟦ dReps , _ ⟧ᵛ (regdrep c d _) =
67+
Computational-GOVCERT .computeProof ⟦ _ , pp , _ , _ , _ ⟧ᶜ ⟦ dReps , _ ⟧ᵛ (regdrep c d _) =
6968
let open PParams pp in
7069
case ¿ (d ≡ drepDeposit × c ∉ dom dReps)
7170
⊎ (d ≡ 0 × c ∈ dom dReps) ¿ of λ where
7271
(yes p) success (-, GOVCERT-regdrep p)
7372
(no ¬p) failure (genErrors ¬p)
74-
Computational-GOVCERT .computeProof ⟦ _ , _ , _ , _ ⟧ᶜ ⟦ dReps , _ ⟧ᵛ (deregdrep c d) =
75-
case ¿ c ∈ dom dReps ¿ of λ where
73+
Computational-GOVCERT .computeProof _ ⟦ dReps , _ ⟧ᵛ (deregdrep c _) =
74+
case c ∈? dom dReps of λ where
7675
(yes p) success (-, GOVCERT-deregdrep p)
7776
(no ¬p) failure (genErrors ¬p)
78-
Computational-GOVCERT .computeProof _ ⟦ _ , ccKeys ⟧ᵛ (ccreghot c _) =
79-
case ¬? ((c , nothing) ∈? (ccKeys ˢ)) of λ where
77+
Computational-GOVCERT .computeProof ⟦ _ , _ , _ , _ , cc ⟧ᶜ ⟦ _ , ccKeys ⟧ᵛ (ccreghot c _) =
78+
case ¿ ((c , nothing) ccKeys ˢ) × c ∈ cc ¿ of λ where
8079
(yes p) success (-, GOVCERT-ccreghot p)
8180
(no ¬p) failure (genErrors ¬p)
8281
Computational-GOVCERT .computeProof _ _ _ = failure "Unexpected certificate in GOVCERT"
83-
Computational-GOVCERT .completeness ⟦ _ , pp , _ , _ ⟧ᶜ ⟦ dReps , _ ⟧ᵛ
82+
Computational-GOVCERT .completeness ⟦ _ , pp , _ , _ , _ ⟧ᶜ ⟦ dReps , _ ⟧ᵛ
8483
(regdrep c d _) _ (GOVCERT-regdrep p)
8584
rewrite dec-yes
8685
¿ (let open PParams pp in
8786
(d ≡ drepDeposit × c ∉ dom dReps) ⊎ (d ≡ 0 × c ∈ dom dReps))
8887
¿ p .proj₂ = refl
89-
Computational-GOVCERT .completeness ⟦ _ , _ , _ , _ ⟧ᶜ ⟦ dReps , _ ⟧ᵛ
90-
(deregdrep c d) _ (GOVCERT-deregdrep p)
91-
rewrite dec-yes (¿ c ∈ dom dReps ¿) p .proj₂ = refl
92-
Computational-GOVCERT .completeness _ ⟦ _ , ccKeys ⟧ᵛ
93-
(ccreghot c _) _ (GOVCERT-ccreghot ¬p)
94-
rewrite dec-no ((c , nothing) ∈? (ccKeys ˢ)) ¬p = refl
88+
Computational-GOVCERT .completeness _ ⟦ dReps , _ ⟧ᵛ
89+
(deregdrep c _) _ (GOVCERT-deregdrep p)
90+
rewrite dec-yes (c ∈? dom dReps) p .proj₂ = refl
91+
Computational-GOVCERT .completeness ⟦ _ , _ , _ , _ , cc ⟧ᶜ ⟦ _ , ccKeys ⟧ᵛ
92+
(ccreghot c _) _ (GOVCERT-ccreghot p)
93+
rewrite dec-yes (¿ (((c , nothing) ccKeys ˢ) × c ∈ cc) ¿) p .proj₂ = refl
9594

9695
Computational-CERT : Computational _⊢_⇀⦇_,CERT⦈_ String
97-
Computational-CERT .computeProof Γ@(⟦ e , pp , vs , _ ⟧ᶜ) ⟦ stᵈ , stᵖ , stᵍ ⟧ᶜˢ dCert
96+
Computational-CERT .computeProof Γ@(⟦ e , pp , vs , _ , _ ⟧ᶜ) ⟦ stᵈ , stᵖ , stᵍ ⟧ᶜˢ dCert
9897
with computeProof ⟦ pp , PState.pools stᵖ , dom (GState.dreps stᵍ) ⟧ᵈᵉ stᵈ dCert
9998
| computeProof pp stᵖ dCert | computeProof Γ stᵍ dCert
10099
... | success (_ , h) | _ | _ = success (-, CERT-deleg h)
101100
... | failure _ | success (_ , h) | _ = success (-, CERT-pool h)
102101
... | failure _ | failure _ | success (_ , h) = success (-, CERT-vdel h)
103102
... | failure e₁ | failure e₂ | failure e₃ = failure $
104103
"DELEG: " <> e₁ <> "\nPOOL: " <> e₂ <> "\nVDEL: " <> e₃
105-
Computational-CERT .completeness ⟦ _ , pp , _ , wdrls ⟧ᶜ ⟦ stᵈ , stᵖ , stᵍ ⟧ᶜˢ
104+
Computational-CERT .completeness ⟦ _ , pp , _ , wdrls , _ ⟧ᶜ ⟦ stᵈ , stᵖ , stᵍ ⟧ᶜˢ
106105
dCert@(delegate c mv mc d) ⟦ stᵈ' , stᵖ , stᵍ ⟧ᶜˢ (CERT-deleg h)
107106
with computeProof ⟦ pp , PState.pools stᵖ , dom (GState.dreps stᵍ) ⟧ᵈᵉ stᵈ dCert | completeness _ _ _ _ h
108107
... | success _ | refl = refl
109-
Computational-CERT .completeness ⟦ _ , pp , _ , wdrls ⟧ᶜ ⟦ stᵈ , stᵖ , stᵍ ⟧ᶜˢ
108+
Computational-CERT .completeness ⟦ _ , pp , _ , wdrls , _ ⟧ᶜ ⟦ stᵈ , stᵖ , stᵍ ⟧ᶜˢ
110109
dCert@(reg c d) ⟦ stᵈ' , stᵖ , stᵍ ⟧ᶜˢ (CERT-deleg h)
111110
with computeProof ⟦ pp , PState.pools stᵖ , dom (GState.dreps stᵍ) ⟧ᵈᵉ stᵈ dCert | completeness _ _ _ _ h
112111
... | success _ | refl = refl
113-
Computational-CERT .completeness ⟦ _ , pp , _ , wdrls ⟧ᶜ ⟦ stᵈ , stᵖ , stᵍ ⟧ᶜˢ
112+
Computational-CERT .completeness ⟦ _ , pp , _ , wdrls , _ ⟧ᶜ ⟦ stᵈ , stᵖ , stᵍ ⟧ᶜˢ
114113
dCert@(dereg c _) ⟦ stᵈ' , stᵖ , stᵍ ⟧ᶜˢ (CERT-deleg h)
115114
with computeProof ⟦ pp , PState.pools stᵖ , dom (GState.dreps stᵍ) ⟧ᵈᵉ stᵈ dCert | completeness _ _ _ _ h
116115
... | success _ | refl = refl
117-
Computational-CERT .completeness ⟦ _ , pp , _ , _ ⟧ᶜ ⟦ stᵈ , stᵖ , stᵍ ⟧ᶜˢ
116+
Computational-CERT .completeness ⟦ _ , pp , _ , _ , _ ⟧ᶜ ⟦ stᵈ , stᵖ , stᵍ ⟧ᶜˢ
118117
dCert@(regpool c poolParams) ⟦ stᵈ , stᵖ' , stᵍ ⟧ᶜˢ (CERT-pool h)
119118
with computeProof pp stᵖ dCert | completeness _ _ _ _ h
120119
... | success _ | refl = refl
121-
Computational-CERT .completeness ⟦ _ , pp , _ , _ ⟧ᶜ ⟦ stᵈ , stᵖ , stᵍ ⟧ᶜˢ
120+
Computational-CERT .completeness ⟦ _ , pp , _ , _ , _ ⟧ᶜ ⟦ stᵈ , stᵖ , stᵍ ⟧ᶜˢ
122121
dCert@(retirepool c e) ⟦ stᵈ , stᵖ' , stᵍ ⟧ᶜˢ (CERT-pool h)
123122
with completeness _ _ _ _ h
124123
... | refl = refl
@@ -137,15 +136,15 @@ instance
137136
... | success _ | refl = refl
138137

139138
Computational-CERTBASE : Computational _⊢_⇀⦇_,CERTBASE⦈_ String
140-
Computational-CERTBASE .computeProof ⟦ e , pp , vs , wdrls ⟧ᶜ st _ =
139+
Computational-CERTBASE .computeProof ⟦ e , pp , vs , wdrls , _ ⟧ᶜ st _ =
141140
let open PParams pp; open CertState st; open GState gState; open DState dState
142141
refresh = mapPartial getDRepVote (fromList vs)
143142
refreshedDReps = mapValueRestricted (const (e + drepActivity)) dreps refresh
144143
in case ¿ filterˢ isKeyHash (mapˢ RwdAddr.stake (dom wdrls)) ⊆ dom voteDelegs
145144
× mapˢ (map₁ RwdAddr.stake) (wdrls ˢ) ⊆ rewards ˢ ¿ of λ where
146145
(yes p) success (-, CERT-base p)
147146
(no ¬p) failure (genErrors ¬p)
148-
Computational-CERTBASE .completeness ⟦ e , pp , vs , wdrls ⟧ᶜ st _ st' (CERT-base p)
147+
Computational-CERTBASE .completeness ⟦ e , pp , vs , wdrls , _ ⟧ᶜ st _ st' (CERT-base p)
149148
rewrite let dState = CertState.dState st; open DState dState in
150149
dec-yes ¿ filterˢ isKeyHash (mapˢ RwdAddr.stake (dom wdrls)) ⊆ dom voteDelegs
151150
× mapˢ (map₁ RwdAddr.stake) (wdrls ˢ) ⊆ rewards ˢ ¿

src/Ledger/Conway/Conformance/Certs.agda

Lines changed: 10 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -80,7 +80,7 @@ private variable
8080
d : Coin
8181
c : Credential
8282
mc : Maybe Credential
83-
delegatees : ℙ Credential
83+
delegatees cc : ℙ Credential
8484
dCert : DCert
8585
dep ddep gdep : Deposits
8686
e : Epoch
@@ -151,7 +151,7 @@ data _⊢_⇀⦇_,GOVCERT⦈_ : GovCertEnv → GState → DCert → GState → T
151151
GOVCERT-regdrep : {pp} let open PParams pp in
152152
∙ (d ≡ drepDeposit × c ∉ dom dReps) ⊎ (d ≡ 0 × c ∈ dom dReps)
153153
────────────────────────────────
154-
⟦ e , pp , vs , wdrls ⟧ᶜ ⊢
154+
⟦ e , pp , vs , wdrls , cc ⟧ᶜ ⊢
155155
⟦ dReps , ccKeys , dep ⟧ᵛ
156156
⇀⦇ regdrep c d an ,GOVCERT⦈
157157
⟦ ❴ c , e + drepActivity ❵ ∪ˡ dReps , ccKeys
@@ -161,27 +161,28 @@ data _⊢_⇀⦇_,GOVCERT⦈_ : GovCertEnv → GState → DCert → GState → T
161161
∙ c ∈ dom dReps
162162
∙ (DRepDeposit c , d) ∈ dep
163163
────────────────────────────────
164-
Γ ⊢ ⟦ dReps , ccKeys , dep ⟧ᵛ
164+
⟦ e , pp , vs , wdrls , cc ⟧ᶜ ⊢ ⟦ dReps , ccKeys , dep ⟧ᵛ
165165
⇀⦇ deregdrep c d ,GOVCERT⦈
166-
⟦ dReps ∣ ❴ c ❵ ᶜ , ccKeys , updateCertDeposit (CertEnv.pp Γ) (deregdrep c d) dep ⟧ᵛ
166+
⟦ dReps ∣ ❴ c ❵ ᶜ , ccKeys , updateCertDeposit pp (deregdrep c d) dep ⟧ᵛ
167167

168168
GOVCERT-ccreghot :
169169
∙ (c , nothing) ∉ ccKeys
170+
∙ c ∈ cc
170171
────────────────────────────────
171-
Γ ⊢ ⟦ dReps , ccKeys , dep ⟧ᵛ
172+
⟦ e , pp , vs , wdrls , cc ⟧ᶜ ⊢ ⟦ dReps , ccKeys , dep ⟧ᵛ
172173
⇀⦇ ccreghot c mc ,GOVCERT⦈
173-
⟦ dReps , ❴ c , mc ❵ ∪ˡ ccKeys , updateCertDeposit (CertEnv.pp Γ) (ccreghot c mc) dep ⟧ᵛ
174+
⟦ dReps , ❴ c , mc ❵ ∪ˡ ccKeys , updateCertDeposit pp (ccreghot c mc) dep ⟧ᵛ
174175

175176
data _⊢_⇀⦇_,CERT⦈_ : CertEnv CertState DCert CertState Type where
176177
CERT-deleg :
177178
∙ ⟦ pp , PState.pools stᵖ , dom (GState.dreps stᵍ) ⟧ᵈᵉ ⊢ stᵈ ⇀⦇ dCert ,DELEG⦈ stᵈ'
178179
────────────────────────────────
179-
⟦ e , pp , vs , wdrls ⟧ᶜ ⊢ ⟦ stᵈ , stᵖ , stᵍ ⟧ᶜˢ ⇀⦇ dCert ,CERT⦈ ⟦ stᵈ' , stᵖ , stᵍ ⟧ᶜˢ
180+
⟦ e , pp , vs , wdrls , cc ⟧ᶜ ⊢ ⟦ stᵈ , stᵖ , stᵍ ⟧ᶜˢ ⇀⦇ dCert ,CERT⦈ ⟦ stᵈ' , stᵖ , stᵍ ⟧ᶜˢ
180181

181182
CERT-pool :
182183
∙ pp ⊢ stᵖ ⇀⦇ dCert ,POOL⦈ stᵖ'
183184
────────────────────────────────
184-
⟦ e , pp , vs , wdrls ⟧ᶜ ⊢ ⟦ stᵈ , stᵖ , stᵍ ⟧ᶜˢ ⇀⦇ dCert ,CERT⦈ ⟦ stᵈ , stᵖ' , stᵍ ⟧ᶜˢ
185+
⟦ e , pp , vs , wdrls , cc ⟧ᶜ ⊢ ⟦ stᵈ , stᵖ , stᵍ ⟧ᶜˢ ⇀⦇ dCert ,CERT⦈ ⟦ stᵈ , stᵖ' , stᵍ ⟧ᶜˢ
185186

186187
CERT-vdel :
187188
∙ Γ ⊢ stᵍ ⇀⦇ dCert ,GOVCERT⦈ stᵍ'
@@ -199,7 +200,7 @@ data _⊢_⇀⦇_,CERTBASE⦈_ : CertEnv → CertState → ⊤ → CertState →
199200
∙ filterˢ isKeyHash wdrlCreds ⊆ dom voteDelegs
200201
∙ mapˢ (map₁ stake) (wdrls ˢ) ⊆ rewards ˢ
201202
────────────────────────────────
202-
⟦ e , pp , vs , wdrls ⟧ᶜ ⊢
203+
⟦ e , pp , vs , wdrls , cc ⟧ᶜ ⊢
203204
⟦ ⟦ voteDelegs , stakeDelegs , rewards , ddep ⟧ᵈ
204205
, stᵖ
205206
, ⟦ dReps , ccHotKeys , gdep ⟧ᵛ

0 commit comments

Comments
 (0)