深度学习
这里我们以常用的Microsoft Windows 764bit桌面操作系统为例,安装Oracle VM VirtualBox虚拟机支持软件,来进一步安装Ubuntu14.04Desktop 64bit版操作系统,作为基础开发环境。
6.1.1 下载和安装Oracle VM VirtualBox
Oracle VM VirtualBox是一款开源的虚拟机软件。对于需要跨不同操作环境开发代码的开发人员是一个很有用的工具。由于VirtualBox允许在一台计算机 上运行多个虚拟操作系统(如Solaris、Windows、DOS、Linux、OS/2Warp、BSD等),开发人员只需在不同桌面窗口之间进行切 换即可轻松切换操作系统。
1)从网址https://www.virtualbox.org/wiki/Downloads 下载VirtualBox。
从网页里选择VirtualBox 5.1.2for windows hosts x86/amd64版本,单击下载,如图6-1所示。
图6-1 选择合适版本下载
2)下载完成后,双击安装文件,开始如图6-2所示的安装步骤。
图6-2 安装向导启动
单击Next按钮继续下一步操作,进行安装组件和路径选择,如图6-3所示。
图6-3 安装组件和路径选择
选择安装位置后(注意,安装路径中不能包含中文字符),单击Next按钮继续下一步操作,如图6-4所示。
图6-4 选择是否创建快捷方式
单击Next按钮后,继续如图6-5所示的下一步操作。
单击Yes按钮后继续下一步确认安装操作,如图6-6所示。
单击Install按钮继续下一步操作,如图6-7所示。
图6-5 确认网络连接将短时间中断然后恢复正常的提示
图6-6 确认安装操作
图6-7 安装进度显示
单击Next按钮后进行如图6-8所示的下一步操作。
图6-8 安装完成
单击Finish按钮后进入VirtualBox主界面,如图6-9所示。
图6-9 VirtualBox主界面
6.1.2 以虚拟机方式安装Ubuntu14.04
1)从下述网址下载Ubuntu 14.04Desktop 64bit的BT种子文件。
http://www.ubuntu.com/download/alternative-downloads
从网页里选择BitTorrent下方的Ubuntu 14.04.4Desktop(64-bit)版本,单击下载,如图6-10所示。
图6-10 选择合适版本的BT种子文件下载
2)用BT下载软件打开刚下载的BT种子文件,下载对应的Ubuntu操作系统光盘镜像ISO文件。
3)下载Ubuntu操作系统ISO文件完成后,运行VirtualBox,单击“新建”按钮,在出现的如图6-11所示的界面,可以选择操作系统版本、类型。
4)输入待安装的虚拟系统自定义名称(比如“TestBlockchain”),选择“类型”为“Linux”、版本为“Ubuntu(64-bit)”后,单击“下一步”按钮继续下一步操作,出现如图6-12所示界面。
图6-11 选择安装虚拟操作系统版本、类型
图6-12 设置内存大小
5)在图6-12所示界面里选择虚拟系统运行内存的大小,一般按建议的默认内存值设定即可,根据实际机器的内存大小也可稍作调整。然后单击“下一步”按钮继续下一步操作,出现如图6-13所示界面。
6)对于新建虚拟系统,默认选择“现在创建虚拟硬盘”(见图6-13),然后单击“创建”按钮继续下一步操作,出现如图6-14所示界面,选择虚拟硬盘文件类型。
图6-13 设置虚拟硬盘存储空间
图6-14 设置虚拟硬盘文件类型
7)文件类型选择默认的“VID(VirtualBox磁盘映像)”,单击“下一步”按钮继续下一步操作,出现如图6-15所示界面,以设置硬盘空间分配方式。
8)选择“动态分配”选项,然后单击“下一步”按钮继续下一步操作,出现如图6-16所示界面。
图6-15 设置硬盘空间分配方式
图6-16 设置虚拟硬盘存放的位置和分配的大小
9)选择虚拟硬盘空间存储文件的存放位置和分配的大小(对于Ubuntu操作系统建议设置10GB以上),然后单击“创建”按钮。完成虚拟系统安装环境创建后,回到VirtualBox主窗口,如图6-17所示。
图6-17 已创建的虚拟系统安装环境
10)从左侧列表中选择刚创建的虚拟系统,然后单击“启动”按钮继续下一步操作。第一次启动虚拟系统时的显示界面如图6-18所示。
图6-18 选择Ubuntu操作系统安装文件
11)从文件列表里选择你已下载完成的Ubuntu操作系统光盘镜像ISO文件(文件名类似ubuntu-14.04.4-desktop-amd64.iso),然后单击“启动”按钮,就进入Ubuntu操作系统的安装初始界面了,如图6-19所示。
图6-19 Ubuntu操作系统安装初始界面
在这里,熟悉英文的读者直接点击Install Ubuntu按钮,然后根据后续各步骤中的提示安装就行了。对于不太熟悉英文的读者,可以从左侧语言列表中选择“中文简体”,安装界面将切换为中文提示, 如图6-20所示。然后单击“安装Ubuntu”按钮,根据后续各步骤按中文提示安装就行了。
图6-20 Ubuntu操作系统中文安装界面
6.1.3 安装Node.js开发环境
Ubuntu14.04Desktop操作系统默认带有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
6.1.4 安装Docker运行环境
Docker(见图6-21)是一个开源的应用容器(Container)引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器镜像中,然后发布到支持容器的Linux机器上,可用同样的环境运行应用。
图6-21 Docker图标
Docker设想交付运行环境如同海运,如果把操作系统可比作一艘货轮,每一个在操作系统基础上的软件都如同一个集装 箱,用户可以通过标准化手段自由组装运行环境,同时集装箱的内容可以由用户自定义,也可以由专业人员制造。这样,交付一个软件,就是一系列标准化组件的集 合的交付,如同乐高积木,用户只需要选择合适的积木组合,并且在最顶端署上自己的名字。
在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”提示信息,则说明你已经在Ubuntu14.04上面快速安装Docker成功了。
如需了解关于Docker安装和运行的入门说明,可以通过网络搜索更多资料。
6.1.5 安装和运行比特币测试网络
1)下载比特币测试网络的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
显示的提示信息如下,中文为对其中内容的具体说明。
bitcoin-cli -datadir=1 getinfo // 第一个钱包节点的信息{
"version": 120100, // 此客户端节点软件版本
"protocolversion": 70012, // 比特币协议版本
"walletversion": 60000, // 钱包数据格式版本
"balance": 0.00000000, // 第一个钱包节点的账户余额,初始为0
"blocks": 0, // 已经产生的区块数量,初始启动为0,可以通过
// 进一步的命令来模拟生成区块数据
"timeoffset": 0, // 时间的时区偏移量
"connections": 1, // 本节点接入的其他节点数量
"proxy": "", // 网络代理设置
"difficulty": 4.656542373906925e-10, // 当前挖矿计算难度
"testnet": false, // 是否使用外部的比特币测试网络,false为“否”,
// 即只建立私有测试环境
"keypoololdest": 1467253951, // 预生成的公匙和私匙池的起始时间
"keypoolsize": 101, // 预生成的公匙和私匙池的包含记录数量,用于生成钱包
// 地址和找零地址,这样钱包备份可以对已有的交易以及
// 未来多笔交易有效
"paytxfee": 0.00000000, // 每次发送比特币的时候选择支付的交易手续费,包含
// 额外手续费的交易会更快地被包含在新生成的区块中,
// 因此会更快生效
"relayfee": 0.00001000, // 每笔交易支付给矿工的最少的标准手续费
"errors": "" // 节点运行错误提示}
bitcoin-cli -datadir=2 getinfo // 第2个钱包节点的信息,具体说明同上{
"version": 120100,
"protocolversion": 70012,
"walletversion": 60000,
"balance": 0.00000000,
"blocks": 0,
"timeoffset": 0,
"connections": 1,
"proxy": "",
"difficulty": 4.656542373906925e-10,
"testnet": false,
"keypoololdest": 1467253951,
"keypoolsize": 101,
"paytxfee": 0.00000000,
"relayfee": 0.00001000,
"errors": ""
}
注意:以上运行参数一般用默认值即可,不需要调整。熟悉初步的区块链开发后,开发者如需调整以上运行参数,可以参考比特币客户端软件的配置说明。详见下述网址:https://en.bitcoin.it/wiki/Running_Bitcoin#Bitcoin.conf_Configuration_File 。
4)初始化和测试区块链数据。
在Docker运行窗口里依次输入下面的命令来初始化创建基本的区块链数据,供进一步的程序示例来使用。
注意:在正式的比特币网络环境下,平均10分钟左右才能产生一个新的区块。但在这里特殊设定的测试网络(testnet)环境下,区块通过简单的命令控制就可以即时和批量产生,方便程序开发测试。
5)模拟新产生1个区块记录。
make generate
6)模拟新产生200个区块记录。
make generate BLOCKS=200
7)查看最新的钱包状态,包括余额信息。这时可以留意看到第1个钱包节点的账户余额变为了5050.00000000BTC,即通过模拟区块挖矿产生的测试比特币。
make getinfo
8)给作为示例的测试钱包地址转账10个BTC。
make sendfrom1 ADDRESS=mkiytxYA6kxUC8iTnzLPgMfCphnz91zRfZ AMOUNT=10
注意:这里的示例地址mkiytxYA6kxUC8iTnzLPgMfCphnz91zRfZ是比特币测试网络下的钱包地址(以字符m起始),与比特币正式网络下的钱包地址(一般以数字1或3起始)是有区别的。
9)模拟新产生10个区块记录,让上面的转账交易得到足够有效的确认。
make generate BLOCKS=10
10)查看最新的钱包状态包括余额信息,这时可以留意看到第1个钱包节点的账户余额变为了5539.99996160BTC,即已经交易转账支出了10个BTC加上少许的矿工费用。
make getinfo
6.1.6 运行第一个示例程序
下述示例代码以Node.js开发语言为例,演示了如何调用RPC接口来执行一些最基本的操作,比如导入比特币私钥,发送一个最简单的转账交易。开发者通过该示例可以了解到最基本的区块链开发方法。
代码清单6-1 示例程序RpcTestnet.js源码
[object Object][object Object][object Object][object Object]
来源:我是码农,转载请保留出处和链接!
本文链接:http://www.54manong.com/?id=1013
微信号:qq444848023 QQ号:444848023
加入【我是码农】QQ群:864689844(加群验证:我是码农)
全站首页 | 数据结构 | 区块链| 大数据 | 机器学习 | 物联网和云计算 | 面试笔试
var cnzz_protocol = (("https:" == document.location.protocol) ? "https://" : "http://");document.write(unescape("%3Cspan id='cnzz_stat_icon_1276413723'%3E%3C/span%3E%3Cscript src='" + cnzz_protocol + "s23.cnzz.com/z_stat.php%3Fid%3D1276413723%26show%3Dpic1' type='text/javascript'%3E%3C/script%3E"));本站资源大部分来自互联网,版权归原作者所有!
评论专区