Documentation ¶
Index ¶
- Constants
- Variables
- func CheckTimeouts(timeouts *rpc.HTTPTimeouts)
- func DefaultDataDir() string
- func DefaultHTTPEndpoint() string
- func DefaultIPCEndpoint(clientIdentifier string) string
- func DefaultWSEndpoint() string
- func MakeGenesis(faucets []*ecdsa.PrivateKey) *g.Genesis
- func NewHTTPHandlerStack(srv http.Handler, cors []string, vhosts []string, jwtSecret []byte) http.Handler
- func NewWSHandlerStack(srv http.Handler, jwtSecret []byte) http.Handler
- func RegisterApis(apis []rpc.API, modules []string, srv *rpc.Server) error
- func StartHTTPEndpoint(endpoint string, timeouts rpc.HTTPTimeouts, handler http.Handler) (*http.Server, net.Addr, error)
- type Config
- func (c *Config) ExtRPCEnabled() bool
- func (c *Config) HTTPEndpoint() string
- func (c *Config) IPCEndpoint() string
- func (c *Config) KeyDirConfig() (string, error)
- func (c *Config) NodeDB() string
- func (c *Config) NodeKey() *ecdsa.PrivateKey
- func (c *Config) NodeName() string
- func (c *Config) ResolvePath(path string) string
- func (c *Config) StaticNodes() []*enode.Node
- func (c *Config) TrustedNodes() []*enode.Node
- func (c *Config) WSEndpoint() string
- type Lifecycle
- type Node
- func (n *Node) AccountManager() *accounts.Manager
- func (n *Node) Attach() (*rpc.Client, error)
- func (n *Node) Close() error
- func (n *Node) Config() *Config
- func (n *Node) DataDir() string
- func (n *Node) GetAPIs() (unauthenticated, all []rpc.API)
- func (n *Node) InstanceDir() string
- func (n *Node) KeyStoreDir() string
- func (n *Node) OpenDatabase(name string, cache, handles int, namespace string, readonly bool) (typedb.Database, error)
- func (n *Node) OpenDatabaseWithFreezer(name string, cache, handles int, freezer, namespace string, readonly bool) (typedb.Database, error)
- func (n *Node) RPCHandler() (*rpc.Server, error)
- func (n *Node) RegisterAPIs(apis []rpc.API)
- func (n *Node) RegisterProtocols(protocols []p2p.Protocol)
- func (n *Node) ResolvePath(x string) string
- func (n *Node) Server() *p2p.Server
- func (n *Node) Start() error
- func (n *Node) WSEndpoint() string
- func (n *Node) Wait()
- type StopError
Constants ¶
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 ¶
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"} )
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") )
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 ¶
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 ¶
NewWSHandlerStack returns a wrapped ws-related handler.
func RegisterApis ¶
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.
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 ¶
ExtRPCEnabled returns the indicator whether node enables the external RPC(http, ws or graphql).
func (*Config) HTTPEndpoint ¶
HTTPEndpoint resolves an HTTP endpoint based on the configured host interface and port parameters.
func (*Config) IPCEndpoint ¶
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 ¶
KeyDirConfig确定keydirectory的设置
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) ResolvePath ¶
ResolvePath解析实例目录中的路径。
func (*Config) StaticNodes ¶
StaticNodes returns a list of node enode URLs configured as static nodes.
func (*Config) TrustedNodes ¶
TrustedNodes returns a list of node enode URLs configured as trusted nodes.
func (*Config) WSEndpoint ¶
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 (*Node) AccountManager ¶
AccountManager检索协议堆栈使用的帐户管理器。
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 ¶
RPCHandler返回进程内RPC请求处理程序。
func (*Node) RegisterProtocols ¶
RegisterProtocols将后端协议添加到节点的p2p服务器。
func (*Node) WSEndpoint ¶
WSEndpoint返回当前的JSON-RPC over WebSocket端点。