geth控制台控制

article/2025/9/20 16:37:05

目录

geth控制台控制

启动控制台:输出结果直接显示

启动控制台:控制台输出结果写入 output.log 文件,但不能连接MetaMask

退出控制台 

常用命令

开始挖矿

停止挖矿

转账

问题:出现报错 password or unlock

问题:出现 invalid sender 报错,可能是你的 gensis.json 缺少了东西

问题:查看账户发现并没有成功转账出去,账户金额没有变化

外部连接 MetaMask

 win10 metamask 连接 localhost 8584

win10使用 metamask 连接虚拟机 ubuntu 中的私有链

问题:--dev引发的错误:Failed to unlock developer account

问题:使用最新版本geth,当执行personal.unlockAccount()或在程序中调用personal_unlockAccount接口时,会出现:account unlock with HTTP access is forbidden异常

问题:the method net_version does not exist/is not available

查看交易记录

方法一:根据交易id查询

方法二:根据区块id查询


geth控制台控制

主机win10, 在Ubuntu中使用geth创建私有链

启动控制台:输出结果直接显示

 启动私有链代码末尾,加上 console 可以在启动私有链时,启动控制台

/geth --datadir ~/桌面/geth-project/myChain --networkid 15 console

启动控制台:控制台输出结果写入 output.log 文件,但不能连接MetaMask

当然这样写会将 Info 那些信息直接写入控制台,很多,看着很不舒服

可以将控制台输出写入output.log 文件中

geth --datadir ~/桌面/geth-project/myChain --networkid 15 console 2>~/桌面/geth-project/myChain/output.log

查看到目前为止的输出结果

cat ~/桌面/geth-project/myChain/output.log

实时查看输出结果 

tail -f ~/桌面/geth-project/myChain/output.log

退出控制台 

ctrl + d 或 控制台输入exit

Geth Console 是一个交互式的 JavaScript 执行环境,里面内置了一些用来操作以太坊的 JavaScript 对象,我们可以直接调用这些对象来获取区块链上的相关信息。 


 常用命令

对象主要包括:

  • admin:主要包含与管理节点相关的方法
  • eth:主要包含对区块链进行访问和交互相关的方法
  • personal:包含账户管理的方法
  • txpool:包含查看交易内存池的方法
  • miner:主要包含挖矿相关的一些方法
  • net:主要包含查看 p2p 网络状态的方法
  • web3:包含以上所有对象,还包含一些通用方法

常用命令有:

  • personal.newAccount([密码]):创建账户
  • personal.unlockAccount(账号id):解锁账户
  • eth.accounts:列出系统中的账户
  • eth.getBalance(账号id):查看账户余额,返回值的单位是 Wei
  • eth.blockNumber:列出当前区块高度
  • eth.getTransaction(交易id):获取交易信息
  • eth.sendTransaction({from:账号id1, to:账号id2, value:钱,data:'十六进制信息'}): 转账
  • eth.estimateGas({from:账号id1, to:账号id2, value:钱,data:'十六进制信息'}):可用于转账前估计 gas
  • eth.getBlock(区块id 即blockNumber):获取区块信息
  • eth.getBlockTransactionCount(区块id 即blockNumber):查询该区块中的交易次数
  • miner.start():开始挖矿
  • miner.stop():停止挖矿
  • miner.setEtherbase:挖矿以太坊归哪个账户
  • web3.fromWei(钱):Wei 换算成以太币
  • web3.toWei():以太币换算成 Wei
  • txpool.status:交易池中的状态

eth.accounts[0] 里面的以太币是挖出来的

开始挖矿

miner.start(1)

即便返回true或null,但也已经正在挖矿了

第一次挖 Generating DAG in progress 属于正常现象,初始化比较久,耐心等

 如此就是开始挖矿了

停止挖矿

miner.stop()

解决方法:把这个转账的消息广播出去,即重新挖矿,挖一会儿停止就行 

miner.start(1)miner.stop()

 转账

eth.sendTransaction({from:eth.accounts[0], to:"0x1E17ECE93b3", value:web3.toWei(500, 'ether')})

问题:出现报错 password or unlock

解决方法:解锁你的账户

personal.unlockAccount(你的账户)
personal.unlockAccount(eth.accounts[0])

之后重新转账

 转账单位:wei

eth.sendTransaction({from:eth.accounts[0], to:"0x1E17ECE93b3", value:500})

 转账单位:ether

eth.sendTransaction({from:eth.accounts[0], to:"0x1E17ECE93b3", value:web3.toWei(15, 'ether')})

问题:出现 invalid sender 报错,可能是你的 gensis.json 缺少了东西

解决方法:去看看官方最新的版本或用以下版本,之后删掉原本的创世区块,重新初始化新的创世区块

{"config": {"chainId": 15,"homesteadBlock": 0,"eip150Block": 0,"eip155Block": 0,"eip158Block": 0,"byzantiumBlock": 0,"constantinopleBlock": 0,"petersburgBlock": 0,"istanbulBlock": 0},"alloc": {"0x1E17ECE93b3c72277E4B22a58B87934C9F654089":{"balance":"900000000000000000000"}},"coinbase": "0x0000000000000000000000000000000000000000","difficulty": "0x200","extraData": "","gasLimit": "0x2fefd8","nonce": "0x0000000000000042","mixhash": "0x0000000000000000000000000000000000000000000000000000000000000000","parentHash": "0x0000000000000000000000000000000000000000000000000000000000000000","timestamp": "0x00"
}

问题:查看账户发现并没有成功转账出去,账户金额没有变化

解决方法:把这个转账的消息广播出去,即重新挖矿,挖一会儿停止就行 

miner.start(1)miner.stop()

到此转账完成

因为挖矿,accounts[0]可能钱变多一些


外部连接 MetaMask

 win10 metamask 连接 localhost 8584

解决方法:只需要加上 --http 或 --rpc,默认端口是8545;指定端口只需要加上--rpcport 即可修改

geth --datadir ~/桌面/geth-project/myChain --networkid 15 --http console 2>~/桌面/geth-project/myChain/output.log

win10使用 metamask 连接虚拟机 ubuntu 中的私有链

解决方法:

1.geth 控制台时需再添加 --rpc --rpcaddr "0.0.0.0" --rpcport 8545 参数。

2.再 MetaMask 添加网络 ip地址是你虚拟机 ubuntu 的 ip 地址

geth --datadir ~/桌面/geth-project/myChain --networkid 15 --rpc --rpcaddr "0.0.0.0" --rpcport 8545 console 2>~/桌面/geth-project/myChain/output.log

# 注意 设置启动参数--rpcaddr 127.0.0.1 ,主机中浏览器metamask无法连接该链 

geth --rpccorsdomain "*" 允许跨域请求的域名列表
加了这个参数反而连不上geth

再 MetaMask 添加网络 ip地址是你虚拟机 ubuntu 的 ip 地址

 这时主机 MetaMask 就可以访问了

问题:--dev引发的错误:Failed to unlock developer account

 错误代码

geth --datadir . --networkid 15 --dev

报错:Failed to unlock developer account:could not decrypt key with given passphrase

解决方法:--dev 表示启用开发者账户,而因为你指定了 networkid 那些,而 --dev 开发者模式是帮你创建一条全新的私链,而不是根据你原本的创建,不需要加上那些参数,如下

geth --datadir . --dev

问题:使用最新版本geth,当执行personal.unlockAccount()或在程序中调用personal_unlockAccount接口时,会出现:account unlock with HTTP access is forbidden异常

报错:GoError: Error: account unlock with HTTP access is forbidden at web3.js:6347:37(47)

原因:新版本geth,出于安全考虑,默认禁止了HTTP通道解锁账户 

解决方法:启动命令中添加参数

--allow-insecure-unlock

 示例:geth --rpc --rpcapi eth,web3,personal --allow-insecure-unloc

geth --datadir ~/桌面/geth-project/myChain --networkid 15 --rpc --rpcaddr "0.0.0.0" --rpcport 8545 --rpcapi eth,web3,personal --allow-insecure-unlock console 2>~/桌面/geth-project/myChain/output.log

问题:the method net_version does not exist/is not available

解决方法:在geth启动时的rpc参数中设置rpcapi时包括 "net" 即可

  示例:geth --rpc --rpcapi eth,web3,personal,net --allow-insecure-unloc

geth --datadir ~/桌面/geth-project/myChain --networkid 15 --rpc --rpcaddr "0.0.0.0" --rpcport 8545 --rpcapi eth,web3,personal,net --allow-insecure-unlock console 2>~/桌面/geth-project/myChain/output.log 

查看交易记录

方法一:根据交易id查询

 注意这个不是你的账号的id,而是交易的id

eth.getTransaction(transactionHash [, callback])
eth.getTransaction("0x21003fc7a543bc89a467510b6ab978bc638dc09619d1fba0288bdb3907830e4b")

# 注意这个不是你的账号的id,而是交易的id 

  • hash 32 Bytes - String: 交易的哈希值
  • nonce - Number: 交易发送方在此交易之前产生的交易数量
  • blockHash 32 Bytes - String: 交易所在块的哈希值。如果交易处于pending状态,则该值为null
  • blockNumber - Number: 交易所在块的编号,如果交易处于pending状态,则该值为null
  • transactionIndex - Number: 交易在块中的索引位置,如果交易处于pending状态,则该值为null
  • from - String: 交易发送方的地址
  • to - String: 交易接收方的地址。对于创建合约的交易,该值为null
  • value - String: 以wei为单位的转账金额
  • gasPrice - String: 发送方承诺的gas价格,以wei为单位
  • gas - Number: 发送方提供的gas用量
  • input - String: 随交易发送的数据
  • r,s,v: 签名

方法二:根据区块id查询

# 查询区块中交易次数 

eth.getBlockTransactionCount(blockNumber)
eth.getBlockTransactionCount(36)

# 查询区块信息 

eth.getBlock(blockNumber)
eth.getBlock(36)


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

相关文章

geth的安装和使用

geth的安装和使用过程 windows下安装Geth配置和使用搭建私有网络 windows下安装Geth 1.下载地址: https://geth.ethereum.org/downloads/ 下载windows版 2.按指示安装 3.在cmd下进入安装路径,输入geth help查看是否安装成功 出现下面情况表示安装成功…

使用Geth搭建多节点私有链

使用Geth搭建多节点私有链 步骤 1.编辑初始化配置文件genesis.json {"config": {"chainId": 6668,"homesteadBlock": 0,"eip150Block": 0,"eip150Hash": "0x000000000000000000000000000000000000000000000000000000…

以太坊编程-Geth

前提:开发环境为Windows版本 一、下载安装 geth安装官网地址:https://geth.ethereum.org/downloads/ 安装时,根据提示一步一步安装即可 安装完成之后,需要进行配置环境变量 二、创世区块部署 新建.json文件:新建记事…

以太坊开发--geth的使用入门

geth的全称是go-ethereum,是一个以太坊客户端,用go语言编写,应该是目前最常用的客户端。当然以太坊客户端还有用C,Ruby,Python,Java等其他多种语言编写的,不同类型的客户端是为了满足不同的需求场景。今天我们主要来介绍geth(发音…

Geth安装和使用

一、简介 Geth是Go Ethereum开源项目的简称,它是使用Go语言编写且实现了Ethereum协议的客户端软件,也是目前用户最多,使用最广泛的客户端。通过Geth客户端与以太坊网络进行连接和交互可以实现账户管理、合约部署、挖矿等众多有趣且实用的功能…

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…