[笔记]Mac上搭建区块链属于自己的私有链全过程

一.环境搭建

1.1安装go语言

brew install go

1.2安装Geth

brew tap ethereum/ethereum 
brew install ethereum

1.3检查是否安装成功

geth --help

如果出现帮助界面则安装成功了。如下图所示
[笔记]Mac上搭建区块链属于自己的私有链全过程_第1张图片
到这一步时我们环境配置工作算是正式完成。

二.搭建私有网络

2.1创建创世块
Geth需要使用genesis.json文件生成创世区块,同时需要提供保存区块数据和账户私钥(keystore)的目录。

mkdir myeth
cd myeth
vim genesis.json

这时我们进入了命令模式如下图所示[笔记]Mac上搭建区块链属于自己的私有链全过程_第2张图片
我们进入编辑模式,把创世块参数代码设置输入后,按esc再输入:wq!保存退出命令模式.还有一种更方便一点的方法连按两次大写字母Z,若当前编辑的文件曾被修改过,则Vi保存该文件后退出,返回到shell;若当前编辑的文件没被修改过,则Vi直接退出, 返回到shell

{
  "config": {
        "chainId": 10, 
        "homesteadBlock": 0,
        "eip155Block": 0,
        "eip158Block": 0
    },
  "alloc"      : {},
  "coinbase"   : "0x0000000000000000000000000000000000000000",
  "difficulty" : "0x2000",
  "extraData"  : "",
  "gasLimit"   : "0x2fefd8",
  "nonce"      : "0x0000000000000042",
  "mixhash"    : "0x0000000000000000000000000000000000000000000000000000000000000000",
  "parentHash" : "0x0000000000000000000000000000000000000000000000000000000000000000",
  "timestamp"  : "0x00"
}

返回到shell模式后。
各参数的含义如下:
chainId: 指定了独立的区块链网络ID。网络ID在连接到其他节点的时候会用到,以太坊公网的网络ID是 1,为了不与公有链网络冲突,运行私有链节点的时候要指定自己的网络ID。不同ID网络的节点无法相互连接。
HomesteadBlock: 当设置为0表示使用Homestead发布该链。

[笔记]Mac上搭建区块链属于自己的私有链全过程_第3张图片
2.1网络初始化

geth init "/Users/jianghuiwen/myeth/genesis.json" --datadir "/Users/jianghuiwen/myeth/chaindata"

【注:】双引号里面更换成自己的文件位置
如果出现下图则说明初始化成功了,运行成功后会在当前目录创建geth和keystore两个文件夹[笔记]Mac上搭建区块链属于自己的私有链全过程_第4张图片
[笔记]Mac上搭建区块链属于自己的私有链全过程_第5张图片
geth目录:保存链上的区块数据
keystore目录:保存链上的用户信息
2.2启动私有链

geth --datadir "/Users/jianghuiwen/myeth/chaindata" --rpc --rpcapi "eth,web3,miner,admin,personal,net" --rpccorsdomain "*" --nodiscover --networkid 15 --allow-insecure-unlock

[笔记]Mac上搭建区块链属于自己的私有链全过程_第6张图片
出现下图后说明我们已经成功启动了

enode的信息是节点在网络上的身份标志。如果其他节点准备加入这个网络中,就需要提供自己的enode值。
  RPC访问可以通过http://127.0.0.1:8545或http://localhost:8545,IPC访问可以通过**.\pipe\geth.ipc**命令。

命令是以服务的形式持续运行的,需要再打开一个命令行窗口,输入
【特别注意】–allow-insecure-unlock这一行一定要加 不然后面进行解锁账户会出现
GoError: Error: account unlock with HTTP access is forbidden at web3.js:6347:37(47)报错。解锁账户涉及到后面进行转账!

Geth attach rpc:http://127.0.0.1:8545


常用命令:

1. personal.newAccount():创建账户;
2. personal.unlockAccount():解锁账户;
3. eth.accounts:枚举系统中的账户;
4. eth.getBalance():查看账户余额,返回值的单位是 Wei(Wei 是以太坊中最小货币面额单位,类似比特币中的聪,1
ether = 10^18 Wei);
5. eth.blockNumber:列出区块总数;
6. eth.getTransaction():获取交易;
7. eth.getBlock():获取区块;
8. miner.start():开始挖矿;
9. miner.stop():停止挖矿;
10. web3.fromWei():Wei 换算成以太币; web3.toWei():以太币换算成 Wei;
11. txpool.status:交易池中的状态;
12. admin.addPeer():连接到其他节点

最后我们启动miner.start()启动挖矿
括号内的内容可以填,比如填8则代表线程数是8。
在这里遇见了一个暂时还没解决的问题
miner.start()返回为Null查询了很多资料,也试了几种方法都无效,如果有能解决的大佬求告知
在这里插入图片描述
可是在启动miner.start()可以听到电脑出现明显发热和噪音的情况。查询哈希生成速率也不是0 不知道是不是电脑问题[笔记]Mac上搭建区块链属于自己的私有链全过程_第7张图片

【再度更新 问题终于解决】
参考资源来自:https://blog.csdn.net/weixin_43390562/article/details/103411601
成功解决
启动区块链由

geth --datadir "/Users/jianghuiwen/myeth/chaindata" --rpc --rpcapi "eth,web3,miner,admin,personal,net" --rpccorsdomain "*" --nodiscover --networkid 15 --allow-insecure-unlock

修改为这一行代码

    geth --identity "TestNode" --rpc --rpcapi "eth,web3,miner,admin,personal,net" --rpccorsdomain "*" --rpcport "8545" --dev --dev.period 1 --datadir data  --port "30303" --nodiscover --allow-insecure-unlock console

[笔记]Mac上搭建区块链属于自己的私有链全过程_第8张图片

[笔记]Mac上搭建区块链属于自己的私有链全过程_第9张图片

你可能感兴趣的:(区块链,网络)