Skip to content

Release: develop -> main#42

Open
github-actions[bot] wants to merge 1 commit into
mainfrom
develop
Open

Release: develop -> main#42
github-actions[bot] wants to merge 1 commit into
mainfrom
develop

Conversation

@github-actions

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

* 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.
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.

1 participant