Release: develop -> main#42
Open
github-actions[bot] wants to merge 1 commit into
Open
Conversation
* docs: typo sweep, V3 fact corrections, assets and config
Setup
- Replace stale README with project-specific docs README
- Add SVG logo and square logo from the dapp brand assets
- Sync palette.styl accent color and navbar background to brand navy #092f62
- Add Open Graph + Twitter Card meta tags
- Expand sidebar with Savings, Frontend Rewards, Position Roller,
Smart Contract Functions Reference, Bridge to other Chains
(stub pages created; filled in follow-up commits)
Content corrections (verified against contracts/develop)
- Equity: VALUATION_FACTOR is 5 (Equity.sol:40, not 3 as listed)
- Equity: document 90-day MIN_HOLDING_DURATION on redeem
- Position: V3 charges interest continuously, not up front
- Position: document the V3 reference-position mechanism and the
cooldown-free price adjustment via adjustWithReference()
- Position: clarify V2 vs V3 interest model differences
- MintingHub: V3 init period minimum is 3 days, V2 is 14 days
- Leadrate: clarify it is an abstract base inherited by V3 MintingHub
directly and by V2 via Savings/SavingsGateway
- Bridges: replace stub link list with full bridge table, mechanics,
emergency-stop semantics, and monitoring guide
- DEPSwrapper: document wrap/unwrap mechanics and that wrapping does
not reset the underlying 90-day holding clock
- CoinLendingGateway: describe V2-only role; note V3 has native ETH
- Reserve and pool-shares: fix balance-sheet typos, currency names,
and align example with VALUATION_FACTOR=5
Position lifecycle pages
- positions/open: replace "scroll to bottom" with the modern Lending
flow, document the 3-day V3 vs 14-day V2 init period split, and
introduce the reference-position mechanism
- positions/clone: link to Monitoring/Lending, distinguish Manage vs
Clone, document the V2/V3 interest split
- positions/adjust: V2 vs V3 interest accounting, cooldown bypass
- positions/auctions: full rewrite with Phase 1/Phase 2 split, bid
outcomes table, expired-position handling, cooldown matrix, events
Governance
- Add voting-power formula, delegation chains, helpers-array
requirements, kamikaze mechanics, flash-loan protection, invest
and redeem (with 90-day rule), Leadrate proposal flow, constants
Smart Contracts overview
- Add L2 deployments section (Optimism + Base) with addresses
- Add link to forthcoming Function Reference subpage
* docs: fill new sidebar pages with dEURO-specific content
savings.md
- Full Leadrate mechanics, tick math, initial rates per module
- ERC-4626 SavingsVault behaviour with inflation attack mitigation
- V2 vs V3 deployment table and routing guidance
- Note that the Frankencoin 3-day savings delay was removed in dEURO
frontend-rewards.md
- V2-only scope warning at top
- Activity-to-reward mapping for invest/redeem, savings, position interest
- Registration, code transfer, withdrawal flow
- Fee-rate governance with PPM caps and 7-day timelock
- Roll-over preservation through MintingHubGateway
- Contract addresses and full event list
positions/roller.md
- Atomic flash-loan sequence diagram
- Automatic, manual and native-ETH (V3) variants
- V2 vs V3 native-ETH split (V2 requires CoinLendingGateway)
- Frontend code preservation through V2 gateway
- Common errors, custom strategies, security considerations
smart-contracts/functions.md
- Full external/public API surface for DecentralizedEURO, Equity,
Leadrate, MintingHub (V3), Position (V3), PositionFactory,
PositionRoller, Savings/SavingsGateway, SavingsVaultDEURO,
DEPSwrapper, StablecoinBridge, FrontendGateway,
CoinLendingGateway, BridgedToken
- Constants table per contract with the actual on-chain values
(VALUATION_FACTOR=5, MIN_HOLDING_DURATION=90d, CHALLENGER_REWARD=2%,
EXPIRED_PRICE_FACTOR=10, OPENING_FEE=1000, EMERGENCY_QUORUM=10%)
- Explicit V2 vs V3 overload notes for frontend-code variants
- Event signatures per module
- V3 reference-position adjust/adjustPrice variants documented
bridge-to-other-chains.md
- BridgedToken architecture and OP Stack bridge integration
- L2 token addresses on Optimism and Base (dEURO, DEPS)
- Direction-specific finality notes (7-day OP Stack challenge window
on L2 -> L1 withdrawals)
- L2 capability matrix vs mainnet
- Custom-token addition instructions for wallets
* docs: fix V2 vs V3 facts per logic review
Verified against V2 source (git show daef3a2^:contracts/MintingHubV2/*)
and against d-EURO/smartContracts README delta. Three issues corrected:
1. Position init period minimum is 3 days in both V2 and V3 minting
hubs, not 14 days for V2. The 14-day minimum applies only to
MIN_APPLICATION_PERIOD for suggestMinter on the dEURO token, which
is a separate governance mechanism (correct elsewhere).
- positions/open.md, governance.md, smart-contracts.md,
smart-contracts/functions.md
2. V2 already accrues interest continuously with separate principal
and interest tracking and adjust(newPrincipal,...). The upfront
interest model belonged to V1 (Frankencoin), which dEURO did not
adopt. Rewrite the V2 vs V3 comparison in smart-contracts.md,
positions/clone.md and positions/adjust.md.
3. Document the real V3 deltas per the project README:
- Native ETH/WETH directly in MintingHub/Position/PositionRoller
- Leadrate integrated into MintingHub (V2 inherits via Savings)
- Interest charged on usable mint only (excluding reserve)
- Reference-position cooldown waiver
4. savings.md: the 3-day Frankencoin feature dEURO removed was the
withdraw lock-up cliff, not an interest-accrual delay.
* docs: fix invented signatures and inherited Frankencoin V1 claims
Critical re-review against contract sources found several invented or
inherited-from-Frankencoin-V1 claims that don't match the dEURO code.
Invented signatures (removed or corrected)
- DEPSwrapper has wrap/unwrap/unwrapAndSell/halveHoldingDuration —
there is no wrapFor() and wrap()/unwrap() return nothing. Updated
smart-contracts.md and added the actual halveHoldingDuration() with
its 2% governance requirement, plus the wrapper-holding-duration
caveat for unwrapAndSell()
- Equity has no lastInboundBlock mapping in dEURO. The same-block
redemption guard from Frankencoin is replaced by the 90-day
MIN_HOLDING_DURATION enforced via canRedeem() / BelowMinimumHoldingPeriod
- Bridge state variable is `eur` (not `usd`); fixed swap.md
- Position state is `deuro` (lowercase); fixed Position section in
smart-contracts/functions.md
- Savings state is `deuro` (lowercase); fixed Savings section
- repay()/repayFull() return unnamed uint256 in V3 Position
- CoinLendingGateway: rescueCoin() takes no parameter and sends to
owner; rescueToken(address,address,uint256) takes 3 parameters.
Added the missing lendWithCoinFor() variant
- challenges/bid use uint256 challenge number, not uint32
Inherited Frankencoin V1 claims (corrected for dEURO)
- positions/clone.md, positions/adjust.md, reserve.md: removed the
"small fee taken on the minted amount and added to equity" claim.
dEURO V2/V3 mint via mintWithReserve() which only holds back the
reserve contribution (returnable). The Frankencoin V1 upfront
interest deduction does not exist in dEURO. Profit flows to equity
only when accrued interest is later paid via collectProfits()
- reserve.md balance-sheet example: removed the 5% fee and the
equity-grows-by-25-at-mint claim. Replaced with the actual flow
- swap.md: removed the inaccurate "1M dEURO limit at launch" blanket
claim — limits vary per bridge (1M for initial deploy, 100k for
later bridges per the canonical config). Phrased as varying-and-
governance-controlled
- Flash-loan-protection section in governance.md and smart-contracts.md
rewritten to reflect dEURO's actual mechanism: the 90-day holding
period makes flash-loan governance attacks impossible by construction
Build verified locally.
* docs: reflect on-chain bridge state — expired horizons and missing emergency stop
Verified against mainnet via eth_call:
- 5 of 9 bridges are past their horizon (EURT 2025-04-03, EURR/EUROP/EURI
2025-10-22, EURA 2026-01-15); bridge tables now carry horizon/status
columns instead of presenting all nine as active
- the deployed bridges predate the emergency-stop mechanism: stopped()
and emergencyStop() revert on all of them; docs now mark these as
applying to future deployments only
* docs: remove emergency-stop documentation entirely
stopped(), emergencyStop(), EmergencyStopped and EMERGENCY_QUORUM do not
exist on any of the nine deployed bridges — drop them from swap.md,
smart-contracts.md and functions.md instead of labelling them as
future-deployment features. The security-properties table now lists the
horizon expiry as the bridge wind-down mechanism.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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.
Automatic Release PR
This PR was automatically created after changes were pushed to develop.
Commits: 1 new commit(s)
Checklist