노드가 많으면 TPS가 빠를 순 없는건가요?

흔히 이오스의 TPS가 빠른 이유로 적은 수의 노드를 운영하고 있기 때문이라고 합니다.

노드가 많으면 TPS가 빠를 수는 없는건가요?

    1개의 답변이 있어요!

    • 어떤 합의 알고리즘을 활용하느냐에 따라서 노드의 수가 많더라도 빠른 TPS를 확보하는 것이 가능합니다. 예를 들면 그러한 알고리즘에 '아발란체(Avalanche)'가 있습니다.

      이러한 아발란체 알고리즘은 DAG와 BFT를 결합한 방식으로 이루어지는데, 우선 DAG 알고리즘은 특정한 블록 생성자를 선택하지 않고 블록을 생성하는 대신 DAG 원장에 거래 내역을 기록하며 하나의 노드가 다른 많은 노드들과 연결되며 동시에 다른 노드들을 검증하는 것이 가능한 알고리즘입니다.

      또한 비잔틴 장애 허용(BFT) 합의 알고리즘은 합의에 참여하는 노드들 중 3분의 2가 합의할 경우 3분의 1에 문제가 있더라도(비잔틴 노드-악의적 노드) 나머지 3분의 2에 의해 결과적으로 합의에 도달하는 것이 가능한 것을 의미합니다.

      따라서 이러한 아발란체 합의 알고리즘에 따르면, 특정한 블록 생성자의 선택 없이 여러 노드가 동시에 합의 과정에 참여하며 확장되는 네트워크를 구성하기 때문에 노드의 수가 많아지라도 TPS가 느려지지 않으며 빠른 TPS로 거래를 처리하는 것이 가능합니다.

      그리고 BFT 합의 알고리즘의 검증을 빠르게 여러 번 반복하여, 신뢰할 수 있는 합의에 빠르게 도달할 수 있고 거래 내역에 확정성을 부여해 보안성을 확보할 수 있다는 장점이 있습니다.

      구체적으로 설명드리자면, 우선 Avalanche의 의미를 사전에서 찾아보면 '눈사태'라는 의미가 있습니다. 일단 먼저 눈사태의 특성에 대해 한 번 생각해 볼 필요가 있습니다. 눈사태의 특성은

      1. 시작은 작은 움직임에 불과하다.

      2. 그 작은 움직임으로 인한 힘이 다른 눈송이에 전달되고 빠르게 확산되며, 매우 빠른 시간 안에 눈덩이 처럼 불어나 어마어마하게 큰 눈사태로 변해 어느 한 방향으로 와르르 쏟아져 내린다.

      라고 할 수 있겠습니다. 이 아발란체(눈사태) 합의 알고리즘은 이런 눈사태가 만들어지는 방식으로 합의에 도달하게 됩니다.

      어떤 트랜젝션이 요청되고 각 노드들이 각각 이 거래가 유효한지 검증을 하게 되고 노드에 따라 긍정 또는 부정의 결정을 하게 된다고 해 보겠습니다.

      아발란체 합의 알고리즘에서는 이런 과정(BFT)이 빠르게 굉장히 여러번 진행됩니다. 이렇게 같은 검증을 여러 번 하게 되다 보면 일정한 흐름이 생기게 됩니다.

      예를 들어 A가 발생시킨 트렌젝션이 첫 번째 합의에서 긍정과 부정이 1:1이면 바로 다음 합의로 넘어가고 만약 어느 한 쪽이 많았다면 그 쪽에 가중치를 부여한 후 여기서 결론을 내리지 않고 이 작업을 계속 반복합니다.

      가중치를 부여하며 반복을 하다보면 긍정이든 부정이든 어느 한 쪽이 점점 더 많아지게 됩니다. 그러다 보면 마치 눈송이의 작은 움직임이 점점 커지다가 큰 눈사태가 되어 한 방향으로 쏟아져 내리듯이 완전히 긍정 혹은 부정의 의견으로 완전한 합의가 이루어지는거죠.

      이렇게 완전한 합의에 도달하게 되면 보안성이 강화됩니다. 정보를 위, 변조 시키고 싶으면 마치 눈사태를 일으키듯 새로운 눈사태를 만들어서 한 번 완전한 합의에 도달한 것을 반대로 완전하게 뒤집어야 하기 때문입니다. 이것은 흑을 완전히 백으로 만들거나 백을 완전히 흑화시켜야 하는 작업이 아닌가 싶습니다.

      끝으로 아발란체 합의 알고리즘을 이용하면 블록체인 네트워크가 모두 최종 완결성에 도달하여 지불이 처리되고 승인되는데 2초 정도가 소요되고, 블록체인 전체적으로는 초당 1000-10000 회의 트랜젝션을 처리할 수 있는 속도가 나옵니다. 또한 블록 생성자를 선택하기 위한 경쟁이 없으므로 채굴에 투입되는 자원의 소모가 거의 없으므로 환경 친화적이라는 장점도 있겠습니다.

      답변이 도움이 되길 바랍니다.