STO

How to Distribute your Security Token

πŸ‘€ Overview

After this tutorial, you'll be able to raise funds via a "Tiered Security Token Offering" or TieredSTO in short. The STO allows investors to participate in one or more tiers of investments, each with its predetermined price, volume, and discounts.

πŸš› Loading Security Token Offerings

Similar to previous tutorials, load any existing STOs that might be associated with the security token:

Load STOs using token.issuance.offerings.getStos(), which is wrapped in an asyncAction that updates the UI accordingly.

πŸ†• Launching a New Offering

There are many parameters required to launch an STO. Some are self-explanatory, such as startDate and endDate.

  • nonAccreditedInvestmentLimit is the limit of tokens that non-accredited investors can buy. Investors are non-accredited by default. You can change their accredited status as follows:token.tokenholders.modifyData({tokenholders: [{address, isAccredited: true}]}).

  • raisedFundsWallet is the wallet to receive raised funds. In the example above, we set it to the user's address.

  • allowPreIssuance means that new tokens will be minted as soon as the STO is launched. In that case, any unsold tokens after the STO ends will be transferred to the address specified with the unsoldTokensWallet parameter. If allowPreIssuance is set to false, then tokens will be issued on purchase instead.

  • tiers[] is a list of STO tiers. Each one declares that amount of tokens sold, their price, and whether there are discounted tokens.

πŸ’° Launching a non-USD STO

In case you need to denominate investments in a non-USD Stable Coin (e.g., a Stable Coin for CAD), you need to pass two additional parameters to launchTieredSto, as well as adding Stable Coins to the supported currencies:

currencies allows you to specify the asset that will be raised, such as ETH or Stablecoins.

Changing the currency you want to price your raise in is done via currencySymbol.

The protocol converts the specified price to ETH (or the chosen currency for the raise) via price oracles. You must specify the oracle address (e.g., ethOracleAddress above). You can find a list of oracle addresses on Polymath's Github.

Last updated

Was this helpful?