chore: upgrade to go-f3 v0.8.3 (#12941)

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.
This commit is contained in:
Masih H. Derkani
2025-03-17 17:34:33 +00:00
committed by GitHub
parent 096641772f
commit 79206a00eb
21 changed files with 230 additions and 58 deletions

View File

@ -16,7 +16,7 @@
- chore: switch to pure-go zstd decoder for snapshot imports. ([filecoin-project/lotus#12857](https://github.com/filecoin-project/lotus/pull/12857))
- feat: automatically detect if the genesis is zstd compressed. ([filecoin-project/lotus#12885](https://github.com/filecoin-project/lotus/pull/12885)
- `lotus send` now supports `--csv` option for sending multiple transactions. ([filecoin-project/lotus#12892](https://github.com/filecoin-project/lotus/pull/12892))
- chore: upgrade to the latest go-f3 and allow F3 chain exchange topics ([filecoin-project/lotus#12893](https://github.com/filecoin-project/lotus/pull/12893)
- chore: upgrade to go-f3 `v.0.8.3`
- chore: upgrade to a minimum Golang version of `1.23.6` ([filecoin-project/lotus#12910](https://github.com/filecoin-project/lotus/pull/12910)
- feat: add a `LOTUS_DISABLE_F3_ACTIVATION` enviroment variable allowing disabling F3 activation for a specific contract address or epoch ([filecoin-project/lotus#12920](https://github.com/filecoin-project/lotus/pull/12920)). The `LOTUS_DISABLE_F3` env-var has been renamed to `LOTUS_DISABLE_F3_SUBSYSTEM` to distinguish it from the other F3-related environment variables: `LOTUS_DISABLE_F3_PASSIVE_TESTING` and `LOTUS_DISABLE_F3_ACTIVATION`.
- feat: add `GenesisTimestamp` field to `StateGetNetworkParams` response ([filecoin-project/lotus#12925](https://github.com/filecoin-project/lotus/pull/12925))

View File

@ -1,5 +1,5 @@
#####################################
FROM golang:1.23.6-bullseye AS lotus-builder
FROM golang:1.23.7-bullseye AS lotus-builder
MAINTAINER Lotus Development Team
RUN apt-get update && apt-get install -y ca-certificates build-essential clang ocl-icd-opencl-dev ocl-icd-libopencl1 jq libhwloc-dev

View File

@ -1 +1 @@
1.23.6
1.23.7

View File

@ -58,10 +58,10 @@ For other distributions you can find the required dependencies [here.](https://l
#### Go
To build Lotus, you need a working installation of [Go 1.23.6 or higher](https://golang.org/dl/):
To build Lotus, you need a working installation of [Go 1.23.7 or higher](https://golang.org/dl/):
```bash
wget -c https://golang.org/dl/go1.23.6.linux-amd64.tar.gz -O - | sudo tar -xz -C /usr/local
wget -c https://golang.org/dl/go1.23.7.linux-amd64.tar.gz -O - | sudo tar -xz -C /usr/local
```
**TIP:**

View File

@ -1031,7 +1031,7 @@ type FullNode interface {
// it's enabled, and an error when disabled entirely.
F3IsRunning(ctx context.Context) (bool, error) //perm:read
// F3GetProgress returns the progress of the current F3 instance in terms of instance ID, round and phase.
F3GetProgress(ctx context.Context) (gpbft.Instant, error) //perm:read
F3GetProgress(ctx context.Context) (gpbft.InstanceProgress, error) //perm:read
// F3ListParticipants returns the list of miners that are currently participating in F3 via this node.
F3ListParticipants(ctx context.Context) ([]F3Participant, error) //perm:read
}

View File

@ -105,9 +105,7 @@ func init() {
addExample(f3Lease)
addExample(&f3Lease)
f3Cert := certs.FinalityCertificate{
GPBFTInstance: 0,
ECChain: &gpbft.ECChain{
ecchain := &gpbft.ECChain{
TipSets: []*gpbft.TipSet{
{
Epoch: 0,
@ -115,7 +113,10 @@ func init() {
PowerTable: c,
},
},
},
}
f3Cert := certs.FinalityCertificate{
GPBFTInstance: 0,
ECChain: ecchain,
SupplementalData: gpbft.SupplementalData{
PowerTable: c,
},
@ -459,6 +460,14 @@ func init() {
addExample(&manifest.Manifest{})
addExample(gpbft.NetworkName("filecoin"))
addExample(gpbft.ActorID(1000))
addExample(gpbft.InstanceProgress{
Instant: gpbft.Instant{
ID: 1413,
Round: 1,
Phase: gpbft.COMMIT_PHASE,
},
Input: ecchain,
})
}
func GetAPIType(name, pkg string) (i interface{}, t reflect.Type, permStruct []reflect.Type) {

View File

@ -1321,10 +1321,10 @@ func (mr *MockFullNodeMockRecorder) F3GetOrRenewParticipationTicket(arg0, arg1,
}
// F3GetProgress mocks base method.
func (m *MockFullNode) F3GetProgress(arg0 context.Context) (gpbft.Instant, error) {
func (m *MockFullNode) F3GetProgress(arg0 context.Context) (gpbft.InstanceProgress, error) {
m.ctrl.T.Helper()
ret := m.ctrl.Call(m, "F3GetProgress", arg0)
ret0, _ := ret[0].(gpbft.Instant)
ret0, _ := ret[0].(gpbft.InstanceProgress)
ret1, _ := ret[1].(error)
return ret0, ret1
}

View File

@ -274,7 +274,7 @@ type FullNodeMethods struct {
F3GetOrRenewParticipationTicket func(p0 context.Context, p1 address.Address, p2 F3ParticipationTicket, p3 uint64) (F3ParticipationTicket, error) `perm:"sign"`
F3GetProgress func(p0 context.Context) (gpbft.Instant, error) `perm:"read"`
F3GetProgress func(p0 context.Context) (gpbft.InstanceProgress, error) `perm:"read"`
F3IsRunning func(p0 context.Context) (bool, error) `perm:"read"`
@ -2239,15 +2239,15 @@ func (s *FullNodeStub) F3GetOrRenewParticipationTicket(p0 context.Context, p1 ad
return *new(F3ParticipationTicket), ErrNotSupported
}
func (s *FullNodeStruct) F3GetProgress(p0 context.Context) (gpbft.Instant, error) {
func (s *FullNodeStruct) F3GetProgress(p0 context.Context) (gpbft.InstanceProgress, error) {
if s.Internal.F3GetProgress == nil {
return *new(gpbft.Instant), ErrNotSupported
return *new(gpbft.InstanceProgress), ErrNotSupported
}
return s.Internal.F3GetProgress(p0)
}
func (s *FullNodeStub) F3GetProgress(p0 context.Context) (gpbft.Instant, error) {
return *new(gpbft.Instant), ErrNotSupported
func (s *FullNodeStub) F3GetProgress(p0 context.Context) (gpbft.InstanceProgress, error) {
return *new(gpbft.InstanceProgress), ErrNotSupported
}
func (s *FullNodeStruct) F3IsRunning(p0 context.Context) (bool, error) {

View File

@ -7611,7 +7611,10 @@
"MaximumPollInterval": 0
},
"PubSub": {
"CompressionEnabled": false
"CompressionEnabled": false,
"ChainCompressionEnabled": false,
"GMessageSubscriptionBufferSize": 0,
"ValidatedMessageBufferSize": 0
},
"ChainExchange": {
"SubscriptionBufferSize": 0,
@ -7621,6 +7624,15 @@
"MaxWantedChainsPerInstance": 0,
"RebroadcastInterval": 0,
"MaxTimestampAge": 0
},
"PartialMessageManager": {
"PendingDiscoveredChainsBufferSize": 0,
"PendingPartialMessagesBufferSize": 0,
"PendingChainBroadcastsBufferSize": 0,
"PendingInstanceRemovalBufferSize": 0,
"CompletedMessagesBufferSize": 0,
"MaxBufferedMessagesPerInstance": 0,
"MaxCachedValidatedMessagesPerInstance": 0
}
}
],
@ -7801,6 +7813,40 @@
"NetworkName": {
"type": "string"
},
"PartialMessageManager": {
"additionalProperties": false,
"properties": {
"CompletedMessagesBufferSize": {
"title": "number",
"type": "number"
},
"MaxBufferedMessagesPerInstance": {
"title": "number",
"type": "number"
},
"MaxCachedValidatedMessagesPerInstance": {
"title": "number",
"type": "number"
},
"PendingChainBroadcastsBufferSize": {
"title": "number",
"type": "number"
},
"PendingDiscoveredChainsBufferSize": {
"title": "number",
"type": "number"
},
"PendingInstanceRemovalBufferSize": {
"title": "number",
"type": "number"
},
"PendingPartialMessagesBufferSize": {
"title": "number",
"type": "number"
}
},
"type": "object"
},
"Pause": {
"type": "boolean"
},
@ -7811,8 +7857,19 @@
"PubSub": {
"additionalProperties": false,
"properties": {
"ChainCompressionEnabled": {
"type": "boolean"
},
"CompressionEnabled": {
"type": "boolean"
},
"GMessageSubscriptionBufferSize": {
"title": "number",
"type": "number"
},
"ValidatedMessageBufferSize": {
"title": "number",
"type": "number"
}
},
"type": "object"
@ -7927,20 +7984,37 @@
},
{
"name": "Filecoin.F3GetProgress",
"description": "```go\nfunc (s *FullNodeStruct) F3GetProgress(p0 context.Context) (gpbft.Instant, error) {\n\tif s.Internal.F3GetProgress == nil {\n\t\treturn *new(gpbft.Instant), ErrNotSupported\n\t}\n\treturn s.Internal.F3GetProgress(p0)\n}\n```",
"description": "```go\nfunc (s *FullNodeStruct) F3GetProgress(p0 context.Context) (gpbft.InstanceProgress, error) {\n\tif s.Internal.F3GetProgress == nil {\n\t\treturn *new(gpbft.InstanceProgress), ErrNotSupported\n\t}\n\treturn s.Internal.F3GetProgress(p0)\n}\n```",
"summary": "F3GetProgress returns the progress of the current F3 instance in terms of instance ID, round and phase.\n",
"paramStructure": "by-position",
"params": [],
"result": {
"name": "gpbft.Instant",
"description": "gpbft.Instant",
"name": "gpbft.InstanceProgress",
"description": "gpbft.InstanceProgress",
"summary": "",
"schema": {
"examples": [
{
"ID": 42,
"Round": 42,
"Phase": 0
"ID": 1413,
"Round": 1,
"Phase": 4,
"Input": [
{
"Key": [
{
"/": "bafy2bzacea3wsdh6y3a36tb3skempjoxqpuyompjbmfeyf34fi3uy6uue42v4"
},
{
"/": "bafy2bzacebp3shtrn43k7g3unredz7fxn4gj533d3o43tqn2p2ipxxhrvchve"
}
],
"Commitments": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=",
"Epoch": 0,
"PowerTable": {
"/": "bafy2bzacea3wsdh6y3a36tb3skempjoxqpuyompjbmfeyf34fi3uy6uue42v4"
}
}
]
}
],
"additionalProperties": false,
@ -7949,6 +8023,39 @@
"title": "number",
"type": "number"
},
"Input": {
"items": {
"additionalProperties": false,
"properties": {
"Commitments": {
"items": {
"description": "Number is a number",
"title": "number",
"type": "number"
},
"maxItems": 32,
"minItems": 32,
"type": "array"
},
"Epoch": {
"title": "number",
"type": "number"
},
"Key": {
"media": {
"binaryEncoding": "base64"
},
"type": "string"
},
"PowerTable": {
"title": "Content Identifier",
"type": "string"
}
},
"type": "object"
},
"type": "array"
},
"Phase": {
"title": "number",
"type": "number"

View File

@ -73,6 +73,7 @@ func NewManifest(
},
PubSub: manifest.DefaultPubSubConfig,
ChainExchange: manifest.DefaultChainExchangeConfig,
PartialMessageManager: manifest.DefaultPartialMessageManagerConfig,
}
}

View File

@ -79,7 +79,7 @@ func New(mctx helpers.MetricsCtx, lc fx.Lifecycle, params F3Params) (*F3, error)
// maxLeasableInstances is the maximum number of leased F3 instances this node
// would give out.
const maxLeasableInstances = 5
status := func() (*manifest.Manifest, gpbft.Instant) {
status := func() (*manifest.Manifest, gpbft.InstanceProgress) {
return module.Manifest(), module.Progress()
}
fff := &F3{
@ -215,7 +215,7 @@ func (fff *F3) IsRunning() bool {
return fff.inner.IsRunning()
}
func (fff *F3) Progress() gpbft.Instant {
func (fff *F3) Progress() gpbft.InstanceProgress {
return fff.inner.Progress()
}

View File

@ -15,7 +15,7 @@ import (
"github.com/filecoin-project/lotus/api"
)
type f3Status = func() (*manifest.Manifest, gpbft.Instant)
type f3Status = func() (*manifest.Manifest, gpbft.InstanceProgress)
type leaser struct {
mutex sync.Mutex

View File

@ -198,10 +198,12 @@ var testManifest = NewManifest("fakenet", 30, 30, 30*time.Second, cid.Undef)
type mockProgress struct{ currentInstance uint64 }
func (m *mockProgress) Progress() (*manifest.Manifest, gpbft.Instant) {
return testManifest, gpbft.Instant{
func (m *mockProgress) Progress() (*manifest.Manifest, gpbft.InstanceProgress) {
return testManifest, gpbft.InstanceProgress{
Instant: gpbft.Instant{
ID: m.currentInstance,
Round: 0,
Phase: gpbft.INITIAL_PHASE,
},
}
}

View File

@ -1,6 +1,6 @@
{
"Pause": false,
"ProtocolVersion": 5,
"ProtocolVersion": 7,
"InitialInstance": 0,
"BootstrapEpoch": 5000000,
"NetworkName": "filecoin",
@ -44,7 +44,10 @@
"MaximumPollInterval": 120000000000
},
"PubSub": {
"CompressionEnabled": false
"CompressionEnabled": true,
"ChainCompressionEnabled": true,
"GMessageSubscriptionBufferSize": 128,
"ValidatedMessageBufferSize": 128
},
"ChainExchange": {
"SubscriptionBufferSize": 32,
@ -54,5 +57,14 @@
"MaxWantedChainsPerInstance": 1000,
"RebroadcastInterval": 2000000000,
"MaxTimestampAge": 8000000000
},
"PartialMessageManager": {
"PendingDiscoveredChainsBufferSize": 100,
"PendingPartialMessagesBufferSize": 100,
"PendingChainBroadcastsBufferSize": 100,
"PendingInstanceRemovalBufferSize": 10,
"CompletedMessagesBufferSize": 100,
"MaxBufferedMessagesPerInstance": 25000,
"MaxCachedValidatedMessagesPerInstance": 25000
}
}

View File

@ -1 +1 @@
00000000000000000000000000000000000000000000000000000000004C4B400000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000023D8554C172DA3014BCF3150CE78E079B06486FC1D0363321A590B6874E0FB2FC8C35C8922BC90D6926FFDE27D9C27620539F9EB52B7977DF939F07C3E168432A0DA30FC38C700DEFDC8A924652C9BF83D24C0AC4AEDCFAAD6086117E2BB42182DA3D63B7BE90D268A348B92A25CD2D7DEC1E07DE837994EA704F0ABB6194310E54323172E0EA58724699D9C84750088B8AF3FA537B2115AC620FB4E21A110E78200987EEB65816053306E04ECA4342E801C1B0D6111343F36FE50D677B5180301669747AA99FCA24B3EBCFF882AF4BE086E0EBB4C7F2C0024FFF9265E8408AFAB8A881BF568433F3E458EB8A1B861E9D89B021ACC9D1EA233990742B2B916A1FB1D5991326B003A5D490DE81D89BDC99F01FDF42A2244929D1C64A9059B620AE7F6732CF991DB161307993B62B152AB3ED0DC2374968A2F7D131125FEAA6C66D861B504CDAA326E3D7F23E32E17242F0BA1B2D79EA85E653B52E9740999DC846826FFF4FC718B69E6C39BDF67514446D399FFA7A12CC425FBF0FE6A7ADD3209AF97A165CB9EA5723E233E6D219ADBE95BF568B51159C9288411996314A0CAC8E3427620F6D34311A14660BBF2BD0E68115202B5377FA55503B507F409D11A767C43513ACA88A8DE478470DEE22FC62F2D8BA0BBC30BAD0CB4D95ECAAA4235A16381CDA3661256CFCA9BF9CAD693BC0E776F1184D152B8DED5F9565A076756293A895E5F65E187A84FC5FE774734E57BBC6974C53893941EA0ED138799D1F55D873FF83A0EDFFF13A23DF4929BA10A6ED099E509437CEF0BC17E3E065F00F000000
00000000000000000000000000000000000000000000000000000000004c4b40000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000002a38554c172da3010bde72b18ce190f360d90de82a16966424a214d0f9d1e16790d9ac8922bcb4dd24cfebd2bd9c63698810323ebbd5dbd7dbbd2fb45afd75f429e61ff732f0691e1a5dbd1ca28a6c413ea8c2b49d8d8eddf496e38883b991990ccc60cdcfe542993190de93c556c47db5703f773e0039a17a59f1f20b101fd980b648acbbe03e7afa9e08c9ba57a414db0cc85288eda4aa5711e56402dae14e18047d8086c86852a49b83188f74a3d6f803d13e8173a42306cf723bd117c2b1394c622a5ce4aea6dba89edfe3b7dd0e70c8501fa1cb5581530a5ecdfe2982a50b2481794f0f71c04376f8eb5c885e154a32bc22f090b78b5fa608710ad542ea3cc7a5682e10eb8a40ea42ac3e81ee5d6ec5c11d5e12bdc68051183cc58092a8ea7e0fa7724f398d910eb7bc393b475aa49996dafe79f245111ad430744fc289a1ad61e2e517365530d0787f2be70e97c22f0ba692dbcb54cab5cb555ce90713b91a584aafdbf1ca357d76497a3eb6a1d7841bd9c8caaf5d01bfbd5fa9337d9878ebc605cadc7de955bfd2e457c255f1aa3d52ee59fd562748e7b2742d486c79c81c1f92bdb81dc626d4d48054ab3c23f3966e69127a8725374fac0a835eabfa88f88a323e2824b9ee4c95209baa386a240743a4fadebe0f941472f97f9669d6f1aa25542c391d926cca5b53f2a6b6e4eef39d2ed8240d82265ce98e6a9b12dcde318f5ba30d10f2625f5897c8dc8bea80c39a4d556db838f4d3e79c430a8cd70b11d578da0eaaddbdfd7fd8352e0339e3145ddc1c825c968de1bcfa3dff2fc2790d9e7788d8bd6e84dd0d1423b099421496f5cc1938ee681b64f6569dd0224fdebe6dd941197dbc312da16ef4f2cd9ed9c67c82ee1b4aae70cb9f2638589a2aa0fc897f5fc09ace7e1544ef2a7406a66dbf2e0aa6566086c87d1e1b475c558772f3efe030000000000000000000000000000000000000000000000000000000000

View File

@ -31,6 +31,9 @@ Manifest:
Certificate Exchange Max Poll Interval: {{.CertificateExchange.MaximumPollInterval}}
PubSub Compression Enabled: {{.PubSub.CompressionEnabled}}
PubSub Chain Compression Enabled: {{.PubSub.ChainCompressionEnabled}}
PubSub GMessage Subscription Buffer Size: {{.PubSub.GMessageSubscriptionBufferSize}}
PubSub Validated Message Buffer Size: {{.PubSub.ValidatedMessageBufferSize}}
Chain Exchange Subscription Buffer Size: {{.ChainExchange.SubscriptionBufferSize}}
Chain Exchange Max Chain Length: {{.ChainExchange.MaxChainLength}}
@ -39,3 +42,11 @@ Manifest:
Chain Exchange Max Wanted Chains Per Instance: {{.ChainExchange.MaxWantedChainsPerInstance}}
Chain Exchange Rebroadcast Interval: {{.ChainExchange.RebroadcastInterval}}
Chain Exchange Max Timestamp Age: {{.ChainExchange.MaxTimestampAge}}
Partial Message Pending Discovered Chains Buffer Size: {{.PartialMessageManager.PendingDiscoveredChainsBufferSize}}
Partial Message Pending Partial Messages Buffer Size: {{.PartialMessageManager.PendingPartialMessagesBufferSize}}
Partial Message Pending Chain Broadcasts Buffer Size: {{.PartialMessageManager.PendingChainBroadcastsBufferSize}}
Partial Message Pending Instance Removal Buffer Size: {{.PartialMessageManager.PendingInstanceRemovalBufferSize}}
Partial Message Completed Messages Buffer Size: {{.PartialMessageManager.CompletedMessagesBufferSize}}
Partial Message Max Buffered Messages Per Instance: {{.PartialMessageManager.MaxBufferedMessagesPerInstance}}
Partial Message Max Cached Validated Messages Per Instance: {{.PartialMessageManager.MaxCachedValidatedMessagesPerInstance}}

View File

@ -2648,7 +2648,10 @@ Response:
"MaximumPollInterval": 0
},
"PubSub": {
"CompressionEnabled": false
"CompressionEnabled": false,
"ChainCompressionEnabled": false,
"GMessageSubscriptionBufferSize": 0,
"ValidatedMessageBufferSize": 0
},
"ChainExchange": {
"SubscriptionBufferSize": 0,
@ -2658,6 +2661,15 @@ Response:
"MaxWantedChainsPerInstance": 0,
"RebroadcastInterval": 0,
"MaxTimestampAge": 0
},
"PartialMessageManager": {
"PendingDiscoveredChainsBufferSize": 0,
"PendingPartialMessagesBufferSize": 0,
"PendingChainBroadcastsBufferSize": 0,
"PendingInstanceRemovalBufferSize": 0,
"CompletedMessagesBufferSize": 0,
"MaxBufferedMessagesPerInstance": 0,
"MaxCachedValidatedMessagesPerInstance": 0
}
}
```
@ -2708,9 +2720,26 @@ Inputs: `null`
Response:
```json
{
"ID": 42,
"Round": 42,
"Phase": 0
"ID": 1413,
"Round": 1,
"Phase": 4,
"Input": [
{
"Key": [
{
"/": "bafy2bzacea3wsdh6y3a36tb3skempjoxqpuyompjbmfeyf34fi3uy6uue42v4"
},
{
"/": "bafy2bzacebp3shtrn43k7g3unredz7fxn4gj533d3o43tqn2p2ipxxhrvchve"
}
],
"Commitments": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=",
"Epoch": 0,
"PowerTable": {
"/": "bafy2bzacea3wsdh6y3a36tb3skempjoxqpuyompjbmfeyf34fi3uy6uue42v4"
}
}
]
}
```

6
go.mod
View File

@ -1,6 +1,6 @@
module github.com/filecoin-project/lotus
go 1.23.6
go 1.23.7
retract v1.14.0 // Accidentally force-pushed tag, use v1.14.1+ instead.
@ -45,7 +45,7 @@ require (
github.com/filecoin-project/go-cbor-util v0.0.1
github.com/filecoin-project/go-commp-utils/v2 v2.1.0
github.com/filecoin-project/go-crypto v0.1.0
github.com/filecoin-project/go-f3 v0.8.2
github.com/filecoin-project/go-f3 v0.8.3
github.com/filecoin-project/go-fil-commcid v0.2.0
github.com/filecoin-project/go-hamt-ipld/v3 v3.4.0
github.com/filecoin-project/go-jsonrpc v0.7.0
@ -157,7 +157,7 @@ require (
go.uber.org/zap v1.27.0
golang.org/x/crypto v0.35.0
golang.org/x/mod v0.23.0
golang.org/x/net v0.35.0
golang.org/x/net v0.36.0
golang.org/x/sync v0.11.0
golang.org/x/sys v0.30.0
golang.org/x/term v0.29.0

8
go.sum
View File

@ -280,8 +280,8 @@ github.com/filecoin-project/go-commp-utils/v2 v2.1.0/go.mod h1:NbxJYlhxtWaNhlVCj
github.com/filecoin-project/go-crypto v0.0.0-20191218222705-effae4ea9f03/go.mod h1:+viYnvGtUTgJRdy6oaeF4MTFKAfatX071MPDPBL11EQ=
github.com/filecoin-project/go-crypto v0.1.0 h1:Pob2MphoipMbe/ksxZOMcQvmBHAd3sI/WEqcbpIsGI0=
github.com/filecoin-project/go-crypto v0.1.0/go.mod h1:K9UFXvvoyAVvB+0Le7oGlKiT9mgA5FHOJdYQXEE8IhI=
github.com/filecoin-project/go-f3 v0.8.2 h1:oH1KOMvr4jGTvqUNfM7+4VcznJYjXa1z86Notp744nc=
github.com/filecoin-project/go-f3 v0.8.2/go.mod h1:dAqNQ59L/zxjt32KI5kM8gzPtN8odwYHTjNcEq5wp1s=
github.com/filecoin-project/go-f3 v0.8.3 h1:0ToWoqJDsunr+Jf945Upvk6rdXn8It5B5LcyiY1Ry1k=
github.com/filecoin-project/go-f3 v0.8.3/go.mod h1:KWksfw7CabMuL4ple/J52gK4soYBpTsL6i5WAgtJDqw=
github.com/filecoin-project/go-fil-commcid v0.2.0 h1:B+5UX8XGgdg/XsdUpST4pEBviKkFOw+Fvl2bLhSKGpI=
github.com/filecoin-project/go-fil-commcid v0.2.0/go.mod h1:8yigf3JDIil+/WpqR5zoKyP0jBPCOGtEqq/K1CcMy9Q=
github.com/filecoin-project/go-fil-commp-hashhash v0.2.0 h1:HYIUugzjq78YvV3vC6rL95+SfC/aSTVSnZSZiDV5pCk=
@ -1568,8 +1568,8 @@ golang.org/x/net v0.9.0/go.mod h1:d48xBJpPfHeWQsugry2m+kC02ZBRGRgulfHnEXEuWns=
golang.org/x/net v0.10.0/go.mod h1:0qNGK6F8kojg2nk9dLZ2mShWaEBan6FAoqfSigmmuDg=
golang.org/x/net v0.14.0/go.mod h1:PpSgVXXLK0OxS0F31C1/tv6XNguvCrnXIDrFMspZIUI=
golang.org/x/net v0.20.0/go.mod h1:z8BVo6PvndSri0LbOE3hAn0apkU+1YvI6E70E9jsnvY=
golang.org/x/net v0.35.0 h1:T5GQRQb2y08kTAByq9L4/bz8cipCdA8FbRTXewonqY8=
golang.org/x/net v0.35.0/go.mod h1:EglIi67kWsHKlRzzVMUD93VMSWGFOMSZgxFjparz1Qk=
golang.org/x/net v0.36.0 h1:vWF2fRbw4qslQsQzgFqZff+BItCvGFQqKzKIzx1rmoA=
golang.org/x/net v0.36.0/go.mod h1:bFmbeoIPfrw4sMHNhb4J9f6+tPziuGjq7Jk/38fxi1I=
golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U=
golang.org/x/oauth2 v0.0.0-20181017192945-9dcd33a902f4/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U=
golang.org/x/oauth2 v0.0.0-20181203162652-d668ce993890/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U=

View File

@ -478,6 +478,7 @@ func newTestManifest(networkName gpbft.NetworkName, bootstrapEpoch int64, blockt
},
PubSub: manifest.DefaultPubSubConfig,
ChainExchange: manifest.DefaultChainExchangeConfig,
PartialMessageManager: manifest.DefaultPartialMessageManagerConfig,
}
}

View File

@ -85,9 +85,9 @@ func (f3api *F3API) F3GetF3PowerTable(ctx context.Context, tsk types.TipSetKey)
return f3api.F3.GetF3PowerTable(ctx, tsk)
}
func (f3api *F3API) F3GetProgress(context.Context) (gpbft.Instant, error) {
func (f3api *F3API) F3GetProgress(context.Context) (gpbft.InstanceProgress, error) {
if f3api.F3 == nil {
return gpbft.Instant{}, api.ErrF3Disabled
return gpbft.InstanceProgress{}, api.ErrF3Disabled
}
return f3api.F3.Progress(), nil
}