Repository navigation
Replies: 1 comment
|
Closing for now. We'll reopen this when governance work resumes. DD-1 was deferred on Aug 4, and it was never settled on its merits. Abraham's DD-3 decision (Discussion No. 70) moved all of DIN-DAO, Stages A–D, to post-mainnet: DevNet governs off-chain until then. PR No. 27 ( When this resumes, the starting point is still Option A (double-locking), because of the conflict-of-interest argument. The full write-up stays in |
0 replies
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
Tracked as DD-1 in
Developer/design/DESIGN_DECISIONS.md. Raised by @robertocarlous on PR #27 (feat/din-dao, issue #23).Problem
DinValidatorStakealready holds a validator's slashable DIN stake. Stage C'sDinGovernanceStaking(stDIN) is a separate contract: lock DIN → mint non-transferable, checkpointed voting power (OZERC20Votes). As shipped in PR #27, these two locks are entirely independent — a validator who wants governance voting power must lock a second, distinct pool of DIN intoDinGovernanceStaking, on top of what's already locked (and slashable) inDinValidatorStake.Net effect: either validators need 2x their DIN (one set staked for validation, one locked for governance), or they get zero governance power despite being the most economically committed participants on the network.
Doesn't block PR #27 merging — Stage C doesn't activate before Testnet 1.0 regardless — but worth resolving with real discussion rather than deciding under PR-review time pressure.
Options
A. Double-locking (current PR #27 behavior) — keep the two contracts fully independent.
B. Stake-bridge
DinValidatorStakebalance — e.g. a read-only adapter reporting it asIVotes-compatible voting power, no second lock.C. Hybrid
Full write-up with more detail: DD-1 in
DESIGN_DECISIONS.md.Update: conflict-of-interest argument for Option A
This branch's own
Documentation/technical/din-dao/README.md(§5, Voting Power Model) already recorded a rationale against B/C when Stage C was designed:That's a real, concrete argument for A:
DinGovernorproposals includeOperational-category items — slasher authorization, blacklisting, model disable/enable (§4.1 of the same doc) — and a validator voting with power derived from their own slashable stake is voting on the rules that could slash them. B and C both inherit this to the extent they let bridged stake vote on those proposals.Possible mitigations, if bridging is still wanted for the capital-efficiency win
Parameter,Treasury, andUpgradeproposals — zero weight onOperationalproposals (the category that actually contains slashing/blacklisting decisions). Keeps the conflict-free upside for most governance activity, removes it exactly where it exists. Cost: stock OZGovernordoesn't support per-category voter-weight rules — this needs a custom voting/weight module, not vanillaGovernorVotes.Both are real additional scope on top of B/C's already-larger audit surface — worth weighing against just shipping A now (simplest, no conflict, matches what's already documented) and revisiting bridging later if validator under-representation in governance actually becomes a problem in practice.
My take (updated)
Leaning toward A (double-locking, current PR #27 behavior) given the conflict-of-interest argument above — it's already the documented rationale in the branch, and neither mitigation for B/C is free. Still open to B/C with mitigation (1) if the team thinks validator capital-efficiency is worth the added Governor complexity.
cc @Santiagocetran @Abidoyesimze @robertocarlous @abrahamnash — input welcome on: A vs. B/C-with-mitigation, and separately, whether either mitigation above is worth building for v1 or should wait until we see actual demand from validators for a governance voice.
All reactions