SDL should only call get_address_txids if there exists a taddr with funds #23

Closed
opened 6 months ago by duke · 5 comments
duke commented 6 months ago
Owner

We are seeing problems with SDL syncing very old wallets , something like

ERROR::Error with get_address_txids runtime Status { code: Internal, message: "Unexpected compression flag: 60" }

The wallet this happened on had only zaddrs with funds, no taddrs. It seems that get_address_txids should only be called if a taddr with funds is found. My guess is that currently it's called unconditionally. If we only call it when it's actually needed, it may fix this bug.

It's not clear exactly which repo the code change needs to happen in, it could the SDL or lightwalletd, but it's likely this repo.

We are seeing problems with SDL syncing very old wallets , something like ``` ERROR::Error with get_address_txids runtime Status { code: Internal, message: "Unexpected compression flag: 60" } ``` The wallet this happened on had only zaddrs with funds, no taddrs. It seems that `get_address_txids` should only be called if a taddr with funds is found. My guess is that currently it's called unconditionally. If we only call it when it's actually needed, it may fix this bug. It's not clear exactly which repo the code change needs to happen in, it could the SDL or lightwalletd, but it's likely this repo.
Collaborator

Start height is 540001. All attempts (4) to restore a wallet with a very old birthday returned either of these errors:

ERROR::Error with get_address_txids runtime Status { code: Internal, message: "Unexpected compression flag: 60" }
ERROR::Error with get_address_txids runtime tonic::transport::Error(Transport, hyper::Error(Connect, Custom { kind: UnexpectedEof, error: "tls handshake eof" }))
ERROR::Error with get_address_txids runtime tonic::transport::Error(Transport, hyper::Error(Connect, ConnectError("dns error", Custom { kind: Other, error: "failed to lookup address information: Name or service not known" })))

The important thing about this bug is the client has a stable internet connection and the node operator has its node and lightwalletd to be fully operational. It was tested with multiple lite servers run by various node operators.

Even more important is that it doesn't crash on start but it fetches blocks normally for a few hours (see attached files), then returns errors mentioned above for unknown reasons - the node is up and lightwalletd didn't crash.

OS Kernel Qt SDL Branch
Debian 12 6.1.0-13-amd64 5.15.8 v1.5.3 master

This hush/SilentDragonLite#119 is related and would be a useful feature when done, though it won't fix the root problem.

Start height is 540001. All attempts (4) to restore a wallet with a very old birthday returned either of these errors: ``` ERROR::Error with get_address_txids runtime Status { code: Internal, message: "Unexpected compression flag: 60" } ``` ``` ERROR::Error with get_address_txids runtime tonic::transport::Error(Transport, hyper::Error(Connect, Custom { kind: UnexpectedEof, error: "tls handshake eof" })) ``` ``` ERROR::Error with get_address_txids runtime tonic::transport::Error(Transport, hyper::Error(Connect, ConnectError("dns error", Custom { kind: Other, error: "failed to lookup address information: Name or service not known" }))) ``` The important thing about this bug is the client has a stable internet connection and the node operator has its node and lightwalletd to be fully operational. It was tested with multiple lite servers run by various node operators. Even more important is that it doesn't crash on start but it fetches blocks normally for a few hours (see attached files), then returns errors mentioned above for unknown reasons - the node is up and lightwalletd didn't crash. | OS | Kernel | Qt | SDL | Branch | | --------- | -------------- | ------ | ------ | ------ | | Debian 12 | 6.1.0-13-amd64 | 5.15.8 | v1.5.3 | master | This https://git.hush.is/hush/SilentDragonLite/issues/119 is related and would be a useful feature when done, though it won't fix the root problem.
Collaborator

Unsure if this is related, but if I leave SDL open & idle on my computer, then I get that lovely "Unexpected compression flag: 60" error message randomly, but when I hit ok it appears to be functioning fine.

Unsure if this is related, but if I leave SDL open & idle on my computer, then I get that lovely `"Unexpected compression flag: 60"` error message randomly, but when I hit ok it appears to be functioning fine.
Poster
Owner

@onryo @jahway603 thanks for the extra details. I haven't seen the "tls handshake eof" error before. I am still researching this

@onryo @jahway603 thanks for the extra details. I haven't seen the `"tls handshake eof"` error before. I am still researching this
Poster
Owner

The errors that mention Error with get_address_txids runtime are generated from lib/src/grpcconnector.rs line 210 in silentdragonlite-cli here : https://git.hush.is/hush/silentdragonlite-cli/src/branch/master/lib/src/grpcconnector.rs#L210

We have a catch-22. The wallet must call get_address_txids to see if a taddress has funds, it doesn't know this information beforehand. So we can't avoid calling this for taddrs with no funds, the wallet doesn't know which taddrs have funds until it knows which transactions involve that taddr.

The errors that mention `Error with get_address_txids runtime` are generated from lib/src/grpcconnector.rs line 210 in silentdragonlite-cli here : https://git.hush.is/hush/silentdragonlite-cli/src/branch/master/lib/src/grpcconnector.rs#L210 We have a catch-22. The wallet must call get_address_txids to see if a taddress has funds, it doesn't know this information beforehand. So we can't avoid calling this for taddrs with no funds, the wallet doesn't know which taddrs have funds until it knows which transactions involve that taddr.
Poster
Owner

We can't avoid calling get_address_txids so I think this issue is not necessary anymore. We have made a lot of progress on the compression flag bug recently and we have other issues to track that. Closing

We can't avoid calling `get_address_txids` so I think this issue is not necessary anymore. We have made a lot of progress on the compression flag bug recently and we have other issues to track that. Closing
duke closed this issue 3 months ago
Sign in to join this conversation.
No Label
No Milestone
No project
No Assignees
3 Participants
Notifications
Due Date

No due date set.

Dependencies

This issue currently doesn't have any dependencies.

Loading…
There is no content yet.