未设置签名信息
卡梅隆

简介:

粉丝

0

关注

2

如果我现在要付给B 25个BTC,于是我创建一个交易"我的公钥(1abc)+B的公钥(1bca)+我的签名"把这个信息广播在BTC网络里,那BTC网络怎么知道这个交易合法呢?
2019-01-26 10:57 浏览 4589 收藏 举报

分享你的真实观点和经验,通过汇编、洗稿的等方式拼凑的回答将会被折叠 完成
1个回答
  • 缘分
    7
    世界很美好,时间很宝贵。
    缘分

    简介:世界很美好,时间很宝贵。

    粉丝

    0

    关注

    0

    不需要遍历所有的block,我们的确可以通过遍历block知道每个地址的余额,但是检查不需要这么复杂。

    比特币基础知识比特币交易构成(一)这里有比特币交易的介绍。需要注意的是,交易并不是说从你的余额中打钱给别人,而是从每一笔你收到的钱中,凑出一个交易。比如你有1笔1比特币收入A和1笔2比特币的收入B,转给我2.5比特币的交易是 A+B => 2.5(给我) + 0.5(找零给你)。

    0.8版本以后的比特币客户端会在每次接收到新block时更新会所有未花掉的output,检查一个交易是否合法只需要看这个交易的所有input是否在这个未花费的output表中。之前的版本需要检查每个input所来自的交易是否在某个block中(只要是存在于block中的就一定是合法的),找到所在的block就可以了。

    假设比特币是基于每个地址的余额验证交易,这个也可以用类似的方式优化,即每次都更新相应地址的余额,维护一个地址与余额的表,也不需要遍历所有的block了。

    评论 0
    2019-01-26 12:03:01 点赞   举报  
    取消 评论