node

package
v0.0.0-...-de85661 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Aug 3, 2022 License: Unlicense Imports: 38 Imported by: 0

Documentation

Index

Constants

View Source
const (
	DefaultHTTPHost    = "localhost" // Default host interface for the HTTP RPC server
	DefaultHTTPPort    = 8545        // Default TCP port for the HTTP RPC server
	DefaultWSHost      = "localhost" // Default host interface for the websocket RPC server
	DefaultWSPort      = 8546        // Default TCP port for the websocket RPC server
	DefaultGraphQLHost = "localhost" // Default host interface for the GraphQL server
	DefaultGraphQLPort = 8547        // Default TCP port for the GraphQL server
	DefaultAuthHost    = "localhost" // Default host interface for the authenticated apis
	DefaultAuthPort    = 8551        // Default port for the authenticated apis
)

Variables

View Source
var (
	DefaultAuthCors    = []string{"localhost"} // Default cors domain for the authenticated apis
	DefaultAuthVhosts  = []string{"localhost"} // Default virtual hosts for the authenticated apis
	DefaultAuthOrigins = []string{"localhost"} // Default origins for the authenticated apis
	DefaultAuthPrefix  = ""                    // Default prefix for the authenticated apis
	DefaultAuthModules = []string{"eth", "engine"}
)
View Source
var (
	ErrDatadirUsed    = errors.New("datadir already used by another process")
	ErrNodeStopped    = errors.New("node not started")
	ErrNodeRunning    = errors.New("node already running")
	ErrServiceUnknown = errors.New("unknown service")
)
View Source
var DefaultConfig = Config{
	DataDir:             DefaultDataDir(),
	HTTPPort:            DefaultHTTPPort,
	AuthAddr:            DefaultAuthHost,
	AuthPort:            DefaultAuthPort,
	AuthVirtualHosts:    DefaultAuthVhosts,
	HTTPModules:         []string{"net", "web3"},
	HTTPVirtualHosts:    []string{"localhost"},
	HTTPTimeouts:        rpc.DefaultHTTPTimeouts,
	WSPort:              DefaultWSPort,
	WSModules:           []string{"net", "web3"},
	GraphQLVirtualHosts: []string{"localhost"},
	P2P: p2p.Config{
		ListenAddr: ":58888",
		MaxPeers:   50,
		NAT:        nat.Any(),
	},
}

DefaultConfig contains reasonable default settings.

Functions

func CheckTimeouts

func CheckTimeouts(timeouts *rpc.HTTPTimeouts)

CheckTimeouts ensures that timeout values are meaningful

func DefaultDataDir

func DefaultDataDir() string

DefaultDataDir is the default data directory to use for the databases and other persistence requirements.

func DefaultHTTPEndpoint

func DefaultHTTPEndpoint() string

DefaultHTTPEndpoint returns the HTTP endpoint used by default.

func DefaultIPCEndpoint

func DefaultIPCEndpoint(clientIdentifier string) string

DefaultIPCEndpoint returns the IPC path used by default.

func DefaultWSEndpoint

func DefaultWSEndpoint() string

DefaultWSEndpoint returns the websocket endpoint used by default.

func MakeGenesis

func MakeGenesis(faucets []*ecdsa.PrivateKey) *g.Genesis

makeGenesis基于一些预定义的水龙头帐户创建自定义的八单元genesis块。

func NewHTTPHandlerStack

func NewHTTPHandlerStack(srv http.Handler, cors []string, vhosts []string, jwtSecret []byte) http.Handler

NewHTTPHandlerStack returns wrapped http-related handlers

func NewWSHandlerStack

func NewWSHandlerStack(srv http.Handler, jwtSecret []byte) http.Handler

NewWSHandlerStack returns a wrapped ws-related handler.

func RegisterApis

func RegisterApis(apis []rpc.API, modules []string, srv *rpc.Server) error

RegisterApis checks the given modules' availability, generates an allowlist based on the allowed modules, and then registers all of the APIs exposed by the services.

func StartHTTPEndpoint

func StartHTTPEndpoint(endpoint string, timeouts rpc.HTTPTimeouts, handler http.Handler) (*http.Server, net.Addr, error)

StartHTTPEndpoint starts the HTTP RPC endpoint.

Types

type Config

type Config struct {
	// Name设置节点的实例名称。它不能包含/字符,并在devp2p节点标识符中使用。geth的实例名为“geth”。如果未指定值,则使用当前可执行文件的basename。
	Name string `toml:"-"`

	// UserIdent(如果设置)用作devp2p节点标识符中的附加组件。
	UserIdent string `toml:",omitempty"`

	// 版本应设置为程序的版本号。它用于devp2p节点标识符中。
	Version string `toml:"-"`

	// DataDir是节点应用于任何数据存储要求的文件系统文件夹。配置的数据目录不会直接与注册的服务共享,
	//相反,这些服务可以使用实用工具方法创建/访问数据库或平面文件。这使得临时节点可以完全驻留在内存中。
	DataDir string

	// 对等网络的配置。
	P2P p2p.Config

	// KeyStoreDir是包含私钥的文件系统文件夹。可以将目录指定为相对路径,在这种情况下,它将相对于当前目录进行解析。
	//如果KeyStoreDir为空,则默认位置为DataDir的“keystore”子目录。如果DataDir未指定,KeyStoreDir为空,则New会创建临时目录,并在节点停止时销毁。
	KeyStoreDir string `toml:",omitempty"`

	// ExternalSigner为clef类型签名者指定外部URI
	ExternalSigner string `toml:",omitempty"`

	// UseLightweightKDF降低了密钥存储scrypt KDF的内存和CPU需求,但牺牲了安全性。
	UseLightweightKDF bool `toml:",omitempty"`

	// UnsecureUnlockAllowed允许用户在不安全的http环境中解锁帐户。
	InsecureUnlockAllowed bool `toml:",omitempty"`

	// NoUSB禁用硬件钱包监控和连接。不推荐使用:默认情况下禁用USB监控,必须显式启用。
	NoUSB bool `toml:",omitempty"`

	// USB支持硬件钱包监控和连接。
	USB bool `toml:",omitempty"`

	// SmartCardDaemonPath是智能卡守护程序套接字的路径
	SmartCardDaemonPath string `toml:",omitempty"`

	// IPCPath是放置IPC端点的请求位置。如果路径是一个简单的文件名,
	//则将其放置在数据目录中(或Windows上的根管道路径上),而如果它是一个可解析的路径名(绝对或相对),则强制执行该特定路径。空路径禁用IPC。
	IPCPath string

	// HTTPHost是启动HTTP RPC服务器的主机接口。如果此字段为空,则不会启动HTTP API端点。
	HTTPHost string

	// HTTPPort是要在其上启动HTTP RPC服务器的TCP端口号。默认的零值为/有效,并将随机选取端口号(对临时节点有用)。
	HTTPPort int `toml:",omitempty"`

	// HTTPCors是发送给请求客户端的跨源资源共享头。请注意,CORS是一种浏览器强制执行的安全性,它对自定义HTTP客户端完全无用。
	HTTPCors []string `toml:",omitempty"`

	// HTTPVirtualHosts是传入请求允许的虚拟主机名列表。默认情况下,这是{'localhost'}。
	//使用此功能可以防止DNS重新绑定之类的攻击,DNS重新绑定通过简单地伪装为在同一来源内绕过SOP。
	//这些攻击不使用COR,因为它们不是跨域的。
	//通过显式检查主机标头,服务器将不允许对具有恶意主机域的服务器发出请求。直接使用ip地址的请求不受影响
	HTTPVirtualHosts []string `toml:",omitempty"`

	// HTTPModules是要通过HTTP-RPC接口公开的API模块列表。
	//如果模块列表为空,则将公开指定为public的所有RPC API端点。
	HTTPModules []string

	// HTTPTimeouts允许自定义HTTP RPC接口使用的超时值。
	HTTPTimeouts rpc.HTTPTimeouts

	// HTTPPathPrefix指定要为其提供http rpc的路径前缀。
	HTTPPathPrefix string `toml:",omitempty"`

	// AuthAddr是提供经过身份验证的API的侦听地址。
	AuthAddr string `toml:",omitempty"`

	// AuthPort是提供经过身份验证的API的端口号。
	AuthPort int `toml:",omitempty"`

	// AuthVirtualHosts是对经过身份验证的api的传入请求允许的虚拟主机名列表。默认情况下,这是{'localhost'}。
	AuthVirtualHosts []string `toml:",omitempty"`

	// WSHost是启动websocket RPC服务器的主机接口。如果此字段为空,则不会启动websocket API端点。
	WSHost string

	// WSPort是启动websocket RPC服务器的TCP端口号。默认的零值为/有效,并将随机选取端口号(对临时节点有用)。
	WSPort int `toml:",omitempty"`

	// WSPathPrefix指定要为其提供ws-rpc服务的路径前缀。
	WSPathPrefix string `toml:",omitempty"`

	// WSOriginates是从中接受websocket请求的域列表。
	//请注意,服务器只能对客户端发送的HTTP请求进行操作,无法验证请求头的有效性。
	WSOrigins []string `toml:",omitempty"`

	// WSModules是要通过websocket RPC接口公开的API模块列表。
	//如果模块列表为空,则将公开指定为public的所有RPC API端点。
	WSModules []string

	// WSExposeAll通过WebSocket RPC接口而不仅仅是公共接口公开所有API模块*警告*仅当节点在受信任的网络中运行时才设置此选项,向不受信任的用户公开私有API是一个主要的安全风险。
	WSExposeAll bool `toml:",omitempty"`

	// GraphQLCors是要发送给请求客户端的跨源资源共享头。
	//请注意,CORS是一种浏览器强制执行的安全性,它对自定义HTTP客户端完全无用。
	GraphQLCors []string `toml:",omitempty"`

	// GraphQLVirtualHosts是传入请求允许的虚拟主机名列表。
	//默认情况下,这是{'localhost'}。使用此功能可以防止DNS重新绑定之类的攻击,DNS重新绑定通过简单地伪装为在同一来源内绕过SOP。
	//这些攻击不使用COR,因为它们不是跨域的。
	//通过显式检查主机标头,服务器将不允许对具有恶意主机域的服务器发出请求。直接使用ip地址的请求不受影响
	GraphQLVirtualHosts []string `toml:",omitempty"`

	// Logger是用于p2p的自定义记录器。服务器
	Logger log.Logger `toml:",omitempty"`

	// AllowUnprotectedTxs允许通过RPC发送非EIP-155保护的事务。
	AllowUnprotectedTxs bool `toml:",omitempty"`

	// JWTSecret是十六进制编码的jwt密钥。
	JWTSecret string `toml:",omitempty"`
	// contains filtered or unexported fields
}

func (*Config) ExtRPCEnabled

func (c *Config) ExtRPCEnabled() bool

ExtRPCEnabled returns the indicator whether node enables the external RPC(http, ws or graphql).

func (*Config) HTTPEndpoint

func (c *Config) HTTPEndpoint() string

HTTPEndpoint resolves an HTTP endpoint based on the configured host interface and port parameters.

func (*Config) IPCEndpoint

func (c *Config) IPCEndpoint() string

IPCEndpoint resolves an IPC endpoint based on a configured value, taking into account the set data folders as well as the designated platform we're currently running on.

func (*Config) KeyDirConfig

func (c *Config) KeyDirConfig() (string, error)

KeyDirConfig确定keydirectory的设置

func (*Config) NodeDB

func (c *Config) NodeDB() string

NodeDB returns the path to the discovery node database.

func (*Config) NodeKey

func (c *Config) NodeKey() *ecdsa.PrivateKey

NodeKey retrieves the currently configured private key of the node, checking first any manually set key, falling back to the one found in the configured data folder. If no key can be found, a new one is generated.

func (*Config) NodeName

func (c *Config) NodeName() string

NodeName returns the devp2p node identifier.

func (*Config) ResolvePath

func (c *Config) ResolvePath(path string) string

ResolvePath解析实例目录中的路径。

func (*Config) StaticNodes

func (c *Config) StaticNodes() []*enode.Node

StaticNodes returns a list of node enode URLs configured as static nodes.

func (*Config) TrustedNodes

func (c *Config) TrustedNodes() []*enode.Node

TrustedNodes returns a list of node enode URLs configured as trusted nodes.

func (*Config) WSEndpoint

func (c *Config) WSEndpoint() string

WSEndpoint resolves a websocket endpoint based on the configured host interface and port parameters.

type Lifecycle

type Lifecycle interface {
	// 在构建所有服务之后调用Start,并且网络层也被初始化以生成服务所需的任何goroutine。
	Start() error

	// Stop终止属于服务的所有goroutine,阻塞直到它们全部终止。
	Stop() error
}

生命周期包括可以在节点上启动和停止的服务的行为。 生命周期管理委托给节点,但特定于服务的包负责使用“RegisterLifecycle”方法在节点上配置和注册服务。

type Node

type Node struct {
	// contains filtered or unexported fields
}

节点是可以在其上注册服务的容器。

func New

func New(conf *Config) (*Node, error)

New创建一个新的P2P节点,为协议注册做好准备。

func NewNodeCfg

func NewNodeCfg(conf *Config) (*Node, error)

新建创建一个新的P2P节点,为协议注册做好准备。

func (*Node) AccountManager

func (n *Node) AccountManager() *accounts.Manager

AccountManager检索协议堆栈使用的帐户管理器。

func (*Node) Attach

func (n *Node) Attach() (*rpc.Client, error)

Attach创建连接到进程内API处理程序的RPC客户端。

func (*Node) Close

func (n *Node) Close() error

Close停止节点并释放在Node constructor New中获取的资源。

func (*Node) Config

func (n *Node) Config() *Config

Config返回节点的配置。

func (*Node) DataDir

func (n *Node) DataDir() string

DataDir检索协议堆栈使用的当前DataDir。 已弃用:此目录中不应存储任何文件,请改用InstanceDir。

func (*Node) GetAPIs

func (n *Node) GetAPIs() (unauthenticated, all []rpc.API)

GetAPI返回两组API,一组不需要身份验证,另一组完整

func (*Node) InstanceDir

func (n *Node) InstanceDir() string

InstanceDir检索协议堆栈使用的实例目录。

func (*Node) KeyStoreDir

func (n *Node) KeyStoreDir() string

KeyStoreDir检索密钥目录

func (*Node) OpenDatabase

func (n *Node) OpenDatabase(name string, cache, handles int, namespace string, readonly bool) (typedb.Database, error)

OpenDatabase从节点的实例目录中打开具有给定名称的现有数据库(如果找不到以前的名称,则创建一个)。 如果节点是短暂的,则返回内存数据库。

func (*Node) OpenDatabaseWithFreezer

func (n *Node) OpenDatabaseWithFreezer(name string, cache, handles int, freezer, namespace string, readonly bool) (typedb.Database, error)

OpenDatabaseWithFreezer从节点的数据目录中打开一个具有给定名称的现有数据库(如果找不到以前的名称,则创建一个), 并向其附加一个链冻结器,该链冻结器将已有的的链数据从数据库移动到不可变的仅附加文件。 如果节点是临时节点,则返回内存数据库。

func (*Node) RPCHandler

func (n *Node) RPCHandler() (*rpc.Server, error)

RPCHandler返回进程内RPC请求处理程序。

func (*Node) RegisterAPIs

func (n *Node) RegisterAPIs(apis []rpc.API)

RegisterAPI注册服务在节点上提供的API。

func (*Node) RegisterProtocols

func (n *Node) RegisterProtocols(protocols []p2p.Protocol)

RegisterProtocols将后端协议添加到节点的p2p服务器。

func (*Node) ResolvePath

func (n *Node) ResolvePath(x string) string

ResolvePath返回实例目录中资源的绝对路径。

func (*Node) Server

func (n *Node) Server() *p2p.Server

服务器检索当前运行的P2P网络层。 此方法仅用于检查当前运行的服务器的字段。呼叫者不应启动或停止返回的服务器。

func (*Node) Start

func (n *Node) Start() error

Start启动所有注册的生命周期、RPC服务和p2p网络。节点只能启动一次。

func (*Node) WSEndpoint

func (n *Node) WSEndpoint() string

WSEndpoint返回当前的JSON-RPC over WebSocket端点。

func (*Node) Wait

func (n *Node) Wait()

等待块,直到节点关闭。

type StopError

type StopError struct {
	Server   error
	Services map[reflect.Type]error
}

如果节点无法停止其任何已注册服务或自身,则返回StopError。

func (*StopError) Error

func (e *StopError) Error() string

Error生成停止错误的文本表示。

Directories

Path Synopsis

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL