
搭建智能合约私有平台(搭建geth)
搭建智能合约私有平台
由于公有区块链网络的共识需要网络所有成员参与,数据记录的速度非常缓慢,例如比特币需要10分钟打包一个区块也就是记录新的数据,以太坊需要15秒打包区块链记录新的数据。
另一方面,在公有网络中数据的记录都需要向矿工支付相当一部分费用。
这大大缩小了区块链网络的应用范围,并且与现实世界诸多实际业务需求不相匹配。
基于以上情况,假设有一个交易平台有若干用户,那若将此交易平台设计为基于区块链网络(即私有区块链平台),那么平台交易数据的产生和记录只需在这若干用户中形成共识即可上链,那么区块链网络的时效性将大大提升。
举个例子,假设以太坊公有网络有500000个节点,那么网络共识就需要在所有参与网络的节点中形成,如果设计一个基于以太坊的私有平台,有五个参与用户(每个用户都有1个节点),那么私有网络的共识将仅在这5个节点中形成,那么网络的效率将大大提升,同时计算成本将大大减少。
所以,针对某些特定应用场景搭建私有化的区块链网络来记录数据,可以在保证数据的可信度的同时,提高数据记录的时效性。接下来我们将一起动手搭建属于自己的区块链网络。
一.创建与配置创始块 genesis.json
我们采用以太坊作为私有链的搭建技术基础。
首先,我们需要编写创始块配置信息,也就是定义区块链第一个块(Block0
)的内容,这是至关重要的一步,由于Block0
是整个区块链中唯一一个没有前任的区块,其中定义的配置内容将被后续所有的区块沿用。
我们一般在genesis.json
的文件中定义创始块内容,我们可以基于现有模板修改其中选项。
以下所有操作均在终端中进行,也就是我们所说的小黑款。
由于genesis.json可以有诸多版本,我们首先创建文件管理目录用于存放这些文件。如下命令
mkdir geth
cd geth
接下来,我们创建并编辑genesis.json文件,并且保存为genesis.json内容如下:
{
"config": {
"chainId": 8888,
"homesteadBlock": 0,
"daoForkBlock": 0,
"daoForkSupport": true,
"eip150Block": 0,
"eip155Block": 0,
"eip158Block": 0,
"byzantiumBlock": 0,
"constantinopleBlock": 0,
"petersburgBlock": 0,
"ethash": {}
},
"nonce": "0x42",
"timestamp": "0x0",
"extraData": "0x11bbe8db4e347b4e8c937c1c8370e4b5ed33adb3db69cbdb7a38e1e50b1b82fa",
"gasLimit": "0xffffffff",
"difficulty": "400",
"alloc": {
"093f59f1d91017d30d8c2caa78feb5beb0d2cfaf": {
"balance": "0xffffffffffffffff"
},
"ddf7202cbe0aaed1c2d5c4ef05e386501a054406": {
"balance": "0xffffffffffffffff"
}
}
}
文件内容书写:
方法1:直接进入该目录下,新建一个文本,将上述内容粘贴进去再进行保存,最后将文件名称修改成genesis.json即可。
方法2:直接再终端上进行操作,操作步骤如下:文件编辑方法:
1、使用命令 vi filename
编辑文件 genesis.json
,这个时候进入到的是命令模式:vi genesis.json
2、接下来我们按"i
"键,然后就可以使用键盘输入内容了
3、将上述内容复制过去
4、按“ESC
”重新进入到命令模式
5、在命令模式的情况下,我们按“:
”,进入到末行模式
6、输入“wq!
”,然后回车,强行保存退出
7、使用“cat filename
”命令查看 genesis.json
文件内容,即可看到内容已经更改
创建的genesis.json内容表如下图:
二.通过命名行方式启动私有以太坊网络
1.使用geth.init命令初始化操作,将genesis.json的区块信息写入链中。
geth --datadir data0 init genesis.json
注意: --datadir data0 为指定链的数据存储文件夹为data0。
2.启动节点
geth --networkid 14 --nodiscover --datadir data0 --rpc --rpcapi net,eth,web3,personal --rpcaddr 127.0.0.1 console
上述参数代表的含义:
--nodiscover
关闭p2p网络的自动发现,需要手动添加节点,这样有利于我们隐藏私有网络--datadir
区块链数据存储目录--networkid
网络标识,私有链取一个大于4的随意的值--rpc
启用ipc服务,默认端口号8545--rpcapi
表示可以通过ipc调用的对象--rpcaddr ipc
监听地址,默认为127.0.0.1
,只能本地访问console
打开一个可交互的javascript
环境
更多参数可参考:Command Line Options · ethereum/go-ethereum Wiki · GitHub
启动后显示成功图如下:
完成上述操作,我们本地的私有链就搭建结束咯!!
之后,我们可以开始尝试创建一个新的账户,然后根据提示输入密码,就可以完成一个账户的新建,并且控制台会返回新建账户的地址使用命令如下:
personal.newAccount()
其他命令:
1.eth.blockNumber 列出区块高度。
2.eth.getBalance("账户,如:0x6ce0864e3ab5b50286b7813414e0a17309cddc16") 查看对应账户的余额。
更多推荐
所有评论(0)