目录

  • 1. 下载Geth
  • 2. 验证是否安装成功
  • 3. 两种方式启动和连接节点
    • 3.1 attach方式(需2个cmd窗口)
      • 3.1.1 启动
      • 3.1.2 连接
    • 3.2 console方式(只需1个cmd窗口)
  • 5. 常用交互命令
    • 5.1 查看账户列表
    • 5.2 创建新账户
    • 5.3 查看coinbase账户
    • 5.4 查看第2个账户
    • 5.5 查看某个账户的余额
    • 5.6 查看区块高度
    • 5.7 从第一个账户转账给第二个账户
      • 5.7.1 先解锁第一个账户
      • 5.7.2 发送交易
      • 5.7.3 查询交易hash内容
      • 5.7.4 查看交易后区块高度
      • 5.7.5 查询第二个账户余额
  • ~~6. 多节点互联~~
  • 7. 部署合约
  • 7.1 修改合约项目配置文件
  • 7.2 打开合约项目truffle交互命令行
  • 7.3 打开geth节点交互命令行

1. 下载Geth

从官网下载,地址,下载完安装

2. 验证是否安装成功

打开cmd,输入

geth version

输出版本信息,安装成功

3. 两种方式启动和连接节点

先获取本地IP地址192.168.1.123,下面的命令里面的IP地址要改成自己的,然后创建个新文件夹privateChain,打开cmd,输入

3.1 attach方式(需2个cmd窗口)

3.1.1 启动

geth --networkid 123 --dev --datadir data1 --http --http.addr 192.168.1.123 --http.port 8989 --port 3000 --allow-insecure-unlock --ipcpath data1/geth1.ipc
  • networkid 网络唯一标识id,测试用,随便输入个123,可以通过https://chainlist.org/这个网站查询真实的网络唯一标识
  • dev 指定开发者模式
  • datadir 指定本地数据存储目录
  • http 表示开启 HTTP-RPC 服务
  • http.addr 本地ip地址
  • http.port 指定 HTTP-RPC 服务监听端口号
  • port 指定和其他节点连接所用的端口号
  • allow-insecure-unlock 这个是因为出于安全考虑,默认会禁止HTTP通道解锁账户,也就是如果你在客户端操作对账户解锁的时候可能会 出现"unlock with HTTP access is forbidde" 的错误,后续通过代码而不是通过客户端发起交易时可以不用开启这一选项
  • ipcpath 指定ipc地址文件,特别重要

回车后输出日志,成功

3.1.2 连接

PS: 这里有个内外网都没找到解决方法的细节,其他教程都说直接用ipc连节点,连geth.ipc,但是永远找不到这个geth.ipc在哪里。所以这个到底在哪呢?

在日志输出里面有这个ipc地址,找这一行IPC endpoint opened,然后复制后面的url=\\.\pipe\data1/geth1.ipc,这就是ipc地址了

在文件夹privateChain下,重新打开一个cmd,输入命令

geth attach \\.\pipe\data1/geth1.ipc

回车后进入交互命令行

3.2 console方式(只需1个cmd窗口)

geth --networkid 123 --dev --datadir data1 --http --http.addr 192.168.1.123 --http.port 8989 --port 3000 --allow-insecure-unlock --ipcpath data1/geth1.ipc console

启动后直接连接进入交互命令行

5. 常用交互命令

5.1 查看账户列表

personal.listAccounts


会发现已经存在一个账户了,默认创建的开发者账户,并且有一定余额

5.2 创建新账户

personal.newAccount("111111")// 111111是密码

5.3 查看coinbase账户

eth.coinbase


默认第一个账户就是coinbase账户

5.4 查看第2个账户

personal.listAccounts[1]

5.5 查看某个账户的余额

eth.getBalance("0xa7ac1d344b619e7be347703e0ee9421128db7c11")
或用下面的命令
eth.getBalance(personal.listAccounts[1])

5.6 查看区块高度

eth.blockNumber

5.7 从第一个账户转账给第二个账户

5.7.1 先解锁第一个账户

PS: 第一个账户是自动生成的开发者账户,密码是空

personal.unlockAccount(personal.listAccounts[0],"输入密码")

5.7.2 发送交易

从第一个账户给第二个账户转5个以太币

eth.sendTransaction({from:personal.listAccounts[0],to:personal.listAccounts[1],value:web3.toWei(5,'ether')})

5.7.3 查询交易hash内容

使用上一步发送交易输出的hash值

eth.getTransaction("0xb2f155b1cd90056fe7a6868eab62687aef9f4d7bd494f9fe24c356457470818d")

5.7.4 查看交易后区块高度

eth.blockNumber


有交易,加了一个高度

5.7.5 查询第二个账户余额

eth.getBalance(personal.listAccounts[1])
下面命令是单位转换,从Wei转成以太币
web3.fromWei(eth.getBalance(personal.listAccounts[1]))


发现已经有5个以太币,交易成功
PS: 在开发者模式下,会自动进行挖矿,所以交易立马就生效了

6. 多节点互联

PS: 搞了很久都没成功,最后被逼去看geth源码,然后看到这句注释,吐血

7. 部署合约

以之前的一个文章《Solidity的框架Truffle的简单使用(2021版)》里的项目来做例子。

7.1 修改合约项目配置文件

  • 在myProject合约项目根目录下找到truffle-config.js文件
  • 打开后,搜索,development,根据文章上面的配置,修改成对应内容

7.2 打开合约项目truffle交互命令行

  • 使用命令truffle console进入交互命令行,注意,这里只能用console模式,因为要用到修改的项目配置,如果用develop模式,就用的是默认的私链了
  • 使用命令compile编译
  • 使用命令migrate --reset部署,注意,geth的节点需要启动,观察这个命令执行后,节点cmd里会出现挖矿记录mined potential block,表示部署成功

7.3 打开geth节点交互命令行

  • 使用命令eth.blockNumber查看区块高度,可以观察到区块增加了,侧面说明部署成功
  • 在myProject合约项目目录下,进入build/contracts,打开HelloWorld.json文件
  • 搜索abi,选中中括号(包括中括号)的内容,把内容复制出来,找个压缩json的工具进行压缩,结果如下
[{"constant":true,"inputs":[],"name":"test","outputs":[{"internalType":"string","name":"","type":"string"}],"payable":false,"stateMutability":"pure","type":"function"},{"constant":false,"inputs":[],"name":"test1","outputs":[{"internalType":"string","name":"","type":"string"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"internalType":"string","name":"name","type":"string"}],"name":"echo","outputs":[{"internalType":"string","name":"","type":"string"}],"payable":false,"stateMutability":"pure","type":"function"}]
  • 在geth节点交互命令行里,输入,abi等于刚刚压缩的内容,不需要双引号
var abi = [{"constant":true,"inputs":[],"name":"test","outputs":[{"internalType":"string","name":"","type":"string"}],"payable":false,"stateMutability":"pure","type":"function"},{"constant":false,"inputs":[],"name":"test1","outputs":[{"internalType":"string","name":"","type":"string"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"internalType":"string","name":"name","type":"string"}],"name":"echo","outputs":[{"internalType":"string","name":"","type":"string"}],"payable":false,"stateMutability":"pure","type":"function"}]
  • 在geth节点交互命令行里,输入 abi,输出json结构内容,说明ok
  • HelloWorld.json文件里,继续搜索,address,把对应的值复制
  • 在geth节点交互命令行里,输入
var myContract=eth.contract(abi).at("上面搜到的address值")
  • 验证结果,输入
myContract.test()

  • 验证结果,输入
myContract.test1.call()

  • 验证结果,输入
myContract.echo("读者老爷好帅")


over,enjoy!

Win10使用Geth搭建本地开发私有链(2021版)相关推荐

  1. 区块链开发之搭建以太坊私有链

    (一)区块链开发之搭建以太坊私有链 本文链接:https://blog.csdn.net/rwdxll/article/details/82929417 1.安装ethereum/Go client( ...

  2. 搭建以太坊私有链(PoA)--CentOS7.6 on 阿里云ECS、macOS Catalina on Mac、Ubuntu20.04 on Raspberry Pi 4B

    使用Geth搭建以太坊PoA私有链 搭建以太坊私有链(PoA) 1 阿里云ECS上的操作步骤 1.1 准备环境 1.2 安装Geth及Tools 1.3 创建以太坊私有链的数据文件夹 1.4 用pup ...

  3. 如何搭建以太坊私有链

    链客,专为开发者而生,有问必答! 此文章来自区块链技术社区,未经允许拒绝转载. 如何搭建以太坊私有链1 今天讲一下如何搭建以太坊私有连,当然了在你阅读这篇文章的时候,最好是有一定基础,比如知道什么是以 ...

  4. 搭建本地ubuntu镜像服务器(arm版)

    搭建本地ubuntu镜像服务器(arm版) 最近由于项目需要,经常从ports.ubuntu.com服务器上面下载ubuntu的镜像文件,但是面对几kB的速度,项目实在是进行不下去了.考虑到后面还要经 ...

  5. 火狐浏览器添加MetaMask钱包和本地开启私有链开发

    火狐浏览器添加MetaMask钱包 因为对其配置了代理工具,所以直接使用谷歌引擎搜索MetaMask钱包即可  第一次使用,立即开始设置 点击我同意,进行密码的创建 牢记助记词,助记词及其关键,将其存 ...

  6. Truffle 、Geth、TestRPC 在私有链上搭建智能合约

    Truffle 的简介 Truffle 是最流行的开发框架,能够在本地编译.部署智能合约,使命是让开发更容易. Truffle 需要以太坊客户端支持,需要支持标准的 JSON RPC API. Tru ...

  7. 区块链,使用 Go-Ethereum 搭建以太坊私有链

    1.什么是Ethereum(以太坊) 以太坊(Ethereum)并不是一个机构,而是一款能够在区块链上实现智能合约.开源的底层系统,以太坊从诞生到2017年5月,短短3年半时间,全球已有200多个以太 ...

  8. 在Ubuntu下成功搭建以太坊私有链挖矿并转账

    前言 最近老师布置了一个任务,让我学习区块链的知识.刚开始乖乖的拿一本书看概念,有时候看书真的很无聊,我都睡过去好几回了.前几天老师说,你要是感觉看概念太无聊,就先尝试着搭一个以太坊私有链试一试.哇, ...

  9. docker 搭建以太坊私有链搭建

    最近区块链,火得不行,身边也有朋友准备玩这个,说是搭了一个星期,没有把环境搭建起来,叫我帮忙看看环境怎么搭建 于是我找到了官方的地址 https://github.com/ethereum/go-et ...

最新文章

  1. iPad占据平板电脑网络使用量的85%,苹果继续主宰平板市场
  2. DNS隧道工具汇总——补充,还有IP over DNS的工具NSTX、Iodine、DNSCat
  3. linux下搭建mrbs会议室预定管理系统
  4. python 技术篇-pythoncom.PumpMessag()关闭、杀死它的进程,pythoncom.PumpMessag()运行卡住解决办法
  5. 小心使用innerHTML
  6. 作为sigmastar代理-启明云端为你分享干货SSD201/202的QT的移植(二)
  7. 鬼才!我居然把 Vue3 的原理用到了 React 上?
  8. LeetCode 5376. 非递增顺序的最小子序列
  9. [转载]git 设置第一次输入密码之后不用输入密码
  10. python的标准数据类型_Python中的标准数据类型
  11. 根据IP查询城市(基于ipdb库)
  12. 广东省计算机学校,广东省计算机基础练习平台(高校版)安装设置方法
  13. 1179. 重新格式化部门表
  14. Android腾讯云通信集成记录(快速实现聊天功能)
  15. LaTeX升级打怪路之自定义指令篇1
  16. 记忆日语的奥秘—日语汉字读音变化
  17. 国家公务员局提醒考生:所谓命题专家不可信-公务员-国考
  18. ExtJS EditorGridPanel 示例之Array格式Store前后台增删改查(不支持分页)
  19. CSS进阶-Less
  20. Dinic求最大流/最小割

热门文章

  1. 花与剑尚未获取服务器信息,花与剑澄心无忆攻略,触发条件及完成方式介绍
  2. xyplorer的完美设置
  3. matlab平稳性检验
  4. 怀孕计算机在线,【孕期天数计算器在线计算_孕期天数计算器在线计算专题】- 天鹅到家...
  5. 《数学之美》——吴军#读书笔记
  6. 【Android 逆向】ELF 文件格式 ( 安装 010 Editor 二进制查看工具的 ELF.bt 插件模板 | 安装 ELF.bt 模板 | 打开 ELF 文件 )
  7. 图像处理之细化算法(Thinning Algorithm)C++实现
  8. 某女28天断食全记录,120—84
  9. 天宝数字水准仪数据格式转换
  10. 再论凭中学数学常识发现中学数学一系列重大错误——数列最起码常识让5千年都无人能识的自然数一下子暴露出来