基于区块链技术的商业级基础设施RubyChain路链介绍
扫描二维码
随时随地手机看文章
无论比特币、以太坊还是其他公共区块链项目,为了业务逻辑、技术实现的简单,对于生成的区块都只有一种类型区块,首尾相链,形成区块链,于是带来几个普遍而又难以回避和解决的问题:
· 数据臃肿:数据量越来越大,到最后会达到无比的庞大,目前比特币的区块大约180G,以太坊的区块已超过200G,同步需要数周甚至数月的时间,目前的解决办法是采用轻钱包,可是轻钱包的问题是向轻钱包的提供商的服务器端请求数据,失去了去中心化的意义,不可避免的会带来安全隐患,由于同步问题的存在,对于个体而言,区块链系统设计的再快的交易确认机制,都变的没有意义。
· 存储瓶颈:目前的区块链设计只能实现同一(唯一)数据的全备份存储,不能用于分布式的碎片化存储,不能实现真正意义上的分布式存储,只是将一份数据分别放在了很多地方,将一份数据存储在了多个区块链用户的硬盘上而已,对于大型应用系统至关重要的存储而言,不可避免的成为瓶颈,由于只能扁平化的叠加,存储解决不了,大型行业应用就没有可能迁移到区块链上。
· 审核机制不健全:智能合约交互部署在主链上,因此主链会变的越来越臃肿,对于分布式计算的实时计算和应用变的效率也会越来越低,同时应用缺乏审核机制或者说审核机制不健全,不可避免的会影响主链的安全性,最终会限制应用范围和发展。
· 迁移难度高:针对行业、企业级应用迁移至区块链平台难度大。
Ruby特性简述
基于现有区块链体系所遇到的问题,我们重新思考并设计了 Ruby,在提升传统公共区块链所有技术性能的同时推出了大数据模块、智能事物合约引擎、类 N*RAID5 链外应用扩展存储等技术概念,使大量 DAPP 基于 Ruby 公共区块链开发落地变为现实,Ruby 主要技术特性如下:
特性一:底层 1080 笔/秒交易速度,添加节点与分片,可支持百万笔/秒交易速度。
特性二:快速自由发行数字资产、快速开发 Dapp。
特性三:完全去中心化原子交易和链上资产交换。
特性四:成块时间 15 秒,单笔数据交易量可达 2M,单块可达 16M。
特性五:独有的数据模块,原生支持场景化智能合约,直接开放链上数据接口,可基于
所有已知成熟开发工具自由定制开发 Ruby Dapp。
特性六:支持跨链资产转移与交换,支持链外币种的数据同步,同步后可在 RubyChain中直接进行所有币种的交易。
特性七:首个商用级别的完全去中心化的类 N*RAID5 链外应用扩展存储,性能优异,链外应用过程无感。
特性八:首个线上 Dapp 软件商店,完善的生态发展体系。
生态体系的架构与建设
1. 安全可信赖的生态架构
Ruby根据交易过程中不同环节的功能,在逻辑上将节点角色分为四种,让不同类型节点可以关注处理不同类型的工作负载。
· 孵化节点:孵化 Dapp 项目,提供项目孵化服务,发展 Ruby 生态。
· 共识节点:采用 Ruby working 共识机制,参与共识。
· 存储节点:为所有应用的链外数据(链外应用块)提供全节点存储服务。
· 交易节点:为链上原子交易(币币兑换)提供交易确认服务。
· 普通节点:普通钱包用户即为一个普通节点,具有发送、查询交易、资产兑换等基本功能,同步全部区块;
· 轻节点:不同步全部区块数据,具有转账、接收交易等基本功能。
2. 生态体系内的多元化原子交易
在 Ruby 的整体生态中,流通将是整个经济体永恒不变追溯的主题,一个世界中,只有资产快速自由的流动,才会有无尽的生命力,而非一潭死水。
在过去的几年中,区块链+金融主要解决的是单一资产在自身体系内流动的问题,这并不能解决整个区块链生态发展的需要。赋予数字资产价值,而不是仅仅简单的记录,是 Ruby要打造的多元化原子交易体系,最终实现大流通的效果。
Ruby原子交易支持原生资产、通证资产和跨链转移资产,支持链上资产直接兑换,原子交易时需要扣除手续费,手续费使用原生资产。
未来,Ruby 将推动万物数字化,万物皆资产的生态目标,例如将某 A 的数字资产哈希化存储在数据模块中,某 B 的电影版权哈希化存储在数据模块中,双方调用智能合约直接进行原子交易,发生资产兑换。
3. 分布式商业生态,互联网到区块链的快速迁移
为实现互联网时代向区块链时代的快速转化,完善扩充 Ruby 的生态体系,快速迁移将显得尤为重要,在众多公共区块链还在打磨自身技术的时候,Ruby 率先实现了快速迁移的可能,利用大数据模块+多语言支持+模块化接口调用的方式,使得传统互联网的普通开发者也可以基于 Ruby 进行开发,同时可以快速的将以往的产品接入 Ruby 生态。
4. 商业级智能物联网尝试,打造海量用户入口
RubyBox 是 Ruby 尝试研发的第一款基础设施硬件,这次智能物联网硬件的尝试将不会在短时间内发布,但 Ruby 团队将会对智能物联领域持续的深耕。
Ruby 在企业级用户端将借助 RubyBox 商用版搭建区块链高速公路,未来 Ruby 可以为任何区块链系统提供加速服务,包括但不限于 CDN 加速、节点加速、链盘等。同时基于Ruby 生态进行开发的 Dapp 也会享受到加速服务。
RubyBox 在用户级端将提供以下服务:
私人家庭安全云盘:通过 RubyBox,可以将终端设备(PC、MAC、手机)上的私人文件安全存储在 RubyBox 上,在世界任何的位置安全自由的访问自己的私人文件。
私人家庭媒体中心:通过 RubyBox,可以将影音文件安全下载存储在 RubyBox 上,随时随地可以通过终端(PC、手机、MAC、智能电视)欣赏大片。
无限延展智能硬件:RubyBox 是开放的、共享的、互联的。未来,会有更多的区块链应用系统登录 Ruby,RubyBox 将成为充满无限想象的智能硬件中心,通过 RubyBox 获得的资产将成为生态内的专属融合支付手段。
RubyBox 未来或将是 Ruby 发布的首款智能物联设备,以此开启线下大用户流量入口时代。
Ruby 技术现状
1. Ruby 网络构成
Ruby 的网络构成分为以下几个方面:
· 底层核心层的区块链网络构成包括:基于 UTXO 模型的账户体系、原子交易、共识机制、数据模块、跨链协议等。保证整个 Ruby 生态的消息广播一致性、数据安全与存储,同时保证整个经济体的高度自治与流通。
· 中层服务层的区块链网络构成包括:CLI、RPC 调用接口,保证任何语言的开发者可以调用 Ruby 提供的模块化功能进行开发,普通的开发者无需过多的了解区块链技术即可进行大型应用的开发与迁移,享受区块链带来的便捷与改变。
· 最高层是应用层:其中包含 Ruby 提供的官方应用及未来生态开发者自主开发的Dapp,应用层将是未来 Ruby 运营的核心重点,海量的落地应用会使得 Ruby 的生态更健康茁壮的发展。
2. Ruby working 共识机制
传统 POW 共识机制对算力及网络环境要求较高,资源消耗严重,且存在高算力对网络攻击的威胁。对此 Ruby 针对 POW 算法机制进行改善处理,形成 Ruby working 共识机制。
在 Ruby working 共识机制中,保留传统 POW 工作量证明函数 SHA256:
在 Ruby 系统中,基于寻找给定前缀的 SHA256 哈希值,设计了工作量证明的共识机制; SHA256 也被用于构造地址,即用来识别不同的用户。
相对传统 POW 共识算法,Ruby working 共识机制中添加了 Rotation 工作轮换证明算法以及 Contribute 系统贡献算法。其中 RotaTIon 工作轮换证明算法是在网络共识节点中随机轮转部分共识节点进行批准交易,并在下一轮轮转时提出一个采矿难度,认可此采矿难度的节点成为下一轮次确认节点并进行记录,同时设置采矿限制,同一节点不可连续参与多次轮换采矿。这种结构允许更多的矿工参与交易批准,在确保没有固定的可能被破坏的验证顺序的同时也节省了资源的消耗。
下图为 RotaTIon 工作轮换证明算法流程图,其中 N 为当前批次,n 为根据当前共识节点总量划分的轮换批次:
Contribute 系统贡献算法是在共识机制中,对于参与共识的节点所贡献的带宽、硬盘等资源进行数字量化,并根据贡献的多少,系统给予一定数量的奖励。Contribute 系统贡献算法公式如下:
Ruby 将增加孵化节点机制,孵化节点与传统意义的超级节点相比有本质的不同,传统的超级节点多采用 DPOS 机制,相当于竞选机制,于是会在过程中出现很多灰色手段,这些毫无意义的竞争和攻击其实是对公共区块链最大的伤害,最终也会成为超级节点垮掉的因素。
而孵化节点则是为了 Ruby 生态的发展,把人性最善的一面服务于 Ruby,服务于 Ruby开发者和生态,孵化优质区块链项目越多,获得收益越多。
孵化节点是复合节点,承担四种角色,未来根据发展可能会进行分类架设,超级孵化节点的选择将从社群规模、地区资源、技术水平、资历经验等四个方面综合评估后选择,超级孵化节点不设数量限制,将根据发展情况适时增加,超级孵化节点不以硬件比拼作为主要竞争因素,原则上规定统一的硬件配置和定期统一升级策略,其项目孵化能力将是其获得收益的最大依据——“孵化即挖矿”模式。
3. 多链并行
Ruby 网络设计多链并行:(主链)公共区块链、(侧链)私有链、(侧链)联盟链、测试链。侧链借助双向挂钩及混合挖矿技术,代币可在主链和侧链间以特定形式流转,采用UTXO 模型。侧链分担主链的负担,大部分的应用运行于侧链。
3.1 主链
Ruby 的核心,维持代币运行,去中心化,共识机制采用 Ruby working 算法,主链的各个节点可以自由加入及退出网络,并参加链上数据读写,运行时节点以扁平的拓扑结构互联互通,网络中不存在任何中心化的服务端节点。智能合约是主链的核心应用,同时也是自动化,智能化的基础。
3.2 侧链
侧链分为私有链和联盟链,私有链和联盟链并非完全去中心化,私有链应用和联盟链应用可以设有区域中心,应用开发者可以将应用运行在侧链上。
联盟链:联盟链各个节点通常有与之对应的实体机构组织,通过授权后才有资格加入或退出网络。各机构组织组成利益相关的联盟,共同维护网络健康运转,采用优化的 POS 机制。
私有链:私有链各个节点的写入权限归内部控制,读取权限视需求有选择性地对外开放。私有链仍然具备区块链多节点运行的通用结构,适用于特定机构的内部数据管理与审计,其共识机制采用优化的 POS 机制。
测试链:测试链承担开发应用上线前的测试。
4. 创新的碎片化存储模式
4.1 双螺旋分子结构区块链
主链、侧链均采用类 DNA 双螺旋分子结构区块链,将区块链的底层成链技术由单一扁平区块链向双螺旋分子结构区块链转变。
在各个区块以及双螺旋链中的链接沟通中, 我们将所有区块想象成人类的 DNA,则双螺旋结构中左旋链与右旋链数据交互的 RUB 计算数学模型如下:
偏置的更新算法:
偏置介绍:
若每次计算从第一个区块开始算起,则运算速度过慢。例如,存在点(1,1),点(2,2),无法从原点画一条直线将其成两类,需要偏置值使得线段不从(0,0)点出发而是从更适合的点出发。
偏置的更新公式:
权值更新公式的由来:
桥接块到右旋链的权值更新
4.2 数据模块
数据模块体系将账户交易和数据分离,以此保证在大容量数据上链的前提下维持 TPS效率,数据模块作为 Ruby 的通用数据存储提供了高级抽象和 API,可实现链上三种不同类型数据库:
· NoSQL 型键值数据库;
· 身份驱动型数据库,根据具体发送者和接受者查询,分类;
· 采取平稳序列模型数据库,平稳数据变化,消除长期趋势和差分化,可用于条目排序。
Ruby 数据模块允许区块链用作通用附加数据库,区块链提供时间戳,公正和不变性。
可以创建任意数量的数据模块,每个数据模块发布的数据由创建者存储,其中每一个都可以向所有人开放以供写入,或者只能从特定地址写入。如果一个节点选择订阅数据模块,它将索引该数据模块的内容以便以各种方式进行高效检索,若未订阅数据模块,则无需为其付出算力。
每个数据模块中的每条数据都是有序的项目列表,其中每条数据的格式如下:
{“senditemers”:[ “18q9dh.。.ptW43E”
],“keys”:[ “key1”, “key2”
],“data”:”data”, “confirmaTIons”:11, “blockhash”:”00e9c6.。.2c513”, “blockindex”:1, “blockTIme”:1528439220, “txid”:”acf36.。.9e2”, “vout”:0, “valid”:true,
“time”:1528439184, “timereceived”:1528439184
}
每条数据具有如下特征:
· 一个或多个 senditemers 已完成数字签名的项目;
· 一个或多个长度在 0-256 字节之间的 key 值,可以利用 key 值进行索引;
· data,可存放几 M 的数据;
· 支持存放结构化的 JSON 对象,易写易读。
如果一个节点订阅了该数据模块,可以通过以下几种方式来进行索引查询:
· 根据 key 值索引;
· 根据 senditemers,也就是创建者索引;
· 根据 txid,blockindex,blockhash 等进行索引。
数据模块的设计使得链与链之间交互变得简单、高效,将会解决链上币币交易、跨链资产兑换以及场景化智能合约等固有问题。
4.3 无感链外扩展存储
区块链应用程序开发实现分散式链外数据传输,一个常见的选择是采用现有的对等文件共享平台,例如 IPFS,并将其与区块链结合使用。但 IPFS 具有以下几个缺点,并不能高效便捷的与区块链进行结合:
· 每个参与者必须安装,维护和更新三个独立的软件(区块链节点,IPFS 节点和中间件),每个软件都将其数据存储在不同的位置。
· 两个独立的点对点网络,每个网络都有其配置,网络端口,身份系统和许可。
· 将 IPFS 和区块链紧密结合在一起会使中间件变得越来越复杂,同时面临中心化的风险。
针对 IPFS 与区块链结合的缺点和风险,Ruby 通过以下便捷高效的方式完成了与链外数据的交互同步,同时规避了可能出现的中心化风险:
发布节点将新数据写入其本地存储,将大型项目分块,自动构建发布链外数据的事务,该事务被签名并广播到网络,在节点之间传播并以通常的方式进入区块链。当数据需求节点对链外数据引用时,会将该数据的 HASH 请求添加到其检索队列中,并作为后台进程。如果节点的检索队列中有此 HASH,则将查询发送到网络以查找有此 HASH 标识的区块。这些查询以点对点的方式传播到网络中的其他节点。具有数据的任何节点都可以响应,并且该响应沿着与查询相同的路径被中继给用户。如果没有节点应答查询,则该 HASH 查询请求将返回到队列以供稍后重试。如果长时间无节点响应,需求节点将再次向网络发送请求。如果有节点接收请求,接收节点根据请求验证数据的大小和 HASH 值,发送相应数据,数据检出完毕后,接收节点将数据写入本地存储,使其立即可用于通过 API 进行检索。如果请求的内容没有接收到,或者与所需的 HASH 或大小不匹配,则将该请求返回到队列中,以便需求节点从其他源中检索。
在延迟较短的网络中,体量较小的离线数据将在引用交易的瞬间传输完成。对于高负载应用,Ruby 支持超过 1200 个链外项目时,保持每秒检索 30 MB 的链外数据网络连接,并且最大 1000MB 的脱链数据都可以正常传输,不会影响 Ruby 网络效率。
数据模块可以设定其存储为普通数据模块(仅可存储链内应用块)、应用数据模块、混合数据模块,后两者可存储链外数据块的 HASH、发布者、索引等信息,可以实现快速检索、分发链外数据块。
链内数据大小单块限制为 16M,超出 16M 可以存为链外数据块(原则上 Ruby 允许无限大的链外数据块,出于性能考虑,不建议单个链外数据块超过 1000M)。
5. 跨链协议(Cross-chain Asset Trading)
为支持数字资产跨链价值传输,Ruby 设计出跨链协议 CCAT(Cross-chain Asset Trading)。针对目标链上的每一种需要跨链传输的资产,在 Ruby 中均需发行一个与之对应的通证,作为目标资产在 Ruby 内部流通的凭证,这种通证记为 TAT(Third-party Asset Token)。
6. 场景化智能合约
Ruby 场景化智能合约,我们称之为智能合约 2.0,给开发者足够的自由度,开发者可以选择使用自己熟悉的开发语言,Ruby 提供与链进行交换的智能合约接口。
对外提供的与链交互的智能合约主要通过 JSON API 提供,所有的 API 都可作为与链进行数据交互的方法。
额外提供两个关键的方法,确保开发者能够高效开发 Dapp。这两个方法是:创建资产方法、创建数据模块方法。开发者在开发 Dapp 时可通过网站下载私有链开发测试版进行开发,也可申请相应资产和相应数据模块在测试链开发,开发完成后可移植到公链。
6.1 代币融资智能合约参考
主要目标:设置自动化的币币兑换,实现代币融资智能合约的底层技术框架。
场景描述:创建一种待融资的资产(代币代码 FBC,最小单位 0.01,总量 10000000,融资额 5000000,兑换 500 RUB(系统中已存在的资产或原生货币))
具体实现详见 Ruby 开发者文档,希望有兴趣的开发者或组织与我们联络,基于此开发代币融资 Dapp,Ruby 非常欢迎将其纳入 Ruby 软件商店。
6.2 版权保护智能合约
(1)创作过程,对称加密,写链;
(2)成品加密存储;
(3)1/n 多签分发。
6.3 游戏场景智能合约
以养猫为例
(1) 生成小猫
创建地址
生成对应数据模块:记录小猫特性
(2) 喂养小猫
币币交易,过程记入数据模块
(3) 繁殖后代
数据模块特性叠加计入新猫数据模块
6.4 RubyVM(Ruby Virtual Machine)
Ruby 借鉴了开源 QEMU 模拟处理器,QEMU 是一套由虚拟化天才程序员法布里斯·贝拉(Fabrice Bellard)所编写的开源模拟处理器,在 GNU/Linux 平台上使用广泛。默认支持多种架构。可以模拟 IA-32 (x86)个人电脑,AMD 64 个人电脑,MIPS R4000, 升阳的SPARCsun3 与 PowerPC(PReP 及 Power Macintosh)架构,由于采用 Ruby 虚拟机方式,Ruby 使现有应用迁移也变得非常方便,可以用最小的代码量实现现有应用的迁移。几乎对所有现有应用提供迁移支持,同时 Ruby 将在适当时机完成开发兼容以太坊虚拟机 EVM。
Ruby 在设计上采用基于数据模块的底层 Ruby 虚拟机,使在平台上开发变得非常简单,开发人员无需改变现有编程语言习惯和编程方式就可以在 Ruby 上完成区块链应用开发。
7. Ruby TPS 提升
7.1 传统 POW 机制下的 TPS 无法提升的原因
传统理论认为 POW 无法做到大幅度的 TPS 提升,其实不然,Ruby 认为在 POW 机制下 TPS 无法大幅度提升主要是因为以下几点:
· 所有的钱包交易都保存在内存中。这样启动时间会缩短,但内存使用量迅速增加;
· 由于采用 UTXO 模型,许多操作对钱包中的每笔交易执行效率低下的“全面扫描”,无论是旧的还是新的。
· 钱包中的每笔交易都被完整存储,包括任何从节点的角度来看没有意义的任意“元数据”,虽然其已经存储在磁盘上的区块链中。其结果是,节点如果存储了 2 万笔交易,钱包会变得非常缓慢。在 20 万笔左右后,它实际上陷入停顿。
7.2 从比特币和以太坊看无法提高 TPS 的原因
比特币节点不能提高 TPS 的主要原因并不是因为 POW 共识机制(POW 从本质上说基本上都会在成块时间内完成共识),而是因为上文提到的三点原因,虽然比特币网络可以轻松处理和存储数百万甚至更大与自己无关的事务,这些事务是在磁盘中而不是内存中进行的。但在具体到单一节点时,在处理跟自己有关的事务时,因为采用 UTXO 模型,需要遍历全部区块文件,执行效率低下的“全面扫描”,来获得未花费的输出作为输入。而这些全面扫描包括内存中的交易及元数据和区块文件都是非结构化的数据,检索速度会很低效,所以到单一节点,其 TPS 仅能达到 3 TPS。
以太坊节点的处理机制:以太坊在设计时考虑到了 UTXO 模型的弊端,所以在设计上以牺牲可靠性为代价,没有采用 UTXO 模型,但其相关事务依然是非结构化数据,除此之外由于智能合约的设计是全局存在的,需要所有的节点去区块文件遍历执行,所以其 TPS虽然较比特币有所提高,但依然无法得到大幅度提升,其 TPS 为 20-30 之间。
7.3 Ruby TPS 提升方法
Ruby 通过以下几种方式,使得 TPS 有了显著提升:
· 变内存驱动为数据库驱动,实现结构化存储和快速检索;
Ruby 核心钱包采用本地双数据库的结构设计(双螺旋分子结构区块链),将原先节点单一数据库划分为区块数据库和钱包事务数据库。区块数据库采用了 UTXO 模型的安全可靠,同时结合了钱包事务数据库账户余额模型的灵活高效。区块数据库仍然存储全部区块数据,钱包事务数据库存储本地钱包地址相关的交易和事务信息,而任何大于 256 字节的交易元数据都不会存储在钱包事务数据库中,而是在钱包事务数据库中包含一个指向区块链本身的数据位置的指针,钱包交易时通过指针或者索引直接查找区块数据库,可迅速定位符合特定标准的交易,而不是执行完整的钱包扫描,可显著节省查询时间并提高交易速度。
· 设计独有的数据模块,在保证性能的前提下,提升大容量上链数据;
Ruby 数据模块允许区块链用作通用附加数据库,区块链提供时间戳,公证和不变性。Ruby 可以包含任意数量的数据模块,每个数据模块发布的数据由每个节点存储,其中每一个数据模块都可以向所有人开放以供写入,或者只能从特定地址写入。如果一个节点选择订阅数据模块,它将在钱包事务数据库中为此数据模块建立内容索引,以便以各种方式进行高效的检索。
· 采用 Ruby working 共识算法,作为辅助提升 TPS 的手段
Ruby working 共识算法在降低资源消耗的同时,加快了网络共识的达成,更快的成块时间以及更大的区块容量都为 TPS 的提升提供了帮助。
综上,通过以上三种主要方法(另外还有自动归集未花费输出从而提高检索效率等方法),Ruby 能够做到在安全可靠前提下,采用 POW 机制和支持大容量上链数据的情况下依然可以实现较高的 TPS。在中端设备单节点下,TPS 可以达到每秒 1080 笔,在高端设备连接的局域网或者借助部分中心化手段(如超级节点)的情况下可以支持每秒十万到百万笔的交易速度。但在广域网环境下,受到带宽及其他网络因素影响,实际的 TPS 可能会有所下降。
8. 运行环境与开发工具
8.1 运行环境
Ruby 已开发完成广范支持当前主流的运行环境,包括但不限于 Windows、Linux、Mac、安卓、IOS 等各种家用、商用及工业运行环境。系统要求:
操作系统环境:
Mac:OS X 10.11+
Linux:64 位,Debian 7+,Ubuntu 14.04 +,CentOS 7 +,Fedora 20 +,RHEL 7+
Windows:64 位,Win7+
Andriod:7.0+
IOS:9.0+
硬件环境:
RAM:1G
Disk:2G
8.2 底层代码
Ruby 底层由 C++编写实现,命令行工具由底层源码使用 gcc/g++直接编译生成,提供各版本命令行工具,支持 Ruby 全部 RPC 命令,包括 Windows、Linux、Mac 等多种版本。
8.3 钱包客户端
Ruby 的钱包客户端,支持基于 Ruby 的所有数字资产,包括 Windows、Linux、Mac、Andriod、IOS 等多种版本。其中,适用于 Windows、Linux、Mac 的桌面级钱包应用采用跨平台语言 java 开发,使用 javafx 进行页面设计。Java 具有简单性、面向对象、分布式、健壮性、安全性、平台独立与可移植性、多线程、动态性等特点。java 的存储分配模型是它防御恶意代码的主要方法之一;Java 没有指针,所以程序员不能得到隐蔽起来的内幕和伪造指针去指向存储器。更重要的是,Java 编译程序不处理存储安排决策,所以程序员不能通过查看声明去猜测类的实际存储安排。编译的 Java 代码中的存储引用在运行时由 Java解释程序决定实际存储地址。基于以上 java 语言的特性,保证钱包客户端在各平台的安全及平稳运行。
8.5 Ruby 区块浏览器
Ruby 区块浏览器为 Ruby 原始币种及基于 Ruby 发行的各种资产提供区块、交易查询、数据模块的数据查询以及原子交易挂单查询。Ruby区块浏览器使用python结合bootstrap开发,python 语言的面向对象、解释性、可扩展性、可嵌入性等特性,以及 python 自带的丰富的库,可以很好的帮助 Ruby 区块浏览器的优化及开发,而 bootstrap 前端框架为Ruby 区块浏览器提供了方便简洁的页面效果。
8.6 其他 Dapp
Ruby 支持用户使用通用语言编写开发 Dapp,开发用户自己的场景化智能合约,Ruby提供标准的 RPC 服务接口和近 150 条 API 供开发者使用。
9. 安全
51%算力攻击:51%攻击是指掌握了全网的 51%算力之后,用这些算力来重新计算已经确认过的区块,使块链产生分叉并且获得利益的行为。
对于存在的 51%算力攻击,Ruby 通过 Rotation 工作轮换证明算法,再次降低 51%算力攻击的可能性。由于 Rotation 工作轮换证明算法对于参与共识的节点分批次进行共识确认,使得 51%算力攻击出现的可能性大大降低,并且在出现 51%算力攻击时,由于 Rotation工作轮换证明算法对于共识节点的随机性,使得在 51%算力攻击出现后并不能一直维持51%算力攻击,因此在被攻击后等待几次确认后,可以回滚至原块链。
10. 服务层指令
10.1 CLI 调用
Ruby 提供如下常用 CLI 指令:
(1)节点基本操作指令
help 帮助
stop 停止节点
pause 暂停节点
resume 恢复节点
emptymem 清除内存池
showmem 查看内存池
shownet 查看网络信息
showpeer 查看连接节点信息
showchain 查看区块信息
showblock 查看区块
showblocks 查看区块
showblockhash 查看区块哈希值
signmessage 消息签名
checkmessage 消息验证
(2)钱包基本操作指令
addnewaddr 增加一个普通地址
addmultiaddr 增加一个多签地址
setupmulti 创建多签地址
setupkeypairs 创建地址对(不导入钱包)
showaddrs 显示地址及详细
dumpprivkey 导出私钥
importprivkey 导入私钥
importaddr 导入地址
backupwallet 备份钱包文件
dumpwallet 导出全部私钥到文本文件
importwallet 导入钱包文件
encryptwallet 加密钱包文件
changepass 更改钱包密码
walletpass 输入钱包密码
showassets 显示资产
showbal 显示 RUB
showaddrbals 列出特定地址的所有资产余额(含 RUB)
showallbals 列出此钱包(地址)所有资产余额信息(含 RUB)
showaddrdeal 显示特定地址的特定交易信息
showaddrdeals 显示特定地址交易信息
showwalletdeals 显示钱包交易信息
send 发送 RUB 或资产
sendfrom 从特定地址发送 RUB 或资产
sendasset 发送资产
sendassetfrom 从特定地址发送资产
senddata 发送 RUB 或资产并附加数据信息
senddatafrom 从特定地址发送 RUB 或资产并附加数据信息
(3)创建发行数字资产 /数据模块指令(受限)
sell 发行数字资产
sellfrom 从特定地址发行数字资产
sellasset 追加发行数字资产
sellassetfrom 从特定地址追加发行数字资产
setupdatamod 创建数据模块
setupdatamodfrom 从特定地址创建数据模块
senditem 向数据模块发布数据
senditemfrom 从特定地址向数据模块发送数据
showdatas 列出数据模块
order 订阅数据/资产模块
noorder 取消订阅数据/资产模块
showdataitem 显示单一数据条目
showdataitems 列出数据模块下数据条目
showdatakeys 列出某数据模块关键字
showdatakeyitems 列出某数据模块关键字的条目
showdatasenderitems 列出数据模块特定发送者的数据条目信息
showdatasenders 列出数据模块发送者信息
(4)币兑换及原子交易(事务)指令
prelock 预先锁定输出
prelockfrom 从特定地址预先锁定输出
setuprawex 创建原子交换(币币兑换)
decoderawex 解码原子交换(币币兑换)
addrawex 附加原子交换(币币兑换)
completerawex 完成原子交换(币币兑换)
sendrawdeal 提交原子交易至区块链
disrawdeal 取消特定原子交易
gatherunspent 归集未花费输出
showunspent 显示未花费输出
showlock 显示锁定的未花费输出
lock 锁定(解锁)未花费输出
setuprawdeal 创建原子交易(事务)
setuprawsendfrom 从特定地址创建原子交易(事务)
decoderawdeal 解码原子交易(事务)
addrawdeal 附加原子交易(事务)
addrawchange 附加原子花费
addrawdata 附加原子数据
signrawdeal 签署原子交易(事务)
10.2 JSON-RPC API 指令集
RPC 用 户 名 密 码 存 储 在 ~/.ruby/ruby/ruby.conf ( linux/MAC ) 或者 %APPDATA%RUby uby/ruby.conf 文 件 中 , 可 以 使 用 rubyi 命 令 行 工 具 或 者RUbyTool 工具内置的 CLI 界面连接,这些工具会自动读取 RPC 用户名密码并连接已运行区块链。