Blockchain 从比特币区块链数据结构中提取钱包ID(公钥)

Blockchain 从比特币区块链数据结构中提取钱包ID(公钥),blockchain,bitcoin,blockchain.info-api,nbitcoin,Blockchain,Bitcoin,Blockchain.info Api,Nbitcoin,我试图找到与比特币块的交易输入和输出相关联的公钥 有人能告诉我这些是在哪里编码的吗 谢谢。简单地说,一般来说你不能 根据签名模式的不同,您所能得到的只是该公钥的散列,或者更糟糕的是,赎回脚本的散列 更具体地说,在某些情况下,您可以获得一些公钥。 这是您可以获得的部分列表: Pay to pubkey散列脚本(P2PKH):您可以从scriptSig获取输入BTC地址的公钥 Pay to pubkey(P2PK):您从scriptPubKey获取输出BTC地址的公钥 付费脚本散列脚本(P2SH):

我试图找到与比特币块的交易输入和输出相关联的公钥

有人能告诉我这些是在哪里编码的吗


谢谢。

简单地说,一般来说你不能

根据签名模式的不同,您所能得到的只是该公钥的散列,或者更糟糕的是,赎回脚本的散列

更具体地说,在某些情况下,您可以获得一些公钥。 这是您可以获得的部分列表:

  • Pay to pubkey散列脚本(P2PKH):您可以从scriptSig获取输入BTC地址的公钥
  • Pay to pubkey(P2PK):您从scriptPubKey获取输出BTC地址的公钥
  • 付费脚本散列脚本(P2SH):您从scriptSig获取输入BTC地址的公钥
  • 还有其他签名方案,在标准事务中,您应该能够获取源公钥或目标公钥


    您可以做的是为整个区块链编制索引,并填补BTC地址未与其公钥一起包含的交易中的空白。但是,例如,如果您的BTC地址仅出现在P2PKH输出中,您将无法找到该公钥。

    但是,如果交易中没有公钥,比特币系统如何跟踪账户余额?那些允许您通过公钥查询帐户余额的网站是如何工作的?(我在谷歌上搜索了这个:)。感谢您之前的回复和进一步的帮助。比特币作为
    比特币
    节点的网络,根本不跟踪余额。它所做的只是执行共识规则。这两者之间没有这种联系:1。帐户和公钥2。帐户和BTC地址3。BTC地址和余额您可能在比特币中找到的钱包支持只跟踪其所有相关地址。它需要特定的索引(例如,如果您从外部导入密钥,则必须对其重新索引)。请尝试将比特币视为可通过执行加密脚本赎回的输出集合。因此,余额是与特定地址相关的未使用输出的总和。需要明确的是,每个私有ECDSA密钥都有一个对应的公钥。BTC地址是该公钥的哈希。因此,如果您正在实施钱包,您可以轻松跟踪与该密钥相关的所有输出,并最终跟踪到您的BTC地址。Ok。这两种说法是真的吗?1) “帐户”是钱包软件提供的抽象概念。2) 比特币地址是公钥的散列,因此当提交的交易使用相应的私钥编码时,系统通过取消公钥的散列来验证传输是否有足够的余额。这是否意味着每个地址(每个哈希公钥)只能对应一个公钥?换句话说,我猜这意味着哈希对于每个公钥都是唯一的,对吗?Ty1。正确的2。更准确地说,
    bitcoind
    验证一致性规则(例如,输出不能花费两次)。钱包通常会创建一笔交易,前提是它有足够的未使用输出来发送指定数量的BTC。用户通常可以看到总余额,因此他看不到钱包系统在引擎盖下的功能。假设每个公钥只有一个BTC地址。这并不适用于每种地址类型,但大多数情况都是这样。