主页 > 下载imtoken钱包20app > Geth 分析以及如何运行以太坊节点

Geth 分析以及如何运行以太坊节点

下载imtoken钱包20app 2023-01-17 09:39:33

本文将详细讲解 Geth 分析以及如何运行以太坊节点。文章内容质量很高,分享给大家作为参考。希望大家看完本文对相关知识有一定的了解。理解。

为了与区块链通信,我们必须使用区块链客户端。客户端是能够与其他客户端建立 p2p 通信通道、签署和广播交易、挖掘、部署和与智能合约交互等功能的软件。客户端通常被称为节点。

以太坊节点必须遵循的功能的正式定义在以太坊黄皮书中定义。黄皮书定义了网络上节点所需的功能、挖掘算法、私钥/公钥 ECDSA 参数。它定义了使节点与以太坊客户端完全兼容的全部功能。

根据以太坊黄皮书,任何人都可以用他们认为合适的任何语言创建自己的以太坊节点实现。

可在此处查看完整的客户列表。

到目前为止,最受欢迎的客户是 Geth 和 Parity。实现的主要区别在于所选择的编程语言:Geth 使用 Golang,而 Parity 使用 Rust。

由于 Geth 目前是最流行的客户端实现,我们现在将重点关注它。

如何购买以太坊

节点类型

当您加入以太坊网络时,您可以选择运行各种类型的节点。目前的选择是:

存档节点是全节点的一个特例,所以我们不会详细介绍它。我发现的节点类型的最佳摘要之一是 Stack Exchange:

总的来说,我们可以将节点软件分为两种:全节点和轻(重量)节点。全节点验证网络上广播的块。也就是说,它们确保块中包含的交易(以及块本身)遵循以太坊规范中定义的规则。它们维护网络的当前状态(由以太坊规范定义)。

不遵循规则的交易和区块不用于确定以太坊网络的当前状态。例如,如果 A 尝试向 B 发送 100 个以太币,但 A 有 0 个以太币,并且一个区块包含该交易,则全节点将意识到这不符合以太坊的规则,并将该区块视为无效区块而拒绝。特别是,智能合约的执行是交易的一个例子。每当在交易中使用智能合约(例如发送 ERC-20 代币)时,所有完整节点都必须运行所有指令以确保它们达到正确的、商定的区块链下一个状态。

有多种方法可以达到相同的状态。例如,如果 A 有 101 个以太币,并且在一次交易中将其中的 100 个以太币提供给 B 以支付 1 个以太币的 gas,最终的结果将是,如果 A 每次向 B 发送 100 个 1 个以太币交易如何购买以太坊,则支付 0.@每笔交易 >01 以太币(无论谁收取交易费用)。要知道 B 现在是否被允许发送 100 个以太币,只要知道 B 当前的余额是多少就足够了。保存整个交易历史的完整节点称为完整存档节点。这些必须存在于网络上才能保持健康。

如何购买以太坊

节点也可以选择丢弃旧数据;如果 B 想向 C 发送 100 个以太币,那么这个以太币是如何获得的并不重要,只要 B 的账户中有 100 个以太币。相反,轻节点不会验证每个区块或交易,并且可能没有当前区块链状态的副本。他们依靠完整的节点为他们提供缺失的细节(或者只是缺乏特定的功能)。轻量级节点的优势在于它们可以更快地启动和运行,可以在更多计算/内存受限的设备上运行,并且不会占用几乎那么多的存储空间。不利的一面是,其他节点存在信任因素(取决于客户端和可用于降低风险的概率方法/启发式方法)。一些成熟的客户端包含更快同步的功能(例如,Parity 的 warp 同步)。

安装 Geth

可以在此处找到 Geth 在各种平台(Windows、macOS、Linux)上的安装说明。该列表非常全面且保持最新,因此我不会在文章中介绍它。

运行 Geth

要启动 Geth 节点,您唯一需要做的就是转到终端窗口并运行 geth。当你这样做时,你应该得到类似这样的输出:

~ geth
INFO [06-03|11:03:13] Maximum peer count                       ETH=25 LES=0 total=25
INFO [06-03|11:03:13] Starting peer-to-peer node               instance=Geth/v1.8.10-stable/darwin-amd64/go1.10.2
INFO [06-03|11:03:13] Allocated cache and file handles         database=/Users/mjvr/Library/Ethereum/geth/chaindata cache=768 handles=128
INFO [06-03|11:03:13] Writing default main-net genesis block
INFO [06-03|11:03:14] Persisted trie from memory database      nodes=12356 size=2.34mB time=48.31016ms gcnodes=0 gcsize=0.00B gctime=0s livenodes=1 livesize=0.00B
INFO [06-03|11:03:14] Initialised chain configuration          config="{ChainID: 1 Homestead: 1150000 DAO: 1920000 DAOSupport: true EIP150: 2463000 EIP155: 2675000 EIP158: 2675000 Byzantium: 4370000 Constantinople:  Engine: ethash}"
INFO [06-03|11:03:14] Disk storage enabled for ethash caches   dir=/Users/mjvr/Library/Ethereum/geth/ethash count=3
INFO [06-03|11:03:14] Disk storage enabled for ethash DAGs     dir=/Users/mjvr/.ethash                      count=2
INFO [06-03|11:03:14] Initialising Ethereum protocol           versions="[63 62]" network=1
INFO [06-03|11:03:14] Loaded most recent local header          number=0 hash=d4e567…cb8fa3 td=17179869184
INFO [06-03|11:03:14] Loaded most recent local full block      number=0 hash=d4e567…cb8fa3 td=17179869184
INFO [06-03|11:03:14] Loaded most recent local fast block      number=0 hash=d4e567…cb8fa3 td=17179869184
INFO [06-03|11:03:14] Regenerated local transaction journal    transactions=0 accounts=0
INFO [06-03|11:03:14] Starting P2P networking
INFO [06-03|11:03:16] UDP listener up                          self=enode://a4cb08519bc2bceecb8ad421871c624d5212888653bbaee309fda960f3c87ca7aa9855ee14684d521836ae88ad1986b8ca944348e976760d2bd1247ed3ca7628@[::]:30303
INFO [06-03|11:03:16] RLPx listener up                         self=enode://a4cb08519bc2bceecb8ad421871c624d5212888653bbaee309fda960f3c87ca7aa9855ee14684d521836ae88ad1986b8ca944348e976760d2bd1247ed3ca7628@[::]:30303
INFO [06-03|11:03:16] IPC endpoint opened                      url=/Users/mjvr/Library/Ethereum/geth.ipc

如何购买以太坊

在此之后,您应该会看到定期出现新行,Geth 说“导入新状态”或“导入新块头”或“导入新收据”。状态、块头和交易是以太坊树尝试的一部分:必须下载它们才能使您的节点与以太坊区块链同步。

这个过程可能需要很长时间,所以你可以选择运行这样一个轻量级的节点。

geth --light

Geth 现在需要做的就是拉取最新的区块头,并依靠其他完整节点使用 merkle 证明来验证交易。

访问 Geth 控制台

现在您已经创建了一个节点,您可以通过在终端中打开一个新选项卡并运行以下命令来访问它:

如何购买以太坊

geth attach

这会将 Geth 控制台(用于与区块链通信的 Javascript 环境)连接到您正在运行的节点。这可以在完全客户端模式和轻量模式下完成。

在控制台打开的情况下,输入以下内容:

web3.eth.blockNumber

你应该输出一个数字(例如5631487),它代表以太坊网络的当前区块号。

创建一个新帐户

如何购买以太坊

要使用区块链,您需要有一个帐户。使用 Geth,您可以通过在终端中运行以下命令来完成此操作:

geth account new

完成后,它会要求您输入密码以保护您的帐户。确保使用安全密码并安全存储。

Geth 在运行 geth account new 时所做的是更新 Geth 数据目录(Geth 存储所有必要数据的目录,包括区块和区块头信息)中的文件。各平台目录位置:

从其他客户端访问 Geth

当您启动 Geth 时,客户端会自动在端口 8545 上启动 RPC 服务器。您可以通过使用 web3js 或 web3j 之类的库连接到 localhost:8545 或使用 curl 手动调用它来访问该端口上的 RPC 服务器及其方法或 wget。

这里分享Geth的解析以及如何运行以太坊节点。希望以上内容能对你有所帮助如何购买以太坊,让你学习到更多的知识。如果您觉得文章不错,可以分享给更多人看到。