编辑:铅笔盒
此前Geo Protocol曾发表过一篇关于数据库事务原子性的研究报告,介绍了解决分布式数据库原子性问题的几种方案,包括从传统的一阶段提交到之后在HTLC基础上不断改进得出的一系列方案,在保证原子性的同时,不断提高效率和安全性。为了方便读者阅读,区块链铅笔翻译了报告全文,下面是部分节选。
关注微信公众号“区块链铅笔Blockchain”,回复关键词“GeoProtocol”,即可查看完整报告。
在进行网络交易过程中,电源故障或事件故障可能会给数据库造成严重影响。为了保证有效性,每个数据库事务要满足四大标准,也就是所谓的ACID模型,即原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)以及持久性(Durability)。本文主要围绕原子性展开。
原子事务是指要么完全执行要么完全不执行的数据库事务。我们以分布式数据库为例,深入研究了原子事务性面临的问题以及目前出现的一些解决方案。
在传统解决方案中,考虑原子性的话,多阶段提交是目前使用较多的。两阶段提交协议是最常见的,而一阶段和三阶段提交协议用的也不少。
自2009年加密货币出现以来,比特币用户数量呈指数级增长。相应的,交易佣金和交易延迟情况也在增加。因此,社区一直在积极寻找可扩展性解决方案,然后就有了闪电网络的第二层解决方案,实现了支付通道及多跳交易。但是,为了防止因某人的过错而造成资金损失,原子性也是需要的。下面是现有的解决方案。
HTLC
目前用的最多的就是HTLC(哈希锁合同),即在预设锁定时间前呈现初始秘密可以花费资金。在闪电网络的事务流程中,首先是接收方节点生成秘密并计算哈希值。之后,将该哈希值发送到发送方节点作为HTLC生成的基础。发送方生成合约并将其发送到节点1,即路径上下一个节点,该节点用递减的时间锁创建新合同(使用相同的哈希值)。这个新生成的合同由节点1沿着路径发送到节点2,然后节点2重复相同操作并继续缩短时间锁。合约一路前进到接收方,由接收方通过自己一开始就生成的秘密签名释放资金(解锁支付),然后从发出合约的节点处获得资金。反过来,这一动作向最靠近发送方的节点展示秘密,并授权解锁支付并接收资金,然后再向前一节点展示秘密。整个路径重复这一过程后,每个节点都收到了付款,至此支付完成。
HTLA
Ripple的Interledger协议是一个开放协议套件,用于各类账本间转账(跨链交易)。该项目白皮书中提出了“公证人”这一概念。为了实现原子性,最初建议使用通用模式(Universal Mode)和原子模式。
PM
Sprite通道的目标是开发新的支付通道,解决闪电网络原子性、部分存款与通道资金注销等问题。通过添加原值管理器(PM),HTLC得到了显著升级。
HTLR
Celer Network是针对公链可扩展性并通过离线技术实现性能最大化的解决方案。 在这个体系中,PM(原值管理器)变成了一个哈希时间锁注册表(HTLR),但大部分功能仍旧保留。HTLR有两个依赖端点,即IsFinalized和QueryResult。前者返回的结果是原值是否先于区块数字完成注册;而后者返回的是原值是否已注册。这两个功能最终可以实现合并。需要注意的是,HTLR始终是链上的。
Notaries
Interledger的原子模式应该就用到了“公证人”这个角色。通过公证人完成的支付和通过闪电网络HTLC进行的支付很相似,两者唯一的区别是,在展示秘密之前,接收方节点会将合约转交给公证人,即从其通用登记册中随机选择的特殊实体。
Observers
这一角色在Geo协议中出现,该概念为原子性问题提供了独特的解决方案。目前项目团队在创建一个去中心化的点对点链下网络来进行资产交换。
在去中心化网络中,原子性的开发受到了很多新概念的影响。
哈希时间锁合同(HTLC)最先面世,其优势在于节点掉线时减少损失并且保障发送方和接收方的安全。而其问题在于资金必须冻结在通道中,参与者必须保持在线以避免损失。
然后是在HTLC基础上改良后的HTLA和HTLR。前者可以实现在各种注册表中使用HTLC,甚至是那些不支持相应合同的注册表。后者则解决了节点脱机的问题。
之后的新方案中出现了观察者和公证人。虽然这两个角色的中心化可能会损害网络,但是一个设计得当的系统是可以帮助其维持去中心化的。
本文由用户:麦妖榜 发布,不代表网站的立场,转转请注明出处:http://www.maiyaotop.com/tech/8595.html