Skip to content

Commit f0305bd

Browse files
authored
Merge pull request #6399 from filecoin-project/feat/tow-f3-api
feat: add two api
2 parents c8ec50f + c659687 commit f0305bd

28 files changed

+1191
-330
lines changed

app/node/node.go

+4
Original file line numberDiff line numberDiff line change
@@ -251,6 +251,10 @@ func (node *Node) Stop(ctx context.Context) {
251251
}
252252

253253
node.Wallet().WalletGateway.Close()
254+
255+
if err := node.f3.Stop(ctx); err != nil {
256+
log.Warnf("error closing f3: %w", err)
257+
}
254258
}
255259

256260
// RunRPCAndWait start rpc server and listen to signal to exit

app/submodule/f3/f3_api.go

+28-18
Original file line numberDiff line numberDiff line change
@@ -4,11 +4,11 @@ import (
44
"context"
55
"errors"
66
"fmt"
7-
"time"
87

98
"github.com/filecoin-project/go-address"
109
"github.com/filecoin-project/go-f3/certs"
1110
"github.com/filecoin-project/go-f3/gpbft"
11+
"github.com/filecoin-project/go-f3/manifest"
1212
v1 "github.com/filecoin-project/venus/venus-shared/api/chain/v1"
1313
"github.com/filecoin-project/venus/venus-shared/types"
1414
)
@@ -21,28 +21,24 @@ type f3API struct {
2121

2222
var ErrF3Disabled = errors.New("f3 is disabled")
2323

24-
func (f3api *f3API) F3Participate(ctx context.Context,
25-
minerAddr address.Address,
26-
newLeaseExpiration time.Time,
27-
oldLeaseExpiration time.Time,
28-
) (bool, error) {
24+
func (f3api *f3API) F3GetOrRenewParticipationTicket(ctx context.Context, miner address.Address, previous types.F3ParticipationTicket, instances uint64) (types.F3ParticipationTicket, error) {
2925
if f3api.f3module.F3 == nil {
30-
log.Infof("F3Participate called for %v, F3 is disabled", minerAddr)
31-
return false, ErrF3Disabled
32-
}
33-
34-
if leaseDuration := time.Until(newLeaseExpiration); leaseDuration > 5*time.Minute {
35-
return false, fmt.Errorf("F3 participation lease too long: %v > 5 min", leaseDuration)
36-
} else if leaseDuration < 0 {
37-
return false, fmt.Errorf("F3 participation lease is in the past: %d < 0", leaseDuration)
26+
log.Infof("F3GetParticipationTicket called for %v, F3 is disabled", miner)
27+
return types.F3ParticipationTicket{}, types.ErrF3Disabled
3828
}
39-
40-
minerID, err := address.IDFromAddress(minerAddr)
29+
minerID, err := address.IDFromAddress(miner)
4130
if err != nil {
42-
return false, fmt.Errorf("miner address is not of ID type: %v: %w", minerID, err)
31+
return types.F3ParticipationTicket{}, fmt.Errorf("miner address is not of ID type: %v: %w", miner, err)
4332
}
33+
return f3api.f3module.F3.GetOrRenewParticipationTicket(ctx, minerID, previous, instances)
34+
}
4435

45-
return f3api.f3module.F3.Participate(ctx, minerID, newLeaseExpiration, oldLeaseExpiration), nil
36+
func (f3api *f3API) F3Participate(ctx context.Context, ticket types.F3ParticipationTicket) (types.F3ParticipationLease, error) {
37+
if f3api.f3module.F3 == nil {
38+
log.Infof("F3Participate called, F3 is disabled")
39+
return types.F3ParticipationLease{}, types.ErrF3Disabled
40+
}
41+
return f3api.f3module.F3.Participate(ctx, ticket)
4642
}
4743

4844
func (f3api *f3API) F3GetCertificate(ctx context.Context, instance uint64) (*certs.FinalityCertificate, error) {
@@ -72,3 +68,17 @@ func (f3api *f3API) F3GetF3PowerTable(ctx context.Context, tsk types.TipSetKey)
7268
}
7369
return f3api.f3module.F3.GetF3PowerTable(ctx, tsk)
7470
}
71+
72+
func (f3api *f3API) F3GetManifest(_ctx context.Context) (*manifest.Manifest, error) {
73+
if f3api.f3module.F3 == nil {
74+
return nil, ErrF3Disabled
75+
}
76+
return f3api.f3module.F3.GetManifest(), nil
77+
}
78+
79+
func (f3api *f3API) F3IsRunning(_ctx context.Context) (bool, error) {
80+
if f3api.f3module.F3 == nil {
81+
return false, ErrF3Disabled
82+
}
83+
return f3api.f3module.F3.IsRunning(), nil
84+
}

app/submodule/f3/f3_submodule.go

+20-2
Original file line numberDiff line numberDiff line change
@@ -32,16 +32,27 @@ func NewF3Submodule(ctx context.Context,
3232
F3: nil,
3333
}, nil
3434
}
35+
repoPath, err := repo.Path()
36+
if err != nil {
37+
return nil, err
38+
}
39+
40+
provider, err := vf3.NewManifestProvider(ctx, network.F3Cfg, chain.ChainReader, network.Pubsub, repo.MetaDatastore())
41+
if err != nil {
42+
return nil, err
43+
}
3544
m, err := vf3.New(ctx, vf3.F3Params{
36-
ManifestServerID: netConf.ManifestServerID,
45+
ManifestProvider: provider,
3746
PubSub: network.Pubsub,
3847
Host: network.Host,
3948
ChainStore: chain.ChainReader,
4049
StateManager: chain.Stmgr,
4150
Datastore: repo.MetaDatastore(),
4251
WalletSign: walletSign,
43-
ManifestProvider: vf3.NewManifestProvider(network.NetworkName, repo.MetaDatastore(), network.Pubsub, netConf),
4452
SyncerAPI: syncer.API(),
53+
Config: network.F3Cfg,
54+
RepoPath: repoPath,
55+
Net: network.API(),
4556
})
4657
if err != nil {
4758
return nil, err
@@ -55,3 +66,10 @@ func (m *F3Submodule) API() v1api.IF3 {
5566
f3module: m,
5667
}
5768
}
69+
70+
func (m *F3Submodule) Stop(ctx context.Context) error {
71+
if m.F3 == nil {
72+
return nil
73+
}
74+
return m.F3.Stop(ctx)
75+
}

app/submodule/network/network_submodule.go

+13-2
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,7 @@ import (
5050
"github.com/filecoin-project/venus/pkg/net/pubsub"
5151
"github.com/filecoin-project/venus/pkg/repo"
5252
appstate "github.com/filecoin-project/venus/pkg/state"
53+
"github.com/filecoin-project/venus/pkg/vf3"
5354
"github.com/filecoin-project/venus/venus-shared/types"
5455

5556
v0api "github.com/filecoin-project/venus/venus-shared/api/chain/v0"
@@ -90,7 +91,8 @@ type NetworkSubmodule struct { //nolint
9091

9192
indexMsgRelayCancelFunc libp2pps.RelayCancelFunc
9293

93-
cfg networkConfig
94+
cfg networkConfig
95+
F3Cfg *vf3.Config
9496
}
9597

9698
// API create a new network implement
@@ -145,6 +147,14 @@ func NewNetworkSubmodule(ctx context.Context,
145147
}
146148
}
147149

150+
var f3Cfg *vf3.Config
151+
if cfg.NetworkParams.F3Enabled {
152+
f3Cfg, err = vf3.NewConfig(networkName, cfg.NetworkParams)
153+
if err != nil {
154+
return nil, errors.Wrap(err, "failed to build f3 config")
155+
}
156+
}
157+
148158
// peer manager
149159
bootNodes, err := net.ParseAddresses(ctx, cfg.Bootstrap.Addresses)
150160
if err != nil {
@@ -181,7 +191,7 @@ func NewNetworkSubmodule(ctx context.Context,
181191
}
182192

183193
sk := net.NewScoreKeeper()
184-
gsub, err := net.NewGossipSub(ctx, peerHost, sk, networkName, cfg.NetworkParams.DrandSchedule, bootNodes, cfg.PubsubConfig.Bootstrapper, config.Repo().Config().NetworkParams.F3Enabled)
194+
gsub, err := net.NewGossipSub(ctx, peerHost, sk, networkName, cfg.NetworkParams.DrandSchedule, bootNodes, cfg.PubsubConfig.Bootstrapper, f3Cfg)
185195
if err != nil {
186196
return nil, errors.Wrap(err, "failed to set up network")
187197
}
@@ -240,6 +250,7 @@ func NewNetworkSubmodule(ctx context.Context,
240250
cfg: config,
241251
ScoreKeeper: sk,
242252
indexMsgRelayCancelFunc: indexMsgRelayCancelFunc,
253+
F3Cfg: f3Cfg,
243254
}, nil
244255
}
245256

go.mod

+7-1
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ require (
2727
github.com/filecoin-project/go-commp-utils v0.1.3
2828
github.com/filecoin-project/go-crypto v0.0.1
2929
github.com/filecoin-project/go-data-transfer/v2 v2.0.0-rc6
30-
github.com/filecoin-project/go-f3 v0.3.0
30+
github.com/filecoin-project/go-f3 v0.7.0
3131
github.com/filecoin-project/go-fil-commcid v0.1.0
3232
github.com/filecoin-project/go-fil-markets v1.28.2
3333
github.com/filecoin-project/go-jsonrpc v0.1.5
@@ -117,6 +117,9 @@ require (
117117
)
118118

119119
require (
120+
github.com/bits-and-blooms/bitset v1.13.0 // indirect
121+
github.com/consensys/bavard v0.1.13 // indirect
122+
github.com/consensys/gnark-crypto v0.12.1 // indirect
120123
github.com/filecoin-project/go-clock v0.1.0 // indirect
121124
github.com/go-task/slim-sprig/v3 v3.0.0 // indirect
122125
github.com/ipfs/go-blockservice v0.5.2 // indirect
@@ -126,6 +129,7 @@ require (
126129
github.com/ipfs/go-ipfs-exchange-interface v0.2.1 // indirect
127130
github.com/ipfs/go-merkledag v0.11.0 // indirect
128131
github.com/libp2p/go-libp2p-routing-helpers v0.7.3 // indirect
132+
github.com/mmcloughlin/addchain v0.4.0 // indirect
129133
github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 // indirect
130134
github.com/petar/GoLLRB v0.0.0-20210522233825-ae3b015fd3e9 // indirect
131135
github.com/pion/datachannel v1.5.6 // indirect
@@ -146,10 +150,12 @@ require (
146150
github.com/pion/webrtc/v3 v3.2.40 // indirect
147151
github.com/whyrusleeping/cbor v0.0.0-20171005072247-63513f603b11 // indirect
148152
github.com/whyrusleeping/go-logging v0.0.1 // indirect
153+
go.dedis.ch/kyber/v4 v4.0.0-pre2.0.20240924132404-4de33740016e // indirect
149154
go.uber.org/mock v0.4.0 // indirect
150155
gonum.org/v1/gonum v0.15.0 // indirect
151156
google.golang.org/genproto v0.0.0-20230629202037-9506855d4529 // indirect
152157
google.golang.org/genproto/googleapis/rpc v0.0.0-20240515191416-fc5f0ca64291 // indirect
158+
rsc.io/tmplfunc v0.0.3 // indirect
153159
)
154160

155161
require (

go.sum

+20-4
Original file line numberDiff line numberDiff line change
@@ -111,6 +111,8 @@ github.com/beorn7/perks v1.0.1 h1:VlbKKnNfV8bJzeqoa4cOKqO6bYr3WgKZxO8Z16+hsOM=
111111
github.com/beorn7/perks v1.0.1/go.mod h1:G2ZrVWU2WbWT9wwq4/hrbKbnv/1ERSJQ0ibhJ6rlkpw=
112112
github.com/bep/debounce v1.2.1 h1:v67fRdBA9UQu2NhLFXrSg0Brw7CexQekrBwDMM8bzeY=
113113
github.com/bep/debounce v1.2.1/go.mod h1:H8yggRPQKLUhUoqrJC1bO2xNya7vanpDl7xR3ISbCJ0=
114+
github.com/bits-and-blooms/bitset v1.13.0 h1:bAQ9OPNFYbGHV6Nez0tmNI0RiEu7/hxlYJRUA0wFAVE=
115+
github.com/bits-and-blooms/bitset v1.13.0/go.mod h1:7hO7Gc7Pp1vODcmWvKMRA9BNmbv6a/7QIWpPxHddWR8=
114116
github.com/bluele/gcache v0.0.0-20190518031135-bc40bd653833 h1:yCfXxYaelOyqnia8F/Yng47qhmfC9nKTRIbYRrRueq4=
115117
github.com/bluele/gcache v0.0.0-20190518031135-bc40bd653833/go.mod h1:8c4/i2VlovMO2gBnHGQPN5EJw+H0lx1u/5p+cgsXtCk=
116118
github.com/bradfitz/go-smtpd v0.0.0-20170404230938-deb6d6237625/go.mod h1:HYsPBTaaSFSlLx/70C2HPIMNZpVV8+vt/A+FMnYP11g=
@@ -144,8 +146,8 @@ github.com/chzyer/readline v0.0.0-20180603132655-2972be24d48e/go.mod h1:nSuG5e5P
144146
github.com/chzyer/test v0.0.0-20180213035817-a1ea475d72b1/go.mod h1:Q3SI9o4m/ZMnBNeIyt5eFwwo7qiLfzFZmjNmxjkiQlU=
145147
github.com/cilium/ebpf v0.2.0/go.mod h1:To2CFviqOWL/M0gIMsvSMlqe7em/l1ALkX1PyjrX2Qs=
146148
github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw=
147-
github.com/cloudflare/circl v1.3.7 h1:qlCDlTPz2n9fu58M0Nh1J/JzcFpfgkFHHX3O35r5vcU=
148-
github.com/cloudflare/circl v1.3.7/go.mod h1:sRTcRWXGLrKw6yIGJ+l7amYJFfAXbZG0kBSc8r4zxgA=
149+
github.com/cloudflare/circl v1.3.9 h1:QFrlgFYf2Qpi8bSpVPK1HBvWpx16v/1TZivyo7pGuBE=
150+
github.com/cloudflare/circl v1.3.9/go.mod h1:PDRU+oXvdD7KCtgKxW95M5Z8BpSCJXQORiZFnBQS5QU=
149151
github.com/cncf/udpa/go v0.0.0-20191209042840-269d4d468f6f/go.mod h1:M8M6+tZqaGXZJjfX53e64911xZQV5JYwmTeXPW+k8Sc=
150152
github.com/cncf/udpa/go v0.0.0-20200629203442-efcf912fb354/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk=
151153
github.com/cncf/udpa/go v0.0.0-20201120205902-5459f2c99403/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk=
@@ -155,6 +157,10 @@ github.com/cncf/xds/go v0.0.0-20210805033703-aa0b78936158/go.mod h1:eXthEFrGJvWH
155157
github.com/cncf/xds/go v0.0.0-20210922020428-25de7278fc84/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs=
156158
github.com/cncf/xds/go v0.0.0-20211001041855-01bcc9b48dfe/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs=
157159
github.com/cncf/xds/go v0.0.0-20211011173535-cb28da3451f1/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs=
160+
github.com/consensys/bavard v0.1.13 h1:oLhMLOFGTLdlda/kma4VOJazblc7IM5y5QPd2A/YjhQ=
161+
github.com/consensys/bavard v0.1.13/go.mod h1:9ItSMtA/dXMAiL7BG6bqW2m3NdSEObYWoH223nGHukI=
162+
github.com/consensys/gnark-crypto v0.12.1 h1:lHH39WuuFgVHONRl3J0LRBtuYdQTumFSDtJF7HpyG8M=
163+
github.com/consensys/gnark-crypto v0.12.1/go.mod h1:v2Gy7L/4ZRosZ7Ivs+9SfUDr0f5UlG+EM5t7MPHiLuY=
158164
github.com/containerd/cgroups v0.0.0-20201119153540-4cbc285b3327/go.mod h1:ZJeTFisyysqgcCdecO57Dj79RfL0LNeGiFUqLYQRYLE=
159165
github.com/containerd/cgroups v1.1.0 h1:v8rEWFl6EoqHB+swVNjVoCJE8o3jX7e8nqBGPLaDFBM=
160166
github.com/containerd/cgroups v1.1.0/go.mod h1:6ppBcbh/NOOUU+dMKrykgaBnK9lCIBxHqJDGwsa1mIw=
@@ -275,8 +281,8 @@ github.com/filecoin-project/go-data-transfer/v2 v2.0.0-rc6 h1:EsbXTWsBKT764qtX4M
275281
github.com/filecoin-project/go-data-transfer/v2 v2.0.0-rc6/go.mod h1:cX1acvFVWC5EXnnmFPWEFXbO7nLUdSZa+nqgi1QpTpw=
276282
github.com/filecoin-project/go-ds-versioning v0.1.2 h1:to4pTadv3IeV1wvgbCbN6Vqd+fu+7tveXgv/rCEZy6w=
277283
github.com/filecoin-project/go-ds-versioning v0.1.2/go.mod h1:C9/l9PnB1+mwPa26BBVpCjG/XQCB0yj/q5CK2J8X1I4=
278-
github.com/filecoin-project/go-f3 v0.3.0 h1:GUY7+QSyWqX4MEuFtQAYkYLRM1t3GleZ0U2I87oOStM=
279-
github.com/filecoin-project/go-f3 v0.3.0/go.mod h1:MVf4ynbRdLMnZZWK8GJCex0VH1lQvh9AwFTMEu7jX1Y=
284+
github.com/filecoin-project/go-f3 v0.7.0 h1:JNo39SAELT5hEn+rmQZbSJQBJfmGJtp70RfyWJrIayY=
285+
github.com/filecoin-project/go-f3 v0.7.0/go.mod h1:QoxuoK4aktNZD1R/unlhNbhV6TnlNTAbA/QODCnAjak=
280286
github.com/filecoin-project/go-fil-commcid v0.0.0-20201016201715-d41df56b4f6a/go.mod h1:Eaox7Hvus1JgPrL5+M3+h7aSPHc0cVqpSxA+TxIEpZQ=
281287
github.com/filecoin-project/go-fil-commcid v0.1.0 h1:3R4ds1A9r6cr8mvZBfMYxTS88OqLYEo6roi+GiIeOh8=
282288
github.com/filecoin-project/go-fil-commcid v0.1.0/go.mod h1:Eaox7Hvus1JgPrL5+M3+h7aSPHc0cVqpSxA+TxIEpZQ=
@@ -517,6 +523,7 @@ github.com/google/pprof v0.0.0-20210720184732-4bb14d4b1be1/go.mod h1:kpwsk12EmLe
517523
github.com/google/pprof v0.0.0-20240509144519-723abb6459b7 h1:velgFPYr1X9TDwLIfkV7fWqsFlf7TeP11M/7kPd/dVI=
518524
github.com/google/pprof v0.0.0-20240509144519-723abb6459b7/go.mod h1:kf6iHlnVGwgKolg33glAes7Yg/8iWP8ukqeldJSO7jw=
519525
github.com/google/renameio v0.1.0/go.mod h1:KWCgfxg9yswjAJkECMjeO8J8rahYeXnNhOm40UhjYkI=
526+
github.com/google/subcommands v1.2.0/go.mod h1:ZjhPrFU+Olkh9WazFPsl27BQ4UPiG37m3yTrtFlrHVk=
520527
github.com/google/uuid v1.0.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
521528
github.com/google/uuid v1.1.1/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
522529
github.com/google/uuid v1.1.2/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
@@ -838,6 +845,8 @@ github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY=
838845
github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE=
839846
github.com/labstack/echo/v4 v4.1.11/go.mod h1:i541M3Fj6f76NZtHSj7TXnyM8n2gaodfvfxNnFqi74g=
840847
github.com/labstack/gommon v0.3.0/go.mod h1:MULnywXg0yavhxWKc+lOruYdAhDwPK9wf0OL7NoOu+k=
848+
github.com/leanovate/gopter v0.2.9 h1:fQjYxZaynp97ozCzfOyOuAGOU4aU/z37zf/tOujFk7c=
849+
github.com/leanovate/gopter v0.2.9/go.mod h1:U2L/78B+KVFIx2VmW6onHJQzXtFb+p5y3y2Sh+Jxxv8=
841850
github.com/leodido/go-urn v1.2.4 h1:XlAE/cm/ms7TE/VMVoduSpNBoyc2dOxHs5MZSwAN63Q=
842851
github.com/leodido/go-urn v1.2.4/go.mod h1:7ZrI8mTSeBSHl/UaRyKQW1qZeMgak41ANeCNaVckg+4=
843852
github.com/lib/pq v1.10.9 h1:YXG7RB+JIjhP29X+OtkiDnYaXQwpS4JEWq7dtCCRUEw=
@@ -979,6 +988,9 @@ github.com/mitchellh/go-homedir v1.1.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrk
979988
github.com/mitchellh/mapstructure v1.1.2/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y=
980989
github.com/mitchellh/mapstructure v1.5.0 h1:jeMsZIYE/09sWLaz43PL7Gy6RuMjD2eJVyuac5Z2hdY=
981990
github.com/mitchellh/mapstructure v1.5.0/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo=
991+
github.com/mmcloughlin/addchain v0.4.0 h1:SobOdjm2xLj1KkXN5/n0xTIWyZA2+s99UCY1iPfkHRY=
992+
github.com/mmcloughlin/addchain v0.4.0/go.mod h1:A86O+tHqZLMNO4w6ZZ4FlVQEadcoqkyU72HC5wJ4RlU=
993+
github.com/mmcloughlin/profile v0.1.1/go.mod h1:IhHD7q1ooxgwTgjxQYkACGA77oFTDdFVejUS1/tS/qU=
982994
github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q=
983995
github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd h1:TRLaZ9cD/w8PVh93nsPXa1VrQ6jlwL5oN8l14QlcNfg=
984996
github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q=
@@ -1394,6 +1406,8 @@ github.com/zyedidia/generic v1.2.1 h1:Zv5KS/N2m0XZZiuLS82qheRG4X1o5gsWreGb0hR7XD
13941406
github.com/zyedidia/generic v1.2.1/go.mod h1:ly2RBz4mnz1yeuVbQA/VFwGjK3mnHGRj1JuoG336Bis=
13951407
go.dedis.ch/fixbuf v1.0.3 h1:hGcV9Cd/znUxlusJ64eAlExS+5cJDIyTyEG+otu5wQs=
13961408
go.dedis.ch/fixbuf v1.0.3/go.mod h1:yzJMt34Wa5xD37V5RTdmp38cz3QhMagdGoem9anUalw=
1409+
go.dedis.ch/kyber/v4 v4.0.0-pre2.0.20240924132404-4de33740016e h1:BAGc1ommHzlhqHktWyRmoldVONj3QHMzdfGLW4ItltA=
1410+
go.dedis.ch/kyber/v4 v4.0.0-pre2.0.20240924132404-4de33740016e/go.mod h1:tg6jwKTYEjm94VxkFwiQy+ec9hoQvccIU989wNjXWVI=
13971411
go.dedis.ch/protobuf v1.0.11 h1:FTYVIEzY/bfl37lu3pR4lIj+F9Vp1jE8oh91VmxKgLo=
13981412
go.dedis.ch/protobuf v1.0.11/go.mod h1:97QR256dnkimeNdfmURz0wAMNVbd1VmLXhG1CrTYrJ4=
13991413
go.etcd.io/bbolt v1.3.7 h1:j+zJOnnEjF/kyHlDDgGnVL/AIqIJPq8UoB2GSNfkUfQ=
@@ -2125,5 +2139,7 @@ rsc.io/binaryregexp v0.2.0/go.mod h1:qTv7/COck+e2FymRvadv62gMdZztPaShugOCi3I+8D8
21252139
rsc.io/pdf v0.1.1/go.mod h1:n8OzWcQ6Sp37PL01nO98y4iUCRdTGarVfzxY20ICaU4=
21262140
rsc.io/quote/v3 v3.1.0/go.mod h1:yEA65RcK8LyAZtP9Kv3t0HmxON59tX3rD+tICJqUlj0=
21272141
rsc.io/sampler v1.3.0/go.mod h1:T1hPZKmBbMNahiBKFy5HrXp6adAjACjK9JXDnKaTXpA=
2142+
rsc.io/tmplfunc v0.0.3 h1:53XFQh69AfOa8Tw0Jm7t+GV7KZhOi6jzsCzTtKbMvzU=
2143+
rsc.io/tmplfunc v0.0.3/go.mod h1:AG3sTPzElb1Io3Yg4voV9AGZJuleGAwaVRxL9M49PhA=
21282144
sourcegraph.com/sourcegraph/go-diff v0.5.0/go.mod h1:kuch7UrkMzY0X+p9CRK03kfuPQ2zzQcaEFbx8wA8rck=
21292145
sourcegraph.com/sqs/pbtypes v0.0.0-20180604144634-d3ebe8f20ae4/go.mod h1:ketZ/q3QxT9HOBeFhu6RdvsftgpsbFHBF5Cas6cDKZ0=

pkg/config/config.go

+1
Original file line numberDiff line numberDiff line change
@@ -408,6 +408,7 @@ func newDefaultNetworkParamsConfig() *NetworkParamsConfig {
408408
PropagationDelaySecs: 10,
409409
AllowableClockDriftSecs: 1,
410410
Eip155ChainID: 314,
411+
ManifestServerID: "12D3KooWENMwUF9YxvQxar7uBWJtZkA6amvK4xWmKXfSiHUo2Qq7",
411412
}
412413
}
413414

pkg/net/gossipsub.go

+15-30
Original file line numberDiff line numberDiff line change
@@ -14,9 +14,9 @@ import (
1414
"github.com/libp2p/go-libp2p/core/peer"
1515
blake2b "github.com/minio/blake2b-simd"
1616

17-
"github.com/filecoin-project/go-f3/gpbft"
1817
"github.com/filecoin-project/go-f3/manifest"
1918
"github.com/filecoin-project/venus/pkg/config"
19+
"github.com/filecoin-project/venus/pkg/vf3"
2020
"github.com/filecoin-project/venus/venus-shared/types"
2121
)
2222

@@ -42,12 +42,6 @@ const (
4242
GraylistScoreThreshold = -2500
4343
AcceptPXScoreThreshold = 1000
4444
OpportunisticGraftScoreThreshold = 3.5
45-
46-
// Determines the max. number of configuration changes
47-
// that are allowed for the dynamic manifest.
48-
// If the manifest changes more than this number, the F3
49-
// message topic will be filtered
50-
MaxDynamicManifestChangesAllowed = 1000
5145
)
5246

5347
func NewGossipSub(ctx context.Context,
@@ -57,7 +51,7 @@ func NewGossipSub(ctx context.Context,
5751
drandSchedule map[abi.ChainEpoch]config.DrandEnum,
5852
bootNodes []peer.AddrInfo,
5953
bs bool,
60-
f3enabled bool,
54+
f3Config *vf3.Config,
6155
) (*pubsub.PubSub, error) {
6256
bootstrappers := make(map[peer.ID]struct{})
6357
for _, info := range bootNodes {
@@ -320,30 +314,21 @@ func NewGossipSub(ctx context.Context,
320314
indexerIngestTopic,
321315
}
322316
allowTopics = append(allowTopics, drandTopics...)
323-
if f3enabled {
324-
f3TopicName := manifest.PubSubTopicFromNetworkName(gpbft.NetworkName(networkName))
325-
allowTopics = append(allowTopics, f3TopicName)
326-
327-
// allow dynamic manifest topic and the new topic names after a reconfiguration.
328-
// Note: This is pretty ugly, but I tried to use a regex subscription filter
329-
// as the commented code below, but unfortunately it overwrites previous filters. A simple fix would
330-
// be to allow combining several topic filters, but for now this works.
331-
//
332-
// pattern := fmt.Sprintf(`^\/f3\/%s\/0\.0\.1\/?[0-9]*$`, in.Nn)
333-
// rx, err := regexp.Compile(pattern)
334-
// if err != nil {
335-
// return nil, xerrors.Errorf("failed to compile manifest topic regex: %w", err)
336-
// }
337-
// options = append(options,
338-
// pubsub.WithSubscriptionFilter(
339-
// pubsub.WrapLimitSubscriptionFilter(
340-
// pubsub.NewRegexpSubscriptionFilter(rx),
341-
// 100)))
342-
allowTopics = append(allowTopics, manifest.ManifestPubSubTopicName)
343-
for i := 0; i < MaxDynamicManifestChangesAllowed; i++ {
344-
allowTopics = append(allowTopics, f3TopicName+"/"+fmt.Sprintf("%d", i))
317+
318+
if f3Config != nil {
319+
if f3Config.StaticManifest != nil {
320+
f3TopicName := manifest.PubSubTopicFromNetworkName(f3Config.StaticManifest.NetworkName)
321+
allowTopics = append(allowTopics, f3TopicName)
322+
}
323+
if f3Config.DynamicManifestProvider != "" {
324+
f3BaseTopicName := manifest.PubSubTopicFromNetworkName(f3Config.BaseNetworkName)
325+
allowTopics = append(allowTopics, manifest.ManifestPubSubTopicName)
326+
for i := 0; i < vf3.MaxDynamicManifestChangesAllowed; i++ {
327+
allowTopics = append(allowTopics, fmt.Sprintf("%s/%d", f3BaseTopicName, i))
328+
}
345329
}
346330
}
331+
347332
options = append(options,
348333
pubsub.WithSubscriptionFilter(
349334
pubsub.WrapLimitSubscriptionFilter(

0 commit comments

Comments
 (0)