验证从交易所购买

Validating Purchases from an Exchange

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

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

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

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

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

多输入

每笔交易可以有多个输入,也就是您看到的地址。具有多个输入的事务计为单个事务。所以矿工费会和单笔输入的交易一样。

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

产出

一笔交易可以有 1 或 2 个输出。收款方一份,给付款方的零钱一份。

自动验证交易

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

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

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

祝你好运!