-
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] - Support multiple signers in beacon #5158
Conversation
Codecov Report
@@ Coverage Diff @@
## develop #5158 +/- ##
=======================================
Coverage 77.7% 77.7%
=======================================
Files 259 259
Lines 30750 30781 +31
=======================================
+ Hits 23898 23945 +47
+ Misses 5361 5347 -14
+ Partials 1491 1489 -2
|
9912352
to
8917cae
Compare
beacon/beacon.go
Outdated
func (s *participant) Id() signerID { | ||
return signerID(s.signer.NodeID()) | ||
} | ||
|
||
type signerID types.NodeID | ||
|
||
func (id signerID) Field() log.Field { | ||
return log.ShortStringer("id", types.NodeID(id)) | ||
} |
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'm not sure about introducing a new type here just to change the logging behavour of NodeID
only for beacon
. We should consider (NodeID) Field()
to return a log.ShortStringer
and have that behaviour everywhere.
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.
What's wrong with having a private type here? Btw, it changed the key as well (NodeID logs "node_id", not "id").
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.
The problem isn't the private type, it's that beacon
now logs NodeID
differently from all other components, which makes it harder to read them imo.
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.
IMHO, it doesn't make sense to log messages per-signer with a "node_id" field, it has nothing to do with "node" anymore (it's not a node ID in this context, there are many IDs governed by a single node).
Perhaps instead, the NodeID
type should be dropped entirely in favor of a SignerID
or something similar? But that's a bigger refactor.
Avoid infallibile error checks.
… 0.12.0 (#5159) Bumps github.com/multiformats/go-multiaddr from 0.11.0 to 0.12.0.
this threshold used to determine if peers are seen as equally responsive within certain threshold. parametrizing it to run some experiments
still able to reproduce the bug below. > 2023-10-02T15:28:14.002+0200 WARN fd68b.sync mesh failed to process layer from sync {"node_id": "fd68b9397572556c2f329f3e5af2faf23aef85dbbbb7e38447fae2f4ef38899f", "module": "sync", "sessionId": "29422935-68d6-47d1-87a8-02293aa181f3", "layer_id": 23104, "errmsg": "requested layer 8063 is before evicted 13102", "name": "sync"} in the change i removed Results method from tortoise, and instead keeping Updates until mesh applies block and notifies tortoise that the block was applied, only then tortoise is free to evict results from memory. OnApplied has layer and opinion in the signature. Opinion is a unique representation of consensus state. If it changed while blocks were applied it means that history changed and we should not evict pending results.
closes: #5087 data is separated into shared data (beacon and active set) and signer specific data. both beacon and activeset are used from shared data, until smeshers generated a reference ballot. once any smesher generated a ballot it will be using data recorded in the reference ballot. build method now loops over all signers (copied at the start of the layer). there are parts that have to be run once for all signers and parts that makes sense to run in parallel. serial parts: - loading share data (beacon and active set) - deciding on mesh hash - tally votes & encode votes tortoise calls parallel parts: - loading data (it can be also run serially, but it was convenient to run it in parallel) - computing eligibilities (this is done once per node startup) - selecting txs - publishing proposal. this is the most important to avoid blocking serially in Publish while it runs validation worker pool (errgroup) is limited by number of cores as there is no network requests during parallel work.
## Motivation Not specifying a version leads the jobs to download the latest version on every build. Since a new version of gcloud is released on average once per week and those installations take up ~550 MB on our runners and are not removed automatically this eventually fills up the disks of the runners. ## Changes - Specify a gcloud version in `systests` and `release` jobs. This way only that version is downloaded and re-used on every subsequent run. - We can manually update gcloud to a newer version if needed. ## Test Plan n/a ## TODO <!-- This section should be removed when all items are complete --> - [x] Explain motivation or link existing issue(s) - [x] Test changes and document test plan - [x] Update documentation as needed - [x] Update [changelog](../CHANGELOG.md) as needed
## Motivation Instead of trying to access the local PoET via `0.0.0.0:10010` access it via `127.0.0.1:10010`. The first address seems to cause problems on some Windows systems ## Changes Updated standalone config to use 127.0.0.1 for local addresses instead of 0.0.0.0 ## Test Plan n/a ## TODO <!-- This section should be removed when all items are complete --> - [x] Explain motivation or link existing issue(s) - [x] Test changes and document test plan - [x] Update documentation as needed - [x] Update [changelog](../CHANGELOG.md) as needed
bors try |
tryBuild failed: |
bors try |
tryBuild failed: |
bors merge |
## Motivation Part of spacemeshos/pm#261 Closes #5088 ## Changes - beacon protocol driver supports registering new keys to participate in the protocol - when a new epoch starts, the protocol selects active signers that will participate - state is changed to contain the set of active protocol participants. A participant session consists of: * signer * VRF nonce - weakcoin supports multiple participants. Each one publishes the same proposal. ## Test Plan Existing unit-tests were extended to run beacon and weakcoin with multiple signers per node. Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Dmitry Shulyak <[email protected]> Co-authored-by: Matthias Fasching <[email protected]>
Build failed: |
Failure in unrelated UT bors merge |
## Motivation Part of spacemeshos/pm#261 Closes #5088 ## Changes - beacon protocol driver supports registering new keys to participate in the protocol - when a new epoch starts, the protocol selects active signers that will participate - state is changed to contain the set of active protocol participants. A participant session consists of: * signer * VRF nonce - weakcoin supports multiple participants. Each one publishes the same proposal. ## Test Plan Existing unit-tests were extended to run beacon and weakcoin with multiple signers per node. Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Dmitry Shulyak <[email protected]> Co-authored-by: Matthias Fasching <[email protected]>
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. |
Motivation
Part of spacemeshos/pm#261
Closes #5088
Changes
Test Plan
Existing unit-tests were extended to run beacon and weakcoin with multiple signers per node.