RaiBlocks 详解

源石币是一种具有无限可扩展性和零交易费用的、低延迟的、分布式加密货币 

特性:去信任化0交易费低延迟

1 理解

RaiBlocks 是一个可扩展的、去信任化的、零交易费的、低延迟的分布式加密货币。

目前,高需求和有限的可扩展性增加了普通加密货币的平均交易时间和费用,产生了不尽人意的体验。在这里源石币是一种基于区块点阵(BlockLattice)结构的新型加密货币,其中每个账户都有自己的区块链,提供近乎瞬时的交易速度和无限的可扩展性。每个账户(即地址)都有自己的区块链,允许他们异步地更新到网络的其余部分,从而以极小的资源开销获得快速的交易确认。交易记录帐户余额而不是交易金额,使得系统可以在不牺牲安全性的情况下进行大幅度的数据库修剪。到目前为止,RaiBlocks 网络已经处理了420 万笔交易,这个数据库账本在未进行修剪的情况下只有 1.7GB 的大小。RaiBlocks 的无交易手续费、瞬时交易特性使其成为消费交易领域的最优加密货币。

RaiBlocks 对于典型的交易不需要额外资源开销,交易冲突时,节点必须投票支持交易

它与比特币相比的特点是,技术上采用区块链点阵结构,使得每一个账户都拥有自己的区块链(即账户链)。使用 DPos 投票机制达成共识。同时也是用 Pow,但是这里使用 Pow 的目的与比特币不同,比特币是进行挖矿式的工作量证明,每挖一次矿大约需要10 分钟,由此避免出现双花等问题。原石币主要是用 Pow 来作为减少网络垃圾交易的工具,类似于 Hashcash。Pow 的工作量难度基本保证在几秒中完成。目前 Pow 的阈值是固定的,未来有考虑支持自适应阈值。

RaiBlocks 的关键组件包括交易、区块、账号、账本、节点,其中交易分四种类型:open、send、receive、change。

在这里区块和交易可以在一定程度上等价,因为一个区块只包含一笔交易,这也是与比特币不同的地方(比特币一个区块可以有多笔交易)。

每次交易都会有发送块和接受块,发送者签署发送块,接收者签署接收块。由接收块来决定每笔转账的优先的顺序;同时每个节点不关心该账号的完整历史交易记录,只关心最新的余额。

这样有几点优势: 

    1. 接收者总是维护一个最新的余额,可以保证随时可以以固定大小的数据交易任何金额(最小 UDP 包)

    2. 如果节点对历史交易不感兴趣,只对最后余额感兴趣,这样可以在保持正确性的同时丢弃历史数据

2 技术详解

2.1 技术创新

目前,高需求和有限的可扩展性增加了普通加密货币的平均交易时间和费用,产生了不尽人意的体验。在这里源石币是一种基于区块点阵(BlockLattice)结构的新型加密货币,其中每个账户都有自己的区块链,提供近乎瞬

1. 区块链点阵(BlockLattice)结构:每个账户都有自己的区块链,即账户链

2. 每个账户(即地址)都有自己的区块链

3. 每一个区块只包含一笔交易

3. DPos 投票机制解决分叉

4. 非挖矿式的 Pow 

    在这里,Pow 主要是为了减少网络垃圾交易,而非挖矿式的工作量证明。 目前 Pow 阈值是固定的,但由于平均计划能力的逐年提升,将来可能会应用自适应阈值。

3.2 术语

1. 初始化交易

2. 初始金额

3. 最小 UDP 数据包

4. 传入交易类别:已结算交易、未结算交易

3.3 共识

RaiBlocks 通过余额权重对冲突交易的投票达成共识。这个共识体系提供了更快、更确定的交易,同时保持强大的,去中心化的系统。

3.3.1 RaiBlocks 组件

1. 账户 

账户是数字签名密钥对的公钥部分。公钥也被称为地 址,而私钥则保密。数字签名的数据包确保内容得到私钥 持有者的认可。一个用户可以控制多个帐户,但每个帐户 只能有一个公共地址。

2. 交易/区块 

“区块”和“交易”两个术语通常可以交替使用,一个块包含一个交易。交易特指动作,而区块特指交易的数字编码。交易由执行交易的帐户的私钥签名。(比特币里 交易和区块不能交替使用,一个区块可以包含多笔交易)

3. 账本 

账本是一个全局集合,每个账户拥有自己的交易链。这是一个关键的组件,其使用设计时协议取代运行时协议;通过签名检查,每个人都同意只有帐户所有者可以修改自己的链。这将看似共享的数据结构(分布 式账本)转换为一组非共享数据结构。

4. 节点 

节点是在计算机上运行的一个软件,它服从 RaiBlocks 协议并参与 RaiBlocks 网络。该软件管理着账本和节点可能控 制的任何账户(如果有的话)。一个节点可以存储整个账本或者只存储每个账户的最后几个区块的修剪历史记录。 建立新节点时,建议验证整个历史记录并在本地修剪。

3.3.2 系统总览

1. 交易 

在发送方和接收方的账户中将金额作为单独的交易进行转账有以下几个重要目的:

1) 对固有的异步传入转账进行排序。 

2) 保持交易小到可以放进 UDP 数据包。 

3) 通过最小化数据足迹来促进账本修剪。 

4) 将已结算的交易与未结算的交易分开。

多个账户转账到同一目标账户是异步操作;网络延迟和发送账户不一定相互通信意味着没有普遍适用的方法来知道哪一个交易首先发生。由于加法是混合运算,输入序列的顺序并不重要,因此我们只需要一个全局协议。这是将运行时协议转换为设计时协议的关键设计组件。接收账户可以决定哪一笔转账率先到达,并且由传入块的已签名顺序来表示。

问题:为什么这里只有加法,没有减法呢?

因为对于接收方来说只有加法,没有减法,接收方可以决定收到的转账的顺序和优先级

如果一个帐户想要进行一笔大额转账,而这笔金额本身是通过接收很多笔小的转账而得到的,我们想用一个适合 UDP 包的方式来表示这个转账。当一个接收账户对输入数据进行排序时,它会实时保持一个账户的总额,以便在任何时候都能够以固定大小的数据交易任何金额。这与比特币等其他加密货币使用的输入/输出交易模型不同。 

一些节点对花费资源来存储账户的完整交易历史不感趣。他们只对每个账户的当前余额感兴趣。当账户进行交易时,会对其累计余额进行编码,这些节点只需要跟踪最新的块,这样可以在保持正确性的同时丢弃历史数据。 

即使重点关注设计时协议,由于需要识别和处理网络中的不良参与者,验证交易时也会有一个延迟窗口。由于 RaiBlocks 中的协议快速达成(约为毫秒级到秒级),我们可以向用户展示两个相似的传入交易类别:已结算交易和未结算交易。已结算交易是帐户已经为其生成接收块的交易。未结算交易尚未纳入接收方的累计余额。这是对其他加密货币中复杂、不直观的确认度量的替代。

2. 创建账户 

要创建一个账户,需要生成一个初始化交易 

account:存储用于签名的私钥锁派生的公钥(地址) 

source:包含发送资金的交易的哈希值 

创建账户时,必须选择一位可以代你投标的代表,代表可以后面修改,可以声明自己作为代表。

3. 账户余额 

帐户余额记录在帐本本身内。系统通过检查发送块的余额和前一个块的余额之间的差额来进行验证,而不是通过记录交易金额的方式。接收账户然后可以将之前的余额增加,并将其作为最终余额记录到新的接收块中。 这是为了提高下载大量区块时的处理速度。在请求帐户历史记录时,金额已经给出。

4. 从账户发送交易 

要从一个地址发送,地址必须有一个已经存在的初始区块,因此有一个余额。previous 字段包含帐户链中前 一个块的哈希值。destination 字段包含要发送到的帐户。 一个发送区块被确认后是不可变的。一旦广播到网络, 资金立即从发送方的帐户的余额中扣除,并处于等待接收的状态,直到接收方签署一个区块接受这些资金。等待接收不应被视为等待确认,因为资金相当于已经被发送方使用,发件人无法撤销交易。

发送交易

previous:包含账户链中前一个块的哈希值。destination:包含要发送到的账户 

一个发送区块被确认后是不可变的。一旦广播到网络,资金立即从发送方的账户余额中扣除,并处于等待接受的状态,直到接收方签署一个区块接受这些资金。等待接收不应被视为等待确认,因为资金相当于已经被发送方使用,接收方无法撤销交易。

5. 接收交易

接收交易

source:引用关联的发送交易的哈希值。 

要完成一笔交易,接收方必须在自己的账户链上创建一个接收区块来接收资金。一旦创建并广播了该区块,账户余额就会更新,并且资金已经正式转入接收方账户。

6. 制定代表 

账户持有人有能力选择代表为其进行投票,这是一个强大的去中心化工具,在工作量证明(PoW)或权益证明(PoS)协议中没有能与之相提并论的机制。在传统的 PoS 系统中,账户拥有者的节点必须运行参与投票。连续运行节点对许多用户来说是不切实际的,给予代表权力代表一个帐户投票放宽了这一要求。账户持有人有权随时重新分配共识给任何账户。变更交易通过从旧代表中减去投票权重并将权重添加到新代表处来改变账户的代表。这笔交易中没有资金被转移,代表也没有账户资金的消费权。

7. 分叉和投票 

由于只有账户的所有者才有能力在他们的账户链上签名,所以一个分叉必然是账户所有者糟糕的变成或恶意意图(双花)造成的。 一旦检测到,代表将创建一个投票,在其账本中引用块块 bi ,并将其广播到网络。 

1)节点投票的权重 wi :指其代表的所有账户余额的总和。

2)节点将观察来自其他 M 个在线代表的投票,并保持总计1分钟的4个投票期的累积计数,并确认获胜方。

3)投票多的块将被保留在该节点的账本中。投票少的区块将被丢弃。

4)如果代表取代了账本中的一个区块,它将创建一个更高序列号的新投票,并将新的投票广播给网络。这是代表投票的唯一使用场景。(疑问待解决:谁检查到?哪些节点投票?)

备注:某些情况下,短暂的网络链接问题可能导致一个广播不被所有节点接受。这个账户的任何后续块将被那些最初没有看到广播的节点忽略。这个块的重播将被其余节点接受,随后该块将被自动检索。即使出现分叉或缺失块,也只影响交易中引用的账户。网络的其余部分继续处理所有其他账户的交易。

8. 工作量证明 

所有四中交易(创建、发送、接受、change)work 字段允许交易类型都有一个随机数,使得该随机数的哈希值与接受/发送/变更交易中的 previous 字段或初始化交易中的 account 字段串联计算后低于某个阈值。 

与比特币不同的是,RaiBlocks 中的 Pow 被简单地用作反垃圾交易工具,类似于 Hashcash,耗时约为几秒。一旦发送了一个交易,由于之前的块的 previous 字段是已知的,所以可以预先生成后续块所需的 Pow,只要两笔交易之间的时间大于生成 Pow 所需的时间,用户的交易将在瞬间完成。(可以理解为“准瞬时”么?)

9. 交易验证 

对于被认为合法的区块,必须具备以下属性: 

1)区块不能已经存在与账本中(重复交易)

2)必须有账户所有者签名

3)前面的块是账户链的头块。如果它存在但不在头部,那么这是一个分叉(这里存在歧义)

4)账户必须有一个初始化区块

5)计算的哈希值符合 Pow 阈值要求

6)如果是一个接收块:检查源区块哈希值是否处于待完成状态,这意味着它尚未被兑付

7)如果是一个发送区块:余额必须小于之前的余额

10. 攻击途径

区块间隙同步、泛滥交易、sybil 攻击、Penny-Spend 攻击、预先生成 Pow 攻击、> 50% 攻击、引导中毒

3.3.3 实现

设计特性

1. 签名算法 

    用于所有的数字签名 

    1)ED25519 椭圆曲线算法(具有快速签名、快速验证、高安全特点)

    2)Blak2b 哈希算法

2. 哈希算法 

用于防止网络垃圾交易,与基于挖矿的加密货币相比,算法的选择并不那么重要。 Blak2b 哈希算法,作为对块内容的摘要算法。

3. 秘钥生成功能:Argon2(防止 ASIC 破解)

4. 区块间隔:由于每个账户都有自己的区块链,更新可以通过网络异步执行。因此不存在区块间隔,交易可以立即广播。

5. UDP 通信协议

1)系统被设计为:尽可能使用最少的计算资源来无限期地运行:系统中所有消息被设计为无状态,并且能容纳进单个 UDP 数据包。这也是的具有间断连接性的轻节点更容易地参与到网络中,而不需要重新建立短期的 TCP 链接。

2)TCP 链接仅在新的节点想要大量引导区块的时候建立。 通过观察来自其他节点的交易广播流量,节点可以确定它的交易已有网络接收,因为它应该看到多个副本会送给自己。

6. IPV6 多播 

基于无连接 UDP 协议的构建,使未来的实现可以使用 IPv6 多播来替代传统的泛滥交易和投票广播。这将减少对网络带宽的消耗,并给予运行节点带来更多的策略灵活性。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,544评论 6 501
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,430评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 162,764评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,193评论 1 292
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,216评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,182评论 1 299
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,063评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,917评论 0 274
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,329评论 1 310
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,543评论 2 332
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,722评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,425评论 5 343
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,019评论 3 326
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,671评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,825评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,729评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,614评论 2 353

推荐阅读更多精彩内容