ELI5: IBC란 무엇입니까?

Dec 22 2022
비트코인의 탄생은 다양한 설계 결정과 사용 사례를 가진 블록체인의 캄브리아기 폭발로 이어졌습니다. 이러한 분산 원장은 다른 용도로 사용되지만 의미 있는 상호 작용이 제한된 사일로로 존재했습니다(그리고 여전히 어느 정도 존재합니다).

비트코인의 탄생은 다양한 설계 결정과 사용 사례를 가진 블록체인의 캄브리아기 폭발로 이어졌습니다. 이러한 분산 원장은 다른 용도로 사용되지만 의미 있는 상호 작용이 제한된 사일로로 존재했습니다(그리고 여전히 어느 정도 존재합니다).

세계 여러 지역에 있는 서로 다른 유형의 컴퓨터가 서로 통신할 수 있도록 하는 인터넷과 마찬가지로 블록체인 간의 연결 조직 역할을 하는 유사한 기술이 진정한 가치 발생을 위해 필요합니다. IBC(Inter-Blockchain Communication) 프로토콜은 이러한 목적을 달성하는 것을 목표로 합니다.

IBC는 두 개의 서로 다른 블록체인이 서로 통신할 수 있도록 하는 범용 상호 운용성 프로토콜입니다. IBC는 안정적 이고 순서 가 있으며 인증된 통신을 보장합니다.

아마도 IBC의 가장 중요한 속성 중 하나는 신뢰 최소화일 것입니다. 블록체인에서 신뢰 최소화 속성은 본질적으로 보안과 연결되어 있습니다. 완전히 '신뢰할 수 없는' 분산 시스템은 없습니다. 따라서 보안 문제는 누가 또는 무엇을 신뢰할 수 있는지, 그리고 그 신뢰를 어떻게 위반할 수 있는지, 즉 신뢰할 수 있는 엔터티가 손상되려면 어떻게 해야 하느냐로 귀결됩니다.

이러한 의미에서 대부분의 브리징 솔루션과 달리 IBC는 신뢰할 수 있는 제3자를 사용하지 않습니다. 즉, 두 개의 특정 체인이 제공하는 기능(및 기본적으로 합의 메커니즘)을 사용하도록 신뢰하는 경우 해당 체인 간에 상호 작용하기 위해 IBC를 사용하는 동안 추가 신뢰 가정이 필요하지 않습니다.

IBC는 또한 토큰 전송을 용이하게 하는 다리 그 이상입니다. 범용 메시지 전달 프로토콜 입니다 . 이는 모든 형태의 데이터 가 IBC를 통해 전달될 수 있음을 의미합니다.

IBC는 어떻게 작동합니까?

IBC의 작동 방식을 이해하려면 IBC의 두 가지 다른 계층인 1) 전송 계층과 2) 애플리케이션 계층을 분리하는 것이 중요합니다.

두 블록체인 간의 IBC 패킷 흐름에 대한 높은 수준의 묘사

전송 계층

IBC를 통해 전달되는 메시지는 데이터 패킷 내에서 전송됩니다 . 그리고 전송 계층은 이러한 데이터 패킷 의 전송 , 인증 및 주문 을 담당합니다.

전송 계층은 패킷의 데이터가 무엇이어야 하는지 또는 수신 체인에서 어떻게 해석해야 하는지에 대해 아무 것도 지정하지 않습니다. 전송 계층의 관점에서 데이터 패킷 내의 정보는 임의의 바이트일 뿐입니다.

전송 계층의 핵심 구성 요소는 라이트 클라이언트, 릴레이어, 연결 및 채널입니다.

라이트 클라이언트는 블록체인의 가벼운 표현입니다. 전체 노드 와 달리 라이트 클라이언트는 블록체인에 포함된 모든 메시지의 전체 기록을 저장하지 않습니다. 트랜잭션을 실행하지도 않습니다. 오히려 라이트 클라이언트는 전체 노드에 연결하고 블록 헤더(블록에 포함된 데이터 요약)를 확인하도록 설계되었습니다. 이를 통해 라이트 클라이언트는 저장 및 계산 측면에서 효율적일 수 있습니다.

IBC를 통해 상호 작용 하는 두 개의 독립적인 블록체인 A 와 B 는 상대방 체인의 가벼운 클라이언트 를 가지고 있습니다. 이것은 A 가 블록체인에 B 블록체인의 경량 표현 역할을 하는 라이트 클라이언트를 가지고 있음을 의미합니다 . A 가 특정 메시지 'X' 를 B 와 통신하려는 경우 해당 메시지가 존재하는 블록의 헤더와 해당 메시지의 커밋 증명을 B 로 보냅니다 . 커밋 증명은 A 에 특정 메시지가 있는지 여부를 확인하는 데 사용됩니다 . 블록 헤더와 증명을 사용하여 B 는 다음을 암호로 확인합니다.A 는 실제로 X 를 수행 했습니다. IBC에서 라이트 클라이언트를 사용하여 블록체인이 신뢰할 수 있는 제3자 없이 서로 메시지를 교환할 수 있습니다.

그러나 A 와 B 는 서로 간에 이러한 메시지/데이터 패킷을 직접 보내지 않습니다. 대신 A 가 B 에게 메시지를 보내려고 할 때 상태 머신 에 메시지가 포함된 데이터 패킷 의 해시 를 커밋하거나 저장합니다 . 오프 체인 프로세스인 릴레이어는 이러한 메시지를 지속적으로 관찰합니다. A 가 상태 시스템에서 B 를 위한 메시지를 커밋한 것을 확인 하면 간단히 이 메시지를 선택하여 B 에 전달합니다 . 릴레이어는 권한이 없으므로 누구나 실행할 수 있습니다.

연결 은 두 개의 서로 다른 체인에 있는 라이트 클라이언트를 연결하는 역할을 합니다. 그리고 채널 은 서로 다른 체인에 있는 모듈 간에 패킷을 전송하기 위한 도관입니다. 따라서 연결은 체인에 따라 다르지만 채널은 모듈에 따라 다릅니다. 각 채널 끝에는 두 모듈 간에 패킷을 정확하게 라우팅하는 데 사용되는 고유한 채널 ID(및 포트 ID)가 있습니다.

애플리케이션 계층

응용 프로그램 계층은 최종 사용자가 상호 작용하는 것입니다. 전송 계층을 사용하여 위에 구축하는 다양한 응용 프로그램으로 구성됩니다. 전송 계층은 데이터 패킷을 해석하는 방법을 지정하지 않습니다. 이 역할은 애플리케이션 계층에서 수행됩니다.

IBC는 대체 가능/비 대체 가능 토큰 전송, 크로스체인 오라클 피드, 인터체인 계정 , 인터체인 쿼리, 수수료 미들웨어 (릴레이어에게 인센티브 제공) 등과 같은 다양한 애플리케이션을 지원합니다.

예를 들어, ICS 20( Interchain Standard 20 ) 이라고 하는 토큰 전송을 위한 IBC 수준의 애플리케이션은 데이터 패킷의 구조화 방법과 수신 체인에서 데이터 패킷을 해석하는 방법을 지정합니다. 대체 가능한 토큰 전송의 경우 데이터 패킷에는 발신자, 수신자, 금액 및 액면가(IBC denom)에 관한 정보가 포함됩니다. denom 필드는 특정 토큰이 특정 체인에 도달하기까지 통과한 경로를 추적합니다. 패킷이 작동하는 방법에 관한 논리도 ICS 20에 지정되어 있습니다.

IBC를 이해하는 데 도움이 될 수 있는 간단한 비유는 메일 배달 시스템의 비유입니다. 누군가에게 편지를 보낼 때 편지가 담긴 봉투를 모아서 받는 사람의 우편함에 넣어주는 우편 서비스를 통해 편지를 보냅니다. 그런 다음 수신자는 해당 봉투를 열고 편지를 읽습니다. IBC의 운송 계층은 우편 서비스로 생각할 수 있습니다. 우편 서비스에서는 편지의 내용이 무엇인지 또는 수신자가 메시지를 어떻게 해석해야 하는지 알려주지 않습니다.

그들은 봉투의 내용물이 무엇인지도 모릅니다. A 지점에서 봉투를 수집하여 B 지점으로 보내는 작업만 수행합니다. 봉투 자체는 한 체인에서 다른 체인으로 전송되는 IBC 패킷으로 생각할 수 있습니다. 그리고 이 봉투에 받는 사람의 주소를 지정합니다. 이것은 IBC 패킷이 패킷을 보낸 사람(채널 ID로 지정) 및 대상(상대방 채널 ID로 지정)에 대한 정보를 포함하는 방법과 유사합니다. 결국 봉투(데이터 패킷)를 열고 편지의 내용을 해석하는 것은 수신자(응용 프로그램)입니다.

IBC는 무엇에 사용할 수 있습니까?

대체 가능한 토큰 전송 외에도 두 개의 다른 IBC 수준 애플리케이션에는 Interchain Accounts 및 Interchain Security 가 포함 됩니다.

인터체인 계정은 단일 인터페이스에 남아 있는 동안 체인 간 상호 작용을 용이하게 합니다. 이는 사실상 B ('호스트 체인'이라고 함)에서 수행할 수 있는 거버넌스 제안에 대한 전송, 스테이킹 또는 투표와 같은 모든 작업을 A ('컨트롤러 체인'이라고 함)에서 수행할 수 있음을 의미합니다. 인터체인 계정은 사용자 경험을 개선하여 인터체인 내 구성성을 크게 향상시킵니다.

Interchain Security는 Cosmos 생태계의 공유 보안 버전입니다. 이를 통해 블록체인은 완전히 옵트인 방식으로 다른 체인에서 보안을 임대할 수 있습니다. 이는 Cosmos Hub와 같이 이미 구축된 네트워크에서 제공하는 보안을 활용할 수 있는 새로운 체인에 특히 유용합니다. 인터체인 보안은 체인이 자체 검증자 세트를 부트스트랩할 필요가 없습니다.

IBC를 코어 프리미티브로 사용하여 수행할 수 있는 응용 범위는 지속적으로 증가하고 있습니다. 크로스 체인 NFT 전송 및 체인 간 쿼리(하나의 체인이 다른 체인에서 상태를 읽을 수 있음)가 현재 개발 중이며 곧 생산 준비가 될 것입니다.

IBC는 어떤 문제를 해결합니까?

한마디로 IBC는 상호작용이 제한된 사일로로 존재하는 블록체인의 문제를 해결합니다. 블록체인 간의 상호 운용성은 최대 가치 발생을 위해 필요합니다.

각 블록체인은 하나 이상의 특수 사용 사례를 충족합니다. 이러한 사용 사례를 여러 블록체인에서 활용할 수 없는 경우 유용성이 크게 저하됩니다. 인터넷이 제공한 돌파구는 정보가 전 세계 여러 지역으로 쉽게 이동할 수 있다는 것입니다. 마찬가지로 다양한 블록체인의 유틸리티는 여러 플랫폼에서 자유롭게 액세스할 수 있어야 합니다.

예를 들어, 사용자는 다른 블록체인에 존재하는 탈중앙화 거래소(DEX)의 유동성 풀(LP)을 통해 수익을 창출하기 위해 한 블록체인의 스테이블코인을 사용할 수 있습니다. 또는 다른 블록체인이 제공하는 개인 정보 보호 속성을 활용하려고 할 수도 있습니다. 이러한 사용 사례 등을 실현하려면 체인 간의 상호 운용성이 필요합니다.

IBC는 상호 운용성 문제를 해결할 뿐만 아니라 신뢰 최소화, 보안, 확장 가능 및 범용 방식으로 해결합니다.

애플리케이션 개발자로서 IBC를 어떻게 사용할 수 있습니까?

Cosmos SDK의 모듈식 특성은 개발자가 라이트 클라이언트, 연결, 증명 검증 등과 같은 일부 추상화 계층에 관심을 가질 필요가 없도록 합니다. 개발자에게 가장 관련성이 높은 요구 사항과 익숙해져야 할 기능은 채널 및 포트 입니다. IBC에 대한 자세한 내용은 개발자 포털을 참조하십시오 .

Cosmos SDK를 사용하여 블록체인을 구축하는 경우 SDK 모듈에 대해 IBC를 활성화하는 데 필요한 단계가 여기에 자세히 설명 되어 있습니다 . 또한 ICF 이니셔티브인 Interchain Builders Program에 지원하여 Cosmos에서 지원 구축을 받을 수 있습니다.

작성자 정보: 이 게시물은 Interchain GmbH의 IBC 프로토콜 분석가인 Adi Ravi Raj 가 작성했습니다.