Skip to content

Commit 2ecec7b

Browse files
committed
incorporate Carlos's change requests
and fix bug introduced by rebase
1 parent 9ef7d76 commit 2ecec7b

File tree

10 files changed

+87
-60
lines changed

10 files changed

+87
-60
lines changed

src/Ledger/Conway/Conformance/Certs.agda

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -200,7 +200,7 @@ data _⊢_⇀⦇_,CERT⦈_ : CertEnv → CertState → DCert → CertState → T
200200

201201
data _⊢_⇀⦇_,PRE-CERT⦈_ : CertEnv CertState CertState Type where
202202

203-
CERT-init :
203+
CERT-pre :
204204
let open PParams pp
205205
refresh = mapPartial (isGovVoterDRep ∘ voter) (fromList vs)
206206
refreshedDReps = mapValueRestricted (const (e + drepActivity)) dReps refresh
@@ -215,7 +215,7 @@ data _⊢_⇀⦇_,PRE-CERT⦈_ : CertEnv → CertState → ⊤ → CertState →
215215

216216
data _⊢_⇀⦇_,POST-CERT⦈_ : CertEnv CertState CertState Type where
217217

218-
CERT-last :
218+
CERT-post :
219219
⟦ e , pp , vs , wdrls , cc ⟧
220220
⊢ ⟦ ⟦ voteDelegs , stakeDelegs , rewards , ddep ⟧ , stᵖ , stᵍ ⟧
221221
⇀⦇ _ ,POST-CERT⦈

src/Ledger/Conway/Conformance/Certs/Properties.agda

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -177,18 +177,18 @@ instance
177177
refreshedDReps = mapValueRestricted (const (CertEnv.epoch ce + drepActivity)) dreps refresh
178178
in case ¿ filterˢ isKeyHash (mapˢ RwdAddr.stake (dom wdrls)) ⊆ dom voteDelegs
179179
× mapˢ (map₁ RwdAddr.stake) (wdrls ˢ) ⊆ rewards ˢ ¿ of λ where
180-
(yes p) success (-, CERT-init p)
180+
(yes p) success (-, CERT-pre p)
181181
(no ¬p) failure (genErrors ¬p)
182-
Computational-PRE-CERT .completeness ce st _ st' (CERT-init p)
182+
Computational-PRE-CERT .completeness ce st _ st' (CERT-pre p)
183183
rewrite let dState = CertState.dState st; open DState dState in
184184
dec-yes ¿ filterˢ isKeyHash (mapˢ RwdAddr.stake (dom (CertEnv.wdrls ce))) ⊆ dom voteDelegs
185185
× mapˢ (map₁ RwdAddr.stake) (CertEnv.wdrls ce ˢ) ⊆ rewards ˢ ¿
186186
p .proj₂ = refl
187187

188188
-- POST-CERT has no premises, so computing always succeeds
189-
-- with the unique post-state and proof CERT-last.
189+
-- with the unique post-state and proof CERT-post.
190190
Computational-POST-CERT : Computational _⊢_⇀⦇_,POST-CERT⦈_ String
191-
Computational-POST-CERT .computeProof ce cs tt = success ( cs' , CERT-last)
191+
Computational-POST-CERT .computeProof ce cs tt = success ( cs' , CERT-post)
192192
where
193193
dreps : DReps
194194
dreps = GState.dreps (CertState.gState cs)
@@ -199,7 +199,7 @@ instance
199199

200200
-- Completeness: the relational proof pins s' to exactly `post`,
201201
-- and computeProof returns success at that same state; so refl.
202-
Computational-POST-CERT .completeness ce cs _ cs' CERT-last = refl
202+
Computational-POST-CERT .completeness ce cs _ cs' CERT-post = refl
203203

204204

205205
Computational-CERTS : Computational _⊢_⇀⦇_,CERTS⦈_ String

src/Ledger/Conway/Conformance/Equivalence.agda

Lines changed: 6 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -217,7 +217,7 @@ getValidCertDepositsC : ∀ Γ s {s'} tx
217217
isValid tx ≡ true
218218
⟦ epoch slot , pparams , txGovVotes , txWithdrawals , cc ⟧ C.⊢ certState ⇀⦇ txCerts ,CERTS⦈ s'
219219
L.ValidCertDeposits pparams deposits txCerts
220-
getValidCertDepositsC Γ s tx wf refl (run {s' = s'} (C.CERT-init _ , cert-post)) =
220+
getValidCertDepositsC Γ s tx wf refl (run {s' = s'} (C.CERT-pre _ , cert-post)) =
221221
getValidCertDepositsCERTS (C.UTxOState.deposits ((C.LState.utxoSt s))) wf cert-post
222222

223223
lemUtxowDeposits : {Γ s s' tx}
@@ -266,7 +266,7 @@ open IsEquivalence ≡ᵈ-isEquivalence renaming (refl to ≡ᵈ-refl; sym to
266266
lemCERTS'DepositsC : {Γ s dcerts s'} (open C.CertEnv Γ using (pp))
267267
RunTraceAndThen C._⊢_⇀⦇_,CERT⦈_ C._⊢_⇀⦇_,POST-CERT⦈_ Γ s dcerts s'
268268
certDepositsC s' ≡ ⟨ updateDDeps pp dcerts , updateGDeps pp dcerts ⟩ (certDepositsC s)
269-
lemCERTS'DepositsC (run-[] C.CERT-last) = refl
269+
lemCERTS'DepositsC (run-[] C.CERT-post) = refl
270270
lemCERTS'DepositsC (run-∷ (C.CERT-deleg (C.DELEG-delegate _)) rs) = lemCERTS'DepositsC rs
271271
lemCERTS'DepositsC (run-∷ (C.CERT-deleg (C.DELEG-dereg _)) rs) = lemCERTS'DepositsC rs
272272
lemCERTS'DepositsC (run-∷ (C.CERT-deleg (C.DELEG-reg _)) rs) = lemCERTS'DepositsC rs
@@ -279,7 +279,7 @@ lemCERTS'DepositsC (run-∷ (C.CERT-vdel (C.GOVCERT-ccreghot _)) rs) = lemCE
279279
lemCERTSDepositsC : {Γ s txCerts s'} (open C.CertEnv Γ using (pp))
280280
Γ C.⊢ s ⇀⦇ txCerts ,CERTS⦈ s'
281281
certDepositsC s' ≡ ⟨ updateDDeps pp txCerts , updateGDeps pp txCerts ⟩ (certDepositsC s)
282-
lemCERTSDepositsC (run (C.CERT-init _ , step)) = lemCERTS'DepositsC step
282+
lemCERTSDepositsC (run (C.CERT-pre _ , step)) = lemCERTS'DepositsC step
283283

284284
lemWellformed : {Γ s tx s'} WellformedLState s Γ C.⊢ s ⇀⦇ tx ,LEDGER⦈ s' WellformedLState s'
285285
lemWellformed {Γ} {s = ls} {tx} {s' = ls'} wf (C.LEDGER-V⋯ refl utxo certs gov) = goal
@@ -327,9 +327,6 @@ setCertDeposits (ddeps , gdeps) cs =
327327
let open C.CertState cs in
328328
record dState {deposits = ddeps} , pState , record gState {deposits = gdeps} ⟧
329329

330-
-- _⊢_⇀⦇_,CERTS'⦈_ : C.CertEnv → C.CertState → List L.DCert → C.CertState → Type
331-
-- _⊢_⇀⦇_,CERTS'⦈_ = ReflexiveTransitiveClosure {sts = C._⊢_⇀⦇_,CERT⦈_}
332-
333330
updateCDep : PParams L.DCert L.Deposits × L.Deposits L.Deposits × L.Deposits
334331
updateCDep pp cert (ddep , gdep) = updateDDep pp cert ddep , updateGDep pp cert gdep
335332

@@ -339,7 +336,7 @@ opaque
339336
RunTraceAndThen C._⊢_⇀⦇_,CERT⦈_ C._⊢_⇀⦇_,POST-CERT⦈_ Γ (deps₁ ⊢conv s) certs (deps₁' ⊢conv s')
340337
∃[ deps₂' ] deps₁' ≡ᵈ deps₂'
341338
× RunTraceAndThen C._⊢_⇀⦇_,CERT⦈_ C._⊢_⇀⦇_,POST-CERT⦈_ Γ (deps₂ ⊢conv s) certs (deps₂' ⊢conv s')
342-
castCERTS' deps₁ deps₂ deps₁' eqd (run-[] C.CERT-last) = deps₂ , eqd , run-[] C.CERT-last
339+
castCERTS' deps₁ deps₂ deps₁' eqd (run-[] C.CERT-post) = deps₂ , eqd , run-[] C.CERT-post
343340
castCERTS' {Γ} deps₁ deps₂ deps₁' eqd (run-∷ (C.CERT-deleg {dCert = cert} (C.DELEG-delegate h)) rs)
344341
= let
345342
open C.CertEnv Γ using (pp)
@@ -389,9 +386,9 @@ opaque
389386
deps₁ ≡ᵈ deps₂
390387
Γ C.⊢ deps₁ ⊢conv s ⇀⦇ certs ,CERTS⦈ (deps₁' ⊢conv s')
391388
∃[ deps₂' ] deps₁' ≡ᵈ deps₂' × Γ C.⊢ deps₂ ⊢conv s ⇀⦇ certs ,CERTS⦈ (deps₂' ⊢conv s')
392-
castCERTS deps₁ deps₂ deps₁' eqd (run (C.CERT-init h , step)) =
389+
castCERTS deps₁ deps₂ deps₁' eqd (run (C.CERT-pre h , step)) =
393390
let deps₂' , eqd' , step' = castCERTS' deps₁ deps₂ deps₁' eqd step
394-
in deps₂' , eqd' , run (C.CERT-init h , step')
391+
in deps₂' , eqd' , run (C.CERT-pre h , step')
395392

396393
_⊢_⇀⦇_,GOVn⦈_ : L.GovEnv × ℕ L.GovState List (GovVote ⊎ GovProposal) L.GovState Type
397394
_⊢_⇀⦇_,GOVn⦈_ = _⊢_⇀⟦_⟧ᵢ*'_ {_⊢_⇀⟦_⟧ᵇ_ = IdSTS} {_⊢_⇀⟦_⟧_ = L._⊢_⇀⦇_,GOV⦈_}

src/Ledger/Conway/Conformance/Equivalence/Certs.agda

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -153,13 +153,13 @@ instance
153153
L.Deposits × L.Deposits
154154
⊢ Γ L.⊢ s ⇀⦇ _ ,PRE-CERT⦈ s' ⭆ⁱ λ deposits _
155155
Γ C.⊢ (deposits ⊢conv s) ⇀⦇ _ ,PRE-CERT⦈ (deposits ⊢conv s')
156-
PRE-CERTToConf .convⁱ deposits (L.CERT-init h) = C.CERT-init h
156+
PRE-CERTToConf .convⁱ deposits (L.CERT-pre h) = C.CERT-pre h
157157

158158
POST-CERTToConf : {Γ s s'}
159159
L.Deposits × L.Deposits
160160
⊢ Γ L.⊢ s ⇀⦇ _ ,POST-CERT⦈ s' ⭆ⁱ λ deposits _
161161
Γ C.⊢ (deposits ⊢conv s) ⇀⦇ _ ,POST-CERT⦈ (deposits ⊢conv s')
162-
POST-CERTToConf .convⁱ deposits L.CERT-last = C.CERT-last
162+
POST-CERTToConf .convⁱ deposits L.CERT-post = C.CERT-post
163163

164164
DELEGToConf : {Γ s dcert dcerts s'}
165165
(open L.DelegEnv Γ renaming (pparams to pp))
@@ -242,12 +242,12 @@ instance
242242
PRE-CERTFromConf : {Γ s s'}
243243
Γ C.⊢ s ⇀⦇ _ ,PRE-CERT⦈ s' ⭆
244244
Γ L.⊢ (conv s) ⇀⦇ _ ,PRE-CERT⦈ (conv s')
245-
PRE-CERTFromConf .convⁱ _ (C.CERT-init h) = L.CERT-init h
245+
PRE-CERTFromConf .convⁱ _ (C.CERT-pre h) = L.CERT-pre h
246246

247247
POST-CERTFromConf : {Γ s s'}
248248
Γ C.⊢ s ⇀⦇ _ ,POST-CERT⦈ s' ⭆
249249
Γ L.⊢ (conv s) ⇀⦇ _ ,POST-CERT⦈ (conv s')
250-
POST-CERTFromConf .convⁱ _ C.CERT-last = L.CERT-last
250+
POST-CERTFromConf .convⁱ _ C.CERT-post = L.CERT-post
251251

252252

253253
CERT-POST-CERTFromConf : {Γ s dcerts s'}

src/Ledger/Conway/Specification/Certs.lagda.md

Lines changed: 39 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -63,17 +63,30 @@ instance
6363

6464
## Miscellaneous Type Aliases
6565

66-
6766
```agda
68-
CCHotKeys DReps PoolEnv Pools Retiring Rewards Stake StakeDelegs : Type
69-
CCHotKeys = Credential ⇀ Maybe Credential
70-
DReps = Credential ⇀ Epoch
71-
PoolEnv = PParams
72-
Pools = KeyHash ⇀ StakePoolParams
73-
Retiring = KeyHash ⇀ Epoch
74-
Rewards = Credential ⇀ Coin
75-
Stake = Credential ⇀ Coin
76-
StakeDelegs = Credential ⇀ KeyHash
67+
CCHotKeys : Type
68+
CCHotKeys = Credential ⇀ Maybe Credential
69+
70+
DReps : Type
71+
DReps = Credential ⇀ Epoch
72+
73+
PoolEnv : Type
74+
PoolEnv = PParams
75+
76+
Pools : Type
77+
Pools = KeyHash ⇀ StakePoolParams
78+
79+
Retiring : Type
80+
Retiring = KeyHash ⇀ Epoch
81+
82+
Rewards : Type
83+
Rewards = Credential ⇀ Coin
84+
85+
Stake : Type
86+
Stake = Credential ⇀ Coin
87+
88+
StakeDelegs : Type
89+
StakeDelegs = Credential ⇀ KeyHash
7790
```
7891

7992
<!--
@@ -356,10 +369,10 @@ private variable
356369

357370
### Delegation
358371

359-
Registered credentials can now delegate to a DRep as well as to a stake
360-
pool. This is achieved by giving the
372+
Registered credentials can now delegate to a `DRep`{.AgdaInductiveConstructor}
373+
as well as to a stake pool. This is achieved by giving the
361374
`delegate`{.AgdaInductiveConstructor} certificate two optional fields,
362-
corresponding to a DRep and stake pool.
375+
corresponding to a `DRep`{.AgdaInductiveConstructor} and stake pool.
363376

364377
Stake can be delegated for voting and block production simultaneously,
365378
since these are two separate features. In fact, preventing this could
@@ -405,13 +418,15 @@ Sections [Auxiliary `DELEG`{.AgdaDatatype} Transition System](#auxiliary-deleg-t
405418
[Auxiliary `GOVCERT`{.AgdaDatatype} transition system](#auxiliary-govcert-transition-system).
406419

407420
`GOVCERT`{.AgdaDatatype} deals with the new certificates relating to
408-
DReps and the constitutional committee.
421+
`DRep`{.AgdaInductiveConstructor}s and the constitutional committee.
409422

410423
+ `GOVCERT-regdrep`{.AgdaInductiveConstructor} registers (or
411-
re-registers) a DRep. In case of registration, a deposit needs to be
412-
paid. Either way, the activity period of the DRep is reset.
424+
re-registers) a `DRep`{.AgdaInductiveConstructor}. In case of registration,
425+
a deposit needs to be paid. Either way, the activity period of the
426+
`DRep`{.AgdaInductiveConstructor} is reset.
413427

414-
+ `GOVCERT-deregdrep`{.AgdaInductiveConstructor} deregisters a DRep.
428+
+ `GOVCERT-deregdrep`{.AgdaInductiveConstructor} deregisters a
429+
`DRep`{.AgdaInductiveConstructor}.
415430

416431
+ `GOVCERT-ccreghot`{.AgdaInductiveConstructor} registers a "hot"
417432
credential for constitutional committee members.[^1] We check that the
@@ -522,13 +537,13 @@ data _⊢_⇀⦇_,CERT⦈_ : CertEnv → CertState → DCert → CertState →
522537
Here we define the `CERTBASE`{.AgdaFunction} function which handles the following
523538
important housekeeping tasks:
524539

525-
- check the correctness of withdrawals and ensure that withdrawals only
526-
happen from credentials that have delegated their voting power;
540+
+ check the correctness of withdrawals and ensure that withdrawals only
541+
happen from credentials that have delegated their voting power;
527542

528-
- set the rewards of the credentials that withdrew funds to zero;
543+
+ set the rewards of the credentials that withdrew funds to zero;
529544

530-
- and set the activity timer of all DReps that voted to `drepActivity`{.AgdaField}
531-
epochs in the future.
545+
+ and set the activity timer of all `DRep`{.AgdaInductiveConstructor}s that voted
546+
to `drepActivity`{.AgdaField} epochs in the future.
532547

533548
<!--
534549
```agda
@@ -539,7 +554,7 @@ open GovVote using (voter)
539554
```agda
540555
data _⊢_⇀⦇_,PRE-CERT⦈_ : CertEnv → CertState → ⊤ → CertState → Type where
541556
542-
CERT-init :
557+
CERT-pre :
543558
let refresh = mapPartial (isGovVoterDRep ∘ voter) (fromList vs)
544559
refreshedDReps = mapValueRestricted (const (e + pp .drepActivity)) dReps refresh
545560
wdrlCreds = mapˢ stake (dom wdrls)
@@ -553,7 +568,7 @@ data _⊢_⇀⦇_,PRE-CERT⦈_ : CertEnv → CertState → ⊤ → CertState →
553568
554569
data _⊢_⇀⦇_,POST-CERT⦈_ : CertEnv → CertState → ⊤ → CertState → Type where
555570
556-
CERT-last :
571+
CERT-post :
557572
⟦ e , pp , vs , wdrls , cc ⟧
558573
⊢ ⟦ ⟦ voteDelegs , stakeDelegs , rewards ⟧ , stᵖ , stᵍ ⟧
559574
⇀⦇ _ ,POST-CERT⦈

src/Ledger/Conway/Specification/Certs/Properties/Computational.agda

Lines changed: 20 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -143,21 +143,37 @@ instance
143143
with computeProof ce (gState cs) dCert | completeness _ _ _ _ h
144144
... | success _ | refl = refl
145145

146-
Computational-CERTBASE : Computational _⊢_⇀⦇_,CERTBASE⦈_ String
147-
Computational-CERTBASE .computeProof ce cs _ =
146+
Computational-PRE-CERT : Computational _⊢_⇀⦇_,PRE-CERT⦈_ String
147+
Computational-PRE-CERT .computeProof ce cs _ =
148148
let open CertEnv ce; open PParams pp
149149
open GState (gState cs); open DState (dState cs)
150150
refresh = mapPartial (isGovVoterDRep ∘ voter) (fromList votes)
151151
refreshedDReps = mapValueRestricted (const (CertEnv.epoch ce + drepActivity)) dreps refresh
152152
in case ¿ filterˢ isKeyHash (mapˢ RwdAddr.stake (dom wdrls)) ⊆ dom voteDelegs
153153
× mapˢ (map₁ RwdAddr.stake) (wdrls ˢ) ⊆ rewards ˢ ¿ of λ where
154-
(yes p) success (-, CERT-base p)
154+
(yes p) success (-, CERT-pre p)
155155
(no ¬p) failure (genErrors ¬p)
156-
Computational-CERTBASE .completeness ce st _ st' (CERT-base p)
156+
Computational-PRE-CERT .completeness ce st _ st' (CERT-pre p)
157157
rewrite let dState = CertState.dState st; open DState dState in
158158
dec-yes ¿ filterˢ isKeyHash (mapˢ RwdAddr.stake (dom (CertEnv.wdrls ce))) ⊆ dom voteDelegs
159159
× mapˢ (map₁ RwdAddr.stake) (CertEnv.wdrls ce ˢ) ⊆ rewards ˢ ¿
160160
p .proj₂ = refl
161161

162+
-- POST-CERT has no premises, so computing always succeeds
163+
-- with the unique post-state and proof CERT-post.
164+
Computational-POST-CERT : Computational _⊢_⇀⦇_,POST-CERT⦈_ String
165+
Computational-POST-CERT .computeProof ce cs tt = success ( cs' , CERT-post)
166+
where
167+
dreps : DReps
168+
dreps = GState.dreps (gState cs)
169+
validVoteDelegs : VoteDelegs
170+
validVoteDelegs = (VoteDelegsOf cs) ∣^ ( mapˢ vDelegCredential (dom dreps) ∪ fromList (vDelegNoConfidence ∷ vDelegAbstain ∷ []) )
171+
cs' : CertState
172+
cs' = ⟦ ⟦ validVoteDelegs , StakeDelegsOf cs , RewardsOf cs ⟧ , PStateOf cs , GStateOf cs ⟧
173+
174+
-- Completeness: the relational proof pins s' to exactly `post`,
175+
-- and computeProof returns success at that same state; so refl.
176+
Computational-POST-CERT .completeness ce cs _ cs' CERT-post = refl
177+
162178
Computational-CERTS : Computational _⊢_⇀⦇_,CERTS⦈_ String
163179
Computational-CERTS = it

src/Ledger/Conway/Specification/Ledger.lagda.md

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -199,15 +199,15 @@ process governance action proposals and votes.
199199
??? note
200200

201201
The governance state used as input to `GOVS`{.AgdaDatatype} is filtered to
202-
remove votes from DReps that are no longer
202+
remove votes from `DRep`{.AgdaInductiveConstructor}s that are no longer
203203
registered (see function `rmOrphanDRepVotes`{.AgdaFunction}).
204204

205205
This mechanism serves to prevent attacks where malicious adversaries could
206206
submit transactions that
207207

208-
1. register a fraudulent DRep,
209-
2. cast numerous votes utilizing that DRep,
210-
3. deregisters the DRep thereby recovering the deposit.
208+
1. register a fraudulent `DRep`{.AgdaInductiveConstructor},
209+
2. cast numerous votes utilizing that `DRep`{.AgdaInductiveConstructor},
210+
3. deregisters the `DRep`{.AgdaInductiveConstructor} thereby recovering the deposit.
211211

212212
<!--
213213
```agda

src/Ledger/Conway/Specification/Ledger/Properties/PoV.lagda.md

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,12 +13,11 @@ module Ledger.Conway.Specification.Ledger.Properties.PoV
1313
1414
open import Ledger.Conway.Specification.Certs govStructure
1515
open import Ledger.Conway.Specification.Chain txs abs
16-
open import Ledger.Conway.Specification.Certs.Properties govStructure
16+
open import Ledger.Conway.Specification.Certs.Properties.Computational govStructure
1717
open import Ledger.Conway.Specification.Certs.Properties.PoV govStructure
1818
open import Ledger.Conway.Specification.Ledger txs abs
1919
open import Ledger.Prelude
2020
open import Ledger.Conway.Specification.Utxo txs abs
21-
open import Ledger.Conway.Specification.Utxo.Properties txs abs using (χ; module DepositHelpers)
2221
open import Ledger.Conway.Specification.Utxo.Properties.PoV txs abs
2322
open import Ledger.Conway.Specification.Utxow txs abs
2423

src/Ledger/Conway/Specification/Ratify.lagda

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -534,7 +534,7 @@ definitions:
534534
\item \AgdaFunction{defaultVote}: This map sets a default vote to
535535
all SPOs who didn't vote, with the default depending on the given
536536
action, and whether the SPO has delegated their vote to one of the
537-
default DReps.
537+
default \DRep{}s.
538538

539539
\item \AgdaFunction{actualVotes}: This map combines the votes cast
540540
by SPOs with \AgdaBound{defaultVote} using a left-biased union
@@ -557,20 +557,20 @@ be counted as having voted \abstain{} by default. Members of the SPO
557557
community found this behavior counterintuitive and requested that
558558
non-voters be assigned a \no{} vote by default, with the caveat that
559559
an SPO could change its default setting by delegating its reward
560-
account credential to an \texttt{AlwaysNoConfidence} DRep or an
561-
\texttt{AlwaysAbstain} DRep. (This change applies only after the
560+
account credential to an \texttt{AlwaysNoConfidence} \DRep{} or an
561+
\texttt{AlwaysAbstain} \DRep{}. (This change applies only after the
562562
bootstrap period; during the bootstrap period the logic is unchanged;
563563
see \cref{sec:conway-bootstrap-gov}.) To be precise, the agreed upon
564564
specification is the following: an SPO that did not vote is assumed to
565565
have voted \no{}, except under the following circumstances:
566566
%
567567
\begin{itemize}
568568
\item if the SPO has delegated its reward credential to an
569-
\texttt{AlwaysNoConfidence} DRep, then their default vote is
569+
\texttt{AlwaysNoConfidence} \DRep{}, then their default vote is
570570
\yes{} for \NoConfidence{} proposals and \no{} for other
571571
proposals;
572572
\item if the SPO has delegated its reward credential to an
573-
\texttt{AlwaysAbstain} DRep, then its default vote is \abstain{}
573+
\texttt{AlwaysAbstain} \DRep{}, then its default vote is \abstain{}
574574
for all proposals.
575575
\end{itemize}
576576

src/Ledger/Introduction.lagda.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -218,7 +218,7 @@ formally defined.
218218

219219
- [DELEG][] handles registering stake addresses and delegating to a stake pool.
220220

221-
- [GOVCERT][] handles registering and delegating to DReps.
221+
- [GOVCERT][] handles registering and delegating to `DRep`{.AgdaInductiveConstructor}s.
222222

223223
- [POOL][] handles registering and retiring stake pools.
224224

0 commit comments

Comments
 (0)