이더리움2.0 블록체인에서 검증자 노드 75대 처벌, 왜 발생했나?

By 강민승   Posted: 2021-02-05
출처: 비콘체인 익스플로러

작년 말 런칭된 이더리움2.0(ETH) 블록체인에서 블록을 생성하는 과정에 비정상행위가 포착돼 여기에 연루된 75개의 노드가 퇴출당하는 사고가 지난 3일 발생했다. 이더리움2.0에서 블록을 생성하는 블록 검증 노드 수십대가 한꺼번에 처벌 당한 경우는 이번이 처음이다. 이더리움2.0에선 채굴자가 아니어도 누구나 블록 생성 과정에 참여해 이더리움 코인으로 보상을 받을 수 있지만 비정상적인 동작이 발생하면 예외없이 처벌하기 때문에 노드를 운영하는 경우 주의가 각별히 요구된다.

이더리움2.0에선 누구나 32ETH(한화 약 5400만원)를 보증금으로 예치하고 프로그램을 켜두면 이더리움2.0의 블록을 생성하는 과정에 참여해 보상을 받을 수 있다. 수익률은 연간 약 10%정도다. 이를 스테이킹이라고 한다. 이더리움2.0의 스테이킹 서비스에선 올바른 블록을 생성하는 노드는 코인으로 보상을 주지만 예기치 않은 동작을 한 노드는 보증금의 일부를 삭감해 처벌하는 구조다. 사용자가 스테이킹에 참여하는 과정은 실제론 블록을 생성하기 위한 간단한 문제를 컴퓨터가 정해진 시간 내에 풀고 정답에 투표하는 방식으로 이뤄진다. 

이번에 노드를 비정상적으로 운영해 처벌 당한 곳은 미국의 스테이킹 풀인 스테이크드로 밝혀졌다. 스테이킹 풀이란 사용자로부터 투자금을 모집해 노드를 운영하고 스테이킹으로 획득한 이익을 사용자와 공유하는 업체를 말한다. 이번에 스테이크드가 운영하던 노드 75대는 블록을 생성하는 과정에서 값을 중복으로 투표해 올바른 블록 생성을 방해한 것으로 밝혀졌다. 문제를 풀고 답안지의 선택지마다 중복으로 체크한 셈이다. 검증 노드가 투표를 이같이 제대로 하지 않으면 올바르지 않은 ‘가짜 블록’이 생성될 수 있어 치명적이다. 후보자로 올라온 블록 중에서 표를 더 많이 얻은 블록이 최종적으로 생성되는 구조기 때문이다. 중복 투표를 막지 않으면 블록 검증자가 아무 블록에나 전부 투표하고 보상 코인을 몽땅 획득하는 편법도 가능해진다. 

반면 스테이크드는 부검 문서를 통해 스테이크드의 노드가 고의적으로 중복 투표를 한 게 아니고 성능을 높이며 발생한 기술적인 오류라고 지난 3일 밝혔다. 스테이크드는 “스테이크드에서 운영하는 노드는 검증 스케줄에 맞춰 블록을 제때 검증하도록 성능을 우선적으로 최적화했다”며 “클라이언트 프로그램을 사용하는 과정에서 슬래싱 방지 기능이 노드의 성능을 저하시킨다고 판단했고 기능을 꺼두었다. 해당 기능을 끄고 나자 검증 노드의 성능은 올라갔지만 비정상적인 작동의 빈도도 높아졌다. 이번의 경우처럼 검증 노드가 블록에 투표를 과거에 했는지 확인하지 못해 중복으로 투표하는 경우도 생겼다”고 말했다. 

이더리움2.0에 접속하는 클라이언트 프로그램에는 블록 검증자의 중복 투표를 방지하기 위한 자체적인 데이터베이스가 탑재돼 있다. 투표 기록을 대조해 중복 투표를 방지하기 위한 일종의 안전 장치인 셈이다. 하지만 스테이크드는 성능 저하의 이유로 사용하지 않았고 끝내 이같은 문제가 발생했다는 설명이다. 응답 속도를 높여 노드의 투표율을 높였지만 안정성이 떨어지면서 예기치 못한 동작으로 이어졌다는 분석이다.

이더리움2.0의 비콘체인에는 비정상적인 검증자를 처벌하는 메커니즘을 둘 탑재하고 있다. 바로 페널티와 슬래싱이다. 먼저 검증자 노드가 천재지변 등으로 오프라인이 되거나 검증 노드가 작동하지 않으면 일종의 벌금처럼 페널티가 부과된다. 일시적인 정전 등으로 오프라인이 되는 경우엔 자금 손실로 이어지지 않지만 일주일이 넘는 긴 기간 동안 오프라인 상태가 되면 사용자의 자금이 삭감될 수 있다. 특히 검증자가 잠정적인 블록마다 이중으로 투표하는 등 비정상적인 행위를 한 경우엔 ‘슬래싱’ 처벌을 받게 된다. 자금이 동결되고 검증인 목록에서 퇴출당하는 강도 높은 처벌이다.

이번에 75대의 노드에 페널티로 부과된 벌금은 약 0.075ETH(한화 약 12만7500원)으로 추정된다. 다만 75개의 노드가 슬래싱 처벌을 받으면서 보증금으로 예치한 2400ETH(한화 약 40억원)는 동결됐다. 이렇게 동결된 자금은 이더리움2.0의 1단계가 런칭되기 전까진 회수할 수 없을 예정이다. 이더리움2.0은 현재 0단계에 머물러 있다. 이더리움 1단계가 등장하기까지는 최소 수 년이 소요될 것으로 예상돼 묶인 자금은 한동안 사용할 수 없을 예정이다. 스테이크드는 슬래싱 당한 사용자의 이더와 미래에 받지 못하는 블록 보상 등 피해 금액을 모두 보상할 계획이다.

김준수 스테이크피시 운영관리자는 “스테이킹 업체는 노드를 운영하는 효율에만 집중하지 말고 노드의 안정성을 높여 슬래싱 처벌을 받지 않도록 집중해야 한다. 이더리움 스테이킹 서비스의 경우 효율성 보다 슬래싱 처벌을 방지하기 위한 노력이 더 중요하다. 검증 노드에서 온라인 연결이 끊겨 발생하는 페널티보다 비정상적인 행위를 처벌하는 슬래싱의 피해가 훨씬 크기 때문”이라고 강조했다. 

그는 “개발자가 해결하지 못한 버그도 존재할 수 있음에도 스테이킹을 서비스를 대행하는 스테이킹 풀은 효율성을 높이고자 클라이언트에 구현된 안전 장치인 슬래싱 방지 기능을 아예 꺼두는 경우도 있다. 때문에 사용자는 스테이킹 풀을 사용할 때 업체가 슬래싱 방지를 위해 어떤 솔루션을 사용하고 있는지 또 보상 정책이 제대로 있는지 확인해야 한다. 슬래싱을 방지하려면 사용자와 노드를 운영하는 업체 모두 주의가 각별히 필요하다”고 조언했다.

[강민승 기자]