Graph:区块链数据的索引协议

煤油灯科技2022-09-23 09:48

比特币及其底层技术区块链近年来变得流行起来。区块链旨在促进无需中央机构的安全分布式平台,被誉为与大数据、云计算和机器学习一样强大的范式。

区块链融合了来自各个领域的新颖思想,例如公钥加密和分布式系统。因此,读者经常会遇到仅从某个角度解释区块链技术的资源,给读者留下比以前更多的问题。

我们将提供有关区块链的整体观点。从简短的历史开始,我们将给出区块链的构建块,并解释它们的相互作用。由于graph挖掘已成为其分析的主要部分,我们将详细阐述区块链技术的graph理论方面。我们还专门讨论了区块链的未来,并解释了智能合约和去中心化自治组织等扩展将如何运作。

在不假设任何读者专业知识的情况下,我们的目标是提供区块链技术的简洁而完整的描述。

1 区块链

简单来说,区块链是一个设计安全的分布式数据库。它是由不知名的作者Satoshi Nakamoto在2008年提出的[37]。区块链由无需中央机构即可验证和确认的交易块组成。该技术已通过其在数字货币比特币中的使用而得到普及,其中每笔交易本质上都是金融交易。

由于区块链的起源始于比特币,因此很容易将两者混淆。大多数人将比特币和区块链互换使用。

它始于比特币,但在许多新领域都得到了使用(参见Mattila [31]的第3节)。公司已经创建了区块链应用程序,从跟踪钻石的监视器到在全球分销食品的网络。近年来,IBM的Hyperledger Fabric [24]等知名科技公司推出了基于区块链的商业产品。另一个流行的区块链应用程序以太坊进一步推动了这种日益增长的兴趣。

2 简史

比特币代表了许多人和组织为创建在线数字货币所做的努力的结晶。早期著名的货币是来自Chaum的ecash和来自Dai的b-money。直到Nakamoto[37]的开创性比特币论文,多次数字货币似乎终于成功地创造了一种可行的支付方式 [21]。受到法律法规的阻碍,但主要是由于技术缺陷,这些货币都没有扎根。然而,每一次失败都让数字爱好者从经验中吸取教训,并提出一个新的构建块,以实现一种可行的货币。

从一开始,数字货币就遇到了几个基本问​​题。一个主要障碍是需要一个中央机构来跟踪用户之间的数字支付。发明数字货币的公司提议自己成为中央当局。从某种意义上说,货币并没有消除金融机构,而是试图取代它们。这种方法从未受到关注。

中央权威方法的替代方法是使用分布式公共分类帐来跟踪用户余额;每个用户存储所有用户的帐户余额。尽管理论上听起来不错,但这种解决方案是不可行的,因为有关交易的信息无法以快速可靠的方式进行数字传输。网络有问题,恶意用户试图从关于余额的谎言中获益。事实上,这种方法的问题,被称为拜占庭将军问题,已经在分布式系统中得到了很好的研究[28]。

虽然中央权威问题仍然是一个问题,但在不相关的垃圾邮件检测领域中,为一个非常不同的目的开发了一种称为HashCash的解决方案[4]。电子邮件提供商存在接收过多垃圾邮件的问题。即使可以分析电子邮件并将其标记为垃圾邮件,这也会浪费系统资源。

研究人员正在寻找在不使用太多资源的情况下检查垃圾邮件的方法。

HashCash提议在电子邮件发件人和电子邮件提供商之间达成一项协议。电子邮件发件人的任务是对每封电子邮件进行计算,并将计算证明附加到电子邮件中。计算本身被设计为耗时,而检查证明很容易。电子邮件提供商接受具有有效证明的传入电子邮件,并且可能会丢弃所有其他电子邮件而不对其进行分析。这种方案称为工作量证明。

请注意,电子邮件发件人仍然可以创建垃圾邮件、计算其证明并发送它。但是,工作量证明使得发送太多此类电子邮件变得过于困难。

Nakamoto使用工作量证明来阻止区块创建有两个原因。首先,它使在街区上撒谎变得更加困难;矿工需要花费相当大的力量来开采一个区块。其次,创建新区块所需的时间使网络能够就交易达成共识。此外,每个块都包含有关前一个块的信息,将所有信息整理到一个不可变的链中。这个区块链被称为区块链。

比特币的流行带来了大量替代数字货币。最著名的是莱特币,这些山寨币建议在区块创建频率和工作证明等方面对比特币进行修改。更根本的变化来自与数字货币无关的产品。具体来说,以太坊被设计为去中心化和民主化互联网的“世界计算机”;由志愿者运行的由数千台相连计算机组成的网络。我们将在第4节讨论这些改进。

3 区块链的构建块 

3.1 地址 

本质上,区块链地址是由公钥创建的26-35个字符的唯一字符串。 比特币使用两种地址:

  • 支付到以 1 开头的 PubkeyHash 地址,如1Pudc88gyFynBVZccRJeYyEV7ZnjfXnfKn。
  • 支付到以 3 开头的 ScriptHash 地址,如3J4kn4QoYDj95S3fqajUzonFhLyjjfKjP3。

最常见的(我们甚至可以说是标准的)类型是Pay to PubkeyHash,其中使用单个私钥来花费从交易中收到的比特币。支付给ScriptHash功能后来被添加以支持m-of-n多签名交易;只有在n个用户中至少有m个使用他们的私钥时,才能在接收地址花费比特币。理论上,所有n个私钥都可以属于同一个用户,但存储在不同的计算机上,从而降低了被盗的风险。在实践中,密钥属于不同的用户,Pay to ScriptHash用于创意场景,例如钱包共享或购买/出售具有更高安全性的东西。

从graph的角度来看,地址类型不会改变任何东西;两者都可以在交易中用作输入/输出地址。然而,Pay to ScriptHash 使交易的启动变得非常有趣,因为它允许用户参与支出决策。这种用户行为可以被挖掘用于各种应用,例如防欺诈和营销。

每个用户都会在网络论坛、邮件列表或其他媒体上发布其地址。地址持有人可以管理交易获得的资产(在比特币中,资产是比特币的数量),因为只有她知道与地址关联的私钥。如果没有接收方地址,则无法启动交易,并且附加到地址的错误检查代码可防止地址中的拼写错误。

需要注意的一个关键点是:公钥很容易散列以创建地址,但它是单向的。计算给定地址的公钥非常困难。

3.2 交易

交易是地址之间的资产转移。比特币允许将资金从多个地址转移到多个地址。实际上,所有输入地址都属于同一个用户,但输出地址可能属于不同的用户。对于每个输入,需要三个数据片段:i)带来输入资产的上一个交易的 ID,ii)上一个交易中输出的索引号,ii)要转移的金额。当一笔交易有多个输入时,每个输入都由关联的私钥分别签名。此签名可防止交易被更改,并证明用户已授权转移。

(a)10个地址之间的四种基本类型交易。每个绿色矩形都可以被认为是一个Satoshi。交易3向a10发送资金以支付交易费用。其他交易不收费。

(b)在两笔新交易中花费从两笔交易中收到的比特币 一个地址可以接收来自多个交易的输入,但是当它花费时,它必须完全花费每个输入。

当交易将资产发送到某个地址时,网络不知道接收方地址的公钥。

只有当收到的资产在未来被花费时,接收方才会显示其公钥,网络中的任何用户都可以对密钥进行哈希处理,以验证哈希值是否等于地址。 这是资产属于接收方的额外证明。

图 2a 显示了四种类型的交易。 每个绿色矩形都可以被认为是一个 Satoshi。 一个 Satoshi 是比特币的最小部分,1 个比特币 = 108 个 Satoshi。 事务 1 显示 1/1 输入输出事务。

事务 2-4 分别具有 2/2、1/2、2/1 输入/输出地址。 当有多个输入时,无法区分输入源。 例如,在交易 4 中,我们无法知道 a6 中的金额是来自 a2 还是来自 a3。 正如我们将在第 5 节中展示的那样,这些多个输入/输出事务创建了有趣的图。

我们特别想强调交易的两个方面。

首先,在交易中,发送方没有具体指明交易费用; 总投入和总产出之间的差额被认为是交易费用。 费用将发送到确认交易的矿工地址。 比特币交易可以不收费(即输出金额等于输入金额),但正如我们将在第 3.3 节中展示的那样,这些费用增加了交易在比特币区块链中被确认的机会。 费用还可以防止垃圾邮件交易充斥网络。 在图 2a 中,只有交易 3 支付了费用。 这与地址 a10 的边缘一起显示。

其次,一个地址可以接收来自多个交易的转账,这些交易的输出可以单独使用。但是,社区的做法是在一次交易中花费所有输入。例如,在图2b中,a13从交易5和6接收转账。a13然后在交易7和8中花费两个Satoshis。这是可能的,因为每个Satoshi在不同的交易中收到。现在考虑图2a中的a5。它还从交易4中收到了两个Satoshi,但它必须在交易3中花费两个Satoshi。如果它只发送1个Satoshi,则另一个Satoshi将作为交易费用,任何未花费的金额都会丢失。在实践中,当用户必须花费所收到金额的一小部分时,它将剩余余额发送回其地址,或者更好的是,创建一个新地址并将其发送到那里。

对于普通用户来说,手动创建交易可能过于繁琐(详见righto.com2。)。公司创建了称为在线钱包的网站,允许用户在不处理交易细节的情况下发送、接收和交换比特币。

3.3 验证和确认 

在介绍了地址和交易之后,我们现在将注意力转向区块链,特别是比特币如何使用它们。

比特币等数字货币有两个主要问题需要解决:支付验证和支付确认。

支付验证意味着创建一种机制来验证,1) 消费者有必要的余额进行支付,2) 消费者想要支付指定的金额。这类似于验证某人想用真实的美元钞票支付50美元。用户出示其公钥(以表明该地址属于她)并用其私钥签署签名(以确认金额)。该交易还将带来该金额的过去交易列为输入。例如,在图2b 中,交易8列出其输入来自交易6的输出。

这些措施验证用户有余额,并且想要付款。在理想情况下,在点对点系统中,一旦花费了一笔金额,每个人都会看到交易并记录新的余额。否则,消费者可以使用相同的比特币进行多次支付。这个问题被称为双花问题。

实际上,网络有问题,交易的消息可能永远不会到达某些用户。此外,用户可能是恶意的并在余额上撒谎。由于这些问题,用户可能永远无法就谁拥有多少比特币达成共识。任何付款都存在欺诈风险。 这个问题被称为拜占庭将军问题[28]。正如我们在前面第2节中提到的,早期的货币使用中央政府来解决这个问题,但他们的徒劳无功只能用公司取代银行。

Nakamoto提出了一个独特的解决方案来解决双重支出问题。比特币使用分布式公共分类账,其中包含时间戳和ID区块,这些区块又包含许多交易。每个区块都携带有关于前一个区块的信息(即区块哈希),以便用户可以跟踪区块链如何及时增长。块有一些限制:由于在对等点之间传输大块会阻塞网络,比特币将块大小限制为1MB。作为未来的改进,隔离见证概念被提出以从块中排除交易签名,以便更多交易可以放入一个块中。当新用户加入网络时,从对等点下载整个链,从第一个块开始,所有块和交易都由用户验证。因此,更新区块链需要相当长的时间。

通过称为工作量证明的机制,块创建被限制为每十分钟一个(这更像是一个愿望而不是规则)。每个块都很难创建,但一旦创建就很容易确认。工作量证明需要通过反复试验找到一个称为随机数的 32 位数字。从某种意义上说,它类似于买彩票中了彩票。使用更多的计算能力会增加找到数字的概率,但不能保证它。目前的困难是需要大约1020次尝试才能找到有效的nonce值。致力于寻找已确认区块的用户称为矿工。

工作量证明需要以下步骤:每个矿工从其对等方处接收等待确认的交易列表。每个矿工的列表可能不同。矿工选择其中的一些来包含在一个区块中。在这样做时,它可能更喜欢支付更高费用的交易。首先,将许多块特定的数据片段连接起来,例如块的时间、前一个块的哈希和包含的交易的特殊哈希值。然后在每次试验中,将不同的随机数附加到字符串的末尾。将此字符串的SHA-256哈希值与难度进行比较。 如果哈希值小于难度,则称用户挖了一个块。

图3. 图1中给出的交易的toy区块链。每个区块被限制为有两个交易和coinbase交易(此处未显示)。

难度是一个全局确定的值,根据找到最后一个2016块所需的时间定期调整。理论上,比特币要求一个区块必须花费大约10分钟,因此2016年的区块必须花费两周时间。但是,根据有多少矿工,可能需要多于或少于预测的2周。新的难度值相应增加或减少,大约每块10分钟。到目前为止,该值实际上已经下降了多次。

一旦矿工找到一个块​​b,她就会将b发送给网络中的对等点,并希望它被包含在链中。随着关于b的信息在网络中传播,用户更新他们的链并将b设置为最新块。一旦收到关于这个新区块的通知,矿工就会停止他们正在进行的计算。如果更改,他们会更新难度,并删除已包含在b中的交易。此外,矿工用b的哈希改变前一个区块的哈希,并恢复他们的挖掘工作。

链的第一个区块,称为Genesis区块,由Nakamoto开采。无论是否矿工,系统中的用户都将最长的链视为有效的区块链。

在某些情况下,关于区块发现的消息可能会较晚到达某些用户。与此同时,另一个矿工可能会想出一个新区块。在这种情况下,用户会收到两个从前一个块分叉的替代块。在主区块链中,这些分叉开始竞争。当矿工选择一个区块进行构建时,需要“最大努力”的分叉将成为主链。如果两个叉子的难度相同,则最长的链最努力。尽管最后一个区块可能会改变,但较长的分叉并不常见 [29]。图3显示了如何从我们在图 1 中给出的交易中创建块。最初假设最新的块是块5-2(即链 ...,5-2)。 假设区块 5-2 附加到区块链后,区块 6-1 和 8-4 同时被挖出。此时,用户和矿工可以选择任意分叉,继续努力。当矿工a在 Chain ..., 5-2, 6-1 上构建时,矿工 b 在 Chain ..., 5-2, 8-4上搜索新区块。

毕竟,两条链的长度相同,选择一个而不是另一个是一种策略。接下来,矿工a也开采了区块8-4,因此分叉变为Chain ..., 5-2, 6-1, 8-4。请注意,从图1中可以看出,区块6-1和8-4包含不同的交易,因此它们可以一个接一个地被挖掘。此时,系统中的其他矿工看到有两个分叉,Chain ...,5-2、6-1、8-4 最长。他们选择建立在这条较长的链上,否则他们冒着将资源浪费在较短的链上的风险。一旦网络矿工开始在Chain ..., 5-2, 6-1, 8-4上构建,矿工b挖掘更长分叉的机会变得更加渺茫。没有规则阻止矿工b继续使用其分叉。区块链假设这种努力将是徒劳的,因为网络的其余部分将创建一个比矿工b长得多的链。

当一笔交易出现在一个区块中时,它暂时被认为是确认的。在实践中,经过六次确认,即六个区块,交易被认为是安全的。

通过工作量证明,比特币开发人员确保故意创建一个分叉以最终取代主区块链变得非常昂贵;恶意用户必须比网络中所有其他矿工加起来更快地挖掘新块。 这意味着恶意矿工必须持有至少51%的所有挖矿资源,这是不可能的。在日蚀攻击中,单个用户可能会通过接管网络中的所有对等方而被骗。出于诈骗目的,可以为孤立的用户提供不同的分叉。

尽管交易是由我们迄今为止提到的机制保护的,但恶意用户已经找到了多种方法来欺骗钱包和用户(参见 [14] 中关于所有诈骗的出色调查)。一个非常简单的案例涉及诈骗比特币交易网站的交易延展性。 该骗局的运作方式如下:虽然交易无法修改,但交易ID不受保护,即它们是可延展的。 用户在比特币交易所打开钱包并购买比特币。用户命令钱包将比特币发送到一个地址。 一旦交易所发布交易以发送用户的比特币,用户自己就会捕获交易,修改id并将其重新发送到网络。现在,网络包含同一交易的两个副本。如果矿工在一个区块中包含虚假交易,那么真正的交易将被所有矿工拒绝,因为这些比特币已经用完了。

交易所看到该交易从未被包含在一个区块中,并且可能会退还恶意用户。通过多次重复这种攻击,攻击者在2014年对区块链网络造成了拒绝服务攻击。延展性攻击不仅是严重威胁,更是令人讨厌;他们迫使用户跟踪以数十亿计的单个交易输出。这给整个网络带来了压力。

在交易中,我们简要提到了确认区块的矿工会收到交易费用。交易本身不需要支付费用,矿工也可以将非支付交易放在一个区块中。但是,保留费用会增加被捡起的机会。事实上,随着比特币收到更多交易,等待队列变得更长。对于未来,一个可能的补救措施是将块大小从1MB增加,以便块可以包含更多交易。同样,可以放宽10分钟规则,并且隔离见证允许在一个区块中挤压更多交易。

除了交易费用外,比特币协议还为每个开采的区块创建了采矿奖励。这种奖励交易被称为coinbase交易,通常是区块中的第一笔交易。早期,当Nakamoto自己完成所有挖矿时,coinbase交易甚至是一个区块中唯一的交易。

从每块50个硬币开始,每210K块减半,到2022年,创建的比特币总数将超过1900万。这个几何系列的奖励收敛到最多2100万比特币 。最终,当奖励变得非常少时,预计交易费用将为矿工提供足够的激励。

4 区块链的变化和改进

随着比特币的流行,它的局限性也变得更加明显。新一代区块链从这些限制中吸取了教训,并比比特币有所改进。许多其他人为各种用例采用了底层区块链概念。结果的范围从微小的调整到革命性的想法。在本节中,我们将介绍最重要的部分。

4.1 资产超过加密货币

比特币使用交易来转移资产:比特币货币。一笔交易由地址、资产的哈希值和一些其他数据片段(例如时间)组成。关键是资产由其哈希值表示。这也意味着任何可散列的数字资产都可能出现在交易中。法律文件、合同、协议、遗嘱和许多其他类型的资产可以存储在区块链中。然而,这些基于资产的区块链仍需要使用货币来促进区块挖掘。例如,虽然以太坊区块链不是数字货币,但它使用了一种名为以太的货币。除了数字化资产之外,一些公司还为钻石等物理对象提供ID,并使用区块链及时跟踪它们的移动(示例参见[31]的第3.4节)。从graph的角度来看,交换资产的扩散将创建一个由多层网络[9]最好描述的网络,其中同一组节点由不同性质的边连接。一个例子是一个城市的区域被公共汽车、电力和地铁边缘连接起来。在区块链上,边缘将是各种资产的交换。 在全球区块链上,这个多层网络将包含有关资产如何移动、易手和增加/减少彼此需求的宝贵数据。

4.2 智能合约

创建了一个新的区块链以太坊,不仅可以执行交易,还可以执行包含带有条件和规则的交易的合约。那些所谓的智能合约是用专有的编码语言编写的,并被每个人都放到一个网络地址上来查看和分析。一个类比是存储在数据库中的MYSQL片段。合约清楚地定义了可以使用的功能,并保证按照指定的方式工作。一个简单的例子是资产A和B的兑换服务,交易顺序如下:

图4. 四个地址和一个合约(它也是一个地址)。该合约有四个功能和两个决策框。根据a2使用的功能,甚至转移资产的数量,a1或a4和a5都可以链接到a2。

(1)Alice写了一个包含存款、提取和交换三个功能的合约,并将其放入一个地址。交换表示1B = 5A,它拒绝资产分数。爱丽丝用她的私钥签署合同。

(2)Alice 向合约地址存入100As。该交易记录在区块链中。

(3)Bob有Bs,想用它们交换As。Bob向合约地址发送20个B。

(4)合约自动接受20个B并向Bob的地址发送100个As。

(5)Alice使用draw函数,从合约中获得20个B。

尽管Alice编写了合约,但在将B发送给Bob之前,该合约不需要Alice的任何参与。即使Alice是恶意的,她也无法干预,拿走Bob的B并消失。实际上,合同更复杂,并且存在误用。正式验证合同以确保它们按预期工作是一个发展中的研究领域 [6]。

智能合约为graph分析带来了一个非常有趣的概念。可以将合约视为未来边缘的模板。一旦节点通过合约创建了一条边(例如,步骤2),该合约将创建更多预定义但受条件限制的边(例如,步骤4)(如果Bob发送的B少于5个,则交换将被拒绝 )。图4显示了这样的合约及其创建的边。诸如此类的边缘模板会让人想到级联行为。如何通过计划来操纵graph以促进或限制级联行为?

除了以太坊,智能合约有望在物联网中发挥重要作用[13]。一旦被数十亿连接设备使用,智能合约将创建大量的graph数据。

4.3 去中心化自治组织

以太坊的智能合约使得创建一个系统成为可能,在该系统中,参与者可以相互签订合同,而事项、决策和决策结果可以记录在区块链上,供所有人查看。

这激发了社区倡导以太坊可用于创建在线民主的未来。

这种乌托邦式的未来在去中心化自治组织(DAO)一词下进行了讨论。

创造这样一个未来的第一个尝试是DAO项目,该项目旨在创建一个在线投资者基金。加入的成员可以对投资决定进行投票,并通过他们的投资赚钱。 由于一次黑客事件,DAO成为了一次痛苦的经历,损失了5000万美元,并导致以太坊一分为二。我们将在4.4节提到这个故事。

DAO项目在社区中留下了苦涩的味道,阻碍了新DAO的发展。如果没有一个非常成功的例子,对于DAO是什么以及它应该如何利用人类、机器人、合同和激励机制,还没有达成共识。一些人认为,除了创建合同并将其放到网上,偶尔为DAO提供服务(并获得报酬)之外,人类不应该参与其中。其他人则使用一些人作为策展人,他们将在投票前手动过滤传入DAO的提案。我们可以补充一点,即使是DAO一词也有不同的含义。但是,考虑到区块链本身不需要共识,就DAO条款达成共识可能要求太多。

相反,一些有影响力的开发人员就所有DAO的共同点发表了意见。例如,以太坊的创建者提到了三点[12]。

(1) DAO是一个生活在互联网上并自主存在的实体。

(2) DAO 严重依赖雇佣个人来执行自动机本身无法完成的某些任务。

(3) DAO 包含某种以某种方式有价值的内部属性,并且它有能力将该属性用作奖励某些活动的机制。对于DAO应该如何运作,但对于它们的影响力,意见不一。考虑一下Hayes [23]中的这个例子。DAO购买了一辆汽车,并将其合约放在以太坊上。DAO投资者可以投票(无需管理)将汽车送到达拉斯沃思堡机场工作。骑手在区块链上支付汽车费用,汽车从汽油、税收、维护和保险费后剩下的部分支付给投资者的红利。这个DAO可以购买新车,决定它们的工作地点,甚至将它们连接起来一起规划路线。所有这一切都可以通过以太坊实现。

4.4 分叉问题 

简短阅读很快就会发现,大多数区块链技术都是彼此的分叉(参见mapofcoins.com的地图)。区块链使用软分叉在相同的主链上继续,同时改变底层技术的一些方面。 这些被认为是改进或扩展。软分叉是向后兼容的,反映了社区对网络应该如何发展的共识。另一方面,硬分叉会在主链中造成分裂:主链的两个版本由不同的人群维护。从某种意义上说,它创造了一种新的货币、技术或社区。最著名的硬分叉发生在2016年的以太坊项目,原因是DAO黑客攻击。

一名黑客从DAO项目中窃取了 5000 万美元,该项目已从社区筹集了1.5亿美元用于概念验证投资者基金。DAO因编码错误而被黑客入侵,导致同一投资可以多次退款。黑客在社区实时观看盗窃时无助地耗尽了DAO。许多开发人员希望回滚交易以没收被盗金额。不同意的用户拒绝回滚,并坚持现有的区块链。这创建了两个版本:以太坊和以太坊经典。这个分叉开始了关于如何治理以太坊的讨论。该准则是法律支持者声称应接受任何符合区块链协议的行为;盗窃一旦发生,就不能通过回滚交易来惩罚。有关法律方面的信息,请参阅Abegg [1]的文章。2017年8月,由于隔离见证扩展,比特币面临自己的硬分叉。比特币分为两条链:比特币和比特币现金。

4.6 区块链的可扩展性问题 

比特币预计每10分钟开采一个区块。它还规定了1MB 的块大小,从而限制了24小时内可以处理的交易数量。结果,比特币每秒只处理7笔交易。另一方面,支付方式VISA平均每秒处理2000笔交易(有关详细信息,请参阅比特币维基 [8]。)

其他一些硬币的大小和速度限制已经放宽; 例如,莱特币每 2.5 分钟开采一次区块。 比特币社区一直在讨论增加交易数量的方法。2017年通过了隔离见证 (SegWit) 扩展的解决方案。 隔离见证从区块中移除签名,从而将区块大小减少 60%。 进一步的改进将需要增加块大小本身,这在社区中仍然存在争议。 有关详细信息,请参阅比特币 wiki [7]。

4.7 Hyperledger Fabric 

根据定义,任何用户都可以加入区块链,并且所有交易都是不可变的和公开的。对于公司环境,这种透明度意味着竞争对手可以了解公司财务和买卖关系。创建Hyperledger项目是为了在工业环境中使用区块链。在许多组织的支持下,Hyperledger提供会员服务来选择区块链参与者,并使用许可甚至私有区块链。

该项目由Linux基金会主办,专注于区块链的存储、容量和可用性方面。超级账本用户可以选择自己的共识和挖掘方法。有关超级账本的更多信息,请参阅 [48]。

4.8 Proof-of-X 

对比特币的一个主要批评是,当矿工们竞相寻找下一个区块时,没有考虑到浪费了多少电力和资源。2014年,据估计,一个比特币需要15.9加仑汽油。随着越来越多的矿工加入比赛,情况只会变得更糟。 正如斯旺森所指出的,比特币实际上是一个“点对点热机”[46]。

Proof-of-X是一个总称,涵盖了区块挖掘中的工作量证明替代方案。每个替代方案都希望矿工在创建区块之前证明他们已经完成了足够的工作或花费了足够的财富。在工作量证明中,工作是挖掘计算,证明是哈希值(见第3节)。

可以摧毁一些财富(作为一种牺牲)来挖掘一个区块,而不是做一些工作。 权益证明将币龄视为财富;意味着10 × 2 = 20的财富。矿工牺牲最高财富的区块成为链中的下一个区块。一旦硬币被用作祭品,它们的年龄就变为零。硬币将不得不再次积累财富。燃烧证明更进一步,确实牺牲了代币。在该方案中,矿工首先创建交易并将一些硬币发送到“可验证不可花费”的地址。这些硬币被称为烧毁,但除了发送者之外,网络中没有人知道发送地址是无效/不可用的。一段时间后,矿工创建一个区块并显示烧毁硬币的证明。证明是一个脚本,显示地址是如何通过错误计算创建的。

烧掉最多硬币的矿工可以挖掘下一个区块。在这个方案中,只有在交易费用足够高的情况下,烧币来收取交易费用才是可行的。

如果矿工决定通过支持每个竞争分叉来博弈系统,那么由于需要计算,工作量证明变得过于昂贵。其他计划对矿工的恶意攻击没有那么有效。考虑区块链中两个竞争分叉的情况。在基于Stake或Burn的证明中,矿工可以使用相同的(已销毁或老化的)硬币为每个分叉创建块。最终,其中一个叉子将是最长的并成为主链。无论选择哪一个,矿工的区块都将在链中占据一席之地,矿工将获得费用。有关X证明方案的广泛调查,请参阅[47]的第6节。

5 区块链分析 

区块链技术已在全球范围内应用于各种场景。 随着比特币的流行,研究工作分析了网络以进行硬币价格预测。各种特征,例如平均账户余额、新边的数量和聚类系数已被用于研究工作 [20, 44]。除了特征,网络流[49]和网络[25]的时间行为也被用于预测。

网络特征研究表明,自2010年以来,比特币网络可以被认为是无标度网络[29]。交易graph的进出度分布是高度异构的,并且表现出不相称的行为[26]。网络上的活动实体经常变化,但始终存在活动实体[38]。网络中最中心的节点是硬币交换站点[5]。

在区块链上,每个硬币都由矿工铸造,并通过交易易手。 理论上,可以及时追踪一枚硬币,看看它的来源。

污点分析[15]用于查明一个货币单位是否因为它是通过盗窃或赎金等犯罪获得的而受到污染。如果一个单位的商品可以在另一个地方被同一个单位的商品交换,则该商品被认为是可替代的。例如,黄金是可替代的,因为美国的一克黄金等于俄罗斯的一克黄金。然而,比特币可能不可替代,因为由于法律问题,出售或购买受污染的硬币很困难。

每个区块链应用程序都有两层:应用程序和网络。在应用层,内容graph反映了比特币协议上的资产转移。在网络层,通信graph反映了比特币地址之间的底层P2P通信网络。

内容graph主要用于跟踪和定位被盗资产。它们也可用于营销目的。通信graph有多种用例。例如,它们已被分析以提高比特币的可扩展性。此外,内容和通信graph可以集成用于各种目的,例如定位比特币地址的真实身份。在本节中,我们将研究这些做法。

5.1 内容graph

内容graph以三种形式创建:交易、地址和实体/用户graph。图5显示了图1中给出的交易graph。本质上,交易graph[19]是非循环的;一个交易只能有一次传入边。每条边代表一个转移的资产,可以用权重表示。从genesis块开始,每个传入边缘要么是转移,要么是coinbase交易。例如,在图5中,交易1的传入边缘可能是从coinbase交易中获得的比特币。交易4和交易5之间的边是转移边。交易graph是区块链分析中最大的图。存储它们并使用它们可能非常昂贵。在分析之前使用优势集 [3] 或按权重过滤交易 [30] 是可能的方法。区块链分析始于污点分析,但很快扩大了范围。从比特币价值预测到可扩展性研究,区块链分析现在涵盖了许多主题。

地址图使用地址作为节点,并且可以是循环的。图7a显示了我们在图1中重复示例的地址图。与交易图中一样,每条边都有一个权重(即比特币数量),但地址之间可以有多个边。此外,如果将更改发送回输入地址,则该图包含自循环。 然而,在实践中,一个地址仅用于发送一次资产。作为社区规则,通常避免地址重用以防止密码攻击(地址攻击见附录)。因此,循环和多重边缘很少见。地址graph的一个主要方面是:如从a2和a3到节点a5和a6的边所示,交易中包含的所有输入地址都被认为具有到每个输出地址的边。 这使得跟踪资产如何从输入地址转移到输出地址变得复杂。

与其他不同的是,实体graph试图找出哪些地址属于同一实体。这些努力也称为用户/实体聚类。一些实体,例如Wikileaks,公开宣传其地址。其他一些地址可以在邮件列表、论坛等上找到。以用户身份公开地址可能会带来好处;如果用户已知(即可信),则来自其地址的交易可以被供应商接受,而无需等待6个区块。这些已知且受信任的地址称为绿色/标记地址。

图5. 图1中8笔交易的图表。交易在横轴上按它们在块中的出现排序(见图3)。

通常,没有明确的方法将地址链接在一起。一些作品提出了图算法来聚类用户[42]。尽管存在误报,但启发式算法已被社区和研究工作广泛使用。这些启发式方法是剥离链[34]、更改闭包[2]、使用习惯用法、传递闭包、IP聚类[39]和时间聚类[39]。

剥离链经常被用于犯罪活动,以分割资金并隐藏其来源。在剥离链中,地址包含初始数量的比特币。从初始金额中剥离少量,剩余部分发送到找零地址。这种剥离可以持续数千次,直到初始总和被分割并转移到剥离的地址。所有剥离地址都应该属于同一个实体。变更关闭遵循社区惯例,将交易中剩余的任何变更发送到支出者拥有的新地址。对于这种启发式方法,找零地址不应该出现在之前,也不应该被重新用于接收付款。在图7a中,支付a10后,a5将零钱发送给a8。a5 和a8都被认为属于同一个实体。使用习惯假设交易中的所有输入地址都应该属于同一个实体,因为只有所有者才能使用关联的私钥对输入进行签名。通过这种启发式方法,图1中的a2和a3属于同一用户。传递闭包扩展了使用习惯用法:如果一个交易具有来自ax和ay的输入,而另一个交易具有来自ax和az的输入,则ay和az属于同一个实体。Ip Clustering提出使用网络层来寻找实体集群(我们将在5.2节中关注网络层)。使用相同IP地址的比特币地址被合并。时间聚类是一种更困难的方法;它假定类似时间的类似转移意味着地址由同一实体管理。

(a) 具有水平时间顺序边缘的地址graph。请注意,a13从不同块中的两个地址接收输入。

(b) 具有显示为超级节点的地址所有者的实体graph。该图表可帮助我们查看变更转移。

从本质上讲,所有用户聚类启发式都容易出错。 一些社区实践使问题进一步复杂化。例如,coinbase.com等在线钱包在其客户之间购买/出售硬币而不使用交易;通过将关联的私钥转移给另一个用户来更改地址的所有权。尽管与地址关联的用户发生了变化,但区块链中没有任何记录。

另一种防止地址与用户匹配的措施称为CoinJoin[32]。关键思想是使用混合来自多个用户的输入的中央服务器。 只有服务器知道输入和输出之间的映射。错误地,使用习惯用法启发式将所有这些输入地址标记为属于同一用户。依赖中央服务器是CoinJoin的一个主要弱点,但有人尝试开发可行的替代方案[43]。我们期待CoinJoin相关的混合技术在未来得到广泛应用。地址之间的比特币流动可以量化[18],并且在[15]中提出了检测可疑混合的纯度措施。有关比特币洗钱、混合和共享比特币发送的限制,请参阅 [36]。

硬币在犯罪中的使用越来越多,需要在地址后面找到用户/实体。例如,加密硬盘的勒索软件使用比特币作为支付赎金的媒介。Mt.Gox等在线钱包中的硬币也被盗(即转移到小偷的地址)。Elliptic和Numisight等公司开发了区块链graph分析工具来跟踪这些与犯罪相关的硬币。在研究工作中,BitIodine [45]和McGinn [33]提供可视化工具。GraphSense [22]是一个分析平台,还提供交易graph上的路径搜索。

有这么多关于识别地址背后实体的工作,区块链的隐私研究也成为一个有趣的话题。有关比特币用户隐私的最新研究,请参阅[2]。

5.2 通信graph

在其核心,比特币维护一个点对点的架构 [16, 17]。比特币对等点彼此创建持久的TCP通道并中继交易。每个对等点最少寻找8个,最多125个对等点。它可以接受来自更多对等点的连接请求。 还可以询问和检索对等点的邻居。

比特币是一个非结构化的网络;集中式目录不存在,网络拓扑不受管理或控制。同伴随心所欲地加入和离开。如果没有连接到许多对等点的超级节点,网络的直径会随着新用户的增加而增加。尽管具有弹性,但这会导致网络无法很好地扩展;网络扩展可能会导致对等点之间的通信延迟。更糟糕的是,网关和自治系统的使用意味着并非所有对等点都可以直接连接 [17]。因此,新确认区块的信息需要更长的时间在网络中传播。这可能会在区块链上产生短期分叉。已经提出了分层模型来缓解这些问题[40]。

图8. 包含七个对等点和每个对等点的三个rickle交易的图表

即使不参与挖矿工作,对等节点的主要作用是中继正确签名和有效的交易。对等点定期向其对等点发送交易的id(即散列)。如果之前没有看到交易哈希,则从中继对等方请求其详细信息(即交易的输入/输出等)。该机制还用于将新交易注入系统。原始对等点通过将其哈希发送给其他对等点来宣传自己的交易。但是,这会使原始对等方处于风险之中;通过观察交易在网络中的中继方式,可以定位原始对等点。有关交易中继的详细分析,请参见[27]。

比特币使用交易的Trickling来改善隐私:对等方随机选择并中继其池中仅1/4的交易。另一方面,自己的交易总是被涓涓细流。

图8显示了当滴流无法隐藏原始对等点时。图中,交易t3t_3源自u2u_{_{_2}}。u4u_{_{_4}}连接到u2u_{_{_2}}的所有对等点。当它跟踪所有的涓涓细流时,u4u_{_{_4}}将知道t3t_3一定来自u2u_{_{_2}}。

Trickling使得定位原始对等点变得更加困难,但它也保留了一些交易,从而增加了中继的延迟。这种不需要的延迟在事务中是可以容忍的,但在块中是不能容忍的。块总是在到达后立即被中继。尽管如此,Donet等人报告称“区块交通非常混乱,最好的20个节点(就交易和区块传播速度而言)负责中继超过70%的区块和交易”。

在比特币网络上,第一次听到交易的对等点很有可能成为原始对等点,但这种启发式方法并不总是正确的[27]。尽管如此,研究工作发现可以成功猜测交易来源。

一个令人担忧的迹象是,比特币网络具有非常高的节点。虽然一个对等点应该有最少80个,最多125个对等点,Millet等人发现“极高程度的节点会随着时间的推移持续存在”。这些节点拥有比平时多80倍的对等节点,可用于发现交易来源。一种可能的解决方案是对底层P2P协议进行代价高昂的重新设计,并保证匿名[10]。


---煤油灯科技victorlamp.com翻译整理---

完整附件下载:Blockchain A Graph Primer.pdf

你可能也喜欢这些文章

科技互联网,科技,资讯,动态,洞察,量子,计算,AI,人工智能,机器人,区块链,Web3,分布式,操作系统,OS,芯片,视频,深度,论文