欢迎光临
我们一直在努力

基于区块链的不可变日志服务

作为服务的不可变日志存储

威廉·普尔马吉迪1,张磊1,约翰·斯坦巴赫2,托尼·欧文3,和安德里·米兰斯基1

1瑞尔森大学计算机科学系,多伦多,加拿大

2IBM加拿大实验室,多伦多,加拿大

3IBM Watson与云平台,奥斯汀,美国

{1william.pourmajidi, 2leizhang, 5avm}@ryerson.ca, 3jstein@ca.ibm.com, 4aerwin@us.ibm.com

摘要

日志包含有关云上所提供服务质量的关键信息,可作为数字证据使用。因此,我们认为日志的关键性要求其具备不可变性和验证机制,且不依赖于单一可信方。本文提出一种基于区块链的日志系统Logchain,该系统可与现有的私有和公有区块链集成。为验证该机制,我们通过将其与以太坊公有区块链网络集成,构建了日志链即服务(LCaaS)。结果表明,该方案具有可扩展性(能够每秒处理100个日志文件)和高效性(平均可在23秒内“封存”一个日志文件)。

一、引言

在大多数云服务中,涉及两个参与方。云服务提供商(CSP)拥有一个计算资源池,并通过互联网以预定义的价格向云服务消费者(CSC)提供这些资源。CSP采用持续监控来确保当前提供给CSC的服务质量(QoS)符合已签署的服务级别协议(SLA)中的规定。虽然对监控系统和生成的日志拥有完全控制权,使CSP能够高效地监控和维护云服务,但也赋予了CSP对对CSC而言具有重要证据价值的资源的争议性权力。也就是说,日志是在由CSP构建、管理和拥有的平台上生成和存储的。因此,CSP对所有收集到的日志拥有完全权限。这种情况引发了诸多与信任相关的问题。

为了解决当前云日志存储解决方案中的信任问题,我们的目标是构建一个名为日志链(Logchain)的不可变日志系统。我们选择区块链作为数据存储模型,因其具备不可变性,并支持任意类型数据的存储。同时,我们也解决了区块链主要的可扩展性限制,即验证每个区块完整性所需的计算资源数量。为了使日志链更易于使用,我们通过实现一个API接口来构建日志链即服务(LCaaS),以便与日志链进行交互。

日志链(Logchain)的理念及其详细设计已在 IEEE CLOUD 2018[1]上发表,且该原型的源代码可通过[2]获取。本文通过展示LCaaS可在以太坊上实现(第三节),并在第四节提供性能评估,进一步扩展了[1]。

II. LCAAS的设计

当前的区块链共识协议要求网络中的每个节点处理区块链的每一个区块,因此存在主要的可扩展性限制。我们通过将部分区块链进行分段并将其锁定在高层级区块链的一个区块中来克服这一限制,即创建一个双层区块链层级结构。验证高层级区块的完整性即可确认底层区块链所有区块的完整性,从而减少验证链所需的操作数量。

尽管实现区块链需要常见的关键组件,但我们的原型还需要附加组件。我们扩展了基本的创世块概念,并引入了绝对创世块、相对创世块、终止块、超级块和超级区块链。这些改进使得LCaaS能够提供层次结构(如图1所示),从而提升区块链的可扩展性。绝对创世块位于第一个环形区块链的第一个区块位置,而相对创世块则位于第一个环形区块链之后每个后续环形区块链的起始位置。作为 LCaaS的关键元素,终止块被添加到区块链的末尾以“关闭”该链,形成一个封顶的环形区块链。此外,超级块(SB)具备普通数据块的特征,不同之处在于其数据元素存储了一个环形区块链中终止块的所有字段。最后,超级区块链是一种每个区块均为SB的区块链。

示意图0

上述新提出的增强功能使得LCaaS能够提供克服区块链可扩展性限制所需的层次结构。

III. LCAAS ON ETHEREUM

鉴于以太坊的流行程度,我们选择以太坊作为与 LCaaS集成的区块链平台。LCaaS构建于私有区块链之上。为了将其替换为公有区块链,我们提出了一种复合结构,其中接收日志并将其转换为区块的过程在LCaaS端完成,而哈希加密的存储和数字签名则发生在以太坊区块链上。

在以太坊区块链中,经济由一种称为汽油费的执行费用控制。汽油费以以太币支付——以太坊的内在货币[3]。汽油费衡量处理交易所需的计算资源消耗。

我们采用以太坊测试网络。以太坊测试网络使用测试以太币——一种没有货币价值的虚拟以太币。我们使用 MetaMask以太水龙头[4]来获取测试以太币。我们使用 Solidity [5]发布我们的智能合约。所有与以太坊区块链的交互都可以通过Etherscan [6]进行追踪,这是一个连接到以太坊区块链的网页仪表板。Etherscan允许任何人通过发送方或接收方地址、交易哈希或区块编号查询交易详情。在 [7]中可以看到LCaaS在Etherscan上的一笔成功交易示例。

IV. 性能测试与分析

为了测试性能,我们在配备 Intel i7‐7500U CPU 和 16 GB 内存的测试计算机上设计并运行了负载测试。负载测试的主要目标是评估三个可配置因素的影响:每秒传入交易(即日志文件)数(tps)、循环区块链长度(n)和_gas价格(g)。这些因素的取值见表I。 tps、 n和 g取值的排列组合(如表 I 所示)共形成36种不同配置。对于交易,我们使用日志文件的摘要(64字节长)。我们使用 Postman [8]向 LCaaS 生成传入交易(即日志文件)。需要特别说明的是,用户可以选择在期望的时间间隔提交实际日志记录或其摘要。

我们进行了36次实验(即表I中所列因素取值的每一种排列组合各一次实验)。为了分析性能是否会受到 n、 g 和 tps的影响,我们对原始数据(即每个SB的处理时间)进行了皮尔逊和斯皮尔曼相关性分析以及线性回归分析。

以及每次实验中SB的均值、中位数和第95百分位时间。选择聚合统计以减少数据中的噪声。我们发现,基于相关性较低的(< 0.15)值和线性模型较高的(> 0.1) p‐值,各个因素或复合因素与响应时间之间均无统计显著关系。这意味着处理SB所需的时间主要取决于以太坊网络和矿工的可用性。我们在图2中展示了SB处理时间的分布。从分布的直观观察来看,_gas价格越低,具有更高处理时间 (> 32秒)的SB越多,尽管差异并不显著。根据柯尔莫哥洛夫‐斯米尔诺夫检验, g= 20情况的分布与 g= 9或 g= 6情况相比存在显著差异(p‐值 < 0.001)。然而, g= 6和 g= 9情况之间的差异较不明显: p‐值 ≈ 0.08。我们原本预期这三种情况之间会有更明显的差异;可能是由于我们使用了测试网络而非生产环境,导致了这种微弱差异。

本质上,我们的研究结果表明,即使在高负载情况(如 tps= 100和 n= 1)下,网络仍有足够的能力来“吸收”我们工作负载的变化。然而,在罕见情况下,处理时间较长:在3089个已处理的SBs中,有5个(0.16%)的处理时间在3到5分钟之间,1个(0.03%)的处理时间为23分钟。由此可见,这些情况虽然罕见,但确实存在,我们必须意识到此类事件的可能性。

V. 结论

所提出的解决方案可防止日志篡改,确保日志记录过程的透明性,并在所有云参与者之间建立信任。未来,我们计划将LCaaS与其他区块链解决方案进行测试,重点关注私有区块链服务。

赞(0)
未经允许不得转载:171主机测评 » 基于区块链的不可变日志服务
分享到: 更多 (0)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址