Primcast
中文

Offerings

An Initial RWA Offering (IRO) is how a new asset raises capital. The Offering contract holds subscriptions in escrow. It either delivers units to every subscriber and pays the issuer, or refunds everyone in full.

Lifecycle

  1. Create. The token's admin calls createOffering(token, unitPrice, softCap, hardCap, startTime, endTime). The settlement currency is the token's settlement token, which must be allowlisted.
  2. Subscribe. Between startTime and endTime, investors approve the stablecoin and call subscribe(id, amount). The amount must be a multiple of unitPrice, and the total may not exceed the hard cap.
  3. Close. Once the window ends or the hard cap is reached, anyone can call closeOffering(id); keepers call processAll. If raised ≥ softCap the offering succeeds; otherwise it fails.
  4. Settle.
    • Succeeded: each investor calls claimAllocation(id) to have their units minted, and the issuer calls withdrawProceeds(id) once to receive the full amount raised.
    • Failed or cancelled: each investor calls claimRefund(id) to get back exactly what they paid.

The issuer or governance can cancel an offering while it is open, with a reason. Everyone can then claim a refund.

Parameters

ParameterMeaning
unitPriceSettlement base units per one base unit of the token. With a 0-decimal token that is the price of one whole unit. With a 6-decimal token it is the price of 10⁻⁶ of a token.
softCapMinimum raise for success (a multiple of unitPrice)
hardCapMaximum raise (a multiple of unitPrice); reaching it allows an immediate close
startTime, endTimeThe subscription window, in seconds since epoch

Allocation is first come, first served up to the hard cap. There is no oversubscription and no pro-rata scaling.

Eligibility

  • subscribe checks that the investor is not sanctioned and, if the token requires it, has valid KYC.
  • Units are minted at claimAllocation, which runs the token's full rules: accreditation, jurisdiction, freeze and holder cap.

An investor who passes the subscription checks but fails a token rule at claim time — the wrong jurisdiction, not accredited, or over the holder cap — cannot receive units. Once the offering has succeeded there is no refund path. This portal therefore calls the token's canReceive before letting you subscribe. If you integrate directly, do the same.

Proceeds and escrow

  • Subscriptions sit in the Offering contract until the offering closes.
  • On success the issuer withdraws everything at once. There is no milestone-based or staged release in v1. After that, investors rely on the issuer for dividends and redemptions.
  • On failure or cancellation, refunds come from the same escrow and are always 1:1.
  • The offering charges no fee at the contract level.

Keepers

processAll(max) and process(ids) close due offerings. Each item is independent, so one failure never blocks the rest. isDue(id) tells a keeper whether there is work to do. Anyone may call these functions.

What offerings do not do (v1)

  • No tranches (senior or junior), and no staged capital release.
  • No return injection or default path; operating returns reach investors as dividends.
  • No secondary sale of subscriptions before close.
  • No automatic refund when a claim fails a token rule (see the caution above).

Events

OfferingCreated, Subscribed, OfferingClosed, AllocationClaimed, ProceedsWithdrawn, RefundClaimed, OfferingCancelled.