0

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

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

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

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

感谢您提前提供任何见解或建议。这是一个有趣的领域。

4

1 回答 1

0

多个输入

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

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

输出

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

自动验证交易

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

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

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

祝你好运!

于 2021-02-13T16:54:05.517 回答