以太坊搭建联盟链详细教程

虫洞社区签约作者介绍

风逝 区块链 云旗天下

安装以太坊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 后,就可以使用里面的内置对象做一些操作,这些内置对象提供的功能很丰富,比如查看区块和交易、创建账户、挖矿、发送交易、部署智能合约等。<

  • 4
    点赞
  • 36
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
1. 安装Ubuntu系统 首先需要在服务器上安装Ubuntu系统(建议使用16.04及以上版本)。可以使用云服务器或者本地安装。 2. 安装Geth Geth是以太坊的官方客户端,可以用于搭建私有链和联盟链。可以使用以下命令安装: sudo add-apt-repository -y ppa:ethereum/ethereum sudo apt-get update sudo apt-get install -y ethereum 安装完成后,可以使用以下命令查看版本号: geth version 3. 创建创世块 首先需要创建创世块,创世块是区块链的第一个区块,包含了一些初始化的信息,如初始账户、初始余额、挖矿难度等。可以使用以下命令创建创世块: geth --datadir /path/to/chaindata init /path/to/genesis.json 其中,/path/to/chaindata为存储区块链数据的路径,/path/to/genesis.json为创世块的配置文件。 4. 启动节点 使用以下命令启动节点: geth --datadir /path/to/chaindata --networkid 1234 --nodiscover --rpc --rpcaddr "0.0.0.0" --rpcport 8545 --rpcapi "eth,web3,personal,net" console 其中,/path/to/chaindata为存储区块链数据的路径,--networkid指定联盟链的ID,--nodiscover禁用节点发现功能,--rpc启用RPC服务,--rpcaddr指定RPC服务监听的IP地址,--rpcport指定RPC服务监听的端口号,--rpcapi指定可用的RPC接口,console表示启动控制台。 5. 创建账户 在控制台中使用以下命令创建账户: personal.newAccount("password") 其中,password为账户的密码。 6. 启动挖矿 使用以下命令启动挖矿: miner.start() 7. 部署智能合约 使用Solidity编写智能合约代码,并使用Remix或Truffle等工具进行编译和部署。 以上就是在Ubuntu系统上搭建以太坊联盟链的步骤。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值