【问题标题】:Validating Purchases from an Exchange验证从交易所购买
【发布时间】:2021-02-13 05:40:03
【问题描述】:

我是加密新手,但我正在尝试实现一个店面来处理比特币发送/接收。在我的第一次测试中,我将一些 BTC 从我的 coinbase 账户转移到了我个人托管的钱包中。结果似乎是与几个未知的组合交易(无论如何,它们是coinbase的(临时?)钱包)公钥分发到各种输出钱包,包括我在测试中使用的那个.

所以我收到了比特币,但我无法验证它是否来自我,因为 coinbase 的系统混淆了该细节。他们在网站上显示的钱包/钥匙似乎只用于接收加密货币。

想到的唯一解决方案是为每笔交易创建一个不同的钱包,以验证收到的金额是否符合预期,从而消除任何必须信任用户输入的废话。这是标准方法吗?有没有更好的方法来处理这个问题?我认为从那些小钱包转移的成本将是一个相当大的损失。

对于这个项目,我在 .NET Framework 环境中使用 NBitcoin + Blockcypher。

感谢您提前提供任何见解或建议。这是一个值得深入研究的有趣领域。

【问题讨论】:

    标签: .net bitcoin cryptocurrency nbitcoin blockcypher


    【解决方案1】:

    多个输入

    每笔交易可以有多个输入,即您所看到的地址。具有多个输入的交易算作单个交易。因此,矿工费将与单次输入的交易相同。

    进行交易的用户需要拥有每个输入的私钥,因此可以安全地假设所有输入都属于同一用户。

    输出

    一笔交易可以有 1 个或 2 个输出。一份用于收款方,一份用于将零钱返还给付款方。

    自动验证交易

    所有自动支付验证系统(据我所知)都使用“一次性地址”。也就是说,他们创建了一个只使用一次的地址。然后,您可以将该地址链接到某个用户,并检查该地址是否收到了资金,​​而无需了解有关输入地址的任何信息。

    请注意,大多数钱包也会为用户生成大量地址。因此,通常不建议记录用户及其比特币地址。

    由于生成新的比特币地址非常容易,我建议您设置一个系统,为每次收到的付款生成一个新地址。如果您只与您确定的付款方共享此地址,那么付款只能是他们。

    祝你好运!

    【讨论】:

    • 太棒了,谢谢!我对一次性地址模式的保留意见是,它会将可能非常少量的加密货币放入多个位置。但是,我认为您的第一点实际上解决了主要问题,因为所有这些不同的“小钱包”(正如我和我兄弟开始说的哈哈)都可以通过单个多输入交易聚合。再次感谢!
    猜你喜欢
    • 2016-11-21
    • 1970-01-01
    • 1970-01-01
    • 2011-09-30
    • 2016-07-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-07
    相关资源
    最近更新 更多