Hive Vesting Routes

in LeoFinance2 months ago (edited)

fork-in-road.jpeg

Did you know about these, anon?

Vesting routes on Hive are a little-known feature that even the most devout of Hive users have no idea exists. The reason for this is that few users have a good reason to actually use them. However, I just modified mine for the first time last week and I thought I'd talk about that experience here.

I was first introduced to this concept around Covid March 2020 during the hostile takeover.

What do these routes have to do with a money attack?

Now that is an interesting question. This was before the Binance/Huobi/Poloniex hack occurred where customer funds were powered up by exchanges to attack the network. But it was also after Justin Sun had his account locked up after buying the ninjamine from the traitor @ned Scott.

Crazy moment in community history:

During this time Justin Sun was scrambling to figure out a way to unlock his money, and it was assumed that @ned was obligated to help him out because he was the one who sold the coins. If I'm remembering this correctly an account associated with @ned started testing the routing feature and it was assumed these tests were all part of a greater plan to unlock the money. Of course I just now realize how much explanation is required for any of this to make sense in context.

encryption-lock2-key.jpg

Soft Fork explained.

For those who don't understand the difference between a hard fork and a soft fork... basically a soft fork is compatible with the current codebase and a hard fork is not. A soft fork is optional and can be implemented by a node as an option. If a node chooses to decline this upgrade it can still operate on the exact same chain as all the other nodes. A hard fork forces node operators to adopt the change or they'll be running on a completely different blockchain.

In this case the witnesses simply changed the code on their nodes to refuse to service Justin Sun's accounts. Basically the ninjamine money got locked up because a majority consensus of witnesses refused to service that account and wouldn't add Justin's commands to the ledger.

It's important to note how tenuous of a position this was. Sun couldn't get his ops posted to the chain but if a single op got through it could ruin the entire party. Hive itself doesn't have the ability to stop an operation once it's been posted to the chain and the block becomes immutable. Such a reversal would require a hardfork and would be extremely contentious and bad for everyone involved due to the inherent censorship resistance that permeates the tech.

What does any of this have to do with vesting?

The theory was that @ned was using an alt account to test this ability to avoid the blockade of the ninjamined account. If the ninjamine was able to powerdown that process would take 13 weeks to complete. In addition, the witnesses could refuse to allow the account to move those tokens to an exchange.

However, if vesting routes were used the powerdown would have gone directly to the exchange, which means it would only take 2 operations bundled together to circumvent the softfork blockade: 1 to powerdown and the other to set a vesting route to an exchange. Once that was in play on an immutable block it would be an irreversible action without a hardfork, and the softfork blockade would fail.

In the end nothing ever came of this so it's unclear if this is actually how it went down, but still I was surprised to learn that there was a feature like this buried in the core code that almost nobody uses.

So what does this option do exactly?

Ah well basically when an account powers down and that money gets unlocked: it gets deposited into another account automatically. In fact the routes can be split up in as many different ways as the user wants. The only requirement is that all the percentages added up are equal to 100% or less. Anything less than 100% implies that the remainder is routed to the original account. The default for routes is 0% (100% powered down to the original account).

How do I setup a route?

Very few Hive frontends actually even offer this option because it's so niche and clutters the traditional user experience with unneeded overcomplexity. However, I was looking into it last week and found an old but good website for all things Hive:

https://hivetasks.com/

Adapted with ♥ by @fernandosoder

Hivetasks is a great site because it basically offers every single feature of the blockchain to the user, including harder to find functions like account recovery and vesting routes.

image.png

DASHBOARD >> BALANCES >> OUTGOING ROUTES

From here we can choose any number of accounts and whatever percentages we want as long as they don't add up to more than 100%. I decided to test it just now with my own account, setting up routes to various alts I've created. Will delete these routes shortly:

image.png

Here we see that when I powerdown 10% of the money will now go to @gunrun, 50% to @other-barry, and 25% to @smartasscards. The remaining 15% will go to the main @edicted wallet.

If we check @edicted's incoming routes we see that @hextech sets @edicted to 100%, meaning that all HP powered down from my witness node automatically gets consolidated to my main account for convenience. Also note that there is an option to automatically power up the unlocked money to the receiving account. Meaning you can send money to another account in this way and force that account to power it up right when they get it. This is what "receive vests" means, as "vest" is the official "scientific" name for Hive Power; an untradeable asset that can later be converted into Hive over the 13 week powerdown schedule.

It's also worth noting that these routes can be set up at any time, so if a powerdown is about to unlock in 5 hours you could set a route to another account and have the money automatically transferred there when it happens 5 hours later. Again, it's interesting functionality, but most users have little need for such bells and whistles.

Routes make a lot more sense for accounts that are potentially being shared and need to split up the money fairly between multiple parties. Back when my witness node was shared with 2 other Hive users, we had routes set up to all three of us, which is why I had to figure this out recently and change it now that I'm the sole owner of @hextech.

Conclusion

It seems like there's always something new to learn with Hive, and while I've known about this routing feature for quite some time I am curious as to how many of my readers actually knew about its existence before this moment. Post in the comments to let me know.

Sort:  

Sounds like a crazy conspiracy theory 😉 I mean, maybe there was a plan to use that for circumventing blockade of ninjamine account(s), however the feature is one of the early features of legacy chain. Here is the initial commit that introduces it, and here the one that renames it to current name. Both from June 2016.

Also I'm not sure it was actually a soft fork that was used to block transactions during that time (it was marked as minor version though) - calling @gtg who might actually know the details. When you have nontrivial stake, soft fork is easy to circumvent - a single backup witness is enough to push your transaction through. Also as far as I know the goal was also different - to vote in enough top witnesses controlled by JS, so he could single-handedly dictate the fate of the network. Selling the ninjamined stake would be contrary to that.

In fact the routes can be split up in as many different ways as the user wants.

...as long as it is no more than 10 ways 😀 Allowing unlimited routes would be an attack vector.

a single backup witness is enough to push your transaction through

This is not accurate because it only takes 16 consensus witnesses to enforce this soft fork and roll back blocks that include ninjamine ops.

however the feature is one of the early features of legacy chain.

I never said it wasn't an early feature.

Did you think I was implying that it was built for this exact purpose to circumvent a blockade?
This was not my intention.

Also as far as I know the goal was also different - to vote in enough top witnesses controlled by JS, so he could single-handedly dictate the fate of the network.

This was one big concern but the main point of contention is that the ninjamine was always promised for network development. Sun did crazy things like leak videos of himself saying he was going to absorb the community and the token into the Tron blockchain, and then he'd delete it and act like it never existed. We tried to talk to him directly and he refused to communicate and it make witnesses extremely nervous.

as long as it is no more than 10 ways

Ah ha good to know I wasn't sure if there was an explicit limit.
Of course the limit can be implied by a minimum unit (1% = 100 limit, 0.01% = 10k limit)
It could never be infinity under any circumstance even without a set limit.

This is not accurate because it only takes 16 consensus witnesses to enforce this soft fork and roll back blocks that include ninjamine ops.

A question of definition. Formally you are right - dropping blocks containing transactions that violate new rules still qualifies as soft fork under this definition, however for me any change that affects previously valid blocks is a hard fork change. It is because, unlike in PoW chains, in DPoS such change of rules might lead to Catastrophic Network Split™️ where the result is a creation of two separate chains with their own sets of witnesses, own users (users can actually be on both chains simultaneously, sending conflicting transactions to each of them) and, most importantly, own versions of irreversible blocks - such chains can never converge without manual intervention (which means dropping at least one version with all its transactions since the split). Because of that, the only way to introduce new rules that make certain blocks invalid is to include them in a hardfork. That's why changes such as RC becoming consensus requires hardfork, even though it would be "backward compatible" according to the definition.

There is a way to introduce "soft hardfork", that would allow enforcing stricter rules without official hardfork only when there is actual consensus for it (therefore safe for the network), but it is a terrible idea easily exploited as a tool for covert censorship - see here (tl:dr censoring witnesses stop confirming contested blocks, but actually drop them only after making sure the block is also problematic for next scheduled witness).

As for Catastrophic Network Split™️ scenario, it may happen naturally after Internet is temporarily divided as a result of some natural disaster (you know, like "a huge red dragon with seven heads, ten horns, and seven royal crowns on his heads. His tail swept a third of the stars from the sky, tossing them to the earth" 😉). There is an idea for a countermeasure that could work (namely witness changing signing key or becoming one of the top only going into effect after the change becomes irreversible under non-OBI rules), it is not implemented though, because it has cons that are much more likely to show than the scenario they are supposed to prevent.

Did you think I was implying that it was built for this exact purpose to circumvent a blockade?
This was not my intention.

Yes, that's how I read it when you said about "testing it". Ok, my bad.

Sun did crazy things like leak videos of himself saying he was going to absorb the community and the token into the Tron blockchain, and then he'd delete it and act like it never existed.

Oh, there was an official task to check Tron to see if migration is technically possible, so I never knew the idea was contested. It didn't strike me as something to worry about, if it was done properly. Granted I didn't knew all that much about "vision behind Steem" at that time, only about some of its severe technical problems.

Loading...

I vaguely remember this from back at the time of the "fork chaos."

Yes, we learn something new, every day - there is a LOT to know here! For example, I did not know you run a solo witness, so you got my meager vote.

Also nice to discover HiveTasks... even if it's just leveraged code from the old SteemWorld utility, and not entirely functional.

=^..^=

I knew it existed because of other people discussing using it, but i didn't know where it was. Which layer. Or really how to even access it. Hive.blog doesn't even really have all the basics implemented.

Way in the beginning, something should have been done about the ninja mine, but if that was done, would Steem have even gotten off the ground? I wish web3 and the internet was a nice, even playing field, but it is not. I wish ideas just took off based on the merits of the idea, but that rarely happens.

I confess that I didn't know it, like many people here who are commenting.

It's curious and at the same time fun to know that there will always be new things within the Hive ecosystem to benefit us.

Very educative and yes most likely only useful when have to split gains between multiple investors or operators, I always put your posts aside for a good read, btw yesterday post for sure spark a couple of votes changing hands, keep the grind ✌️

yeah, Hiving and Learning, didnt know that was possible to do.

And I'm still thinking how so many hive keys get compromised last months.

This is the first I've heard of it, but it's an interesting feature.

I just knew it by Reading your post ;)
Thanks for details 😊

Listened to ur whole 2 hour spaces on twitter. Although we don’t agree on everything I think u made great points. Honestly it concerns me how wrong some of these witnesses are. Not about the interest rate but about this second layer bond thing, modeled after the old establishment euro dollar system? No effen thanks!!!!!

Enjoyed ur takes brother!

Fascinating little feature that I had no idea existed! Also, handy site for poking around at all the various options.

Thank you.
Maybe I need it in future, when my game is ready ,)
!PIZZA

PIZZA!
The Hive.Pizza team manually curated this post.

$PIZZA slices delivered:
@mein-senf-dazu(1/5) tipped @edicted

Join us in Discord!

Love to read this beautiful and informative post, it will definitely help many hive users to understand vesting routes and how we can use this function while power down

I hadn't heard of this feature. Thanks for the link to the site, by the way :) I thought the main blog link was the only place to do certain actions, like voting trails and a few other things.

This post has been manually curated by the VYB curation project