Skip to content
New issue

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

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

Already on GitHub? Sign in to your account

LedgerResult Deserialization: Large TransferRate in AccountSet #476

Open
nkramer44 opened this issue Aug 10, 2023 · 1 comment
Open

LedgerResult Deserialization: Large TransferRate in AccountSet #476

nkramer44 opened this issue Aug 10, 2023 · 1 comment

Comments

@nkramer44
Copy link
Collaborator

Some historical AccountSet transactions set TransferRate to something larger than 2,000,000,000. This is disallowed by rippled, but only after the fix1201 amendment was enabled. Therefore, the AccountSet transactions with a large TransferFee that occurred before that amendment are valid. We have a @Value.Check on AccountSet that ensures the TransferFee field is either 0 or between 1B and 2B. We should probably get rid of this check.

Ledgers where this is a problem:

  • 2764BFE48C6D143F56A3194A794CAE4D16A9308AF8E28CAAD6ECDE8AF127A7E4
  • 6A95998349E6F99CAD3550140D8C193A8FAAD817C607C6ED80B5D3CEF9C89AF9
@nkramer44
Copy link
Collaborator Author

Instead of getting rid of the @Value.Check, since that would hurt developer ergonomics when constructing an AccountSet, we could instead do the following:

Add a JsonNode to JsonRpcClientErrorException that is present when we are unable to deserialize a rippled result. When a developer encounters a JsonRpcClientErrorException, they can manually handle the JSON via JsonNode. Since a problem like this only occurs in historical data and can consistently be reproduced, developers should be able to trivially handle this case with the JsonNode, if they ever come across it at all.

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

No branches or pull requests

1 participant