이클립스 공격은 공격자가 네트워크상의 노드를 방해하기 위한 공격으로, 정교한 공격을 준비하기 위해 네트워크에 혼란을 야기시킬 때 주로 사용한다. 이클립스 공격은 전체 네트워크를 공격하기 보다는 특정 노드를 격리해 장착한 다른 노드로부터 정보를 수신받지 못하게 여러 악의적인 공격자 노드가 네트워크를 독점한다. 이 공격노드들은 가짜 트랜잭션이 담긴 블록을 격리한 노드들에게 브로드캐스트하여 이중 지불 공격을 가능하게 만든다.
블록체인에서 노드는 다른 노드들과 동시적으로 연결될 수 없으며, 제한된 인접 노드들과 연결되어 있다. 노드들이 데이터를 공유할 때는 모두가 동시에 공유하는 것이 아니라, 하나의 노드에서 주변 노드로 점점 퍼져나가는 브로드캐스트 방식을 사용한다. 공격자는 공격 대상의 이웃 노드들을 자신의 노드로 구성하여, 공격 대상 노드가 가짜 트랜잭션이 담긴 블록을 받도록 한다. 이를 통해 다음과 같은 공격 효과가 발생한다.
엔지니어링 블록 레이스(Engineering Block Races): 블록 레이스는 채굴 노드들이 가장 먼저 유효한 논스값을 찾아 블록을 생성하는 경쟁을 의미하는데, 이클립스 공격에서는 이클립스 공격 대상 노드와 공격자의 노드가 동시에 블록을 생성한 경우, 공격 대상 노드가 생성한 블록을 숨김으로써 해당 블록은 고아 블록이 되고, 자신의 블록이 네트워크에 올라갈 수 있도록 한다.
채굴 파워 분할(Splitting Mining Power): 공격자가 51% 공격을 실행하기 위해 네트워크의 전체 채굴 파워를 쪼갤 수 도 있다. 이러한 방식으로 공격자의 채굴 파워가 네트워크의 쪼개진 채굴 파워보다 커지게 되면 51%공격을 개시할 수 있다.
N- 컨펌 이중 지불(N-Confirmation Double Spending): 만약 가상화폐를 사용하여 가게에서 물건을 사게 된다면, 가게 주인은 실제로 블록이 컨펌되기 전까지는 물건을 제공하지 않을것이다. 블록의 재구성이 발생할 수도 있기 때문이다. 그러나, 이클립스 공격자에 의해 여러 채굴 노드들이 공격 대상이 되어 격리된 경우, 공격자는 자신의 트랜잭션을 이클립스 공격 대상인 채굴 노드에게 제공하여 블록체인에 추가하도록 한다. 이 노드들은 이후에도 블록을 계속 생성하면서 공격자의 트랜잭션이 든 블록이 컨펌되도록 한다. 이클립스 공격 대상이 된 가게 주인은 트랜잭션이 들어있는 블록이 컨펌되는 것을 보고 물건을 제공한다. 이후, 공격자가 격리된 노드들이 만든 블록체인을 전체 네트워크에 공유하면, 해당 블록체인의 노드들은 고아 블록이 되면서 트랜잭션 자체가 취소되게 한다.
무작위 노드 선택: 노드가 피어를 선택할 때 무작위가 아닌 경우, 공격자가 자신 주변의 노드를 공격 대상으로 선택할 수 있으므로, 노드가 피어를 랜덤으로 선택하게 하여 공격자가 공격 노드를 정하기 어렵게 만들 수 있다.
정보 저장: 노드가 다른 노드에 대한 정보를 기억하도록 하면, 해당 노드가 네트워크를 떠났다가 재접속했을 때 이전에 연결했던 정직한 노드와 연결하여 정직한 피어 관계를 지속할 수 있다.
연결 수 늘리기: 하나의 노드에 연결된 피어의 개수를 늘리면, 노드가 정직한 노드에게 연결될 가능성 역시 커진다.