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

比特币脚本是如何验证的?

  •  
  •   DsHale · 2018-04-07 18:22:33 +08:00 · 555 次点击
    这是一个创建于 2411 天前的主题,其中的信息可能已经有所发展或是发生改变。

    最近在学习比特币相关技术,看到 Mastering Bitcoin 第六章 Pay-to-Public-Key-Hash (P2PKH) 的时候,按照书中的步骤准备计算一下这个验证脚本,步骤如下图所示

    https://github.com/bitcoinbook/bitcoinbook/blob/develop/images/mbc2_0605.png

    https://github.com/bitcoinbook/bitcoinbook/blob/develop/images/mbc2_0605.png

    打开书中所提及的交易细节: Input Scripts:

    ScriptSig: 
    PUSHDATA(72)[3045022100884d142d86652a3f47ba4746ec719bbfbd040a570b1deccbb6498c75c4ae24cb02204b9f039ff08df09cbe9f6addac960298cad530a863ea8f53982c09db8f6e381301] 
    PUSHDATA(65)[0484ecc0d46f1918b30928fa0e4ed99f16a0fb4fde0735e7ade8416ab9fe423cc5412336376789d172787ec3457eee41c04f4938de5cc17b4a10fa336a8d752adf]
    

    然后追踪到这个交易中输入的交易 在这个交易的细节中我们可以看到 Output Scripts:

    DUP HASH160 PUSHDATA(20)[7f9b1a7fb68d60c536c2fd8aeaa53a8f3cc025a8] EQUALVERIFY CHECKSIG 
    

    使用一个在线计算器 按照书中所示计算结果为:RIPMED160(SHA256(Pubk)) = "6df13de1f1d824380834e0d42e49e5e451a647cf" 与 Output Scripts 中的 7f9b1a7fb68d60c536c2fd8aeaa53a8f3cc025a8 明显不相等,我想知道我哪里理解错了。

    2 条回复    2018-04-07 22:24:05 +08:00
    acess
        1
    acess  
       2018-04-07 22:23:19 +08:00
    我算了一下,没问题啊:
    PubKey=0484ecc0d46f1918b30928fa0e4ed99f16a0fb4fde0735e7ade8416ab9fe423cc5412336376789d172787ec3457eee41c04f4938de5cc17b4a10fa336a8d752adf
    SHA256(PubKey)=98F8648ABB4E1333AFAC93709DEAE013C59C72F745DE8F09041FF5295493B001
    RIPEMD160(SHA256(PubKey))=7F9B1A7FB68D60C536C2FD8AEAA53A8F3CC025A8
    LZ 中途是不是把 字符串 和 十六进制数据 混淆了?
    acess
        2
    acess  
       2018-04-07 22:24:05 +08:00
    还有一个老梗值得贴一下:
    《 Mastering Bitcoin 》中的错误代码可能会导致你的比特币丢失
    https://www.solidot.org/story?sid=55390
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5433 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 43ms · UTC 03:42 · PVG 11:42 · LAX 19:42 · JFK 22:42
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.