Code Monkey home page Code Monkey logo

xfi's Introduction

XFI Token | Ethereum XFI Exchange

This repository is a home for the XFI Token contract as well as the Ethereum XFI Exchange which allows Ethereum accounts to convert their WINGS or ETH to XFI.

Contents

XFI Token

XFIToken is an extended version of ERC20 standard. This extended version adds minting, vesting and token transfer management to the functionality described in the original EIP.

XFI Token Methods

isTransferringStopped

Returns whether transfering is stopped.

Output:

  • bool - whether transferring is stopped.

Example:

isTransferringStopped()

isMigratingAllowed

Returns whether migrating is allowed.

Output:

  • bool - whether migrating is allowed.

Example:

isMigratingAllowed()

VESTING_DURATION

Returns vesting duration in seconds.

Output:

  • uint256 - vesting duration in seconds.

Example:

VESTING_DURATION()

VESTING_DURATION_DAYS

Returns vesting duration in days.

Output:

  • uint256 - vesting duration in days.

Example:

VESTING_DURATION_DAYS()

RESERVE_FREEZE_DURATION

Returns reserve freeze duration in seconds.

Output:

  • uint256 - reserve freeze duration in seconds.

Example:

RESERVE_FREEZE_DURATION()

RESERVE_FREEZE_DURATION_DAYS

Returns reserve freeze duration in days.

Output:

  • uint256 - reserve freeze duration in days.

Example:

RESERVE_FREEZE_DURATION_DAYS()

MAX_VESTING_TOTAL_SUPPLY

Returns maximum vesting total supply.

Output:

  • uint256 - maximum total supply.

Example:

MAX_VESTING_TOTAL_SUPPLY()

vestingStart

Returns the vesting start.

Output:

  • uint256 - vesting start timestamp.

Example:

vestingStart()

vestingEnd

Returns the vesting end.

Output:

  • uint256 - vesting end timestamp.

Example:

vestingEnd()

vestingDaysSinceStart

Returns days since the vesting start.

Output:

  • uint256 - integer number of days since the vesting start.

Example:

vestingDaysSinceStart()

vestingDaysLeft

Returns vesting days left.

Output:

  • uint256 - integer number of vesting days left.

Example:

vestingDaysLeft()

reserveFrozenUntil

Returns the date when freeze of the reserve XFI amount.

Output:

  • uint256 - reserve frozen until timestamp.

Example:

reserveFrozenUntil()

reserveAmount

Output:

  • uint256 - reserve amount.

Example:

reserveAmount()

convertAmountUsingRatio

Convert input amount to the output amount using the vesting ratio (days since vesting start / vesting duration).

Input:

  • uint256 amount - amount to convert.

Output:

  • uint256 - converted amount.

Example:

convertAmountUsingRatio(amount)

convertAmountUsingReverseRatio

Convert input amount to the output amount using the vesting reverse ratio (days until vesting end / vesting duration).

Input:

  • uint256 amount - amount to convert.

Output:

  • uint256 - converted amount.

Example:

convertAmountUsingReverseRatio(amount)

totalVestedBalanceOf

Returns total vested balance of the account.

Input:

  • address account - owner address.

Output:

  • uint256 - amount of vested tokens owned by account.

Example:

totalVestedBalanceOf(account)

unspentVestedBalanceOf

Returns unspent vested balance of the account.

Input:

  • address account - owner address.

Output:

  • uint256 - amount of vested tokens unspent by account.

Example:

unspentVestedBalanceOf(account)

spentVestedBalanceOf

Returns spent vested balance of the account.

Input:

  • address account - owner address.

Output:

  • uint256 - amount of vested tokens spent by account.

Example:

spentVestedBalanceOf(account)

Exchange

Exchange is the Ethereum XFI Exchange which allows Ethereum accounts to convert their WINGS or ETH to XFI.

Exchange Methods

estimateSwapWINGSForXFI

Returns estimation for swap of WINGS-XFI pair.

Input:

  • uint256 amountIn - amount of WINGS to swap.

Output:

  • uint256[] amounts - estimation for swap of WINGS-XFI pair.

Example:

estimateSwapWINGSForXFI(amountIn)

estimateSwapWINGSForXFIPerDay

Returns daily vesting estimation for swap of WINGS-XFI pair.

Input:

  • uint256 amountIn - amount of WINGS to swap.

Output:

  • uint256 amounts - estimated amount of XFI that will be vested each day of the vesting period.

Example:

estimateSwapWINGSForXFIPerDay(amountIn)

isSwappingStopped

Returns whether swapping is stopped.

Example:

isSwappingStopped()

NOTE: To receive real-time updates on the status of the swaps, consider listening to SwapsStarted and SwapsStopped events.

maxGasPrice

Returns maximum gas price for swap. If set, any swap transaction that has a gas price exceeding this limit will be reverted.

Example:

maxGasPrice()

swapWINGSForXFI

Executes swap of WINGS-XFI pair.

Emits a SwapWINGSForXFI event.

Input:

  • uint256 amountIn - amount of WINGS to swap.

Output:

  • uint256[] amounts - result of a swap of WINGS-XFI pair.

Example:

swapWINGSForXFI(amountIn)

Requirements

  • Nodejs ~10.16.2
  • Truffle ~5.1.33
  • Ganache-cli ~6.9.1 (for testing)

Compiling

Configure truffle-config.js (see configuration manual).

Compile contracts:

npm run compile

Deploying

Copy and configure .env:

cp .env.example .env

Required environment variables:

  • CREATOR_ADDRESS - address of the creator account.
  • WINGS_TOKEN_ADDRESS - address of the WINGS Token.
  • START_DATE - vesting start date (only XFI Token deploy).
  • XFI_TOKEN_ADDRESS - XFI token address (only Exchange deploy).

Migrate contracts:

truffle migrate

To run migration for a specific network, make sure that the network is configured in your truffle-config.js and specify the --network option, like below:

truffle migrate --network live

Testing

Compile contracts:

npm run compile

Run tests:

npm test

License

MIT

xfi's People

Contributors

borispovod avatar romfrolov avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.