Skip to content

Updated lite client spec #3841

Merged
tac0turtle merged 31 commits intomasterfrom
josef/lite-client
Aug 27, 2019
Merged

Updated lite client spec #3841
tac0turtle merged 31 commits intomasterfrom
josef/lite-client

Conversation

@josef-widder
Copy link
Contributor

@josef-widder josef-widder commented Jul 29, 2019

closes #1413

  • Referenced an issue explaining the need for the change
  • Updated all relevant documentation in docs
  • Updated all code comments where relevant
  • Wrote tests
  • Updated CHANGELOG_PENDING.md

@codecov-io
Copy link

codecov-io commented Jul 29, 2019

Codecov Report

Merging #3841 into master will decrease coverage by 0.04%.
The diff coverage is n/a.

@@            Coverage Diff             @@
##           master    #3841      +/-   ##
==========================================
- Coverage   66.99%   66.94%   -0.05%     
==========================================
  Files         219      219              
  Lines       18191    18207      +16     
==========================================
+ Hits        12187    12189       +2     
- Misses       5121     5130       +9     
- Partials      883      888       +5
Impacted Files Coverage Δ
consensus/reactor.go 76.78% <0%> (-2.12%) ⬇️
consensus/state.go 80.18% <0%> (ø) ⬆️
blockchain/v0/reactor.go 79.71% <0%> (+0.94%) ⬆️
blockchain/v0/pool.go 82.62% <0%> (+1.96%) ⬆️
config/toml.go 65.95% <0%> (+4.66%) ⬆️

@cwgoes cwgoes self-requested a review July 29, 2019 14:14
Copy link
Contributor

@ebuchman ebuchman left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Great writeup, thanks Josef.

Would still love to see the client framed in a way that makes it easy to derive the kinds of evidence we need to detect (double signing, invalid state, counterfactual, etc.) for the different conditions - something along the lines of "how could a lite client be fooled in a way a full node couldn't be". Seems that might be orthogonal to this write up, but we'll probably want it for completeness.

I'm also wondering if we may want to include connecting to more than one node as an integral part of the protocol, and run the algorithm concurrently on all nodes, looking for conflicts. This way we can build in the possibility of finding and submitting evidence as a kind of first class citizen, which is actually integral to the security of the system (ie. to enforcing the "Tendermint Failure Model")

josef-widder and others added 4 commits August 12, 2019 15:49
Co-Authored-By: Anca Zamfir <ancazamfir@users.noreply.github.com>
Co-Authored-By: Anca Zamfir <ancazamfir@users.noreply.github.com>
Co-Authored-By: Anca Zamfir <ancazamfir@users.noreply.github.com>
Co-Authored-By: Anca Zamfir <ancazamfir@users.noreply.github.com>
Copy link
Contributor

@melekes melekes left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🍸

@tac0turtle tac0turtle changed the title Updated lite client spec based on Zarko's and my previous specs Updated lite client spec Aug 26, 2019
*Stalling*

With Bisection, a faulty full node could stall a lite client by creating a long sequence of headers that are queried one-by-one by the lite client and look OK, before the lite client eventually detects a problem. There are two ways to address this:
* Each call to ```Commit``` could be issued to a different full node
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

as an alternative: can we set a time limit for how long the bisection can take?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I added timeout as another way of how we can address the problem.

@tac0turtle tac0turtle merged commit f46e43e into master Aug 27, 2019
@tac0turtle tac0turtle deleted the josef/lite-client branch August 27, 2019 13:18
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

Successfully merging this pull request may close these issues.

Fixes to and for Light Client Spec

8 participants