区块链101:交易

本文介绍了区块链中的交易概念,特别是比特币的交易机制。文章详细解释了私钥、公钥、地址和钱包的作用,以及比特币中的UTXO模型与账户模型的区别。

这是关于区块链的系列文章的一部分。如果这是你第一次接触到本系列文章,我强烈建议从系列的开始阅读。

上一篇文章中,我们介绍了什么是区块链,还讨论了一些与这项技术相关的概念。从本质上讲,我们关注的是模型的 结构性 方面——它实际上只是一个 区块链

这是我们旅程的一个良好开端,但这 还远远不够 整个故事。我们还有很多内容需要涵盖!

为了开始,我想让我们关注 交易,因为它们是任何区块链的核心。比特币被设想为一种 现金系统,可以改善集中处理器的一些问题——因此 交易能力 自然是这项技术中最重要的方面之一(如果不是 重要的话)。

开始吧!

构建一笔交易

比特币中的交易相当简单易懂。再说一次,这是一个现金系统——因此交易只将资金从 A 移动到 B

当我们转向其他区块链时,我们会看到交易可以做更多的事情!

实际上,这么简单,以至于我们可以尝试从零开始创建这样的模型。

让我们开始想象每笔交易移动 一枚硬币

在这个简化的场景中,发送者(Alice)只需要指定 接收者(Bob),而要转移的 金额 将是 1。很简单,对吧?

嗯,有个问题:系统需要了解 AliceBob 是谁。

就我们日常应用而言,我们可能会想“嘿,这听起来太像 用户名 了!”你可能会认为区块链可以处理这么常见的事情——但我们的基本模型并不支持它。

起码,不是开箱即用的。

那么Alice如何告诉区块链她想特别给Bob发送一枚硬币?Bob 究竟是谁?既然我们谈到了,这又是什么让Alice成为Alice?是什么定义了他们在系统中的 身份

我是谁?

私钥和公钥

我们已经讨论过发送者需要 同意 交易才能发生——Bob无法强迫Alice给他任何钱。

我的意思是… 我不会使用一个设计允许抢劫的系统!

这种同意是通过在交易中附加一个 数字签名 来实现的。我们不需要完全理解数字签名是如何工作的——只需了解其中的一些关键元素。这将帮助解释我们所理解的“Alice的身份”。

数字签名工作分为两个步骤:

  • 首先,你获取一个 消息(在这种情况下,是我们的交易),并使用被称为 私钥 的东西生成一个 签名
  • 然后,任何人都可以使用该 签名 和一个相关的 公钥 来检查签名是否有效。

无论 签名验证 算法是如何工作的(有关更多信息,请查看这篇文章),请注意,Alice关联了 两个密钥:一个 私有(或 秘密)密钥,一个 公有 密钥。

Alice需要她的私钥来 签名。如果此密钥被共享,任何持有它的人都可以代表Alice生成签名——某种程度上是冒充她。因此,私钥 不能共享(这在它们的名称中显然得到了反映!)。

这两个密钥是密切相关的:公钥可以从私钥获得,但反之则不行。类似于哈希,这个过程在实践中是 不可逆 的。这意味着公钥可以 共享给任何人,而无需担心会失去你的资金。

那么,是什么让Alice成为Alice?从她的角度来看,就是她 签名 自己的交易的能力——也就是她的 私钥。从其他任何人的角度来看,就是能 验证 她的交易的能力——这由她的 公钥 提供。

当Alice把一枚硬币转给Bob时,她将接收者设置为Bob的 公钥(或者实际上是他的 地址——我们稍后会讨论)。当然,Bob持有他自己的私钥,他现在可以签署一笔交易以转移他刚刚收到的硬币。

简而言之:

区块链的身份由公钥提供,公钥是私钥的反映,而私钥则是允许用户签署自己交易的小工具。

地址和钱包

通常,我们不谈论私钥和公钥。我们更常用的术语是 地址钱包。让我们来谈谈这些!

一个 地址 与公钥紧密相关——它是标识用户或账户的标准方式。

我们将在系列的后面详细讲述地址是如何计算(或 派生)的。这是一个非常有趣的主题,涉及一系列的加密操作。目前,只需知道一个地址是与公钥相关联的,而公钥又与私钥相关联。

最后,钱包是我们通常用来与上述三个术语互换使用的术语。我们通常不说“转账到这个公钥”——相反,我们会说“转账到这个地址”或“转账到这个 钱包”。从技术上讲,钱包是管理私钥的一些 硬件软件,但多年来,它几乎演变成与地址相同。

我想一开始就澄清一个常见的误解:钱包 不持有钱。区块链中的“钱”只是与地址相关联的一个值——我们可以说它 生活在区块链上。钱包只是 转移资金的能力

好的!希望这不会让人感到困惑。归根结底,这一切都是关于 签名验证。在区块链中有一句话:

不相信,验证。

随着我们深入这个系列,这将变得越来越相关。目前,它的意思是“如果没有发送者的签名,则任何交易都不可接受”。

但等等……我们刚刚是发送一枚硬币,对吧?如果我们想发送更多呢?

模拟货币

转移 一枚硬币 是一个有意的 gimmick,目的是让我们关注交易签名。

现在,让我们放宽限制,允许用户拥有 多个硬币(即余额)。我们必须更彻底地审视我们的模型。

在你选择的银行中,你通常有一个账户,只有一个余额。从这个账户转移资金会导致余额减少,仅此而已。

那么熟悉,如此简单,很直观,哇。

这种方法被称为 基于账户的模型,每个账户都有一个单一的 余额。大多数区块链(例如,以太坊)使用此模型。

比特币在这方面有点叛逆,使用一种称为 未花费交易输出(Unspent Transaction Outputs)或简称 UTXO 的不同模型。这有点奇怪——所以让我们试着通过类比来理解它。

未花费交易输出

当你在现实世界中花钱时,你通常会使用 纸币。你知道的,就是这些:

现在,如果你用 100 美元的纸币支付 40 美元的餐费,你期望会收到 找零。这是因为纸币是 不可分割 的——你无法将其撕成两部分,并将一部分给商店老板。这会失去其价值。商店老板可能对这种付款方式不会感到很高兴。

这是 纸币 的一个限制——但嘿,我们正在从头开始设计一个系统。没人告诉我们该做什么。如果我们想的话可以分割纸币。让我们分割一些纸币

在比特币中,“纸币”是我们所称的 未花费交易输出。就像纸币一样,它们有一个相关的金额。

当Alice想给Bob发送一些比特币,比如 12 比特币(哇哇,女孩,你手里有很多钱),她可能没有一张 确切 的纸币。她的余额实际上是由 多个金额不同的纸币 组成的。假设她有三张:一张 8,一张 3,还有一张 2

为了澄清:1比特币不是你可以转移的最小金额。我只是想使用简单的数字,仅此而已!

Alice可以这样付款:

  • 把所有纸币放在一个盒子里。盒子的总价值是 13
  • 这个盒子会产生 两张 新纸币,一张 12 给Bob,一张 1 给Alice。

只要满足以下条件:

  • 输入被标记为 已花费(或 销毁),
  • Alice拥有所有输入,
  • 进出盒子的总价值相同,

那么这个机制就是 完全有效的!而你知道吗?这个 盒子 正是比特币表示交易的方式!

我希望你能理解为什么这个高级名称——你只能花费一些交易的输出,所以它们是未花费交易输出(UTXO)!

UTXO与账户

在这一点上,问一下 我们为什么要使用这种模型 也是很公平的。别担心,我们都有过这样的思考。

使用基于账户模型(例如在你当地的银行)的一种原因是 顺序重要。如果你有一个 100 的余额,并且你试图向Alice支付 80 和向Bob支付 40,其中一笔交易 将失败。重要的是要跟踪区块链应该 先处理哪一笔交易

像以太坊这样的区块链 确实需要 跟踪交易的顺序。

UTXO模型通过设计避免了这一点:你只需选择哪些纸币要花费。一旦一张纸币进入交易,它就没了。蹦。它无法再次使用。无需跟踪交易的顺序!

我们还可以提到其他差异。例如,在账户模型中,用户的余额信息位于单一位置——其账户。而在公共区块链上,这些信息是向所有人可见的!UTXO 模糊化 了这些信息,因为用户的总余额分布在许多单独的纸币上。

还有其他差异包括无状态性和细粒度的交易控制,不过我想这些信息现在已经足够了!我建议阅读这篇文章以获得更详细的主题概述。

总结

在这一期中,我们学习了如何在网络中识别用户,以及如何制定交易方案。很不错!

这些基本概念在每个区块链中都会或多或少适用,因此理解这些概念非常有用。

我们现在知道如何创建交易……但接下来发生了什么?我们如何将交易提交到区块链?一旦提交,它是如何被处理的?

这些都是我们将在下次会面时尝试回答的问题!敬请期待我们探索网络如何处理和达成一致的交易——我们所称之为 共识机制。很快见!

  • 原文链接: medium.com/@francomangon...
  • 登链社区 AI 助手,为大家转译优秀英文文章,如有翻译不通的地方,在这里修改,还请包涵~
点赞 0
收藏 0
分享
本文参与登链社区写作激励计划 ,好文好收益,欢迎正在阅读的你也加入。

0 条评论

请先 登录 后评论
Frank Mangone
Frank Mangone
Software developer based in Uruguay. Math and Cryptography enthusiast.