以太坊最靠谱搭建私有链方法(setup-the-private-chain-miners)
原文:https://chainskills.com/2017/03/10/part-3-setup-the-private-chain-miners/
第1步 - 创建datadir文件夹
运行专用区块链时,强烈建议使用特定文件夹来存储专用区块链的数据(数据库和钱包),而不会影响用于存储来自公共区块链的数据的文件夹。在您的计算机上,创建将托管您的第一个矿工的文件夹:
命令:mkdir -p ~/ChainSkills/miner1
对第二个矿工重复操作
命令:mkdir -p ~/ChainSkills/miner2
第2步 - 创建Genesis文件
每个区块链都以一个创世块开头,用于初始化区块链并定义加入网络的条款和条件。
我们的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
}
}
第3步 - 初始化私有区块链
是时候用genesis块初始化私有区块链了此操作将创建存储在专用于每个矿工的数据目录下的初始数据库。
步骤3.1 - 初始化矿工#1
输入以下命令为第一个矿工创建区块链:
命令:
cd ~/ChainSkills
geth --datadir ~/ChainSkills/miner1 init genesis.json
步骤3.2 - 初始化矿工#2
重复相同的操作,通过指定自己的目标文件夹(〜/ ChainSkills / miner2)来初始化第二个矿工:
命令:
cd ~/ChainSkills
geth --datadir ~/ChainSkills/miner2 init genesis.json
第4步 - 创建帐户
让我们为我们的矿工创建一些账户。
步骤4.1 - 矿工#1的账户
创建将用于运行节点的默认帐户。该帐户将接收矿工在私人区块链中创建的所有醚类。这些醚用于通过支付处理每笔交易所需的气体来测试我们的解决方案。要为矿工#1创建默认帐户,请键入以下命令。将密码保存在安全的地方:
命令:geth --datadir ~/ChainSkills/miner1 account new (可以添加多个账户测试)
这些帐户的钱包就在这里:ls -al ~/ChainSkills/miner1/keystore
要列出节点的所有帐户,请使用以下命令:
geth --datadir ~/ChainSkills/miner1 account list
步骤4.2 - 矿工#2的账户
重复相同的操作为第二个矿工创建默认帐户。区别在于目标文件夹(〜/ ChainSkills / miner2)。
geth --datadir ~/ChainSkills/miner2 account new
ls -al ~/ChainSkills/miner2/keystore
geth --datadir ~/ChainSkills/miner2 account list
步骤5.1 - 矿工#1:设置
让我们首先创建一个包含默认帐户密码的文件,这是我们为每个矿工创建的第一个帐户。在〜/ 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"
主要参数的含义如下:
identity:我们节点的名称
networkid:此网络标识符是一个任意值,用于配对同一网络的所有节点。该值必须不同于0到3(已经被活链使用)
datadir:我们的私有区块链存储其数据的文件夹
rpc和rpcport:启用HTTP-RPC服务器并提供其侦听端口号
port:网络侦听端口号,节点彼此连接以传播新的事务和块
nodiscover:禁用发现机制(稍后我们将配对节点)
我的:矿井和交易
unlock:默认帐户的ID
password:包含默认帐户密码的文件的路径
ipcpath:存储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[], <password>)
6、查看挖矿速率
> miner.getHashrate()
7、查看区块高度
> eth.blockNumber
8、查看挖矿账户
> eth.coinbase
9、设置挖矿账户
> miner.setEtherbase(eth.accounts[0])
10、挖矿
> miner.start(8)
11、结束挖矿
> miner.stop()
到此为止一个私链就搭建完成了。下期将发布 2个矿工直接的转账交易。
---------------------
作者:IT_浩哥
来源:CSDN
原文:https://blog.csdn.net/qq_16137795/article/details/82797861
版权声明:本文为博主原创文章,转载请附上博文链接!