安全性
安全性与非托管模型
本页说明 NextCryptoPay 对资金能做什么、不能做什么,这些限制如何被写进代码强制执行而不只是口头承诺,以及最坏情况下你会损失什么。它的写法是为了让你去核实,而不是去相信。
平台在技术上能做到什么
- 可以从你提供的公钥派生收款地址,并显示在收银页上。
- 可以读取公开的区块链数据,判断某张账单是否已被支付。
- 可以用带签名的 webhook 通知你的服务器,并在自己的数据库中记录订单状态。
- 无法转移、冻结、撤销或退回任何一笔付款,因为它不持有任何能对区块链交易签名的密钥。这是架构属性,不是我们承诺遵守的政策。
我们为什么拿不走你的钱——机制
支付处理方只有在持有能签名交易的密钥时才可能转移资金。我们一把都没有。你配置钱包时交给我们的,要么是收款地址,要么是扩展公钥(xpub)。两者都是公开数据。xpub 可以派生收款地址,但在数学上无法产生花费这些地址所需的私钥。我们的 worker 只调用只读的区块链接口——就是 Tronscan、BscScan 和 mempool.space 背后的同一份公开数据——平台中没有任何代码路径会构造、签名或广播一笔花费商户资金的交易。
由代码强制执行,而不只是写在这里
- 钱包配置接口会拒绝任何含有私钥材料的扩展密钥——粘贴 xprv 会被拒绝,不会被保存。
- 平台自己的手续费钱包在所有环境中都适用同一条规则:如果该钱包被配置成私钥而不是只读公钥,服务会拒绝启动。
- 在生产环境中,启动校验还会在任何环境变量含有私钥、助记词或种子短语时直接终止进程。
- 链上 worker 只使用只读数据适配器。平台中不存在交易签名或广播代码。
- 一个自动化测试断言两个密钥入口都会拒绝私钥,因此该不变量无法在后续版本中被悄悄移除。另外,在后台把订单标记为已退款只是修改数据库记录——它不会也不可能移动任何一枚币。
唯一的例外,直说
NextCryptoPay 确实会收到 USDT 的地方只有一处,而那不是你客户的钱:你为支付平台费用而预充的余额。那是我们的收入,由你预先支付,与你和客户之间的支付流完全分离。手续费收款钱包在我们的基础设施中同样配置为只读——这正是为什么一旦给它填入私钥,服务就会拒绝启动。与其让你自己发现、再怀疑我们还隐瞒了什么,我们宁愿主动说明这个例外。
如果我们的服务器被攻破,攻击者能拿到什么
- 攻击者可能拿到:商户账号数据、已配置的收款地址和 xpub、订单元数据、webhook 地址和 webhook 密钥。他们可以在未来的收银页上显示错误的收款地址。
- 攻击者拿不到:你的资金,或任何一笔已发生的付款。我们的系统中不存在任何能从商户钱包花费的密钥,因此余额本身没有可偷的东西。
- 这对你意味着:把收银页上显示的收款地址与你配置的钱包核对,并在据此发货之前验证每一个 webhook 签名。
自己去验证
拿你配置的钱包地址,到公开的区块浏览器上查一查——TRC-20 用 Tronscan,BEP-20 用 BscScan,ERC-20 用 Etherscan,比特币用 mempool.space。你会看到付款从你客户的地址直接进入你的地址,中间没有任何跳转。如果这条路径上曾出现过任何我们控制的地址,它会就在那里显示出来。它并不存在。
反面——我们帮不了你的事
- 我们无法撤销或退回一笔付款。链上交易是最终的。退款是你自己从你自己的钱包发出的;我们的后台只是记录你已经这么做了。
- 我们无法找回发往错误地址的资金。如果你配置的钱包地址是错的,付款就会进入那个错误地址并且再也拿不回来。请核对地址,并先用小额测试。
- 我们无法帮你恢复钱包。我们从未拥有过你的密钥。如果你把它们弄丢了,我们帮不上忙——没有任何客服渠道,没有任何例外。
- 我们无法冻结或扣押资金,即使是你本人或第三方提出要求。我们不具备这种能力。
关于审计与匿名,如实说明
NextCryptoPay 尚未接受过第三方安全审计,我们也不会暗示相反的情况。我们同样不公开运营者的身份:本站没有公司名称、注册号或办公地址,因为不存在可供列出的法律实体。在把真实收入接入任何服务(包括本服务)之前,你都应当权衡这两个事实。我们拿得出来代替一个名字和一纸证书的,是一种让我们的身份变得不重要的设计——我们从不持有任何能转移你客户资金的密钥,而上面每一条说法都属于你可以去测试、而不必去相信的那一类。
报告安全问题
请把发现发送到 [email protected],或参阅下面的报告政策。我们会确认收到,并向你同步修复进展。请不要在真实商户账单或他人的付款上做测试。