我想在没有任何第三方帮助的情况下实现比特币支付网关。所以我的想法是,我将公共地址提供给用户,并使用任何 API 检查该地址的余额。
但是有一个问题,我如何知道哪个用户向该地址发送了多少钱。例如,我向 2 个用户提供我的公共地址。他们俩买了同样的东西。一个付了钱,另一个没有付。如何检测哪个用户付款了?
我想为每个订单生成一个新地址并不是一个好主意。
为了做到这一点,我不会仅仅依赖比特币地址。 我将使用我的钱包地址之一、我想要接收的聪数量以及交易 OP_RETURN 中的唯一 ID(客户 ID)生成一笔交易。 伪代码将如下所示:
// server side
transaction = create_transaction()
transaction.add_output(destination_address, amount_in_satoshis)
transaction.add_output(OP_RETURN, "PAYMENT_ID")
// in client side
transaction.sign(private_key)
send_transaction(transaction)
只要确保 OP_RETURN 大小小于 80 字节即可
我想为每个订单生成一个新地址并不是一个好主意。
这实际上是最好的想法,以及它如何在其他地方实施。您应该为每笔交易创建一个新地址。 BIP32详细介绍了大多数钱包使用的从单个主密钥创建多个地址的方法。