搭建以太坊测试链的简易教程

在以太坊项目实际开发中,我们必须要有一个测试环境,因为产品环境是需要消耗GAS的。因此我们希望在测试环境测试无误之后再发布到产品环境以太坊链上去。

本篇教程讲述如何搭建本地的测试链。

本篇的主要参考内容来自于: https://medium.com/compound-finance/the-beginners-guide-to-using-an-ethereum-test-network-95bbbc85fc1d 以及 https://karl.tech/intro-guide-to-ethereum-testnets/

Testnets

以太坊的测试网络环境被称为Testnets,拥有几乎和以太坊等效的功能。因此可以在Testnets上开发和测试自己的智能合约,测试发币等等,作为上链前的评估环境。

目前Testnets环境有不少,受到开发者喜爱的主要有以下三种:

  • Ropsten: 一个POW的区块链,非常类似于以太坊,你可以很轻松的进行挖矿操作。
  • Kovan: 一个POA的区块链,不能挖矿,需要申请
  • Rinkeby: 一个POA的区块链,不能挖矿,需要申请

以上项目属于公共的Testnets,可以无需本地搭建直接使用,参考对应的文档接入即可,也可以使用Geth命令行工具连接到这些公共Testnets网络中。

下面我们要介绍的是需要自己DIY的Testnets项目,适用于本地小规模测试,或者没有外网访问的测试环境中,就是ganache-cli项目。

ganache-cli

曾经这个项目被称为testrpc,现在已经增强了功能,并且重命名为ganache-cli,也由etherenum项目组迁移到了truffle项目组的名下,作为truffle框架下的一个子项目。

安装它需要使用npm:

$ npm install -g ganache-cli

快速启动只需要空参运行ganache-cli即可:

$ ganache-cli
Ganache CLI v6.1.6 (ganache-core: 2.1.5)

Available Accounts
==================
(0) 0x721e4416f6290230274be32f3d68e8194403f5de (~100 ETH)
(1) 0xefbd7fd54126b3a755cce16ab80b6f018eb2cc4a (~100 ETH)
(2) 0x3af60c2747c737b37a49cbdaf6d4e3f80794cbcf (~100 ETH)
(3) 0x35456a4255a0e8d2525ffd2eccd16e88b8242de7 (~100 ETH)
(4) 0xba6b44714329f4578d785b6132e942b8f920ca07 (~100 ETH)
(5) 0xfbb8c6da1c3bcfb7e285210f2404364112877a1b (~100 ETH)
(6) 0x33e90bf0bc85d18f1fd104aaae22722ab046cfc4 (~100 ETH)
(7) 0x88a7e5c3ebd8c36f84dded2b7e15a59473153cf3 (~100 ETH)
(8) 0xe025cdf4066b6d8079438dd9eb9d8a30f82a7f1d (~100 ETH)
(9) 0x5da32eb8ca2c8fd14c745776633924e4d87cfbe4 (~100 ETH)

Private Keys
==================
(0) 0x7a11088361c7cad64acadce8deaae666a6721d02837523663cb46683b4ed7cda
(1) 0x3619c935a7f965449a0104935e4e631cba9077c0783cbf77fe0c5f92fd8bb763
(2) 0x9ac7a2914d651ef3afba681c1c2035909ae6ca93b86ee8fa367b0373c63f9379
(3) 0x7e4651e35c7e9956e7a18eb4f721fad81a0e608736cda6bdfee6a5ff9ee8b99d
(4) 0x11f3144b6f041601e80bfeb6fab4b74caff28fd9fb1cdbf3435967deee308592
(5) 0xf747fbd7e8e85fbf76d6f7c8eb4244d3b72655d5e86648daab6d020f98a0a251
(6) 0x065d754b60b856a42a6418e13fb625632122433d9b3263b686265fb67cfc550b
(7) 0x2857ecc4b378de190265245825dc42443370262c119b894dc61f88564d491252
(8) 0xa86da3e1e8fc33bbd4fcfab2461af10e7d6eaa16002fb9db582aedf8ff92881c
(9) 0x4a50bb4a4d4d29df2e894ad9d18086e079b7a3e8b8e4960649c5043268e73ae5

HD Wallet
==================
Mnemonic:      hip achieve device country identify gun drive nest danger run outside window
Base HD Path:  m/44'/60'/0'/0/{account_index}

Gas Price
==================
20000000000

Gas Limit
==================
6721975

Listening on 127.0.0.1:8545

可以看到默参运行会直接创建10个钱包账户,初始化一些以太币,并且有非常多的Gas和足够的Gas Limit,通常来说也足够运行智能合约的测试了。

更多可用参数可以参考ganache-cli --help的输出,可能比较有用的是持久化钱包(--db参数)和监听0.0.0.0(--host参数),以便组建以太坊Testnets。比如这样:

# 在某一台主机(我这里是192.168.31.100)上运行
$ mkdir -p ganache_db  # 数据库目录必须事先创建,否则程序运行报错
$ ganache-cli -h 0.0.0.0 --db ganache_db/
....
HD Wallet
==================
Mnemonic:      crucial peanut biology duck casino safe laugh crowd over enrich crane turkey
Base HD Path:  m/44'/60'/0'/0/{account_index}

Gas Price
==================
20000000000

Gas Limit
==================
6721975

Listening on 0.0.0.0:8545

我们以某一台主机为master,监听0.0.0.0,运行ganache-cli,其他参数全都默认。在另一台主机再启动一个ganache-cli,指明从master节点上进行fork:

$ mkdir -p ganache_db
$ ganache-cli -h 0.0.0.0 -f http://192.168.31.100:8545 --db ganache_db/
...
Gas Price
==================
20000000000

Gas Limit
==================
6721975

Forked Chain
==================
Location:    http://192.168.31.100:8545
Block:       0
Network ID:  1531668183776
Time:        Mon Jul 16 2018 00:25:09 GMT+0900

Listening on 0.0.0.0:8546

最后出现了Forked Chain字样,这样就可以在多个节点上部署区块链,模拟区块链的网络环境。

启动模拟环境之后,使用metamask就可以连接到测试网络上,测试交易了,可以参考官方文档进行操作: https://truffleframework.com/docs/advanced/truffle-with-metamask

大概的步骤如下:

启动ganache-cli之后,在终端输出可以看到类似于这样的字样:

HD Wallet
==================
Mnemonic:      hard verb crunch rare direct universe mean gold claw need neutral carry
Base HD Path:  m/44'/60'/0'/0/{account_index}

按照metamask网站的链接,安装chrome或firefox插件之后,打开插件图标,经过一系列的Accept操作之后,进入页面,选择Localhost 8545(如果修改过默认监听端口,那么请使用最后的Custom RPC):

image.png

然后选择Import Existing DEN(因为ganache-cli已经帮我们初始化好了账户,不用自己重新创建了)。在弹出界面中钱包种子填入终端上的Menmonic,初始化密码自己填一个,满足8位即可:

image.png

之后就可以看到简单的钱包账户界面了:

image.png

通过Import Account功能就可以导入其他创建好的账户了:

image.png

同样账户的私钥已经打印到终端上了,直接用就可以了。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,179评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,229评论 2 380
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,032评论 0 336
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,533评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,531评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,539评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,916评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,574评论 0 256
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,813评论 1 296
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,568评论 2 320
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,654评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,354评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,937评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,918评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,152评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,852评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,378评论 2 342

推荐阅读更多精彩内容