View Source: contracts/modules/STO/USDTiered/USDTieredSTO.sol
↗ Extends: USDTieredSTOStorage, STO
USDTieredSTO
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);
modifier validETH() internal
Arguments
Name | Type | Description |
modifier validPOLY() internal
Arguments
Name | Type | Description |
modifier validSC(address _usdToken) internal
Arguments
Name | Type | Description |
_usdToken | address | |
function (address _securityToken, address _polyAddress) public nonpayable Module
Arguments
Name | Type | Description |
_securityToken | address | |
_polyAddress | address | |
Function used to intialize the contract variables
function configure(uint256 _startTime, uint256 _endTime, uint256[] _ratePerTier, uint256[] _ratePerTierDiscountPoly, uint256[] _tokensPerTierTotal, uint256[] _tokensPerTierDiscountPoly, uint256 _nonAccreditedLimitUSD, uint256 _minimumInvestmentUSD, enum ISTO.FundRaiseType[] _fundRaiseTypes, address payable _wallet, address _treasuryWallet, IERC20[] _usdTokens) public nonpayable onlyFactory
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 |
Modifies fund raise types
function modifyFunding(enum ISTO.FundRaiseType[] _fundRaiseTypes) external nonpayable withPerm
Arguments
Name | Type | Description |
_fundRaiseTypes | enum ISTO.FundRaiseType[] | Array of fund raise types to allow |
modifies max non accredited invets limit and overall minimum investment limit
function modifyLimits(uint256 _nonAccreditedLimitUSD, uint256 _minimumInvestmentUSD) external nonpayable withPerm
Arguments
Name | Type | Description |
_nonAccreditedLimitUSD | uint256 | max non accredited invets limit |
_minimumInvestmentUSD | uint256 | overall minimum investment limit |
modifiers STO tiers. All tiers must be passed, can not edit specific tiers.
function modifyTiers(uint256[] _ratePerTier, uint256[] _ratePerTierDiscountPoly, uint256[] _tokensPerTierTotal, uint256[] _tokensPerTierDiscountPoly) external nonpayable withPerm
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 |
Modifies STO start and end times
function modifyTimes(uint256 _startTime, uint256 _endTime) external nonpayable withPerm
Arguments
Name | Type | Description |
_startTime | uint256 | start time of sto |
_endTime | uint256 | end time of sto |
function _isSTOStarted() internal view
Arguments
Name | Type | Description |
Modifies addresses used as wallet, reserve wallet and usd token
function modifyAddresses(address payable _wallet, address _treasuryWallet, IERC20[] _usdTokens) external nonpayable
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 |
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
function modifyOracle(enum ISTO.FundRaiseType _fundRaiseType, address _oracleAddress) external nonpayable
Arguments
Name | Type | Description |
_fundRaiseType | enum ISTO.FundRaiseType | Actual currency |
_oracleAddress | address | address of the oracle |
function _modifyLimits(uint256 _nonAccreditedLimitUSD, uint256 _minimumInvestmentUSD) internal nonpayable
Arguments
Name | Type | Description |
_nonAccreditedLimitUSD | uint256 | |
_minimumInvestmentUSD | uint256 | |
function _modifyTiers(uint256[] _ratePerTier, uint256[] _ratePerTierDiscountPoly, uint256[] _tokensPerTierTotal, uint256[] _tokensPerTierDiscountPoly) internal nonpayable
Arguments
Name | Type | Description |
_ratePerTier | uint256[] | |
_ratePerTierDiscountPoly | uint256[] | |
_tokensPerTierTotal | uint256[] | |
_tokensPerTierDiscountPoly | uint256[] | |
function _modifyTimes(uint256 _startTime, uint256 _endTime) internal nonpayable
Arguments
Name | Type | Description |
_startTime | uint256 | |
_endTime | uint256 | |
function _modifyAddresses(address payable _wallet, address _treasuryWallet, IERC20[] _usdTokens) internal nonpayable
Arguments
Name | Type | Description |
_wallet | address payable | |
_treasuryWallet | address | |
_usdTokens | IERC20[] | |
function _modifyUSDTokens(IERC20[] _usdTokens) internal nonpayable
Arguments
Name | Type | Description |
_usdTokens | IERC20[] | |
Finalizes the STO and mint remaining tokens to treasury address
function finalize() external nonpayable withPerm
Arguments
Name | Type | Description |
Modifies the list of overrides for non-accredited limits in USD
function changeNonAccreditedLimit(address[] _investors, uint256[] _nonAccreditedLimit) external nonpayable withPerm
Arguments
Name | Type | Description |
_investors | address[] | Array of investor addresses to modify |
_nonAccreditedLimit | uint256[] | Array of uints specifying non-accredited limits |
Returns investor accredited & non-accredited override informatiomn
function getAccreditedData() external viewreturns(investors address[], accredited bool[], overrides uint256[])
Returns
investors list of all configured investors
Arguments
Name | Type | Description |
Function to set allowBeneficialInvestments (allow beneficiary to be different to funder)
function changeAllowBeneficialInvestments(bool _allowBeneficialInvestments) external nonpayable withPerm
Arguments
Name | Type | Description |
_allowBeneficialInvestments | bool | Boolean to allow or disallow beneficial investments |
fallback function - assumes ETH being invested
function () external payable
Arguments
Name | Type | Description |
function buyWithETH(address _beneficiary) external payablereturns(uint256, uint256, uint256)
Arguments
Name | Type | Description |
_beneficiary | address | |
function buyWithPOLY(address _beneficiary, uint256 _investedPOLY) external nonpayablereturns(uint256, uint256, uint256)
Arguments
Name | Type | Description |
_beneficiary | address | |
_investedPOLY | uint256 | |
function buyWithUSD(address _beneficiary, uint256 _investedSC, IERC20 _usdToken) external nonpayablereturns(uint256, uint256, uint256)
Arguments
Name | Type | Description |
_beneficiary | address | |
_investedSC | uint256 | |
_usdToken | IERC20 | |
Purchase tokens using ETH
function buyWithETHRateLimited(address _beneficiary, uint256 _minTokens) public payable validETHreturns(uint256, uint256, uint256)
Arguments
Name | Type | Description |
_beneficiary | address | Address where security tokens will be sent |
_minTokens | uint256 | Minumum number of tokens to buy or else revert |
Purchase tokens using POLY
function buyWithPOLYRateLimited(address _beneficiary, uint256 _investedPOLY, uint256 _minTokens) public nonpayable validPOLYreturns(uint256, uint256, uint256)
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 |
Purchase tokens using Stable coins
function buyWithUSDRateLimited(address _beneficiary, uint256 _investedSC, uint256 _minTokens, IERC20 _usdToken) public nonpayable validSCreturns(uint256, uint256, uint256)
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 |
function _buyWithTokens(address _beneficiary, uint256 _tokenAmount, enum ISTO.FundRaiseType _fundRaiseType, uint256 _minTokens, IERC20 _token) internal nonpayablereturns(uint256, uint256, uint256)
Arguments
Name | Type | Description |
_beneficiary | address | |
_tokenAmount | uint256 | |
_fundRaiseType | enum ISTO.FundRaiseType | |
_minTokens | uint256 | |
_token | IERC20 | |
function _getSpentvalues(address _beneficiary, uint256 _amount, enum ISTO.FundRaiseType _fundRaiseType, uint256 _minTokens) internal nonpayablereturns(rate uint256, spentUSD uint256, spentValue uint256, initialMinted uint256)
Arguments
Name | Type | Description |
_beneficiary | address | |
_amount | uint256 | |
_fundRaiseType | enum ISTO.FundRaiseType | |
_minTokens | uint256 | |
Low level token purchase
function _buyTokens(address _beneficiary, uint256 _investmentValue, uint256 _rate, enum ISTO.FundRaiseType _fundRaiseType) internal nonpayable whenNotPausedreturns(spentUSD uint256, spentValue uint256)
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) |
function _buyTokensChecks(address _beneficiary, uint256 _investmentValue, uint256 investedUSD) internal viewreturns(netInvestedUSD uint256)
Arguments
Name | Type | Description |
_beneficiary | address | |
_investmentValue | uint256 | |
investedUSD | uint256 | |
function _calculateTier(address _beneficiary, uint256 _tier, uint256 _investedUSD, enum ISTO.FundRaiseType _fundRaiseType) internal nonpayablereturns(spentUSD uint256, gotoNextTier bool)
Arguments
Name | Type | Description |
_beneficiary | address | |
_tier | uint256 | |
_investedUSD | uint256 | |
_fundRaiseType | enum ISTO.FundRaiseType | |
function _purchaseTier(address _beneficiary, uint256 _tierPrice, uint256 _tierRemaining, uint256 _investedUSD, uint256 _tier) internal nonpayablereturns(spentUSD uint256, purchasedTokens uint256, gotoNextTier bool)
Arguments
Name | Type | Description |
_beneficiary | address | |
_tierPrice | uint256 | |
_tierRemaining | uint256 | |
_investedUSD | uint256 | |
_tier | uint256 | |
function _isAccredited(address _investor) internal viewreturns(bool)
Arguments
Name | Type | Description |
_investor | address | |
function _getIsAccredited(address _investor, IDataStore dataStore) internal viewreturns(bool)
Arguments
Name | Type | Description |
_investor | address | |
dataStore | IDataStore | |
This function returns whether or not the STO is in fundraising mode (open)
function isOpen() public viewreturns(bool)
Returns
bool Whether the STO is accepting investments
Arguments
Name | Type | Description |
Checks whether the cap has been reached.
function capReached() public viewreturns(bool)
Returns
bool Whether the cap was reached
Arguments
Name | Type | Description |
returns current conversion rate of funds
function getRate(enum ISTO.FundRaiseType _fundRaiseType) public nonpayablereturns(uint256)
Arguments
Name | Type | Description |
_fundRaiseType | enum ISTO.FundRaiseType | Fund raise type to get rate of |
This function converts from ETH or POLY to USD
function convertToUSD(enum ISTO.FundRaiseType _fundRaiseType, uint256 _amount) public nonpayablereturns(uint256)
Returns
uint256 Value in USD
Arguments
Name | Type | Description |
_fundRaiseType | enum ISTO.FundRaiseType | Currency key |
_amount | uint256 | Value to convert to USD |
This function converts from USD to ETH or POLY
function convertFromUSD(enum ISTO.FundRaiseType _fundRaiseType, uint256 _amount) public nonpayablereturns(uint256)
Returns
uint256 Value in ETH or POLY
Arguments
Name | Type | Description |
_fundRaiseType | enum ISTO.FundRaiseType | Currency key |
_amount | uint256 | Value to convert from USD |
⤾ overrides STO.getTokensSold
Return the total no. of tokens sold
function getTokensSold() public viewreturns(uint256)
Returns
uint256 Total number of tokens sold
Arguments
Name | Type | Description |
Return the total no. of tokens minted
function getTokensMinted() public viewreturns(tokensMinted uint256)
Returns
uint256 Total number of tokens minted
Arguments
Name | Type | Description |
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
function getTokensSoldFor(enum ISTO.FundRaiseType _fundRaiseType) external viewreturns(tokensSold uint256)
Returns
uint256 Total number of tokens sold for ETH
Arguments
Name | Type | Description |
_fundRaiseType | enum ISTO.FundRaiseType | |
Return array of minted tokens in each fund raise type for given tier param _tier The tier to return minted tokens for
function getTokensMintedByTier(uint256 _tier) external viewreturns(uint256[])
Returns
uint256[] array of minted tokens in each fund raise type
Arguments
Name | Type | Description |
_tier | uint256 | |
Return the total no. of tokens sold in a given tier param _tier The tier to calculate sold tokens for
function getTokensSoldByTier(uint256 _tier) external viewreturns(uint256)
Returns
uint256 Total number of tokens sold in the tier
Arguments
Name | Type | Description |
_tier | uint256 | |
Return the total no. of tiers
function getNumberOfTiers() external viewreturns(uint256)
Returns
uint256 Total number of tiers
Arguments
Name | Type | Description |
Return the usd tokens accepted by the STO
function getUsdTokens() external viewreturns(contract IERC20[])
Returns
address[] usd tokens
Arguments
Name | Type | Description |
⤾ overrides IModule.getPermissions
Return the permissions flag that are associated with STO
function getPermissions() public viewreturns(allPermissions bytes32[])
Arguments
Name | Type | Description |
Return the STO details
function getSTODetails() external viewreturns(uint256, uint256, uint256, uint256[], uint256[], uint256, uint256, uint256, bool[])
Returns
Unixtimestamp at which offering gets start.
Arguments
Name | Type | Description |
⤾ overrides IModule.getInitFunction
This function returns the signature of configure function
function getInitFunction() public purereturns(bytes4)
Returns
bytes4 Configure function signature
Arguments
Name | Type | Description |
function _getOracle(bytes32 _currency, bytes32 _denominatedCurrency) internal viewreturns(oracleAddress address)
Arguments
Name | Type | Description |
_currency | bytes32 | |
_denominatedCurrency | bytes32 | |