Geth安装和使用
一、简介
Geth是Go Ethereum开源项目的简称,它是使用Go语言编写且实现了Ethereum协议的客户端软件,也是目前用户最多,使用最广泛的客户端。通过Geth客户端与以太坊网络进行连接和交互可以实现账户管理、合约部署、挖矿等众多有趣且实用的功能。
ganache也是客户端,两个都可以用来协助开发DAPP
下载地址:https://geth.ethereum.org/downloads/ 下载后安装即可
二、使用
1. 在某个磁盘创建一个数据存储目录如D:\testGeth,新建创世区块描述文件genesis.json,内容如下:
{
"difficulty" : "0x20000",
"extraData" : "",
"gasLimit" : "0x8000000",
"alloc": {},
"config": {
"chainId": 15,
"homesteadBlock": 0,
"eip155Block": 0,
"eip158Block": 0
}
}
genesis.json是创世区块配置文件,通过此配置让我们很容易挖矿以方便测试,具体每个字段的含义可暂时忽略!
2. 在命令行窗口进入到D:\testGeth目录下,执行创世区块的初始化,命令如下:
geth --datadir data init genesis.json
此时在testGeth目录下会生成data目录,data目录又包含geth和keystore目录,geth目录存储区块数据,keystore目录则保存账户信息。命令执行结果如下:
目录如下:password中存储的是两个测试账户的密码和private_blockchain_start.sh用于启动geth客户端,可以暂时不用管
3. 启动节点连接私有测试网络,命令行下输入:
geth --datadir data --networkid 123 --nodiscover console
--networkid 123参数表示区块链网络ID标识,--nodiscover参数表示节点私有,console参数表示进入geth控制台。
连接测试网进入控制台,此时我们已经进入geth测试网的交互式控制台,窗口也显示「Welcome to the Geth JavaScript console」成功提示!
4. Geth使用
在以太坊网络中,账户是其重要的组成部分,下面我们以查询链上账户列表开始常用的指令功能。
- 查询账户列表 输入指令:eth.accounts 输出结果:[]
含义:意思是无账户地址,因为我们什么也没做,所以当然是不会凭空出现账户了。
- 创建新账户 输入指令:personal.newAccount("123") 输出结果:
含义:表明账户新建成功,返回账户地址,123为账户密码。此时我们再次查询账户列表会发现已有刚创建的地址了。
- 查询账户余额 输入指令:eth.getBalance(eth.accounts[0]) 输出结果:0
含义:表明这个账户的余额是0。
- 启动或停止挖矿 输入指令:miner.start();admin.sleepBlocks(1);miner.stop()
输入指令: eth.getBalance(eth.accounts[0])
输出结果:5000000000000000000
含义:这三条指令意思是启动挖矿程序,当挖到1个区块时停止挖矿,挖矿所得默认进入第一个账户里。耐心等待成功挖出1个块,此时我们的节点就是矿工节点!再次查询账户余额,输出5的18方wei。
- 创建一个新账户,这样就有两个账户,我们把第一个账户的5个ETH,转2个ETH到新账户。
前提条件:解锁账户一
输入指令: eth.sendTransaction({from:eth.accounts[0],to:eth.accounts[1],value:web3.toWei(2,"ether")})
含义:在发起交易前先解锁第一个账户,使用eth.sendTransaction指令发起交易,结果返回交易哈希存根,此时我们这笔交易并没有生效,可以使用txpool.status指令查看交易池的情况pedding为1表明这笔交易还款打包进区块。因为打包区块是由矿工做的工作,所以我们启动矿工。耐心等待一会再次查看第一个账户余额显示8000000000000000000,而第二个账户显示2000000000000000000,说明我们的转账交易成功啦!为什么第一个账户是8个ETH呢?这是因为矿工节点又挖出5个ETH了,加上之前的3个刚好正确!
- 查看区块信息 输入指令:eth.getBlock(2) 输出结果:第二个区块信息
- 查看交易信息
输入指令:eth.getTransaction("0x9216e836a292a90d85684015c01144600a80024424ba9585199aaea05a0a3ea4")
输出结果:该笔交易详情
5. 脚本启动geth客户端
- 我们使用以下命令启动 geth:geth --datadir data --rpc 打开另一个命令行界面,启动Mist或以太坊钱包,能看到之前创建的两个账户用 “--rpc” 参数让 geth 接受 RPC 连接,这是很有必要的,这样 truffle 才可以连接到geth。
进行两次挖矿后,账户1余额变成10以太币
- 可以编写脚本,存储成文件private_blockchain_start.sh,内容如下,以后直接执行.sh即可开启geth console
geth --rpc --rpcaddr="0.0.0.0" --rpccorsdomain="*" --unlock '0,1' --password password --nodiscover --maxpeers '5' --networkid '123' --datadir 'data' console
password中存储的是两个测试账户的密码,内容如下:
在命令行中运行脚本,会自动开启git bash,启动geth客户端,可以输入eth.accounts测试查看两个以太坊账户
Geth安装和使用的更多相关文章
- 02-windows 安装以太坊 ethereum 客户端 (win7-64)-大叔思维
以太坊(Ethereum)是一个运行智能合约的去中心化平台(Platform for Smart Contract),平台上的应用按程序设定运行,不存在停机.审查.欺诈.第三方人为干预的可能.以太坊平 ...
- geth
>geth --networkid 123 --dev --datadir "d:/blockchain/project/ethereum" --rpc --rpcaddr ...
- 使用Geth 构建以太坊区块链并模拟挖矿过程
使用Geth 构建以太坊区块链并模拟挖矿过程 Go-ethereum 是以太坊官方的一个Golang 实现,我们可以使用Geth 工具来创建创世区块并启动区块链,使用Clef 实现以太坊钱包的功能,以 ...
- Windows搭建以太坊的私有链环境
1.下载Geth.exe 运行文件,并安装 https://github.com/ethereum/go-ethereum/releases/ 下载后,只有一个Geth.exe的文件 2.cmd进入按 ...
- 智能合约开发环境搭建及Hello World合约
如果你对于以太坊智能合约开发还没有概念(本文会假设你已经知道这些概念),建议先阅读入门篇. 就先学习任何编程语言一样,入门的第一个程序都是Hello World.今天我们来一步一步从搭建以太坊智能合约 ...
- 程序员的自我救赎---12.2.3: 虚拟币交易平台(区块链) 下 【C#与以太坊通讯】
<前言> (一) Winner2.0 框架基础分析 (二)PLSQL报表系统 (三)SSO单点登录 (四) 短信中心与消息中心 (五)钱包系统 (六)GPU支付中心 (七)权限系统 (八) ...
- Go语言打造以太坊智能合约测试框架(level1)
传送门: 柏链项目学院 Go语言打造以太坊智能合约测试框架 前言 这是什么? 这是一个基于go语言编写的,自动化测试以太坊智能合约的开发框架,使用此框架,可以自动化的部署合约,自动测试合约内的功能函数 ...
- web3js 进行转账
1.准备阶段 部署以太坊geth 安装nodejs npm install web3 npm install npm install ethereumjs-tx 其中, web3是1.0.0.beta ...
- 区块链学习:Windows下搭建以太坊私有链环境
一:安装geth客户端 Windows要求必须是64位系统,从官方网站下载编译好的win64客户端,下载解压后只有一个Geth.exe问价,运行安装即可,下载地址如下: https://github. ...
随机推荐
- scp2自动部署
安装scp2 npm install scp2 --save-dev 配置服务器文件 项目根目录创建文件 .env.dev 文件 (测试环境变量)和创建 .env.prod 文件 (生产环境变量) V ...
- CVE-2019-0213: Apache Archiva Stored XSS
CVE-2019-0213: Apache Archiva Stored XSS Severity: Low Vendor:The Apache Software Foundation Version ...
- CSS基础 布局
1.布局的基本位置 top 距离上边的距离right 距离右边的距离bottom 距离下边的距离left 距离左边的距离 去掉布局时 html 的3mm ...
- Java程序员如何从码农晋升为架构师,你跟架构师的差别在哪里?
一.如何定义架构师 Java架构师,首先要是一个Java程序员,熟练使用各种框架,并知道它们实现的原理.jvm虚拟机原理.调优,懂得jvm能让你写出性能更好的代码;池技术,什么对象池,怎么解决并发量. ...
- 第二章 Django之Django安装(2)
Django 安装 1.官方发布版安装 大多数人会考虑从 http://www.djangoproject.com/download/ 下载安装最新的官方 发布版.Django 使用了 Python ...
- PAT Basic 1045 快速排序 (25 分)
著名的快速排序算法里有一个经典的划分过程:我们通常采用某种方法取一个元素作为主元,通过交换,把比主元小的元素放到它的左边,比主元大的元素放到它的右边. 给定划分后的 N 个互不相同的正整数的排列,请问 ...
- P1396 营救[最短路+二分]
题目描述 “咚咚咚……”“查水表!”原来是查水表来了,现在哪里找这么热心上门的查表员啊!小明感动的热泪盈眶,开起了门…… 妈妈下班回家,街坊邻居说小明被一群陌生人强行押上了警车!妈妈丰富的经验告诉她小 ...
- 0011SpringBoot的@EnableWebMvc全面接管SpringMVC的自动配置(源码)
所谓的@EnableWebMvc全面接管SpringMVC的自动配置,是指@EnableWebMvc注解会使SpringMVC的自动配置失效,原理如下: 1.查看@EnableWebMvc的源码,如下 ...
- Codeforces Educational Codeforces Round 54 题解
题目链接:https://codeforc.es/contest/1076 A. Minimizing the String 题意:给出一个字符串,最多删掉一个字母,输出操作后字典序最小的字符串. 题 ...
- jQuery和原生JS的对比
原生JS的缺点: 不能添加多个入口函数(window.onload),如果添加了多个,后面的会把前面的覆盖掉 原生js的api名字太长,难以书写,不易记住 原生js有的代码冗余 原生js中的属性或者方 ...