如何搭建linux及ubuntu以太坊私有链开发环境

技术如何搭建linux及ubuntu以太坊私有链开发环境本篇文章给大家分享的是有关如何搭建linux及ubuntu以太坊私有链开发环境,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说

本文是关于如何为linux和ubuntu Ethereum构建一个私有链开发环境。边肖觉得挺实用的,所以想分享给大家学习。希望大家看完这篇文章能有所收获。话不多说,让我们和边肖一起看看。

一、安装前的准备

1.1 查看当前CPU架构

在终端执行以下命令,确定是32位架构还是64位架构:

~ $ unamep

X86_64如果看到输出x86_64,说明是64位系统,否则是32位。

00-1010确保您已经安装了下载工具wget:

~ $ wgetV

gnuWget1 . 17 . 1 builton Linux-GNU-GNU如果wget还没有安装,使用apt-get来安装。

~ $ sudo apt-getinstallwget如何搭建linux及ubuntu以太坊私有链开发环境

1.2下载工具

##2.1安装Node.js首先,根据你的ubuntu是32位还是64位下载不同的预编译版本。我们使用官方长期支持的8.10.0LTS版本:64位:~ $ WGET https://nodejs.org/dist/v8.10.0/node-v8.10.0-linux-x64.tar.gz 32位:~ $ WGET https://nodejs.org/dist/v8.10.0/node-v8.10.0-linux-x86.tar.gz然后解压到当前目录,以64位为例:

~ $ tarzxvfnode-v8.10.0-Linux-x64.tar.gz然后修改。bashrc设置相关环境变量:

~ $ echo ' export node _ HOME=$ HOME/node-v 8 . 10 . 0-Linux-x64 '。bashrc

~ $ echo ' export NODE _ PATH=$ NODE _ HOME/lib/NODE _ modules '。bashrc

~ $ echo的导出路径=$ node _ home/bin: $ path '。bashrc终于重装了。bashrc(或再次登录)使节点生效:

~$source.bashrc现在,您可以使用节点:

~ $ nodev

V8.10.0##2.2安装Geth并在终端执行以下命令:

~ $ wget https://gethstore . blob . core . windows . net/builds/geth-Linux-amd64-1 . 8 . 3-329 AC 18e . tar . gz

~ $ mvget-Linux-amd64-1 . 8 . 3-329 ac18 geth

~ $ echexportpath=$ HOME/geth : $ path . bashrc

完成~$soure.bashrc的安装后,执行命令以验证安装是否成功:

~$gethversion

Geth

安装版本:1 . 8 . 3-stable

二、安装DApp开发环境

~ $ npminstallgsolc后,执行命令验证安装是否成功。

~ $ solcjs版本

0.40.2提交. 3155 DD 80 . emscripten . clang

2.3 安装solidity编译器

~ $ npminstallgwe B3 @ 0 . 20 . 2安装验证:

~ $ nodep ' require(' web 3 ')

{[函数:Web3]

Providers:{…}}

2.4安装web3

执行以下命令安装块菌开发框架:

~$npminst

all –g truffle

验证安装:

~$ truffle version
Truffle v4.1.3 (core 4.1.3)

2.6安装webpack

执行以下命令安装webpack:

~$ npm install –g webpack@3.11.0

验证安装

~$ webpack –v
3.11.0

三、运行私链节点

3.1创世块配置

创建一个节点目录node1,并在其中创建私链的创世块配置文件:

~$ mkdir node1
~$ cd node1
~/node1$ touch private.json

然后编辑内容如下:

{
    "config": {
        "chainId": 7878,
        "homesteadBlock": 0,
        "eip155Block": 0,
        "eip158Block": 0
    },
    "difficulty": "200",
    "gasLimit": "2100000",
    "alloc": {
        "7df9a875a174b3bc565e6424a0050ebc1b2d1d82": { "balance": "300000" },
        "f41c74c9ae680c1aa78f42e5647a62f353b7bdde": { "balance": "400000" }
    }
}
  • config.chainId:用来声明以太坊网络编号,选择一个大于10的数字即可。

  • difficulty:用来声明挖矿难度,越小的值难度越低,也就能更快速地出块。

3.2初始化私链节点

执行geth的init命令初始化私链节点:

~/node1$ geth --datadir ./data init private.json

这会在当前目录下创建data目录,用来保存区块数据及账户信息:

~/node1$ ls
data private.json

可以上述命令写到一个脚本init.sh里,这样避免每次都输入那么多记不住的东西:

~/node1$ touch init.sh
~node1$ chmod +x init.sh

编辑内容如下:

#!/bin/bash
geth --datadir ./data init private.json

在部署下一个节点时,就可以直接执行这个脚本进行初始化了。例如,在另一台机器上:

~/node1$ ./init.sh

3.3启动私链节点

从指定的私链数据目录启动并设定一个不同的网络编号来启动节点:

~/node1$ geth --rpc --datadir ./data --networkid 7878 console

同样,你可以用一个脚本console.sh来简化启动节点时的输入:

~/node1$ touch console.sh
~/node1$ chmod +x console.sh

编辑内容如下:

#!/bin/bash
geth --rpc \
      --rpcaddr 0.0.0.0 \
      --rpccorsdomain "*" \
--datadir ./data \
--networkid 7878 \
console
  • rpcaddr:用来声明节点RPC API的监听地址,设为0.0.0.0就可以从其他机器访问API了;

  • rpccorsdomain:用于解决web3从浏览器中跨域调用的安全限制问题。 以后启动节点,只要直接执行这个脚本即可:

~/node1$ ./console.sh

3.4 账户管理

3.4.1 查看账户列表

在geth控制台,使用eth对象的accounts属性查看目前的账户列表:

> eth.accounts
[]

因为我们还没有创建账户,所以这个列表还是空的。

3.4.2创建新账户

在geth控制台,使用personal对象的newAccount()方法创建一个新账户,参数为你自己选择的密码:

> personal.newAccount('78787878')
0xd8bcf1324d566cbec5d3b67e6e14485b06a41d49

输出就是新创建的账户地址(公钥),你的输出不会和上面的示例相同。geth会保存到数据目录下的keystore文件中。密码要自己记住,以后还需要用到。

3.4.3查询账户余额

在geth控制台,使用personal对象的getBalance()方法获取指定账户的余额,参数为账户地址:

> eth.getBalance(eth.accounts[0])
0

或者直接输入账户地址:

> eth.getBalance('0xd8bcf1324d566cbec5d3b67e6e14485b06a41d49')
0

新创建的账户,余额果然为0。

3.4.4挖矿

没钱的账户什么也干不了,需要挖矿来挣点钱。 在geth控制台执行miner对象的start()方法来启动挖矿:

> miner.start(1)

等几分钟以后,检查账户余额:

> eth.getBalance(eth.accounts[0])
2.695e+21

钱不少了,2695ETH了,目前市值将近500万人民币了,哈。 执行miner对象的stop()方法停止挖矿:

> miner.stop()

3.4.5解锁账户

在部署合约时需要一个解锁的账户。在geth控制台使用personal对象的unlockAccount()方法来解锁指定的账户,参数为账户地址和账户密码(在创建账户时指定的那个密码):

> eth.unlockAccount(eth.accounts[0],'78787878')
true

四、构建示例项目

4.1 新建DApp项目

执行以下命令创建项目目录并进入该目录:

~$ mkdir demo
~$ cd demo

然后用webpack模版初始化项目骨架结构:

~/demo$ truffle unbox webpack
Downloading…
Unpacking…
Setting up…
Unbox successful. Sweet!

4.2 安装项目依赖的NPM包

执行以下命令安装nmp包:

~/demo$ npm install

4.3 修改truffle配置

truffle.js中,修改port为8545,因为geth默认在8545端口监听:

module.exports = {
  networks:{
    development: {
      …
      port: 8545
      …
    }
  }
}

4.4 启动节点

在 另一个终端,执行以下命令启动节点软件,以便部署合约并执行交易:

~$ cd node1
~/node1$ ./console.sh
>

注意:为了在节点上部署合约,别忘了启动geth后先解锁账户:

> personal.unlockAcount(eth.accounts[0],'78787878')
true

4.5 编译合约

执行以下命令编译项目合约:

~/demo$ truffle compile

4.6 部署合约

执行以下命令来部署合约:

~/demo$ truffle migrate

如果你之前忘了在geth控制台解锁账户,会看到如下错误,参考前面说明进行解锁即可:

Error: authentication needed: password or unlock

如果已经正确地解锁了账户,你会看到部署过程停止在如下状态:

Replacing Migrations…
… 0x3088762a5bc9…

这是因为truffle在等待部署交易提交,但是我们在私链中还没有启动挖矿。 现在切换回geth终端窗口,查看交易池的状态:

> txpool.status
{
  pending:1,
  queued:0
}

果然有一个挂起的交易!启动挖矿就是了:

> miner.start(1)

稍等小会儿,再查看交易池的状态:

> txpool.status
{
  pending:0,
  queued:0
}

交易已经成功提交了。我们可以停止挖矿了,因为它太占CPU了:

> miner.stop()

现在切换回truffle那个终端,部署过程也正确地执行完了。

4.7 启动DApp

执行以下命令来启动DApp:

~/demo$ npm run dev

在浏览器里访问http://localhost:8080即可。 如果你希望从别的机器也可以访问你的DApp应用,修改一下package.json:

{
  scripts:{
    "dev": "webpack-dev-server –-host 0.0.0.0"
  }
}

以上就是如何搭建linux及ubuntu以太坊私有链开发环境,小编相信有部分知识点可能是我们日常工作会见到或用到的。希望你能通过这篇文章学到更多知识。更多详情敬请关注行业资讯频道。

内容来源网络,如有侵权,联系删除,本文地址:https://www.230890.com/zhan/43710.html

(0)

相关推荐

  • 奥运会会歌,历届奥运会的会歌是什么

    技术奥运会会歌,历届奥运会的会歌是什么·2008北京奥运应征歌曲《梦想在望》1984洛杉矶奥运会主题曲
    歌名奥运会会歌:ReachOut欢乐通宵
    词曲:[美]约翰·威廉姆斯(JohnWilliams)
    演唱:[美]莱昂纳

    生活 2021年10月31日
  • 蛋糕不蓬松的原因,蛋糕做出来会塌不泡是什么原因

    技术蛋糕不蓬松的原因,蛋糕做出来会塌不泡是什么原因蛋糕的膨发情况就与蛋白打发状态息息相关。蛋糕烤出来回缩蛋糕不蓬松的原因、总是膨发不起来是因为蛋白打发不到位,所以就算加了泡打粉也膨胀不起来。蛋糕塌陷!大家都知道热胀冷缩的

    生活 2021年10月30日
  • 十大经典排序算法

    技术十大经典排序算法 十大经典排序算法本文转载自https://www.cnblogs.com/onepixel/articles/7674659.html
    0、算法概述
    0.1 算法分类
    十种常见排序

    礼包 2021年12月14日
  • 愀怎么读,afternoon怎么读音发音

    技术愀怎么读,afternoon怎么读音发音afternoon 的读音愀怎么读:[ˌɑːftəˈnuːn] 具体解析: afternoon
    英文发音:[ˌɑːftəˈnuːn]
    中文释义:n.下午(中午12点至下午6

    生活 2021年10月21日
  • VB.NET中子过程和函数怎么用

    技术VB.NET中子过程和函数怎么用小编给大家分享一下VB.NET中子过程和函数怎么用,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!VB.NE

    攻略 2021年12月2日
  • Python Django项目和应用的创建方法是什么

    技术Python Django项目和应用的创建方法是什么这篇文章主要介绍“Python Django项目和应用的创建方法是什么”,在日常操作中,相信很多人在Python Django项目和应用的创建方法是什么问题上存在疑

    攻略 2021年11月26日