初学者如何快速搭建以太坊私有链并学习区块链开发入门

2025-04-18
来源:网络整理

我最近开始了解区块链,并开始学习以太坊。以太坊不是我们简单地理解可以交易以太的平台。它是具有智能合同功能的开源公共区块链平台。在这个平台上,其专用的加密货币以太坊(ETH)提供了一个分散的以太网虚拟机环境来处理点对点合同。

作为初学者,这是快速进入以太坊学习阈值并建立以太坊链的好方法。通过创建帐户,部署合同并在私人链上进行交易,完成这些系列操作,您可以首先了解理解以太坊并根据以太坊开发的方式。

1。环境准备

为了将来更深入地学习与区块链相关的技术,并避免在构建私人链的过程中避免各种莫名其妙的问题,以便看起来更高:),我选择完成系统下的私人连锁店的建设。特定环境如下:

主机系统:10专业版

虚拟机:Pro 12.5.4

操作系统:18.4.1 64位

2。安装Geth

Geth是以太坊的客户,其全名是Go-。以太坊的客户用于访问以太坊网络并执行相关操作,例如帐户管理,交易,采矿,智能合同部署和开发。当前,有多种语言实现的客户端。 Geth用GO编写,并支持访问以太坊网络并成为一个完整的节点。它也可以用作HTTP-RPC服务器来提供JSON-RPC接口。其他常用的以太坊客户如下:

安装Geth有两种方法。一种是直接下载以安装程序,另一个是通过编译源代码来安装它。在这里,我选择通过下载程序安装它。

打开命令行窗口并执行以下命令:

sudo apt-get install software-properties-common sudo add-apt-repository -y ppa:ethereum/ethereum sudo add-apt-repository -y ppa:ethereum/ethereum-dev sudo apt-get update sudo apt-get install ethereum

执行上述命令后,执行以下命令:

geth --help

它将显示诸如GETH版本和命令参数之类的信息。

附加GIT项目地址和Wiki地址

git:

Wiki:

3。定义创建块

1。创建一个工作目录

## 尽量不要在需要管理员权限的路径下创建工作目录,避免出现因权限问题引起的麻烦 mkdir ~/privatechain ## data目录用于存放账户信息和区块数据 mkdir ~/privatechain/data

2。创建一个创世纪块配置文件

在目录中创建一个新的.json文件,并且文件内容如下:

{ "config": { "chainId": 10, "homesteadBlock": 0, "eip155Block": 0, "eip158Block": 0 }, "coinbase" : "0x0000000000000000000000000000000000000000", "difficulty" : "0x2000", "extraData" : "", "gasLimit" : "0xffffffff", "nonce" : "0x0000000000000042", "mixhash" : "0x0000000000000000000000000000000000000000000000000000000000000000", "parentHash" : "0x0000000000000000000000000000000000000000000000000000000000000000", "timestamp" : "0x00", "alloc": { "08a58f09194e403d02a1928a7bf78646cfc260b0": { "balance": "0x200000000000000000000000000000000000000000000000000000000000000" }, "87366ef81db496edd0ea2055ca605e8686eec1e6": { "balance": "0x200000000000000000000000000000000000000000000000000000000000000" } } }

如果您首先联系以太坊,那么您是否不了解文件的内容也没关系。一旦我们完成了整个私人链的创建并完成链条上的帐户,合同和交易的相关操作,我们将了解大多数含义。下表简要说明了配置文件:

参数名称描述

指定了独立的区块链网络ID。连接到其他节点时将使用网络ID。以太坊公共网络的网络ID为1。为了不与公共链网络冲突,您必须在运行私有链节点时指定自己的网络ID。具有不同ID网络的节点无法彼此连接

设置为0时,这意味着该链接使用

这是一个64位随机数,用于采矿。请注意,总和设置需要满足以太坊中描述的条件,4.3.4。,(44)

与上一个块的一部分生成的哈希相结合。请注意,其设置需要满足以太坊中描述的条件,4.3.4。,(44)

设置设置当前块的困难,开采越大,它越难

用于预设帐户和帐户的以太硬币的数量。由于私人连锁开采更容易,因此我们也不需要预先设置用硬币的帐户。您可以在需要时自己创建它。

以太坊连接_以太坊支付接口_以太坊接口和php对接

矿工的帐户可以按照您的意愿写

设置创建块的时间戳

上一个块的哈希,创世纪块的参数为0

可以按照您的意愿编写其他信息

此值设置了气体的总消耗限制,并用于限制块可以包含的交易信息总和。我们创建了一个可以填充最大的私人链

3。创建创建块

cd ~/privatechain geth --datadir ./data init genesis.json

执行上述命令后,下面的数据目录将生成两个目录,其结构如下:

在:

目录用于保存我们构建的私人链的块数据。

目录用于保存用户的帐户数据

4。开始私人链

执行以下命令启动私人链:

## --datadir 表示当前区块链网络数据存放的位置 ## --nodiscover 表示该链禁止被其他节点发现 ## console 2>>geth.log 表示将日志输出到geth.log。可以打开另外一个控制台执行 tail -f 查看日志 geth --datadir ./data --nodiscover console 2>>geth.log

成功启动后,下图显示了下图:

还有一种启动方法,用于启动PRC通信,而启动命令如下:

geth --nodiscover --identity "my etherum" --rpc --rpccorsdomain "*" --datadir ./data --port "30303" --rpcapi "db,eth,net,web3" --networkid 10 --allow-insecure-unlock console 2>>geth.log

下表显示了PRC启动命令的参数:

参数名称描述

区块链徽标用于指示当前网络的名称

关闭自动发现P2P网络,您需要手动添加节点,这有助于我们隐藏私人网络。

init

指定创建块文件的位置并创建创建块

当前的块数据存储

港口

网络侦听端口,默认

RPC

开始RPC通信

设置允许连接到RPC的客户端,通常是DB,ETH,NET,WEB3

指定什么URL可以连接到您的节点以执行RPC自定义端任务。如果您键入“*”,则可以将任何URL连接到您的RP​​C实例

连接RPC的地址是

连接到RPC的端口默认为8545

设置用于区分不同网络的当前区块链的网络ID是一个数字

启动命令行模式,您可以在Geth中执行命令

如果在创建创世纪块之前启动了私有链,则在创建 配置文件后,您可以使用以下命令重新输入Geth ,并使用配置文件更新块:

geth --datadir data --networkid 10 console

提示: - 参数是 配置文件

5。创建一个帐户

为了方便测试后测试,我们创建了两个帐户,以演示帐户之间的转移操作。

启动私有链后,在控制台中输入以下命令:

## newAccount的参数为账号密码,这里新账户的密码分别是123456和000000 > personal.newAccount("123456") > personal.newAccount("000000")

创建帐户后,将返回遗传哈希代码,这代表新创建的帐户的地址。

此时,查询有关私人链的帐户和帐户余额信息,并将返回相应的结果。

私人链接上的帐户信息如下显示

由于采矿尚未开始,帐户中的余额为0

6。采矿

新创建的帐户没有平衡。只有通过采矿赚钱才能有收入。以下是如何开始采矿的方法。

1。开始采矿

## start的参数表示挖矿使用的线程数,若不写表示使用最大线程数。返回true或null表示执行成功 > miner.start()

当= 100时,开采将开始

暗示:

2。停止采矿

执行以下命令停止采矿

> miner.stop()

以太坊接口和php对接_以太坊支付接口_以太坊连接

采矿后再次检查帐户余额

挖掘块时,将奖励5个以太硬币。从采矿获得的奖励将输入矿工的帐户。该帐户被调用,默认情况下,它是本地帐户中的第一个帐户。

此时,第二个帐户的余额仍然为0

我们可以将其他帐户设置为

重新开始开采,一段时间后,检查第二个帐户下的余额。目前,帐户已经有一个余额。

此时显示的帐户余额的单位是WEI。如果要将其转换为,则可以执行以下操作:

可以看出,第一个和第二个帐户的以太余额分别为5和15,这表明它们分别开采了1个块和3个块。

提示:WEI是以太的最小单位,1th()= 1,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000亿。通常,人们也将GWEI用作显示单元。最常用的是ETH,GWEI和WEI。以太坊还有其他单位,其转换关系如下:

7。转移

在本节中,我们演示了转移操作。在转移资金之前,让我们看一下两个帐户的余额:

执行以下传输命令将第一个帐户的2个以太硬币转移到第二个帐户:

> amount = web3.toWei(2,'ether') > eth.sendTransaction({from:eth.accounts[0], to:eth.accounts[1], value:amount})

执行后,将显示如下:

从提示可以看出,该帐户未解锁,并且需要在执行转移操作之前将其解锁。解锁命令如下:

## 第一个参数为解锁的账户,第二个参数是账户密码 personal.unlockAccount(eth.accounts[0],‘123456’)

返回true以表示成功解锁

在下面重新执行上述转移操作,返回结果如下:

转移成功后,该交易的哈希码输出。

目前检查帐户信息,发现帐户余额尚未更改。

这是因为它目前不处于采矿状态,只有在采矿状态下才能确认包装交易。但是目前,我们可以看到在交易池中确认的交易。执行命令查看事务池信息:

> txpool.status

从返回结果我们可以看到要确认交易。

运行以下命令以查看要确认的交易的详细信息:

> eth.getBlock("pending", true).transactions

返回交易信息如下:

目前,我们重新启动采矿并以后检查帐户信息:

您会看到第二个帐户还有2个ETH。如果您正在开采时间段,请在此时检查第一个帐户,则应比以前少2个ETH。如果采矿时间很长,则帐户余额应该会大大变化,并且比以前更多。

8。查看块和交易信息

1。查看块信息

> eth.blockNumber

> eth.getBlock(1)

2。检查交易信息

在交易成功之后,检查交易哈希输出。通过此哈希,我们可以查看交易详细信息

> eth.getTransaction("0x5372d5d4580c5cd2055e13e31d81079ffe64fa151930cc5c70f8c1659d527249 ")

结果返回如下:

9. Geth 的常见对象和命令

Geth控制台具有用于操纵以太坊的内置对象,用户可以直接使用这些对象。主要包括:

这些对象的常见命令是:

在这一点上,建造机器上以太坊私有链的所有步骤都已完成。后来,我将继续引入“建立Geth环境”和“ Geth 的多节点操作”。

分享