-
Notifications
You must be signed in to change notification settings - Fork 699
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
Refactor bootstrapper implementation into consensus #2300
Conversation
// consider that block to be accepted by the network. This assumes that a | ||
// majority of the network is correct. If a majority of the network is | ||
// malicious, the node may accept an incorrect block. | ||
type Bootstrapper interface { |
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 reason these functions include context.Context
is to add tracing support. I feel like that can be left to a later PR though... This PR is already quite large.
snow/engine/common/bootstrapper.go
Outdated
// We've received the accepted frontier from every bootstrap validator | ||
// Ask each bootstrap validator to filter the list of containers that we were | ||
// told are on the accepted frontier such that the list only contains containers | ||
// they think are accepted. | ||
totalSampledWeight, err := b.sampledBeacons.TotalWeight(b.Ctx.SubnetID) | ||
if err != nil { | ||
return fmt.Errorf("failed to get total weight of sampled beacons for subnet %s: %w", b.Ctx.SubnetID, err) | ||
} | ||
beaconsTotalWeight, err := b.Beacons.TotalWeight(b.Ctx.SubnetID) | ||
if err != nil { | ||
return fmt.Errorf("failed to get total weight of beacons for subnet %s: %w", b.Ctx.SubnetID, err) | ||
} | ||
newAlpha := float64(totalSampledWeight*b.Alpha) / float64(beaconsTotalWeight) | ||
|
||
failedBeaconWeight, err := b.Beacons.SubsetWeight(b.Ctx.SubnetID, b.failedAcceptedFrontier) | ||
if err != nil { | ||
return fmt.Errorf("failed to get total weight of failed beacons: %w", err) | ||
} | ||
|
||
// fail the bootstrap if the weight is not enough to bootstrap | ||
if float64(totalSampledWeight)-newAlpha < float64(failedBeaconWeight) { | ||
if b.Config.RetryBootstrap { | ||
b.Ctx.Log.Debug("restarting bootstrap", | ||
zap.String("reason", "not enough frontiers received"), | ||
zap.Int("numBeacons", b.Beacons.Count(b.Ctx.SubnetID)), | ||
zap.Int("numFailedBootstrappers", b.failedAcceptedFrontier.Len()), | ||
zap.Int("numBootstrapAttemps", b.bootstrapAttempts), | ||
) | ||
return b.Restart(ctx, false) | ||
} | ||
|
||
b.Ctx.Log.Debug("didn't receive enough frontiers", | ||
zap.Int("numFailedValidators", b.failedAcceptedFrontier.Len()), | ||
zap.Int("numBootstrapAttempts", b.bootstrapAttempts), | ||
) | ||
} |
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.
This whole mechanism was very questionable. The security isn't impacted by the frontier... The check at the end that the accepted frontier is non-empty should be enough to ensure that we don't mark bootstrapping as finished before we should. Technically there could be some weird situation where we only end up getting a majority of responses for something like the genesis block... But this is really a hacky attempt to prevent that at best.
I think it makes sense to just remove it.
// if we had too many timeouts when asking for validator votes, we | ||
// should restart bootstrap hoping for the network problems to go away; | ||
// otherwise, we received enough (>= b.Alpha) responses, but no frontier | ||
// was supported by a majority of validators (i.e. votes are split | ||
// between minorities supporting different frontiers). | ||
beaconTotalWeight, err := b.Beacons.TotalWeight(b.Ctx.SubnetID) | ||
if err != nil { | ||
return fmt.Errorf("failed to get total weight of beacons for subnet %s: %w", b.Ctx.SubnetID, err) | ||
} | ||
failedBeaconWeight, err := b.Beacons.SubsetWeight(b.Ctx.SubnetID, b.failedAccepted) | ||
if err != nil { | ||
return fmt.Errorf("failed to get total weight of failed beacons for subnet %s: %w", b.Ctx.SubnetID, err) | ||
} | ||
votingStakes := beaconTotalWeight - failedBeaconWeight | ||
if b.Config.RetryBootstrap && votingStakes < b.Alpha { |
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.
We added this in because technically on the DAG - it was possible for there to be no accepted vertices when starting a new DAG... Now we can just see if the accepted
set is empty, because every chain has a genesis block and every DAG has a stop vertex.
m.log.Error("received unexpected message", | ||
zap.Stringer("messageOp", message.AcceptedFrontierOp), | ||
zap.Stringer("nodeID", nodeID), | ||
zap.Stringers("blkIDs", blkIDs), | ||
) |
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.
This used to be a DEBUG log because the engine used to need to handle unexpected messages... But these should be filtered by the chain router now.
m.log.Error("received unexpected message", | ||
zap.Stringer("messageOp", message.AcceptedOp), | ||
zap.Stringer("nodeID", nodeID), | ||
zap.Stringers("blkIDs", blkIDs), | ||
) |
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.
This used to be a DEBUG log because the engine used to need to handle unexpected messages... But these should be filtered by the chain router now.
// Sample keys from [elements] uniformly by weight without replacement. The | ||
// returned set will have size less than or equal to [maxSize]. This function | ||
// will error if the sum of all weights overflows. | ||
func Sample[T comparable](elements map[T]uint64, maxSize int) (set.Set[T], error) { |
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.
There wasn't really a need to make this generic... But I felt like it was just as clean as hardcoding ids.NodeID
... 🤷
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.
If we wanted to, we could also make Majority
and Minority
generic. Same as here, though, it wouldn't really buy us anything.
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.
We could also think about either moving this into utils
or making this package-private so discourage people from using bootstrapper.Sample
to get a random subset of a map
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 was going to put this into the sampler
package - but it caused a circular dependency because of the SampleableSet
.
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.
Also it can't actually be package private - it is used in a different package
// Holds the beacons that were sampled for the accepted frontier | ||
sampledBeacons validators.Manager | ||
// IDs of validators we should request an accepted frontier from | ||
pendingSendAcceptedFrontier set.Set[ids.NodeID] | ||
// IDs of validators we requested an accepted frontier from but haven't | ||
// received a reply yet | ||
pendingReceiveAcceptedFrontier set.Set[ids.NodeID] | ||
// IDs of validators that failed to respond with their accepted frontier | ||
failedAcceptedFrontier set.Set[ids.NodeID] | ||
// IDs of all the returned accepted frontiers | ||
acceptedFrontierSet set.Set[ids.ID] | ||
|
||
// IDs of validators we should request filtering the accepted frontier from | ||
pendingSendAccepted set.Set[ids.NodeID] | ||
// IDs of validators we requested filtering the accepted frontier from but | ||
// haven't received a reply yet | ||
pendingReceiveAccepted set.Set[ids.NodeID] | ||
// IDs of validators that failed to respond with their filtered accepted | ||
// frontier | ||
failedAccepted set.Set[ids.NodeID] | ||
// IDs of the returned accepted containers and the stake weight that has | ||
// marked them as accepted | ||
acceptedVotes map[ids.ID]uint64 | ||
acceptedFrontier []ids.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.
This is the payoff 🙏
RecordAccepted(ctx context.Context, nodeID ids.NodeID, blkIDs []ids.ID) error | ||
// GetAccepted returns a set of accepted blocks along with a flag to | ||
// identify that the set has finished being calculated. | ||
GetAccepted(ctx context.Context) (blkIDs []ids.ID, finalized bool) |
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.
Why does this return a slice of IDs whereas other methods return a set of IDs?
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.
We pass around sets of nodeIDs and slices of IDs. This matches the types expected by the message sender.
} | ||
} | ||
|
||
m.log.Debug("finalized bootstrapping instance", |
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 feel like this log should be done in the caller of Result
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.
It isn't particularly easy to move this log out of Minority... I feel like it's cleaner to keep the logs in both Minority and Majority rather than in Minority and the engine
if !m.finished() { | ||
return nil | ||
} | ||
|
||
var ( | ||
totalWeight uint64 | ||
err error | ||
) | ||
for _, weight := range m.nodeWeights { | ||
totalWeight, err = math.Add64(totalWeight, weight) | ||
if err != nil { | ||
return err | ||
} | ||
} | ||
|
||
requiredWeight := totalWeight/2 + 1 | ||
for blkID, weight := range m.received { | ||
if weight >= requiredWeight { | ||
m.accepted = append(m.accepted, blkID) | ||
} | ||
} |
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.
Maybe we should also consider adding bool
to the return signature here so instead of calling both RecordOpinion
and Result
to figure out if we need to keep poling peers we can just call RecordOpinion
in a loop. This way we can also move all this code into Result
, and get rid of the m.accepted
field.
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.
Left an offline comment on slack but we can also consider supplying a filter function func(map[ids.ID]uint64) bool
that Result
can use to filter out any valid blocks which will get rid of the duplicated code in Minority
and the Poll
interface.
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.
We need Result
on the interface for the Minority
implementation to be usable because the minority result is used repeatedly to send the majority requests. I'm sure that we could combine the implementations somehow... But I feel like currently there really isn't much duplicated code... The structure of the code may look similar but the logic is pretty different
// Sample keys from [elements] uniformly by weight without replacement. The | ||
// returned set will have size less than or equal to [maxSize]. This function | ||
// will error if the sum of all weights overflows. | ||
func Sample[T comparable](elements map[T]uint64, maxSize int) (set.Set[T], error) { |
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.
We could also think about either moving this into utils
or making this package-private so discourage people from using bootstrapper.Sample
to get a random subset of a map
commit fe72c5b Author: Stephen Buttolph <[email protected]> Date: Fri Nov 17 01:23:21 2023 -0500 Remove `common.Config` functions (#2328) commit 585424e Author: Stephen Buttolph <[email protected]> Date: Fri Nov 17 00:39:46 2023 -0500 Unexport avalanche constant from common package (#2327) commit 8520112 Author: Dhruba Basu <[email protected]> Date: Thu Nov 16 20:53:10 2023 -0800 Move `network` implementation to separate package (#2296) Signed-off-by: Stephen Buttolph <[email protected]> Co-authored-by: Stephen Buttolph <[email protected]> commit 5236d72 Author: Stephen Buttolph <[email protected]> Date: Thu Nov 16 20:08:57 2023 -0500 Remove useless anon functions (#2326) commit e7ca38b Author: Dan Laine <[email protected]> Date: Thu Nov 16 16:03:17 2023 -0500 Update zap dependency to v1.26.0 (#2325) commit 6900e72 Author: Dan Laine <[email protected]> Date: Thu Nov 16 15:20:19 2023 -0500 nit: loop --> variadic (#2316) commit 35fbb3a Author: Alberto Benegiamo <[email protected]> Date: Thu Nov 16 10:33:18 2023 -0700 Pchain - Cleanup NodeID generation in UTs (#2291) Co-authored-by: Dan Laine <[email protected]> Co-authored-by: Stephen Buttolph <[email protected]> commit 043644f Author: Stephen Buttolph <[email protected]> Date: Thu Nov 16 12:13:09 2023 -0500 Refactor bootstrapper implementation into consensus (#2300) Co-authored-by: Dan Laine <[email protected]> commit f1ec30c Author: Joshua Kim <[email protected]> Date: Thu Nov 16 12:03:00 2023 -0500 Update `error_code` to be int32 instead of uint32. (#2322) Signed-off-by: Joshua Kim <[email protected]> Co-authored-by: Stephen Buttolph <[email protected]> commit 348f842 Author: Dhruba Basu <[email protected]> Date: Thu Nov 16 08:39:03 2023 -0800 Remove `Network` interface from `Builder` (#2312) commit 6484de4 Author: Joshua Kim <[email protected]> Date: Thu Nov 16 04:31:34 2023 -0500 Rename AppRequestFailed to AppError (#2321) Signed-off-by: Joshua Kim <[email protected]> commit 3d0611c Author: Joshua Kim <[email protected]> Date: Wed Nov 15 19:24:10 2023 -0500 Remove error from SDK AppGossip handler (#2252) Signed-off-by: Joshua Kim <[email protected]> Co-authored-by: Stephen Buttolph <[email protected]> commit 01a1bbe Author: Dhruba Basu <[email protected]> Date: Wed Nov 15 16:01:29 2023 -0800 Remove `AddUnverifiedTx` from `Builder` (#2311) commit e8ef4ad Author: Dhruba Basu <[email protected]> Date: Wed Nov 15 14:15:17 2023 -0800 Move `AddUnverifiedTx` logic to `network.IssueTx` (#2310) commit dcc6ea8 Author: Stephen Buttolph <[email protected]> Date: Wed Nov 15 17:13:19 2023 -0500 Use zap.Stringer rather than zap.Any (#2320) commit 44f3aba Author: Stephen Buttolph <[email protected]> Date: Wed Nov 15 17:12:57 2023 -0500 Replace unique slices with sets in the engine interface (#2317) commit d00b67f Author: Stephen Buttolph <[email protected]> Date: Wed Nov 15 11:43:17 2023 -0500 Simplify avalanche bootstrapping (#2286) commit 5dff153 Author: Dhruba Basu <[email protected]> Date: Tue Nov 14 12:47:06 2023 -0800 Add `VerifyTx` to `executor.Manager` (#2293) commit 29f86e9 Author: marun <[email protected]> Date: Tue Nov 14 21:25:25 2023 +0100 e2e: More fixture refinement in support of coreth integration testing (#2275) commit 72d2fae Author: Dhruba Basu <[email protected]> Date: Tue Nov 14 10:26:39 2023 -0800 Add `recentTxsLock` to platform `network` struct (#2294) commit eb21b42 Author: Dhruba Basu <[email protected]> Date: Tue Nov 14 10:24:01 2023 -0800 Move management of platformvm preferred block to `executor.Manager` (#2292) commit 7f70fcf Author: Stephen Buttolph <[email protected]> Date: Mon Nov 13 15:18:34 2023 -0500 Simplify get server creation (#2285) Co-authored-by: Dan Laine <[email protected]> commit baf0ef7 Author: Dan Laine <[email protected]> Date: Mon Nov 13 10:33:31 2023 -0500 `merkledb` -- Add `Clearer` interface (#2277) commit b8746de Author: Dhruba Basu <[email protected]> Date: Thu Nov 9 16:21:04 2023 -0800 Embed `noop` handler for all unhandled messages (#2288) commit 86201ae Author: David Boehm <[email protected]> Date: Thu Nov 9 14:08:10 2023 -0500 Remove sentinel node from MerkleDB proofs (#2106) Signed-off-by: David Boehm <[email protected]> Co-authored-by: Stephen Buttolph <[email protected]> Co-authored-by: Dan Laine <[email protected]> commit 094ce50 Author: Joshua Kim <[email protected]> Date: Thu Nov 9 13:58:28 2023 -0500 Remove Lazy Initialize on Node (#1384) Signed-off-by: Joshua Kim <[email protected]> Co-authored-by: Dan Laine <[email protected]> commit e3f1212 Author: Alberto Benegiamo <[email protected]> Date: Thu Nov 9 10:08:59 2023 -0700 Genesis validators cleanup (#2282) commit 151621f Author: Alberto Benegiamo <[email protected]> Date: Thu Nov 9 09:33:42 2023 -0700 Cleanup `ids.NodeID` usage (#2280) commit ebaf9d4 Author: Dhruba Basu <[email protected]> Date: Wed Nov 8 18:08:23 2023 -0500 Move `DropExpiredStakerTxs` to platformvm mempool (#2279) commit c94ff4e Author: David Boehm <[email protected]> Date: Wed Nov 8 17:55:02 2023 -0500 MerkleDB:Naming and comments cleanup (#2274) Co-authored-by: Dan Laine <[email protected]> commit bcd4a94 Author: Dhruba Basu <[email protected]> Date: Wed Nov 8 17:28:33 2023 -0500 Cleanup platformvm mempool errs (#2278) commit aba404e Author: marun <[email protected]> Date: Wed Nov 8 22:54:42 2023 +0100 e2e: Refactor suite setup and helpers to tests/fixture/e2e for reuse by coreth (#2265) commit fc95834 Author: Dhruba Basu <[email protected]> Date: Wed Nov 8 16:41:39 2023 -0500 `mempool.NewMempool` -> `mempool.New` (#2276) commit 93d88c0 Author: Dhruba Basu <[email protected]> Date: Wed Nov 8 15:02:10 2023 -0500 Return if element was deleted from `Hashmap` (#2271) Co-authored-by: Dan Laine <[email protected]> commit 1329a59 Author: Dan Laine <[email protected]> Date: Wed Nov 8 12:56:27 2023 -0500 Add fuzz test for `NewIteratorWithStartAndPrefix` (#1992) Co-authored-by: Alberto Benegiamo <[email protected]> commit 22f3c89 Author: Dan Laine <[email protected]> Date: Tue Nov 7 19:12:17 2023 -0500 `merkledb` -- remove unneeded var declarations (#2269) commit 683fcfa Author: Dan Laine <[email protected]> Date: Tue Nov 7 17:36:20 2023 -0500 Add read-only database flag (`--db-read-only`) (#2266) commit 52f93c8 Author: Dan Laine <[email protected]> Date: Tue Nov 7 17:34:19 2023 -0500 `merkledb` -- fix nil check in test (#2268) commit 1faec38 Author: Dan Laine <[email protected]> Date: Tue Nov 7 17:34:09 2023 -0500 `merkledb` -- rename nit (#2267) commit cdcfb5b Author: felipemadero <[email protected]> Date: Tue Nov 7 17:06:59 2023 -0300 Use extended public key to derive ledger addresses (#2246) Signed-off-by: felipemadero <[email protected]> Co-authored-by: Dan Laine <[email protected]> Co-authored-by: Stephen Buttolph <[email protected]> commit 7490a92 Author: Joshua Kim <[email protected]> Date: Mon Nov 6 15:39:23 2023 -0500 Document p2p package (#2254) Signed-off-by: Joshua Kim <[email protected]> Co-authored-by: Stephen Buttolph <[email protected]> commit 10bd428 Author: Dhruba Basu <[email protected]> Date: Mon Nov 6 14:49:45 2023 -0500 Remove unused `UnsortedEquals` function (#2264) commit e710899 Author: David Boehm <[email protected]> Date: Mon Nov 6 13:36:34 2023 -0500 Remove Token constants information from keys (#2197) Signed-off-by: David Boehm <[email protected]> Signed-off-by: Dan Laine <[email protected]> Co-authored-by: Darioush Jalali <[email protected]> Co-authored-by: Dan Laine <[email protected]> commit 558d8fb Author: vuittont60 <[email protected]> Date: Mon Nov 6 22:26:43 2023 +0800 Fix typos in docs (#2261) Signed-off-by: vuittont60 <[email protected]> commit a8db08e Author: marun <[email protected]> Date: Mon Nov 6 15:26:27 2023 +0100 e2e: Make NewWallet and NewEthclient regular functions (#2262) commit aaed8f3 Author: Stephen Buttolph <[email protected]> Date: Sat Nov 4 17:29:12 2023 -0400 Track all subnet validator sets in the validator manager (#2253) commit cec1cd1 Author: Stephen Buttolph <[email protected]> Date: Fri Nov 3 19:19:26 2023 -0400 Require poll metrics to be registered (#2260) commit e4cb2cd Author: Dan Laine <[email protected]> Date: Fri Nov 3 17:33:44 2023 -0400 Cleanup `ipcs` `Socket` test (#2257) commit 437ade8 Author: marun <[email protected]> Date: Fri Nov 3 21:45:12 2023 +0100 Switch to using require.TestingT interface in SenderTest struct (#2258) commit 11f1b55 Author: DoTheBestToGetTheBest <[email protected]> Date: Thu Nov 2 15:41:47 2023 -0700 feat(api) : Peers function to return the PrimaryAlias of the chainID (#2251) Signed-off-by: DoTheBestToGetTheBest <[email protected]> Co-authored-by: Stephen Buttolph <[email protected]> commit c174c62 Author: Stephen Buttolph <[email protected]> Date: Thu Nov 2 16:20:03 2023 -0400 Return log levels from admin.SetLoggerLevel (#2250) commit 20f3580 Author: Stephen Buttolph <[email protected]> Date: Wed Nov 1 22:11:47 2023 -0400 Update versions for v1.10.15 (#2245) commit 36d1630 Author: Cesar <[email protected]> Date: Wed Nov 1 22:44:14 2023 -0300 Add nullable option to codec (#2171) Signed-off-by: Cesar <[email protected]> Co-authored-by: Stephen Buttolph <[email protected]> Co-authored-by: Dan Laine <[email protected]> commit 4957ccb Author: Dan Laine <[email protected]> Date: Tue Oct 31 18:38:57 2023 -0400 Add `pebble` as valid value for `--db-type`. (#2244) Signed-off-by: Dan Laine <[email protected]> Co-authored-by: Dhruba Basu <[email protected]> Co-authored-by: Stephen Buttolph <[email protected]> commit 047d493 Author: Dhruba Basu <[email protected]> Date: Tue Oct 31 18:14:14 2023 -0400 Add `BaseTx` support to platformvm (#2232) Signed-off-by: Dhruba Basu <[email protected]> commit 1f9df8f Author: Dan Laine <[email protected]> Date: Tue Oct 31 17:10:05 2023 -0400 Remove `database.Manager` (#2239) Signed-off-by: Dan Laine <[email protected]> commit 8d15c22 Author: Stephen Buttolph <[email protected]> Date: Tue Oct 31 13:28:49 2023 -0400 Document host and port behavior in help text (#2236) commit 76d756f Author: Joshua Kim <[email protected]> Date: Tue Oct 31 11:43:13 2023 -0400 Remove error from Router AppGossip (#2238) Signed-off-by: Joshua Kim <[email protected]> commit 5b96789 Author: Joshua Kim <[email protected]> Date: Mon Oct 30 16:41:51 2023 -0400 P2P AppRequestFailed protobuf definition (#2111) Signed-off-by: Joshua Kim <[email protected]> Co-authored-by: Stephen Buttolph <[email protected]> commit 826f941 Author: Dhruba Basu <[email protected]> Date: Fri Oct 27 19:41:19 2023 -0400 Fix test typos (#2233) Signed-off-by: marun <[email protected]> Co-authored-by: marun <[email protected]> commit 66375f5 Author: Dhruba Basu <[email protected]> Date: Fri Oct 27 18:44:34 2023 -0400 Trim down size of secp256k1 `Factory` struct (#2223) Signed-off-by: Dhruba Basu <[email protected]> commit 42d4e3e Author: Dhruba Basu <[email protected]> Date: Fri Oct 27 17:44:38 2023 -0400 Enable `perfsprint` linter (#2229) commit b83af9b Author: Dhruba Basu <[email protected]> Date: Fri Oct 27 17:42:03 2023 -0400 Add `utils.Err` helper (#2212) Signed-off-by: Dhruba Basu <[email protected]> Signed-off-by: Joshua Kim <[email protected]>
commit 4768ed4 Author: Stephen Buttolph <[email protected]> Date: Fri Nov 17 12:50:07 2023 -0500 Remove bootstrapping retry config (#2301) commit 392b313 Author: Stephen Buttolph <[email protected]> Date: Fri Nov 17 12:43:15 2023 -0500 Move engine startup into helper function (#2329) commit fe72c5b Author: Stephen Buttolph <[email protected]> Date: Fri Nov 17 01:23:21 2023 -0500 Remove `common.Config` functions (#2328) commit 585424e Author: Stephen Buttolph <[email protected]> Date: Fri Nov 17 00:39:46 2023 -0500 Unexport avalanche constant from common package (#2327) commit 8520112 Author: Dhruba Basu <[email protected]> Date: Thu Nov 16 20:53:10 2023 -0800 Move `network` implementation to separate package (#2296) Signed-off-by: Stephen Buttolph <[email protected]> Co-authored-by: Stephen Buttolph <[email protected]> commit 5236d72 Author: Stephen Buttolph <[email protected]> Date: Thu Nov 16 20:08:57 2023 -0500 Remove useless anon functions (#2326) commit e7ca38b Author: Dan Laine <[email protected]> Date: Thu Nov 16 16:03:17 2023 -0500 Update zap dependency to v1.26.0 (#2325) commit 6900e72 Author: Dan Laine <[email protected]> Date: Thu Nov 16 15:20:19 2023 -0500 nit: loop --> variadic (#2316) commit 35fbb3a Author: Alberto Benegiamo <[email protected]> Date: Thu Nov 16 10:33:18 2023 -0700 Pchain - Cleanup NodeID generation in UTs (#2291) Co-authored-by: Dan Laine <[email protected]> Co-authored-by: Stephen Buttolph <[email protected]> commit 043644f Author: Stephen Buttolph <[email protected]> Date: Thu Nov 16 12:13:09 2023 -0500 Refactor bootstrapper implementation into consensus (#2300) Co-authored-by: Dan Laine <[email protected]> commit f1ec30c Author: Joshua Kim <[email protected]> Date: Thu Nov 16 12:03:00 2023 -0500 Update `error_code` to be int32 instead of uint32. (#2322) Signed-off-by: Joshua Kim <[email protected]> Co-authored-by: Stephen Buttolph <[email protected]> commit 348f842 Author: Dhruba Basu <[email protected]> Date: Thu Nov 16 08:39:03 2023 -0800 Remove `Network` interface from `Builder` (#2312) commit 6484de4 Author: Joshua Kim <[email protected]> Date: Thu Nov 16 04:31:34 2023 -0500 Rename AppRequestFailed to AppError (#2321) Signed-off-by: Joshua Kim <[email protected]> commit 3d0611c Author: Joshua Kim <[email protected]> Date: Wed Nov 15 19:24:10 2023 -0500 Remove error from SDK AppGossip handler (#2252) Signed-off-by: Joshua Kim <[email protected]> Co-authored-by: Stephen Buttolph <[email protected]> commit 01a1bbe Author: Dhruba Basu <[email protected]> Date: Wed Nov 15 16:01:29 2023 -0800 Remove `AddUnverifiedTx` from `Builder` (#2311) commit e8ef4ad Author: Dhruba Basu <[email protected]> Date: Wed Nov 15 14:15:17 2023 -0800 Move `AddUnverifiedTx` logic to `network.IssueTx` (#2310) commit dcc6ea8 Author: Stephen Buttolph <[email protected]> Date: Wed Nov 15 17:13:19 2023 -0500 Use zap.Stringer rather than zap.Any (#2320) commit 44f3aba Author: Stephen Buttolph <[email protected]> Date: Wed Nov 15 17:12:57 2023 -0500 Replace unique slices with sets in the engine interface (#2317) commit d00b67f Author: Stephen Buttolph <[email protected]> Date: Wed Nov 15 11:43:17 2023 -0500 Simplify avalanche bootstrapping (#2286) commit 5dff153 Author: Dhruba Basu <[email protected]> Date: Tue Nov 14 12:47:06 2023 -0800 Add `VerifyTx` to `executor.Manager` (#2293) commit 29f86e9 Author: marun <[email protected]> Date: Tue Nov 14 21:25:25 2023 +0100 e2e: More fixture refinement in support of coreth integration testing (#2275) commit 72d2fae Author: Dhruba Basu <[email protected]> Date: Tue Nov 14 10:26:39 2023 -0800 Add `recentTxsLock` to platform `network` struct (#2294) commit eb21b42 Author: Dhruba Basu <[email protected]> Date: Tue Nov 14 10:24:01 2023 -0800 Move management of platformvm preferred block to `executor.Manager` (#2292) commit 7f70fcf Author: Stephen Buttolph <[email protected]> Date: Mon Nov 13 15:18:34 2023 -0500 Simplify get server creation (#2285) Co-authored-by: Dan Laine <[email protected]> commit baf0ef7 Author: Dan Laine <[email protected]> Date: Mon Nov 13 10:33:31 2023 -0500 `merkledb` -- Add `Clearer` interface (#2277) commit b8746de Author: Dhruba Basu <[email protected]> Date: Thu Nov 9 16:21:04 2023 -0800 Embed `noop` handler for all unhandled messages (#2288) commit 86201ae Author: David Boehm <[email protected]> Date: Thu Nov 9 14:08:10 2023 -0500 Remove sentinel node from MerkleDB proofs (#2106) Signed-off-by: David Boehm <[email protected]> Co-authored-by: Stephen Buttolph <[email protected]> Co-authored-by: Dan Laine <[email protected]> commit 094ce50 Author: Joshua Kim <[email protected]> Date: Thu Nov 9 13:58:28 2023 -0500 Remove Lazy Initialize on Node (#1384) Signed-off-by: Joshua Kim <[email protected]> Co-authored-by: Dan Laine <[email protected]> commit e3f1212 Author: Alberto Benegiamo <[email protected]> Date: Thu Nov 9 10:08:59 2023 -0700 Genesis validators cleanup (#2282) commit 151621f Author: Alberto Benegiamo <[email protected]> Date: Thu Nov 9 09:33:42 2023 -0700 Cleanup `ids.NodeID` usage (#2280) commit ebaf9d4 Author: Dhruba Basu <[email protected]> Date: Wed Nov 8 18:08:23 2023 -0500 Move `DropExpiredStakerTxs` to platformvm mempool (#2279) commit c94ff4e Author: David Boehm <[email protected]> Date: Wed Nov 8 17:55:02 2023 -0500 MerkleDB:Naming and comments cleanup (#2274) Co-authored-by: Dan Laine <[email protected]> commit bcd4a94 Author: Dhruba Basu <[email protected]> Date: Wed Nov 8 17:28:33 2023 -0500 Cleanup platformvm mempool errs (#2278) commit aba404e Author: marun <[email protected]> Date: Wed Nov 8 22:54:42 2023 +0100 e2e: Refactor suite setup and helpers to tests/fixture/e2e for reuse by coreth (#2265) commit fc95834 Author: Dhruba Basu <[email protected]> Date: Wed Nov 8 16:41:39 2023 -0500 `mempool.NewMempool` -> `mempool.New` (#2276) commit 93d88c0 Author: Dhruba Basu <[email protected]> Date: Wed Nov 8 15:02:10 2023 -0500 Return if element was deleted from `Hashmap` (#2271) Co-authored-by: Dan Laine <[email protected]> commit 1329a59 Author: Dan Laine <[email protected]> Date: Wed Nov 8 12:56:27 2023 -0500 Add fuzz test for `NewIteratorWithStartAndPrefix` (#1992) Co-authored-by: Alberto Benegiamo <[email protected]> commit 22f3c89 Author: Dan Laine <[email protected]> Date: Tue Nov 7 19:12:17 2023 -0500 `merkledb` -- remove unneeded var declarations (#2269) commit 683fcfa Author: Dan Laine <[email protected]> Date: Tue Nov 7 17:36:20 2023 -0500 Add read-only database flag (`--db-read-only`) (#2266) commit 52f93c8 Author: Dan Laine <[email protected]> Date: Tue Nov 7 17:34:19 2023 -0500 `merkledb` -- fix nil check in test (#2268) commit 1faec38 Author: Dan Laine <[email protected]> Date: Tue Nov 7 17:34:09 2023 -0500 `merkledb` -- rename nit (#2267) commit cdcfb5b Author: felipemadero <[email protected]> Date: Tue Nov 7 17:06:59 2023 -0300 Use extended public key to derive ledger addresses (#2246) Signed-off-by: felipemadero <[email protected]> Co-authored-by: Dan Laine <[email protected]> Co-authored-by: Stephen Buttolph <[email protected]> commit 7490a92 Author: Joshua Kim <[email protected]> Date: Mon Nov 6 15:39:23 2023 -0500 Document p2p package (#2254) Signed-off-by: Joshua Kim <[email protected]> Co-authored-by: Stephen Buttolph <[email protected]> commit 10bd428 Author: Dhruba Basu <[email protected]> Date: Mon Nov 6 14:49:45 2023 -0500 Remove unused `UnsortedEquals` function (#2264) commit e710899 Author: David Boehm <[email protected]> Date: Mon Nov 6 13:36:34 2023 -0500 Remove Token constants information from keys (#2197) Signed-off-by: David Boehm <[email protected]> Signed-off-by: Dan Laine <[email protected]> Co-authored-by: Darioush Jalali <[email protected]> Co-authored-by: Dan Laine <[email protected]> commit 558d8fb Author: vuittont60 <[email protected]> Date: Mon Nov 6 22:26:43 2023 +0800 Fix typos in docs (#2261) Signed-off-by: vuittont60 <[email protected]> commit a8db08e Author: marun <[email protected]> Date: Mon Nov 6 15:26:27 2023 +0100 e2e: Make NewWallet and NewEthclient regular functions (#2262) commit aaed8f3 Author: Stephen Buttolph <[email protected]> Date: Sat Nov 4 17:29:12 2023 -0400 Track all subnet validator sets in the validator manager (#2253) commit cec1cd1 Author: Stephen Buttolph <[email protected]> Date: Fri Nov 3 19:19:26 2023 -0400 Require poll metrics to be registered (#2260) commit e4cb2cd Author: Dan Laine <[email protected]> Date: Fri Nov 3 17:33:44 2023 -0400 Cleanup `ipcs` `Socket` test (#2257) commit 437ade8 Author: marun <[email protected]> Date: Fri Nov 3 21:45:12 2023 +0100 Switch to using require.TestingT interface in SenderTest struct (#2258) commit 11f1b55 Author: DoTheBestToGetTheBest <[email protected]> Date: Thu Nov 2 15:41:47 2023 -0700 feat(api) : Peers function to return the PrimaryAlias of the chainID (#2251) Signed-off-by: DoTheBestToGetTheBest <[email protected]> Co-authored-by: Stephen Buttolph <[email protected]> commit c174c62 Author: Stephen Buttolph <[email protected]> Date: Thu Nov 2 16:20:03 2023 -0400 Return log levels from admin.SetLoggerLevel (#2250) commit 20f3580 Author: Stephen Buttolph <[email protected]> Date: Wed Nov 1 22:11:47 2023 -0400 Update versions for v1.10.15 (#2245) commit 36d1630 Author: Cesar <[email protected]> Date: Wed Nov 1 22:44:14 2023 -0300 Add nullable option to codec (#2171) Signed-off-by: Cesar <[email protected]> Co-authored-by: Stephen Buttolph <[email protected]> Co-authored-by: Dan Laine <[email protected]> commit 4957ccb Author: Dan Laine <[email protected]> Date: Tue Oct 31 18:38:57 2023 -0400 Add `pebble` as valid value for `--db-type`. (#2244) Signed-off-by: Dan Laine <[email protected]> Co-authored-by: Dhruba Basu <[email protected]> Co-authored-by: Stephen Buttolph <[email protected]> commit 047d493 Author: Dhruba Basu <[email protected]> Date: Tue Oct 31 18:14:14 2023 -0400 Add `BaseTx` support to platformvm (#2232) Signed-off-by: Dhruba Basu <[email protected]> commit 1f9df8f Author: Dan Laine <[email protected]> Date: Tue Oct 31 17:10:05 2023 -0400 Remove `database.Manager` (#2239) Signed-off-by: Dan Laine <[email protected]> commit 8d15c22 Author: Stephen Buttolph <[email protected]> Date: Tue Oct 31 13:28:49 2023 -0400 Document host and port behavior in help text (#2236) commit 76d756f Author: Joshua Kim <[email protected]> Date: Tue Oct 31 11:43:13 2023 -0400 Remove error from Router AppGossip (#2238) Signed-off-by: Joshua Kim <[email protected]> commit 5b96789 Author: Joshua Kim <[email protected]> Date: Mon Oct 30 16:41:51 2023 -0400 P2P AppRequestFailed protobuf definition (#2111) Signed-off-by: Joshua Kim <[email protected]> Co-authored-by: Stephen Buttolph <[email protected]> commit 826f941 Author: Dhruba Basu <[email protected]> Date: Fri Oct 27 19:41:19 2023 -0400 Fix test typos (#2233) Signed-off-by: marun <[email protected]> Co-authored-by: marun <[email protected]> commit 66375f5 Author: Dhruba Basu <[email protected]> Date: Fri Oct 27 18:44:34 2023 -0400 Trim down size of secp256k1 `Factory` struct (#2223) Signed-off-by: Dhruba Basu <[email protected]> commit 42d4e3e Author: Dhruba Basu <[email protected]> Date: Fri Oct 27 17:44:38 2023 -0400 Enable `perfsprint` linter (#2229) commit b83af9b Author: Dhruba Basu <[email protected]> Date: Fri Oct 27 17:42:03 2023 -0400 Add `utils.Err` helper (#2212) Signed-off-by: Dhruba Basu <[email protected]> Signed-off-by: Joshua Kim <[email protected]>
Why this should be merged
We're working on removing the
common.Bootstrapper
this is a large refactor that separates the logical bootstrapping algorithm from the engine implementation.How this works
Refactors the bootstrapping implementation into a simple to use datastructure.
How this was tested
Added extensive tests + CI