【问题标题】:How dose the bitcoin locking/unlocking script work?比特币锁定/解锁脚本如何工作?
【发布时间】:2018-04-07 09:08:35
【问题描述】:

当我看书时Mastering Bitcoin chapter 6

我尝试按照本书中提到的步骤进行操作,但发现结果不正确,我错在哪里?

交易是here:

输入脚本:

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

然后我跟踪包含在此事务中的output。其中的输出脚本是这样的:

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

然后我使用website calculator计算RIPMED160(SHA256(Pubk)) = "6df13de1f1d824380834e0d42e49e5e451a647cf"

但输出脚本中的结果不等于 7f9b1a7fb68d60c536c2fd8aeaa53a8f3cc025a8。

【问题讨论】:

标签: bitcoin


【解决方案1】:

你的想法是对的,但我认为你是在散列十六进制字符串,而不是二进制数据。如果我使用 Python 的 hashlib 库计算 ridemd160(sha256(pubk)),我会得到正确的结果:

$ python
Python 2.7.13 (default, Nov 24 2017, 17:33:09) 
[GCC 6.3.0 20170516] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import binascii, hashlib
>>> sha256 = hashlib.new('sha256')
>>> ripemd160 = hashlib.new('ripemd160')
>>> sha256.update(binascii.unhexlify('0484ecc0d46f1918b30928fa0e4ed99f16a0fb4fde0735e7ade8416ab9fe423cc5412336376789d172787ec3457eee41c04f4938de5cc17b4a10fa336a8d752adf'))
>>> ripemd160.update(sha256.digest())
>>> ripemd160.hexdigest()
'7f9b1a7fb68d60c536c2fd8aeaa53a8f3cc025a8'

【讨论】:

  • 谢谢,我用你的函数得到了正确的结果。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-02-03
  • 2010-12-22
  • 2010-09-21
  • 2022-11-16
  • 1970-01-01
  • 2022-10-07
  • 2022-09-23
相关资源
最近更新 更多