Luka Stanisic第一篇讲述IOTA核心技术特性的一个科普文章。
在这篇文章中,我将尝试解释IOTA在后Coordicide(移除协调者)时代将如何工作。很可能会有很多关于这个主题的系列,每个系列都涵盖了解决方案的一部分。这篇文章将尝试让你了解IOTA与其他传统区块链相比的大致情况。
大多数区块链使用中本共识。他们找到一个产生区块的领导者,并将其通过Gossip协议传递消息给网络中的所有其他节点以验证它。领导者是如何选择的?这要看情况,在PoW(工作证明)中,是第一个解决密码难题的矿工,在PoS(股权证明)中,每个区块都会随机选择一个质押者(Staker)。所以,所有这些PoX( “x”证明),其中 “x “是一种稀缺资源(PoW中的能量,PoS中的股权等),它们都使用中本共识(最长链获胜),但以不同的方式寻找领导者。
这个过程是同步进行的,这意味着所有(诚实的)参与者首先接受一个新的区块,只有在接受后,他们才开始研究下一个区块。需要注意的是,每个区块都有一个固定的区块大小,所以每个区块的交易数量是有限的。只有被包含在一个区块中的交易才被认为是有效的,所有无效的交易和双重消费永远不会被包含。所以很容易理解为什么这种共识不能以安全和去中心化的方式扩展。
只有1个节点产生区块,其他所有节点都是空闲的(在等待时没有做任何有意义的工作)。只有1个矿工产生一个有效的区块,其他矿工投入的工作(对于该区块)都被丢弃。比特币之所以不慢,是因为网络中存在大量的矿工和验证者节点。如果有1个节点和100万个节点,它的工作原理是一样的。它的设计是将区块时间(区块之间的时间)平均保持在10分钟左右,所以所有验证者在开始处理下一个区块之前,都会得到相同的区块并进行验证。每个区块在比特币中都有一个固定的大小(1MB),并且在该时间内只能进行有限的交易。为了让你的交易被包括在内,你需要支付费用,以激励矿工将你包括在他们的区块中。
IOTA有什么不同?
-它使用不同的数据结构(定向无环图,称为Tangle)。
-它是异步的(每个节点可以同时产生一个有效的交易)。
Tangle和它的异步性是主要的区别,这使得IOTA能够以一种去中心化和安全的方式进行扩展,这在传统的区块链中是不可能的,因为在传统的区块链中,所有的东西都是围绕着1个当选的领导者同步的。
它是如何简单地工作的?
不同于传统区块链中的领导者产生区块,在IOTA中,每个节点都被允许在同一时间发布有效的交易。节点将交易添加到他们的Tangle副本中,并将它们通过Gossip协议传递给邻居节点。这些节点重复这个过程,直到网络中的所有节点最终都得到了交易。
需要注意的是:
– 无效的交易(没有有效的签名,没有足够的IOTA等)将不会被添加到Tangle上
– 在同一时间相对发出的双倍消费(在任何一笔交易被接受之前–我后面会举例说明)将被添加,并将保留在Tangle中,冲突将在以后解决。
冲突是如何解决的?
当节点检测到冲突时,他们会投票支持一个特定的结果(只能有1个交易有效,否则所有交易都将无效)。他们使用FPC(快速概率共识)来选择1个有效的交易,并认为所有其他双倍消费无效。他们在Tangle中构建未来的交易,以一种不含糊的方式代表他们当前的意见,这样任何观察者都可以通过观察Tangle来得出什么是有效的,什么是无效的结论。节点的意见是由他们的Mana(法力)加权的。我在这里之前的文章中解释了Mana(法力)的经济学。
区块链中的交易在加入区块的时候就被确认了,而在IOTA中,当它被未来的交易按MANA加权获得足够的批准权重时,就被确认了。因此,让我们做几个例子来说明同样的交易在传统区块链中是如何工作的,在IOTA中又是如何工作的,以了解主要区别。
我们假设有:
钱包A =100 IOTA
钱包B=200 IOTA
钱包C=0 IOTA
钱包D=0 IOTA
对于这个例子,我们假设我们在世界各地都有节点,这些节点都是相连的,并且必须就什么是有效的,什么是无效的达成共识。
例1:
钱包A从美国的一个节点向钱包C发送100个IOTA,钱包B从中国的一个节点向钱包D发送200个IOTA。
区块链的方法:
这两笔交易都会被广播到节点上,然后被添加到所有交易的集合中(mempool)。选出1个领导者形成下一个区块,并将这些交易添加到区块中,并将区块广播给其他节点。所有节点检查区块的内容,看其正确性,并接受其为有效区块。
IOTA的方法:
美国的节点将交易A添加到它的Tangle副本中 并将其广播给加拿大和墨西哥,同时中国将交易B添加到它的Tangle副本中,并将其广播给日本和印度。墨西哥、加拿大、日本和印度继续向他们的邻居广播,最终这两笔交易都到达欧洲,欧洲检查了它们并接受它们为有效,并继续向其他国家广播。最终美国得到交易B,中国得到交易A,没有发现冲突,未来的交易成功引用这些交易,一段时间后A和B都是有效的。
例2:
钱包A从美国向钱包C发送100 IOTA(交易A1),钱包A从中国向钱包D发送100 IOTA(交易A2)。
区块链方式:
节点广播A1和广播A2。这两笔交易都会被添加到交易的集合中(mempool)。1个领导者被选中。他看到这两笔交易,他选了1笔,因为他不可能两笔都选,因为钱包A只有100个IOTA可以花,不能花两次。被领导者选中的交易被认为是有效的,并被广播到其他节点。他们检查和验证并接受为有效。他们挑选一个领导者产生下一个区块,他看到他的mempool里有A2,就会丢弃它,因为他看到钱包A已经花掉了余额。这就是区块链如何以同步的方式解决双花的问题。
IOTA的方法:
美国的节点在它的Tangle副本中加入A1交易,并将其广播给加拿大和墨西哥,同时中国在它的Tangle副本中加入A2交易,并将其广播给日本和印度。墨西哥、加拿大、日本和印度不断向他们的邻居广播,最终两笔交易都到达欧洲,欧洲看到A1和A2两笔交易并报告冲突。欧洲广播A2,以便它能到达美国,广播A1,以便它能到达中国。节点投票选择1个交易为有效的A1或A2。经过几轮投票,他们都同意并选择例如A1为有效,A2为无效。他们以引用A1而不引用A2的方式来构建入库交易,一段时间后,A1被足够多的交易引用而被认为是有效的,而A2将继续处于纠结中,它不会产生足够的批准权重,也不会被认为是有效的。这就是IOTA以异步方式解决双花的方法。所有的节点都时刻处于活跃状态,不像在区块链中,他们要等待领导者解决冲突,他们要验证领导者的决定。
这是一个节点如何结构未来传入交易的一个可能的变化的例子,这样任何观察者都会知道A1是有效的,A2是无效的。
需要注意的是,在IOTA中,我们没有闲置时间(大多数节点没有做任何有意义的事情的时间)。即使他们对冲突进行投票,节点也会继续发出交易!所有节点都以有意义的方式一直100%利用他们的计算能力。
这些是主要的例子,我想任何人都可以在充分思考后理解。
我再举一个给想了解更多一点的人。
当你想到我上面写的那些东西,比如一个事务如果被未来的事务直接或间接引用,那么这个事务就是有效的,而且节点即使在没有意识到冲突的情况下,也会一直发出事务。你可能会有疑问,如果一个节点发出交易,引用了一个双花的交易,却不知道以后会被投成双倍消费,会怎么样呢?这些交易会发生什么?
有趣的是,IOTA也想出了一个优雅的解决方案。他们使用一个叫做审批重置开关(approval reset switch–ARS)的概念来解决这个问题。Tangle网络将再次以非歧义的方式结构化,反映出双倍消费是无效的,所有引用双花的有效交易都将是有效的,它们将积累足够的审批权重,而双花则不会。
我做了一个关于这个话题的视频,里面有1个小错误,这个小错误与理解这个话题无关,所以在这里就不提了,以迷惑大家。如果你需要时间来思考我在视频中说的东西,我建议你以正常速度观看,如果你对这个概念很熟悉,可以把速度设置为2倍。视频链接
希望你喜欢这篇文章,如果你有问题,请在评论中发表,和/或在twitter上联系我(在我的个人资料上找到链接),如果你有兴趣,一定要加入IOTA Discord。在那里你将有机会提出问题并得到答案。
最后,我想指出的是,这些信息是由于它是。这不是投资建议,任何人都应该做自己的研究,而不是盲目跟随我。IOTA基金会成员不可能对网上的每一个关于IOTA的帖子进行核实。官方信息都是IOTA基金会成员在官方渠道给出的。我只是一个社区成员,鉴于我的研究,分享我认为是真实的东西。如果你发现有什么矛盾的证据请和我分享。
本文原文非中文版本,由BruceX进行翻译,如若转载,请注明出处:http://www.iota.love/202101/the-tech-behind-iota-part-1-introduction/