Info

Source on GitHub

https://github.com/koinov/ton-staking

Smart Contract Address

EQCg-1FCGMirisq6Hu21Yzhr-5FrI03XJ3UAhavtOyvUczGY

Testing and Issues

You can test this entry and submit issues during the testing period of the Blockchain Contest, Stage 2 contest.

Entries with serious issues will not be able to win the contest, but even minor issues might be important for overall results.

Voting

3

Comments

Staking pool is built on mutual mistrust principle that protects subscribers from fraudulent operator and hackers attack, and guarantees their funds are operated properly. Pool owner doesn't actually have access to Grams, except the predefined incentive fee, paid periodically depending on performance. Pool can operate multiple nodes to achieve best results from being validator in TON network.

Submission is build on top of TON stack and is located in 'staking' folder. 

Following modules are implemented:
- staking-pool smart-contract (func) + smc-envelope (c++)
- nominator smart contract (func) + smc-envelope (c++)
- owner’s smc-envelope for wallet v3 (c++)
- owner's console application (c++)
- frontend (react)
- json-rpc server (c++)

Demo is available at :
http://62.210.101.33/

I also submitted multisig issue and offered couple of solutions:
https://github.com/ton-blockchain/ton/issues/168
You have not added any comments yet...
by rating

Issues

Clever Turkey Feb 10, 2020 at 23:02
We found some issues in your contract.
Critical:
- Processing fees are payd by the contract, so it can run out of funds if grams are immediately withdrawed.
Minor:
- Anyone can intialize the contract, adding fake nominators.
- Only basechain accounts are accepted.
Mad Crow Feb 11, 2020 at 05:21
Thank you for your attention! As I mentioned, it was impossible to implement all the functionality so fast, so there's a todo list in GitHub, and penalty for fast redemption is one of them.  

What about the fact, initializing contract with fake nominators, I just checked the code but saw no problems. Pool contract is initialized once, all addresses of nominators are written with initialization message, the same with nominators. There's no need all nominator contracts were deployed from the start, so if someone decide to deploy nominator's contract instaed of pool owner, yes he can do , but there's no meaning in this, since address preset in pool contract already contains nominators address. Am I getting something wrong? 
The main idea is bulletproof link between contracts so even owner cannot change any piece of code, so if this issue really exists, it is critical. 

What about basechain, I believe this is the subject for discussion.
Nobody added any issues yet...