blockchain - 我想解析 blockchain.info API 信息
问题描述
首先,感谢任何可以帮助我的人。
我从事比特币研究,我使用 blockchain.com API 来检索有关比特币交易的一些信息。例如,如果我提取地址 1ADSb1ZZ9k3NsDf3JTQCQ4mb8bthiAN6NJ 的交易,我会得到四条记录,其中一条是交易https://www.blockchain.com/btc/tx/69b98a4476767e6fc40f8c33b3aec7fe83b7a7d3f8c7e922303b00c6be5afbdb
我的问题是,我如何从返回的字段中确切知道地址 1ADSb1ZZ9k3NsDf3JTQCQ4mb8bthiAN6NJ 支付给输出端的哪个地址?以及返回结果中的字段(如 n、tx_index 等)的含义是什么?原始数据可以通过网站访问https://blockchain.info/rawaddr/1ADSb1ZZ9k3NsDf3JTQCQ4mb8bthiAN6NJ
因此,简而言之,我想更多地了解字段的含义以及如何跟踪特定地址的付款,如附加交易示例中的地址,我如何识别每个地址向任何地址汇款..
{'block_height': 598496,
'block_index': 0,
'hash': '69b98a4476767e6fc40f8c33b3aec7fe83b7a7d3f8c7e92203b00c6be5afbdb3',
'inputs': [{'prev_out': {'addr': '1ELHDQXk9oFN3oNekrjsuEgdgs9PREhbP8',
'n': 0,
'script': '76a914923f12b92a44b2bebdee1629dc56b10b1551875b88ac',
'spending_outpoints': [{'n': 0,
'tx_index': 0}],
'spent': True,
'tx_index': 0,
'type': 0,
'value': 342000},
'script': '483045022100ca541d97ac125eab86d1bb7d8cbd57badbaeb03b4a5ca8c3ffb09e6f4287250a02204cc8974b28d2d9d011fab69aa71931078e3fd7b161e8fa00f0529c0202d0c958012102fa53aa0f511a3f17ee404af88c25437efafe22043e2648ca9c84540d0cbfbfc3',
'sequence': 4294967295,
'witness': ''},
{'prev_out': {'addr': '1LcxEYYTmZzpFBT1NRjMHJaPxQdoqjRUNz',
'n': 1,
'script': '76a914d7370e1fa4287252343681b303ffa0ae49aae67488ac',
'spending_outpoints': [{'n': 0,
'tx_index': 0}],
'spent': True,
'tx_index': 0,
'type': 0,
'value': 342000},
'script': '4730440220039c37fd0c0bb6ed6ee8e4d85fdb9b48d26b4d94d9df837e401ab98aaca0495a0220181248ddd1a42e57cea6a5b5f81fa52459c342c24494f72e633d7aa8fe32fd850121028402d935c4360218ff7a1471b0b465e5aacda16e44a9768e19062fd7c5e08701',
'sequence': 4294967295,
'witness': ''},
{'prev_out': {'addr': '1ADSb1ZZ9k3NsDf3JTQCQ4mb8bthiAN6NJ',
'n': 1,
'script': '76a91465137b65f80173c7fd3dcb898f40fd3fed243c7988ac',
'spending_outpoints': [{'n': 0,
'tx_index': 0}],
'spent': True,
'tx_index': 0,
'type': 0,
'value': 342000},
'script': '47304402201f984f7dccb2e536e22e896b3220c84b84cece5327c73a85da8bc6b8dca41bcc022045aa417d039f611779f5603f944e28e7a26094e8a8db44d5c1eb21f36e65ebb9012102b039f2a05824c9172f35a4548732e03724d88283241becc72d0dc2fbef18787c',
'sequence': 4294967295,
'witness': ''},
{'prev_out': {'addr': '1AMk76C3A8pLCfzm9YzaR3x2bdt9RZpNMw',
'n': 0,
'script': '76a91466a56efb73d51f5da3ba4e417f1da6f72d75053488ac',
'spending_outpoints': [{'n': 0,
'tx_index': 0}],
'spent': True,
'tx_index': 0,
'type': 0,
'value': 342000},
'script': '483045022100d936b8baf3b2a85e570a96d73192690b7714604277041a9846454c1a8510688202207aa240aa837ec2fa86e499d36cac42c63c23522a66a3698727ee9abfef0f1b680121020450fbd3d3191b5c632f263676e8a0a4cf286ade84efb3df156426b426660754',
'sequence': 4294967295,
'witness': ''}],
'lock_time': 0,
'out': [{'addr': '1BTa8D9QY38abvApj5yiahh4nJ3XaTfbWA',
'n': 0,
'script': '76a91472b7b93efd311bbce2234913972fe5459d69807d88ac',
'spending_outpoints': [{'n': 9, 'tx_index': 0}],
'spent': True,
'tx_index': 0,
'type': 0,
'value': 133591},
{'addr': '3Nd9T4GqjefS9gzM7SCENGh9tUvUU4Mp8t',
'n': 1,
'script': 'a914e59f42949527e3411b9fbe1cbfba1ec1606d08ff87',
'spending_outpoints': [{'n': 12, 'tx_index': 0}],
'spent': True,
'tx_index': 0,
'type': 0,
'value': 1223069}],
'relayed_by': '0.0.0.0',
'result': -342000,
'size': 666,
'time': 1570559470,
'tx_index': 0,
'ver': 1,
'vin_sz': 4,
'vout_sz': 2,
'weight': 2664}
我感谢您的帮助。我现在正在为此苦苦挣扎
解决方案
比特币交易有一个输入/输出模型,我建议你研究一下:https ://en.bitcoin.it/wiki/Transaction ,它会回答你所有的问题。
我会解释的。您向哪个地址1ADSb1ZZ9k3NsDf3JTQCQ4mb8bthiAN6NJ
付款的问题没有意义,因为它与其他 3 个地址一起向 2 个不同的地址付款。在这种情况下,通常是一个地址收到 1 个金额,第二个地址收到零钱(还给原始所有者)。为了理解我的意思,我将解释如何在比特币上创建交易。
设想
用户 A 想向用户 B 发送 0.1 BTC。为了做到这一点,他们必须收集足够的先前交易输出(他们收到比特币的地方)并将它们用作新交易的输入。因此,假设上周用户 C 向用户 A 发送了 0.05 BTC,用户 D 向用户 A 发送了 0.1 BTC。您可能认为用户 A 可以从用户 D 的交易中获取输出并将其发送给 B,但您必须向矿工收取少量费用,以便将您的交易添加到区块链中的区块中(矿工几乎不会免费开采交易,他们会获得交易费用以及开采区块时的区块奖励)。
因此,为了支付费用,假设它是0.00003 BTC。用户 A 需要使用之前的两个输出,因此总共发送了 0.15 BTC。现在,您必须花费所有输入,因此如果用户 A 只欠 0.1 BTC,显然他们不想发送那么多,因此用户 A 将创建一个向用户 A 发送 0.1BTC 和 0.04997 BTC(0.05 减去交易费)返还给自己。这称为找零地址,通常与用户 A 之前使用的任何地址都不相同。这是出于隐私原因,因此如果有人试图追踪用户的支出,就更难分辨谁收到了比特币,以及谁拿回了零钱。
推荐阅读
- r - 为什么权限被拒绝从 R 写入此文件?
- java - jersey 单路径多类实现(以编程方式选择一个实例)类似于条件依赖注入
- typescript - 如何创建一个部分应用另一个函数的泛型的函数
- r - 带有 R 打印代码的 org-mode 不是图形
- linux - tsch 中的算术
- django - 有没有一种更简洁的方法将对象保存到数据库,而不是像这样一个一个地声明道具:
- c# - 为什么只有部分对象传递给家庭控制器?
- docker - 可以用 Docker Machine 管理 MacOS Docker 桌面吗?
- python - 无法修改谷歌驱动器上存在的 XLSX
- vuejs2 - Vue 和 FileReader API:如何在上传之前等待图像文件?