windows 搭建ETH私有链单节点

1、安装geth

下载地址: https://geth.ethereum.org/downloads/   

 下载之后是个 .exe文件,直接双击安装 安装路径目录不要有中文字符,打开cmd窗口,输入 geth version  查询版本信息,显示正常 表示安装成功  如下图 。(千万别直接运行 geth ,它会自动连接到以太坊公网,此时会开始同步区块,网络差或者磁盘空间不够 就gg   )

 2.初始化创世区块

 新建一个文件夹,我的是 在 H:\blockchain\privatechain 路径下

然后新建 json文件,叫什么名字不重要  genesis.json    frist.json  one.json 都可以 内容如下:

{
  "config": {
    "chainId": 666,
    "homesteadBlock": 0,
    "eip150Block": 0,
    "eip150Hash": "0x0000000000000000000000000000000000000000000000000000000000000000",
    "eip155Block": 0,
    "eip158Block": 0,
    "byzantiumBlock": 0,
    "constantinopleBlock": 0,
    "petersburgBlock": 0,
    "istanbulBlock": 0,
    "ethash": {}
  },
  "nonce": "0x0",
  "timestamp": "0x5ddf8f3e",
  "extraData": "0x0000000000000000000000000000000000000000000000000000000000000000",
  "gasLimit": "0x47b760",
  "difficulty": "0x00002",
  "mixHash": "0x0000000000000000000000000000000000000000000000000000000000000000",
  "coinbase": "0x0000000000000000000000000000000000000000",
  "alloc": { },
  "number": "0x0",
  "gasUsed": "0x0",
  "parentHash": "0x0000000000000000000000000000000000000000000000000000000000000000"
}

然后打开cmd窗口,跳转到当前目录下执行命令

geth --datadir .\nodedata0 init first.json

表示初始化区块链, 其中–datadir选项后面跟一个目录名,这里为nodedata0,表示指定数据存放目录为 nodedata0, first.json是init命令的参数,就是刚才创建的json文件

 出现Successfully表示初始化成功了(把这行命令保存为一个.cmd命令备用),这时候你会发现,你的目录下面自动生成了一个nodedata0的文件夹,目录如下:

其中geth/chaindata中存放的是区块数据,keystore中存放的是账户数据。

如果要移除配置,重新配置创世节点的话 执行命令  removedb  再执行 init

geth removedb --datadir nodedata0
geth --datadir .\nodedata0 init first.json

3、启动节点

执行命令:

geth --http --nodiscover --datadir  "./nodedata0"  --port 30303 --http.api "db,eth,net,web3" --http.port 8545 --http.corsdomain "*" --networkid 666 --ipcdisable console 2>>geth.log

注意 networkid 666,以太坊节点之间能够互相连接需要满足
1)相同的协议版本
2)相同的networkid
所以搭建私有网络最方便的方法就是通过geth命令中的--networkid选项,设置一个与主网不同的networkid(主网的networkid为1),这也是官方推荐的方法.

--nodiscover 关闭p2p网络的自动发现,需要手动添加节点,这样有利于我们隐藏私有网络
--datadir 区块链数据存储目录
--networkid 网络标识,私有链取一个大于4的随意的值
--http 启用http服务,默认端口号8545
--http.api 表示可以通过http调用的对象,一般为 db,eth,net,web3
--http.addr http监听地址,默认为localhost 也就是 127.0.0.1,只能本地访问

2>>geth.log 把geth中的log信息导入geth.log,也可以不加这个,把信息直接输出在console里,这样直观 更多参数:Command-line Options | Go Ethereum

执行之后 出现如下图,表示geth启动成功

 因为是私有链,没有执行 geth 命令去同步公链区块,显示的 block为 0

4、创建账户挖矿

 personal.newAccount("test")

 

 这里给到了一个地址 0xa0f94aafb1b3027d406ace2ce720d73b28f3302f

查看账户信息:

eth.accounts

如果不记得personal有哪些方法,可以执行personal命令查看一下,其它的eth,miner也一样 

挖矿:miner.start()
      miner.start(1)  
      后者表示只使用一个线程工作,这样系统不会太卡


看到null,不要慌,因为日志信息都保存到了geth.log文件里

 停止挖矿:miner.stop()

查看余额: eth.getBalance(eth.accounts[0])

查看区块数: eth.blockNumber

 1449个区块,以太坊2898个,  一个区块 2个以太坊

另外说明一下,节点挖矿的以太币会自动存入到eth.coinbase账户里,默认是eth.accounts里的第一个,你也可以自己指定coinbase

5、安装 metamask 插件
安装 谷歌浏览器插件  metamask ,能自动知道你本地环境的 节点 

然后倒入你本地私有链上的账户到metamask上面

json文件地址    H:\blockchain\privatechain\nodedata0\keystore  下面有你账户信息的文件

密码就是我们上面创建账户后面写的 test    点击导入,等待一会,就可以看到你账户上的余额了


 

6、指定coinbase账户

先创建第二个账户,然后把第二个账户指定为coinbase,修改之前和修改之后已经改变

7、转账
先创建第三个没有币的账户,从账户1转5个比特币到账户3里,有的同学会问,不是有个账户2吗,你怎么不用呢?因为转账发起了交易,然而发起交易仅仅是发起交易,交易要被确认需要打包进区块里,挖矿就是做这个的,挖矿本身的收益会存进coinbase账户里,而现在coinbase账户是账户2,所以不考虑账户2   

当执行personal.unlockAccount()或在程序中调用personal_unlockAccount接口时,会出现:account unlock with HTTP access is forbidden异常。

异常原因
新版本geth,出于安全考虑,默认禁止了HTTP通道解锁账户,相关issue:https://github.com/ethereum/go-ethereum/pull/17037

解决方案
如果已经了解打开此功能的风险,可通启动命令中添加参数:

--allow-insecure-unlock
来进行打开操作。

 执行 exit 退出客户端

然后打开cmd 执行命令

geth --http --nodiscover --datadir  "./nodedata0"  --port 30303 --http.api "db,eth,net,web3" --http.port 8545 --http.corsdomain "*" --networkid 666 --ipcdisable --allow-insecure-unlock console 2>>geth.log

 

 

 截图中文描述错误,是交易手续费和挖矿收益  

exit命令退出

8、验证私链

写了这么多,一顿操作猛如虎,这个私链到底能不能用?

我们用remix验证一样,连接这个私链

 

 参考的链接:https://blog.csdn.net/hantangduhey/article/details/81017602
                        https://blog.csdn.net/wo541075754/article/details/98847308

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
汽车eth/can节点是指汽车中的一个集成电子控制元(ECU),用于处理汽车内部的网络通信和数据传输。该节点连接了以太网(Ethernet)和控制器区域网络(Controller Area Network),使得不同的车辆系统和传感器之间能够进行高速和可靠的数据交换。 以太网是一种常见的局域网通信协议,它具备高带宽和稳定的通信特性。在汽车中,以太网可用于连接车辆的各个子系统,如发动机控制、制动系统、驾驶辅助系统等。通过以太网,这些系统可以实现实时的数据传输和相互之间的通信,提高整个车辆系统的性能和安全性。 控制器区域网络是一种广泛应用于汽车的局域网络通信协议,主要用于连接车辆内部的传感器和执行器。CAN总线的特点是简、可靠、实时性强和抗干扰能力强。在汽车中,CAN总线可用于连接诸如发动机控制元、仪表盘、空调控制等部件,实现它们之间的数据交换和通信。 因此,汽车eth/can节点的作用是实现车辆内部各个系统和传感器之间的高速和可靠的数据交换,以提高整个车辆系统的性能、安全性和故障诊断能力。这个节点相当于一个桥梁,连接了以太网和CAN总线,将它们之间的数据转发和传输,确保车辆内部各个部件的正常运行和协调。汽车eth/can节点的设计和实现需要考虑到通信协议的选择、数据传输的可靠性、实时性的要求以及系统的故障诊断和安全性等因素。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值