Skip to content

Release: develop -> main - #81

Merged
Danswar merged 2 commits into
mainfrom
develop
Jul 21, 2026
Merged

Release: develop -> main#81
Danswar merged 2 commits into
mainfrom
develop

Conversation

@github-actions

@github-actions github-actions Bot commented Jul 5, 2026

Copy link
Copy Markdown

Automatic Release PR

This PR was automatically created after changes were pushed to develop.

Commits: 1 new commit(s)

Checklist

  • Review all changes
  • Verify CI passes
  • Approve and merge when ready for production

TaprootFreak and others added 2 commits July 5, 2026 17:38
…sive (#78)

* docs(guard): clarify delegation is additive, not Governor-style exclusive

The delegation explainer said "delegateVoteTo does not reduce your own votes". That is
technically correct — dEURO Equity uses additive, non-exclusive delegation: delegateVoteTo only
writes delegates[msg.sender], and votes() = balanceOf x holding-duration is independent of
delegates[] (Equity.sol:192-193, 259-262). The delegator keeps their full votes; the delegate
can additionally count them.

But the phrasing collides with the common ERC20Votes/Governor mental model, where delegation is
EXCLUSIVE (your weight moves to the delegatee and you keep none). Readers expecting that reasonably
read the sentence as wrong. Clarified: non-custodial AND additive, contrasted explicitly with
Governor-style delegation. Frontend copy only, no behavior change.

* docs(guard): fix misleading "on top of its own" — signer holds no nDEPS

On-chain the guard signer holds 0 nDEPS (votes=0, balanceOf=0), so "count your votes on top
of its own" wrongly implied the guard has votes of its own. The additive/non-exclusive core is
correct (verified against the deployed Equity 0xc71104... via Sourcify + on-chain), but the signer's
entire veto power comes from delegators. Reworded accordingly.
#82)

* fix(rpc): stop multicall cache from replaying transient errors forever

ethers-multicall-provider's internal DataLoader (cache enabled by default)
caches per-call Error results and only clears entries when a load fulfills.
A single transient RPC failure (e.g. one HTTP 500) on a multicall batch is
therefore replayed from the cache for every future identical call
(same to+data+blockTag): retries and later monitoring cycles never reach
the RPC again and the service stays down until a process restart.

Wrap with cache=false: per-tick call batching is unaffected, and since
latest-block entries were cleared after every successful load anyway, no
effective caching is lost. withRetry becomes able to actually recover from
a transient multicall failure.

* test(rpc): finish provider network bootstrap before arming the failing batch

Otherwise the intentionally failed first batch also takes down the lazy
eth_chainId network detection, which logs noise and leaves a 1s retry
timer that can trigger jest's force-exit warning.
@Danswar
Danswar requested review from Danswar and TaprootFreak July 21, 2026 13:55
@Danswar
Danswar merged commit 181475b into main Jul 21, 2026
9 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants