作者DarkerDuck (达克鸭)
看板DigiCurrency
标题Re: [求助] 关於double spend的问题
时间Fri Jun 10 11:15:52 2016
你讲得这个情形就是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将会没有作用
--
Bitcoin: 1GjHNjS3yAmyCsRp8i8yj956NZBSAcLvYe
https://blockchain.info/address/1GjHNjS3yAmyCsRp8i8yj956NZBSAcLvYe
Litecoin: LNpJUtNFcmhHAoohdH3aEenURFjXAzfKXc
http://ltc.blockr.io/address/info/LNpJUtNFcmhHAoohdH3aEenURFjXAzfKXc
Dogecoin: DBQAZU4x7hCYEjzsQyXLpnjyrTmnPBGWd9
https://dogechain.info/address/DBQAZU4x7hCYEjzsQyXLpnjyrTmnPBGWd9
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 118.171.107.23
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/DigiCurrency/M.1465528554.A.57D.html
1F:推 transt: 请问为什麽广播T将会没有作用?T原本不是有Alice的 06/10 11:38
2F:→ transt: signature吗?这样T不是有可能进到其他的block之中? 06/10 11:39
3F:→ transt: 另外上篇推文说到通常钱包会把unconfirmed的交易也计算 06/10 11:41
4F:→ transt: 到余额中,那请问是只要transaction产生,钱包的余额就 06/10 11:43
5F:→ transt: 会产生变化吗?如果Alice想要看到那一个BTC回到他的钱包 06/10 11:45
6F:→ transt: ,是要等到T从整个network中消失吗? 06/10 11:47
因为T有T'的input,input一旦被用走就无法被其他的transaction用。
所以本来的T就会变成无效交易,不会被任何节点接受,从网路中消失。
Alice想要看到BTC回到她的钱包,必须等没有T的blockchain产生。
T完全从网路中消失,自己的钱包重新同步。
余额才会复原
※ 编辑: DarkerDuck (118.171.107.23), 06/10/2016 12:25:40
※ 编辑: DarkerDuck (118.171.107.23), 06/10/2016 12:26:18
7F:推 transt: 非常感谢你的回覆! 06/10 13:13
8F:推 transt: 不好意思我又有一个小问题: 06/10 13:34
9F:→ transt: 当初Alice在送出/广播 T 的同时,Alice的wallet中BTC数目 06/10 13:35
10F:→ transt: 是否就会-1? 06/10 13:36
11F:→ DarkerDuck: 看钱包的设计,通常送出当下balance就会直接-1 06/10 14:58
12F:推 transt: 真的非常感谢你帮我解惑! 06/11 12:06