-
Notifications
You must be signed in to change notification settings - Fork 215
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
[Merged by Bors] - ballots: request active set if reference ballot was submitted with empty active set #4956
Conversation
Codecov Report
@@ Coverage Diff @@
## develop #4956 +/- ##
=========================================
- Coverage 77.1% 77.1% -0.1%
=========================================
Files 254 255 +1
Lines 30159 30266 +107
=========================================
+ Hits 23281 23341 +60
- Misses 5373 5412 +39
- Partials 1505 1513 +8
... and 6 files with indirect coverage changes 📢 Have feedback on the report? Share it here. |
bors try |
tryBuild failed: |
bors try |
tryBuild failed: |
bors try |
tryBuild failed: |
d8f64aa
to
a5776b6
Compare
bors try |
tryBuild failed: |
bors try |
tryBuild failed: |
bors try |
tryBuild failed: |
bors try |
tryBuild succeeded! The publicly hosted instance of bors-ng is deprecated and will go away soon. If you want to self-host your own instance, instructions are here. If you want to switch to GitHub's built-in merge queue, visit their help page. |
bors try |
tryBuild succeeded! The publicly hosted instance of bors-ng is deprecated and will go away soon. If you want to self-host your own instance, instructions are here. If you want to switch to GitHub's built-in merge queue, visit their help page. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
so after the layer takes effect, the new-version nodes will see blob store not found activeset
from old-version nodes. but the old-version nodes will continue to operate fine. this seems to punish miners who upgraded...
they will ask peer that sent this data. unless someone maliciously sends ballot with empty active set then it is ok. as for dos it makes no sense, it is very simple work (query one key). at the same time you can ask sync for atx ids, which is a range scan |
bors try |
tryBuild succeeded! The publicly hosted instance of bors-ng is deprecated and will go away soon. If you want to self-host your own instance, instructions are here. If you want to switch to GitHub's built-in merge queue, visit their help page. |
spacemeshos/go-spacemesh-dev:b22e6d9 |
@@ -139,6 +141,12 @@ func WithMinGoodAtxPct(pct int) Opt { | |||
} | |||
} | |||
|
|||
func WithEmitEmptyActiveSet(lid types.LayerID) Opt { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
i still don't see this invoked in node.go. what am i missing?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
oh sorry :) i thought you are suggesting to rename it
b1549b2
to
2821625
Compare
bors merge |
…pty active set (#4956) closes: #4672 starting from layer X reference ballots will be gossiped with empty active sets. any updated node will request active set by its hash from the ballot sender, and save it in a separate table. unless it wasn't saved before, in that case we won't download anything. reference ballot will be stored with full active set, so that sync protocol remains compatible with nodes that didn't upgrade. for them reference ballot without active set will look syntactically invalid. but they will be able to download it later and not get stuck this way.
Pull request successfully merged into develop. Build succeeded! The publicly hosted instance of bors-ng is deprecated and will go away soon. If you want to self-host your own instance, instructions are here. If you want to switch to GitHub's built-in merge queue, visit their help page. |
closes: #4672
starting from layer X reference ballots will be gossiped with empty active sets.
any updated node will request active set by its hash from the ballot sender, and save it in a separate table. unless it wasn't saved before, in that case we won't download anything.
reference ballot will be stored with full active set, so that sync protocol remains compatible with nodes that didn't upgrade. for them reference ballot without active set will look syntactically invalid. but they will be able to download it later and not get stuck this way.