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

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!

  • 2
    点赞
  • 44
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
要连接Metamask到Geth私有链,你需要按照以下步骤进行操作: 1. 首先,在Metamask钱包中点击右上角的网络切换按钮,选择“Custom RPC”(自定义RPC)选项。 2. 在“Custom RPC”页面中,填写私有链的网络名称,可以根据需要自行设置。RPC URL的格式为http://服务器地址:http端口号,例如:http://81.72.166.130:8545。链ID即为私有链中定义的networkid。 3. 点击“Save”(保存)按钮,保存配置。 4. 确保你已经启动了Geth私有链。你可以使用以下命令启动私有链: ``` geth --datadir data --networkid 15 --http --http.addr 0.0.0.0 --http.port 8545 --http.corsdomain "*" --port 30305 --allow-insecure-unlock console 2>>geth.log ``` 5. 如果你使用的是云服务器,需要在服务器管理界面开启对应的端口,特别是http.port对应的端口,以便Metamask钱包能够连接到私有链节点。 6. 现在,你可以在Metamask钱包中选择你配置的私有链网络,并使用你在私有链上的账户进行操作了。 请注意,以上步骤中的具体配置和命令可能会根据你的私有链设置而有所不同。确保按照你的私有链的要求进行配置和启动。 #### 引用[.reference_title] - *1* *2* *3* [以太坊私链搭建(一)——环境配置和metamask连接](https://blog.csdn.net/llslinliansheng/article/details/123596009)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值