Security Token Offerings
Overview
A Security Token Offering (STO) is a fundraising method that involves making tokens representing ownership of a real-world asset or security available for purchase. Polymesh provides native on-chain capabilities for conducting token offerings through its STO functionality.
STOs allow asset issuers to raise capital by selling tokens to investors in exchange for another asset, typically a stablecoin. The process is managed on-chain with automated settlement, ensuring transparency and efficiency throughout the offering lifecycle.
Common use cases include initial token offerings (primary issuance), secondary offerings (additional funding rounds), capital raises for specific projects, private placements to qualified investors, and rights issues to existing token holders.
The specific steps and requirements for launching an STO on Polymesh may vary depending on your specific needs and the legal and regulatory requirements in your jurisdiction. Selling security tokens results in the application of an extensive set of laws, regulations, and potential liabilities. It's always advisable to consult with legal and financial experts to ensure that you comply with all applicable laws and regulations before you proceed with your STO.
Polymesh does not provide any advice or assurance your security tokens comply with applicable laws and regulations.
Core Concepts
- Offering Asset: The security token being offered for sale (identified by its
AssetId
). Note that Polymesh's native STO functionality only supports Fungible assets. - Raising Asset: The asset (typically a stablecoin) accepted as payment for the offering asset.
- Price Tiers: Configurable pricing levels that can offer different volumes of tokens at different price points.
- Time Window: The period during which the STO is active, defined by start and end times.
- Venue: The settlement venue where the exchange of assets takes place.
- Minimum Investment: The minimum amount of the raising asset required to participate.
STO Lifecycle
The STO process involves several key stages, each managed through specific transactions in the Polymesh ecosystem.
1. Creating an STO
Asset issuers or their appointed agents can create an STO by calling the sto::create_fundraiser
transaction.
Parameters:
offering_portfolio
: Portfolio containing theoffering_asset
.offering_asset
: Asset being offered for sale.raising_portfolio
: Portfolio where theraising_asset
will be deposited.raising_asset
: Asset being accepted as payment.tiers
: Price tiers to charge investors, each with atotal
amount available and aprice
per unit.venue_id
: ID of the settlement venue (must be of typeSTO
).start
: Fundraiser start time (optional, defaults to immediate start).end
: Fundraiser end time (optional, defaults to no expiration).minimum_investment
: Minimum amount ofraising_asset
required to invest.fundraiser_name
: Descriptive name for the fundraiser (informational only).
Effects:
- Creates an STO record on-chain with a unique
FundraiserId
specific to the offering asset. - Locks the offering asset in the offering portfolio (the locked amount equals the sum of all totals from the defined price tiers).
- Sets up the price tier structure and time window for the STO.
- Creates a permanent record of the fundraiser in the chain state.
Constraints:
- Can only be executed by identities with agent permissions for the offering asset.
- The calling identity must have custodial control of both the offering portfolio and raising portfolio, but does not need to directly own them.
- Requires a valid venue of type
STO
. - Price tiers must be valid (i.e each with non-zero totals).
- If both start and end times are specified, start must be before end.
2. Investing in an STO
During the active period of an STO, eligible investors can participate by calling the sto::invest
transaction.
Parameters:
investment_portfolio
: Portfolio where purchased tokens will be deposited.funding_portfolio
: Portfolio that will fund the investment.offering_asset
: Asset to invest in.id
: ID of the fundraiser to invest in.purchase_amount
: Amount of the offering asset to purchase.max_price
: Maximum price to pay per unit (optional, no constraint if omitted).receipt
: Off-chain receipt details (optional, for off-chain funding).
Effects:
- Calculates the cost based on the tiered pricing structure.
- Creates and executes a settlement instruction exchanging the raising asset for the offering asset.
- Updates the remaining available amounts in each price tier.
- Records the investment transaction on-chain.
Constraints:
- Can only be executed during the active STO period (after start and before end).
- The investor must meet all compliance requirements for both the offering and raising assets.
- The purchase amount must be available in the active tiers.
- The investment amount must meet or exceed the minimum investment threshold.
- If a maximum price is specified, the blended price must not exceed this limit.
3. Managing an Active STO
Several management functions are available to the STO creator during its lifecycle:
Modifying the Time Window
The STO time window can be adjusted using sto::modify_fundraiser_window
.
Parameters:
offering_asset
: Asset the offering being modified relates to.id
: ID of the fundraiser to modify.start
: New start time.end
: New end time (optional).
Effects:
- Updates the start and/or end times of the STO.
- Records the modification on-chain.
Constraints:
- Can only be executed by identities with agent permissions for the offering asset.
- Cannot modify a closed STO.
- If both start and end are specified, start must be before end.
Freezing and Unfreezing
STOs can be temporarily paused using sto::freeze_fundraiser
and resumed using sto::unfreeze_fundraiser
.
Parameters:
offering_asset
: Target asset of the fundraiser.id
: ID of the fundraiser to freeze/unfreeze.
Effects:
- Changes the STO status to
Frozen
(preventing investments) orLive
(allowing investments). - Records the status change on-chain.
Constraints:
- Can only be executed by identities with agent permissions for the offering asset.
- Cannot freeze or unfreeze a closed STO.
4. Stopping an STO
An STO must be explicitly stopped to finalize it and release any unsold tokens. This applies both to STOs that are being ended early and those that have reached their natural end date. Stopping an STO is performed by calling the sto::stop
transaction.
Parameters:
offering_asset
: Asset to stop.id
: ID of the fundraiser to stop.
Effects:
- Changes the STO status to
Closed
orClosedEarly
(depending on timing). - Unlocks any remaining unsold offering tokens in the offering portfolio, making them available for other uses.
- Prevents any further investments in the STO.
- Records the closure on-chain.
Constraints:
- Can only be executed by identities with agent permissions for the offering asset.
- Cannot stop an already closed STO.
Querying STO Information
Investors and other interested parties can access information about active STOs through several query methods:
sto::fundraisers
: Retrieve details about specific fundraisers.sto::fundraiser_names
: View fundraiser names for a given asset.sto::fundraiser_count
: Check the total number of fundraisers for an asset.
Technical Considerations
Tiered Pricing Mechanism
The STO functionality supports tiered pricing, allowing issuers to offer different volumes of tokens at different price points. Key aspects of this mechanism:
- Each tier has a total amount available and a fixed price per unit.
- Tiers are consumed in sequence, from the lowest index to the highest.
- A single investment can span multiple tiers if purchasing a large amount.
- The price is calculated as a weighted average (blended price) when spanning multiple tiers.
Compliance Integration
All investments in an STO are subject to the compliance rules of both the offering and raising assets:
- Investors must be eligible to receive the offering asset (passing its compliance and transfer restrictions).
- Investors must be eligible to transfer the raising asset (passing its compliance and transfer restrictions).
- The STO mechanism integrates with Polymesh's compliance framework to enforce these rules.
Settlement Process
The investment process uses Polymesh's settlement system:
- Each investment creates a settlement instruction with two legs:
- Transfer of offering tokens from the offering portfolio to the investor's portfolio.
- Transfer of raising assets from the investor's funding portfolio to the raising portfolio.
- The instruction is automatically affirmed by both parties.
- Settlement occurs immediately upon successful affirmation.
Portfolio Implications
Both the STO creator and investors must consider portfolio management:
- For Creators: The offering portfolio must contain sufficient tokens, which become locked during the STO exclusively for distribution by the offering.
- For Investors: The funding portfolio must contain sufficient raising assets, and the offering tokens will be deposited into the investment portfolio.