Validator’s Note 5 — Interchain Security(ICS)를 톺아보자

Youngbin Park
DSRV
Published in
11 min readJan 26, 2023

Disclaimer: 이 글은 정보 전달을 위한 목적으로 작성되었으며, 특정 프로젝트에 대한 투자 권고, 법률적 자문 등 목적으로 하지 않습니다. 모든 투자의 책임은 개인에게 있으며, 이로 발생된 결과에 대해 어떤 부분에서도 DSRV는 책임을 지지 않습니다. 본문이 포괄하는 내용들은 특정 자산에 대한 투자를 추천하는 것이 아니며, 언제나 본문의 내용만을 통한 의사결정은 지양하시길 바랍니다.

2023년 1분기 코스모스 허브에는 Interchain Security(ICS)라는 새로운 기능이 도입될 예정입니다. 얼마 전 코스모스 허브에서는 Incentivized Testnet Program인 Game of Chains가 ICS를 테스트해 보기 위하여 진행되기도 하였습니다. 또한 최근 코스모스 생태계에서는 리퀴드 스테이킹 플랫폼인 Stride와, DEX인 Duality 그리고 스마트 컨트랙트 플랫폼인 Neutron까지, 코스모스 허브의 ICS를 활용하는 다양한 서비스들이 런칭을 준비하고 있습니다.

ICS

PoS기반 체인에서 체인의 보안성은 스테이킹된 토큰의 가치를 의미합니다. ICS는 코스모스 허브와 같이 비교적 높은 TVL을 가진 체인의 보안성을 비교적 낮은 보안성을 가진 체인들에 공유해 주기 위한 기능입니다. 이더리움의 보안성을 차용하는 롤업 등의 레이어 2 솔루션 등도 그 방식은 다르지만 ICS와 같은 공유 보안의 일종으로 이해할 수 있습니다.

ICS는 코스모스 허브와 같이 보안성이 높은 프로바이더(Provider) 체인의 밸리데이터에 스테이킹된 토큰량, 즉 보팅 파워를 이용하여 보안성이 낮은 컨슈머(Consumer) 체인의 블록을 대신 검증해 주는 방식을 사용합니다. 이처럼 ICS는 새로이 시작하는 체인들이 보안성을 높이는 과정을 안전하게 부트스트래핑 할 수 있다는 장점을 가지고 있습니다.

V1: Replicated Security

ICS는 현재 V1 (Replicated Security), V2 (Partial Validator Set), V3 (Layered Security) 3단계의 로드맵을 가지고 있습니다. [1]

프로바이더 체인이 새로운 컨슈머 체인에 보안을 공유해 주기 위해서는, 프로바이더 체인의 밸리데이터 2/3 이상의 동의를 받아 거버넌스를 통과해야 합니다. 첫 단계인 V1에서는 컨슈머 체인이 거버넌스를 통과하면, 프로바이더 체인의 밸리데이터 세트 전체를 가지고 컨슈머 체인을 검증합니다. V1은 전체 밸리데이터 세트를 그대로 반영한다는 점에서 Replicated Security라고 불립니다.

따라서 프로바이더 체인의 전체 밸리데이터의 2/3이상이 컨슈머 체인의 노드를 실행시켜야 컨슈머 체인의 블록이 생성될 수 있으며, 체인이 일단 시작하게 되면 컨슈머 체인을 실행하지 않는 밸리데이터들은 슬래싱을 받게 됩니다. 이 때문에 모든 프로바이더 체인의 밸리데이터는 컨슈머 체인을 검증하는데 필요한 새로운 하드웨어, 설정 및 유지관리에 대한 리소스를 추가적으로 부담해야 합니다. 따라서 컨슈머 체인은 밸리데이터들이 체인을 동작시켜줄 인센티브로 컨슈머 체인의 블록 리워드 및 수수료의 일부를 밸리데이터에게 제공할 수 있습니다.

Cross Chain Validation(CCV)은 ICS 라는 상위 개념의 기능을 활성화하기 위한 실제 구현되고 있는 IBC 프로토콜입니다. 현재는 ICS V1에 대한 CCV 스펙 및 구현이 진행되어 있으며, 계속 업데이트가 이루어지고 있습니다. 코스모스 허브의 Game of Chains도 ICS V1의 구현을 가지고 진행되었습니다. 오늘은 DSRV 밸리데이터 팀이 Game of Chains에 참가하며 알아보았던 CCV 스펙 및 구현을 기반으로 코스모스 허브에서 ICS V1이 어떻게 작동하는지를 한번 살펴보려 합니다.

CCV

CCV는 다음 4가지의 유형의 작업을 처리합니다. 프로바이더 체인과 컨슈머 체인은 각각 다른 기능을 하는 CCV 모듈을 가지고 작동합니다. [2]

  • Channel Initialization
  • Validator Set Update
  • Consumer Initiated Slashing
  • Reward Distribution

채널 초기화 (Channel Initialization)

프로바이더 및 모든 컨슈머 체인은 IBC 채널의 일종인 CCV 채널을 연결해야 ICS를 시작할 수 있습니다. 이는 두 체인의 CCV 모듈이 밸리데이터 업데이트 등을 위한 메세지, 즉 패킷을 교환할 채널입니다. CCV 채널 초기화 및 연결은 기존 IBC 채널 설정 사양과 유사한 부분이 많습니다. CCV 채널은 토큰을 전송하던 기존의 IBC 채널과 유사하지만 다양한 종류의 더 많은 패킷들을 전달하게 됩니다. CCV 채널 초기화에서는 컨슈머 체인으로 직접 시작하는 체인과 컨슈머 체인으로 전환하는 기존 체인을 구분하고 있습니다.

거버넌스가 통과하여 프로바이더 체인 밸리데이터들이 컨슈머 체인을 돌리기 시작했다고 하더라도, IBC 릴레이어를 통해 CCV 채널이 초기화되지 않으면 ICS가 활성화 되었다고 할 수 없습니다. 따라서 CCV 채널은 컨슈머 체인이 시작한 후 일정 시간 내에 연결되어야 하고, 제한 시간내 CCV 채널이 연결되지 않은 컨슈머 체인은 제거 됩니다.

밸리데이터 세트 업데이트 (Validator Set Update)

프로바이더 CCV 모듈은 컨슈머 CCV 모듈에 VSC(Validator Set Change) 패킷을 전달하여 밸리데이터 세트를 업데이트해줍니다. 이를 위해 프로바이더 체인의 CCV 모듈은 스테이킹 모듈의 보팅 파워가 변화할 때마다 CCV 채널로 VSC 패킷을 전송합니다. VSC 패킷을 수신한 컨슈머 체인의 CCV 모듈은 변화한 밸리데이터의 보팅 파워만 저장하여 업데이트 합니다. (V1에서 컨슈머 체인은 별도의 스테이킹 모듈 없이 CCV모듈이 ABCI를 통해 컨슈머 체인의 Tendermint를 바로 업데이트합니다.)

출처: cosmos/ibc repo

또한 기본적으로 프로바이더 체인과 컨슈머 체인의 블록이 생성되는 속도가 다를 수 있으며, IBC 채널의 문제로 인하여 VSC 패킷의 도착이 지연되는 경우가 발생할 수 있습니다. 따라서 컨슈머 체인이 한 블록에 여러 VSC를 받게 되는 경우에는 해당 블록 마지막에서 한번에 적용됩니다.

일반 코스모스 체인과의 차이점은 위임자가 언스테이킹 할 때, 프로바이더 및 컨슈머 체인 모두에서 언본딩 기간(Maturity)이 지나야 비로소 언본딩이 완료될 수 있다는 것입니다. 따라서 프로바이더 체인에서 전송한 VSC 패킷에 언본딩이 시작한 위임량이 포함되어 있으면, 컨슈머 체인에서 언본딩이 완료되는 만기 시간이 측정되게 됩니다. 이후 만기 시간이 지난 위임량에 대해서 컨슈머 체인은 프로바이더 체인으로 메세지를 전송하게 됩니다. 프로바이더 체인에서는 이같이 모든 컨슈머 체인에서 메세지를 수신해야만 비로소 언본딩 작업을 완료할 수 있습니다.

이와 같은 특징으로 인해 CCV 채널 연결이 원활히 이루어 지지 않거나 컨슈머 체인의 문제로, 프로바이더 체인이 언본딩 완료 메시지를 수신하지 못해 사용자의 자금이 영영 묶이는 결과가 초래될 수 있습니다. 따라서 프로바이더 체인에서는 컨슈머 체인에서 보내는 만기 메세지를 수신하는 시간에 제한을 두어 언본딩 완료에 걸리는 최대 시간을 설정합니다.

컨슈머 체인에서 요청된 슬래싱 (Consumer Initiated Slashing)

프로바이더 및 컨슈머 체인은 밸리데이터 세트를 공유하기 때문에, 컨슈머 체인에서 잘못을 한 프로바이더 체인의 밸리데이터는 컨슈머 체인의 CCV 모듈의 요청을 통하여 프로바이더 체인에서 슬래싱 등의 패널티를 받게 됩니다.

위에서 언급한 것과 같이 프로바이더 체인 및 컨슈머 체인의 블록 높이가 동일하게 올라가지 않기 때문에, 정확한 잘못 시점에서 패널티를 부과하기 위해서는 프로바이더 체인과 컨슈머 체인의 블록 높이를 대응하는 과정이 필요합니다. 따라서 프로바이더 체인에서는 VSC에 대한 블록 높이를 저장하고, 컨슈머 체인에서는 블록 높이에 대한 VSC를 저장합니다.

출처: cosmos/ibc repo

악의적인 컨슈머 체인은 프로바이더 체인의 밸리데이터를 의도적으로 슬래싱하려 할 수 있습니다. 따라서 구현에는 최악의 경우를 방지하기 위하여 컨슈머 체인이 프로바이더 체인의 밸리데이터를 단기간에 일정 비율 이상 슬래싱하지 못하게 하는 기능이 추가되었습니다. [3]

보상 분배 (Reward Distribution)

컨슈머 체인에서는 자체 토큰을 발행하고, 이를 통해 프로바이더 체인의 밸리데이터들에게 수수료 및 보상을 제공할 수 있습니다. 블록 생성 보상 및 트랜잭션 수수료는 컨슈머 체인 CCV 모듈로 전송됩니다. 밸리데이터들의 보상은 컨슈머 체인의 CCV모듈에서 CCV 채널을 초기화 하는 단계에서 저장된 프로바이더 체인의 주소로 전송된 후 밸리데이터들에게 분배되게 됩니다.

💡 DSRV's Tip
스펙상으로는 명시되어 있지 않지만 ICS 구현에는 Democracy라는 폴더로 존재하는 코드도 있습니다. 이는 기존 Staking, Governance, 및 Distiribution module을 오버라이딩한 각각의 래퍼 모듈을 포함하고 있습니다. 이는 프로바이더 체인의 거버넌스에 귀속되지 않는 컨슈머 체인만의 거버넌스 시스템을 활성화 할 수 있도록 만들어진 부분으로 보입니다. 현재까지는 실험적인 코드 단계로 GoC에서도 테스트되지 않았습니다.

Roadmap

지금까지 구현되어 있는 V1은 프로바이더 체인의 밸리데이터 세트 전체를 동일하게 가져와서 컨슈머 체인을 시작하는 비교적 간단한 형태입니다. V1의 계속 개발이 진행중 이지만, 이후 ICS가 어떻게 변화할지 그 로드맵도 간단히 소개해보려 합니다. [1]

V2에서는 밸리데이터 세트의 일부만으로 컨슈머 체인을 작동시키는 기능이 고려되고 있습니다. V2기능이 구현되면 프로바이더 체인의 밸리데이터가 컨슈머 체인의 참여를 선택할 수 있습니다. 이를 통해 전체 벨리데이터 세트가 아닌 참여하기로한 밸리데이터 세트만으로 컨슈머 체인을 시작하여, 다양한 밸리데이터 구성을 가진 컨슈머 체인이 생성될 수 있게 됩니다.

또한 한단계 더 나아간 V3(Layered Security)에서는 컨슈머 체인에서 프로바이더 체인에서 받은 밸리데이터 세트를 확장하는 자체 스테이킹 설계를 목표로 하고 있습니다. 이는 프로바이더 체인의 밸리데이터 세트와 로컬 토큰 스테이킹을 별도의 모듈에 저장하는 형태로, 프로바이더 체인의 밸리데이터가 아닌 컨슈머 체인 자체의 벨리데이터를 활성화 시키기 위함으로 보여집니다.

마무리

DSRV 밸리데이터팀은 지난 GoC를 통하여 ICS에서 느꼈던 컨슈머 체인의 슬래싱의 연쇄적인 영향에 대한 우려, 컨슈머 체인에 대한 평가 기준 및 ICS에서 중요한 역할인 IBC 릴레이어에 대한 보상의 필요성 등을 공유하였습니다. 우려되었던 부분중 하나였던 컨슈머 체인들이 프로바이더 체인 밸리데이터들이 운영을 하기 위한 충분한 인센티브를 어떻게 책정하고 보상할 것인지에 대한 문제는 현재도 가장 주요하게 논의되는 부분입니다.

뿐만 아니라 컨슈머 체인 자체의 거버넌스의 운영, 악의적인 컨슈머 체인이 의도적으로 프로바이더 체인에 패널티를 주는 행위를 방어하기 위한 장치 및 프로바이더 체인의 밸리데이터가 거버넌스 합의 없이 해당 컨슈머 체인을 멈추지 않는 다는 사회적 합의 등의 필요성이 대두되고 있습니다.

지금까지 현재 코스모스 허브의 V9 Lambda 업그레이드에 포함될 예정인 ICS V1 및 앞으로의 로드맵을 정리해 보았습니다. 읽어주셔서 감사합니다.

Written by
Youngbin Park, Research Engineer, DSRV Validator Team (Twitter @bin0_0bin)

References

[1] https://github.com/cosmos/gaia/blob/main/docs/interchain-security.md#the-interchain-security-stack
[2] https://github.com/cosmos/ibc/blob/main/spec/app/ics-028-cross-chain-validation/README.md
[3] https://github.com/cosmos/interchain-security/pull/462

--

--