1)引入监听期(using a listening period)
服务商V在提供服务前等待几秒钟(比如时间为t),在等待时间内监控所有收到的交易,查看是否有哪笔交易试图双花自己之前从A收到的电子货币。因为 一个发起的交易只需要几秒钟就可以传遍网络中的所有节点,在等待期内V很有可能同时收到TRv和TRa,而这两个交易输入是同一个货币。V的邻居节点越多,双花攻击实施成功的概率越小。
但是这有可能被A规避,A只需要在时间t内不发送隐藏的交易TRa,这样V就不会收到TRa了,但是V的邻居节点就会更多的收到TRv,交易TRa在网络中认证成功的概率大大减小。但是这时只要A增加帮助节点H(也就是接收TRa的节点)的数量,还是有机会实施双花攻击。
2) 插入观察者(inserting observers)
V在比特币网络中插入一个受自己控制的节点-----观察者。观察者会把自己接收到的交易直接传给V。因此在几秒内V或者观察者其中一个收到TRa那么就可以发现双花攻击尝试。观察者的数量可以根据需求调整,但是雇佣观察节点也为V带来了额外的负担。
3)节点之间传播双花警告
Communicating Double-Spending Alerts Among Peers。当网络中的一个节点收到两个或者多个交易,这些交易有着同样的输入不同的输出,则该节点立刻向网络中的其他节点传播警告信息。这一措施建立在网络中总有相当多的节点同时接收到TRa和TRv,这要这部分节点中大部分是诚实的,则V就能在短时间内收到双花警告。