Skip to content
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

Feature Request: Add ability to re-delegate Steem Power #1501

Open
bitcoiners opened this issue Sep 4, 2017 · 16 comments
Open

Feature Request: Add ability to re-delegate Steem Power #1501

bitcoiners opened this issue Sep 4, 2017 · 16 comments

Comments

@bitcoiners
Copy link

It would be useful to be able to (re-delegate) delegate delegated Steem Power, which is currently not possible.

@mvandeberg
Copy link
Contributor

Yes you can, you just have to wait for the steem power to return to your account first. This is necessary to prevent exploitation of Steem Power.

@theoreticalbts
Copy link
Contributor

We thought about this, but multiple hops introduces too many cans of worms -- what if account_1 delegates to account_2, then account_2 re-delegates to account_3, ..., all the way up to account_5000? And then account_1 cancels its delegation, or account_5000 tries to delegate to account_1 and create a cycle?

It seems hard to come up with a way to implement this, where the above situation wouldn't involve some cases where you'd end up walking through all 5000 accounts.

It was far simpler to only allow delegations to go one hop, and we ended up making that a deliberate design choice.

@bitcoiners
Copy link
Author

bitcoiners commented Sep 5, 2017

It is possible to implement for fixed length delegations that can not be recalled. This way once delegated, power would only return to owner after delegation period specified in delegation transaction ends. Than this power can be re-delegated at will, as no risk of early recall exists.

@realnedscott
Copy link

@bitcoiners that's true. good call

@realnedscott realnedscott reopened this Sep 5, 2017
@mvandeberg
Copy link
Contributor

It was a deliberate design decision to allow for instant recall so that in the even the delegated steem power was being abused, it could be taken away and further damage would be prevented. Is there a specific use case or application you are trying to develop that requires these features or are you brainstorming?

@mvandeberg
Copy link
Contributor

mvandeberg commented Sep 5, 2017

Our contribution guidelines explicitly prohibit using github for feature requests or suggestions. If you want to continue this discussion on some other platform, I would be happy to do so. For now, I am going to close this issue.

@bitcoiners
Copy link
Author

There are many use cases for this feature. Lets discuss on discord's steemdev channel.

@bitcoiners
Copy link
Author

What is your login on steemdev? I would like to continue this discussion.

@mvandeberg
Copy link
Contributor

I am not on the discord. Message me on steemit chat. Username vandeberg

@bitcoiners
Copy link
Author

Messaged.

@bitcoiners
Copy link
Author

Replied on steemit.chat. please see my comment.

@bitcoiners
Copy link
Author

Please add this issue to future development milestone, so it gets implemented in the future.

@bitcoiners
Copy link
Author

bitcoiners commented Oct 2, 2017

For the record. Here is my reply to raised objections.

Delegating Steem Power with instant recovery is currently the only way to delegate, while it could be made optional.
There are already many uses for SP delegation beyond new account creation.
There is for example, delegation lease market at https://www.minnowbooster.com/market ,
where early recall is not allowed and and not expected by users, regardless of how that power is used by delegatee.
In fact early recall can break expected operation flow.
Instant recall is not necessary to respond to abuse.
Delegators have a choice to not delegate again to users who in their opinion misused delegated SP.

I view SP as a special resource with unique properties and that many use cases for it are yet to be discovered.

One such use case I envision is Steem Power pooling by Steemians for special projects/purposes.

Having optional finality to a delegation gives SP new valuable format,
and adding ability to redelegate makes it into a very special kind of resource, unlike any existing tokens.

Now onto technical hurdles.
To make things simple, Sam from the case you described,
when delegating SP can choose only one source,
(his own, Alice's, or Bob's)
Knowing when Alice's and Bob's power delegation expires, Sam can make a decision which of available power sources he should delegate from.
If Sam chooses to delegate with Alice's SP or Bob's, he will have to make re-delegation period
same length or shorter than what is left for power delegated to him.

@theoreticalbts
Copy link
Contributor

OK, there are some interesting ideas in here. Let me clarify how this might be implemented.

Basically the functionality being added is to delegate for a set period of time without the option to recover. We can keep a queue of pending expirations. The queue also needs to maintain, for each element, the sum of all prior elements. Then we can use the queue to determine that sufficient SP is available to redelegate.

Now some implementation notes:

  • To maintain the sum of all prior elements in O(1) time, we can require all additions to the queue occur at the end.
  • To prevent a third-party from interceding on the behalf of the queue, we can add an op to make a specific delegation lendable, this will add it to the queue, and it must be added to the end. A user wallet can simply add this operation to any lending transaction.

@bitcoiners
Copy link
Author

Please reopen this issue.

@mvandeberg
Copy link
Contributor

The user story in this issue may be handled by delegation pools.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

5 participants