10分钟完成阿里云环境搭建以太坊私有链

简介: 10分钟快速搭建以太坊私有链

概述

本文主要介绍在阿里云的服务器上搭建一条以太坊私有链
为了避免因为环境因素造成的异常,如果是老的机器,所以这里建议重新格式化,选择公共镜像里面的系统版本

系统版本是:公共镜像,Ubuntu,16.04 64位
Geth的版本号是:1.7.3-stable

如果你执行的过程和下面有差异,先确认上面两个版本是否一致

一.阿里云服务器的准备

机器配置:我的机器配置是,CPU 1核,网络1M, 内存2G
镜像选择:公共镜像,Ubuntu,16.04 64位
等待系统重启

内存至少2G,如果不够,可以通过映射虚拟内存来扩充

二.安装ethereum

登录系统后,依次执行

apt-get update有的时候会很慢,耐心等待...

#更新软件包信息
apt-get update

#添加 ppa 到当前的库中并且自动导入公钥
apt-get install software-properties-common
add-apt-repository -y ppa:ethereum/ethereum
add-apt-repository -y ppa:ethereum/ethereum-dev
apt-get update

#安装ethereum
apt-get install ethereum

#安装完成后,查看版本号
geth version

这里大家再次确认下geth version 返回的版本号是否是1.7.3-stable,如果不一致后面的操作可能有不一致的地方

三.启动ethereum

3.1 创始区块信息准备

在工作目录(我的是/root/eth)下新建一个文件test_genesis.json,把下面内容复制进去

{
  "nonce":"0x0000000000000042",
  "mixhash":"0x0000000000000000000000000000000000000000000000000000000000000000",
  "difficulty": "0x1",
  "coinbase":"0x0000000000000000000000000000000000000000",
  "timestamp": "0x00",
  "parentHash":"0x0000000000000000000000000000000000000000000000000000000000000000",
  "extraData": "0x20180112",
  "gasLimit":"0x0000ffff",
  "coinbase": "0x660a107ee034Cb54bb05a22B5ecDdF050C8A2c90",
  "alloc": {},
  "config": {
    "chainId": 20180113,
    "homesteadBlock": 0,
    "eip155Block": 0,
    "eip158Block": 0
  }
}

3.2 创始区块初始化

执行下面命令,忽略WARN,如果打印Fatal,确认是否复制的时候有特殊字符插入

geth init /root/eth/test_genesis.json

3.3 启动测试链

geth --identity "test etherum" --rpc --rpccorsdomain "*" --datadir "/root/eth/data" --port "30303" --rpcapi "db,eth,net,web3" --networkid 20181013 console --dev

启动之后会打印启动信息,胡月,WARN,然后停留在命令行输入的地方

注意,如果一直在刷屏,显示在连接节点并同步区块,ctrl+c中断,回去确认3.2是否执行成功,出现节点不停在同步区块,是因为测试创始区块创建失败,导致连接到ETH网络上了

这里可以注意下最后一个WARN的信息

WARN [01-13|16:10:50] Block sealing failed                     err="waiting for transactions"

Geth启动后,自动开启挖矿,但是因为没有交易所以执行失败,这个时候执行miner.start()会一直返回null,这是正常的。

3.4 Geth命令测试

用户命令测试

#返回钱包管理的账户地址列表  
#返回示例:["0x3138e3722fb4280cb67f6e858108136bfa1c9160"]
eth.accounts

#创建账户地址,参数为账户锁定密码,在转账前需要先解锁账户
#我们把这个命令运行两次,创建两个地址,加上默认的,一共有了三个账户地址
personal.newAccount('111111')
personal.newAccount('111111')

#为账户设置别名,方便命令输入
user1=eth.accounts[0]
user2=eth.accounts[1]
user3=eth.accounts[2]

#查看地址user1余额,这个地址是测试链默认开通的一个地址,里面初始化有很多币
#我们创建的另外两个地址余额未0
eth.getBalance(user1)

#查看区块高度,现在为0
eth.blockNumber

#转账测试,首先解锁账号user1
#命令运行后要求输入解锁密码,直接回车,默认账号锁定密码为空,返回true成功
personal.unlockAccount(user1)

#从user1向user2转账3个以太币
#命令运行后,提交交易立马回出发挖矿
eth.sendTransaction({from:user1,to:user2,value:web3.toWei(3,"ether")})

#查看区块高度,这时高度为1
eth.blockNumber

挖矿测试

geth启动后,自动启动挖矿,这时运行miner.start(),返回为null
无交易的时候不挖矿,当有交易时自动会触发挖矿流程

#我们可以先停止挖矿
miner.stop()

#提交交易,这时候只提交,查看账户余额,但是未确认
eth.sendTransaction({from:user1,to:user2,value:web3.toWei(3,"ether")})

#启动挖矿,确认交易,再次查看账户余额
miner.start()

#那么挖矿奖励去哪儿了?查看矿工地址
eth.coinbase

#设置矿工地址
miner.setEtherbase(eth.coinbase)
目录
相关文章
|
API iOS开发
彻底搞懂同步与异步,阻塞/非阻塞
彻底搞懂同步与异步,阻塞/非阻塞
3180 0
|
6月前
|
存储 Oracle Java
大厂(转转、携程、京东)都用分代ZGC,卡顿降低20倍,吞吐量提升4倍。分代ZGC 这么牛?底层原理是什么?
大厂(转转、携程、京东)都用分代ZGC,卡顿降低20倍,吞吐量提升4倍。分代ZGC 这么牛?底层原理是什么?
|
4月前
|
JSON 前端开发 API
开箱即用的GO后台管理系统 Kratos Admin - API管理
Protobuf具有序列化后数据量更小、序列化/反序列化速度更快、更简单的特性;而JSON则相反,序列化后数据量较大,序列化和反序列化速度不优的特性,但是前端对JSON是原生支持,对前端极其友好。那么,我们可以在服务之间使用gRPC进行通讯,服务与前端之间可以通过RESTfull进行通讯。
130 0
|
11月前
|
监控 并行计算 搜索推荐
量子计算与医疗健康:个性化治疗的未来
量子计算以其强大的并行处理能力,正在医疗健康领域引发革命,尤其是在个性化治疗方面。本文探讨了量子计算在高效处理医疗数据、精确模拟生物分子、优化医疗资源分配等方面的应用,以及面临的挑战和未来前景。
|
11月前
|
JavaScript
新年倒计时动画网页特效源码
新年倒计时动画网页特效源码是一段基于JS实现的中国节日元旦2025年倒计时动画效果代码,利用此代码,可以实现任意节日的倒计时效果,欢迎对此代码感兴趣的朋友前来下载参考。
197 6
|
SQL 监控 druid
Druid连接池学习
Druid学习笔记,使用Druid进行密码加密。参考文档:https://github.com/alibaba/druid
1123 84
Centos8安装yum源时候出现的异常问题及解决方案(保好使)
Centos8安装yum源时候出现的异常问题及解决方案(保好使)
|
机器学习/深度学习 数据采集 人工智能
【机器学习】MS_MARCO_Web_Search解析说明
【机器学习】MS_MARCO_Web_Search解析说明
226 0
|
Java API
java如何对接波场链
java如何对接波场链
1315 8
|
机器学习/深度学习 存储 人工智能
Zero-Shot, One-Shot, and Few-Shot Learning概念介绍
Zero-Shot, One-Shot, and Few-Shot Learning概念介绍
8483 0