Nash Exchange Token (NEX) Staking Smart Contract
This smart contract allows holders of the Nash Exchange token (NEX) to
stake them in this contract in order to receive a portion of fees generated by the Nash exchange.
The staking contract implements the following:
- Any address that wishes to stake their Nash Exchange tokens must go through the KYC process within the Nash platform. Once they have done so, they will be eligible to stake any amount of tokens they hold.
- In order to
staketokens, a user must call the
approvemethod on the Nash token contract (
0x3a4acd3647086e7c44398aac0349802e6a171129) to permit the staking contract to transfer X amount of tokens from their wallet address to the staking contract.
- The duration of the stake is specified in months, between 1 and 24.
- The amount to be staked must be divisible by
1 * 10 ^ 8, or 100000000. This simplifies the distribution of exchange fees.
- Once a set of tokens has been staked, there is no method of retrieving them from the contract until the stake period specified by the user has expired.
- Once the stake period has expired, the
completeStakemethod can be called by anyone, whether that be the exchange or the user. But this method can only transfer the staked tokens back to the original staking address.
The following items are not implemented in the smart contract, but calculated and managed by the Nash exchange matching engine:
- Calculation of fee rewards.
- Distribution of fee rewards.
You need Python 3 (3.7 or 3.6).
brew install python
sudo apt-get install python3.7 python3.7-dev python3.7-venv python3-pip
Clone the repository and navigate into the project directory. Make a Python 3 virtual environment and activate it via
python3 -m venv venv source venv/bin/activate
Then install the requirements via
(venv) pip install -r requirements.txt
Compilation / Build
The smart contract can be compiled from the Python shell as follows:
from boa.compiler import Compiler Compiler.load_and_save('NashStaking.py')
This will compile the contract to
Please contact us at firstname.lastname@example.org if you find something you believe we should know about.