Skip to content

Commit 185e3ef

Browse files
committed
WIP: prove that EPOCH not depends on expired dreps
1 parent 021604b commit 185e3ef

File tree

4 files changed

+390
-88
lines changed

4 files changed

+390
-88
lines changed

.envrc

Whitespace-only changes.

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

Lines changed: 50 additions & 51 deletions
Original file line numberDiff line numberDiff line change
@@ -88,6 +88,9 @@ instance
8888
HasDeposits-EpochState : HasDeposits EpochState
8989
HasDeposits-EpochState .DepositsOf = DepositsOf ∘ LStateOf
9090
91+
HasDReps-EpochState : HasDReps EpochState
92+
HasDReps-EpochState .DRepsOf = DRepsOf ∘ CertStateOf ∘ LStateOf
93+
9194
HasTreasury-EpochState : HasTreasury EpochState
9295
HasTreasury-EpochState .TreasuryOf = Acnt.treasury ∘ EpochState.acnt
9396
@@ -445,46 +448,48 @@ each governance action, maps its `returnAddr` (as a staking
445448
credential) to the deposit.
446449

447450
```agda
448-
calculateVDelegDelegatedStake
449-
: Epoch
450-
→ UTxOState
451-
→ GovState
452-
→ GState
453-
→ DState
454-
→ VDeleg ⇀ Coin
455-
calculateVDelegDelegatedStake currentEpoch utxoSt govSt gState dState
456-
= aggregate₊ (((activeVoteDelegs ˢ) ⁻¹ʳ
457-
∘ʳ (stakePerCredential ∪⁺ stakeFromGADeposits govSt utxoSt) ˢ) ᶠˢ)
458-
where
459-
open UTxOState utxoSt
460-
open DState dState
461-
open GState gState
451+
module VDelegDelegatedStake
452+
(currentEpoch : Epoch)
453+
(utxoSt : UTxOState)
454+
(govSt : GovState)
455+
(gState : GState)
456+
(dState : DState)
457+
where
462458
463-
-- active DReps
464-
activeDReps : ℙ Credential
465-
activeDReps = dom (filterᵐ (λ (_ , e) → currentEpoch ≤ e) dreps)
459+
open UTxOState utxoSt
460+
open DState dState
461+
open GState gState
466462
467-
-- active vote delegations
468-
activeVoteDelegs : VoteDelegs
469-
activeVoteDelegs = voteDelegs ∣^ ((mapˢ vDelegCredential activeDReps)
470-
∪ ❴ vDelegNoConfidence ❵ ∪ ❴ vDelegAbstain ❵)
463+
-- active DReps
464+
activeDReps : ℙ Credential
465+
activeDReps = dom (filterᵐ (λ (_ , e) → currentEpoch ≤ e) dreps)
471466
472-
-- stake per delegated credential
473-
stakePerCredential : Stake
474-
stakePerCredential = mapFromFun (λ c → cbalance (utxo ∣^' λ txout → getStakeCred txout ≡ just c))
475-
(dom activeVoteDelegs)
467+
-- active vote delegations
468+
activeVoteDelegs : VoteDelegs
469+
activeVoteDelegs = voteDelegs ∣^ ((mapˢ vDelegCredential activeDReps)
470+
∪ ❴ vDelegNoConfidence ❵ ∪ ❴ vDelegAbstain ❵)
476471
477-
```
472+
-- stake per delegated credential
473+
stakePerCredential : Stake
474+
stakePerCredential = mapFromFun (λ c → cbalance (utxo ∣^' λ txout → getStakeCred txout ≡ just c))
475+
(dom activeVoteDelegs)
478476
477+
calculate : VDeleg ⇀ Coin
478+
calculate = aggregate₊ (((activeVoteDelegs ˢ) ⁻¹ʳ
479+
∘ʳ (stakePerCredential ∪⁺ stakeFromGADeposits govSt utxoSt) ˢ) ᶠˢ)
480+
```
481+
<!--
482+
```agda
483+
opaque
484+
```
485+
-->
479486
```agda
480487
calculatePoolDelegatedStakeForVoting
481488
: Snapshot
482489
→ UTxOState
483490
→ GovState
484-
→ GState
485-
→ DState
486491
→ KeyHash ⇀ Coin
487-
calculatePoolDelegatedStakeForVoting ss utxoSt govSt gState dState
492+
calculatePoolDelegatedStakeForVoting ss utxoSt govSt
488493
= calculatePoolDelegatedStake ss ∪⁺ (stakeFromDeposits ∣ dom (PoolsOf ss))
489494
where
490495
stakeFromDeposits : KeyHash ⇀ Coin
@@ -515,17 +520,17 @@ governance actions.
515520
`SPO`{.AgdaInductiveConstructor}s as well.
516521

517522
```agda
518-
mkStakeDistrs
519-
: Snapshot
520-
→ Epoch
521-
→ UTxOState
522-
→ GovState
523-
→ GState
524-
→ DState
525-
→ StakeDistrs
526-
mkStakeDistrs ss currentEpoch utxoSt govSt gState dState =
527-
⟦ calculateVDelegDelegatedStake currentEpoch utxoSt govSt gState dState
528-
, calculatePoolDelegatedStakeForVoting ss utxoSt govSt gState dState
523+
mkStakeDistrs
524+
: Snapshot
525+
→ Epoch
526+
→ UTxOState
527+
→ GovState
528+
→ GState
529+
→ DState
530+
→ StakeDistrs
531+
mkStakeDistrs ss currentEpoch utxoSt govSt gState dState =
532+
⟦ VDelegDelegatedStake.calculate currentEpoch utxoSt govSt gState dState
533+
, calculatePoolDelegatedStakeForVoting ss utxoSt govSt ⟧
529534
```
530535

531536
<!--
@@ -638,23 +643,17 @@ EPOCH-updates0 fut ls =
638643
record EPOCH-Updates : Type where
639644
constructor EPOCHUpdates
640645
field
641-
es : EnactState
642-
govSt' : GovState
643646
dState'' : DState
644-
gState' : GState
645-
utxoSt' : UTxOState
646647
acnt'' : Acnt
647648
648649
EPOCH-updates
649-
: RatifyState → LState → DState → Acnt → EPOCH-Updates
650-
EPOCH-updates fut ls dState' acnt' =
651-
EPOCHUpdates (u0 .es) (u0 .govSt') dState'' (u0 .gState') (u0 .utxoSt') acnt''
650+
: EPOCH-Updates0 → LState → DState → Acnt → EPOCH-Updates
651+
EPOCH-updates u0 ls dState' acnt' =
652+
EPOCHUpdates dState'' acnt''
652653
where
653654
open LState
654655
open EPOCH-Updates0
655656
656-
u0 = EPOCH-updates0 fut ls
657-
658657
refunds : Credential ⇀ Coin
659658
refunds = pullbackMap (u0 .payout) toRwdAddr (dom (RewardsOf dState'))
660659
@@ -705,8 +704,8 @@ data _⊢_⇀⦇_,EPOCH⦈_ : ⊤ → EpochState → Epoch → EpochState → Ty
705704
-->
706705
```agda
707706
let
708-
EPOCHUpdates es govSt' dState'' gState' utxoSt' acnt'' =
709-
EPOCH-updates fut ls dState' acnt'
707+
eu0@(EPOCHUpdates0 es govSt' _ gState' utxoSt' _) = EPOCH-updates0 fut ls
708+
EPOCHUpdates dState'' acnt'' = EPOCH-updates eu0 ls dState' acnt'
710709
711710
stakeDistrs : StakeDistrs
712711
stakeDistrs = mkStakeDistrs (Snapshots.mark ss') e utxoSt'

0 commit comments

Comments
 (0)