作者grapherd (NULL)
看板DigiCurrency
标题Re: [闲聊] IOTA真的能实现足够的算力吗
时间Sat Jan 20 21:56:36 2018
※ 引述《kugwa (kugwa)》之铭言:
: ※ 引述《grapherd (NULL)》之铭言:
: : 这个问题已经回应过了,不会发生这样的问题。
: : 这种超久的 valid transaction V.S. 新出的爆干 weight transaction
: : 因为超久以前的 valid transaction 已经改变整个帐本的状况
: : (地址总额,对方地址总额等)
: : 因此根本不会有收到货然後又被盖掉的问题。
: 怎麽不会有呢
: 就是会有这样的问题啊
: 比特币的短链追上长链造成blockchain reorganization
: 以及我们一直在讨论的IOTA攻击手段(B的累积权重超越A的累积权重)
: 都是这个状况呀(虽然说落後很多的情况下追上通常都是恶意去追的)
: 你所谓的「整个帐本的状况」
: 本来就是根据blockchain或Tangle的样子在解读的
: blockchain的情况中 帐本的状况就是最长链中所有交易一起套用的样子
: blockchain reorganization时 因为长链换了一条 帐本会整个被大改动
: 而Tangle的情况中 A的累积权重比B的还大时 帐本只采计A而忽略B
: 但是当B的累积权重超越A时 帐本就会改为采计B而忽略A
: 这种帐本改动一发生 你看到的各种总额就会跟着发生变动 很严重的
: 总之 根本没有所谓的「某个交易生效一段时间之後就绝对不会被撤销」的情况
: (这应该叫freezed或是finalized)
: 只要另一方算力够强 就有办法撤销任意的交易
: (比特币拒收落後超过12个高度的block 这个情形先不讨论)
: finalize之所以难以实现
: 就是因为很多种方式(例如你规定一个交易t时间後就坚决不再撤销)
: 最终都会造成全网失去共识
: 就像我前一篇说的那种案例
几点说明一下:
1. IOTA 为「固定」数值的区块链 (区块链不正确,反正就先当区块链吧)
也就是说先不管整体网路如何,一个符合 valid transaction 规则的 double spending transaction,
制作上变得有点困难。
举例而言,整个 IOTA 网路假设只有 1i,并且有三个 address A (1i), B(0i), C(0i), SUM(1i)
今天正常的交易 A 给 B 1i 的话,会变成:
A(0i), B(1i), C(0i), SUM(1i)
预想中发起 double spending 的话 (A->B, A->C),会变成:
A(0i), B(1i), C(1i), SUM(2i)
整体帐本的总数就不对了,这时候没被共识到的那个交易,其他节点在收到的时候,就会列为拒绝户而不使用它。
2. 交易共识改写
有了固定数值的概念,我们再来看交易共识改写的状况。
2.1 正常节点舍弃 double spending transaction:
我之所前面说到,第一个交易已经成立後,第二个 double spending 交易就不会被其他人所接受的原因,
就是基於前面所提到的固定数值概念,都已经知道他是烂掉的交易,正常节点就不会选择他了。
基於这个基础,假设目前有 A, B, C 三个节点,B, C 节点已经认同第一笔交易,
这时候 A 节点发起 double spending transaction,B, C 节点收到之後会发现与帐本状况不符合,
因此在 MCMC 的时候屏弃不用。
2.2. 超强算力让 double spending transaction 的 weight 盖掉原本的交易:
前面所提到的一种攻击方式是,A交易成立後,B交易以超强算力盖出一条超高 weight 的交易,
来盖掉前面 A 的交易。
第一个要考虑的是节点,因为如同前面说的,节点会直接看到此交易造成帐本不符合後舍弃不用。
第二个是,有能力造出超高 weight 的交易吗?
交易的发起流程,可以参考此文:
https://goo.gl/pckfc2
可以清楚地发现,tips 就是一个 81 chars 的 tx hash,而 tx hash 产生的时机点是算完 nonce 之後才会产生。
意思就是说,如果我们要盖出一个超长 weight transaciton,我们是没有办法 parallel 去做的:
| A |<---| B |<---| C |<---| D |<---....| X |
的话,先算完 A,才能够填写 B,继续才能填写 C, D, ....etc
一个算 3 秒,接出来要盖过去....这时候就是比算力。
2.3. 算力比拼
前面提到攻击者可以自己做出超长 weight 的交易,但是别忘记,
一个受到 confirm 的交易,还会被後面其他交易给 reference 啊
这时候就是比拼算力的时候,究竟是攻击者可以压过去,还是其他节点
reference 起来更快?
这里就来到 34% attack 的范畴,跟 Bitcoin 一样,比拼正常人跟攻击者的多寡。
至於 IOTA 为啥认为比拼一定能赢过攻击者,就是他的野心是放在全球 IoT devices
想要透过大量节点辗压掉攻击者......
2.4 正常人的多寡
另外一个部分是,到底 double spending transaction 会不会其他人选到?
假设有自修改节点,每看到一个 transaction 就给他 reference 一个也不管是不是正确的,
(就是改动 default MCMC algorithm)
那 double spending transaction 有没有机会变成正确的交易?
这个请参考这几篇,描述 MCMC 的状况的文章:
https://blog.iota.org/iota-simulations-first-preview-to-the-community-b888d1f807e4
https://blog.iota.org/equilibria-in-the-tangle-let-me-try-to-explain-b22ad6f00c13
https://blog.iota.org/equilibria-in-the-tangle-let-me-try-to-explain-part-2-6dcc8e7c0ad8
https://arxiv.org/abs/1712.05385
到最後就是比算力跟好人数目,究竟有没有很多节点会故意去选择 double spending transaction?
如果有,而且高过数值,那这个项目就完蛋了,这个在 cryptocurrency 都是,不是只有 IOTA 而已。
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 118.12.46.231
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/DigiCurrency/M.1516456604.A.885.html
1F:→ desion30: 固定数值。 01/20 22:31
2F:推 a2935373: IOTA没有像POW那样比拚算力 不会有被殭屍网路攻击的风险 01/20 22:41
3F:→ a2935373: 吗? 01/20 22:41
4F:→ t0126696: 透过全球 IoT devices 辗压掉攻击者实务上会遇到些问题 01/20 22:42
5F:→ t0126696: Botnet 里面最不缺 IoT device, Internet of Terminator 01/20 22:42
6F:→ t0126696: 今天诚实的节点朋友明天就有可能变笑嘻嘻的坏蛋... 01/20 22:42
7F:→ goldflower: 2.3就是蛮大的疑虑 之前几篇应该有讨论到 01/20 22:43
8F:推 leftless: 一大堆IOT的优点不就是平行处理量极大吗 01/20 23:23
9F:→ leftless: 既然不能平行 那ASIC的优势不就更大了 01/20 23:25
10F:→ kuma660224: 把全球化的visa+master每秒总和交易数 01/20 23:31
11F:→ kuma660224: 甚至加支付宝,换算可能的pow算力 01/20 23:31
12F:→ kuma660224: 其实也不会很高。因为是大量蚂蚁算力 01/20 23:31
13F:推 tcn1john: 推这篇 另外数量较少的PC botnet跟IoT botnet威胁谁大? 01/21 10:56
14F:推 vvind: 推,我自己想像的安全性也是靠这种方式达到的 01/21 13:45
15F:推 kugwa: 推个 我之前一直无法接受网路分裂成两票节点 01/21 17:47
16F:→ kugwa: 觉得这样就是失去共识 01/21 17:47
17F:→ kugwa: 但看到这篇再次强调正常节点的数目 01/21 17:49
18F:→ kugwa: 终於使我回来考虑这个可能性 01/21 17:50
19F:推 kugwa: 由於全网本来就可能分裂 所有节点的帐本并非完全一致 01/21 18:19
20F:→ kugwa: 所以才会一直提到network topology (汗 01/21 18:19