Win10使用Geth搭建本地开发私有链(2021版)
目录
- 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版)相关推荐
- 区块链开发之搭建以太坊私有链
(一)区块链开发之搭建以太坊私有链 本文链接:https://blog.csdn.net/rwdxll/article/details/82929417 1.安装ethereum/Go client( ...
- 搭建以太坊私有链(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 ...
- 如何搭建以太坊私有链
链客,专为开发者而生,有问必答! 此文章来自区块链技术社区,未经允许拒绝转载. 如何搭建以太坊私有链1 今天讲一下如何搭建以太坊私有连,当然了在你阅读这篇文章的时候,最好是有一定基础,比如知道什么是以 ...
- 搭建本地ubuntu镜像服务器(arm版)
搭建本地ubuntu镜像服务器(arm版) 最近由于项目需要,经常从ports.ubuntu.com服务器上面下载ubuntu的镜像文件,但是面对几kB的速度,项目实在是进行不下去了.考虑到后面还要经 ...
- 火狐浏览器添加MetaMask钱包和本地开启私有链开发
火狐浏览器添加MetaMask钱包 因为对其配置了代理工具,所以直接使用谷歌引擎搜索MetaMask钱包即可 第一次使用,立即开始设置 点击我同意,进行密码的创建 牢记助记词,助记词及其关键,将其存 ...
- Truffle 、Geth、TestRPC 在私有链上搭建智能合约
Truffle 的简介 Truffle 是最流行的开发框架,能够在本地编译.部署智能合约,使命是让开发更容易. Truffle 需要以太坊客户端支持,需要支持标准的 JSON RPC API. Tru ...
- 区块链,使用 Go-Ethereum 搭建以太坊私有链
1.什么是Ethereum(以太坊) 以太坊(Ethereum)并不是一个机构,而是一款能够在区块链上实现智能合约.开源的底层系统,以太坊从诞生到2017年5月,短短3年半时间,全球已有200多个以太 ...
- 在Ubuntu下成功搭建以太坊私有链挖矿并转账
前言 最近老师布置了一个任务,让我学习区块链的知识.刚开始乖乖的拿一本书看概念,有时候看书真的很无聊,我都睡过去好几回了.前几天老师说,你要是感觉看概念太无聊,就先尝试着搭一个以太坊私有链试一试.哇, ...
- docker 搭建以太坊私有链搭建
最近区块链,火得不行,身边也有朋友准备玩这个,说是搭了一个星期,没有把环境搭建起来,叫我帮忙看看环境怎么搭建 于是我找到了官方的地址 https://github.com/ethereum/go-et ...
最新文章
- iPad占据平板电脑网络使用量的85%,苹果继续主宰平板市场
- DNS隧道工具汇总——补充,还有IP over DNS的工具NSTX、Iodine、DNSCat
- linux下搭建mrbs会议室预定管理系统
- python 技术篇-pythoncom.PumpMessag()关闭、杀死它的进程,pythoncom.PumpMessag()运行卡住解决办法
- 小心使用innerHTML
- 作为sigmastar代理-启明云端为你分享干货SSD201/202的QT的移植(二)
- 鬼才!我居然把 Vue3 的原理用到了 React 上?
- LeetCode 5376. 非递增顺序的最小子序列
- [转载]git 设置第一次输入密码之后不用输入密码
- python的标准数据类型_Python中的标准数据类型
- 根据IP查询城市(基于ipdb库)
- 广东省计算机学校,广东省计算机基础练习平台(高校版)安装设置方法
- 1179. 重新格式化部门表
- Android腾讯云通信集成记录(快速实现聊天功能)
- LaTeX升级打怪路之自定义指令篇1
- 记忆日语的奥秘—日语汉字读音变化
- 国家公务员局提醒考生:所谓命题专家不可信-公务员-国考
- ExtJS EditorGridPanel 示例之Array格式Store前后台增删改查(不支持分页)
- CSS进阶-Less
- Dinic求最大流/最小割
热门文章
- 花与剑尚未获取服务器信息,花与剑澄心无忆攻略,触发条件及完成方式介绍
- xyplorer的完美设置
- matlab平稳性检验
- 怀孕计算机在线,【孕期天数计算器在线计算_孕期天数计算器在线计算专题】- 天鹅到家...
- 《数学之美》——吴军#读书笔记
- 【Android 逆向】ELF 文件格式 ( 安装 010 Editor 二进制查看工具的 ELF.bt 插件模板 | 安装 ELF.bt 模板 | 打开 ELF 文件 )
- 图像处理之细化算法(Thinning Algorithm)C++实现
- 某女28天断食全记录,120—84
- 天宝数字水准仪数据格式转换
- 再论凭中学数学常识发现中学数学一系列重大错误——数列最起码常识让5千年都无人能识的自然数一下子暴露出来