Skip to content
New issue

Have a question about this project? # for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “#”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? # to your account

Recap of the finding and fixing of the asset launch and dust error #455

Closed
traysi opened this issue Nov 26, 2018 · 1 comment
Closed

Recap of the finding and fixing of the asset launch and dust error #455

traysi opened this issue Nov 26, 2018 · 1 comment
Assignees
Labels

Comments

@traysi
Copy link
Contributor

traysi commented Nov 26, 2018

Describe the issue

Ravencoin asset layer was unusable at activation due to a bug in src/policy/policy.cpp

Can you reliably reproduce the issue?

Try to issue an asset on November 5th using 2.1.1

Expected behaviour

The transaction to issue an asset should be accepted by the node.

Actual behaviour

The transaction was rejected with: "Invalid: Error: The transaction was rejected! Reason given: dust"

What version of Raven core are you using?

2.1.1

Any extra information that might be useful in the debugging process.

At 14:08:10 UTC on November 5th, 2018 block 435456 was mined and the asset layer activated. Users immediately began issuing transactions to create assets, and all the issuances were rejected by the coin daemon with the error: "Invalid: Error: The transaction was rejected! Reason given: dust"

At 14:11 UTC I discovered and then posted to the Ravencoin discord channel #development that the problem is in the src/policy/policy.cpp code snippet: txout.nValue < GetDustThreshold(txout, dustRelayFeeIn)

I added the fix to my own nodes and confirmed that it resolved the issue (at least, for my node). I could now issue assets and those transactions were accepted into my own memory pool, but the other nodes on the network were rejecting the transaction because, of course, the bug was still present in their system.

Since I run the MinerMore mining pool which at the time had about 3% of the net hash, I applied my fix to the pool's node and submitted a transaction on the pool node to issue the asset VOTE. As expected, the node accepted the transaction into its memory pool, and it sent the work to the miners of my pool.

At 15:18 UTC a miner of my pool successfully found the solution that allowed our block to be generated, and it was successfully submitted into the network and the VOTE asset became the first successfully registered asset on the network.

At 15:26 UTC blondfrogs contacted me via direct message on discord, and we began a back and forth as we went through all the details of what happened. He applied the fix to a branch and released it at 15:44 UTC. That fix worked but took us a long time to confirm because everyone's wallet.dat was poisoned with these failed transactions. This began the long process of zapping everyone's transactions and reindexing their chain. Once people got a clean mempool locally, and were running blondfrogs' new release, they were then able to finally issue assets. The flood gates opened shortly thereafter and assets were flowing as expected.

As an addendum, please take special note that blondfrogs acted quickly and skillfully at getting this fix put together and published to github for the Ravencoin users, at a time that was very early in the morning for him. He demonstrated that he is a particularly valuable asset (pardon the pun) to the Ravencoin community.

Any bounty reward for finding, publishing and assisting with fixing this fatal bug can be sent to my Ravencoin address: RTraysiSLhXq6QSWHwHMh4E4BEpqEJLbce

@blondfrogs blondfrogs self-assigned this Nov 26, 2018
@blondfrogs blondfrogs added the bug label Nov 26, 2018
@blondfrogs
Copy link
Contributor

Fixed in 2.1.1

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

No branches or pull requests

2 participants