Compound Chain 백서 0.1 버전 한국어 버전

Compound 프로젝트에서 Compound Chain 이라는 별도의 분산 원장 런칭 계획이 발표되었습니다.

0.0 소 개

Compound 프로토콜은 자율, 담보 대출 마켓 영역의 선두 주자로서 유동성 공급 풀, 알고리즘이 적용된 이자율 구조(이자율 지표를 이용해 계산 과정의 복잡성을 감소시킨), 토큰화된 자산 잔액(balance) 등 디파이의 기초가 되는 다양한 혁신적인 아이디어를 소개해왔습니다. 대출 이용자에게 유동성 제공을 통해 발생한 이자 수익은 현재 30억 달러 이상을 기록하고 있습니다.

하지만, Compound 프로토콜에는 다음과 같은 제약사항(limitation)이 있습니다.

  • Compound에서 지원하고 있는 각 자산의 리스크는 Compound 프로토콜 리스크에 반영됩니다. (원문에서는 개별 자산의 리스트가 프로토콜에 aggreate된다고 표현했음). 악성 자산(bad asset)하나가 프로토콜 전체에 악영향을 줄 수 있기 때문에 담보물을 선별적으로 받아들여야 합니다.

  • 소규모 트랜잭션에 대한 트랜잭션 처리 비용이 높은 수준입니다(소액을 가지고 Compound 프로토콜을 이용하려는 사람에게는 이자 수익보다 이더 수수료가 더 나오는 경우도 많으니..)

  • 이더리움 상에 토큰화가 되어있지 않은 자산을 프로토콜에서 지원할 수 있는 방법이 없습니다.

Compound Chain는 Compound 프로토콜을 독립적인 분산 원장(stand-alone distributed ledger)으로 재구성한 것입니다. Compound Chain은 위에서 언급된 Compound 프로토콜의 제약사항을 해결하고 Eth2.0과 중앙 은행 디지털 화폐 원장 시스템처럼 새롭고 다양한 블록체인 디지털 자산의 성장과 빠른 도입 상황(adoption)에 선제적으로 대응하는데 도움이 될 것이라 생각합니다.

1.0 아키텍처

Compound Chain은 분산화된 validator 그룹에 의해 운영되는 블록체인이며, 모든 validator는 동일한 state transition function을 실행합니다. 각각의 validator 노드는 체인에서 채굴된 모든 블록에 대해 동일한 state modification 로직을 실행하며, 모든 블록에서 오프 체인 worker의 형식으로 "sidecar" 기능을 실행(execuate)할 수 있습니다.

Compound Chain는 Compound Chain과 연결된 "peer" 체인과 가치 교환(원문에는 bridging value라고 표현됨)을 할 수 있는 구조로 설계되었습니다. 각 peer 체인에는 Compound 체인 상의 자산을 동결/동결 해제할 수 있는 contract(또는 이와 상응한 로컬 로직)가 있습니다. peer 체인에 있는 이러한 connector contract를 "Startport"라고 부릅니다. 또한, 각각의 peer 체인은 Compound Chain을 지원하기 위해 네이티브 자산의 로컬화된 토큰 contract를 운영할 수도 있습니다.

코어 validator 로직 루프는 Starport contract에서 발생한 이벤트를 계속해서 읽어오고, validators가 생각했을때 유효한(valid and finalized) 사용자 요청(user requests)이라고 여겨지는 요청을 승인할 것을 validator들에게 요구합니다. 발생한 이벤트에 대해 validator들이 합의를 이루면 그 결과는 Compound Chain에 포함됩니다. 사용자 요청을 충분한 수의 validator가 유효한(요청을 서명함으로써) 것으로 판단하면, Starport는 기꺼이 지시를 받아들일 것입니다.

2.0 계정(Accounts)

대부분의 오픈 원장과 마찬가지로 Compound Chain 역시 공개키/개인키 페어 중심으로 운영되며 이는 서명된 메시지를 통해 자산을 저장하고 전송하는데 사용됩니다.

사용자는 이더리움, Solana 등 기존 블록 체인에서 만든 공개키/개인키를 이용해 Compound Chain과 상호 작용할 수 있습니다. Compound Chain의 모든 주소는 peer 체인 주소를 이용해 식별됩니다.

예시. 이더리움: 0x3fda67f7583380e67ef93072294a7fac882fd7e7

Compound Chain에 보유하고 있는 잔액은 다른 주소로 전송할 수 있습니다. Compound Chain ETH를 이더리움 주소에서 Tezos 주소로 전송할 수 있으며, Compound Chain WBTC를 Tezos 주소에서 Solana 주소로 보낼 수도 있습니다.

3.0 자산(Assets)

Compound Chain과 통합된 peer 블록체인에서 이용 가능한 네이티브 자산을 Compound Chain에서 생성할 수 있으며, peer 블록체인에서 담보물로 활용 가능한 자산들도 지원할 수 있습니다.

예시: ETH, UNI, DOT, DIEM 등

3.1 Starports

사용자는 Starports를 통해 Compound Chain에 자산을 업로드할 수 있습니다. Starports는 peer 블록체인 상에 contract와 같은 형태(예시: 이더리움 smart contract)로 존재하며 Compound Chain validator 노드가 릴리즈를 할때까지 자산을 동결하는 로직을 포함하고 있습니다.

Compound Chain가 Starport에게 전달하는 서명된 지시(signed directive)는 notice라고 부릅니다.

3.2 자산 업로딩

사용자가 자산을 업로드하려면 로컬 Starport contract의 규칙을 따라야 합니다. (예시: 자산, 수량 동결을 동반한 smart contract 호출) Compound Chain validator는 peer 체인으로부터 로그를 확인(stream)하고 관련 이벤트 로그에 대한 모니터링을 통해 동결 액션을 감시(witness)합니다.

블록 채굴 능력을 보유한 노드가 컨펌된 이벤트(confirmed event)를 만나면 Compound Chain에서 인증(attest)된 것임을 나타내기 위해 해당 메시지에 서명을 합니다. 다른 노드들은 이 이벤트가 진짜라고 믿는다면(예시. full 이더리움 노드에서 충분히 긴 헤드 체인 안에 이 이벤트가 속해 있는지 확인) 이 블록을 검증(validate)하는 작업만 할 것입니다. 이 자산은 사용자의 주소로 이동합니다. (예시. Compound Chain에서는 이더리움 퍼블릭 주소 0x3fda67f7583380e67ef93072294a7fac882fd7e7가 현재 자산 A를 N개 가지고 있다고 기록합니다)

3.3 자산 다운로딩

사용자는 언제든지 Compound Chain에서 오리지널 peer 블록체인으로 자산을 다운로드할 수 있습니다. 단, 아래의 (A), (B) 조건을 만족해야 합니다. (A) 그들의 주소와 자산이 동일 블록체인에 존재하고 있어야 하며(원문에서는 exist natively라는 표현이 사용되었다), (B) 자산의 출금 행위가 Compound Chain 상의 사용자 자산 담보물 조건을 위반하지 않아야 합니다.

자산은 두 단계를 거쳐 다운로드됩니다. 첫 번째 단계에서는 사용자가 extraction request를 서명한 후 Compound Chain에 제출하면 대기 큐에 쌓여있다가 오프 체인 worker에 의해 처리됩니다. 오프 체인 worker는 블록에 해당 request가 추가되었다는 것을 기록합니다. 두 번째 단계에서는 extraction notice를 구성한 validators가 extraction request를 서명합니다. extraction notice는 Starport에게 전달되어(take back) 자산이 상환(redeem)될 수도 있습니다.

3.4 Asset Caps

Asset Caps(자산 대출 총량 규제가 대표적인 예라고 할 수 있으며 적절한 번역어를 찾지 못해 원문 그대로 인용함)은 Compound Chain에 있는 개별 자산에 대한 마켓 리스크를 제한하기 위해 사용되며, 업로드 가능한 자산의 최대 수량을 제한하는 방식으로 적용됩니다. 기본적으로, 자산은 unsupported(asset caps이 0인 상태)로 설정됩니다. Compound Chain에서 이용할 수 없는(unusable) 자산을 사용자가 실수로 Starport에 전송하는 행위를 이와 같은 방식으로 방지합니다.

Starport가 로컬에서 자산의 공급 수량을 제한할 수 있으며 이는 서명된 notice를 통해 업데이트됩니다.

4.0 자산 대출(Borrowing Assets)

자산을 대출하려는 계정(account)은 Compound Chain에 부채(debt)을 감당할 수 있는 충분한 담보물을 소유하고 있어야 합니다. 이를 위해 Compound Chain은 다른 자산을 빌리는데 사용되는 자산의 이용률 나타내는 담보 비율(Collateral Factors)을 사용하며 담보 비율의 범위는 0 ~ 1 입니다. 이들 자산이 계정 체인(account's chain)의 네이티브 자산일 필요는 없습니다. (예시. 이더리움 주소가 Compound Chain XTZ를 담보물로 보유할 수 있습니다)

청산(liquidation)은 first-come-first-serve 방식으로 진행되며 청산인은 계정의 부채를 흡수한(absorb) 대가로 계정의 담보물 + 인센티브(예: 5%)를 가져갑니다.

4.1 가격 데이터(Price Data)

Compound Chain은 Compound에서 개발한 Open Price Feed를 가격 서명 기준으로 활용하며, 계정의 담보물 감소나 대출 잔액 증가, 계정의 청산 가능성 확인 등의 작업(operations)에 필요한 청산 가능성 확인 작업을 수행하는데 Open Price Feed 표준을 사용합니다.

블록 검증 비용이 저렴하면 validator가 Compound Chain에 거의 실시간 가격을 제공할 수 있는 환경이 마련될 수 있을 것이며, 가격 피드 정보 제공에 대한 별도의 인센티브 정책도 필요 없을 것입니다. 향후 이 시스템은 Compound Chain 내의 탈중앙 거래소(DEX)와 함께 확장될 가능성도 있습니다.

5.0 CASH

Compound Chain은 CASH를 계정의 네이티브 단위(native unit)로 사용합니다. CASH는 대출 과정에서 프로토콜에 의해 생성되는 자산이며, MakerDAO의 Dai 생성 과정과 유사한 측면이 있습니다. 사용자와 validator가 보유하고 있는 CASH 수량은 CASH 부채(debt) 수량과 항상 일치합니다.

CASH는 Compound Chain에서 트랜잭션 수수료를 결제할 때 사용됩니다. 사용자는 지원되는(supported) 담보 자산을 업로드하여 CASH를 대출할 수 있으며 네트워크 트랜잭션 비용을 결제할 수 있습니다.

5.1 이자율(Interest Rates)

사용자와 validator가 보유하고 있는 모든 CASH는 지속적으로 복리 이자율 Yieldcash 수익이 발생하며, 이자율은 이자율 인덱스(index)를 통해 전체적으로 증가합니다. 만약 Yieldcash 이 3%이고, 사용자가 CASH를 10만개 보유하고 있다면 다음날에는 100,008.21 CASH를 보유하게 될 것입니다.

CASH 대출 비용은 수익률보다 크거나 같아야 합니다. 그렇지 않으면 CASH 대출, 보유 수익성이 사라질 것입니다. CASH 부채는 대출 인덱스인 Costcash를 따라 증가합니다.

borrowing index

Yield와 Spread는 거버넌스에 의해 관리되는 코어 매개변수 입니다.

5.2 CASH 다운로딩

CASH는 peer 블록체인으로 다운로드할 수 있으며 이를 이용해 특정 블록체인에 있는 자산의 가치(value)를 이더리움이나 다른 블록체인 상의 디파이 생태계에서 사용할 수 있습니다.

CASH 다운로딩은 Starport 상에 보유하고 있는 자산을 다운로딩하는 것과 유사하지만, Starport로부터 자산을 출금하는 것이 아니라 Compound Chain 상에서 잔액을 공제(crediting)하는 동안, 로컬 토큰 contract가 CASH를 생성(minting)하는 구조라는 점에서 차이가 있습니다.

peer 블록체인에 보유 중인 CASH가 Compound Chain 상의 CASH와 동시에 이자가 누적되는 구조를 제공하기 위해(대체 가능하고, 차익 거래가 불가능한 특성을 보장하기 위해), Yieldcash 이자율 인덱스는 정기적으로(routine basis) peer 블록체인과 동기화됩니다. 동기화 주기 사이에서는 이자율 인덱스가 로컬에서 계산됩니다.

5.3 안정성(Stability)

CASH는 프로토콜에 의해 특정 가격으로 그 가치가 평가되며(유동성 계산 과정을 통해), 초기에는 1 USD로 설정됩니다. 거버넌스를 통해 CASH는 소비자 물가 지수 또는 화폐 바스켓(a basket of currencies) 등의 인덱스를 추종할 수도 있습니다.

(CASH 이용 시 매우 높은 수준의 담보 비율을 적용한)스테이블 코인의 활용성은 CASH의 시장 가격과 Compound Chain에서의 내재 가치 간의 잠재적인 이격(drift)을 제한합니다.

6.0 합의 & 인센티브 설계

Compound Chain은 거버넌스에서 승인된 validator에 의해 운영되는 비잔틴 결함 허용 PoA(proof-of-authority) 네트워크입니다. 블록 합의 함수는 악의적인(faulty) validator 노드 수를 1/3 수준으로 제한합니다.

validator는 블록 작성(authoring blocks), 다른 노드에서 생성된 블록 검증, peer 체인 이벤트 모니터링, 유효하다고 판단되는 peer 체인의 notice 서명, 오라클 가격 업데이트 등의 역할을 수행합니다. 블록 finalization은 블록 작성과 디커플링되어 있으며 2/3 이상의 validator가 해당 블록이 체인의 일부라고 동의했을 때 발생합니다.

BFT 보장을 유지하기 위해, Starport는 notice 처리 과정에서 validator 중 1/3 이상의 서명을 요구합니다. 악의적인 노드의 영향력을 줄이기 위해 더 높은 기준(threshold)가 적용될 수도 있습니다.

효율적인 프로토콜 운영을 위한 인센티브 정책 중 일환으로 validator가 생성하는 각 블록에서 CASH 대출자 (Spreadcash)가 내는 이자 중 일부가 validator의 수익으로 제공됩니다. 자산(원문에서는 a function of assets이라고 표현됨)으로서의 보안성을 높이기 위해 validator 보상은 CASH 수량이 늘어날수록 증가합니다.

6.1 스팸 방지

Compound Chain에서는 validator 대역폭을 소모하는 자산 전송과 같은 기본적인 연산을 수행할 때 트랜잭션 수수료 결제가 필요하며 CASH로 지불합니다. 지불할 CASH가 없는 경우 사용자는 CASH 부채를 늘려서 충분한 담보물을 가지고 있어야 합니다.

자산 업로딩 다운로딩(peer 체인 트랜잭션과 수수료가 필요함)의 경우 Compound Chain 수수료가 필요하지 않지만, 최소 가치에 대한 기준(minimum value threshold)은 있습니다. 대출자는 CASH 대출, CASH 상환, CASH 청산 등의 연산을 수행할 때 최소 가치 기준을 적용받지만 이와 관련 수수료는 없습니다.

7.0 거버넌스

분산화된 의사 결정 과정이 구축된 이더리움 상의 Compound 거버넌스 시스템을 통해 이더리움 Starport에 대한 거버넌스 정책을 수행할 수 있으며, Compound Chain validator는 이더리움 Starport로부터 지시를 받습니다. 이를 통해 제네시스 환경을 마련하고 다음과 같은 시스템 매개변수(parameters)를 업데이트할 수 있습니다.

  • 초기 validator 설정
  • 지원할 자산 목록, 공급 caps, 담보 유지 비율
  • CASH 이자율

8.0 요약

  • Compound Chain은 독립적인(stand-alone) 분산 원장입니다.
  • 사용자는 다양한 블록체인에 있는 자산(Compound Chain에서 지원하는 자산)을 Compound Chain으로 업로드할 수 있습니다.
  • 사용자는 Compound Chain에서 지원하는 자산을 담보물로 사용해 CASH를 대출할 수 있습니다.
  • 사용자는 특정 peer 체인 주소로 자산을 전송할 수 있거나 다운로드할 수 있으며, CASH를 peer 체인으로 전송할 수 있습니다.
  • Compound Chain 거버넌스는 이더리움 상의 Compound 거버넌스를 통해 운영됩니다.

reference

  • 이 문서는 Compound Chain 백서 version 0.1을 기준으로 작성되었습니다.
  • 세부 기술 문서가 아직 공개되지 않아서, 일부 문맥에 대한 번역이 매끄럽지 않으니 참고하시길 바랍니다.
  • 백서 원문: https://compound.cash/
Sort:  

@dakeshi transfered 7.3 KRWP to @krwp.burn. voting percent : 61.63%, voting power : 60.06%, steem power : 1994412.38, STU KRW : 1200.
@dakeshi staking status : 3650 KRWP
@dakeshi limit for KRWP voting service : 7.3 KRWP (rate : 0.002)
What you sent : 7.3 KRWP [49633682 - c19e2a8b93d610257ab8220753d445b0c9ac032e]

abdullar gave dakeshi gifts(40 SCT).

선물 감사합니다. ~