-
Notifications
You must be signed in to change notification settings - Fork 57
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
Light clients and downloading block bodies #19
Comments
One relatively straight-forward way to solve the problem could be to switch If this is done, we could then add a networking request for light clients to ask full nodes for a Merkle proof of the extrinsics trie that only contains the hashes of the extrinsics. Switching the Another possibility could be to modify the extrinsics trie so that the trie keys are something like |
Sounds like a good start to me. Maybe we could also introduce a bloom filter as part of the header that provides information about present transactions? |
Light clients don't know the transaction index, i think just using transaction hash as the key is fine. |
The light client doesn't need to know the transaction index. |
After having submitted a transaction, a light client generally wants to know when and where the transaction is included in the finalized chain. This is both for UI purposes and to know when to stop gossiping that transaction.
In order to know when a transaction is included, the light client needs to download the body of each block of the best chain and compare the transactions of the body with the one that it has submitted.
While this is not a problem right now, if block bodies become larger in the future, light clients might have to use a lot of bandwidth just to download block bodies. After all, block bodies is one of the scaling factors of the chain. The busier the chain, the bigger the block bodies.
While a light client could ask a full node to send back a proof that a transaction is in a certain block, the full node could simply lie and pretend that the transaction isn't there. There is no way to prove that a transaction is not in a certain block body without sending the entire block body.
I don't have a solution to that problem, which is why I'm just opening an issue.
The text was updated successfully, but these errors were encountered: