Upgrade to go-f3 `v0.8.3`
Upgrade to the latest go-f3, to bubble up:
* various bug fixes
* extended manifest parameters for better control in passive testing
Note that the return type from F3GetProgress API has changed to now
include the input chain to an instance.
Update CLI templates to print the additional fields.
Upgrade to the latest go-f3 and allow F3 chain exchange topics
Upgrade to the latest `go-f3` and add the F3 chain exchange topics to
the allowed topic list for both static and dynamic manifests.
Fixes https://github.com/filecoin-project/go-f3/issues/809
* Implement F3 list participants API
Implement Lotus API to list the current miner IDs that are
participating.
* Include lease information to list participants API
Also return start and validity terms of the list participants API.
* Investigate intermittent F3 itest failures on CI
Repeat F3 itests on CI to investigate intermittent failures.
* Fix participation lease removal for wrong network
When manifest changes, depending on the timing it is possible for newly
generated valid leases to get removed if the sign message loop attempts
to sign messages that are as a result of progressing previous network.
Here is an example scenario in a specific order that was causing itests
to fail:
* participants get a lease for network A up to instance 5
* network A progresses to instance 6
* manifest changes the network name to B
* participants get a new lease for network B up to instance 5
* sign loop receives a message from network A, instance 6
* `getParticipantsByInstance` lazily removes leases since it only
checks the instance.
* the node ends up with no participants, and stuck.
To fix this:
1) check if participants asked for are within the current network, and
if not refuse to participate.
2) check network name, as well as instance, to lazily remove expired
leases.
* Add debug capability to F3 itests to print current progress
To aid debugging failing tests add option to print progress of all nodes
at every eventual assertion, disabled by default.
* Shorten GPBFT settings for a more responsive timing
Defaults are based on epoch of 30s and real RTT. Shorten Delta and
rebroadcast times.
* Remove F3 itest repetitions on CI now that saul goodman
See proof of the pudding:
* https://github.com/filecoin-project/lotus/actions/runs/11369403828/job/31626763159?pr=12597
* Update the changelog
* Address review comments
* Remove the sanity check that all nodes use the same initial manifest
1. Move it next to all the F3 code.
2. Make it look more like a "service" so I won't have to duplicate the
start/stop code in the itests.
3. Rename participator to participant. Not perfect, but it's a word.
4. Make all the constants public.
5. Only depend on the parts of the API we need (will help with unit testing).
* fix(f3): fix hot loop in F3 participation
* fix(f3): Correct lease expiration log message
* feat(f3): log not-before and not-after for new leases
* test(f3): make the f3-enabled test wait for at one lease to expire
---------
Signed-off-by: Jakub Sztandera <oss@kubuxu.com>
Co-authored-by: Steven Allen <steven@stebalien.com>
This patch:
1. Bootstraps F3 when we hit the `F3BootstrapEpoch` (when non-negative).
2. Refuses any/all dynamic manifests once we get within one finality of said epoch.
3. Sets the F3 network name for mainnet to "filecoin".
4. Refuses any/all dynamic manifests that don't start with the expected
network name prefix.
1. Reduce GPBFT delta to blockdelay/5 to match the expected mainnet
config and avoid timing out tests.
2. Make waiting for rebootstrap work in the presence of null tipsets.
3. Make waiting for new manifests a little more robust.
4. Increase the delay till we bootstrap to make sure all nodes are up
before we try to start GPBFT.
5. Reduce logging.
6. Avoid the RPC to reduce flakiness.