-
Notifications
You must be signed in to change notification settings - Fork 661
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Disable transfers via set of contracts #2283
Comments
@ilblackdragon @evgenykuzyakov It sounded like from our discussion offline that there is no need anymore to prohibit transfers on the runtime level? If yes, then I will close this issue since near/NEPs#27 supersedes it. |
TerminologyTED -- Transfer Enable Date, the timestamp after which we allow token holders to transfer unlocked vested tokens. This post describes the restrictions applied to the Mainnet before TED and after TED. It also describes what TED is. Before TED we differentiate the following types of the accounts:
How we disable transfersAfter discussion with @ilblackdragon we came up with the following plan to disable transfers without modifications to the runtime. Here is how Mainnet will behave before TED:
Voting contractVoting contract will have one goal -- it will allow community to decide when to enable transfers. The proxy for the community will be validators. The contract will have access to the list of the current validators through the new host functions. Each account will be then able to cast a vote for a specific TED by calling
When such TED exists the voting contract permanently commits to it. Work itemsBased on the above explanation we need to finish the following work items:
@ilblackdragon @evgenykuzyakov please comment. |
Also moving to genesis contracts Epic, since I think it is more relevant there now. |
I think there might be some additional work with shared staking pools. Those contracts should be able to vote in addition to current delegation/staking work |
Should there be a lower bound on the TED? For example it cannot be earlier than 3 months from genesis time. |
It can be done the following way:
WDYT?
Yes, good point. |
It's over-complicated right now. All of this work is just to account for one time event that enables transfers for locked contracts. Also this work by itself can contain bugs. Of course, some of this work can be reused later for governance, but it's unclear whether we should go with it. How important is validator/community voting to enable transfers? Can this be solved with other options that don't involve voting on chain? |
Discussed with @evgenykuzyakov in a private channel. Added technical complexity of the voting contract is a lesser evil than taking other non-technical risks. |
To simplify delegation a little, we probably want to shift voting aggregation on the staking pool contract side instead of moving it to
I also would suggest we remove staking capability from the |
@nearmax I've updated your post /\ a bit to clarify few details. No, we shouldn't have minimum period. There is no real reason to have that. Indeed this is a reusable work for future governance. Let's discuss separately staking contract, because really I think it should be done separate. We do need voting contract to support weight to the votes in the voting contract. E.g. I don't understand, "add I'm ok with removing staking capability from lockup contracts, especially given we are planning to split contributors balances into multiple accounts and will need to pool things back. |
Should we extend NEAR foundation account will be able to create new proposals with
|
@ilblackdragon You have changed the description from
to
I don't think it is correct. We want user accounts to be able to do anything with their accounts, because (otherwise it will hurt our DevX if we deploy one contract on their account, do not give them full access key and prohibit redeploying it). |
@nearmax It is correct. The goal of disabling transfers is to prevent third parties from transferring tokens to non-authorized entities until network is fully decentralized and controlled by community. Hence all users accounts are not able to transfer. |
Update: We are not introducing the conditional compilation flag, see the comments.
There needs to be a way to disable transfers at the launch on MainNet.
We also expect validators to enable it later, so it can be just a feature flag that later removed from code.
We want to support the following:
Implementation:
deposit
,withdraw
,stake
,unstake
.The text was updated successfully, but these errors were encountered: