本文作者邱飞旸是一位来自清华的 Nervos 忠实粉丝,他给我们带来了相当详尽的本地搭建 AppChain 全家桶教程,快来一起享用吧!

本文主要定位给对区块链有一定了解的,但是对 Nervos AppChain 这一系列产品知之甚少,想要入门的用户。本文所使用的方法并不是最快的搭建一个 Dapp 的方法,在公共测试链上搭建 Dapp 会更加快速,可以跳过 CITA 链搭建步骤,请参考官方 Demo: First Forever。

主要环境:

CITA 0.18

Ubuntu 18.04

Nervos Network 包含了 Nervos CKB (layer 1) 和 Nervos AppChain (layer 2)。引用 Nervos AppChain 官方文档的一句话介绍:

「Nervos AppChain」是一套开源的应用公链解决方案。

官方文档种已经包含了各种系列工具的介绍。本教程主要利用以下工具构建一个麻雀虽小,五脏俱全的 Dapp。

CITA

ReBirth

Microscope

nervos.js

cita-cli

这五种产品的关系如下:

docker(安装方法请参考 CITA - 安装Docker)

首先,我们需要获取 CITA,CITA 是 AppChain 客户端,目前仅支持联盟链。CITA 是 Nervos AppChain 工具链的核心。获取本地可用的 CITA 链有两种方式:从源码编译或者直接使用发布包。

由于官方文档已经阐述十分详细,本章不作过多赘述,请参考 CITA - 编译 CITA。

可在 CITA 正式发布版本处找到目前所有已经发布的版本。通常选择 cita_secp256k1_sha3.tar.gz 版本下载

在本文中,将配置四个节点,并且使用 charge 经济模型(具体说明见 CITA - config_tool的功能和用法)。如果不配置经济模型,在创建链的时候默认就是 quota。quota 模型下链上没有原生 Token,交易也不消耗 Token,而 charge 模型就和平时我们使用 Ethereum 的体验基本一致了。

在使用 create_cita_config.py 工具进行节点配置的时候,应当同时指定配置参数。脚本如下:

1./env.sh ./scripts/create_cita_config.py create \

2--chain_nametest-chain \

3--jsonrpc_port 1337 \

4--ws_port 4337 \

5--grpc_port 5000 \

6--nodes"127.0.0.1:4000,127.0.0.1:4001,127.0.0.1:4002,127.0.0.1:4003"\

7--contract_arguments"SysConfig.chainId=2"\

8"SysConfig.economicalModel=1"

后面需要用到的是 jsonrpc_port,由于我们是在本地搭链,配置了四个节点,所以 JSON-RPC 地址应分别为

1、http://127.0.0.1:1337

2、http://127.0.0.1:1338

3、http://127.0.0.1:1339

4、http://127.0.0.1:1340

部署合约和发起交易时任选一个地址连接即可。

使用 cita-cli 首先应安装 rust 和 cargo。可以参见 Rust 程序设计语言 - 安装。

然后安装 cita-cli :

1、gitclonehttps://github.com/cryptape/cita-cli.git

2、cdcita-cli/cita-cli

3、cargo install

然后可以运行 ~/.cargo/bin/cita-cli 或者进入 cita-cli/cita-cli 运行 cargo run命令。运行界面如下:

1、# default is http://127.0.0.1:1337

2、# the following is a test chain provided by nervos

3、cita> switch --host http://121.196.200.225:1337

4、cita> rpc blockNumber

...

cita>exit

节点无法启动。

在 cita 根目录下键入

1、cd/0/logs

2、cat cita-network.log

cita-network.log 末尾打印出来的结果中有:

1、Thread main panicked at failed to open url amqp://guest:guest@localhost/test-chain/0 : Protocol("Connection reset by peer (os error 104)"), /opt/.cargo/git/checkouts/cita-common-1aad419f3e80ba17/67c715f/pubsub_rabbitmq/src/lib.rs:59

说明 RabbitMQ 服务没有启动起来,此时,需要检查一下是不是有其他的 rabbitmq 的进程,具体原因可以参见官方文档配置节点下的 Note。我们先结束掉 docker 容器,使用

1、docker ps# 查看目前运行的docker容器

2、docker stop # 结束掉和CITA有关的所有容器

然后查看是否还有 RabbitMQ 服务,

1、ps -aux | grep rabbitmq

如果有的话用 kill -9 结束掉进程。还可以使用 systemd 查看是否有 RabbitMQ 服务被注册:

1、sudo systemctl status rabbitmq-server

如果有的话,用户可自行决定是否关闭自启动。

此时,再重新执行配置操作:

1、./env.sh ./bin/cita setuptest-chain/0

2、./env.sh ./bin/cita setuptest-chain/1

3、./env.sh ./bin/cita setuptest-chain/2

4、./env.sh ./bin/cita setuptest-chain/3

然后启动节点即可。

本文按照官方 Demo: First Forever 进行部署。具体步骤不再赘述,只是指出几个注意事项。

部署合约需要用到公私钥对,并且在我们 charge 经济模型下(刚刚说过)只有超级管理员和节点的地址才有余额发布合约。

如果在前文配置节点的时候没有配置超级管理员,那么默认的超级管理员的地址和私钥为:

address: 0x4b5ae4567ad5d9fb92bc9afd6a657e6fa13a2523

privkey: 5f0258a4778057a8a7d97809bd209055b2fbafa654ce7d31ec7191066b9225e6

节点的私钥存储在进行节点配置时生成的 test-chain 文件夹下的节点文件夹里面,文件名叫做 privkey。节点地址在test-chain 文件夹下的 template/init_data.yml 文件里面。

单合约编译时,solcjs 与 solc 没有什么太大区别。当多合约编译的时候,这两个工具有些区别。

多合约编译时,假设 YOUR_CONTRACT_1 import 了 YOUR_CONTRACT_2:

如果使用 solcjs,请使用

1、solcjs --optimize --abi --bin

如果使用 solc,请使用

1、solc --optimize --abi --bin

但是要确保 YOUR_CONTRACT_2 和 YOUR_CONTRACT_1 位于同一目录或者 YOUR_CONTRACT_1所在目录的子目录,否则,应当使用 --allow-paths 参数指定 YOUR_CONTRACT_2 所在目录。

这一步可以使用 nervos.js 在web网页中调用合约方法,参考 Demo First Forever 和 @nervos/chain 文档。

Microscope 是专门为 Nervos AppChain 设计的区块浏览器,使用它可以看到任意给定链的块和交易的详细信息。

ReBirth 是基于 PostgreSQL 的一个缓存服务器,Microscope 中的某些功能,例如列出最近10笔交易,必须使用ReBirth。

我们将使用 Microscope + ReBirth 组合搭建区块链浏览器。

1. 下载 Microscope 的 Github 仓库

1、gitclonehttps://github.com/cryptape/Microscope/

2. 安装仓库依赖

1、yarn install

没有 yarn 的可以利用 npm i yarn -g 来安装。Ubuntu 用户可以通过下列命令安装 node 和 npm:

1、sudo apt-get install npm

2、npm i n -g

3、n latest

3. 生成 DLL 包

1、yarn run dll

4. 添加配置文件

1、cp ./.env.example ./.env

5. 修改配置文件

打开 .env,默认配置如下:

1、# public content server 地址

2、PUBLIC=localhost:8082

3、# 默认 AppChain JSON-RPC 地址,就使用刚刚配置好的节点RPC地址即可

4、CHAIN_SERVERS=http://47.96.231.19:4000

5、# 区块浏览器名称

6、APP_NAME=Microscope

7、LNGS=zh,en,ja-JP,ko,de,it,fr

本文使用的配置如下:

1、# https://cdn.cryptape.com/ 是Nervos官方的CDN

2、PUBLIC=https://cdn.cryptape.com/

3、CHAIN_SERVERS=http://127.0.0.1:1337/

4、APP_NAME=Microscope

5、LNGS=zh,en,ja-JP,ko,de,it,fr

6. 开发模式运行服务器

1、yarn start

其中一行输出如下:

1、Project is running at http://localhost:8080/

然后等待 webpack 打包,时间可能会比较长。之后看到如下输出:

1、webpack: Compiled successfully.

说明服务器已经成功运行。

在浏览器中键入 http://localhost:8080/,可以看见如下图所示,最近交易列表无法显示:

1. 设置配置文件

配置文件是 re-birth 根目录下的 .env,一般应当另建一个 .env.local 文件,本文我们直接修改 .env,将 CITA_URL 字段设为 http://127.0.0.1:1337/

2. 运行 ReBirth

1、gitclonehttps://github.com/cryptape/re-birth.git

2、cdre-birth

3、make setup# 第一次运行使用这个命令

4、make up# 开启 docker daemon

命令会自动拉取 docker 镜像并运行容器,默认运行的地址为 http://localhost:8888。

输入 docker ps,应该可以看见至少有 4 个容器在运行,分别为 re-birth_web, re-birth_web, re-birth_web 和一个 PostgreSQL 的容器。

3. 重新配置 Microscope

在浏览器中键入 http://localhost:8080/,点击如下图红框所示按钮:

在如图所示 Other Chain 处键入刚刚设置好的 ReBirth 缓存服务器地址 http://localhost:8888:

可以发现浏览器的功能变得全面:

[1] Dex Hunter. (2018, September 4). Dex Hunter blog. A hands-on tutorial on building your first DAPP with CITA (Nervos). Retrieved September 19, 2018, from https://dexhunter.github.io/tutorial/2018/09/04/tutorial-on-cita.html

再次感谢邱飞旸给我们带来的纯干货分享

ⅰcp经济模型_干货!来自清华小哥哥的全家桶教程——手把手教你在本地构建 Nervos AppChain...相关推荐

  1. python大数据论坛_干货 | Python+大数据计算平台,PyODPS架构手把手教你搭建

    数据分析和机器学习 大数据基本都是建立在Hadoop系统的生态上的,其实一个Java的环境.很多人喜欢用Python和R来进行数据分析,但是这往往对应一些小数据的问题,或者本地数据处理的问题.如何将二 ...

  2. 尚硅谷_springcloud(2020新版 思维导图_全网最火SpringCloud2020全家桶教程

    全网最火SpringCloud2020全家桶教程 教程介绍 教程重点讲解了SpringCloud各种组件停止更新进入维护阶段后,后续技术组件的升级和替换策略及方案选型,既有传统Eureka.Ribbo ...

  3. insert into 多条数据_最全总结 | 聊聊 Python 数据处理全家桶(Sqlite篇)

    点击上方"AirPython",选择"加为星标" 第一时间关注 Python 技术干货! 1. 前言 上篇文章 聊到 Python 处理 Mysql 数据库最常 ...

  4. python手机版做小游戏代码大全-Python大牛手把手教你做一个小游戏,萌新福利!...

    原标题:Python大牛手把手教你做一个小游戏,萌新福利! 引言 最近python语言大火,除了在科学计算领域python有用武之地之外,在游戏.后台等方面,python也大放异彩,本篇博文将按照正规 ...

  5. spring cloud全家桶_阿里架构师玩转spring全家桶(实战篇),附赠3本spring电子书...

    Spring框架自诞生以来一直备受开发者青睐,今天在这里分享的是Spring全家桶实战篇电子书籍.书籍内容中包括了Spring.SpringBoot.SpringCloud.SpringMVC四个实战 ...

  6. 新手教程--手把手教你从零开始制作一款电商必备的商城小程序

    近年来,在电商.新零售趋势的影响下,实体零售商也都在谋求自身的渠道变革,完善消费体验.如今微信已有超过十亿的用户,市场巨大,而微信小程序的开通不仅能够降低品牌开发和营销成本,实现精准营销,提升品牌知名 ...

  7. stata绘制roc曲线_两种诊断方法的ROC曲线比较,手把手教Medcalc软件操作

    上一次我们讲了用Medcalc软件绘制单个ROC曲线和找截断值,小咖给有需要的小伙伴发过去了Medcalc软件安装包,不知道你有没有感受到这个软件的便利性呢. 今天我们来看一下如何用Medcalc软件 ...

  8. 怎么测试本地网页在不同分辨率下电脑显示效果_干货:微信小程序测试过程中的各个要点...

    文章转自:新梦想软件测试 小程序跟app一样,上线需要经过微信的审核.小程序产品的版本类型分为:开发版.体验版.正式版.开发版.体验版无需审核,只需要给微信号权限,经过扫小程序的二维码才能访问. 单纯 ...

  9. ⅰcp经济模型_简单介绍一下R中的几种统计分布及常用模型

    统计学上分布有很多,在R中基本都有描述.因能力有限,我们就挑选几个常用的.比较重要的简单介绍一下每种分布的定义,公式,以及在R中的展示. 统计分布每一种分布有四个函数:d――density(密度函数) ...

最新文章

  1. 模型可视化_20210208
  2. tcp断开连接,4次握手,为什么wireshark 只能抓到3个包?
  3. 2星|《快公司》2018年2-3期:商业人物访谈集
  4. 看清上市公司的财务分析
  5. bzoj1007题解
  6. Masm for Windows集成开发环境编写汇编程序
  7. OGEngine教程:声音载入
  8. @font-face
  9. 漫步凸分析六——凸集的相对内点
  10. python找图片不同_用openCV和Python 实现图片对比,并标识出不同点的方式
  11. Eclipse 插件开发 资料贡献
  12. 关于Meminfo中MemAvailable 理解
  13. LOFTER轻博模板设计
  14. 【基于obs插件-5】-屏幕截图
  15. 曾经,我以为我很懂 MySQL 索引...
  16. linux逻辑卷管理的创建过程,LVM-逻辑卷管理器创建过程for linux
  17. MySQL 窗函数 流动平均数 running average
  18. SQL Server排序规则
  19. 何夕 - 六道众生·何夕科幻自选集(2014年1月31日)
  20. 我们造出了打破次元壁的锤子,然后呢?

热门文章

  1. java在进行修改时报400_java开发注册群组报错400
  2. mysql 缓存监控_MySql 缓存查询原理与缓存监控 和 索引监控
  3. 自行车实现无人驾驶,背后究竟有何“天机”?
  4. 单片机实用工具大全,超级赞,工程师必备!
  5. Verilog_寻找最高有效位的位置
  6. 类成员_月隐学python第17课
  7. php开启端口复用,请问下workman是否支持端口复用?
  8. Network下方什么请求也没有_HTTP的响应与请求
  9. ftp服务器连接成功不显示端口,ftp被动联接端口是怎样确定的
  10. python summary结果提取_Python coverage.summary方法代码示例