图解介绍缠结第4部分:批准者, 余额和双花

图解介绍缠结第4部分:批准者, 余额和双花

到目前为止,我们讨论了DAGs, 随机行走和各种tip选择机制;本周我们将谈论金钱。是时候解释我们所说的交易A验证交易B的意义了。

正如在本系列的第一篇文章中提到的,假设一笔交易事务包含“Alice给bob 10 IOTAs”的表单信息。批准人的工作是首先确保Alice有10IOTAs。

你可能会想到,这些IOTAs从何而来?答案是:所有的IOTAs都是在第一次交易中被创造出来的,叫做“创世纪”交易。在此之后,再也没有额外的IOTAs被创建。从“创世纪”交易中,IOTAs被转移到项目最初投资者的账户中,比例与他们投入的资金成正比。后来,这些投资人把一些IOTAs逐步卖给了别人,最终建立起一个交易网络。

回到Alice和Bob,我们来看一个简单的例子。该框表示一个交易事务。为了方便起见,我们在交易发生之前和之后,在Alice和Bob的帐户中记录余额。我们看到在开始的时候Alice有10i,她给了Bob,之后Bob有10i,而Alice没有。

查理说,总会有人要发出自己的支付交易。他运行tip选择算法,其结果是他需要批准Alice的交易事务。为了做到这一点,他必须证实爱丽丝真的拥有她所花的10i。查理最好认真对待此任务:如果他批准了一个虚假的交易,那么他自己的交易将永远不会被批准!

绝对肯定的是,查理必须列出所有被Alice发起的交易,直接和间接批准的其他交易,所有这些交易都可以追溯到创世纪交易。最后他列出了一个长长的清单,看起来是这样的:

  1. 创世纪交易生成 15i
  2. 创世纪交易给 Bob 2i
  3. 创世纪交易给 Alice 8i
  4. 创世纪交易给 Charlie 5i
  5. Charlie 给 Donna 3i
  6. Bob 给 Alice 2i

当然,这只是一种选择;在Alice的帐户中,任何以10i 结束的账户列表和Bob 's中的0余额都是可以接受的。Charlie还必须跟踪系统中的所有其他帐户,以确保它们不低于零:如果在“before”或“after”部分的余额为负数,则他的交易事务是无效的。

让我们来看看,假如爱丽丝想要多给出她自己并没有的IOTAs的例子:

尽管她只有10i,但Alice付了100i。Alice的交易事务和任何批准它的后进交易事务都会被网络认定为无效。负余额不允许出现在网络中。

当我们批准两个交易而不是一个交易时,情况会变得更有趣。

Bob正确批准了Alice的交易,因为她的账户里刚好有足够的钱来支付这两笔交易,支付后的余额不低于零。

如果支付的总金额比她拥有的多,会发生什么?如下所示。在这种情况下,Bob不能批准Alice的两个交易事务,因为它们会给Alice造成负的余额。如果Bob这样做,他将违反IOTA协议的规则,没有人会批准他的新交易。

这最后一种情况叫做双花,因为爱丽丝将她的钱花了两次。请注意,她没有违反协议,因为她有足够的钱用于每笔交易。也许她并没有想要双花,但她错误发送了两次。然而,她却在无法调和的在缠结中创造了两个分支。这给IOTA的诚实用户带来了一个问题:他们应该批准哪个分支?

这个问题的解决方法可以参考我们上周学过的加权行走。最终,其中一个分支会比另一个的权重更高,而较轻权重的分支则会被抛弃。这也意味着,即使有一些批准者,刚发起的交易也不能被认为是可以立即被确认的,因为它可能变为最终被遗弃分支的一部分。为了确保你的交易被确认,你必须等待它的确认度(权重)足够高。这将是下周文章的主题。

一如既往,欢迎你在这里或在 Discord中向我提问,@alongal#3938。

 

原文链接:https://blog.iota.org/the-tangle-an-illustrated-introduction-1618d3e140ad

tigermumu

专栏作者:tigermumu

个人简介:坚定不移的贯彻以推广和普及IOTA为核心一百年不动摇

作者邮箱 作者主页 Ta的文章

发表评论

邮箱地址不会被公开。 必填项已用*标注