Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Cannot register and deregister same stake credential #547

Merged
Merged
Show file tree
Hide file tree
Changes from 11 commits
Commits
Show all changes
19 commits
Select commit Hold shift + click to select a range
72a3d08
Cannot register and deregister same stake credential
williamdemeo Aug 16, 2024
9b840ca
Merge branch 'master' into 512-cannot-register-and-deregister-stake-c…
williamdemeo Aug 16, 2024
4a4f7ff
Merge branch 'master' into 512-cannot-register-and-deregister-stake-c…
williamdemeo Aug 16, 2024
9a5075a
second attempt: make updateCertDeposits a parital function
williamdemeo Aug 20, 2024
af99909
proofs in Utxo.Properties remain *very* broken
williamdemeo Aug 27, 2024
5cfda48
Separate precondition for updateCertDeposits instead of making it par…
UlfNorell Oct 9, 2024
f71d294
fixed proof of gmsc
williamdemeo Oct 9, 2024
aa515cf
Merge branch 'master' into 512-cannot-register-and-deregister-stake-c…
williamdemeo Oct 9, 2024
6afdfcb
fix problems resulting from merge conflict resolution
williamdemeo Oct 9, 2024
39dc1a9
major revision of some proofs and new proofs/removal of assumptions
williamdemeo Oct 10, 2024
e0dde20
cleanup
williamdemeo Oct 10, 2024
c007aab
reverting changes to vector formatting
williamdemeo Oct 10, 2024
9245577
Merge branch 'master' into 512-cannot-register-and-deregister-stake-c…
williamdemeo Oct 10, 2024
0fb70c6
Merge branch 'master' into 512-cannot-register-and-deregister-stake-c…
williamdemeo Oct 11, 2024
8b77b71
Move dereg checks from CERT rules to UTXOS
UlfNorell Oct 11, 2024
472e46f
Merge branch 'master' into 512-cannot-register-and-deregister-stake-c…
williamdemeo Oct 15, 2024
b60144a
add missing functionality
williamdemeo Oct 15, 2024
37ca31f
fix pdf
williamdemeo Oct 16, 2024
15ef930
address change requests from most recent PR review
williamdemeo Oct 18, 2024
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions src/Axiom/Set/Rel.agda
Original file line number Diff line number Diff line change
Expand Up @@ -99,6 +99,9 @@ module _ {x : A} {y : B} where
dom-single→single : a ∈ dom ❴ x , y ❵ → a ∈ ❴ x ❵
dom-single→single = to ∈-singleton ∘ from ∈-dom-singleton-pair

∈-dom-single≡ : a ∈ dom ❴ x , y ❵ → a ≡ x
∈-dom-single≡ = (from ∈-singleton) ∘ dom-single→single

single→dom-single : a ∈ ❴ x ❵ → a ∈ dom ❴ x , y ❵
single→dom-single = to ∈-dom-singleton-pair ∘ from ∈-singleton

Expand Down
13 changes: 6 additions & 7 deletions src/Ledger/Certs.lagda
Original file line number Diff line number Diff line change
Expand Up @@ -300,9 +300,12 @@ data
\begin{code}
_⊢_⇀⦇_,CERTBASE⦈_ : CertEnv → CertState → ⊤ → CertState → Type
\end{code}
\begin{code}[hide]
module _ where
\end{code}
\begin{code}
_⊢_⇀⦇_,CERTS⦈_ : CertEnv → CertState → List DCert → CertState → Type
_⊢_⇀⦇_,CERTS⦈_ = ReflexiveTransitiveClosureᵇ _⊢_⇀⦇_,CERTBASE⦈_ _⊢_⇀⦇_,CERT⦈_
_⊢_⇀⦇_,CERTS⦈_ : CertEnv → CertState → List DCert → CertState → Type
_⊢_⇀⦇_,CERTS⦈_ = ReflexiveTransitiveClosureᵇ _⊢_⇀⦇_,CERTBASE⦈_ _⊢_⇀⦇_,CERT⦈_
\end{code}
\end{AgdaSuppressSpace}
\caption{Types for the transition systems relating to certificates}
Expand Down Expand Up @@ -439,11 +442,7 @@ data _⊢_⇀⦇_,CERTBASE⦈_ where
∙ filterˢ isKeyHash wdrlCreds ⊆ dom voteDelegs
∙ mapˢ (map₁ stake) (wdrls ˢ) ⊆ rewards ˢ
────────────────────────────────
⟦ e , pp , vs , wdrls , deps ⟧ᶜ ⊢ ⟦
⟦ voteDelegs , stakeDelegs , rewards ⟧ᵈ , stᵖ , ⟦ dreps , ccHotKeys ⟧ᵛ ⟧ᶜˢ ⇀⦇ _ ,CERTBASE⦈ ⟦
⟦ voteDelegs , stakeDelegs , constMap wdrlCreds 0 ∪ˡ rewards ⟧ᵈ
, stᵖ
, ⟦ refreshedDReps , ccHotKeys ⟧ᵛ ⟧ᶜˢ
⟦ e , pp , vs , wdrls , deps ⟧ᶜ ⊢ ⟦ ⟦ voteDelegs , stakeDelegs , rewards ⟧ᵈ , stᵖ , ⟦ dreps , ccHotKeys ⟧ᵛ ⟧ᶜˢ ⇀⦇ _ ,CERTBASE⦈ ⟦ ⟦ voteDelegs , stakeDelegs , constMap wdrlCreds 0 ∪ˡ rewards ⟧ᵈ , stᵖ , ⟦ refreshedDReps , ccHotKeys ⟧ᵛ ⟧ᶜˢ
\end{code}
\end{AgdaSuppressSpace}
\caption{CERTS rules}
Expand Down
9 changes: 4 additions & 5 deletions src/Ledger/Conway/Conformance/Certs.agda
Original file line number Diff line number Diff line change
Expand Up @@ -90,20 +90,19 @@ record DelegEnv : Type where

GovCertEnv = CertEnv

certDeposit : DCert → PParams → DepositPurpose ⇀ Coin
certDeposit : DCert → PParams → Deposits
certDeposit (delegate c _ _ v) _ = ❴ CredentialDeposit c , v ❵
certDeposit (regdrep c v _) _ = ❴ DRepDeposit c , v ❵
certDeposit _ _ = ∅
-- handled in the Utxo module:
-- certDeposit (regpool kh _) pp = ❴ PoolDeposit kh , pp .poolDeposit ❵

certRefund : DCert → ℙ DepositPurpose
certRefund (dereg c _) = ❴ CredentialDeposit c ❵
certRefund (dereg c _) = ❴ CredentialDeposit c ❵
certRefund (deregdrep c _) = ❴ DRepDeposit c ❵
certRefund _ = ∅
certRefund _ = ∅

updateCertDeposit : PParams → DCert → (DepositPurpose ⇀ Coin)
→ DepositPurpose ⇀ Coin
updateCertDeposit : PParams → DCert → Deposits → Deposits
updateCertDeposit pp cert deposits
= (deposits ∪⁺ certDeposit cert pp) ∣ certRefund cert ᶜ

Expand Down
27 changes: 5 additions & 22 deletions src/Ledger/Epoch.lagda
Original file line number Diff line number Diff line change
Expand Up @@ -122,23 +122,10 @@ open GovActionState using (returnAddr)
\begin{NoConway}
\begin{code}
applyRUpd : RewardUpdate → EpochState → EpochState
applyRUpd ⟦ Δt , Δr , Δf , rs ⟧ʳᵘ
⟦ ⟦ treasury , reserves ⟧ᵃ
, ss
, ⟦ ⟦ utxo , fees , deposits , donations ⟧ᵘ
, govSt
, ⟦ ⟦ voteDelegs , stakeDelegs , rewards ⟧ᵈ , pState , gState ⟧ᶜˢ ⟧ˡ
, es
, fut
⟧ᵉ' =
⟦ ⟦ posPart (ℤ.+ treasury ℤ.+ Δt ℤ.+ ℤ.+ unregRU')
, posPart (ℤ.+ reserves ℤ.+ Δr) ⟧ᵃ
, ss
, ⟦ ⟦ utxo , posPart (ℤ.+ fees ℤ.+ Δf) , deposits , donations ⟧ᵘ
, govSt
, ⟦ ⟦ voteDelegs , stakeDelegs , rewards ∪⁺ regRU ⟧ᵈ , pState , gState ⟧ᶜˢ ⟧ˡ
, es
, fut ⟧ᵉ'
applyRUpd
⟦ Δt , Δr , Δf , rs ⟧ʳᵘ
⟦ ⟦ treasury , reserves ⟧ᵃ , ss , ⟦ ⟦ utxo , fees , deposits , donations ⟧ᵘ , govSt , ⟦ ⟦ voteDelegs , stakeDelegs , rewards ⟧ᵈ , pState , gState ⟧ᶜˢ ⟧ˡ , es , fut ⟧ᵉ' =
⟦ ⟦ posPart (ℤ.+ treasury ℤ.+ Δt ℤ.+ ℤ.+ unregRU') , posPart (ℤ.+ reserves ℤ.+ Δr) ⟧ᵃ , ss , ⟦ ⟦ utxo , posPart (ℤ.+ fees ℤ.+ Δf) , deposits , donations ⟧ᵘ , govSt , ⟦ ⟦ voteDelegs , stakeDelegs , rewards ∪⁺ regRU ⟧ᵈ , pState , gState ⟧ᶜˢ ⟧ˡ , es , fut ⟧ᵉ'
where
regRU = rs ∣ dom rewards
unregRU = rs ∣ dom rewards ᶜ
Expand Down Expand Up @@ -246,11 +233,7 @@ its results by carrying out each of the following tasks.

govSt' = filter (λ x → ¿ proj₁ x ∉ mapˢ proj₁ removed' ¿) govSt

certState' =
⟦ record dState { rewards = dState .rewards ∪⁺ refunds }
, ⟦ (pState .pools) ∣ retired ᶜ , (pState .retiring) ∣ retired ᶜ ⟧ᵖ
, ⟦ if null govSt' then mapValues (1 +_) (gState .dreps) else (gState .dreps)
, (gState .ccHotKeys) ∣ ccCreds (es .cc) ⟧ᵛ ⟧ᶜˢ
certState' = ⟦ record dState { rewards = dState .rewards ∪⁺ refunds } , ⟦ (pState .pools) ∣ retired ᶜ , (pState .retiring) ∣ retired ᶜ ⟧ᵖ , ⟦ if null govSt' then mapValues (1 +_) (gState .dreps) else (gState .dreps) , (gState .ccHotKeys) ∣ ccCreds (es .cc) ⟧ᵛ ⟧ᶜˢ

utxoSt' = ⟦ utxoSt .utxo , utxoSt .fees , utxoSt .deposits ∣ mapˢ (proj₁ ∘ proj₂) removedGovActions ᶜ , 0 ⟧ᵘ

Expand Down
Loading
Loading