v0.3.1 June 30, 2021
Skyward Finance’s mission is to enable fair token distribution and price discovery for projects built on NEAR Protocol.
Historically, projects conducted initial token distribution through centralized auctions, DEX offerings, and fixed-cost sales which were unfair by limiting participation due to geo-location, being vulnerable to front-running bots, sybil attacks, multi-account registration, and unclear price discovery. Private sales and venture capital limited the ability of the general public from being able to access tokens from day zero by distributing large amounts of tokens at a low price, which gives advantage to the private parties and well-connected participants. It also hurts project founders who are strapped for resources at the early stages of their entrepreneurial journey and don’t have a sophisticated network to get access to initial capital. It’s the community that drives project distribution and success, so we believe it should be trivial to enable its participation from the very beginning.
Skyward Finance’s goal is to provide mechanisms for initial price discovery and token distribution through a streaming time-based auctions that are accessible to the general public in a decentralized way, while being resistant to front-running, price manipulations, and sybil attacks. Skyward Finance will issue a token that allows the community to become the part of the platform and get the corresponding part of the revenue.
Definitions and Terminology
- Skyward Finance - launch platform for projects built on NEAR protocol
- t0 - moment in time when the sale kicks off (e.g. date and time of the beginning of the sale)
- t0-1 - 1 day before the sale
- t0+1 - 1 day after sale
- Input - token that’s used for the purchase (in our example - $nUSDT)
- Output - token that’s being offered to participants (in our example - $MOON)
- $SKYWARD token - native Skyward Finance platform token
- $SKYWARD sale(s) - events when it is possible to purchase $SKYWARD
- Treasury - pool that receives all the fees for the use of Skyward Finance platform; this pool is attached to the value of the $SKYWARD token (e.g. every $SKYWARD token represents a share of the Treasury correlated to the % of total supply of $SKYWARD)
- Redeeming $SKYWARD - event during which $SKYWARD is being burned and its owner is claiming their share of the Treasury pool
- Referral - ability to refer people to the sale and receive a bonus from Token Sales and Mining programs for doing that
- Referral fee - % of the token that’s being distributed to those who referred people to the sale correlated with the % of their purchase of the Output token
- Treasury fee - 1% of input and 1% of output fee from every sale that goes to Treasury and is locked there until the moment redeeming
$SKYWARD is a native fungible token on NEAR Protocol mainnet.
The total supply of $SKYWARD is 1,000,000.
- $SKYWARD token will tied to Skyward Finance Treasury and represent a share of the ownership of the Treasury balance. Treasury receives a fee from every sale (1% of total input, 1% of total output).
- Sales that use $SKYWARD tokens as an input don’t pay the 1% treasury fee.
Skyward Finance Treasury
- Treasury receives a fee from every sale (1% of total input, 1% of total output)
- All $SKYWARD sale proceeds (90% of $SKYWARD) are deposited to Treasury
Redeeming of $SKYWARD
You may decide to redeem the $SKYWARD token through the treasury. This effectively removes redeemed tokens from the circulation.
- Redeeming event triggers the burn of the $SKYWARD token
- Burn of the $SKYWARD prevents you from future earnings
- Burn of the $SKYWARD triggers an event where you need to choose tokens from the Treasury you’d like to receive as part of your share. You can select as many different tokens that are present in the treasury as is allowed by the amount of gas of a single transaction.
- Your share is determined based on the number of $SKYWARD tokens you burned and the current circulating supply of $SKYWARD tokens. E.g. if there are 10000 tokens in the circulating supply and you burn 50 tokens, then you’ll be able to claim 0.5% of chosen tokens from the treasury. The circulating supply after burn will become 9950 tokens.
$SKYWARD burn events should have no immediate effect on the $SKYWARD price, since the Treasury allocation per token remains the same. But should have a positive effect in the longer term, due to decreased supply of $SKYWARD token and higher distribution percentage per token.
- Community - 1% will be distributed to the community participants with 1 month lockup and 1 month linear release after
- Founders - 9% to the Founders with a 6 months lockup and 6 months linear release after
- Sale - 90% will be sold over the period of 6 months
Skyward Finance provides a contract that allows to distribute a fixed amount of the Output tokens in exchange for a specific Input token over a fixed duration of sale using streaming auction.
Let's look at a simple auction, the project is selling 10000 $MOON tokens and the participants can commit any amount of $nUSDT tokens for the sale. Then when the sale event happens, all $nUSDT is summed up into total 5000 $nUSDT. The sale price was discovered at 2 $MOON tokens per 1 $nUSDT. Each participant then receive corresponding share of $MOON token. E.g. 4 participants committed 500 (10%), 1000 (20%), 1500 (30%) and 2000 (40%) of the $nUSDT, then they receive 1000 (10%), 2000 (20%), 3000 (30%) and 4000 (40%) of the total $MOON token respectively.
This simple auction model has 2 issues due to the nature of the instant sale:
- Participation at the last moment, which can dramatically shift the price for other participants
- Immediate token distribution, which gives advantage to bots that can arb the distribution on exchanges.
To address it, we can split the simple auction into multiple auctions. Instead of conducting a single auction of 10000 $MOON, let's conduct 10 auctions with 1000 $MOON each one after another (e.g. every hour). Now the first auction discovers initial price, but the remaining auctions already have liquid tokens, so the sales are more balanced. After the first auction only the 10% of the total $MOON is distributed, so the participants still have a chance to join remaining 90% of the sales, but without risk of fast acting bots affecting the price and distribution.
But 10 auctions makes it a hassle to participate in each auction. To address it, each participant can split equally their committed amount of $nUSDT for each of the remaining auction. So instead of committing 500 (10%) $nUSDT to a single auction, the participant can commit 50 $nUSDT for each of the 10 auctions. And then adjust their commitment at any moment.
Skyward Finance platform takes a step forward. Instead of splitting it into N equal auctions, the auction is split over the sale duration, where the smallest unit is a block production interval on NEAR Protocol which is about 1 second.
Let's say the sale duration is 5 days. Now the 10000 $MOON tokens are sold at the rate of the sale 2000 $MOON per day, or about 83.33 $MOON per hour or about 0.02315 $MOON per second. The first participants commits 500 $nUSDT for the 5 days, so they are paying 100 $nUSDT per day, or about 4.167 $nUSDT per hour. Assuming the participant share of total committed $nUSDT is still 10%, then they will get about 8.333 $MOON per hour, which is still equal to 2 $MOON per $nUSDT.
The participants can modify their $nUSDT commitment an any moment, so the price of $MOON per $nUSDT may change. They can also claim their distributed $MOON at any moment once the sale has started, while still being subscribed to the auction. This is why we call this a streaming auction.
Mechanics of a sale:
- Before the sale, the project has to deposit the tokens intended for sale to the Skyward contract.
- To create and schedule a sale, the project has to pay 10 $NEAR to prevent sybil attacks.
- Choose Output tokens (up to 4) and the amount you’d like to sell
- Choose Input token you’d like to receive
- Establish the duration of the sale (in hours/days etc, e.g. 7 day)
- The Skyward Finance may decided to boost the sale and distribute some percentage of $SKYWARD to participants of the sale
- Select a referral pool fee. Participants can use Referral Incentives to receive part of the of the tokens distributed during the sale by inviting people to participate in sale using their custom link
- Participants can enter and leave sale at any moment
- 1% of Input and 1% of output are charged as a fee for Sale and will be moved to the Treasury (unless it's a $SKYWARD token)
Sale Example and Explanation
Let’s take a look at a hypothetical scenario for Stage 1 Sale. For simplicity, we will demonstrate an example where Output (Token you’d like to sell) is fixed.
In this example, we are going to sell 5,000 $MOON for $nUSDT over a period of 5 days (in addition, Skyward Finance decided to provide an additional incentive by providing 1% of total $SKYWARD supply for all the participants of this sale, proportionally to each purchased $MOON.
(t0-2) - moment when future sale was announced (2 days before the sale in this example) and all the parameters were set (e.g amount of the $MOON, date and time for the beginning of the sale, duration etc) and participants are able to start putting in $nUSDT. Since the sale was just announced, no $nUSDT were added yet to the pool:
$MOON = 5,000
$nUSDT = 0
$SKYWARD = 10,000
(t0-1) - one day after the announcement of the sale (1 day before the sale kicks off). 3000 $nUSDT were added to the pool from multiple participants.
Initial set of participants established an initial price ratio of 1 $nUSDT per 1 $MOON is 1.67 (5,000 / 3000); However, since the sale hasn’t started yet, the amount of available $MOON and $SKYWARD remains unchanged.
t0 - sale kicks off. Two more participants are entering the sale; thus, increasing the demand and a price of the $MOON relative to $nUSDT.
We can see here how the increase in demand changed the share of the total pool for each existing participant.
The rest of the participants didn’t change their positions at this time. The sale kicked off. Both $MOON and $SKYWARD remained the same still the sale hasn’t occurred yet.
t0+1 - by this period of time the following actions occurred:
- Purchases of $MOON
- Distribution of $SKYWARD
- Fees to Treasury withdrawn
Since in this example we use a fixed amount of $MOON(5,000) for sale and know the duration of the sale (5) , we can calculate how much $MOON will be sold during each period (note: on the actual platform, you, as a seller, will be able to increase Supply).
Fixed amount of $MOON / the duration of the sale = 5000 / 5 = 1000 $MOON is distributed per t0+1 time period.
The same can be calculated for $SKYWARD:
Fixed amount of $SKYWARD / the duration of the sale = 10000 / 5 = 2000 $SKYWARD is distributed per t0+1 time period
$SKYWARD is distributed per t0+1 time period / $MOON is distributed per t0+1 time period = 2 $SKYWARD per $MOON at t0+1 time period.
At t0+1 Helen joins the sale and increases the demand for $MOON
We can see that supply of $MOON and $SKYWARD linearly decreased, while the amount of $nUSDT is continuing to increase; thus, driving the ratio of $MOON / $nUSDT down and increasing the price of the $MOON:
t0+2 - as in t0+1 below are the tables that describe the occured actions:
We can see that distribution remains the same (since we are operating with Fixed Supplies for $MOON and $SKYWARD in this example).
At t0+2 Elon decides to withdraw some $nUSTD from sale; thus, decreasing the demand for $MOON and price.
We can see that supply of $MOON and $SKYWARD linearly decreased (as in t0+1), while the amount of $nUSDT has decreased due to Elon’s withdrawal and the fact that purchases of $MOON are continuing to occur; thus, decreasing the amount of available $nUSDT in a pool and driving the ration up together with the price.
We will skip digging into t0+3 and t0+4 since mechanics is the same and in the above examples we showcased multiple scenarios:
- t0-2 - sale announced and $MOON supply set, yet there’s no $nUSDT yet; thus, $MOON / $nUSDT ratio is yet to be established
- t0-1 - we can see first deposits in $nUSDT occurred and established the initial ratio of $MOON / $nUSDT
- t0 - demand in $nUSDT increased due to the entrance of new participant and drove the ratio $MOON / $nUSDT down; thus, increasing the price if the $MOON per $nUSDT
- t0+1 - demand in $nUSDT increased again and drove the ratio $MOON / $nUSDT down; thus, increasing the price of the $MOON per $nUSDT. First distribution and fee collection events occurred
- t0+2 - demand in $nUSDT decreased and drove the ratio $MOON / $nUSDT up; thus, decreasing the price of the $MOON per $nUSDT. Another distribution and fee collection events occurred
- t0+3, t0+4 - represent one of the use cases described above in t0 through t0+2 time period. In our example, we used an increase in demand
- t0+5 - the sale just ended.
Above, we can see that Elon outperformed everyone and his strategy allowed him to purchase $MOON tokens and the lowest average price while Ian ended up purchasing at the highest average price.
Treasury Fees: this sale generated 95 $nUSDT and 50 $MOON for the Treasury of the Skyward Finance.
Thus, Bob referred 2 people (Carla 7% and Felicia 7%; thus, Bob is due to receive 14% of the total referral bonus), Kyle - 3 people (Anna 1%, Elon 16%, and Ian 6%; thus, Kyle is due 23% of the total referral bonus), Leo - 1 person (Helen 23%; thus, Helen is due 23% of the total referral bonus). Neither Kyle, nor Leo participated in the sale themselves. Since, participants DO NOT receive a referral bonus on their own purchase.
Since we had 10 participants, and out of them 6 participated as referrals, 60% (6/10) of $SKYWARD rewards will be distributed among them: 14% to Bob, 23% to Kyle, and 23% to Leo. The remaining 40% will be burned.
In this example, we distributed 10,000 $SKYWARD tokens. 1% of $SKYWARD supply for this sale is 100; thus, Bob receives 20 $SKYWARD, Kyle - 30 $SKYWARD, Leo - 10 $SKYWARD, and 40 $SKYWARD was burned.
Thus, this sale resulted in a burn of 40 $SKYWARD tokens, which represents 0.004% of total $SKYWARD supply.
Let’s deep dive into Elon’s and Ian’s strategies and figure out what worked and didn’t work for each of them.
We can see that both Elon and Ian used different strategies for this sale.
Elon entered early with a significant amount that represented 50% of the demand during t0-1; however, it dropped to 37.5% once Felicia and Janice joined the sale at t0.
Ian didn't participate in the sale until the very end.
Elon’s strategy with a high buy in prior to the kick off of the sale worked as he was able to purchase a significant amount of $MOON (375) cheaply, while Ian ended up buying $MOON for a highest possible price mostly due to significant increase in demand in t0+3 when George entered the pool and the supply of $MOON at t0+4 was also very low.