Milestones
How the second capital release is proven.
Monad testnet; not audited.
The rest of the raise is released only inside [secondReleaseNotBefore, secondReleaseDeadline), with a
healthy source and no default. The issuer picks the proof at creation:
| Mode | Proof | Trust |
|---|---|---|
Onchain | account.cumulativeRevenue() − snapshot ≥ minRevenue and minOperatingPeriod elapsed. Call factory.releaseSecond(bond). | No milestone attester. Counts all booked revenue, including self-payments; source-health checks still apply. |
Signed | An EIP-712 milestone from the disclosed milestone signer, with wash-adjusted revenue. Call releaseSecondSigned. | The milestone signer. |
If the deadline passes, anyone calls expireUndrawn() and the undrawn capital goes to investors.