上一篇文章 详细的说明了如何在 Ubuntu 环境下编译 go-ethereum ,本节内容为 搭建基于 go-ethereum 的以太坊私有链环境
the previous article details how to compile go-etherium & #xff0c in Ubuntu environments; this section describes the construction of a go-etheium-based private chain environment based on go-etheium
原文链接:ETH开发(二)搭建基于go-ethereum的以太坊的私有链环境
Original link & #xff1a; ETH Development & #xff08; IIxff09; built a go-etheium-based private chain environment
重新加载 profile 文件,加载环境变量到内存,否则会提示 geth 命令未找到
Reload profile & #xff0c; load environment variables to RAM & #xff0c; otherwise the geth command is not found
测试
Test
- 更正系统时间,便于后续日志查看
点击右上角时间–时间设置,然后点击地图设置为 Shanghai
Click upper right corner time - time set & #xff0c; then click map set to Shanghai
同步主网做为节点,需要满足以下条件:
Synchronize the main network as node xff0c; the following conditions need to be met xff1a;
- 空余磁盘 500G 以上。目前,全球交易数据大约在350G 以上
- 需要足够的带宽
学习使用 nohup
nohup 命令:nohup
nohup 命令运行由 Command 参数和任何相关的 Arg 参数指定的命令,忽略所有挂断(SIGHUP)信号。在注销后使用 nohup 命令运行后台中的程序。
The nohup command runs the command & #xff0c specified by the Command parameter and any relevant Arg parameter; ignores all hangings & #xff08; SIGHUP) signals. Use nohup command to run a program on the backstage after write-off.
- 要运行后台中的 nohup 命令,添加 & ( 表示“and”的符号)到命令的尾部。
- nohup 是 no hang up 的缩写,就是不挂断的意思。
:nohup 后的命令会执行
Commands after & #xff1a;nohup will be executed
什么情况下使用 nohup 命令?
When
如果你正在运行一个进程,而且你觉得在退出帐户时该进程还不会结束,那么可以使用 nohup 命令。该命令可以在你退出帐户/关闭终端之后继续运行相应的进程。在缺省情况下该作业的所有输出都被重定向到一个名为 nohup.out 的文件中。
If you are running a process xff0c; and you do not think that the process will end xff0c when you exit the account; then you can use the nohup command. This command can continue the corresponding process after you exit the account/ close the terminal. In default, all the output of the operation is redirected to a file named nohup.out.
命令详解
Detailed description of the command
nohup geth --datadir="/data/gethdata" --rpc --rpcaddr=0.0.0.0 --rpcport=8545 --cache=512 --maxpeers 9999 --rpcapi=“web3,eth,net,personal,db,admin” --rpccorsdomain="*" > https://blog.csdn.net/chaoge_dgqb/article/details/geth.log &2>1
- 使用 nohup 监听 geth ,配置以下参数后,将其作业的所有输出重定向到当前目录下的 geth.log 文件, 表示将错误重定向到标准输出上
参数 | 解释 | 配置 |
---|---|---|
–datadir | 数据库和秘钥存储库 | /data/gethdata |
–rpc | 启用 HTTP-RPC 服务 | |
–rpcaddr | RPC 监听地址 | 0.0.0.0(任何 IP 都可以) |
–rpcport | RPC 监听接口 | 8545(自定义) |
–cache | 内部缓存 | 512 |
–maxpeers | 最大网络对等点数量 | 9999 |
–rpcapi | RPC 接口API | web3,eth,net,personal,db,admin |
rpccorsdomain | 接受的跨源请求域名 |
查看正在运行的程序:
View running programsxff1a;
可以看到 geth 已经在运行了,查看一下运行日志
br/> can see that geth is running xff0c; check the running log
接着,通过加载 .ipc 文件的办法启动 geth 客户端,可以开始挖矿
& #xff0c; start geth client & #xff0c by loading.ipc files; can start mining
attach: 启动交互式 JavaScript 环境(连接到节点)
Attach: Start interactive JavaScript environment (connect to node)
显示如下,表示启动了 ETH 节点的模块
Displays the following #xff0c; represents modules that have started the ETH node
Welcome to the Geth JavaScript console!
instance: Geth/v1.9.21-unstable-d54f2f2e-20200908/linux-amd64/go1.14.4 at block: 0 (Wed Dec 31 1969 16:00:00 GMT-0800 (PST))
datadir: /data/gethdata modules: admin:1.0 debug:1.0 eth:1.0 ethash:1.0 miner:1.0 net:1.0 personal:1.0 rpc:1.0 txpool:1.0 web3:1.0
退出 geth 环境
Quit geth environment
关闭 geth
Close geth
启动一个区块链网络,需要创建创世区块,然后建立区块节点,才能启动区块链网络,同一个网络中,创世区块必须一样,否则无法连通。
Initiation of a network of blocks & #xff0c; creation of creation blocks & #xff0c; then creation of block nodes & #xff0c; activation of block chain networks & #xff0c; in the same network & #xff0c; creation blocks must be the same xff0c; otherwise they cannot be connected.
- 如果你的 gethdata 里已经有文件了,则需要删除并重新创建
- 通过配置创世块来创建私有链:新建创世块 json 文件
输入以下内容:
Enter the following #xff1a;
参数解释,详细信息见:以太坊genesis.json配置文件中各参数解释
Parameter explanation xff0c; for details see xff1a;
参数 | 描述 | 配置 |
---|---|---|
chainId | 主网,搭建私有链必须为非 1 | 8888 |
nonce | 64位随机数,用于挖矿 | 0x42 |
timestamp | 创世块的时间戳 | 0x0 |
extraData | 附加信息,随便填 | |
gasLimit | 限制区块能包含的交易信息总和,私有链填最大 | 0xffffffff |
difficulty | 当前区块的难度 | 0x1 |
alloc | 预置账号以及账号的以太币数量 |
初始化区块链
显示如下,说明创世区块成功创建
xff0c showing
编写启动脚本
该命令如下
The order is as follows:
nohup geth --rpc --rpccorsdomain “*” --datadir “https://blog.csdn.net/chaoge_dgqb/article/details/” --port 30304 --rpcapi “db,eth,net,web3,personal,web3” --networkid 8888 --rpcport 8545 --rpcaddr “0.0.0.0” --allow-insecure-unlock > https://blog.csdn.net/chaoge_dgqb/article/details/geth.log &2>1
参数 | 解释 | 配置 |
---|---|---|
–networkid | 8888 | |
–allow-insecure-unlock | 当与帐户相关的rpc被http公开时,允许不安全的帐户解锁 |
- networkid 选项,主网配置为 1 ,其他3、4、5都是以太坊坊社区部署的测试网络,我们是建立自己的私链,定义为8888
- allow-insecure-unlock 选项,方便我们解锁节点账户,如果是主网,不建议配置,否则,你存入节点账户的钱,会瞬间被黑客黑走
注意:此时 geth 已经在运行了
notes and #xff1a; now geth is already running. ]
进入
Enter
输入 会显示与以太坊网络交互的一些方法
Enter some of the methods that will show interaction with the Etherm network
看到 accounts: [] 说明,我们还没有创建账户,我们在节点上创建第一个账户
See accounts: [ ] Description & #xff0c; we have not created an account & #xff0c; we create the first account on node
创建账户
- personal.newAccount(“密码”),这个密码,就是我们要操作第一个账户的时候使用的密码
0xfbe2d1668e3ebaa97ca1c117793344a040817343
再次输入 可以看到 accounts 变化了,所有的 accounts 以列表的形式存储,且 coinbase = accounts[0]
Enter again to see changes in accounts & #xff0c; all accounts store & #xff0c; coinbase & #61; accounts [0]
personal.newAccount() 方法在源码的 go-ethereum/console/bridge.go 中
Personal. newAcaccount() method in go-etherium/console/bridge.go
NewAccount 是对个人信息的包装。使用非回显密码提示符获取密码短语并执行原始 RPC 方法(保存在 jeth.newAccount 中)以实际执行 RPC调用的方法
NewAcaccount is the packaging of personal information. Use non-reflection password prompts to get password phrases and execute the original RPC method (saved in jeth. newAcaccount) to actually execute the RPC call method
通过查看源码,可以看到 personal 的各种方法
View source & #xff0c; see methods for personal
或者也可以输入 personal 来查看:
Or you can enter a personial to view & #xff1a;
显示如下
Show as follows:
挖矿
具体参考:ethereum入门-常用命令示例(包括创建用户、挖矿、交易等)
查看挖矿进账的用户,默认为本地账户中的第一个账户
View mine entry & #xff0c; default is the first account in a local account
设置挖矿的用户
Set the miner's user
- 开始挖矿
- 启用 10 个线程开始挖矿
miner.start() 方法在 go-ethereum/miner/miner.go 中
Miner. start() method in go-otherium/miner/miner.go
或者通过输入 来查看方法,显示如下
br/> or enter to view the method xffc; see below
- 查看挖矿状态
true
- 即使退出了 JavaScript Console,只要 geth 还在后台运行,就会一直在挖矿
- 停止挖矿
- 查看收益(以太坊币)
352000000000000000000
- 查看日志
以太坊币介绍
Ether 币最小单位是 Wei,1 以太币=1*10^18 Wei
The smallest units of Ether are Wei, 1 in Tails #61; 1*10~18 Wei
1 ? e t h e r = 1 × 1 0 3 ? f i n n e y = 1 × 1 0 6 ? s z a b o = 1 × 1 0 9 ? g w e i = 1 × 1 0 12 ? m w e i = 1 × 1 0 15 ? k w e i = 1 × 1 0 18 ? W e i 1 \ ether = 1 imes10^3 \ finney = 1 imes10^6 \ szabo= 1 imes10^9 \ gwei= 1 imes10^{12} \ mwei = 1 imes10^{15} \ kwei= 1 imes10^{18} \ Wei 1?ether=1×103?finney=1×106?szabo=1×109?gwei=1×1012?mwei=1×1015?kwei=1×1018?Wei
- ether 与 Wei 的转换
“1000000000000000000”
“1”
转账操作
先看看有几个账户
Let's see how many accounts there are.
[“0xfbe2d1668e3ebaa97ca1c117793344a040817343”, “0xffae391d253d6bad1534af32ad3d7a991a0b3987”]
创建需要转账的 2 个账户,密码分别为 123 与 456
Create 2 accounts to transfer & #xff0c; passwords 123 and 456 respectively
查看账户余额
View account balances
如果有多个账户,在 下新建一个 js 文件
If multiple accounts & #xff0c; create a new js file under
输入以下函数:
Enter the following function xff1a;
进入,然后装载该脚本
Enter & #xff0c; then load the script
使用定义的函数查看账户余额
View account balances using defined functions
eth.accounts[0]: 0xfbe2d1668e3ebaa97ca1c117793344a040817343 balance: 0 ether
eth.accounts[1]: 0xffae391d253d6bad1534af32ad3d7a991a0b3987 balance: 0 ether
eth.accounts[2]: 0x57ba41ee26cbbd823b7c544626e660e9220a3ea4 balance: 0 ether
eth.accounts[3]: 0xc5e74ba4b26e2cde7c8800fa4afa7ec4d0a426ad balance: 0 ether
Total balance: 0 ether
由于账户余额没有以太币,因此需要先挖矿
指定账户3 为 ,并启用 10 个线程挖矿
& #xff0c since the account balance is not xff0c;
is required to dig first to specify account 3 as & #xff0c; 10 lines are enabled to dig mine
查看账户余额(挖矿约 10 分钟)
View account balance xff08; dig about 10 minutes xff09;
eth.accounts[0]: 0xfbe2d1668e3ebaa97ca1c117793344a040817343 balance: 0 ether
eth.accounts[1]: 0xffae391d253d6bad1534af32ad3d7a991a0b3987 balance: 0 ether
eth.accounts[2]: 0x57ba41ee26cbbd823b7c544626e660e9220a3ea4 balance: 338 ether
eth.accounts[3]: 0xc5e74ba4b26e2cde7c8800fa4afa7ec4d0a426ad balance: 0 ether
Total balance: 338 ether
可以看到账户 3 有 338 个 以太坊币,现在可以开始转账了(交易)
The account 3 has 338 in #xff0c; the transfer can now be started xff08; the transaction xff09;
- 定义转账、收账的用户以及转账金额
- 解锁账户(需要密码 123)
- 转账,并生成交易 Hash
“0xa55ab52b805bab27bbfd4edbd185a68d99e7172a3edbc37de7168fbf978535b7”
- 查询一下是否转到另一个账户里
- 根据交易 Hash 查询
转账过程如果有错误请看:Stack OverFlow
注册有任何问题请添加 微信:MVIP619 拉你进入群
打开微信扫一扫
添加客服
进入交流群
发表评论