早上用手机编辑搞烂了推文,不好意思。
※ 引述《kugwa (kugwa)》之铭言:
: 标题: Re: [闲聊] IOTA真的能实现足够的算力吗
: 时间: Wed Jan 17 10:15:43 2018
:
: ※ 引述《grapherd (NULL)》之铭言:
: :
: : ※ 引述《MRjk ()》之铭言:
: : : 首先非常感谢您提供的几个连结
: : : 其实我之前也就已有加入"IOTA 爱好者中文社群"的FB社团
: : : 刚也再重新看过每一篇您所指引的连结
: : : 我觉得首先让我们讨论单纯一点 抛弃掉3进位 hash function等其他问题
: : : 回归到这讨论串最一开始原po的问题
: : : "在IOTA网络中 没有coordinator的状态下
: : : 恶意攻击者从一个IoT装置所发出的交易A (经过PoW验证了前两笔交易)
: : : 如何能不被恶意攻击者手上的另一个超强硬件所建构出来的双花交易B(也经过了PoW验证
: : : 了前两笔交易 且还附加了更多交易在其后增加权重)盖过去?"
: :
: : 你的问题......感觉问错了?
: :
: : 你所给的题目定义的状况下,这个超强硬件所构建出来的双花交易B
: :
: : 才是整体网络所同意的交易啊。
: :
: :
: :
: : 当下当然两笔双花出来的时候会是双花,
: :
: : (Bitcoin 也会有类似的状况,假设一次出两块,里面包含双花交易的话)
: :
: : 但是等时间过去,
: :
: : 其他的节点经过 MCMC 在挑选 tips 的时候,
: :
: : 就会
: :
: : 这时后,A交易就会被当作是 invalid 或是 double spending
: :
: : 孤立在那边啊。
:
: 同个系统状态本来就不会双花的两笔交易同时存在
:
: 但是设想
:
: A已经被大家承认很久很久了
:
: A交易的卖方也交货了
:
: 这时突然给你来个 B把A给超越
:
: 大家一致宣告A交易不算数
:
: 那A交易的卖方不就很干 拿到的钱没了 货也大概拿不回来
这个问题已经回应过了,不会发生这样的问题。
这种超久的 valid transaction V.S. 新出的爆干 weight transaction
因为超久以前的 valid transaction 已经改变整个帐本的状况
(地址总额,对方地址总额等)
因此根本不会有收到货然后又被盖掉的问题。
:
: 这也是比特币的交易被收进block之后 最好等6个confirmations再当真的原因
:
: 因为这时候被翻盘的机率就小很多很多了
Bitcoin 1 confirm 不能当真,建议 6 个,实务 3 个的原因,
最主要的原因是有不错大的机率出现同时有两块爆出来,
(看 explorer 很容易发现)
要等到其他 node 选择一个,让另一个变成孤立后,才能够继续长下去。
(当然也有为了防止 double spending 的问题)
:
: : 这也不会啊,当 A 交易已经被认同,节点内部的帐册就会被改动了。后来出现的 B 交易只会被当作 invalid (假设 double spending,或是透支账本) ,或是另外一笔新的交易 (假设创新交易)。
:
: “当 A 交易已经被认同”
:
: 你要怎么规定 什么情况下去认同?
:
: IOTA这种靠Coordinator发出Milestone的可不算哦
:
: 因为这是靠Coordinator一人决定的
:
: 为什么怎样才算认同这件事很重要呢
:
: 因为 让整个网络所有人都认同A交易 这件事本来就超级难
:
: 只要有那么一瞬间 有一部分的人认同A 有一部份的人还没认同A
:
: 然后这时候有人把B广播出来
:
: 认同A的那一票人直接拒绝B
:
: 而刚刚还没认同A的人把B收下来 最后还好死不死去认同B
:
: (可能B被一部分的人串的比较长)
:
: 这时网络就整个意见分歧了 而且再也无法转回意见一致
:
: 导致这种灾难的关键原因 就是你说的那种认同
:
: 你那种认同会强硬的认定某个交易是合法的
:
: 然后贸然排除跟他产生双花的其他交易
:
: 结果就是有机会发生我上面说的情况 全网失去共识
先看白皮书:
It is important to observe that the iota network is asynchronous. In general, nodes
do not necessarily see the same set of transactions. It should also be noted that
the tangle may contain conflicting transactions. The nodes do not have to achieve
consensus on which valid[5] transactions have the right to be in the ledger, meaning
all of them can be in the tangle. However, in the case where there are conflicting
transactions, the nodes need to decide which transactions will become orphaned[6].
白皮书大方承认了这个问题。直言 node 之间本来就是异步的状况,
各自看到的 tangle 是不同的状况。而且在 tangle 之中,本来就可以存在
conflict 的交易。当出现 conflict transactions 的时候,才需要去决定哪个是孤立的交易。
决定 conflict 的方式是运行 MCMC:
“看一个节点进行多次的 tip 选择算法,
接着观察哪笔交易较可能被选到的 tip(间接)验证。举例来说:
假设跑了 100 次 tip 选择算法,有一笔交易被选到 97 次,我们便说它有 97% 的信心被验证到。”
(from IOTA 白皮书中文版)
当然目前 mainnet 不是这样就对了 XD
:
: 这就是为什么区块链是神解
4, 神解,不可否认。
:
: 他的作法就是不会排除任何互相冲突的区块(e.g. 一个区块含有A 另一个区块含有B)
:
: 但是大家讲好最长链的交易才算数
:
: (而且最长链受到算力保护 越久远的区块越不会被翻盘)
:
: 因而全网可以一直保持着一致 也就是达成共识
:
:
:
: 一般人看起来
:
: 区块链可能就只是实现了一直以来难以达成的分布式网络中的信任的一项技术而已
:
: 但是他诞生的背后
:
: 其实有非常非常多复杂的情况
:
: 都被开发团队考虑过了
:
: 可能是之前没想到的漏洞 任何攻击手段 任何可能导致的问题 之类的
:
: 这些情况被开发团队反复想到烂掉
:
: 想破头才出现了最终版本
:
: 也就是比特币
:
: 所以说区块链的厉害之处
:
: 大概只有亲自仔细咀嚼过各种课题:
:
: “区块链的这个部份为什么要用这种作法?”
:
: “如果不这样做的话会怎么样吗?”
:
: 才能更了解想出这东西的人到底有多天才
:
: