Geth安装和使用

article/2025/9/20 17:06:59

一、简介

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测试查看两个以太坊账户


http://chatgpt.dhexx.cn/article/nMxRfWX2.shtml

相关文章

GETH的安装和使用(Windows)

目录 一、Geth介绍 二、Geth安装 1.下载安装 2.配置环境变量 三、Geth私有链搭建 1.创建创世块文件 2.初始化区块链 3.启动私有节点 四、账户交易 1.创建账户 2.挖矿操作 3.查看区块和奖励 ​ 4.转账交易 一、Geth介绍 Geth 又名Go Ethereum.是以太坊协议的三种实现…

最长上升子序列 详解

最长上升子序列 时间限制: 10 Sec 内存限制:128 MB 题目描述 给定一个序列,初始为空。现在我们将1到N的数字插入到序列中,每次将一个数字插入到一个特定的位置。我们想知道此时最长上升子序列长度是多少? 输入 第一行一个整数N,…

最长上升子序列(二分)

最长上升子序列 给定一个长度为 N 的数列,求数值严格单调递增的子序列的长度最长是多少。 输入格式 第一行包含整数 N。 第二行包含 N 个整数,表示完整序列。 输出格式 输出一个整数,表示最大长度。 数据范围 1≤N≤100000, …

C++最长上升子序列

最长上升子序列简介 题目描述 现有数列a1&#xff0c;a2&#xff0c;a3……aN。在其中找到严格递增序列ai1&#xff0c;ai2&#xff0c;ai3&#xff0c;……aiK&#xff08;1 < i1 < i2 < i3 < …… < iK < N&#xff09;&#xff0c;请找出序列a的最长上升…

LIS最长上升子序列

给定一个数组 &#xff0c;让你找出一个最长上升子序列的长度&#xff0c;例如[1,4,6,2,3,5] 答案为4&#xff1a;[1,2,3,5]。 我们用DP[i]表示以下标为i的元素结尾的子序列的最长上升子序列长度 代码如下&#xff1a; ll p[10010]; ll dp[10010]; int main() {ll n, ans 0…

最长上升子序列优化

引言 上次我们说了基础的最长上升子序列&#xff08;看这一篇前可以先看一下最长上升子序列&#xff09; 这次&#xff0c;我们再说一下如何优化&#xff0c;提高效率 我们先来看一道模板题 题目&#xff1a; 题目描述 输入格式 输出格式 输入样例 3 1 3 2 输出样例 1 …

最长上升子序列(LIS)算法

LIS定义 LIS&#xff08;Longest Increasing Subsequence&#xff09;最长上升子序列 一个数的序列bi&#xff0c;当b1 < b2 < … < bS的时候&#xff0c;我们称这个序列是上升的。 对于给定的一个序列(a1, a2, …, aN)&#xff0c;我们可以得到一些上升的子序列(a…

11.最长上升子序列(LIS)

视频讲解&#xff1a;最长上升子序列_哔哩哔哩_bilibili 解题思路&#xff1a; 1.最长上升子序列的含义是从给定的数中选取尽量多的数字形成单调递增的序列 2.可以把以每一个数字形成单调结尾的方案数看待成一个子问题&#xff0c;然后对后面的子问题提供最优解 3.设定状态…

C++动态规划之最长上升子序列

1 子序列与上升子序列 1.1 子序列 一个序列A{a1,a2,...an}中任意删除若干项&#xff0c;剩余的序列叫做A的一个子序列。例如序列A{1,3,5,4,2}&#xff0c;删除其中的第3项和第5项&#xff0c;得到序列B{1,3,4}&#xff0c;删除其中的第3项和第4项&#xff0c;得到序列C{1&#…

最长上升子序列(c++图文详解)

这题思路是这样&#xff0c;假设这个序列长度为n&#xff0c;存在数组a中&#xff0c;maxlen[i]表示以第i个数为终点的最长上升子序列的长度&#xff0c;它被初始化为1&#xff0c;因为一开始单个字符的最长上升子序列都是1&#xff08;它自己&#xff09;&#xff0c;我们先用…

最长上升子序列(动态规划)

子序列 所谓的子序列就是在原来序列中找出一部分组成的序列。 与子段不同&#xff0c;不需要连续的某一段&#xff0c;但是要保持原序列的先后顺序 最长上升子序列 在子序列的基础上&#xff0c;后一项大于前一项。 【题目描述】 【输入格式】 【输出格式】 【输入样例】 1…

最长上升子序列 (LIS) 详解+例题模板 (全)

欢迎访问https://blog.csdn.net/lxt_Lucia&#xff5e;&#xff5e; 宇宙第一小仙女\(^o^)/&#xff5e;萌量爆表求带飞≡Σ((( つ^o^)つ~ dalao们点个关注呗&#xff5e; --------------------------------我只是一条可爱哒分界线------------------------------- 1.摘要&…

Import Dependency Management with Exclusion

文章来源: Import Dependency Management with Exclusion Exclusion at import won’t work, try excluding it from the actual user of the dependency 意思是&#xff1a; 在dependencyManagement里面的dependency中&#xff0c;使用exclusions&#xff0c;是不会有作用的…

maven配置中的 scope, type,optional, classifier, 传递依赖,exclusions解释

scope用于依赖范围控制,它管理哪些依赖在哪些classpath 中可用&#xff0c;哪些依赖包含在一个应用中. 它的取值列表如下: 关于为什么使用provided 引入 servlet-api,jsp-api的问题的澄清: 在eclispe里创建web项目时&#xff0c;eclipse为我们自动添加了这两个jar包&#xff0…

记录--对于$off,Exclude 和 Extract的一点理解

这里给大家分享我在网上总结出来的一些知识&#xff0c;希望对大家有所帮助 一.typescript 高阶类型 Exclude 和 Extract Exclude<T, U> TypeScript 2.8 中增加了 Exclude 类型&#xff0c;该如何理解这个高级类型的定义呢&#xff1f; type Exclude<T, U> T exte…

[1120]Maven依赖冲突解决之exclusions

1. 背景 1、作为java生态下开发者&#xff0c;往往需要使用大量线程的第三方库&#xff0c;一般都是以jar包形式存在。 2、maven作为事实上主流的jar包依赖管理工具&#xff0c;Idea和Eclipse都支持创建maven工程来管理jar包依赖。 3、使用maven进行jar包依赖管理时&#xff0…

logical exclusive 与 physical exclusive 的区别

数字电路中一般会有多个clock&#xff0c;这些clock 相互之间有些是同步的&#xff0c;需要做 timing check 的&#xff0c;有些是异步的&#xff0c;不需要做 timing check 的&#xff0c;还有些是互斥的&#xff0c;需要 exclude 掉的&#xff0c;这些关系就需要在 sdc 中声明…

Maven中 排除依赖 exclusions

使用maven进行jar包依赖管理时&#xff0c;maven会自行管理jar包及其依赖链条&#xff0c;但往往会遇到依赖冲突问题&#xff0c;这时候就可以尝试使用exclusions来进行依赖管理 demo:排除tomcat 启用 jetty <dependency><groupId>org.springframework.boot</g…

Exclusive or

题目连接 题意&#xff1a; 每次给一个n&#xff0c;求 (2≤n<10500) 分析&#xff1a; 先说一下自己的想法&#xff0c;如果将n换成二进制数&#xff0c;也就一两千位左右&#xff0c;那么一位一位处理是可以接受的。将0-n写成二进制形式后&#xff0c;显然所有数某一个二进…

Maven依赖冲突解决之exclusions

Maven依赖冲突解决之exclusions 1. 背景 作为java生态下开发者,往往需要使用大量线程的第三方库,一般都是以jar包形式存在。maven作为事实上主流的jar包依赖管理工具,Idea和Eclipse都支持创建maven工程来管理jar包依赖。使用maven进行jar包依赖管理时,maven会自行管理jar包…