虫洞社区签约作者介绍
风逝 区块链 云旗天下
安装以太坊geth客户端
需要先安装go环境
安装教程
下载以太坊源码
github.com/ethereum/go-ethereum
进入 go-ethereum 目录
cd go-ethereum
make geth
然后执行make all
, 顺便安装一下其他一些命令。
创建组织
在桌面创建两个文件夹,a,b 两个文件夹,代表两个组织
在两个文件夹内分别创建两个文件,genesis.json
文件内容
{
"config": {
"chainId": 15,
"homesteadBlock": 0,
"eip155Block": 0,
"eip158Block": 0
},
"coinbase" : "0x0000000000000000000000000000000000000000",
"difficulty" : "0x40000",
"extraData" : "",
"gasLimit" : "0xffffffff",
"nonce" : "0x0000000000000042",
"mixhash" : "0x0000000000000000000000000000000000000000000000000000000000000000",
"parentHash" : "0x0000000000000000000000000000000000000000000000000000000000000000",
"timestamp" : "0x00",
"alloc": { }
}
创建创世区块
进入a文件夹,执行命令
$ geth --datadir ./data-init1/ init genesis.json
如果不在a 文件夹内,genesis.json
指定其相应的路径也可.
data-init1 目录专门用来存放节点数据,执行完会发现在该目录多出两个目录,一个为geth,一个为keystore,其中geth里面存放数据相关信息,keystore 里面存放加密过的的私钥文件,执行完后打印日志如下:
INFO [09-06|18:01:44.713] Maximum peer count ETH=25 LES=0 total=25
INFO [09-06|18:01:44.726] Allocated cache and file handles database=/Users/qianjianeng/Desktop/a/data-init1/geth/chaindata cache=16 handles=16
INFO [09-06|18:01:44.732] Writing custom genesis block
INFO [09-06|18:01:44.732] Persisted trie from memory database nodes=0 size=0.00B time=187.096µs gcnodes=0 gcsize=0.00B gctime=0s livenodes=1 livesize=0.00B
INFO [09-06|18:01:44.733] Successfully wrote genesis state database=chaindata hash=a0e580…a5e82e
INFO [09-06|18:01:44.733] Allocated cache and file handles database=/Users/qianjianeng/Desktop/a/data-init1/geth/lightchaindata cache=16 handles=16
INFO [09-06|18:01:44.736] Writing custom genesis block
INFO [09-06|18:01:44.736] Persisted trie from memory database nodes=0 size=0.00B time=2.156µs gcnodes=0 gcsize=0.00B gctime=0s livenodes=1 livesize=0.00B
INFO [09-06|18:01:44.737] Successfully wrote genesis state database=lightchaindata hash=a0e580…a5e82e
进入b 目录,执行相同命令
$ geth --datadir ./data-init2/ init genesis.json
启动控制台
启动 a 组织
进入到 a 目录
$ geth --datadir ./data-init1/ --networkid 22 --nodiscover console
networkid : 1-4系统内部使用 大于5即可
nodiscover: 此参数确保geth不去寻找peers节点,主要是为了控制联盟链接入的节点.
这里我们需要注意的是在启动第一个节点时并没有指定port参数,因此此处采用了默认的port,
也就是30303。以下为执行时打印的日志,并进入控制台。通过日志我们也可以发现端口为
30303。
以下是部分日志
INFO [09-06|18:16:44.901] Regenerated local transaction journal transactions=0 accounts=0
INFO [09-06|18:16:44.903] Starting P2P networking
INFO [09-06|18:16:44.906] RLPx listener up self="enode://251a655c56c514f5c4f81f2d08916622c0fff5f0b906ee82be0d976b255a7987c2743195f857b85d5d948c37a172ef365ad426193b939501a420b12ae8393ddc@[::]:30303?discport=0"
INFO [09-06|18:16:44.911] IPC endpoint opened url=/Users/qianjianeng/Desktop/a/data-init1/geth.ipc
INFO [09-06|18:16:44.984] Mapped network port proto=tcp extport=30303 intport=30303 interface=NAT-PMP(192.168.31.1)
Welcome to the Geth JavaScript console!
instance: Geth/v1.8.12-stable/darwin-amd64/go1.10.3
modules: admin:1.0 debug:1.0 eth:1.0 miner:1.0 net:1.0 personal:1.0 rpc:1.0 txpool:1.0 web3:1.0
如果出现 Welcome to the Geth JavaScript console!
, 则说明网络启动成功
新开一个终端,进入b目录,启动 b 组织
geth --datadir ./data-init2/ --port 30306 --networkid 22 --nodiscover console
注意,同一台电脑,a 组织已经占用30303端口,所以 b 需要换一个端口
到这里,两个组织网络都已经启动成功
###geth网络启动参数介绍
–nodiscover
使用此选项可确保未手动添加您的人员无法发现您的节点。否则,如果您的节点具有相同的创世纪文件和网络ID,则可能无意中将您的节点添加到陌生人的区块链中。
–maxpeers 0
如果您不希望任何其他人连接到您的测试链,请使用maxpeers 0。或者,如果您确切知道要连接到节点的对等端数,则可以调整此数字。
–rpc
这将在您的节点上启用RPC接口。这通常在Geth中默认启用。
–rpcapi "db,eth,net,web3"
这决定了允许通过RPC访问哪些API。默认情况下,Geth通过RPC启用web3接口。
重要提示:请注意,通过RPC / IPC接口提供API将使每个人都可以访问可以访问此接口的API(例如dapp)。请注意您启用的API。默认情况下,geth通过IPC接口启用所有API,并通过RPC接口启用db,eth,net和web3 API。
–rpcport "8080"
将8000更改为网络上打开的任何端口。geth的默认值是8080。
–rpccorsdomain "http://chriseth.github.io/browser-solidity/"
这决定了哪些URL可以连接到您的节点以执行RPC客户端任务。要非常小心,并键入一个特定的URL而不是通配符(*),它允许任何URL连接到您的RP C实例。
–datadir "/home/TestChain1"
这是您的私人链数据将存储在的数据目录中(在nubits。下选择一个与您的公共以太坊链文件夹分开的位置)。
–port "30303"
这是“网络侦听端口”,您将使用它手动连接其他对等端。
--identity "TestnetMainNode"
这将为您的节点设置一个标识,以便在对等列表中更容易识别它。以下是这些身份如何在网络上显示的示例。
控制台操作
进入以太坊 Javascript Console 后,就可以使用里面的内置对象做一些操作,这些内置对象提供的功能很丰富,比如查看区块和交易、创建账户、挖矿、发送交易、部署智能合约等。<