You are viewing a single comment's thread from:

RE: Important note for anyone holding HBD before hardfork 25

In my writeup, I described it as a balance change triggering the interest payment. That's what I was told. But I can't be 100% sure without reviewing the code.

But it should be easy to test empirically by doing a transfer and checking the results on hiveblocks.com, so I'll leave it as an exercise for the interested reader.

Sort:  

OK, I checked the code (way more accurate than empiric tests), and it is NOT a balance change that triggers the interest but any operation that involves HBD.

Any operation involving assets call function(s) (database::adjust_balance() which calls database::modify_balance() for liquid, or database::adjust_savings_balance() for savings) which will do the interest payment if required, whether the balances really change or not.

Even cancelling a withdrawal from savings can trigger an interest check and potential payment.

So it's better to tell people that any operation involving HBD could trigger interest payment!

way more accurate than empiric tests

Ah, speaks the overly-confident programmer :-) While I agree that code inspection plays an important role in determining in full how code is intended to function, it's my experience that empirical testing is also a vital part of determining actual functionality. And if I have to rely on just one or the other, I'm much more willing to trust empirical tests.

any operation involving HBD could trigger interest payment!

That's overly broad, IMO :-) Consider a hypothetical operation that changes the time period for which funds are staked. Such an operation would have no reason to call adjust_balance(). On the whole, I think that the best description is still that operations that change the balance are the ones that are intended to trigger interest payments. It's really only a current implementation detail that results in calls to this function even when the balance isn't changed (ie. when the delta parameter value passed is 0). And it's easy to imagine a future where the call immediately returns after checking that value, before triggering an interest computation.