在win10电脑上搭建私有区块链并部署间智能合约
注:方法比较简单,内容比较详细,适合刚开始入手的小白选手,如果你已经有一些,以太坊的底子有些内容需要调跳过;
win10电脑搭建私有区块链的条件
安装go-ethereum.
开始搭建私有区块链
搭建区块链前准备工作
注:在搭建私有区块链之前最好自己先建一个文件夹,搭建本地的区块链虽然不是很大,但是防止与其他文件搞混。
比如:我的目录选择在D:\blockchain\chain10
搭建区块链之前我们要在D:\blockchain\chain10中创建文件genesis.json,并且打开该目录下的命令行窗口。
genesis.json文件内容如下:
下面展示一些 内联代码片
。
{
"config": {
"chainId": 88,
"homesteadBlock": 0,
"eip150Block": 0,
"eip155Block": 0,
"eip158Block": 0,
"byzantiumBlock": 0,
"constantinopleBlock": 0,
"petersburgBlock": 0,
"ethash": {}
},
"difficulty": "1",
"gasLimit": "8000000",
"alloc": {
"7df9a875a174b3bc565e6424a0050ebc1b2d1d82": { "balance": "300000" },
"f41c74c9ae680c1aa78f42e5647a62f353b7bdde": { "balance": "400000" }
}
}
- genesis.json是用来创建创世区块的配置文件,加入同一私链的节点必须使用同一配置文件
- chainid是私链网络的标识,可以是任意数字。即使chainid相同,如果genesis.json配置不一样,也将是两个不兼容的网络
- balance是创世区块为每个账户分配的初始以太币。这里看似分配了很多,其实单位是wei。1eth=10^18wei。
注:普通的命令行打开并不是在这个目录下;可以选择在电脑左下角直接输入cmd,但是可能不在需要的文件目录下,但是也是可以通过命令行跳转到目标目录下。也可以通过下面方式。
这是打开命令行的方法;
开始搭建区块链
然后输入第一行指令:
geth --datadir node init genesis.json
先让以太坊节点自动初始化以太坊网络
接下来:
geth --datadir node --networkid 88 --rpc --rpcport "8545" --rpcapi eth,web3,personal,net --port 30303 console --nodiscover --allow-insecure-unlock
该命令是启动以太坊节点并且进入客户端;
–networkid 88:该命令是指在该区块链下的网络id,也就是即使在同一网络也需要不同的网络id进行区分;
–rpc:启动rpc服务,后续的换,如果我们想要通过,第三方对该区块链进行操作,并且将来部署智能呢合约都会用的到;
–rpcport “8545”:这个命令便是指启动电脑需要通过启动8545端口启动区块链,但是在这里并没有说明地址,其实是默认本地地址:–rpcaddr 172.0.0.1
–rpcapi eth,web3,personal,net:这个便是rpc服务可以用到的功能;
–port 30303:这个是该节点的端口,节点的地址当然也就是本地地址;但是在同意网络下,不同的节点,必须端口和节点,都需要不一样;
console:该命令行是启动客户端,我们便可以操纵该区块链了;
–allow-insecure-unlock:在最新的以太坊区块链中的客户端是不允许进行基本的转账行为,通过该命令便可以得到解决;
(注:我将一些重要的标志用线标记出来,大家可以区块链有基本的了解)
现在我们已经创建了区块链以及一个节点,接下来我们便开始创建账户;
personal.newAccount("111")
该命令创建了一个账户,并且该账户的密码为:111
如果我们需要查看我们的账户可以通过命令行
eth.accounts
通过上面的的命令行,我们从创建了两个账户,并且默认地址账户为矿工;但是有一点默认该节点只能有一个矿工,但是我们可以通过命令行进行设置;
miner.setEtherbase(eth.accounts[1]) //设置矿工
那其实通过该命令行,就可以设置矿工;其中eth.accounts[1],我们也可以发现这个是一个地址,所以也可以在这直接输入你想要命名的账号的地址;在这里我便不做演示,我们知道即可;
接下来我们便要开始挖矿环节;
miner.start() //开始挖矿
miner.stop() //停止挖矿
在这个环节中,输如命令行,可能会开始刷屏环节,不要慌,看见这种情况,挖一会(几秒就行了),输入自己停止挖矿命令,会停止;
但是记住看见Successfully sealed new block,才表示挖矿成功,有可能会出现其他的提示,如果是那种情况,就等一等,没关系,因该一会就好了。我之前出现过这种情况,一般不到一分钟;如果好几分钟,就不要等了,查看一下是不是哪里有问题。
那接下来我们需要查看一下,区块链的区块数目,即每个账户的以太币;
eth.blockNumber //查看区块链的区块数目;
web3.fromWei(eth.getBalance(eth.accounts[0]),'ether') //设置以太币单位
web3.fromWei(eth.getBalance(eth.accounts[1]),'ether') //设置以太币单位
接下来是转账环节:
注:在转账环节中,因为转账是需要提前解锁账户的,所以需要两步骤;
personal.unlockAccount(eth.accounts[0]) //解锁账户,相当于转钱之前,登录
eth.sendTransaction({from: eth.accounts[0], to: eth.accounts[1],value: web3.toWei(5,'ether')}) // 转5个以太币
到这一步转账的交易已经产生,但是如果真的想转账成功,需要讲进行挖矿,将这笔交易全部记录在区块链中,便会使交易生效。
所以需要再挖一次矿,现在也已经完成了;
我们再次产看一下,账户的以太币;
在这里我们便已经看到,在账户1中,确实收到5个以太币;至于为什么账户0的以太币则增加了,那是因为毕竟有新的区块产生,系统产生的区块里面,便有新的以太币;
部署智能合约
部署智能合约的条件
- 需要Google浏览器(这个如何下载,就不出教程了,网上太多了);
- 在谷歌浏览器上面下载Matemask插件;
通过谷歌浏览器打开,点击下载,安装啥的;
安装完成之后,注册账号,(需要什么助记词,密码,跟着教程来)最后的状态我给一个截图;
- 最后一个就是你需要编辑智能合约的网站;
部署智能合约
配置网络导入账号
首先应该将本地区块链与刚才的matemask,和编辑浏览器连接;
打开matemask插件,配置网络;
完事点击保存;
接下来添加我们刚才的账户;
这里面先择文件中是json文件的导入
json文件具体在D:\blockchain\chain10\node\keystore
注:我们当初链是在D:\blockchain\chain10,节点信息都在node文件夹里面;
node文件夹里面的keystore便是存储着我们两个账户的信息;
在这里我们需要把两个账户都导入(一个也行);导入过程我电脑很慢,我一度以为浏览器出问题了,其实就是慢一些,耐心等待一会。
确实需要很长的时间,好多分钟;导好那就这个样子,点击这两个那就切换到这两个账号上。在这个插件上其实还可以转账,但是记得转完钱,只是生成交易,要让交易生效,还必须返回,命令行窗口继续挖矿。这里不能进行挖矿命令好像。
部署智能合约
接下来就要部署只能合约:
注:智能合约很简单,给个过程,如果需要我们可以后面讲专门讲智能合约;他的名字其实不是很重要最好跟合约名字一样,像这个就起:chan.sol
// SPDX-License-Identifier: GPL-3.0
pragma solidity >=0.7.0 <0.9.0;
contract chan{
uint256 public number=5;
function change() public {
number = 10;
}
}
点击部署,然后点击确认,那就部署完了,但是别忘了,后台需要挖矿,才能让合约生效;