网站首页 > 开源技术 正文
以前让学生做毕业设计,今天有人问起来,就写一个小教程,说一说基于eth的私有链如何搭建。非常简单。
一、geth,mist 客户端下载
1.这里我给大家介绍下,以太坊客户端,以太坊客户端主要分成两类。一个是后台命令行客户端,如:geth(go语言),parity(Rust语言),他们是一个与以太坊网络交互的命令行客户端。其余的命令行客户还有 ethereumjs-lib(javascript),pyethapp(python),ruby-ethereum(ruby) ....主要 geth 使用的比较普遍,这里我就使用geth作为命令行客户端。
2.mist 是属于可视化钱包,这么说吧,你在geth 客户端中生成的用户,以太坊币数量可以通过mist 钱包可视化展示。当然mist 不只有这些简单的功能,最重要的是能部署智能合约,发布,调用。其他还有很多轻钱包,如 lightWallet,metamask...
下面是geth和mist下载地址,这里我使用的是windows系统安装。
Geth : https://geth.ethereum.org/downloads/ ## 本篇使用1.9.1,免安装zip
Mist : https://github.com/ethereum/mist/releases ## 本篇使用0.11.1,免安装zip(如今的mist已经停止更新,但是还可以用)
二、创建以太坊初始区块文件 genesis.json
{ "config": { "chainId": 101, "homesteadBlock": 0, "eip155Block": 0, "eip158Block": 0 }, "alloc": {}, "coinbase": "0x0000000000000000000000000000000000000000", "difficulty": "0x400", "extraData": "", "gasLimit": "0xffffffff", "nonce": "0x0000000000000042", "mixhash": "0x0000000000000000000000000000000000000000000000000000000000000000", "parentHash": "0x0000000000000000000000000000000000000000000000000000000000000000", "timestamp": "0x00" }
代码解释如下:
chainId : 以太坊区块链网络Id,ethereum主链是1,私有链只用不要与主链冲突即可。 alloc : 预留账户,如下 "alloc":{ "0x0000000000000000000000000000000000000001":{"balance":"121312321"}, "0x0000000000000000000000000000000000000002":{"balance":"121312321"}, } Coinbase: 旷工账户 Difficulty: 挖矿难度,0x400,这个是简单。 extraData:相当于备注 gasLimit:最小消耗gas nonce : 64位随机数,用于挖矿,注意他和mixhash的设置需要满足以太坊黄皮书中的要求 parentHash : 上一个区块的Hash值,因为是创世块,石头里蹦出来的,没有在它前面的,所以是0 Timestamp : 时间戳
三、初始化节点
geth --datadir data0 init genesis.json
这里data0 就是节点将来保存区块链的地方
四、启动geth客户端节点
注意:在geth安装目录下执行
geth --identity "TestNode1" --datadir "data0" --rpc --rpcapi "db,eth,net,web3" --rpcaddr "127.0.0.1" --rpcport "8486" --port "30304" --networkid "29382" console
使用命令 geth -h 可以查看geth 相关的帮助文档。这里我说几个常用的属性。
代码解释如下:
--Identity : 节点身份标识,起个名字
--datadir : 指定节点存在位置,“data0”
--rpc : 启用http-rpc服务器
--rpcapi : 基于http-rpc提供的api接口。eth,net,web3,db...
--rpcaddr : http-rpc服务器接口地址:默认“127.0.0.1”
--rpcport : http-rpc 端口(多节点时,不要重复)
--port : 节点端口号(多节点时,不要重复)
--networkid : 网络标识符 随便指定一个id(确保多节点是统一网络,保持一致)
五、geth基本命令
#创建账户 personal.newAccount("123456") #获取账户数组 eth.accounts #解锁账户,转账时可使用 personal.unlockAccount(eth.accounts[0], "123456") #节点主账户 eth.coinbase #查看账户余额 eth.getBalance(eth.accounts[0]) #启动,结束挖矿,写区块 miner.start(), miner.stop()
六、增加新的节点
单个节点运行太霸道,不能成为中心化,咱们给私有的以太坊网络在添加一个节点
1.再初始化一个节点
geth --datadir data1 init genesis.json
“data1”作为新节点的存储目录,同样使用 genesis.json作为初始化文件
2. 启动新节点
geth --identity "TestNode2" --datadir "data1" --rpc --rpcapi "db,eth,net,web3" --rpcaddr "127.0.0.1" --ipcpath "data1\geth\geth.ipc" --rpcport "8487" --port "30305" --networkid "29382" console
3. 给新节点创建一个账户,否则无法启动挖矿
personal.newAccout(“123”)
4.查看:新节点enode信息,使用你本机ip替换[::]
5.重要:主节点添加新节点,使两节点连上同一个私有链上
admin.addpeer("enode://d4f64272de882d2e2ccefc6466c6580ddecd253f5c9d87f977ac3881cbea7b141c07681ea605c53af5815cbfc25b5138b9ddb07be61b757850a55b7197939ba4@192.168.1.175:30304")
这里"enode://......." 填写你节点 admin.nodeInfo.enode 的信息
6. 如何确保两节点已连接
首先使用命令admin.nodeInfo,查看结果是否为空[],另外在其中一个节点启动挖矿命令 miner.start()。
综上所述,把步骤简化一下,如果只允许单节点,需要以下几个步骤:
下载geth,mist。
在所在目录建一个文件。genesis.json,如下图。文件内容如上文所示。
进行初始化,geth --datadir data0 init genesis.json
启动节点
geth --identity "TestNode2" --datadir "data1" --rpc --rpcapi "db,eth,net,web3" --rpcaddr "127.0.0.1" --ipcpath "data1\geth\geth.ipc" --rpcport "8487" --port "30305" --networkid "29382" console
开始挖矿: miner.start()
关闭挖矿: miner.stop()
如图所示:
这时候打开Mist客户端。
私有链就运行起来了。
猜你喜欢
- 2024-09-16 Bash脚本编写技巧和窍门(bash脚本调试)
- 2024-09-16 Kubernetes RBAC角色权限控制(kubernetes administrator)
- 2024-09-16 疑似伊朗黑客组织APT33再出手,利用Shamoon V3发起新一波攻击
- 2024-09-16 Jenkins Pipelines将制品发布到Nexus存储库
- 2024-09-16 Huawei DHCP 全局配置与接口配置(dhcp全局配置多vlan)
- 2024-09-16 mongorocks引擎原理解析(mongorc.js)
- 2024-09-16 Kong 管理API详解之十三——SNI对象
- 2024-09-16 看完这篇文章,让你彻底了解Ceph的对象存储
- 2024-09-16 黑客所有渗透提权的方法都在这里了,绝对值得收藏
- 2024-09-16 工控安全入门之Ethernet/IP(工控机网络怎么设置)
你 发表评论:
欢迎- 最近发表
- 标签列表
-
- jdk (81)
- putty (66)
- rufus (78)
- 内网穿透 (89)
- okhttp (70)
- powertoys (74)
- windowsterminal (81)
- netcat (65)
- ghostscript (65)
- veracrypt (65)
- asp.netcore (70)
- wrk (67)
- aspose.words (80)
- itk (80)
- ajaxfileupload.js (66)
- sqlhelper (67)
- express.js (67)
- phpmailer (67)
- xjar (70)
- redisclient (78)
- wakeonlan (66)
- tinygo (85)
- startbbs (72)
- webftp (82)
- vsvim (79)
本文暂时没有评论,来添加一个吧(●'◡'●)