STO module for standard capped crowdsale (USDTieredSTO.sol)

View Source: contracts/modules/STO/USDTiered/USDTieredSTO.sol

↗ Extends: USDTieredSTOStorage, STO

USDTieredSTO

Contract Members

Constants & Variables

string internal constant POLY_ORACLE;
string internal constant ETH_ORACLE;

Events

event SetAllowBeneficialInvestments(bool  _allowed);
event SetNonAccreditedLimit(address  _investor, uint256  _limit);
event TokenPurchase(address indexed _purchaser, address indexed _beneficiary, uint256  _tokens, uint256  _usdAmount, uint256  _tierPrice, uint256  _tier);
event FundsReceived(address indexed _purchaser, address indexed _beneficiary, uint256  _usdAmount, enum ISTO.FundRaiseType  _fundRaiseType, uint256  _receivedValue, uint256  _spentValue, uint256  _rate);
event ReserveTokenMint(address indexed _owner, address indexed _wallet, uint256  _tokens, uint256  _latestTier);
event SetAddresses(address indexed _wallet, IERC20[]  _usdTokens);
event SetLimits(uint256  _nonAccreditedLimitUSD, uint256  _minimumInvestmentUSD);
event SetTimes(uint256  _startTime, uint256  _endTime);
event SetTiers(uint256[]  _ratePerTier, uint256[]  _ratePerTierDiscountPoly, uint256[]  _tokensPerTierTotal, uint256[]  _tokensPerTierDiscountPoly);
event SetTreasuryWallet(address  _oldWallet, address  _newWallet);

Modifiers

validETH

Arguments

Name

Type

Description

validPOLY

Arguments

Name

Type

Description

validSC

Arguments

Name

Type

Description

_usdToken

address

Functions

Arguments

Name

Type

Description

_securityToken

address

_polyAddress

address

configure

Function used to intialize the contract variables

Arguments

Name

Type

Description

_startTime

uint256

Unix timestamp at which offering get started

_endTime

uint256

Unix timestamp at which offering get ended

_ratePerTier

uint256[]

Rate (in USD) per tier ( 10*18)

_ratePerTierDiscountPoly

uint256[]

_tokensPerTierTotal

uint256[]

Tokens available in each tier

_tokensPerTierDiscountPoly

uint256[]

_nonAccreditedLimitUSD

uint256

Limit in USD ( 10*18) for non-accredited investors

_minimumInvestmentUSD

uint256

Minimun investment in USD ( 10*18)

_fundRaiseTypes

enum ISTO.FundRaiseType[]

Types of currency used to collect the funds

_wallet

address payable

Ethereum account address to hold the funds

_treasuryWallet

address

Ethereum account address to receive unsold tokens

_usdTokens

IERC20[]

Contract address of the stable coins

modifyFunding

Modifies fund raise types

Arguments

Name

Type

Description

_fundRaiseTypes

enum ISTO.FundRaiseType[]

Array of fund raise types to allow

modifyLimits

modifies max non accredited invets limit and overall minimum investment limit

Arguments

Name

Type

Description

_nonAccreditedLimitUSD

uint256

max non accredited invets limit

_minimumInvestmentUSD

uint256

overall minimum investment limit

modifyTiers

modifiers STO tiers. All tiers must be passed, can not edit specific tiers.

Arguments

Name

Type

Description

_ratePerTier

uint256[]

Array of rates per tier

_ratePerTierDiscountPoly

uint256[]

Array of discounted poly rates per tier

_tokensPerTierTotal

uint256[]

Array of total tokens per tier

_tokensPerTierDiscountPoly

uint256[]

Array of discounted tokens per tier

modifyTimes

Modifies STO start and end times

Arguments

Name

Type

Description

_startTime

uint256

start time of sto

_endTime

uint256

end time of sto

_isSTOStarted

Arguments

Name

Type

Description

modifyAddresses

Modifies addresses used as wallet, reserve wallet and usd token

Arguments

Name

Type

Description

_wallet

address payable

Address of wallet where funds are sent

_treasuryWallet

address

Address of wallet where unsold tokens are sent

_usdTokens

IERC20[]

Address of usd tokens

modifyOracle

Modifies Oracle address. By default, Polymath oracles are used but issuer can overide them using this function Set _oracleAddress to 0x0 to fallback to using Polymath oracles

Arguments

Name

Type

Description

_fundRaiseType

enum ISTO.FundRaiseType

Actual currency

_oracleAddress

address

address of the oracle

_modifyLimits

Arguments

Name

Type

Description

_nonAccreditedLimitUSD

uint256

_minimumInvestmentUSD

uint256

_modifyTiers

Arguments

Name

Type

Description

_ratePerTier

uint256[]

_ratePerTierDiscountPoly

uint256[]

_tokensPerTierTotal

uint256[]

_tokensPerTierDiscountPoly

uint256[]

_modifyTimes

Arguments

Name

Type

Description

_startTime

uint256

_endTime

uint256

_modifyAddresses

Arguments

Name

Type

Description

_wallet

address payable

_treasuryWallet

address

_usdTokens

IERC20[]

_modifyUSDTokens

Arguments

Name

Type

Description

_usdTokens

IERC20[]

finalize

Finalizes the STO and mint remaining tokens to treasury address

Arguments

Name

Type

Description

changeNonAccreditedLimit

Modifies the list of overrides for non-accredited limits in USD

Arguments

Name

Type

Description

_investors

address[]

Array of investor addresses to modify

_nonAccreditedLimit

uint256[]

Array of uints specifying non-accredited limits

getAccreditedData

Returns investor accredited & non-accredited override informatiomn

Returns

investors list of all configured investors

Arguments

Name

Type

Description

changeAllowBeneficialInvestments

Function to set allowBeneficialInvestments (allow beneficiary to be different to funder)

Arguments

Name

Type

Description

_allowBeneficialInvestments

bool

Boolean to allow or disallow beneficial investments

fallback function - assumes ETH being invested

Arguments

Name

Type

Description

buyWithETH

Arguments

Name

Type

Description

_beneficiary

address

buyWithPOLY

Arguments

Name

Type

Description

_beneficiary

address

_investedPOLY

uint256

buyWithUSD

Arguments

Name

Type

Description

_beneficiary

address

_investedSC

uint256

_usdToken

IERC20

buyWithETHRateLimited

Purchase tokens using ETH

Arguments

Name

Type

Description

_beneficiary

address

Address where security tokens will be sent

_minTokens

uint256

Minumum number of tokens to buy or else revert

buyWithPOLYRateLimited

Purchase tokens using POLY

Arguments

Name

Type

Description

_beneficiary

address

Address where security tokens will be sent

_investedPOLY

uint256

Amount of POLY invested

_minTokens

uint256

Minumum number of tokens to buy or else revert

buyWithUSDRateLimited

Purchase tokens using Stable coins

Arguments

Name

Type

Description

_beneficiary

address

Address where security tokens will be sent

_investedSC

uint256

Amount of Stable coins invested

_minTokens

uint256

Minumum number of tokens to buy or else revert

_usdToken

IERC20

Address of USD stable coin to buy tokens with

_buyWithTokens

Arguments

Name

Type

Description

_beneficiary

address

_tokenAmount

uint256

_fundRaiseType

enum ISTO.FundRaiseType

_minTokens

uint256

_token

IERC20

_getSpentvalues

Arguments

Name

Type

Description

_beneficiary

address

_amount

uint256

_fundRaiseType

enum ISTO.FundRaiseType

_minTokens

uint256

_buyTokens

Low level token purchase

Arguments

Name

Type

Description

_beneficiary

address

Address where security tokens will be sent

_investmentValue

uint256

Amount of POLY, ETH or Stable coins invested

_rate

uint256

_fundRaiseType

enum ISTO.FundRaiseType

Fund raise type (POLY, ETH, SC)

_buyTokensChecks

Arguments

Name

Type

Description

_beneficiary

address

_investmentValue

uint256

investedUSD

uint256

_calculateTier

Arguments

Name

Type

Description

_beneficiary

address

_tier

uint256

_investedUSD

uint256

_fundRaiseType

enum ISTO.FundRaiseType

_purchaseTier

Arguments

Name

Type

Description

_beneficiary

address

_tierPrice

uint256

_tierRemaining

uint256

_investedUSD

uint256

_tier

uint256

_isAccredited

Arguments

Name

Type

Description

_investor

address

_getIsAccredited

Arguments

Name

Type

Description

_investor

address

dataStore

IDataStore

isOpen

This function returns whether or not the STO is in fundraising mode (open)

Returns

bool Whether the STO is accepting investments

Arguments

Name

Type

Description

capReached

Checks whether the cap has been reached.

Returns

bool Whether the cap was reached

Arguments

Name

Type

Description

getRate

returns current conversion rate of funds

Arguments

Name

Type

Description

_fundRaiseType

enum ISTO.FundRaiseType

Fund raise type to get rate of

convertToUSD

This function converts from ETH or POLY to USD

Returns

uint256 Value in USD

Arguments

Name

Type

Description

_fundRaiseType

enum ISTO.FundRaiseType

Currency key

_amount

uint256

Value to convert to USD

convertFromUSD

This function converts from USD to ETH or POLY

Returns

uint256 Value in ETH or POLY

Arguments

Name

Type

Description

_fundRaiseType

enum ISTO.FundRaiseType

Currency key

_amount

uint256

Value to convert from USD

getTokensSold

⤾ overrides STO.getTokensSold

Return the total no. of tokens sold

Returns

uint256 Total number of tokens sold

Arguments

Name

Type

Description

getTokensMinted

Return the total no. of tokens minted

Returns

uint256 Total number of tokens minted

Arguments

Name

Type

Description

getTokensSoldFor

Return the total no. of tokens sold for the given fund raise type param _fundRaiseType The fund raising currency (e.g. ETH, POLY, SC) to calculate sold tokens for

Returns

uint256 Total number of tokens sold for ETH

Arguments

Name

Type

Description

_fundRaiseType

enum ISTO.FundRaiseType

getTokensMintedByTier

Return array of minted tokens in each fund raise type for given tier param _tier The tier to return minted tokens for

Returns

uint256[] array of minted tokens in each fund raise type

Arguments

Name

Type

Description

_tier

uint256

getTokensSoldByTier

Return the total no. of tokens sold in a given tier param _tier The tier to calculate sold tokens for

Returns

uint256 Total number of tokens sold in the tier

Arguments

Name

Type

Description

_tier

uint256

getNumberOfTiers

Return the total no. of tiers

Returns

uint256 Total number of tiers

Arguments

Name

Type

Description

getUsdTokens

Return the usd tokens accepted by the STO

Returns

address[] usd tokens

Arguments

Name

Type

Description

getPermissions

⤾ overrides IModule.getPermissions

Return the permissions flag that are associated with STO

Arguments

Name

Type

Description

getSTODetails

Return the STO details

Returns

Unixtimestamp at which offering gets start.

Arguments

Name

Type

Description

getInitFunction

⤾ overrides IModule.getInitFunction

This function returns the signature of configure function

Returns

bytes4 Configure function signature

Arguments

Name

Type

Description

_getOracle

Arguments

Name

Type

Description

_currency

bytes32

_denominatedCurrency

bytes32

Last updated

Was this helpful?