以太坊区块链学习之搭建私链

简介:

初学者了解以太坊,最好的办法之一就是先搭建一条私链,在上面创建账户,部署合约,并试着与之交互。当完成了这一系列步骤后,对在以太坊上进行应用开发,就是顺理成章的事情了。

开发需要

geth客户端,本篇是基于MacOS10.12的操作系统,建议使用Mac或者装有unbuntu的电脑进行开发,其实如果要长期学习区块链的话,不建议使用Windows。

第一步

创建一个genesis.json文件,内容如下:

[plain]  view plain  copy
  1. {  
  2.   "config": {  
  3.         "chainId": 10,  
  4.         "homesteadBlock": 0,  
  5.         "eip155Block": 0,  
  6.         "eip158Block": 0  
  7.     },  
  8.   "coinbase"   : "0x0000000000000000000000000000000000000000",  
  9.   "difficulty" : "0x2000",  
  10.   "extraData"  : "",  
  11.   "gasLimit"   : "0x8000000",  
  12.   "nonce"      : "0x0000000000000042",  
  13.   "mixhash"    : "0x0000000000000000000000000000000000000000000000000000000000000000",  
  14.   "parentHash" : "0x0000000000000000000000000000000000000000000000000000000000000000",  
  15.   "timestamp"  : "0x00",  
  16.   "alloc": {}  
  17. }  

如果你是初次接触区块链,不必对文件中的内容感到困惑,更不用被他们吓到,当你完成了私链的搭建,并在其上完成了创建账户、挖矿、部署合约以及与之交互的工作后,再回过头看这份JSON文件,你就会明白其中许多键值对的含义了。在后续的博客中,我会进行解释。

第二步
打开终端,创建一个目录,把JSON文件放入该目录

[plain]  view plain  copy
  1. mkdir privateNet  
  2. mv 你的genesis.json privateNet/  
  3. cd privateNet  

第三步
创建创世区块。

[plain]  view plain  copy
  1. geth --datadir "./" init genesis.json  

wc1QQPyDaFuWwAAAABJRU5ErkJggg==

--datadir "./"指定私链数据存放的文件夹位置,init初始化genesis.json,创建创世区块。如果执行成功,在终端大致会是这个样子
同时,查看你指定的存放私链数据的文件夹,会多出两文件夹geth、keystore。这两个文件夹是干什么用的呢?geth文件夹下用来存放私链的相关数据,keystore文件夹下存放的是该链的用户信息。在围绕私链的一系列动作完成后,你会有所理解。

第四步

创建私链

[plain]  view plain  copy
  1. geth --datadir "./"  console 2>>geth.log  

console 2>>geth.log 将私链的日志打印到geth.log中,在你的存放私链的文件夹里你会找到该文件,另开一个终端,来到geth.log所在目录,执行命令:

[plain]  view plain  copy
  1. tail -f geth.log  

你将在这个终端中实时的看到私链的状况。

至此,私链已经搭建完成。当然,我们应该体验一把辛苦搭建的私链

创建账户

回到之前创建私链的那个终端,可以看到,此时的终端处于待输入状态,输入

[plain]  view plain  copy
  1. eth.accounts  

将会返回[],此时的私链还没有账户,输入

[plain]  view plain  copy
  1. personal.newAccount("password")  

回车后会返回一串hash,返回的hash代表创建账户的地址,这条命令中的password代表该账户的密码,可以随意指定。这是再输入eth.accounts将会返回刚刚创建的账户的地址,根据返回值我们可以知道,账户以数组形式存在,因此我们输入eth.accounts[0],也会返回刚刚创建账户的地址。

查询账户余额
输入

[plain]  view plain  copy
  1. eth.getBalance(eth.accounts[0])  

返回值为账户余额,此时账户余额为0。

挖矿
听到挖矿,第一反应肯定是,挖币赚钱,没错,接下来我们也要挖出我们的“以太币”,来“赚钱”了!输入:

[plain]  view plain  copy
  1. miner.start(1)  

返回值会为true或者null,这都没什么影响,查看另一个终端,会看到有块正在生产。命令中的参数1代表只用当前机器的一块处理器进行挖矿,如果不输入参数,默认是“全力挖矿”,这样电脑会很容易发热。
2sNQRAEQRAEQRCEPygiuARBEARBEARBENoJEVyCI

在geth终端再次输入

[plain]  view plain  copy
  1. eth.getBalance(eth.accounts[0])  

会返回一长串数字,这些数字就是你在过去几秒或者几分钟内挖出的币,如果这是真的以太币,那你在过去几秒已经赚取了不菲的财富了!你可能会疑惑,为什么几秒钟的功夫就能够得到这么多币呢?这是因为你产生了足够多的区块。那为什么产生区块的速度这么快呢?这是因为,在最开始我们的genesis.json文件中,有一项叫做

[plain]  view plain  copy
  1.   
[plain]  view plain  copy
  1. "difficulty" : "0x2000"  
 

这一项用来控制我们挖矿的难度,我们设置的难度“偏低”,大家可以改变它的值,重新搭建私链试试。

至此,你已经掌握了私链的搭建以及创建账户、查看余额、挖矿的工作了,下一篇博客将讲述如何在这个私链上部署合约并与之交互。

当然,别忘了停止挖矿:输入指令:

[plain]  view plain  copy
  1. miner.stop()  

返回true,挖矿停止。



原文发布时间为:2018年02月06日
本文作者:FlyingApe
本文来源:CSDN,如需转载请联系原作者。

目录
相关文章
|
弹性计算 数据可视化 Ubuntu
基于阿里云ECS搭建FISCO-BCOS区块链
用ubuntu操作系统下的ECS搭建FISCO-BCOS节点,开发区块链网络
基于阿里云ECS搭建FISCO-BCOS区块链
|
前端开发 算法 Go
新版以太坊Ethereum库ethersV5.0配合后端Golang1.18实时链接区块链钱包(Metamask/Okc)以及验签操作
区块链去中心化思想无处不在,比如最近使用个体抗原自检替代大规模的中心化核酸检测,就是去中心化思想的落地实践,避免了大规模聚集导致的交叉感染,提高了检测效率,本次我们使用Ethereum最新的ethersV5.0以上版本链接去中心化区块链钱包,并且通过后端Golang1.18服务进行验签。
新版以太坊Ethereum库ethersV5.0配合后端Golang1.18实时链接区块链钱包(Metamask/Okc)以及验签操作
|
存储 算法 架构师
区块链零基础学习线路(二)
区块链零基础学习线路(二)
252 0
区块链零基础学习线路(二)
|
存储 供应链 安全
区块链零基础学习线路(一)
区块链零基础学习线路(一)
245 0
区块链零基础学习线路(一)
|
存储 供应链 安全
景蓝交易所源码php区块链交易所源码/币币/法币/合约交易/配资上币/带搭建教程
景蓝交易所源码php区块链交易所源码/币币/法币/合约交易/配资上币/带搭建教程
景蓝交易所源码php区块链交易所源码/币币/法币/合约交易/配资上币/带搭建教程
|
安全 区块链 开发工具
区块链交易所是什么?交易所搭建
数字货币交易所搭建的功能介绍
|
区块链
关于区块链公排互助DAPP系统开发搭建(程序代码)
关于区块链公排互助DAPP系统开发搭建(程序代码)
113 0
|
存储 供应链 算法
区块链从入门到放弃系列教程-涵盖密码学,超级账本,以太坊,Libra,比特币等持续更新
区块链从入门到放弃系列教程-涵盖密码学,超级账本,以太坊,Libra,比特币等持续更新
区块链从入门到放弃系列教程-涵盖密码学,超级账本,以太坊,Libra,比特币等持续更新
|
前端开发 算法 数据挖掘
俄罗斯央行:急需数字卢布,不会推迟 CBDC 测试;腾讯发布多个 Web3 岗位招聘信息;V 神:自己对以太坊的影响力不断下降 | 区块链周报
区块链周报栏目从产业动态、技术进展和政策监管等方面,为您总结了本周区块链领域发生的头条事件,让您更快速了解行业最新动态。
105 0
|
Rust JavaScript 前端开发
区块链开发(八)以太坊不同语言客户端地址
区块链开发(八)以太坊不同语言客户端地址
107 0

热门文章

最新文章