코드체인 사회를 건강하게 유지하기 위해서 사용자에게 직접 보이지는 않지만, 다방면으로 활동하고 있는 감시 봇들이 있습니다. 이번 포스트에서는 보이지 않는 곳에서 열심히 땀흘리고 있는 감시 봇들에 대해서 소개하려고 합니다.
1. 블록 생성 감시 봇
고크립토봇 — 레이싱봇
텐더민트(Tendermint) 합의 알고리즘 하에서 구동되는 코드체인의 네트워크가 건강하게 유지되고 지속적인 블록 생성을 하기 위해서는 참여하는 검사 노드(validating node)들의 역할이 중요합니다. 검사 노드는 차례로 블록을 제안하고, 다른 노드들은 제안된 블록들을 철저하게 검증하고 이에 따라 블록을 확정할지 투표합니다. 이들이 검증을 게을리 한다면 네트워크는 건강하게 유지될 수 없을 것입니다. 국회에서 국회의원들의 출석률이 저조하거나 혹은 회의 도중에 잠을 자서 투표를 하지 못한다면 정책이 제대로 제안되지 못하고, 결정되지 못하는 것과 같은 원리죠.
이러한 불상사를 막기 위해서 블록 생성 감시 봇이 존재합니다. 이 봇은 코드체인 팀에게 다음 세 종류의 알림을 제공해 줍니다. 알림을 받으면 관리자들이 투입되어 어떤 상황인지를 진단합니다.
첫째, 한 시간이 지나도 새로운 블록을 받아오지 못하는 경우입니다. 이는 봇이 감시하고 있는 노드가 동작하지 않고 멈추어 있다는 것을 의미하기 때문에 관리자가 대응해야 하는 상황입니다.
둘째, view가 높아질 경우입니다. view는 텐더민트 합의 한 라운드이고, 합의에 도달하지 못하면 view가 높아지죠. 현재 알림은 view가 3보다 높아질 때 보내도록 설정되어 있지만, 상황에 따라 유동적으로 조절할 계획입니다.
셋째, 노드가 잠자고 있는 경우 알림을 보냅니다. 노드가 잠잔다는 것은 합의 단계 중 어떤 노드에게서 프리커밋(precommit)에 해당하는 표가 도달하지 않았을 때를 말합니다. 한 노드에게서 한 번 표가 도달하지 않는 것은 일시적인 네트워크 문제가 원인일 수 있으므로 알림을 보내지 않지만, 한 노드가 연속해서 5번 이상, 혹은 여러 노드가 동시에 표를 보내지 않는 경우에는 알림을 보냅니다.
2. 인덱서 감시 봇
고크립토봇 — 자동거래봇
국회의원들이 투표를 잘 수행하더라도, 통과된 법안들이 어떤 내용인지 국민들에게 잘 전달되는 것 역시 매우 중요합니다. 이런 과정이 없다면 일반 사회 구성원들은 어떤 것들이 합의되었는지를 전혀 모를테니까요. 코드체인에서 어떤 블록들이 확정되었고, 해당 블록에는 어떤 거래들이 포함되었는지에 대한 정보들을 노드에서 가져와 유저들이 직접 접근하는 익스플로러에 전달해주는 역할을 “인덱서”가 담당하고 있습니다.
아무리 코드체인이 블록 생성을 원활히 한다고 한들, 인덱서가 없다면 블록에 대한 정보들은 쉽게 눈으로 확인할 수 없습니다. 익스플로러 상에 새로운 정보가 갱신되지 못한다면 유저들은 코드체인이 오류로 멈추었다고 생각하겠죠. 따라서 인덱서에 대한 감시도 가볍게 할 수 없습니다. 인덱서 감시 봇은 인덱서가 잘 살아서 동작하고 있는지, 그리고 최신의 코드체인 상태와 잘 동기화 되고 있는지를 감시하며 다음세 종류의 알림을 보냅니다.
첫째, 인덱서가 살아서 동작하는지를 확인하고, 멈췄을 시 알림을 제공합니다. 네트워크 상황에서 흔히 사용하는 방법으로 ping 을 보내어 응답이 오는지를 확인하는 방법입니다. 만약 감시 봇이 ping하였는데, 응답이 없다면 알림을 보내어 관리자로 하여금 인덱서가 재동작하도록 만듭니다.
둘째, 인덱서에서 동기화 받은 블록과 코드체인 노드들의 최신 블록 간에 번호 차이가 클 때 알림을 보냅니다. 코드체인 노드에서 블록을 빠르게 동기화하지 못해서 최신 정보를 제공해 주지 못한다면, 유저는 자신이 작성한 거래가 잘 성사되었는지에 대해 혼동할 가능성이 있습니다. 따라서 50 블록 번호 이상 차이가 벌어진다면 알림을 보냅니다.
셋째, 인덱서가 블록 동기화 받는 노드의 블록 번호가 갱신되지 않을 때 알림을 보냅니다. 노드와 인덱서에서 동기화 받은 블록 번호가 차이가 없다고 하더라도, 인덱서가 의존하고 있는 노드가 잠자고 있거나 코드체인 네트워크와 동기화되어 있지 않다면 인덱서는 최신 정보를 제공하지 못하게 됩니다. 따라서 인덱서 감시 봇은 이 경우에도 관리자에게 알림을 보내어 인덱서가 의존하고 있는 노드가 신속히 진단될 수 있도록 도와줍니다.
3. 수수료 감시 봇
고크립토봇 — 드래곤봇
사회 구성원들을 대표하여 회의를 진행하고 그에 따라서 법안을 확정한 국회의원들은 세금으로 급여를 보상받습니다. 구성원들의 세금이 올바르게 분배되어야 의원들과 구성원들 모두 만족스러운 사회가 될 것입니다. 블록체인에서도 비슷합니다. 보상 체계는 주주가 코드체인의 지분을 소유할 동기, 그리고 검사 노드들로 하여금 열심히 블록들을 검증하고 확정할 동기를 제공합니다. 만약 보상이 적절하게 분배되지 못한다면 지분을 소유한 주주들과 검사 노드들의 참여 의지를 떨어뜨리고, 사용자들 역시 수수료 지불을 주저하게 될 것입니다.
수수료 감시 봇은 유저들이 지불한 수수료인코드체인 코인(CCC)의 분배를 검사합니다. 다른 감시 봇들이 노드들의 운영 상태를 감시하고 있는데 비해, 이 봇은 코드체인에 구현되어 있는 수수료 분배 시스템에 내재되어 있을지도 모르는 버그를 감시합니다. 분배 시스템은 코인과 직결되어 있기 때문에 특별히 수수료 감시 봇이 나서서 감시하는 것입니다.
코드체인에서는 거래의 종류마다 서로 다른 최소 수수료가 정해져 있습니다. 코드체인은 한 블록에 포함된 거래들의 종류를 모두 모아 이 최소 수수료에 해당하는 금액들을 합산합니다. 합산된 금액은 주주들의 지분가중치에 비례하여 그들에게 분배되고, 초과 금액은 해당 블록을 작성한 블록 작성자(author)에게 분배됩니다.
수수료 감시 봇은 이 규칙에 따라서 수수료가 잘 분배되고 있는지를 코드체인에 포함된 각 블록들을 추적해가며 본인이 가진 계산 시스템과 비교하여 확인하고, 차이가 발생하면 알림을 제공합니다.
지금까지 코드체인을 감시하며 보이지 않는 곳에서 열심히 일하고 있는 세 종류의 봇들을 살펴보았습니다. 이 세 종류의 감시 봇들은 모두 코드체인의 테스트 네트워크인 코기 네트워크에서 활동하고 있습니다. 메인 네트워크의 패치 이전에 먼저 문제 상황을 진단하고 해결하고 있으니, 사용자들은 코드체인을 더욱 신뢰하고 사용할 수 있겠죠? 코드체인은 이런 봇들을 바탕으로 앞으로도 건강한 블록체인 네트워크를 유지해 나갈 것입니다.