你讲得这个情形就是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将会没有作用