V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
lsd2004
V2EX  ›  Bitcoin

在多台PC同时用一个钱包(wallet.dat)与他人进行转账交易会发生冲突么?冲突解决的原则是什么?

  •  
  •   lsd2004 · 2011-05-26 17:43:40 +08:00 · 3485 次点击
    这是一个创建于 4930 天前的主题,其中的信息可能已经有所发展或是发生改变。
    我们都知道,备份wallet.dat就保存了自己的钱包;那么,显然可以在多台PC上同时使用一个钱包。

    问题是,如果在大致相同的时间内,都发生了交易,会冲突么?

    打个过分一点的比喻,我只有1BTC,我在A机转帐给路人甲1BTC,同时在B机转帐给路人乙1BTC,这样显然是不符合规则的。

    网络会认可哪一个帐单,或者均不认可呢?
    3 条回复    1970-01-01 08:00:00 +08:00
    chenshaoju
        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盖掉。
    chenshaoju
        2
    chenshaoju  
       2011-05-26 17:56:59 +08:00
    修正:

    假设有10个节点,6个节点接受了A的请求,剩下的4个节点接受了C的请求。

    当这六个节点和四个节点会产生碰撞,6个节点的内容会覆盖掉4个节点的。

    也就是说,大部分的节点承认A的请求,而拒绝了C。

    当然,这得看A计算机的网络速度。如果网很慢,Block的广播速度不够快,一样会被C盖掉。
    zhuang
        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% 的节点控制。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1233 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 22ms · UTC 18:16 · PVG 02:16 · LAX 10:16 · JFK 13:16
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.