区块链 PlatoBlockchain 数据智能上的交付与付款。 垂直搜索。 哎。

在区块链上交付与付款

区块链如何解决书中最古老的问题

人与人之间的贸易与人类本身一样古老。 始于穴居人奥格对穴居人乌格说:“我给你岩石,你给我浆果”。 但是交易带来了一个基本问题:它需要 信任。 是什么阻止了Ogg用石头砸Ugg,然后抓住了这两个岩石 浆果在逃跑之前? 我们如何将口头交换协议转换为确保双方信守承诺的执行机制?

以现代为例,几年前,我在二手市场上出售了一辆汽车。 我在互联网上找到了一位买家,我们亲自见面,他对汽车进行了测试,我们达成了价格协议。 因此,他去银行取了一张银行本票,实际上是一种更紧凑的现金形式。 我们一起走到邮局,在那里我可以签名并提交正式的政府表格,以转移汽车的合法所有权。

因此,我们站在邮局的窗户旁,陷入了尴尬的僵局。 支票仍在他的口袋里,我拿着签名的表格。 我们几个小时前见了面,没有理由互相信任。 我先交表格然后希望他给我支票,而不是逃跑吗? 还是他交给我支票然后希望我填写表格? 无论哪种方式,都会使自己遭受背叛的风险。

然后我突然意识到,我应该不再担心,只需提交表格即可。 为什么? 因为接下来可能发生两件事之一。 买方要么将支票交给我,在这种情况下,每个人都很高兴,交易就完成了。 但是,如果他逃跑了怎么办? 在这种情况下,邮局业务员将看到并撕毁我刚刚给他的表格。 宾果游戏,我们有一个安全的交流。

你看到那里发生了什么吗? 通过使用中介机构(在本例中是邮局业务员)解决了我们的难题。 业务员确保发生公平交易,或根本不交易。 而且,不仅任何中介都可以提供此服务。 它必须是双方都信任的人。 对于政府拥有的邮局的雇员而言,这源于我们对政府本身的信任。 如果邮局职员可以行贿,我或买方都可以设计一个情况,使我们最终只能用现金和汽车。 确实,在 很多国家,这样的腐败会极大地浪费繁荣。

穴居人和汽车是一回事,但让我们将重点转移到金融世界,在这个世界中,交易起着至关重要的作用。 中心角色。 当然,银行不会付钱给员工,让他们用别人的股份逃跑。 但是,安全地交换金融资产仍然是一个重要的问题,因为交易参与者无法遵循诺言的方式很少。 例如,一方可能破产,或者市场条件的突然变化可能阻止他们担保资产。 他们可能会受到文书错误或 会计欺诈 在另一个交易对手。

由于这些“结算风险”,大多数金融交易都使用 交付与付款 (DvP)。 这只是上述邮局流程的一个幻想术语。 DvP确保,如果交易的一方没有履行承诺,另一方可以保留他们提供的资产作为交换。

在金融领域如何实现交付与付款? 您通过可信的中介机构猜到了。 这些可能是其他银行,清算所或 中央证券存管处。 由于当今大多数交易都是数字化进行的,因此这不是管理实物证书或现金转移的问题。 相反,DvP是通过中介同时更新其数据库中的许多记录和/或将指令传输到其他机构来实现的。

通过区块链交付与付款

谈论数据库将我们带到了区块链的主题。 区块链允许分类帐或数据库在多个参与方之间共享和同步。 但是,与常规数据库不同,区块链数据库即使彼此竞争激烈,也可以由多个用户安全且直接地进行修改。 如果您从事公司IT工作,则可能需要考虑一下这句话的含义。

要了解交付与付款在区块链上如何工作,我们需要首先了解比特币的交易模型。 这里应该注意,其他区块链设计使用不同的交易模型,稍后我们将详细讨论这些差异。

比特币交易具有一组输入和输出。 每个输入都连接到上一个交易的一个输出,来自前一个输出的所有比特币都将流入。然后,根据其中写入的数量,将交易输入中的比特币重新分配到其输出中。 此外,每个交易输出均包含其新所有者的公共标识符,所有者为此拥有相应的私钥。 比特币交易仅在以下情况下有效:

  • 交易输入中的比特币总量大于或等于写入其输出中的数量。 任何差异都由“矿工”收取一定的费用,“矿工”在一个区块中确认交易,从而建立了一种市场机制,交易可以通过该机制竞标确认。
  • 交易由该交易“花费”的每个先前输出的所有者批准。 该批准通过新交易内容的加密签名表示。 只能使用与其公共标识符匹配的私钥来创建先前输出的签名。

这两个规则对于在非信任方之间共享的财务分类账至关重要。 没有第一个,任何人都可以凭空创造比特币。 没有第二个,每个人都可以花费其他人的比特币。 但是,我们还需要第三条规则,该规则在全球而不是在单个交易中强制执行:

  • 每个事务输出只能由一个后续事务使用。 这样可以防止称为 双重支出 将相同的比特币发送给多个接收者。

为了执行此规则,区块链包含一个有效事务的时间顺序日志,这些事务彼此不冲突,并且该日志由网络中的每个节点独立验证。

比特币交易模型可以轻松扩展以代表任何金融资产。 它可以包含资产标识符和数量,而不是包含比特币的交易输出。 涵盖比特币交易的所有规则仍然适用,从而阻止参与者(a)凭空创建资产,(b)花费他人的资产以及(c)两次花费相同的资产。 对于非加密货币资产,我们倾向于坚持投入和产出数量之间的平衡,而不是允许矿工收取差额。

那么,我们如何使用该模型来创建安全的交付与付款交易呢? 假设爱丽丝和鲍勃同意将爱丽丝的10英镑换成鲍勃的15美元。 为了方便起见,我们假设爱丽丝在一次交易输出中已经整整齐齐地坐着10英镑,而鲍勃同样也有15英镑。 (如果不是这种情况,他们可以轻松地转移资金以实现这一目标。)

首先,任何一方都要建立一个具有两个输入和两个输出的交易。 这两个输入花费的先前输出分别包含Alice的£10和Bob的$ 15。 至于输出,第一个包含Alice的标识符和$ 15,第二个包含Bob的£10。 由于两种货币的输入和输出数量均平衡,因此我们的交易满足上述第一个条件。 为了完成第二个任务,Alice和Bob现在都必须签署交易,因为它花费了属于他们每个人的先前输出。

现在可以通过将交易包括在区块链中来完成交易,但是我们仍然需要考虑双花问题。 如果爱丽丝(Alice)创建了一个有冲突的交易,将同一笔10英镑与另一交易对手交换,后者为她提供了更好的交易,该怎么办? 第三条规则在这里发挥作用,其中区块链确保每个输出只能使用一次。 如果竞争交易是在Alice与Bob的交换在区块链上后传输的,那么它根本就不会得到确认。 如果首先确认竞争交易,爱丽丝与鲍勃的交易将失败。 无论哪种方式,区块链都可以确保Alice和Bob的交易所以及其他任何交易的交付与付款。 如果鲍勃没有得到爱丽丝的10英镑,那么爱丽丝就没有得到他的15美元。

部分交易的力量

因此,区块链为我们提供了一种让两方聚在一起,建立和签署交换交易并确保其整体成败的方式。 这样就可以在共享分类帐上进行交付与付款,而无需受信任的中介机构来管理流程。 确认区块交易的矿工仍然具有一定的权力,但远不如传统的中介机构。 他们能做的最糟糕的事情是拒绝确认特定交易 全部,这并不违反DvP。 此外,如果在实际创建交易的各方之间共享采矿,则此风险将完全消失,因为每个人都将有机会确认自己的交易。

到现在为止还挺好。 但是比特币风格的区块链有更多的技巧。 回想一下,交易必须由该交易花费的每个先前输出的所有者签名。 默认情况下,此签名将锁定事务中输入和输出的完整列表。 密码学确保对输入或输出的最细微修改都会使签名无效。 遵循上面的示例,如果在Alice签署交易后Bob代替Carol,那么交易将完全失败。

但是,如果爱丽丝不在乎与谁进行交换,该怎么办? 在大多数情况下, 她为什么要在乎呢? 除非爱丽丝决心与鲍勃一起工作,否则交易中只有两个部分真正地与她有关。 首先,她将花费10英镑的产出,而不是用不同的数量或资产来支出。 其次,她从新的输出中获得15美元作为回报。 只要系统中的所有资金都是干净的,Alice都不介意这15美元来自何处,或者会发生什么事情来促进她的兑换。

也许一个聚会会伴随着$ 15并直接兑换成Alice的£10。 但也许鲍勃和卡罗尔只想换$ 7.50。 在这种情况下,他们将向交易添加两个输入,以及两个输出各收取5英镑。 或者,卡罗尔可能实际上想将15美元换成950卢布,而莫斯科的萨沙则有950卢布,并希望得到10英镑。 在这种情况下,可以进行三向交换,其中每一方仍然只关心他们自己的难题。 爱丽丝开始的事务可以以多种不同方式完成。 但是从爱丽丝的角度来看,这些都达到了给她3美元换取15英镑的相同目的,而且都使她同样高兴。

交换方案

区块链如何促进这一点? 通过部分交易和部分签名。 爱丽丝以一笔输入(她的10英镑)和一笔输出(她的15美元)开始交易。 她使用数字签名锁定了交易的这些部分,该签名指出可以添加任意数量的其他输入或输出。 她将这笔部分交易交给了鲍勃,说:“看看你能做什么”。 也许她也将其交给了Carol,以及其他潜在的对手方或企业联合组织。 这些中的每一个都可以添加自己的一对输入和输出,以平衡交换或创建更大的部分交易,然后可以再次进行交易。 无论任何人做什么,交易都只能在输入和输出资产平衡后才能执行(即通过在区块链上确认)。

区块链交易只是一小部分数字数据,因此这些部分交易可以通过电子邮件或任何其他通信介质发送。 它们甚至可以公开发布,因为潜在交易的参与者知道 区块链将照顾他们。 爱丽丝的签名确保她只有在有人给她10美元作为交换时才花费15英镑。

最后,如果爱丽丝选择停用该要约,那么她要做的就是在另一笔交易中花费相同的10英镑,最简单的方法是将其发还给自己。 因为区块链不允许将相同的输出花费两次,所以这使得她现有的部分交易毫无价值。 区块链上的所有其他参与者都将看到此消息,并停止浪费时间尝试完成交换。

从DvP到智能合约

就像我一样 以前争论过,可以将比特币式的区块链视为一种在共享关系数据库中管理同步和安全性的方法。 比特币交易和数据库交易都被原子地对待,这意味着它们整体上是成功还是失败。 类比的关键是区块链中的交易输出与数据库中的一行之间的等效性。 花费一些输出并创建一些其他输出的区块链交易与删除某些行并创建其他一些输出的数据库交易相同。 (修改现有行的数据库操作等同于删除该行并在其位置创建一个新的更新的行。这种等效性是流行的基础 MVCC 数据库中的并发控制方法,其中比特币式区块链可以看作是分布式形式。)

因此,让我们想象一下,我们的财务数据保存在一个数据库中,其中每一行包含三项信息:其所有者的标识符,资产标识符和资产数量。 区块链使该分类帐能够在参与者之间安全共享,即使他们根本不互相信任。 用数据库的语言可以确保:

  • 事务删除的行中的资产数量与其创建的行中的资产数量匹配。
  • 对于交易删除(或修改)的每一行,交易必须由该行的所有者签名。
  • 如果一个事务删除了一个数据库行,这将阻止另一个事务再次删除它。

让我们看看这些规则中的第一个,即交易必须保留资产数量。 我们可以将其扩展为“交易约束”的一般概念。 事务约束采用黑匣子的形式,它为每个事务看到两组行:(a)被事务删除的行,(b)它创建的行。 黑匣子的工作是查看这两个集合,并就交易是否有效回答“是”或“否”。 在我们的特定情况下,只有两组中的总资产数量完全匹配,它才会回答是。

一旦我们有能力应用事务约束,就可以将它们扩展为包含任何规则集。 一些示例可能是“只有在同时锁定这三个其他资产的情况下才能创建此资产的单位”或“只有在相应行报告雨量不足的情况下才能转让此资产”。 从区块链的分布式架构的角度来看,盒子内的逻辑没有什么区别,只要它能给我们对其看到的每笔交易的确定且一致的评估。

结果,交易约束可以用作限制区块链参与者可以执行的数据转换的通用方法。 这种“智能合约”的方法为 存储过程 所用 以太坊 以及 厄里斯 衍生物。 在以后的文章中,我们将在简单性,可伸缩性和并发性方面更深入地研究这两种范例的优缺点。

您还可以 在Twitter上关注我。 也可以看看: 结束比特币与区块链的辩论。

技术附录

要建立部分DvP交易,请使用 签名类型 of SINGLE|ANYONECANPAY。 如果您正在使用 多链是, preparelockunspent, createrawexchangeappendrawexchange API调用 为您照顾细节。 见 入门 上的页面提供了有关如何使用它们的简单示例。

请发表任何评论 在LinkedIn.

资料来源:https://www.multichain.com/blog/2015/09/delivery-versus-payment-blockchain/

时间戳记:

更多来自 Multichain