Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
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
CPS-0006? | Governance Security #491
CPS-0006? | Governance Security #491
Changes from 26 commits
3ee04b5
a2b1536
10dcc0d
ebed65b
a2c3078
9227d45
13aecec
94c5fdb
c1af66d
20cd040
7bb9ed2
5d671d2
10d7879
4d88078
3ff035a
1fee210
7e2dcb4
c75a650
476e9f3
8d11ff6
e945a48
a42ccb8
d8947c0
34b2be0
5c6090d
3df05bc
8c42fc1
de50fca
666074c
4506b9d
d531ddf
File filter
Filter by extension
Conversations
Jump to
There are no files selected for viewing
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The "relevant parties" should (must?) be voted on by the community. The contact detail data could (must?) be stored on chain.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
A tiered bug bounty rewards program can be employed to recompense those who articulate meaningful corrections required to reverse/repair a potential vulnerability. A treasury may need to be formed to fund this specific activity, releasing those proposed rewards by a committee vote.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Ok Chris, I will add that to the recommendations. Be aware it is un-enforceable as the bug bounty has to be paid by some entity. Good recommendation though.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Would it make sense to create a multisig arrangement tied to an address where people can donate for this purpose and bounties are paid out by multisig? I would personally donate 10 Ada per epoch to it.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
What is meant by "unenforceable" and "paid by some entity"?
It feels like the whole bounty payout could be managed on-chain with the payout in ada or another native token (djed perhaps).
I haven't thought through this idea fully yet so be gentle...It feels like the whole flow could (maybe not should?) be managed on-chain.
"Responsible" party submits encrypted vulnerability details inside the metadata of [a] transaction(s). Provides the decryption key to the "relevant parties" as well as payment address for any bounty (payment addr could be included in metadata). Once bug is resolved and paid the encryption key for the vuln data can be released so the public can view details
How much the bounty is worth will need to be determined somehow? Who votes on that? Going to be difficult without the public knowing the vuln details. Feels like we need a separate "treasury pool" specifically for bug bounties that can be sined/paid by a subset of the governance members or a new class of dreps?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
We may want to add some steps/notes about Cardano infrastructure providers? Something like Blockdaemon and/or Fireblocks, and also wallet infrastructure (Daedalus, Ledger, Lace, Nami, etc...).
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Lost/Stolen : Member must be able to sign with the same wallet/stake key to authenticate for burn/mint of previous key
Sold to bad actor : Loss of collateral / Keys destroyed by committee vote
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I think the result of lost, stolen, or sold is the same. The keys must be burned and new ones generated. I could be wrong.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Yup, same. Lost, stolen, or suspected of compromise
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Lost/Stolen : DRep must be able to sign with the same wallet/stake key to authenticate for burn/mint of previous key
Sold to bad actor : Loss of collateral / Keys destroyed by committee vote
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I think the corrective action for lost, stolen, or sold is the same. The keys must be burned and new ones generated. Same as above. I think the difference in how new keys are generated is in the implementation.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I remember there was going to be some kind of "certification' process suggested for DApps [on lace?], perhaps we could adopt a similar process for voter tools/wallets.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This feels a bit of a generic private key risk? If here are concerns over a wallet's ability to store / access a private key for governance then they likely can't protect any private keys. Maybe isn't required to explicitly called out for this CIP?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
If this is collusion on the part of any committees members or DReps, it should result in loss of collateral by committee vote. Evidence needs to be presented in a reasonable and articulable way to a body (i.e. Oversight & Accountability Committee), with specific constitutional citations that explains the behavior and/or actions. Voting on such an action must be constitutionally based, not emotionally based.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I don't know if the deposit to be a DRep can be revoked by any other entity. This could work. Will tag @JaredCorduan and @KtorZ to ask if this is technically possible or would require a code change?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
as currently written, no, there is no way to revoke the deposit.
I'm personally not a fan of giving the CC this new power, which could in theory could be abused.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I agree that the CC should have no powers beyond what is currently described in CIP-1694. I suppose I am envisioning a separate body to provide some oversight with issues like these.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
What about revoking a key's ability to vote/propose changes? Not sure how feasible it would be to maintain a naughty list.
That being said... what's the difference between collusion to do something bad/undesirable vs something good/desirable? (legal/illegal is globally as subjective as good and bad). This feels like something that must be managed by CIP1964 and the constitution.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
As previously suggested in Item 11(Collusion) perhaps an on-chain naughty list that can be integrated into voting tools?.
but also who will police this? we'll need "courts" to determine guilt and folks to prosecute/defend
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This feels like a duplicate of #12 (vote buying)
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Has to be addressed in the constitution. Just like it is in the US constitution: https://constitution.congress.gov/browse/essay/intro-2-2-2/ALDE_00000031/ (I know nothing of this at any kind of depth but the idea is sound)
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I know I continue to suggest collateral. I'm going to do it here, too. If an individual or group of individuals want to remove a proposal, collateral should be required, just as submitting the proposal should. If the removal request is found by committee to be nefarious and/or without merit, a loss of collateral should occur.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Same as above, I don't know if the deposit by the DRep is considered a collateral, or a deposit that can be only returned to the depositer. For example no other keyholder can revoke a stake pool deposit of 500 Ada. Only the keyholder can do it afaik.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I agree, collateral should be required.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Require collateral to accompany a proposal (i.e. 50 $Ada or higher)
Collateral reimbursement once proposal is approved for a voting round or rejected due to constitutional violation
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Same as above, I think we need to define the difference between a deposit and collateral, and which entity would have the power to slash it. Also might need to consult the game theory experts on slashing mechanisms as a form of punishment.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Not sure there is a risk here. We would need all governing bodies to agree that the submitted proposal is 1) valid and 2) everyone votes to pass it.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Curriculum framed from the contents of the constitution and the approved governance CIP (CIP-1694 or otherwise)
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I concur.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Loss of collateral and expungement of registration. DReps should also be required to submit collateral with their registration. Not dissimilar from a minimum pledge with a stake pool.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
same as above, if there is a difference between collateral and deposit.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
If the voting power is based on total ADA behind the DRep then what point would there be to create multiple registrations? To bloat the the chain? You could argue the transaction cost to register as a DRep would make this unattractive in the same way spamming the network with tiny transactions prevents DDoS
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Collateral exceptions or tiers - A potential process during DRep registration where an approval/finalization process occurs by committee. A tiered collateral model might be appropriate, levied based on certain criteria (i.e. social influence, history of nefarious behavior)
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Must be solved in the constitution (separation of powers again)
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This sounds like a good recommendation like for example Project Catalyst uses a snapshot and the Jormungandr chain.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
iirc a layer2 can share the same security guarantees as a layer1 but a sidechain is just a bridged, separate network -- offloading to layer2 definitely sounds like a good idea
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Maybe I need to break this into 2 types of risks.
Indvidual DRep.
Cardano Governance process as a whole.
I was thinking of just making it the responsibility of each DRep to comply with their local laws. Otherwise, legal fees would skyrocket. If a DRep from a particular region runs into legal issues with acting as a DRep they can either fight it or resign.
For Cardano governance process having legal issues, kick that over to the Cardano Foundation to fight.
What do you think?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Yes, I agree. Engaging with the CF for Governance legal challenges is probably the best course of action. At least initially, to get things aligned. It may be worth having a point of contact identified at CF as a resource for individual DReps who face legal challenges. If for nothing but some general guidance. Just having someone to talk to who understands the situation can be a huge help just for the stress factor alone.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
More nodes may not be desirable. Actions should be largely enforceable on-chain where or when possible. Unless the purpose of the nodes is the run the previously mentioned side chain like a jormungandr chain? Maybe leverage or recycle the Project Catalyst infrastructure?
Another option is to firewall out the sidechains from governance. That way people don't spin up a sidechain with a token of unknown value to capture the voting process on the main chain.
I don't know how accurate this link is, but it is an example of governance capture from an incentive external to the chain. Could be just the author's opinion: https://reddit.com/r/tezos/comments/12ahgl1/unaligned_governance_capture_is_it_a_risk_for/
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
need more data/description
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Here you can add examples of user's goals, so for Ada holders it may be "to be able to engage in a safe and secure governance system where...."