一、介绍:
Ripple作为比特币的2.0版,改进的方面有:1、无需挖矿 2、共识的改进,区分了普通节点和验证节点(网络上的节点分为两种:普通节点和验证节点
普通节点只能转发交易,信任验证节点,参与投票。验证节点可转发交易,信任其它的验证节点,决定投票)。
作为入门,官网的资料很是全面,从Ripple小白开始,一步步说共识,数据结构等等。但是考虑到很多人看英文文档一头雾水,且文档没有对照代码等问题,
本文作为一个系列的开篇,试图以国内程序员通俗易懂的方式介绍Ripple,并对照相关代码,使开发人员能立即上手调试操作。
首先附上官网的链接https://ripple.com/build/,笔者在开发中,常以这个链接为资料参考,最右侧一栏是ONLINE TOOLS,提供了几种测试工具。
二、环境搭建:
推荐使用Ubunu 14.0以上,WINDOWS64位亦可(32位目前不支持,笔者曾和官方核对,官方给出的答复原文“it's impossible to run a validator on a Raspberry Pi”),笔者就用windows64开发调试,编译部署环境为Ubunu。代码仓库地址:https://github.com/ripple/rippled,(GitHUB上还有相关的工程,ripple-lib/ripple-client-desktop(还有个REST,不过现在不维护这个工程了,也没啥用),前者是nodejs的库,使用ws和底层rippled通信,后者是使用前者的一个客户端,后面再介绍).
windows编译:使用工程目录下Builds\VisualStudio2015编译即可(先安装BOOST1.59和google的proto,具体参考链接https://wiki.ripple.com/Visual_Studio_2013_Build_Instructions)
Ubuntu编译:执行工程下的Builds\Ubuntu目录下的依赖脚本,也可自己wget手动下载安装,参考链接:https://wiki.ripple.com/Ubuntu_build_instructions,
编译是通过SCONS脚本,默认编译出的可执行文件比较大(200多M),可以编辑脚本,查找“-g”,将其注释,这样编译出的可执行程序只有25M左右。
三、网络部署:
建议配置最少两个验证节点。为了网络的安全性,验证节点可以配置为4-8个。
1.普通节点设置方法:
在配置文件peersafe.cfg中添加信任验证节点的public key。
[validators]
n949f75evCHwgyP4fPVgaHqNHxUVN15PsJEZ3B3HnXPcPjcZAoy7
n9MD5h24qrQqiyBC8aeqqCWvpiBiYQ3jxSr91uiDvmrkyHRdYLUj
n9KiYM9CgngLvtRCQHZwgC2gjpdaZcCcbt3VboxiNFcKuwFVujzS
2.验证节点设置方法:
(1).从本地运行节点中获取随机的validationseed and its associated public key。
# peersafed -q validation create
{
"status" : "success",
"validation_key" : "TUCK NUDE CORD BERN LARD COCKENDS ETC GLUM GALE CASK KEG",
"validation_public_key" :"n9KHn8NfbBsZV5q8bLfS72XyGqwFt5mgoPbcTV4c6qKiuPTAtXYk",
"validation_seed" :"ssdecohJMDPFuUPDkmG1w4objZyp4"
}
(2).添加validation seed and its associated public key到本地节点的配置文件中。
# [validation_seed]:
# To performvalidation, this section should contain either a validation seed or key.
# The validationseed is used to generate the validation public/private key pair.
# To obtain avalidation seed, use the validation_create command.
#
# Examples: RASH BUSH MILK LOOK BAD BRIM AVID GAFF BAITROT POD LOVE
# shfArahZT9Q9ckTf3s1psJ7C7qzVN
[validation_seed]
ssdecohJMDPFuUPDkmG1w4objZyp4
[validation_public_key]
n9KHn8NfbBsZV5q8bLfS72XyGqwFt5mgoPbcTV4c6qKiuPTAtXYk
(3).添加信任其它的验证节点
在配置文件peersafe.cfg中添加信任其它验证节点的public key。
[validators]
n949f75evCHwgyP4fPVgaHqNHxUVN15PsJEZ3B3HnXPcPjcZAoy7
n9MD5h24qrQqiyBC8aeqqCWvpiBiYQ3jxSr91uiDvmrkyHRdYLUj
n9KiYM9CgngLvtRCQHZwgC2gjpdaZcCcbt3VboxiNFcKuwFVujzS
3.配置文件修改
从doc目录下拷贝rippled-example.cfg,改名为rippled.cfg,按照如下方式修改:
修改[port_rpc_admin_local]中的IP为0.0.0.0,意为接收来自任意IP的HTTP连接。
修改[port_peer]中的IP为0.0.0.0,意为接收来自任意IP的peer连接。
修改[port_ws_admin_local]中的IP为本机IP
修改[ledger_history],指定本节点是否为保存全部历史,如果是,则修改为full,默认为256,意为保存最近256个区块。
修改[ips],填入连接的对端IP地址和端口号。端口号参见连接节点的配置文件中[port_peer]中的端口。
修改[validators],填写信任节点的publickey。
修改[validation_quorum],填入数量,一般为小于信任节点数量的值。如[validators]中信任节点为3,这里填写2.(这个涉及到共识,后面详细说明)
修改[rpc_startup]中的日志级别,这里记录本地程序运行产生的日志级别。
修改[ssl_verify],内部使用一般填写0.
其他参数后面用到时再详细说明。
构建网络时,需要考虑哪一个设置为主节点和从节点。无论主从节点,均需在其后指定配置文件(如果和可执行程序在同一目录,那么可以不用指定),对于从节点,还需加参数--start.
在程序的可执行目录下,执行server_info命令查看,当出现"complete_ledgers:1-200"![](https://i-blog.csdnimg.cn/blog_migrate/5e613448eff10558a8ef11509c9d0b92.png)
![](https://i-blog.csdnimg.cn/blog_migrate/5e613448eff10558a8ef11509c9d0b92.png)