Documentation ¶
Index ¶
- Constants
- Variables
- func From(typ interface{}) interface{}
- func FromVal[T any](v T) func() T
- func FullNodeHandler(a v1api.FullNode, permissioned bool, opts ...jsonrpc.ServerOption) (http.Handler, error)
- func IsType(t repo.RepoType) func(s *Settings) bool
- func MinerHandler(a api.StorageMiner, permissioned bool) (http.Handler, error)
- func MonitorShutdown(triggerCh <-chan struct{}, handlers ...ShutdownHandler) <-chan struct{}
- func WithEnableLibp2pNode(enable bool) func(s *Settings) error
- func WithInvokesKey(i invoke, resApi interface{}) func(s *Settings) error
- func WithRepoType(repoType repo.RepoType) func(s *Settings) error
- type FullOption
- type HealthHandler
- type Option
- func ApplyIf(check func(s *Settings) bool, opts ...Option) Option
- func Base() Option
- func ConfigCommon(cfg *config.Common, buildVersion build.BuildVersion, enableLibp2pNode bool) Option
- func ConfigFullNode(c interface{}) Option
- func ConfigStorageMiner(c interface{}) Option
- func Error(err error) Option
- func FullAPI(out *api.FullNode, fopts ...FullOption) Option
- func If(b bool, opts ...Option) Option
- func MockHost(mn mocknet.Mocknet) Option
- func Options(opts ...Option) Option
- func Override(typ, constructor interface{}) Option
- func Repo(r repo.Repo) Option
- func StorageMiner(out *api.StorageMiner) Option
- func Test() Option
- func Unset(typ interface{}) Option
- type Settings
- type ShutdownHandler
- type StopFunc
Constants ¶
const ( // InitJournal at position 0 initializes the journal global var as soon as // the system starts, so that it's available for all other components. InitJournalKey = invoke(iota) // System processes. InitMemoryWatchdog // health checks CheckFDLimit CheckFvmConcurrency CheckUDPBufferSize // libp2p PstoreAddSelfKeysKey StartListeningKey BootstrapKey // filecoin SetGenesisKey RunHelloKey RunChainExchangeKey RunPeerMgrKey HandleIncomingBlocksKey HandleIncomingMessagesKey HandlePaymentChannelManagerKey RelayIndexerMessagesKey // miner PreflightChecksKey GetParamsKey HandleMigrateProviderFundsKey HandleDealsKey HandleRetrievalKey RunSectorServiceKey F3Participation // daemon ExtractApiKey HeadMetricsKey SettlePaymentChannelsKey RunPeerTaggerKey SetupFallbackBlockstoresKey ConsensusReporterKey SetApiEndpointKey StoreEventsKey )
Invokes are called in the order they are defined.
Variables ¶
var ( DefaultTransportsKey = special{0} // Libp2p option DiscoveryHandlerKey = special{2} // Private type AddrsFactoryKey = special{3} // Libp2p option SmuxTransportKey = special{4} // Libp2p option RelayKey = special{5} // Libp2p option SecurityKey = special{6} // Libp2p option BaseRoutingKey = special{7} // fx groups + multiret NatPortMapKey = special{8} // Libp2p option ConnectionManagerKey = special{9} // Libp2p option AutoNATSvcKey = special{10} // Libp2p option BandwidthReporterKey = special{11} // Libp2p option ConnGaterKey = special{12} // Libp2p option ResourceManagerKey = special{14} // Libp2p option )
var ChainNode = Options( Override(new(dtypes.DrandSchedule), modules.BuiltinDrandConfig), Override(new(stmgr.UpgradeSchedule), modules.UpgradeSchedule), Override(new(dtypes.NetworkName), modules.NetworkName), Override(new(modules.Genesis), modules.ErrorGenesis), Override(new(dtypes.AfterGenesisSet), modules.SetGenesis), Override(SetGenesisKey, modules.DoSetGenesis), Override(new(beacon.Schedule), modules.RandomSchedule), Override(new(dtypes.BootstrapPeers), modules.BuiltinBootstrap), Override(new(dtypes.DrandBootstrap), modules.DrandBootstrap), Override(new(storiface.Verifier), ffiwrapper.ProofVerifier), Override(new(storiface.Prover), ffiwrapper.ProofProver), Override(new(vm.SyscallBuilder), vm.Syscalls), Override(new(chain.Genesis), chain.LoadGenesis), Override(new(store.WeightFunc), filcns.Weight), Override(new(stmgr.Executor), consensus.NewTipSetExecutor(filcns.RewardFunc)), Override(new(consensus.Consensus), filcns.NewFilecoinExpectedConsensus), Override(new(*store.ChainStore), modules.ChainStore), Override(new(*stmgr.StateManager), modules.StateManager), Override(new(dtypes.ChainBitswap), modules.ChainBitswap), Override(new(dtypes.ChainBlockService), modules.ChainBlockService), Override(new(chain.SyncManagerCtor), func() chain.SyncManagerCtor { return chain.NewSyncManager }), Override(new(*chain.Syncer), modules.NewSyncer), Override(new(exchange.Client), exchange.NewClient), Override(new(*hello.Service), hello.NewHelloService), Override(new(exchange.Server), exchange.NewServer), Override(new(*peermgr.PeerMgr), peermgr.NewPeerMgr), Override(new(*slashfilter.SlashFilter), modules.NewSlashFilter), Override(new(dtypes.DefaultMaxFeeFunc), modules.NewDefaultMaxFeeFunc), Override(new(*messagepool.MessagePool), modules.MessagePool), Override(new(*dtypes.MpoolLocker), new(dtypes.MpoolLocker)), Override(new(*messagesigner.MessageSigner), messagesigner.NewMessageSigner), Override(new(messagesigner.MsgSigner), func(ms *messagesigner.MessageSigner) *messagesigner.MessageSigner { return ms }), Override(new(*wallet.LocalWallet), wallet.NewWallet), Override(new(wallet.Default), From(new(*wallet.LocalWallet))), Override(new(api.Wallet), From(new(wallet.MultiWallet))), Override(new(paychmgr.PaychAPI), From(new(modules.PaychAPI))), Override(new(*paychmgr.Store), modules.NewPaychStore), Override(new(*paychmgr.Manager), modules.NewManager), Override(HandlePaymentChannelManagerKey, modules.HandlePaychManager), Override(SettlePaymentChannelsKey, settler.SettlePaymentChannels), Override(new(*market.FundManager), market.NewFundManager), Override(new(*full.GasPriceCache), full.NewGasPriceCache), Override(RelayIndexerMessagesKey, modules.RelayIndexerMessages), ApplyIf(isLiteNode, Override(new(messagepool.Provider), messagepool.NewProviderLite), Override(new(messagepool.MpoolNonceAPI), From(new(modules.MpoolNonceAPI))), Override(new(full.ChainModuleAPI), From(new(api.Gateway))), Override(new(full.GasModuleAPI), From(new(api.Gateway))), Override(new(full.MpoolModuleAPI), From(new(api.Gateway))), Override(new(full.StateModuleAPI), From(new(api.Gateway))), Override(new(stmgr.StateManagerAPI), rpcstmgr.NewRPCStateManager), Override(new(full.EthModuleAPI), From(new(api.Gateway))), Override(new(full.EthEventAPI), From(new(api.Gateway))), Override(new(full.ActorEventAPI), From(new(api.Gateway))), ), ApplyIf(isFullNode, Override(new(messagepool.Provider), messagepool.NewProvider), Override(new(messagepool.MpoolNonceAPI), From(new(*messagepool.MessagePool))), Override(new(full.ChainModuleAPI), From(new(full.ChainModule))), Override(new(full.GasModuleAPI), From(new(full.GasModule))), Override(new(full.MpoolModuleAPI), From(new(full.MpoolModule))), Override(new(full.StateModuleAPI), From(new(full.StateModule))), Override(new(stmgr.StateManagerAPI), From(new(*stmgr.StateManager))), Override(RunHelloKey, modules.RunHello), Override(RunChainExchangeKey, modules.RunChainExchange), Override(RunPeerMgrKey, modules.RunPeerMgr), Override(HandleIncomingMessagesKey, modules.HandleIncomingMessages), Override(HandleIncomingBlocksKey, modules.HandleIncomingBlocks), ), If(build.IsF3Enabled(), Override(new(manifest.ManifestProvider), lf3.NewManifestProvider), Override(new(*lf3.F3), lf3.New), ), )
Chain node provides access to the Filecoin blockchain, by setting up a full validator node, or by delegating some actions to other nodes (lite mode)
var LibP2P = Options( Override(new(dtypes.Bootstrapper), dtypes.Bootstrapper(false)), Override(new(peerstore.Peerstore), lp2p.Peerstore), Override(PstoreAddSelfKeysKey, lp2p.PstoreAddSelfKeys), Override(StartListeningKey, lp2p.StartListening(config.DefaultFullNode().Libp2p.ListenAddresses)), Override(DefaultTransportsKey, lp2p.DefaultTransports), Override(AddrsFactoryKey, lp2p.AddrsFactory(nil, nil)), Override(SmuxTransportKey, lp2p.SmuxTransport()), Override(RelayKey, lp2p.NoRelay()), Override(SecurityKey, lp2p.Security(true, false)), Override(new(lp2p.RawHost), lp2p.Host), Override(new(host.Host), lp2p.RoutedHost), Override(new(lp2p.BaseIpfsRouting), lp2p.DHTRouting(dht.ModeAuto)), Override(DiscoveryHandlerKey, lp2p.DiscoveryHandler), Override(new(record.Validator), modules.RecordValidator), Override(BaseRoutingKey, lp2p.BaseRouting), Override(new(routing.Routing), lp2p.Routing), Override(BandwidthReporterKey, lp2p.BandwidthCounter), Override(AutoNATSvcKey, lp2p.AutoNATService), Override(new(*dtypes.ScoreKeeper), lp2p.ScoreKeeper), Override(new(*pubsub.PubSub), lp2p.GossipSub), Override(new(*config.Pubsub), func(bs dtypes.Bootstrapper) *config.Pubsub { return &config.Pubsub{ Bootstrapper: bool(bs), } }), Override(ConnectionManagerKey, lp2p.ConnectionManager(50, 200, 20*time.Second, nil)), Override(new(*conngater.BasicConnectionGater), lp2p.ConnGater), Override(ConnGaterKey, lp2p.ConnGaterOption), Override(new(network.ResourceManager), lp2p.ResourceManager(200)), Override(ResourceManagerKey, lp2p.ResourceManagerOption), )
var MinerNode = Options( Override(new(sectorstorage.StorageAuth), modules.StorageAuth), Override(new(dtypes.MinerAddress), modules.MinerAddress), Override(new(dtypes.MinerID), modules.MinerID), Override(new(abi.RegisteredSealProof), modules.SealProofType), Override(new(dtypes.NetworkName), modules.StorageNetworkName), Override(new(*ctladdr.AddressSelector), modules.AddressSelector(nil)), )
Functions ¶
func From ¶ added in v0.3.0
func From(typ interface{}) interface{}
From(*T) -> func(t T) T {return t}
func FullNodeHandler ¶ added in v1.11.0
func FullNodeHandler(a v1api.FullNode, permissioned bool, opts ...jsonrpc.ServerOption) (http.Handler, error)
FullNodeHandler returns a full node handler, to be mounted as-is on the server.
func MinerHandler ¶ added in v1.11.0
MinerHandler returns a miner handler, to be mounted as-is on the server.
func MonitorShutdown ¶ added in v1.11.0
func MonitorShutdown(triggerCh <-chan struct{}, handlers ...ShutdownHandler) <-chan struct{}
MonitorShutdown manages shutdown requests, by watching signals and invoking the supplied handlers in order.
It watches SIGTERM and SIGINT OS signals, as well as the trigger channel. When any of them fire, it calls the supplied handlers in order. If any of them errors, it merely logs the error.
Once the shutdown has completed, it closes the returned channel. The caller can watch this channel
func WithEnableLibp2pNode ¶ added in v1.13.0
func WithInvokesKey ¶ added in v1.9.0
Types ¶
type FullOption ¶ added in v0.9.1
type FullOption = Option
func Lite ¶ added in v0.9.1
func Lite(enable bool) FullOption
type HealthHandler ¶ added in v1.17.0
type HealthHandler struct {
// contains filtered or unexported fields
}
func NewLiveHandler ¶ added in v1.17.0
func NewLiveHandler(api lapi.FullNode) *HealthHandler
Check that the node is still working. That is, that it's still processing the chain. If there have been no recent changes, consider the node to be dead.
func NewReadyHandler ¶ added in v1.17.0
func NewReadyHandler(api lapi.FullNode) *HealthHandler
Check if we are ready to handle traffic. 1. sync workers are reasonably up to date. 2. libp2p is servicable
func (*HealthHandler) ServeHTTP ¶ added in v1.17.0
func (h *HealthHandler) ServeHTTP(w http.ResponseWriter, r *http.Request)
func (*HealthHandler) SetHealthy ¶ added in v1.17.0
func (h *HealthHandler) SetHealthy(healthy bool)
type Option ¶
Option is a functional option which can be used with the New function to change how the node is constructed
Options are applied in sequence
func ConfigCommon ¶
func ConfigCommon(cfg *config.Common, buildVersion build.BuildVersion, enableLibp2pNode bool) Option
Config sets up constructors based on the provided Config
func ConfigFullNode ¶
func ConfigFullNode(c interface{}) Option
func ConfigStorageMiner ¶
func ConfigStorageMiner(c interface{}) Option
func Override ¶
func Override(typ, constructor interface{}) Option
Override option changes constructor for a given type
func StorageMiner ¶
func StorageMiner(out *api.StorageMiner) Option
type ShutdownHandler ¶ added in v1.11.0
type StopFunc ¶
func ServeRPC ¶ added in v1.11.0
ServeRPC serves an HTTP handler over the supplied listen multiaddr.
This function spawns a goroutine to run the server, and returns immediately. It returns the stop function to be called to terminate the endpoint.
The supplied ID is used in tracing, by inserting a tag in the context.