运行专用区块链时,强烈建议使用特定文件夹来存储专用区块链的数据(数据库和钱包),而不会影响用于存储来自公共区块链的数据的文件夹。在您的计算机上,创建将托管您的第一个矿工的文件夹:
命令:mkdir -p ~/ChainSkills/miner1
对第二个矿工重复操作
命令:mkdir -p ~/ChainSkills/miner2
每个区块链都以一个创世块开头,用于初始化区块链并定义加入网络的条款和条件。
我们的genesis块叫做“ genesis.json” ,存储在“ 〜/ ChainSkills ”文件夹下。
在〜/ ChainSkills下创建一个名为genesis.json的文本文件,其中包含以下内容:
{ "nonce": "0x0000000000000042", "mixhash": "0x0000000000000000000000000000000000000000000000000000000000000000", "difficulty": "0x400", "alloc": {}, "coinbase": "0x0000000000000000000000000000000000000000", "timestamp": "0x00", "parentHash": "0x0000000000000000000000000000000000000000000000000000000000000000", "extraData": "0x436861696e536b696c6c732047656e6573697320426c6f636b", "gasLimit": "0xffffffff", "config": { "chainId": 42, "homesteadBlock": 0, "eip155Block": 0, "eip158Block": 0 } }
是时候用genesis块初始化私有区块链了此操作将创建存储在专用于每个矿工的数据目录下的初始数据库。
输入以下命令为第一个矿工创建区块链:
命令:
cd ~/ChainSkills
geth --datadir ~/ChainSkills/miner1 init genesis.json
重复相同的操作,通过指定自己的目标文件夹(〜/ ChainSkills / miner2)来初始化第二个矿工:
命令:
cd ~/ChainSkills
geth --datadir ~/ChainSkills/miner2 init genesis.json
让我们为我们的矿工创建一些账户。
创建将用于运行节点的默认帐户。该帐户将接收矿工在私人区块链中创建的所有醚类。这些醚用于通过支付处理每笔交易所需的气体来测试我们的解决方案。要为矿工#1创建默认帐户,请键入以下命令。将密码保存在安全的地方:
命令:geth --datadir ~/ChainSkills/miner1 account new (可以添加多个账户测试)
这些帐户的钱包就在这里:ls -al ~/ChainSkills/miner1/keystore
要列出节点的所有帐户,请使用以下命令:
geth --datadir ~/ChainSkills/miner1 account list
重复相同的操作为第二个矿工创建默认帐户。区别在于目标文件夹(〜/ ChainSkills / miner2)。
geth --datadir ~/ChainSkills/miner2 account new
ls -al ~/ChainSkills/miner2/keystore
geth --datadir ~/ChainSkills/miner2 account list
让我们首先创建一个包含默认帐户密码的文件,这是我们为每个矿工创建的第一个帐户。在〜/ ChainSkills / miner1 /下创建一个password.sec文件,其中包含您在miner1上为第一个帐户配置的密码,以纯文本格式显示。
要启动矿工#1,我们需要运行以下命令:
geth --identity "miner1" --networkid 42 --datadir "~/ChainSkills/miner1" --nodiscover --mine --rpc --rpcport "8042" --port "30303" --unlock 0 --password ~/ChainSkills/miner1/password.sec --ipcpath "~/Library/Ethereum/geth.ipc"
主要参数的含义如下:
启动矿工后 :
打开矿工控制台: geth attach
可以在控制台 执行 geth命令了:
常用geth命令:
1、查看当前有哪些账户
eth.accounts
2、创建一个新账户
personal.newAccount(‘密码')
3、user1向user2转移以太币
eth.sendTransaction({from: user1,to: user2,value: web3.toWei(3,"ether")})
4、查看账户余额
> eth.getBalance(eth.accounts[ ])
5、解锁账户
> personal.unlockAccount(eth.accounts[],
6、查看挖矿速率
> miner.getHashrate()
7、查看区块高度
> eth.blockNumber
8、查看挖矿账户
> eth.coinbase
9、设置挖矿账户
> miner.setEtherbase(eth.accounts[0])
10、挖矿
> miner.start(8)
11、结束挖矿
> miner.stop()
到此为止一个私链就搭建完成了。下期将发布 2个矿工直接的转账交易。
学如逆水行舟,不进则退。心似平原跑马,易放难收。全栈工程师是指掌握多种技能,并能利用多种技能独立完成产品的人。 也叫全端工程师(同时具备前端和后台能力),英文Full Stack engineer。【人工智能】【区块链】【系统/网络/运维】【云计算/大数据】【数据库】【移动开发】【后端开发】【游戏开发】【UI设计】【微服务】【爬虫】【Java】【Go】【C++】【PHP】【Python】【Android/IOS】【HTML/CSS】【JavaScript】【Node】。欢迎各位大神萌新一起专研分享技术。。。
欢迎加入 IT全栈工程师技术交流群:593674370