1
chenshaoju 2011-05-26 17:55:47 +08:00
用户A用哈希为123的1BTC交易给了用户B。
用户C也用哈希为123的1BTC交易给了用户D。 用户A会将这个哈希为123的1BTC交易给用户B的过程广播到整个Bitcoin网络。 用户C也会执行这个操作。 假设有10个节点,6个节点接受了A的请求,剩下的4个节点接受了B的请求。 当这六个节点和四个节点会产生碰撞,6个节点的内容会覆盖掉4个节点的。 也就是说,大部分的节点承认A的请求,而拒绝了B。 当然,这得看A计算机的网络速度。如果网很慢,Block的广播速度不够快,一样会被B盖掉。 |
2
chenshaoju 2011-05-26 17:56:59 +08:00
修正:
假设有10个节点,6个节点接受了A的请求,剩下的4个节点接受了C的请求。 当这六个节点和四个节点会产生碰撞,6个节点的内容会覆盖掉4个节点的。 也就是说,大部分的节点承认A的请求,而拒绝了C。 当然,这得看A计算机的网络速度。如果网很慢,Block的广播速度不够快,一样会被C盖掉。 |
3
zhuang 2011-05-26 20:08:04 +08:00 via iPhone
@chenshaoju
事实上btc 只存在于交易链之中,包括生成50 个也是以一笔交易(transaction)的形式存在的,不存在说某个btc 就有一个hash 值,一个账户有多少btc 是通过历史交易“算”出来的。 另外用户这个概念严格说也不存在,存在的是地址,或者说账户,用户可以看作很多地址的集合。两个用户不可能拥有同一笔btc。 @lsd2004 你说的这个问题叫做double spending。生成一个有效的block 很慢(一个block 当中包含若干笔交易),但是广播一笔交易很快。成功做出的block 是证实某一笔交易发生的唯一证据。 目前版本的实现是,最长链胜出,即先被写入block 那笔交易会使没有进入block 的那笔交易作废,永远停留在0 confirmation。事实上block 广播速度非常快,基本一个block 生成就会迅速被绝大多数节点确认,而否决这条链的条件是与之冲突的block 得到超过6 次确认。 目前btc 网络的计算能力是30 PB hash/s 应对目前的交易量平均的block 生成时间是5min 以内。想要完成double spending 可能需要超过50% 的计算能力,或者超过50% 的节点控制。 |