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

比特币通过“交易记录哈希指针”验证交易合法性的一个疑问!

  •  
  •   huzhikuizainali · 302 天前 · 1123 次点击
    这是一个创建于 302 天前的主题,其中的信息可能已经有所发展或是发生改变。

    声明一下。这里所说的哈希指针不是指向前一个区块的哈希指针!

    老师说全节点在收到一个交易记录的时候首先会根据 UTXO 去检查输入方的比特币来源。比如下面这个交易。在审查 B->C 交易的时候要根据 B 提供的哈希指针去验证 B 的比特别来源。如果发现在发起 B->C 交易之前,B 已经将比特币转给 D 了。那么就认为这是“双花”或者说“透支” ,则会拒绝将 B->C 交易打包!

    关于这个流程我有两个疑问:

    1 、老师给出的例子是 A->B 5 个比特币(假设 B 只有 5 个比特币)。然后 B->D 5 个比特币。最后 B->C 5 个比特币。根据交易记录的哈希指针可以发现 B->D 的交易。 -----这我就不明白了。如下图:既然 B->C 的 Vout 哈希指针指向的是 B 作为输出角色(收款方)的那一笔交易记录。那么如何根据这个哈希指针发现 B->D 的交易记录呢? B->D 的交易,B 作为输入也会有一个哈希指针指向 A->B 的交易的输出方。但是 B->C 的交易去向 A->B 的 vout 查询时如何能发现 B->D 的交易呢?

    2 、假设 B->D 的交易确实发生了。但是金额只有 2 个比特币。那么 B 此时剩余 3 个比特币。在假设第三笔交易 B->C 的交易额是 3 个比特币。那么交易应该是合法的。但是全节点如何通过这些哈希指针完成定量审核的呢?

    Adelell
        1
    Adelell  
       302 天前
    BTC 使用点对点分布式时间戳服务器为基于时间的交易序列生成计算上的证据来解决双重支付问题。

    https://bitcoin.org/files/bitcoin-paper/bitcoin_zh_cn.pdf
    再看一遍白皮书吧。
    dhb233
        2
    dhb233  
       302 天前
    看起来比特币没有提供什么快速的查找方式。可能数据量还不算太大,遍历就能找到 B->D 的交易?或者那些节点可以自己创建每个钱包的缓存,只记录钱包可用的 UTXO 。

    第二个,我记得一次交易可以分拆多个接收方。5 个币,可以 3 个给 D ,2 个给自己。
    xx6412223
        3
    xx6412223  
       293 天前
    建议你学习:比特币数据结构
    数据从属关系:
    chain - block- transaction - output
    你所的验证本质就是基础的数据遍历过程,当然会做缓存,并在每次产生新区块后更新缓存
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   992 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 22ms · UTC 22:01 · PVG 06:01 · LAX 14:01 · JFK 17:01
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.