steemit / steem

The blockchain for Smart Media Tokens (SMTs) and decentralized applications.
https://steem.com
Other
1.95k stars 793 forks source link

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

Open bitcoiners opened 7 years ago

bitcoiners commented 7 years ago

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

mvandeberg commented 7 years ago

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 commented 7 years ago

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 commented 7 years ago

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 commented 7 years ago

@bitcoiners that's true. good call

mvandeberg commented 7 years ago

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 commented 7 years ago

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 commented 7 years ago

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

bitcoiners commented 7 years ago

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

mvandeberg commented 7 years ago

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

bitcoiners commented 7 years ago

Messaged.

bitcoiners commented 7 years ago

Replied on steemit.chat. please see my comment.

bitcoiners commented 7 years ago

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

bitcoiners commented 7 years ago

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 commented 7 years ago

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:

bitcoiners commented 7 years ago

Please reopen this issue.

mvandeberg commented 6 years ago

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