Possible Regression in GetMempoolTx
hhanh00 opened this issue · 9 comments
What is the bug?
GetMempoolTx does not return any transaction in recent lightwalletd
An older version that ycash uses, works correctly.
Additional context
[hanh@archlinux zcash-sync]$ grpcurl lite.ycash.xyz:9067 cash.z.wallet.sdk.rpc.CompactTxStreamer/GetMempoolTx
{
"hash": "C0yilQ0NtBLSbM6IFbyK9KBPdz+1y9d8QeVICGu/H8U=",
"spends": [
{
"nf": "CAdkTo8t3RHewf2ROu/eDYytA9rjde+hlPoxEN8vUUA="
}
],
"outputs": [
{
"cmu": "XWoqMrl1oYkQn8D1ObzyRKDN6aCyT6YkOn6AJrUZDkg=",
"epk": "JSHqG5D9zhGsbFk7ujGL3J08KgB4EtkqsLXA7WofRI0=",
"ciphertext": "nfHhEOGxzOvea4gSWPO7cWoN7q5eKvvCMM66RC4Lom4mc39sX571ZDS++gXwJ0sVUeoOvg=="
},
{
"cmu": "jpezvyj5S1uhauSy+SMOfJ4iSk6Ku9FWrtH1vzV2Ggc=",
"epk": "3efWwcVDaJ06Gxtu8YuYXBf6gtthazgYSJw9m4vp12A=",
"ciphertext": "G3cYp51N6sVgL9W096qfoVvo0c6Vjd/zd+IRrIMOXB8pzSC0bcxfhRB5HmNFoGjzA55MJA=="
}
]
}
[hanh@archlinux zcash-sync]$ grpcurl mainnet.lightwalletd.com:9067 cash.z.wallet.sdk.rpc.CompactTxStreamer/GetMempoolTx
[hanh@archlinux zcash-sync]$
[hanh@archlinux zcash-sync]$ grpcurl mainnet.lightwalletd.com:9067 cash.z.wallet.sdk.rpc.CompactTxStreamer/GetMempoolStream
[hanh@archlinux zcash-sync]$
GetMempoolStream
does not seem to work either.
Howdy @hhanh00,
Thank you for the report. What version of lwd is that endpoint running by chance? And do you know if it is a mirror of the current lwd stack or its own implementation from a fork?
It's a fork of zcash/lightwalletd.
I thought I was reproducing the problem (on zcash/lightwalletd), but it turned out that no entries were being returned because my zcashd
node was syncing (catching up with the tip of the chain, I had recently started it). While it's syncing, zcashd
is discovering new blocks quickly, and lightwalletd
learns about each of these new blocks from zcashd
, and when lightwalletd
learns of a new block, it immediately completes any in-progress GetMempoolStream
requests (this is by design), and during that (very brief) block interval, it's unlikely that any new transactions entered the mempool. So during this time, each call will return an empty list almost immediately.
But once zcashd
has synced with the actual tip of the current chain, the GetMempoolStream
began working as expected for me.
In case it's helpful, one way to tell if zcashd
is still syncing is to see how quickly the "Block height" value is increasing in the window where you're running zcashd
, or look at the latest UpdateTip
message in zcashd's debug.log
file, and compare the logging timestamp (the first field) with the block timestamp (after the "date=" toward the end of each line). If those differ by much, it's still syncing. Or you can tail -f debug.log
and see how quickly the UpdateTip
messages are appearing.
Can you verify that the problem isn't there once your zcashd
(or ycashd
) is synced with the tip? If the problem is still there, then there's some other problem I'll need to investigate. Thanks.
[hanh@archlinux warp]$ grpcurl mainnet.lightwalletd.com:9067 cash.z.wallet.sdk.rpc.CompactTxStreamer/GetLatestBlock
{
"height": "1741781",
"hash": "E49dxB8DzcXel4EpfimX3qlMYrdhq9onobA3AQAAAAA="
}
[hanh@archlinux warp]$ grpcurl mainnet.lightwalletd.com:9067 cash.z.wallet.sdk.rpc.CompactTxStreamer/GetMempoolTx
[hanh@archlinux warp]$ grpcurl mainnet.lightwalletd.com:9067 cash.z.wallet.sdk.rpc.CompactTxStreamer/GetMempoolStream
Same problem whether lwd is synced or not.
I don't have access to the zcashd behind mainnet.lightwalletd.com
as it is not my deployment.
Sorry, I misinterpreted the symptoms. I think #404 will fix this. If you're able, can you run the latest master
branch locally and see if the problem is fixed?
This lightwalletd has been upgraded (you could see if this problem is fixed using this instance):
$ grpcurl lightwalletd.electriccoin.co:9067 cash.z.wallet.sdk.rpc.CompactTxStreamer/GetLightdInfo | jq .version
"v0.4.13"
This one hasn't been updated yet (so will still have the bug):
$ grpcurl mainnet.lightwalletd.com:9067 cash.z.wallet.sdk.rpc.CompactTxStreamer/GetLightdInfo | jq .version
"v0.4.12-5-gdb2795a"
I don't know who runs that instance.
Thanks, the issue is solved on lightwalletd.electriccoin.co
.
mainnet.lightwalletd.com:9067
is run by the NightHawk team.
Is your server lightwalletd.electriccoin.co
available for public usage? Or it's for your own development? I would like to know if it's ok to add it to the list of public servers in my wallet.
Hi @hhanh00. Our server is just for our internal usage at the moment. Thanks for checking!
Thanks for verifying, @hhanh00, I'll close this now; feel free to reopen it if you still see the problem on v0.4.13 or beyond.