LTO 全局区块链是一个非许可的公有区块链,专门用于验证信息。存在目的是为了支持交互合约和私有的事件链。全局区块链具有可跨事件链,区块链和应用程序互操作的锚定和数字身份。
公证交易几乎可以在任何区块链上进行。然而,在针对金融交易或一般逻辑优化的区块链上,公证类型的交易是昂贵且低效的 。此外,优化(例如剪枝和分片)可能会产生负面影响,因为会忽略相关信息 。
全局区块链属于 Nxt 系列 。该区块链的一个独特特征是交易基于一系列核心交易类型,这些交易类型不需要网络节点上的任何脚本处理或交易输入/输出处理。这减少了区块链的大小,提高了效率,并允许对公证交易特别有利的聚合方法。
与其直接从 Nxt 开始,我们使用了 WAVES 平台的分支作为基础。该平台已经落实了许多改进,例如 NG 协议 (节 15.6),我们的网络将从中受益。专注于数字资产(包括彩色币)的现有交易类型将被删除或禁用,并由公证交易类型取代其位。
中心化与去中心化锚定
其他解决方案使用中心化的方法,一段时间其中所有哈希值被收集。从其交易创建一个梅克尔树,然后如一个单独交易添加到像比特币第三方区块链。因此,系统没有直接反馈,而且可能需要几个小时才能从中心服务收集最终收据。
LTO 全局区块链是一种去中心化的方案,在其每个节点都监督所有事务。当广播锚定交易时,它立即可见,并在大约 3 秒后使用 NG 预先批准。交易一分钟前就会在一个区块内。
节点可以跟踪所有锚定的哈希或仅跟踪它们自己的哈希值。如果需要,他们可以独立创建收据。不需要任何中心化服务。
共识算法
全局区块链作为典型的公有区块链运行。某个节点会被选择作为生产者以验证事务并伪造区块。为了测定生产者,我们使用 Leased Proof of Importance(LPoI)共识算法。生产者将获得伪造区块交易的费用。
重要性证明是权益证明(PoS)的变体,其中被选择伪造区块的机会是基于持有的代币数量和财产来确定的。在重要性证明,机会会根据节点的网络使用情况而增加。
1. 租赁
NXT, Waves, 以及其他该系列的区块链都使用权益证明租赁。通过租用代币,代币持有者将锻造区块的权限传给所选节点。这些节点可以像挖掘池一样运作,在租赁者之间按比例分享奖励。
NXT 样式网络在当某方控制至少 1/3 的所有活跃余额时,容易受到攻击。这是一个问题,已实施 LPoS 算法的项目往往具有高度中心化。前二名 Nxt节点控制着 50% 以上的网络。在 Waves,前两名节点控制着网络的 1/3 而前五名节点控制 50%以上。
为了防止拥有大量租赁股权的节点,租赁代币存在限制。每个节点都必需要拥有至少 10% 持有的代币。POI 也抵消了这种影响,因为它使被动的节点处于劣势状态。
2. 抽奖因素
用于计算节点在网络中的使用,我们将使用影响造块比率的 ST 比例,此比例由锁仓代币总额对节点助于的交易算出。
最高的抽奖系数是 1.5,这是最低与最高 2.0 之间的一半。通过锁额外代币X 来增加自己的重要性的话,则需要花费 2 · X 倍的交易费用。
3. 锻造概率
被选中锻造(forge)的机会是 P(forge) = S · r。贡献的交易 T 是随时间计算的。在计算 P(forge) 时,S 必须在同一时间段内保持不变,以防止滥用的可能性。
4. 公平的 PoS
决定哪个节点有资格锻造新块的函数基于 Waves 创建的 Fair Proof of Stake算法。这是对原始 Nxt PoS 算法的改进,该算法偏袒高估大量锁仓的节点。
要将此算法从 PoS 转换为 PoI,该函数将抽奖因素应用于锁仓余额,从而产生为 bi· r.
• Ti 作为第 i 到 th 个帐户的区块生成时间,
• Xn 生成签署,
• r 抽奖因素,
• bi 节点锁仓与锁仓总额的百分比,
• Λn 为基准目标
• Tmin = 5 给区块之间的延迟的常数,
• C1 = 70, 用来延迟分配的形状的常数,
• C2 = 5E17 调整基准目标的常数。
如果在超过分配的时间之前收到新块,则必须将此块添加到链中,并且必须计算新的延迟。之前的 Ti 从此不重要。每个节点都会自己算 Ti ;此信息不是由生成者提供的。这意味着没有必要在计算中使用不正确的锁仓额。
5. 生成者签署
在确定时间延迟 Ti 时,是不会考虑区块哈希的。该哈希基于区块的内容,而该内容由锻造区块的节点定。如果这个哈希在决定谁可以锻造下一个哈希中起任何作用,那就很容易操纵 Ti。某个节点可以创建多个不同的区块,并且仅广播具有最低时间的区块。
为防止这种情况,我们仅使用生成签名。此签名是一条辅助哈希链,仅使用上一代签署和生成者的公钥。在 Nxt,这是完全确定性的,使其易于被利用。
为了解决这个问题,以及减少分叉的机会,Fair PoS 使用 100 个区块前使用的生成签署。节点或租约中的余额发生任何变化会导致 Ti 对于给定的 Xn 的改变。尽管如此,控制至少 1/3 代币的任何组都有 30% 的优势。
PoI 需要锁仓余额和抽奖因素在固定的区块数量内保持不变。这会使它更容易受到这种攻击。
作为解决方案,生成不是可以公开计算的哈希。节点必须对上一代生成签名进行哈希处理,并使用其私钥对该哈希进行签名。这可以作为生成签名。与Nxt 和 Waves 相反,一个节点只能为自己计算 Ti,而无法提前确定下面的生成者。
6. NG(next generation – 新一代)协议
NG 协议最先为了减少比特币的扩展问题而提出。虽然它从未在比特币上实施,但自 2017 年 12 月以来,Waves NG 一直在 Waves 主网上运行。
在 NG,由两种类型的区块,微块和密钥块。先前被选的节点可以继续验证交易,平均每 3 秒创建一个微块。当选择新节点时,它会从未完成的微块创建一个密钥块。微块中的交易可以在某种程度上被认为是安全的,对于诸如锚定之类的低风险交易。
交易费用的奖励在锻造微块的节点和锻造密钥块的节点之间分配为 40% -60%。此分配必须始终有利于密钥块锻造者。否则,就会有动力忽视已经锻造的微块并创建新的微块。
在公开压力测试中,Waves NG 证明能够处理高达 6000 交易/分钟,峰值为 17,000 交易/分钟。 NG 协议极有可能可以处理高达 1000 交易/秒或者60,000 交易/分钟。
NG 减少了实际延迟并且是其他优化的关键组件。
交易类型
LTO 全局区块链使用预定义的交易类型。这允许更紧凑的块并且不需要脚本。如果需要的话,将来可以扩展交易类型列表。目前可以进行的交易类型已列出如下:
• 锚定:用于验证来自私有链的交易,
• 颁发证书:用于声明参与者之间的关系,
• 扩展/撤销证书:用来扩展或删除某种关系,
• 代币转账:用于将代币发送到另一位参与者,
• 代币锁仓:让参与者锁仓或租赁代币,
• 取消锁仓:用于停止锁仓或租赁代币,
• 设置脚本事务:用于配置智能帐户。
1. 锚定
锚定是获取某本文档或其他数据的哈希值并将其存储在一条区块链上的交易。目标是让任何人,包括创建者在内,都无法对其文档进行回溯或把日期填迟。
私有事件链的每个事件都锚定在全局区块链上。第三方应用程序可以使用全局链来锚定文档以进行存在证明。我们估计 99% 全局链上的交易可能是锚定事件。考虑到大多数交易都是用于锚定,聚合这些事务会减少区块链所需的磁盘空间。
在锻造区块时,节点按照列表中显示的顺序从事务创建二叉哈希树。只有哈希树根被添加到区块链中。作为验证过程的一部分,每个节点都会重新创建此哈希树。
节点能够索引每个锚点哈希值。但是,为了减小磁盘大小,大多数节点应该选择提取自己的锚事务的 Merkle 路径。该路径形成可与原始数据一起存储的收据(就如事件)。
2. 验证和授权
挑战/回应认证方法(例如用户名和密码验证)需要中心化系统操控。在完全去中心化的系统中,我们依靠加密签名来提供身份验证。虽然事件链之间不共享信息,但鉴于用于签名的密钥对,仍可以跨链识别各方参与者。
从更广泛的意义上讲,各方可以通过这种方式签署任何类型的信息。这是PKI 证书现在提供的类似用例。依赖中心机关颁发和撤销证书阻碍了将其作为挑战/响应认证的替代。
使用公有区块链,可以创建和使用公钥/私钥对,而无需中心权限。密钥对形成独一的身份标识,可以通过从公钥的散列派生成的地址来引用该标识。
3. 证书
证书事务允许每个参与者通过引用其地址来传达有关另一个参与者的信息。与代币不同,授予和撤销帐户完全在发行人的掌控之中。
证书可以被指定特定类型,该类型由发行证书的一方选择。虽然不是必需的,但是我们还是建议在显示给其他人之前由收件人帐户确认证书。
4. 信任之链
虽然具有私钥对的公共地址是一种身份验证方法,它并不提供授权解决方案。证书可用于指定参与者之间的关系。
这种途径类似于信任网(WoT)。WoT 与 PKI 有许多缺点,但是我们平台上没有这些缺点。
在区块链上,建立和撤销关系或将参与者标记为受损是非常简单,即时和不可撤销的。区块链交易具有时间戳,允许我们在某个时间点验证关系的存在。
我们不是简单地建立身份,而是建立特定的关系。除了存在关系外,交易不会确认或否认有关参与者的任何其他信息,因此各方无需与另一方进行实际会面。
在给定的情况中,我们只关心基于这种关系在两个参与者之间找到信任链。这模仿了 PKI 验证所做的信任链,但没有中心机构。
5. 智能帐户
默认情况下,某帐户的任何交易将有其帐户的密钥对签署。Waves 在其平台实施了智能帐户的概念,允许任何人自定义此逻辑。
为此,可以使用非图灵完整语言来编写此逻辑。此脚本仅用于验证或拒绝特定帐户的事务。它不能触发其他交易。因此,这种智能合约不会阻止聚合操作。以确保这一点 LTO 智能帐户而且进一步被限制。
LTO 没有数据交易,并且无法从脚本访问其他事务。
通过指定需要用于签署事务的备用公钥,可以使用智能帐户创建多签名帐户。它不是直接指定这些密钥,而是指定任何拥有特定证书的人都可以签署一笔交易。
用户也可能还会考虑其他一些限制。帐户可以被锁定,只被允许在多个块之后转移代币,要求在帐户上保留最少数量的代币,或者只允许将代币转移到特定帐户。
当运行节点时,我们建议使用多重签名。与节点相关联的帐户通常包含大量代币以便锁仓和锚定。该帐户的私钥对于节点是已知的。使用多重签名的话,获取该键不会给这些代币的直接访问。使用多重签名,获取该密钥不会让用户直接访问代币。
锚定交易不受智能帐户的影响。他们总是需要使用帐户的私钥进行签名。该逻辑适用于允许未来可能的优化,例如全局区块链节点的水平缩放。
汇总区块
锚定是一种低影响,无中断,可为区块链带来额外的安全性的方案。我们预计其他不使用交互合约的应用程序也会使用锚定功能。
一个让区块链难以扩张的反面就是每条链会无限的继续增长。链的大小给保留副本的节点需要的硬件产生压力。它还给必须回放整个链的新节点带来了负担。为了降低链的增长速度,我们使用了汇总区块。
1. 密钥块大小
表格 1显示区块链上的密钥块的结构。全球链应该可以扩展到 5000 万/日以上笔交易。这大约是预期使用量的五倍。这种密钥块的大小由区块数据和交易事务数据定夺 (5)。
Keyblock size = d + t (5)
有:
d = 区块数据
t = 交易事件数据
在计算预期的块大小之前,我们会假设:
• 99.98% 的交易是锚定交易 (Table 5)。这是全球区块链的主要用途,
• 其余的 0.02% 是证书交易 (Table 7),
• 其他类型交易都很少发生,可以忽略不计,
• 所有交易均匀分布在区块上,
• 平均而言,每分钟生成一个关键块,
• 每一天创建 1440 个关键块。
区块数据大小是 277 bytes (Table 1)。在先前做出的假设下,可以使用等方程算交易数据的大小 (6).
T ransaction data size = n · (0.9998 · a + 0.0002 · c) (6)
有
a = 锚定交易的大小 (Table 5),
c = 发行证书交易的大小 (table 7),
n = 每个区块的交易数量。
这使得密钥块的总大小约为 3.8MB.
2. 无聚合的增长
有每个区块大小 3.8MB 还有每一天会生成的 1440 个区块,如果它持续满负荷运行,本区块链每天将增加 5.47GB 数据 / 每年 2TB。
预期用量大约一千万笔交易,每一天给区块链增加 1.1GB 数据。这导致每年约 36.5 亿笔交易,或者换句话来说每年增加 400GB 数据。
对于共有 3.40 交易的比特币 [85] 来讲,看网络和硬件速度,从创世起同步大约需要 7 天。
在拥有数十亿笔交易的情况下,硬碰硬同步可能意味着等待数周甚至数月才能使全球区块链同步。
聚合交易的目标之一是每年只需要 20 分钟的同步,当然再次取决于网络和硬件速度。一年 365 个汇总块,节点应该能够在 3 秒内处理每一个汇总块。
3. 隔离见证
隔离见证是比特币采用的策略通过将交易分成需要处理的数据和用于验证交易的数据来减少每个区块中的数据 [86],这种称为见证数据,其中包含签名。
确定性是一种保证,足够深的区块永远不会从区块链中移除。无论概率终结性或协议终结性如何,如果能不恢复该块,则见证数据再无用处。节点可以自由删除达到确定性的区块的见证数据,从而节省磁盘空间。
我们建立在隔离见证的逻辑基础上,产生了汇总块的概念。
4. 聚合
这些是每 1440 个块(大约每天一次)创建的特殊区块。它们包含自上一个汇总块以来所有新区块的聚合值。重放链时,只需要应用汇总块即可接近当前状态。然后,只需要重放在最后一个汇总块之后创建的块。这显然减少了重放时间。
倒数第二个汇总块和之前的所有块都是最终块。节点在这个点之前不会考虑接受任何分叉,无论最长链状况如何。这意味着只需要存储先前 1440 到 2880密钥块的交易。在将密钥块存储在汇总块中之后从密钥块中删除事务数据会将密钥块大小从 11.3MB 减少到 277 bytes,与汇总块相比,它们可以忽略不计。
5. 与剪枝的区别
乍一看,这种方案似乎与区块链剪枝类似,因为我们只保留了有限的一组交易。剪枝的危险在于当有伪造的信息被引入时,它会威胁到不可变的性质。
危险来自分配区块链的状态。通过隔离见证,交易在没有签名验证的情况下通过,依赖于终结性的概念。但是,每个节点仍然需要应用来自创始的所有交易来计算当前状态。
实际的交易数据不用于计算块的签名,而是存储为下一个块的附件 (Table2)。作为没有交易的事件,密钥块是区块链的一部分,不能被忽略。如果在未经验证的情况下通过交易,则聚合它们几乎没有风险。
6. 汇总块大小
汇总块包含有关非锚定交易的所有信息以及所有交易费用和其他代币转账的聚合版本。这种区块相当大的块,特别是与密钥块相比时。
为了减少被使用的内存量,交易费用和代币转账交易会被缩小到每个参与者的余额变化 (Table 4)。汇总还包含不可聚合的交易,如证书,锁仓和脚本交易。
若要预算汇总块的大概大小,我们进行了以下假设:
• 总共有 20 万人参加,
• 每天会创建一个汇总块,
• 根据前一节中的假设,我们可以认定余额变化是汇总快的唯一重要部分。
在使用这些假设的情况下,我们可以计算汇总块的大小。当使用方程 (7)号来计算大小时,结果约为 10.3MB。
Summary block size = T ransaction summary = p · e (7)
p = 过去 1500 个区块的参与者数量,
e = 余额更改总结条目的大小 (table 4).
7. 总大小
区块链的总大小由两部分组成,静态部分和成长部分。静态部分由最后 1000个密钥块组成。那些块将依然包含附件数据(5)。
Static part = n · k (8)
n = 有交易数据存储在内的密钥块数量,
k = 密钥块大小 (5)。
当我们使用方程 8 用于计算概率的大小, 它表明总的大小是 11.3GB 左右。由于只有最后 1000 个区块被完整存储,包括交易,因此这个大小可能略有不同,但不会明显增加。
成长部分包括汇总块 (7) 以及删除交易数据后密钥块的剩余部分。我们将使用方程 (9)将大小定义为每年的增长率。
Growing part = n · k + m · s (9)
with:
n = 每年生成的密钥块数量,
m = 每年汇总块的数量,
k = 没有交易数据的密钥块的大小,
s = 汇总块的大小 (7).
按照先前做出的假设,该方程表明区块链每年增长约 1 GB。3.7GB。
8.历史节点
节点不会被要求删除旧的交易。通过保持链中所有交易,历史节点可以在需要时证明区块链的正确性。历史节点无法传递伪造的历史记录,因为历史节点的区块需要符合其他节点的。网络可以依赖于相对少量的历史节点。
运行一个历史节点没有在链上的好处。它不会增加锻造新块的机会。运行这种节点必须出自社区的兴趣或者二次收入。
网络漏洞
对于重要性证明 POI 一个忧虑就是某人通过虚拟交易来提升自己的重要性的。我们可以将垃圾交易的利润/损失计算为最大抽奖因素的公式,如下所示:
• 抽奖因素; r,
• staked tokens 比例; bi,
• 交易成本; c,
• 网络上的总交易量; n,
• 垃圾交易; τ ,
• 奖励; p,
• 垃圾交易的利润/损失; ∆p = prmax − pr=1.
方程 15 证明了是不可能直接从垃圾交易,由最大抽奖系数等于或小于 2,得到利润的。
接近 2 的抽奖因素将使垃圾交易几乎免费。通过低成本增加重要性乃下策,因为它可以帮助攻击者用 51% 攻击试图破坏网络。1.5 的最大抽奖系数确保了夸大重要性的高成本。
2. 无利益攻击
无利益攻击原理假设节点将继续在任何分支上构建,而不是选择最长的链,因为这样做没有任何风险。如果所有节点都示出这种不良行为,攻击者只需要一小部分代币就可以强制网络切换到另一个链;就是 1% 攻击。
这种情况被称为公地悲剧。各方都试图通过滥用该系统来获得个人利益。但是,如果每个人都这样做,将没有人从中受益。相反,它只会导致破坏网络,导致底层代币的价值下降。https://v2.overleaf.com/project/5b95e00fe0915f6ac7833767Waves Fair PoS 使未发布的孤立分支非常难以赶上主支。利用只占一小部分代币的坏行为者从这种行为中获利的可能性微不足道。
恶意参加者需要创建和保持节点的更改版本。成本代价加上从中获益的机会很少,应该足以抑制这种行为。
3. LPoS 中心化
已实施 LPoS 算法的项目往往具有高度中心化。
这种效果可以通过代币奖励来解释。具有接近 100%正常运行时间的专业设置不会错过任何锻造机会,在设定数量的代币被锁仓时产生更多奖励。这会使代币持有者租赁到这些节点并具有增强效果,因为减少的开销允许向出租人提供更高的支出。
限制每个节点可持有的的代币数量是一种有缺陷的方法,为女巫攻击创造了机会。在无权限信誉系统中,一个节点可以将自己作为多个假名身份进行,从而避免此限制。
由于我们的解决方案的性质,大多数交易将由与节点有关联的密钥对签名。网络还将包含相对大量的节点。这对 PoS 没有影响; 但是,在 PoI 上,它为平台用户提供了优于《非用户-代币持有者》的优势。
另一项措施是利用租赁代币的限制; 每个节点都需要拥有至少 10% 的代币所有权。
4. 阻断服务器攻击
由于可扩展性有限,使用大量交易过载任何公有区块链都相当容易。交易费用是抵御这类攻击的主要防御手段,但交易仍需要进行验证,以确定资金不足。此外,凭借相当数量的资金,可以通过垃圾交易使网络超载,如同以太坊于2018 年 7 月所见。
节点可以选择在这种情况下自动增加交易费用。理想情况下,节点从锁仓中获得的收益与在交易上花费的数量相同。随着垃圾代币增加交易费用的回报,这些费用将用于自动抵御攻击。
5. SHA-2 漏洞
在 2017 年,当谷歌研究实验室发现两个不同文档导致相同哈希的冲突时,SHA-1 被证明是脆弱的 [91]。如果 SHA-2 256bit 同样容易受到攻击,那么对于基于二叉树的锚定来说,这可能是致命的。
如果发现冲突,某人可以声称冲突文件已经过公证。更糟糕的是,给定二进制哈希树根和随机哈希,某人可能能够生成有效的二叉路径。这将允许黑客验证任何文档。但是,这仍然不是一件容易的事,因为对于树中的每个分支,黑客需要组合两个长度正好为 32 个字节的哈希。
虽然使用暴力算法去破 SHA-1 仍然需要在一辈子难以实现的计算,生日悖论导致发现冲突所需的计算要少得多。生日悖论也适用于 LTO 公共链,因为有许多二进制哈希树根,每个都有最大数量的二叉路径。
为了解决这个问题,在验证有争议的情况下,验证可能会基于历史节点。然而,这减少了锚定节点的总体使用。
反而,我们可以添加辅助哈希树,其中 SHA-2 哈希再用另一算法(例如SHA-3 或 Blake2)进行哈希处理。当可能伪造哈希树时,简单地双重哈希是没有用的,因为攻击者只需算法中的漏洞。但是,如果有两个哈希树的话,则需要破解两种算法。然而,即使这样,也需要为单个块的两个哈希树找到冲突,从而消除了生日悖论的优势。