专栏首页亨利笔记用Docker容器开发区块链应用

用Docker容器开发区块链应用

题图摄于温哥华:Burrard Bridge

编者注:掌握容器技术已经成为开发者必不可少的技能,以三大开源区块链项目(比特币、以太坊和超级账本)为例子,它们都可用容器技术来开发和运行。本文以比特币为例,谈谈如何用容器技术来开发区块链应用。 作者陈晖,区块链PPk开源项目发起人和主要开发者、巴比特网站专栏作家与区块链技术版版主。对网络和通信技术有深入实践和研究,十多年的软件研发和管理经验。《区块链技术指南》作者之一。

很多刚接触区块链的开发者面临的问题,是如何上手实践基础的区块链应用开发技术,如何了解它的关键技术实践点。本文介绍如何采用Docker容器技术,快速构建私有节点的比特币测试网络(bitcoin-testnet),并结合Node.js程序语言例子,说明如何调用比特币钱包节点提供的RPC接口服务,实现涉及比特币区块链的具体应用功能。

安装基础环境

本文采用Ubuntu14.04 Desktop 操作系统作为基础环境。对于常用的Microsoft Windows7 64bit桌面操作系统,可以安装Oracle VM VirtualBox虚拟机软件来进一步安装Ubuntu14.04 Desktop版操作系统。系统安装成功后,缺省带有Node.js软件,如果要查询是否已安装Node.js及相应版本的命令参考如下:

$ apt-cache policy nodejs

$ node -v

$ npm -v

如果尚未安装Node.js,可以参考下述命令进行安装:

$sudo add-apt-repository 'deb https://deb.nodesource.com/node trusty main'

$sudo apt-get update

$sudo apt-get install nodejs

确认已安装Node.js后,可以安装对应的RPC支持库。常用的Node.js的RPC支持库有多个,我们这里选用开源项目kapitalize。

在Ubuntu终端命令行界面输入以下命令进行安装:

$npm install kapitalize

关于kapitalize开源项目的更多说明可以参考下述网址:

https://github.com/shamoons/Kapitalize

安装Docker环境

Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上。

在Ubuntu14.04操作系统上快速安装Docker运行环境的方法如下:

1)在命令行下,输入下述命令安装Docker容器支持软件。

$sudo apt-get install docker.io

2)创建软连接。

$sudo ln -sf /usr/bin/docker.io /usr/local/bin/docker

3)查看Docker版本。

$docker --version

如看到提示信息类似“Docker version 1.6.2, build 7c8fca2”则说明你已经安装Docker成功了。

安装和运行比特币测试网络

1)下载比特币测试网络(bitcoin-testnet)的Docker镜像。

$sudo docker pull freewil/bitcoin-testnet-box

2)运行Docker镜像。

$sudo docker run -t -i -p 19001:19001 -p 19011:19011 freewil/bitcoin-testnet-box

注意:上述命令中的19001和19011是配置给两个节点提供RPC服务的端口。

3)进入Docker运行环境后,输入下面的命令来启动比特币测试网络:

$ make start

启动成功后,将在本机模拟运行两个比特币测试钱包节点,组成一个私有范围的比特币测试网络。

输入下面的命令可以查看测试网络节点状态信息,从中可以了解到比特币测试网络的配置和运行状态,比如协议版本、区块链长度和挖矿计算难度等内容,具体可以通过网络或技术书籍进一步查询了解:

$ make getinfo

4)初始化和测试区块链数据。

在Docker运行窗口里依次输入下面的命令来初始化创建基本的区块链数据,供进一步的程序示例来使用。

make generate //模拟新产生1个区块记录

make generate BLOCKS=200 //模拟新产生200个区块记录

5)查看最新的钱包状态包括 balance 余额信息,这时可以留意看到第一个钱包节点的账户余额发生了变动,新的余额即通过模拟区块挖矿产生的测试比特币。

make getinfo

6)给作为示例的测试钱包地址转账10个BTC。

make sendfrom1 ADDRESS=mkiytxYA6kxUC8iTnzLPgMfCphnz91zRfZ AMOUNT=10

注意:这里的示例地址mkiytxYA6kxUC8iTnzLPgMfCphnz91zRfZ是比特币测试网络下的钱包地址(以字符m起始),与比特币正式网络下的钱包地址(一般以数字1或3起始)是有区别的。

7)模拟新产生10个区块记录,让上面的转账交易得到足够有效的确认。

make generate BLOCKS=10

8)查看最新的钱包状态包括余额信息, 这时可以留意看到第一个钱包节点的balance 账户余额发生了改变 ,差额部分即已经交易转账支出的10个BTC加上少许的矿工费用。

make getinfo

开发运行第一个示例程序

下文以Node.js开发语言为例,演示如何调用RPC接口来执行一些最基本的操作,比如导入比特币私钥,和发送一个最简单的转账交易。开发者通过该示例可以了解到最基本的区块链开发方法。

示例源码(含注释)可以从下述网址下载:

http://ppkpub.org/sample/RpcTestnet.js

然后在命令行下输入以下命令即可运行并看到运行结果:

node RpcTestnet.js

注意:每运行一次测试代码后,都需要到Docker运行环境的命令行下输入"make generate BLOCKS=10",模拟产生新的区块记录,让测试代码产生的交易记录得到有效的确认。

在理解此简单示例程序的基础上,经过对Bitcoin协议的进一步了解,我们可以调用RPC接口进一步开发出更复杂功能,如自行构建特定交易数据包(比如备注信息、多重签名输出等)来满足特定业务需求。欲进一步深入学习研究区块链应用开发的朋友,可以从网上搜索相关学习资料,也可以参看文末推荐的《区块链技术指南》一书。

关于PPk开放小组

PPk开放小组(The PPk Public Group)是一个开放的网络技术极客小组,集合了一群对比特币等加密货币感兴趣的P2P技术爱好者,小组成员多具有10多年以上通信和互联网行业技术研发从业背景,对于互联网业态的发展趋势有着独立判断和独特理念,关注其以区块链为代表的底层技术的潜在价值,并尝试融合区块链、IPFS等创新P2P技术来定义个实现一些中性、开放、开源的基础协议和工具集。

电子邮箱: ppkpub@gmail.com

互联网站: ppkpub.or

本文分享自微信公众号 - 亨利笔记(henglibiji)

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2017-01-02

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 2019最值得关注的8大技术,它们正在引领产业变革

    导读:新一轮科技革命与产业革命正在萌发,在2019年,哪些科研领域将会形成创新爆点?哪些又将如泡沫幻灭?亿欧智库发布《2019年技术趋势报告》,告诉你未来需要重...

    华章科技
  • 登链钱包(一款功能强大的以太坊钱包)完全开源

    你是否和我前段时间一样,苦苦的寻找一款好用的开源以太坊钱包,你会发现可用都很少,因为很多钱包说开源,仅仅是开源部分代码,现在不需要再找了,

    Tiny熊
  • eos钱包开发教程 原

    区块链钱包是什么?很多人会把它理解为微信支付宝钱包等,然而区块链钱包里没有数字货币,数字货币存储在区块链上,钱包作为公私钥的管理工具,用户通过钱包与区块链平台上...

    笔阁
  • 学生实名举报, “这个女教授不懂区块链”

    事情是这样的。在 Brown 认为,Athey 教授的演讲中包含了多个有关比特币基础知识的错误陈述,并带有一定的利益驱使。

    区块链大本营
  • “比特币是魔鬼?它拯救了我的家人”

    对我来说,却更为困难:我身上没有玻利瓦尔(委内瑞拉的官方货币),一枚都没有,因为我把所有钱兑换成了比特币。

    区块链大本营
  • 女子偷师男子学校,变身区块链开发工程师,却说: “这次女人不会再缺席了!”

    据 Longhash 一项研究表明,区块链行业具有十分明显的「bro culture」。在被调查公司中,有超过85.5%的团队成员为男性,14.5%的团队成员为...

    区块链大本营
  • 马化腾:“区块链到底怎么用?” 切勿亲人两行泪...

    作为互联网科技媒体,营长特别留意了互联网大佬今年都说了啥。果然,大佬们提出了很多提案,而今年提案中的关键词自然少不了这两年如坐过山车一般剧情的区块链(详情戳这里...

    区块链大本营
  • 【区块链技术工坊34期】王登辉:以太坊通证协议标准及应用场景

    2)议题: 通过本次技术分析,可以了解以太坊的ERC定义及知名ERC协议标准,如同质化通证系列ERC20以及ERC223协议; 非同质化系列ERC721以及 ...

    辉哥
  • 什么是区块链预言机(BlockChain Oracle)

    预言机(Oracle)是区块链中非常重要的一个功能,但我发现很少有人讨论,也可能很多人对此并不了解。而网上关于预言机的文章较少,很多也没有讲明白,甚至有些还是错...

    辉哥
  • Python与PHP的对决:谁是工程师最喜欢和最讨厌的语言?

    为了弄清楚雇主对哪些编程技能最感兴趣,Hired 研究了求职者在到六周内收到的面试邀请数量。如下图显示,谷歌的 Go 语言是雇主最需要的编程语言技能,可能因为这...

    机器之心

扫码关注云+社区

领取腾讯云代金券