@intercoin/fundcontract
v1.0.7
Published
## Installation
Downloads
4
Readme
FundContract
Installation
Deploy
Deployment can be done in several ways:
- Through the intercoin factory mechanism.
- Deploy FundFactory before and call the method
produce
. - Deploy FundContract directly on the network and call the method init.
In all cases, parameters need to be specified:
name | type | description | example --|--|--|-- _sellingToken|address|address of the ITR token | 0x6Ef5febbD2A56FAb23f18a69d3fB9F4E2A70440B _timestamps|uint256[] | array of timestamps (GMT) | [1609459200, 1614556800, 1619827200] _prices|uint256[]| array of prices for the exchange in ETH (multiplied by 1e8) | [12000000, 15000000, 18000000] _endTime|uint256| the time after which the exchange will be stopped | 1630454400 _thresholds|uint256[]| thresholds of ETH (in wei) that trigger bonuses for group members | [10000000000000000000, 25000000000000000000, 50000000000000000000] _bonuses|uint256[]| bonuses in percentages (multiplied by 100), e.g., 10%, 20%, 30% or 0.1, 0.2, 0.5 | [10, 20, 50] _ownerCanWithdraw|enum(never, afterEndTime, anytime)| an option representing the owner's ability to withdraw tokens left in the contract| 1 _whitelistData|{address contractAddress, bytes4 method, uint8 role, bool useWhitelist;}| settings for the whitelist. The exchange can only be accessed by whitelisted individuals. For more information, see the Intercoin/Whitelist repository. In example "internal whitelist"| [0x0000000000000000000000000000000000000000,0x95a8c58d,0x4,true]
Overview
Once installed, methods can be used for exchange.
Methods
| Method Name | Called By | Description | |---|---|---| | getConfig | Anyone | Retrieves data with which the contract was initialized. | | receive | Anyone | An internal method triggered when the contract receives ETH. It exchanges ETH for tokens. | | getGroupBonus | Anyone | Retrieves the current group bonus. | | getTokenPrice | Anyone | Retrieves the current token price. | | withdraw | Owner | Withdraws a specified amount of tokens to a given address. | | withdrawAll | Owner | Withdraws all tokens to the owner (sender). | | claim | Owner | Claims a specified amount of ETH to a given address. | | claimAll | Owner | Claims all ETH to the owner (sender). | | setGroup | Owner | Links participants to a group. |
getConfig
Returns the parameters with which the contract was initialized.
getGroupBonus
Parameters: name | type | description --|--|-- groupName|string| The name of the group.
Returns the group bonus as a uint
.
getTokenPrice
Returns the token price as a uint
.
withdraw
Parameters: name | type | description --|--|-- amount|uint256| The amount of tokens to withdraw. addr|address| The address to send the tokens to.
withdrawAll
Withdraws all tokens to the owner.
claim
Parameters: name | type | description --|--|-- amount|uint256| The amount of tokens to claim. addr|address| The address to send the tokens to.
claimAll
Claims all ETH to the owner (sender).
setGroup
Parameters: name | type | description --|--|-- addresses|address[]| The addresses that need to be linked with the group. groupName|string| The name of the group. If the group doesn't exist, it will be created.
Example
- Deploy the contract (through the intercoin factory mechanism).
- Transfer some
sellingToken
to the contract. - Now, any user who sends ETH to the contract will be able to receive
sellingToken
until theendTime
expires or the contract has enough tokens to return. - If the owner adds a user to a group (by calling the setGroup method) and the group reaches the threshold, all group members will receive bonus tokens.
- Additionally, if a user acquires tokens without being in a group and then becomes a member of any group, all the contributed tokens will be part of the group and increase the group bonus.
How Bonuses Work
We have created a contract that sends additional tokens to a group of people who contribute more than the specified thresholds. For example:
After 10 ETH - 10% bonus
After 25 ETH - 20% bonus
After 50 ETH - 50% bonus
So the initial parameters will be:
thresholds = [10_000000000000000000, 25_000000000000000000, 50_000000000000000000]
bonuses = [10, 20, 50]
Here, the thresholds are set in wei and the bonuses are multiplied by 100.
For a better understanding of the math, let's take the variable price_ETH_TOKEN = 10000000
(0.5 ETH = 1 ITR).