SMT hard fork testing report #5 : Emission token unit bug, calling for more support
Asking for more support
When I started this proposal, I assumed that the smt testing period would last about three months, so I put the end of my proposal in three months, but my proposal is coming to an end and the testing is still ongoing, so I would like to ask for your support on my followup proposal, obviously should the testing end before the end of the proposal, I will cancel the proposal now that it no longer serves a purpose.
Here's a few easy links to vote on it :
Anyways, onto the report
The previous bug is still ongoing
The steemit team worked hard and pushed a fix for the previous bug I found, but alas, it came back with another issue linked to it. So the testnet has been restarted with some additional logging so that we can have more insight on how to fix it for good. I have restarted my testnet killer script (source here : https://github.com/drov0/hf23-testing/blob/master/bulk_full_setup.js) and the testnet should crash in the coming days. Hopefully this will be the last time this script works.
Another issue with the emission operation found
Meanwhile while reading some code I realized that with the emission operation it is possible to set it up so that the chain will emit tokens to an account that doesn't exists.
This wouldn't have any bad effect when the emission object is created, but as soon as the smt launches and the first emission executes itself, the chain won't realize that the account doesn't exists and basically give tokens to a nonexistent account. Which would, as you can expect, would probably crash the network, I didn't put this theory to the test as this would just delay further testing. Chain restarts are quite time consuming.
The reason why is that it's not an obvious flaw since you can set various emission destinations market, vesting, reward pool and founders. And there is quite a bit of code there in order to support those various destinations.
Fixing the issue
While I was at it and since the steemit team is focused on the other bug, I figured I would to make the fix myself, so I submitted a pull request with the necessary code changes to fix the issue : https://github.com/steemit/steem/pull/3582
it's working but it's lacking some unit tests. So I'll do some more work on it later on.
Does this bug has a twin ?
Doing all this and realizing that the emission target accounts (vesting, reward pool etc etc) system is quite similar for the ICO part, so I've checked it out as well.
And it looks like it does not have one, as you can see here : https://github.com/steemit/steem/blob/master/libraries/chain/smt_evaluator.cpp#L135
This function calls this other function (https://github.com/steemit/steem/blob/master/libraries/chain/smt_evaluator.cpp#L122) to validate all the targets.
So all good on that end.
Anyways that's about it for this report. Please consider voting my followup proposal using these links :