Voltar para Documentação

Docs Técnicas

Pension Plans

TREA includes two pension templates for long-term accumulation products:

O conteúdo abaixo vem das fontes técnicas do repositório e é prerenderizado no site para leitura direta por pessoas, crawlers e agentes.

TREA includes two pension templates for long-term accumulation products:

text
IndividualPensionPlan  -> one participant, one beneficiary, vesting/carencia
CorporatePensionPlan   -> sponsor matching, employer vesting, forfeiture

Both contracts model plan rules, participant rights, lifecycle events, and receipts. They do not manage the underlying investment portfolio. NAV, profitability, and portfolio composition can come from an administrator, manager, oracle, TokenizedVault, or RWA Fund integration later.

Individual Pension

contracts/products/individual_pension_plan.trea models a personal retirement plan.

The lifecycle is:

text
initialize -> enroll -> contribute -> update_quota_value
                         \-> redeem after vesting
                         \-> request_portability after vesting
                         \-> pay_benefit after vesting

The participant position is tracked as internal units. Contributions move the managed token into vault_account and increase participant_units one-to-one. quota_value is informational and audit-oriented: only value_authority can publish it, and each update carries version, timestamp, and evidence.

Important views:

  • position()
  • total_contributed_view()
  • contribution_count_view()
  • quota_value_view()
  • quota_value_version_view()
  • is_vested()
  • eligible_for_redemption()
  • vesting_ends_at()

Corporate Pension

contracts/products/corporate_pension_plan.trea extends the same model with a sponsor and employer matching.

Balances are separated:

| Balance | Meaning | |---------|---------| | participant_contributed | employee/participant money, vested immediately | | employer_contributed | sponsor matching, subject to vesting | | employer_forfeited | unvested employer amount returned to sponsor |

Matching uses match_percent_bps and match_cap_per_contribution. For example, 5000 bps means 50%; a non-zero cap limits the sponsor contribution per matching event.

Vesting And Forfeiture

Employer money vests with a cliff plus linear schedule:

text
before cliff        -> 0% vested
between cliff/full  -> linear vesting
after full          -> 100% vested

If the participant leaves before full vesting, terminate_participant() returns the unvested employer amount to the sponsor and preserves only vested employer rights plus the participant's own balance.

Portability follows the same rule: only the participant balance plus vested employer balance can move to the target plan. Unvested employer balance is forfeited back to the sponsor during portability, so no value is trapped in a terminal Ported state.

Receipts

Both plans emit PensionReceipt events for lifecycle steps:

  • initialization and enrollment;
  • participant contributions;
  • employer matching;
  • quota value updates;
  • redemption;
  • portability;
  • benefit payment;
  • closure or forfeiture.

These receipts are meant for wallets and product dashboards: the user sees "contribution", "vested employer balance", "ported out", or "benefit paid", not just an opaque contract call.

Product Boundary

The pension contract is not payroll, tax logic, or asset management. It is the governance layer for the participant's rights. This keeps the TREA surface stable while allowing different institutions to plug in their own portfolio, actuarial, or jurisdiction-specific systems around it.