验证从交易所购买

问题描述

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

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

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

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

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

解决方法

多个输入

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

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

输出

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

自动验证交易

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

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

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

祝你好运!