Staking SNX is a fairly complicated process with numerous strategies to optimise yield and reduce risk. There are a number of community members who have put significant effort into optimising these strategies, particularly Nocturnalsheet. The effort and skill required to optimally stake SNX presents an opportunity for staking pools managed by community members with fee structures based on performance. There are several custodial staking pools considering SNX integration including EON and Staked, however, we believe there is an opportunity for non-custodial pools.
We need a contract to be written that supports the following functionality:
For pool participants
For pool managers
*because staking rewards are escrowed for a rolling 52 weeks against the pool contract, in order for a depositor to withdraw reward SNX escrowed in the RewardsEscrow Contract https://etherscan.io/address/0xb671F2210B1F6621A2607EA63E6B2DC3e2464d1F,
*There should be some protection considerations for if the PoolManager has lost key access / gone AWOL
Associated Bounties | links will be posted soon
A dApp that displays all active pools, including the fee structure and performance. Allow users to deposit/withdraw into pools.
Issue Status: 1. Open 2. Started 3. Submitted 4. Done
This issue now has a funding of 15000.0 SNX (4342.5 USD @ $0.29/SNX) attached to it as part of the Synthetixio fund.
First of all I apologize for taking this long to provide an update on any kind of progress.
Here is my naive approach to the staking pool, which closes part 1 of my working plan: https://gist.github.com/JGcarv/84056424d7a5052e0aabe33591ebb7ea
There're still two main points missing in the main contract:
Anyway, that's just to provide a quick update on my working status, I hope to open a proper PR with my progress sometime tomorrow.
That’s a good point, I’ll review my notes on that SIP again and see what other options we had considered.…
On 6 Sep 2019, at 11:48 pm, Joao Gabriel Carvalho ***@***.***> wrote: Don't this SIP defines that the full amount of SNX must be moved to another address at once? If that's the case, could it still be used as an exit for a single participant? — You are receiving this because you commented. Reply to this email directly, view it on GitHub, or mute the thread.
@JGcarv Cool to see progress
I've just updated the issue with a solution for depositors to vest/withdraw their escrowed SNX rewards.
Also for an exit mechanism it should just follow the existing system. Try using mintr for yourself to get familiar with the process. You will need some SNX tho.
So for a user to exit the system, meaning they want to sell all their SNX then they need to repay their debt of the sUSD they minted, (like DAI repaying the loan) so the StakingPool will need to access the Synths its minted and burn the appropriate amount to release that users SNX. So the StakingPool will need a reserve of its minted Synths or kick off a process to pull its Synths out of the Depot or uniswap pool it sent them too then burn them then potentially send the user their SNX in one transaction
I think building the StakingPool to mint sETH and just send the sETH to the sETH uniswap pool is great because then the pool will get the LP tokens and earn LP SNX rewards and LP fees from the pool.
I'd say make depot support optional or skip it all together.
First, I want to say that I didn't know that the bounty had an expiration date and since I've been pretty slow with this, I'll completely understand If you guys want to give the bounty to another dev, like @RideSolo . In that case, feel free to use my code, posted in a gist above as starting point, if you like.
Otherwise, I'm still up for doing it and I'll make an effort to finish as soon as possible, I'm aiming for end of the week. And since we're here I would like to take an opportunity to ask everything I still don't understand.
I think that's it for now. The updated ideas of @hav-noms are enough to make a reliable exiting mechanism, I believe.
Yeah uniswap is a not viable option because of the ETH requirement
It doesn't, well it does for the foundation only but not for anyone. Anyone can deposit sUSD though and sell for ETH so perhaps.
If you dont have any SNX Rewards then True. If you do then only the SNX in your wallet is ready to transfer. The SNX in the RewardsEscrow contract is locked up for 12 months from claiming. So vesting will needed to be done at a later date. People will need to return to claim. There may end up being lots of unclaimed SNX if people exit and forget.
Use Synthetix.collateral(account) to get the accounts total SNX in both wallet and in escrow.
No. users should be able to exit at anypoint. Just have the pool burn some sUSD to release the users SNX and let them withdraw it and leave.
Unfortunately, I've been crazy busy this month and could barely work this.
I took some time today to see where I'm at and I believe that there isn't that much left to be done. In the pool side, it's missing the mechanics for users to withdraw claimed fees and a smaller refinement on how the pool manager can charge fees.
After that, I need to create the factory, which should be quick and than expand the test coverage a bit.
I'll take this weekend to tackle this, as I've dragging for too long.
I'm really sorry for taking this long.
The following code is the implementention of the previous proposal:
of course it should be updated to snx staking requirements to make everything fit, and the solution should be highly optimized since no array is required to track users multiple stake and staking time.
The code was implemented for callisto network, and can be matched with snx and Uniswap pool with some modifications
I can team up with Jgcarv to deploy the code
Issue Status: 1. Open 2. Started 3. Submitted 4. Done
Work has been started.
These users each claimed they can complete the work by 3 months, 2 weeks ago.
1) ridesolo has started work.
First of all I have noticed that you are using this solution https://github.com/Synthetixio/Unipool/blob/master/contracts/Unipool.sol to reward sETH/ETH liquidity providers when they stake their Uniswap V1 token in the developed contract. I would like to know if this bounty does not cover the previously described implementation.
Learn more on the Gitcoin Issue Details page.