XRPLF/rippled

#1 failed: unhandled exception: unexpected missing account root (Rippled (master branch))

Opened this issue · 4 comments

I don't have a clue where to discuss this, so I am posting it here.

Issue Description

I am trying to implement dilithium and so far I have managed to make the Key generation, message signing and signature verification a success. Almost all the test cases are getting executed error free. However, I am stuck accross 1 error, a common error amongst the remaining unsuccessful testcases.

#1 failed: unhandled exception: unexpected missing account root

To my information, I did not tamper much with the code related to accounts, except changing the key type. I am still learning as I do this project so I may have missed something very obvious but I am not super familiar with Rippled Codebase so thought of submitting it here. Thank you so much in advance for your help.

Steps to Reproduce

i dont thinkanyone can reproduce this because, I havent pushed the changes yet. i am waiting for all the test cases to run succussfully then only I can push it. However, I can paste the required code suspected by (the blessed man to understand this error) and hopefully we can figure this out. Just let me know what files you need to look at to spot the error.

Expected Result

Testcases should pass related to Account Handling process. To be precise, the first error occurred at Theoretical_Quality_test.cpp. (DirectStep).

Actual Result

#1 failed: unhandled exception: unexpected missing account root
Longest suite times:
2.7s ripple.app.TheoreticalQuality
2.8s, 1 suite, 2 cases, 8 tests total, 1 failure
This is the actual error getting popped up. I have some debugging statements in my code for it.

Environment

Ubuntu 22.04 Jammy with Boost 1.72.

Supporting Files

That error means that when the test env tried to access the account but it isn't activated. Typically occurring when you submit a txn with env(...) and the account doesnt exist.

The way to avoid this is env.memoize(carol); IF you are testing against a known NON Activated account. However in this case, its likely the cause of another issue. If you don't mind making your code public I can take a quick look. Otherwise make sure if you add an account that you also env.fund(XRP(100), my_account) so that its actually activated.

@dangell7 Thanks for the quick reply. Yes you can surely take a look. I've updated my code in my fork and made it public.
https://github.com/Xtinc-T/rippled-dilithium-Dissertation-
There's the link.

@dangell7 any further updates on this?

I can make a few notes.

The core of your issue is in the Account.h/Account.cpp/Env.cpp file. Likely there exists no master key, which means it cannot fund any other accounts you try to make.

I would back way off. I would add the repo to conan like you have, add the cmake like you have and build it. Leave the rest of everything untouched.

Then add dilithium as a keypair option, then add your sign/verify algorithms to the Secret file and generation functions to the Public Key file. Then add the functionality to test to the bottom of the PublicKey_test and Secret_test files. Dont disable any existing functionality.

Then once you confim you can sign and verify, and generate with the algorithm then you can start replacing some things. Let me know when you get here. You will need to make a new genesis file because I'm sure your new algorithm is creating a new r address.

Its also really difficult to see only your changes. I would recommend creating a develop branch in your repo. Keep that up to date with the upstream. Then put your changes on another branch and make a PR into your own develop branch. So that you can then track the changes better.