【论文笔记15】以太坊智能合约去中心化的链上数据访问

2023-10-27

原文作者:Mohd Sameen Chishti , Farhan Sufyan , and Amit Banerjee , Member , IEEE*
原文标题:Decentralized On-Chain Data Access via Smart
Contracts in Ethereum Blockchain*
原文链接:Decentralized On-Chain Data Access via Smart Contracts in Ethereum Blockchain | IEEE Journals & Magazine | IEEE Xplore
原文来源:IEEE Transactions on Network and Service Management 2022
笔记作者:quangaoyuan
笔记小编:quangaoyuan

0x00 关键词

智能合约、链上数据、顺序和并行查询处理、Merkle-Patricia Trie (MPT)。

0x01 摘要

以太坊区块链网络中的智能合约是可自我执行的脚本,用于管理区块链网络上不同实体之间的代币化资产和访问权限。它们是区块链技术的重要补充,可在维护两个或多个实体之间的数字关系时实现数据透明度和可靠性。然而,智能合约处于起步阶段,并受到各种限制,包括不变性和代码保密性。在本文中,我们解决了智能合约无法访问链上数据的问题。智能合约目前通过外部预言机协助获取链上数据,这可能会影响客户。为了解决这个问题,我们提出了一种去中心化机制,通过使用 Merkle-Patricia Trie (MPT) 索引每个块中交易的单个或多个参数,直接从智能合约访问区块链数据。这个想法是增加区块链应用程序的数据透明度。该论文提供了一种顺序搜索方法,可以在 O(N) 中从 N 个块中检索满足特定条件的交易。通过将区块链数据划分为 k 个不相交的子集以实现搜索过程中的并行性,复杂性进一步降低到 O(N/k)。我们通过对以太坊区块链数据的案例研究,通过实验验证了所提出方法的有效性。

0x02 INTRODUCTION

智能合约受到各种限制,限制了其适用性 [6]。限制之一是脚本在部署到区块链网络后变得不可变。对于任何修改,比如修复错误,在修改脚本 [7] 后部署一个新合约。另一个问题是部署合约的保密性。与区块链账本一样,智能合约脚本对网络中的每个完整节点都是开放的。因此,很难对业务领域的竞争对手隐藏应用程序逻辑 [8]。最后,用户需要支付执行合约的费用,金额取决于脚本中的操作次数。对于更多操作,执行智能合约的总成本会增加 [9]。除上述问题外,智能合约无法直接访问区块链数据。位于智能合约范围之外的数据(称为范围外数据)通过使用 Chainlink [10] 或其他外部预言机 [11] 的 API 调用访问,如图 1a 所示。更具体地说,当前的区块链架构不支持来自智能合约的链上数据查询。本文解决了这个问题,并提出了一种高效、分散的搜索机制,用于从智能合约访问区块链数据。图 1b 总结了所提出的方法。在此,我们使用 Merkle-Patricia Trie (MPT) 数据结构来存储和搜索区块链的相关信息。全节点可以使用相同的索引来索引交易的单个或多个参数。所提出的机制通过将区块链数据划分为多个不相交的集合来并行化搜索过程(图 1b)。

 

0x03 贡献

1.作者探索了一种直接从智能合约访问区块链数据以根据用户要求检索相关信息的最佳方式。

2.作者所提出的方法可以通过将区块链数据划分为不相交的交易子集来实现搜索过程中的并行性,这可以降低访问数据的时间复杂度。

3.通过实施智能合约来测试所提议的方法在气体消耗方面使用消耗。此外,作者研究了索引和搜索事务所需的时间,并推断并行搜索过程对降低时间和空间复杂度的效果。

 4.作者提供了一个案例研究,使用定制的以最终客户为中心的信誉机制从可用列表中选择最好的供应商。

0x04 相关工作

A.区块链数据查询的方法

研究人员探索了从智能合约 [44]、[45]、[46]、[47] 访问链内和链下数据的各种技术。在 EtherQL [44] 中,作者向以太坊区块链添加了一个查询层,允许块级和事务级查询。通过配置区块链事件侦听器,EtherQL 实时监视块更改。处理程序链充当对以太坊客户端将传入的区块链数据转换为 SQL 模式,不断尝试从缓存中检索区块链数据并将其提取为三个不同的数据结构:块、事务和帐户,每个结构都有其数据处理程序。之后,一个基于 MongoDB 的持久性框架来存储数据,最重要的是,一个开发人员接口通过本地 API 调用和 RESTful 服务访问数据。类似地,Etherscan [46] 和 Graph [47] 等工业计划也证明了一种使用 Web 界面和 API 调用查询区块链数据的机制。

与上述不同,[45] 中的研究人员试图通过引入 B + 树数据结构来索引交易来访问链上数据。 B+树的特性有利于区块链中的搜索机制,不会对挖掘区块所花费的时间数据的安全性产生任何不利影响。实现是通过扩展Geth1.8 软件来完成的。该方法类似于所提出的方法,因为两者都使用新的数据结构来促进查询过程。但是,两者之间存在显着差异。首先,用于索引的数据结构不同。也就是说,前者使用 B +,其中建议的方法使用 MPT 数据结构来索引交易。使用 MPT 的原因是它在一个块中的搜索复杂度是 O(1)。其次,当前版本的[45]可以用单个参数搜索区块链;而在本文中,演示了具有 2∼3 个参数的搜索查询。最后,与[45]相比,在本文中,我们试图通过并行化搜索过程来提高搜索性能。

B.外部预言机的应用

外部预言机可以执行各种操作,例如从区块链、互联网、物联网设备访问范围外的数据以及控制智能家电。在下文中,我们将讨论使用外部预言机服务来访问区块链历史的应用程序。

1)声誉管理:一般来说,声誉显示了一个实体过去的表现,并表明了它未来行为的可能性。目前,我们有很多去中心化的基于区块链的应用程序的信誉计算机制。参考文献[48]总结了区块链领域的信任建立和声誉管理领域的研究。参考文献 [49] 提出了一种信誉机制,用于提高基于 X 证明 (PoX) 的共识模型的挖掘效率。它降低了知名矿工开采区块的难度级别,如果矿工未能在给定的时间间隔内开采区块,则会对其进行处罚。参考文献 [50] 使用链下数据库来存储有关雾节点声誉的日志。它使用五种不同的智能合约来管理和更新节点的声誉。参考文献 [51] 使用链上信任机制来确定源自物联网网络中传感器的数据的可靠性。

2)智能家居:区块链技术可以为构建智能家居环境提供安全和隐私保护的底层基础设施[52],[53]。在[54]作者中强调将区块链技术融入智能家居的先决条件,包括为最终客户提供量身定制的解决方案、访问管理、公用事业支付服务和智慧城市服务。研究人员正在提出各种解决方案来解决这些挑战。参考文献 [55] 在智能家居中使用基于智能合约的基础设施来提供紧急服务。参考文献 [56] 使用 swarm 文件系统 (SFS) 以原始格式存储数据以及数据查询机制。

C.总结

目前,智能合约可以通过外部预言机访问范围外的数据,这可能会损害数据的完整性和安全性 。在本文中,我们通过智能联系人直接访问区块链数据来解决这一限制。也就是说,我们通过使用 MerklePatricia Trie (MPT) 数据结构索引交易来向区块链引入去中心化访问机制。此外,我们展示了数据结构可以并行化以在区块链中高效搜索交易,这是任何业务应用程序的基本要求。服务提供商需要搜索之前的交易以提供定制服务。从客户的角度来看,搜索可以找到提供有竞争力的价格和超值服务的最佳业务提供商。除此之外,所提出的机制也可以用于上面讨论的应用程序。因此,通过直接访问数据,智能合约可以提供一整套去中心化的解决方案,并为最终客户提供更好的服务。

0x05 智能合约搜索机制

A.顺序搜索机制

我们首先介绍一种搜索机制,该机制使用单个参数来查询区块链中的交易。为此,我们可以使用任何交易字段(如图 2 所示)来发起搜索请求。但是,在下面的讨论中,我们将交易发起者地址视为搜索参数。后来,我们概括了这个概念,并包括了用于访问区块链数据的多个搜索参数。所提出的方法可以顺序搜索区块链并检索满足 O(N) 搜索条件的交易,其中 N 是块的数量。 1) 使用单参数访问数据:该方法为区块链架构引入了一种新的 MPT 数据结构,称为 Search Trie (SMPT)。除了索引之外,较轻的节点可以使用 SMPT 发起搜索查询和获取数据,而无需在本地下载完整的区块链。如上所述,该实现使用交易发起者地址和交易的哈希作为(键,值)对来构造每个块的 SMPT。智能合约可以顺序遍历每个区块的 SMPT 结构,以找到特定用户发起的交易的哈希值。较轻的节点可以使用哈希值下载相应的块或通过向全节点发送请求直接获取数据。请注意,较轻的节点也可以保持部分 SMPT结构(最近开采的块)来执行本地化搜索。

 

算法 1 描述了搜索过程。该算法的输入参数是账户地址 inp(即搜索参数)、用于搜索的开始和结束块编号(sBlk∼()eBlk)以及所需的交易数量(num)。请注意,该算法按块编号的递减顺序执行搜索操作。即,搜索操作从起始块开始并在结束块编号处终止。为了搜索整个区块链,eBlk 是创世区块(区块编号为 0)。假设智能合约需要查找特定地址(0x1a23e···f 4)的最后 10 笔交易的详细信息。假设当前挖出的区块数为 10000,用户定义的总搜索空间为 1000 个区块,智能合约需要探测 10000 到 9000 之间所有区块的搜索尝试,找到 0x1a23e···f 4 的匹配条目。如果地址trie包含0x1a23e···f 4作为key,则返回对应的交易hash值,可用于提取交易明细。搜索将继续,直到找到最后 10 笔交易,或者智能合约到达区块号 9,000。 2) 使用多个参数访问数据:在上面的讨论中,SMPT 结构考虑了访问区块链数据的单个参数。但是,在业务领域中可能存在应用程序可能需要基于多个参数启动复杂搜索操作的情况。例如,最终用户可能会根据 gas 价格或交易时间来搜索记录。因此,我们将 SMPT 数据结构概括为在搜索过程中包含多个字段。生成的搜索树可以支持查询,例如 (a) 返回用户发起的所有 gas 价格 ≥ 19 Gwie 的交易,或 (b) 查找在特定时间间隔内发起的 gas 价格 ≥ 19 Gwei 的交易。广义的 SMPT 结构(下面讨论)可以顺序地从 N 个块中获取满足上述 O(N) 约束的所有事务。

为了在一个块的广义搜索树中包含多个参数,比如 (pi = gas_price, pj = trans_value),我们需要为相应的参数分配唯一 ID。请注意,事务发起者分配参数值并且通常对于每个不同交易,如图 5 所示。此外,搜索查询通常会找到特定范围内的交易参数,例如 1 ≤ pi ≤ 3。为了支持这种范围查询,我们可以对交易进行聚类。例如,为了基于 gas 价格对交易进行聚类,我们通过使用 etherscan.io.1 提取其在 2015 年 13 月 8 日至 2021 年 1 月 29 日之间的交易中的每日平均值来分析以太坊区块链中的 gas 价格模式然后,我们应用 K-Means 聚类算法将 gas 价格划分为 5 个簇,如表一所示。每个簇可以关联一个唯一的哈希标识符,作为广义搜索中找到相关数据的关键特里(下面讨论)。在表 I 中,我们假设 0x601a3···8 对应于属于 Class4 的事务。所提出的方法假设网络中的所有参与者都知道集群的哈希值。

 

 为了构造广义搜索树,我们可以如下定义每个参数 p1 的 (keyi , valuei )pi 对。 keyi 是参数 pi 的 hash-id,valuei 包括具有相同 keyi 的交易(在块中)的标识符。例如,在图 5 和表 I 中,Class4 gas 价格的 (keyi , valuei )pi 对为 (0x601a3 · · · 8, T1, T4, T10, T12)。搜索过程与我们在算法 1 中讨论的相同。智能合约可以使用广义搜索树来根据用作键的任何字段查找交易。考虑一个搜索查询,用于查找地址为 0xa71fe···8 且 gas 价格在 12 到 20 Gwei 范围内的用户的最后 10 笔交易。从表一,智能合约可以确定指定范围属于Class4,并且可以探测hash-ids为0xa71fe···8和0x601f 0···c的块的SMPT。在图 6 中,我们展示了一个包含三个事务的块的快照,地址为 0xa71fe···8、0xa7109···b 和 0x601f 0···c。密钥为 0x601a3···8 的第四个叶子对应于 Class4 事务。对于搜索,智能合约会探测每个区块两次并合并结果。也就是说,它检查发起者地址的指定哈希 ID,并且 Class4 集群存在于同一个 SMPT 中,并检索满足这两个条件的所有事务的哈希值。

B.区块链数据的并行搜索

如上所述,智能合约可以使用通用 SMPT 结构对区块链数据执行复杂的搜索查询。但是,由于区块链的线性链结构,搜索操作是顺序进行的,复杂度为 O(N)。为了降低搜索复杂性,我们将区块链数据分配到不相交的子集中以并行化搜索过程。我们可以通过各种方式在逻辑上将区块链划分为不相交的子集。例如,要将其划分为 k 个子集,我们可以使用以块号为参数的简单哈希函数。也就是说,h(block num)%k 可以将每个块划分为 k 个子集。执行智能合约的节点可以选择这 k 个分区中的一个或多个,并使用相应的广义 SMPT 来执行搜索查询。并行搜索过程可以将复杂度降低 k 倍。不幸的是,在这种方法中,节点需要跟踪每个子集中存在的块以并行执行搜索操作,从而为维护不相交的链(集合)创造了额外的开销。为此,我们使用并行挖掘模型 [57](下文讨论)来创建 k 个独立链。

并行挖掘模型允许多个矿工通过将事务池划分为 k 个不相交的子集来同时挖掘块,这些子集在 [57] 中定义为区域。可以使用任何预定义的标准对区块链进行分段。为简单起见,并行挖掘模型考虑使用 (1) 对交易池进行分区的交易发起者地址。在等式中,Adr(Ui ) 对应于交易发起者地址,k 是子集(或区域)的数量,R(Ui ) 是存储 Ui 交易的区域。请注意,在并行挖掘模型中,每个用户的交易属于特定区域,并由该区域的矿工挖掘。并行挖掘模型使用之前区块的哈希值创建单个区块链并维护数据完整性。

 参考文献[57]讨论了区域数量对并行挖掘模型的影响,并表明使用n≥7个区域可以将现有基于状态的以太坊区块链(150到200个交易/块)的TPS率提高到45∼ 50 TPS。但是,可以为多个参数包含额外的链,以增加并行搜索的搜索粒度。例如,我们可以创建一个单独的链,根据交易的 gas 价格将交易分成五个类别(如上所述,表 I)。为此,我们可以修改 (1) 并使用 Ri ≡ h(classi ) (mod 5) 映射类和区域。请注意,额外的链可以减少搜索空间并在特定区域执行搜索操作。但是,请注意维护额外数据(或搜索尝试)需要存储空间。因此,在性能和存储之间存在权衡。图 7 是一个并行挖掘的示例,其中 k = 3 个区域,即 R0、R1 和 R2。根据(1),区域 R0 由用户 Ui 的交易组成,其中 Adr(Ui ) (mod 3) ≡ 0,其他区域也类似。从并行挖掘中获得的不相交链有助于创建非重叠搜索空间和并行化搜索过程。为了执行搜索查询,节点需要相应区域的广义 SMPT 结构。所提出的并行搜索操作可以由具有多核处理器[58]的节点独立执行,也可以与多个节点协作执行。前者可以提供更高的数据可靠性,因为所有执行智能合约的节点都可以验证输出的完整性。也就是说,我们假设智能合约(与其他交易一样)由网络中的多个节点执行和验证。也就是说,多个矿工可以同时执行合约并在网络中广播结果[59]。

 

 算法2所示的并行挖掘过程有以下两种情况。首先,要查找特定用户的交易,智能合约只需要扫描特定区域的块,仅(第 1 ∼ 5 行,算法 2)。也就是说,如果搜索查询以发起者地址作为参数之一,那么它可以使用 (1) 来确定发起者的相应区域,并使用属于该区域的块的广义 SMPT 执行搜索操作。 Search_Region 方法是对算法 1 的修改,其中区域编号是附加的输入参数。其次,为了执行搜索查询没有发起者地址作为其参数,算法2同时对所有区域进行并行搜索操作。这是因为区块链使用发起者地址分割成多个区域,如上所述。为了实现并行性,每个区域都可以由随机矿工搜索,如 [57] 中所示。此外,可以将这些区域分配给知名矿工以增加系统信任 [60]。并行搜索的另一种技术是使用单独的用户级线程为每个区域执行 Search_Region 方法。用户线程和内核线程之间的映射可以使用对操作系统的系统调用来处理。建议的方法没有任何并发​​或同步问题,因为它是在只读模式下对不相交的数据集执行的。不幸的是,当前的区块链架构不允许来自智能合约的此类系统调用。因此,在我们的实现中,我们使用 Python 中的独立进程来模拟并行搜索操作。

最后,我们使用以下搜索查询解释并行搜索过程。其中,U1、U2、U3 是属于 2 个不同区域的三个用户。也就是说,U1和U2,用户地址为0x1a23e···f 4和0x2a14e···9c,属于区域R0和U3(地址0x3b3e···2c)在 R2区间(图7)。查询如下:

 智能合约可以并行搜索这两个区域。在每个区域中,智能合约需要探查广义 SMPT 以查找 U1 在相应区块中是否有交易。如果为真,智能合约再次探测相同的广义 SMPT 以找到属于 Class3 的交易。相同的程序可用于 U2 和 U3。让我们再举一个例子,其中搜索查询包含 2 个参数,例如 gas price 和转入金额。要执行搜索查询,例如查找 gas 价格在 12.9048 ∼ 20.45146 之间(第 4 类,中等费用交易)和交易价值在 1 ∼ 5 ethers 之间的交易,搜索程序可以首先找到所有第 4 类 Gas Price 的交易。下一步现在取决于搜索方法是如何实现的,它可以探测第 4 类的每笔交易以找到相关交易(落在给定的 1 到 5 范围内),或者该实现是否构成交易价值的类似聚类,然后找到第二个参数的相关事务,找到两个簇的交集。在我们的示例中,假设总共有 5 个区域,与顺序搜索过程相比,搜索空间减少到大约 40%,搜索复杂度降低了 5 倍。但是,如果节点正在协作(即多个节点搜索不同区域),则需要数据聚合。可以有多个相同的解决方案。首先,可以通过广播区域特定结果并利用矿工或用户或指定节点的资源进行数据聚合来解决该问题。其次,我们可以使用主从架构,执行智能合约的节点指定其他节点搜索特定区域并将结果转发给主节点。然后主节点聚合结果并广播它们。

0x06 总结

目前,智能合约有各种限制,包括无法访问链上数据。本文通过引入一种基于 Merkle-Patricia Trie (MPT) 概念的称为搜索轮胎 (SMPT) 的新数据结构来解决此问题。这个想法是分散搜索机制并直接从智能合约访问区块链。智能合约可以使用建议的顺序和并行搜索方法来执行查询并找到满足多个参数的交易。执行顺序和并行的复杂度使用 SMPT 的搜索查询分别为O(N) 和 O(N/k),其中 N 和 k 是块和区域的数量。实验结果表明了所提出的方法在延迟和空间要求方面的效率。此外,我们通过分析区块链的交易历史进行案例研究,以选择最佳服务提供商。

未来,我们打算通过合并新的数据结构来提高搜索复杂性,并评估其在实际应用中的性能。我们还想建立一个遵循搜索机制的概念验证区块链,并为区块链社区做出贡献。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

【论文笔记15】以太坊智能合约去中心化的链上数据访问 的相关文章

  • 【基础知识】什么是哈希冲突?

    1 什么是哈希表 哈希表 Hash Table 是一种数据结构 它可以快速地在大量数据中查找 插入和删除时数据 哈希表通过使用哈希函数将键 Key 映射到一个位置 然后在该位置存储或查找数据 哈希函数的作用是 将键转换为一个整数 这个整数通

随机推荐

  • linux下服务get请求发生400的问题

    今天遇到个郁闷的问题 平时在windows系统一直跑得好好的服务 在linux下图片请求出问题了 报了个莫名其妙的400问题 虽然我也怀疑问题出在params 22cols 22 22 22id 22 6 22 参数上 但把引号怎么改都改不
  • 【笔记】QString中替换掉指定字符串

    首先使用正则表达式QRegExp匹配指定字符串 然后使用QString的replace方法进行替换 QString originText KobeBryantGigiAitch QString searchText Bryant QStri
  • ubuntu下samba 安装与配置

    为了实现在windows与Linux之间资源共享 Linux操作系统提供了samba服务 samba服务为两种不同的操作系统架起一座桥梁 使Linux系统和windows系统之间可以互相通信 下面简单介绍如何在linux上添加和配置samb
  • 算法---分治策略(快排)

    分治策略之快速排序 快速排序是对冒泡排序算法的一种改进 快速排序在面试过程中被提到的概率还是很大的 本文章我将介绍一下有关快速排序的一些问题 算法思想 1 指定一个定界值 通过该值会将数组分成两部分 2 将大于定界值的数据都放在右边 小于等
  • LeetCode 3. 无重复字符的最长子串

    LeetCode 第三题 无重复字符的最长子串 难度中等 给定一个字符串 s 请你找出其中不含有重复字符的 最长子串 的长度 示例 1 输入 s abcabcbb 输出 3 解释 因为无重复字符的最长子串是 abc 所以其长度为 3 示例
  • mysql中如何统计某字段里某个字符的个数

    如我的表order里有一个字段order num 里面存的是一些订单号 形式如 od 135484315315431541541 现在我要统计这个订单号有多少个8 如出现4个8就算中奖 请问如何把这些数据查找出来 select length
  • 查看Redis信息和状态

    redis cli连接服务器后 使用info命令查看Redis信息和状态 info 其中memory段显示了redis的内存使用状态 INFO section 以一种易于解释 parse 且易于阅读的格式 返回关于 Redis 服务器的各种
  • ESP32 模拟键盘的简单操作 (ESP32 for Arduino)

    本来是以前做过的ESP32项目 但是想拿来用在别的项目上时发现找不到了 所以重新写一下这个项目 记录一下 首先说明 使用ArduinoIDE 模块型号为esp32 wroom 32 库文件链接 https github com T vK E
  • 4sum

    基本的 穷举前面的数的组合 后两个数夹逼法的算法 O n 3 1 排序 2 主循环穷举前两个数的组合 保证数组至少剩下2个数 i 0 i
  • ssm毕设项目动态个人网站8j9pz(java+VUE+Mybatis+Maven+Mysql+sprnig)

    ssm毕设项目动态个人网站8j9pz java VUE Mybatis Maven Mysql sprnig 项目运行 环境配置 Jdk1 8 Tomcat8 5 Mysql HBuilderX Webstorm也行 Eclispe Int
  • 2022年国内十大低代码平台盘点,哪个值得一试?

    编者按 火爆的低代码平台究竟是什么 它有什么特殊的魅力一直吸引着大众的注意 本文将带你走近低代码 盘点国内典型的十大低代码平台 概要 1 什么是低代码平台 2 国内的低代码平台盘点 3 选型低代码平台时需要注意什么 什么是低代码平台 低代码
  • Python+OpenCV手势识别Mediapipe(基础篇)

    Python OpenCV手势识别Mediapipe 新手入门 前言 项目效果图 认识Mediapipe 项目环境 代码 核心代码 视频帧率计算 完整代码 项目输出 结语 前言 本篇文章适合刚入门OpenCV的同学们 文章将介绍如何使用Py
  • 《Spring源码深度分析》第2章 容器的基本实现

    目录标题 前言 一 容器的基本用法 1 创建一个简单的Spring项目 2 功能分析 3 spring beans模块 1 核心类 DefaultListableBeanFactory a 容器加载相关类图 b XmlBeanFactory
  • 在Unity 2019.3中更快地进入播放模式

    Play Mode is at the core of what makes Unity fun to work with But as your projects get more complex it can take a while
  • C语言基础入门48篇_32_指针铺垫知识:计算机分级结构(CPU<-->内存<-->硬盘、程序存储在硬盘,运行程序时,操作系统将程序拷贝到内存,通过总线读取内存数据)

    1 计算机的体系结构 计算机采用的为分层结构 主要分为两种结构 冯诺依曼体系结构 绝大多数电脑的结构 哈佛体系结构 虽然存在不同的结构 但主要的结构均采用以下三种的层次 2 程序运行时各个层次作用 1 CPU是计算的核心 用于解析机器码和执
  • HTTP 错误 500.19 - Internal Server Error 错误代码 0x8007000d

    HTTP 错误 500 19 Internal Server Error 无法访问请求的页面 因为该页的相关配置数据无效 web config 里的红线框起来的要去掉 查看链接地址 https support microsoft com z
  • 用户态文件系统fuse学习

    FUSE概述 FUSE 用户态文件系统 是一个实现在用户空间的文件系统框架 通过FUSE内核模块的支持 使用者只需要根据fuse提供的接口实现具体的文件操作就可以实现一个文件系统 在fuse出现以前 Linux中的文件系统都是完全实现在内核
  • Zabbix 系统监控(二)Linux 系统监控

    windows 系统硬件信息获取 linux 系统监控 linux 系统硬件信息获取 5 windows 系统硬件信息获取 本文通过在 OS 操作系统层面上 主要获取 windows 服务器下 CPU 信息 内存信息 硬盘信息 操作系统 服
  • spring 生命周期

    spring 生命周期 IOC容器 1 加载配置文件 2 资源定位 3 资源解析 4 生成BeanDefinition元信息 5 通过工厂把BeanDefinition加载到容器中 初始化bean实例 由spring产生的bean默认是单例
  • 【论文笔记15】以太坊智能合约去中心化的链上数据访问

    原文作者 Mohd Sameen Chishti Farhan Sufyan and Amit Banerjee Member IEEE 原文标题 Decentralized On Chain Data Access via Smart C