【问题标题】:How does payment providers confirm transactions?支付提供商如何确认交易?
【发布时间】:2020-11-17 01:45:55
【问题描述】:

我了解比特币交易可以有多个输入/输出,但我对支付提供商如何确认在第三方钱包中收到付款很感兴趣?

我了解,一旦您进入钱包,您就会对交易有不同的看法,因此您可以向用户提供有关该特定交易的清晰视图 - 因为您知道哪些地址属于该钱包。

但是,有没有办法猜测,或者更接近不属于你拥有的钱包的交易价值的聚合?所以我们可以清楚地向用户展示:发送了多少,从哪里发送以及发送了多少。好的,可能有多个输出,我们必须显示,但我们可以聚合它们并显示交易的总和。 归根结底,一旦您将交易 ID 发送给收件人(作为付款证明),他们就会想查看您的钱包、他们的钱包以及已支付的总金额。不是 15 个输入和另外 29 个输出、确认和所有这些东西。

我明白了,这一切都非常重要而且很重要。

但我正在尝试将一个资源管理器放在一起,它可以更容易地以简单的方式(没有所有这些输入和输出)显示(向比特币普通用户)交易,但更简单的方式是 From、To、价值、费用,仅此而已。

我知道,按照设计,区块链不会那样工作。无论如何,我想在这里向社区询问您是否对如何实现或接近此有任何线索或想法:)

我对这方面的建议和想法持开放态度,干杯!

提前致谢,

【问题讨论】:

    标签: transactions blockchain bitcoin


    【解决方案1】:

    但是,有没有办法猜测,或者更接近不属于你拥有的钱包的交易价值的聚合?

    是的,当然。在钱包里,你可以直接运行命令:

    getrawtransaction <TXID> 1

    对于任何翻译 - 属于你的钱包,或者不属于。

    交易有数组vIn,包含输入列表,在此交易中花费。每个输入都花费了另一个交易的输出,并且输出的值在那个vOut 中指定。 因此,为了计算输入交易价值,您需要迭代交易的vIns。对于每个 In - 您需要提取对 (TXID,n),其中:

    • TXID - 交易的 ID,其输出用于此处。
    • n - 该交易的vOut 内的索引

    之后,您必须获取交易,提取适当的 vOut,并从该 vOut 中提取价值。

    例如,让我们查看 Emercoin 交易 TXID=5cf7bb31bde158a12abb6d4d9ff7acd91a00fc71a2baca601405114322fa171d

    我们何时运行命令:

    $ emc getrawtransaction 5cf7bb31bde158a12abb6d4d9ff7acd91a00fc71a2baca601405114322fa171d 1

    我们会看到很长的 JSON 输出,包含:

     "vin": [
        {
          "txid": "ab16f439260f41d4e086428c78a5ef3fdb31002f4ce942e212b7c6071e52135c",
          "vout": 1,
          "scriptSig": {
            "asm": "3045022100e055effb7427af1a8504387fcdc8ed10859d029695e6a3d10d8e24794c9d55a802205ec2ceb8a937573b306f859bf34654edfc8b9c1716c008c0ae0e4b258b936b0b[ALL] 024d68c6511929667f80caae1f46a5cee3a307503a429f6ccc2ef52e306f966f87",
            "hex": "483045022100e055effb7427af1a8504387fcdc8ed10859d029695e6a3d10d8e24794c9d55a802205ec2ceb8a937573b306f859bf34654edfc8b9c1716c008c0ae0e4b258b936b0b0121024d68c6511929667f80caae1f46a5cee3a307503a429f6ccc2ef52e306f966f87"
          },
          "sequence": 4294967294
        }, 
        {
          "txid": "ab16f439260f41d4e086428c78a5ef3fdb31002f4ce942e212b7c6071e52135c",
          "vout": 0,
          "scriptSig": {
            "asm": "304402206c177d2be96bf666c147e0c13561d7d2cf915f8f8f1f16aeaa805383acc5572e02206104a70e6781d151476bd0345f27adaf896adb505f0fd285adcaddf4474f7de0[ALL] 03370ebd7dae0e80420ebf7d6326759517d8e58821337b476b2656f739bf0082de",
            "hex": "47304402206c177d2be96bf666c147e0c13561d7d2cf915f8f8f1f16aeaa805383acc5572e02206104a70e6781d151476bd0345f27adaf896adb505f0fd285adcaddf4474f7de0012103370ebd7dae0e80420ebf7d6326759517d8e58821337b476b2656f739bf0082de"
          },
    

    如您所见,此交易有 2 个来自同一个 TX 的输入:

    • ab16f439260f41d4e086428c78a5ef3fdb31002f4ce942e212b7c6071e52135c, 1
    • ab16f439260f41d4e086428c78a5ef3fdb31002f4ce942e212b7c6071e52135c, 0

    使用命令提取它们:

    $ emc getrawtransaction ab16f439260f41d4e086428c78a5ef3fdb31002f4ce942e212b7c6071e52135c 1

    你会看到 vOut 数组,包含值:

      "vout": [
        {
          "value": 0.000100,
          "n": 0,
          "scriptPubKey": {
            "asm": "2 OP_DROP 30354830384b35354449 9999 OP_2DROP 747970653d74657374696e670a2c706f736974696f6e5f69643d313031340a2c706f736974696f6e5f6e616d653dd09cd0bed0b4d0b5d0bbd0b820d0a1d092d09a2e20d09fd180d0b5d0b8d0bcd183d189d0b5d181d182d0b2d0b020d0b820d0bdd0b5d0b4d0bed181d182d0b0d182d0bad0b82028d0a4d0b8d0bd2e20d090d0bad0b0d0b4d0b5d0bcd0b8d18f290a2c76616c75653d36340a2c656e645f74696d653d313539363033323330313532300a2c636f6d70616e793d46696e61636164656d79 OP_DROP OP_DUP OP_HASH160 038411f3dfac30f42e999b87b165046bc205919f OP_EQUALVERIFY OP_CHECKSIG",
            "hex": "52750a30354830384b35354449020f276d4cc4747970653d74657374696e670a2c706f736974696f6e5f69643d313031340a2c706f736974696f6e5f6e616d653dd09cd0bed0b4d0b5d0bbd0b820d0a1d092d09a2e20d09fd180d0b5d0b8d0bcd183d189d0b5d181d182d0b2d0b020d0b820d0bdd0b5d0b4d0bed181d182d0b0d182d0bad0b82028d0a4d0b8d0bd2e20d090d0bad0b0d0b4d0b5d0bcd0b8d18f290a2c76616c75653d36340a2c656e645f74696d653d313539363033323330313532300a2c636f6d70616e793d46696e61636164656d797576a914038411f3dfac30f42e999b87b165046bc205919f88ac",
            "reqSigs": 1,
            "type": "name_pubkeyhash",
            "addresses": [
              "EHUVjZ2cyTqjvqxkg7h587XeEMAGpsi4sX"
            ]
          }
        }, 
        {
          "value": 1.509200,
          "n": 1,
          "scriptPubKey": {
            "asm": "OP_DUP OP_HASH160 085caddacb878333658194f96ec45b035be541d8 OP_EQUALVERIFY OP_CHECKSIG",
            "hex": "76a914085caddacb878333658194f96ec45b035be541d888ac",
            "reqSigs": 1,
            "type": "pubkeyhash",
            "addresses": [
              "EHv7vaRDN1q7b7XsmRYEugj6MuZpADbvYy"
            ]
          }
        }
      ],
    

    将所有这些值相加,您将得到一个总的 TX 输入值(输出值可以更少,因为 TX FEE)。

    【讨论】:

    • 是的,我知道您可以从钱包中获取这些值。但是我们正在尝试做的是以一种简单的方式汇总交易,并能够向任何用户显示,钱包之外,究竟交易了多少,以及该特定交易的资金去向。
    • 您可以将钱包用作区块链存储。此后,使用 JSON 向钱包发送请求,提取答案并使用它们。例如 - 部署到 SQL DB。
    猜你喜欢
    • 1970-01-01
    • 2011-03-29
    • 2011-06-27
    • 2022-07-26
    • 2016-03-17
    • 1970-01-01
    • 2021-08-01
    • 2014-06-13
    • 2013-10-28
    相关资源
    最近更新 更多