Re: [求助] 关于double spend的问题

楼主: DarkerDuck (達克鴨)   2016-06-10 11:15:52
你讲得这个情形就是51%攻击
我先大概讲一下发出一笔交易是怎么进到区块里的。
首先每个节点都会有一个暂存transaction的mempool,在未进到区块里的时候,
交易都会先被暂存到mempool里,等发现区块后,已经被写到区块里的交易就会从mempool
里移掉。
※ 引述《transt (transt)》之铭言:
: 假设有一个confirmed transaction T (T所在的block后面已经有6个block)
: T 的内容是 Alice 给了 Bob 一个 BTC
: 假设现在Alice神通广大,在T所在的block之前fork了一个更长,没有包含T的chain
: 请问
: (1) 那一个 BTC 会从 Bob 回到 Alice 手中吗?
假如transaction T还留在任何一个节点的mempool中,那T就会被重新广播到网络中。
此时这个BTC就会从已确认状态,变回未确认状态。
假如Alice只是一个单独节点,并且mempool没有T。
那可能其他所有节点里的mempool都已没有T。这个时候这笔交易自然就不存在了。
: (2) T会被丢掉,就此消失在整个network中吗?
假如是Alice单独作51%攻击,T是有可能在mempol中消失。
但Bob要重新广播也很容易。
: (3) 承(2),如果T没有消失,那T在等待被validate的这段时间,Alice可以修改T吗?
: (例如,Alice 把 T 的 output 从 Bob 的 address 改成自己的)
: 恳请各路专家帮忙解惑,感谢
可以,不过通常完整节点只会承认已进到mempool的T,后面意图修改的T' 是无法进入到
mempool里的。
通常要做51%攻击就是直接把修改T'加入到自己产生的区块中了。
这样后来Bob要重新广播T将会没有作用
作者: transt (transt)   2016-06-10 11:38:00
请问为什么广播T将会没有作用?T原本不是有Alice的signature吗?这样T不是有可能进到其他的block之中?另外上篇推文说到通常钱包会把unconfirmed的交易也计算到余额中,那请问是只要transaction产生,钱包的余额就会产生变化吗?如果Alice想要看到那一个BTC回到他的钱包,是要等到T从整个network中消失吗?非常感谢你的回复!不好意思我又有一个小问题:当初Alice在送出/广播 T 的同时,Alice的wallet中BTC数目是否就会-1?
楼主: DarkerDuck (達克鴨)   2016-06-10 14:58:00
看钱包的设计,通常送出当下balance就会直接-1
作者: transt (transt)   2016-06-11 12:06:00
真的非常感谢你帮我解惑!

Links booklink

Contact Us: admin [ a t ] ucptt.com