比特币SPV(简化付款验证)客户端无需信任任何完整节点。它将布隆过滤器提交给整个节点,以仅处理所有块的一小部分。
但是,如果SPV客户端连接到恶意完整节点,并且该恶意完整节点打算不向该SPV客户端发送阻止,该阻止实际上包含此SPV客户端感兴趣的交易,该怎么办?
SPV客户端如何保护自己,使其不会错过来自完整节点的钱包地址的任何交易?
SPV节点连接到多个半信任节点,以防止此攻击。只有一个节点需要诚实。
首先,虽然不能轻易使SPV客户端误认为事务处于阻塞状态,但反之则不成立。一个完整的节点可以简单地通过遗漏来说谎,从而导致SPV客户端认为未发生事务。这可以视为拒绝服务的一种形式。一种缓解策略是连接到多个完整节点,然后将请求发送到每个节点。但是,这可以通过网络分区或Sybil攻击来克服,因为身份本质上是免费的,并且可能占用大量带宽。必须注意确保不会与诚实节点断开客户端。
来自https://bitcoin.org/en/operating-modes-guide#potential-spv-weaknesses